C 程序设计学生成绩管理系统Word文档下载推荐.docx
- 文档编号:20578937
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:14
- 大小:143.54KB
C 程序设计学生成绩管理系统Word文档下载推荐.docx
《C 程序设计学生成绩管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C 程序设计学生成绩管理系统Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
主要功能是用来对学生的成绩进行计算。
下,使用该功能可以计算出每个学生的总成绩和平均成绩。
4)排序模块(voidsort(studentstu[])):
按学生平均成绩进行排列模块块,此模块的主要功能是用来对学生的平均成绩进行排序,这样在统计名次是就比较方便。
在系统保存学生资料的前提下,使用此功能能快速统计出学生的名次情况。
5)打印平均分高于班级平均分的学生信息模块(voidgetaverage(studentstu[])):
主要功能是输出学生平均分高于等于班级平均分的学生信息。
6)查找模块(voidsearch1(studentstu[],char*a)按学号查找voidsearch2(studentstu[],char*b)按姓名查找):
主要功能是用来查找学生资料,在系统输入学生资料的前提下,想查找某个学生的资料,我们只要知道他的学号或姓名,输入学号或姓名后,系统可以帮我们把他的信息输出。
7)菜单模块(intselect1()):
主要功能是用来选择哪种操作。
根据提示可对学生信息进行处理。
第3章源程序代码
#include<
iostream.h>
//输入输出流的头文件
/********************************************
文件包含命令,strcmp函数存放在string.h文件中。
********************************************/
string.h>
//字符串处理的头文件
windows.h>
intn;
//设置一个全局变量
structstudent//声明学生信息的结构体
{
charnumber[20];
//学生的学号:
20个字符长度
charname[30];
//学生的名字:
charc[5];
//学生的班级:
5个字符长度
doublemath;
//数学成绩
doublechinese;
//语文成绩
doubleenglish;
//英语成绩
doubletotal;
//总分
doubleaverage;
//平均分
intrank;
//排名
}s;
voidsetdata(studentstu[]);
//输入信息
voidcount(studentstu[]);
//统计平均分和总分
voidsort(studentstu[]);
//排序
voidgetaverage(studentstu[]);
//求出平均分
voidprint(studentstu[],inti);
//打印输出
voidsearch1(studentstu[],char*a);
//按学号查找
voidsearch2(studentstu[],char*b);
//按姓名查找
intselect1();
//主菜单
intselect2();
//菜单
voidmain()
{
system("
color1A"
);
/*************************************
设置默认的控制台前颜色。
颜色属性由两个十六进制数字指定,第一个为背景,第二个为前景。
每个数字可以是以下任何值之一:
0=黑色;
1=蓝色;
2=绿色;
3=浅绿色;
4=红色;
5=紫色;
6=黄色;
7=白色;
8=灰色;
9=淡蓝色;
,
A=淡绿色;
B=淡浅绿色;
C=淡红色;
D=淡紫色;
E=淡黄色;
F=亮白色。
例如system("
)为背景为蓝色,前景为淡绿色,即字体为淡绿色。
****************************************/
cout<
<
endl;
"
\t"
欢迎使用学生管理系统"
externintn;
student*stu;
cout<
班级人数是:
;
cin>
>
n;
stu=newstudent[n];
setdata(stu);
for(;
;
)//实现重复循环选择
{
switch(select1())//调用菜单选择函数
{
case1:
count(stu);
学号"
姓名"
班级"
语文:
<
数学:
英语:
总分:
平均分:
for(inti=0;
i<
i++)
stu[i].number<
stu[i].name<
stu[i].c<
stu[i].chinese<
stu[i].math<
stu[i].english<
stu[i].total<
stu[i].average<
}
break;
case2:
sort(stu);
for(intm=0;
m<
m++)
print(stu,m);
//实现按总分排序打印
case3:
getaverage(stu);
//实现成绩在平均分以上的打印
case4:
switch(select2())
{chara[20];
您要查询的学生学号"
cin>
a;
search1(stu,a);
}
{charb[20];
您要查询的学生姓名"
b;
search2(stu,b);
case5:
\t再见!
谢谢您的使用。
\n"
return;
voidsetdata(studentstu[])//输入学生的数据
下面输入第"
i+1<
位同学的数据:
输入学号:
stu[i].number;
输入姓名:
stu[i].name;
输入班级:
stu[i].c;
语文成绩:
stu[i].chinese;
数学成绩:
stu[i].math;
英语成绩:
stu[i].english;
/***************************************
打印学生信息
***************************************/
voidprint(studentstu[],inti)//打印
排名:
stu[i].rank<
/**************************************
计算总分和平均分
voidcount(studentstu[])
stu[i].total=stu[i].math+stu[i].chinese+stu[i].english;
//计算一个总分,记录在tatal里面
stu[i].average=stu[i].total/3;
//计算一个平均分,记录在average里面
利用冒泡法对学生的成绩排序,并得出排名。
*************************************/
voidsort(studentstu[])//冒泡法排序
i++)
for(intj=0;
j<
n-1-i;
j++)
if(stu[j].total<
stu[j+1].total)
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}
for(intk=0;
k<
k++)
stu[k].rank=k+1;
//设置排名
/***********************************
打印成绩高于等于班级平均成绩的学生信息。
***********************************/
voidgetaverage(studentstu[])
doublea;
doublesum=0;
sum=sum+stu[i].average;
a=(sum/n);
if(stu[j].average>
=a)
print(stu,j);
通过学号查找学生信息。
voidsearch1(studentstu[],char*a)
if(strcmp(stu[i].number,a)==0)
/*****************************************
Strcmp()函数简介;
原型:
externintstrcmp(constchar*s1,constchar*s2);
所在头文件:
string.h
功能:
比较字符串s1和s2。
一般形式:
strcmp(字符串1,字符串2)
说明:
当s1<
s2时,返回值<
0;
当s1==s2时,返回值=0;
当s1>
s2时,返回值>
即:
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'
\0'
为止。
如:
A"
B"
"
a"
computer"
compare"
特别注意:
strcmp(constchar*s1,constchar*s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
详细C++程序设计p83。
*******************************************/
{print(stu,i);
else
if(i==n-1)
您输入的学号不存在"
通过学生姓名查找学生信息。
voidsearch2(studentstu[],char*b)
if(strcmp(stu[i].name,b)==0)
您输入的姓名不存在"
/****************************************
选择菜单。
intselect1()
intcn;
\t1.统计平均分和总分\n"
\t2.按成绩排序\n"
\t3.平均分以上的打印\n"
\t4.查找学生信息\n"
\t5.再见\n"
)
cn;
if(cn<
1||cn>
6)
\t输入错误,重选1-5:
returncn;
选择菜单,选择通过学号查找还是姓名查找。
************************************/
intselect2()
\t1.按学号查找\n"
\t2.按姓名查找\n"
2)
\t输入错误,重选:
}
第4章运行结果及分析
图4-1进入时的界面,动态设置班级人数
图4-2输入学生信息,班级人数为3人
图4-3命令1,统计各个学生的总分及其平均分
图4-4命令2,对学生成绩进行排序并打印
图4-5命令3,打印成绩高于班级平均成绩的学生信息
图4-6命令菜单4,查找菜单,可采用学号和姓名查找学生信息
图4-7利用学号查找学生信息
图4-8利用姓名查找学生信息
图4-9输入信息错误提示,不存在学生学号或姓名需重新输入。
图4-10输入命令错误提示。
图4-11结束操作
图4-12程序总界面
(1)
图1-12程序总界面
(2)
第5章心得体会
在程序的编写过程中,我充分体会了“细节决定成败”这句话的内涵,因为每一个细微的细节都必须十分的注意。
如果稍有不慎,就会全盘皆“输”。
而且往往很多时候,自己觉得程序非常正确,但是就是通不过,在查找错误的过程中,开始否认自己的过程,非常的难受。
刚开始看到课题的时候觉得也不是很难,就开始写了,但是当实际开始写的过程中却发现自己有好多欠缺的地方,知识点没有完全扎实的掌握,在实践中逐一凸显出来了。
对于传址调用可以采用数组名作为函数参数和指针作为函数参数两种方法,在形参哪儿往往漏写[],导致编译错误。
在写查找函数时,对于字符串的比较毫无头绪,在利用循环比较字符串的各个元素是否相同未果的情况下,内心开始失落,崩溃。
想着把学号弄成整型的这样虽然容易解决但内心又不甘,在这个地方纠结了好长时间,最后还是“度娘”给了提示,利用strcmp函数可以轻松的解决这个问题。
在开始编写程序的时候,总希望自己的程序多一些功能,可以更加的完善。
但是往往因为急于求成而漏洞百出。
对于班级人数的设置,想动态的改变,所以类比数组的动态设置写出了结构体的动态设置,但是忽略了设置一个全局变量n。
这个过程曾给我沉重打击,不过当看到程序没错误能执行出来时,心中的喜悦难以用言语来表达。
虽然学生成绩管理系统基本实现预定功能,当时它并不止步于此。
本系统只能一次性输入学生信息且不能保存输入的学生信息,若出现输入学生信息错误和要对学生信息进行删除,插入等操作时,则需将所有学生信息重新输入,此操作繁琐且浪费时间。
可增加储存,插入和删除功能,实现将各个学生的成绩记录输入到系统中,并保存到文件,可以查询以及插入或删除学生的成绩记录。
通过这次C++课程设计使我深深的体会到了编程的辛苦,特别是当一个程序无法运行而又无计可施时,那种难受实在无法用语言表达,但当为一个程序而绞尽脑汁,在自己的辛勤努力下最终运行成功时的那种喜悦感也是溢于言表的。
最重要的是我从这次课程设计中发现了自己的不足,知识掌握的不牢固,以及这门课知识的广泛及其博大精深。
编写一个优秀的程序决不是一蹴而就的事情,需要长时间的积累和良好的习惯的养成,需要我坚强的毅力和持久的耐力,不要贪图大而全,要从小做起,逐步改善,这样才能避免少走弯路,减少设计周期。
参考文献
[1]柴欣,张红梅.VisualC++程序设计基础(第二版)[M].中国铁道出版社.2007.8
[2]吕凤翥.C++语言基础教程[M].清华大学出版社.2007.2
[3]《C++程序设计》精品课程
[4]徐慧民.C++大学基础教程.人民邮电出版社.2009.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计学生成绩管理系统 程序设计 学生 成绩管理系统