C++学生成绩管理系统.docx
- 文档编号:10148874
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:23
- 大小:580.70KB
C++学生成绩管理系统.docx
《C++学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C++学生成绩管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
C++学生成绩管理系统
课程:
《C++课程设计》
课程设计题目:
学生成绩管理系统
班级学号:
姓名:
指导老师:
目录
一、系统总体框架
二、功能分析
三、模块设计与分析
四、类的设计与分析
五、特色算法分析
六、特色算法
七、存在的不足
八、使用说明
一、系统总体框架
二、功能分析
“学生成绩管理系统”包括九个模块:
输入学生资料,输出学生资料,学生姓名按顺序排列,添加学生资料,按姓名查找,删除该学生资料,查找并显示学生资料,按姓名查找,修改该学生资料,从文件中读入数据,储存学生资料并退出系统。
这九个模块既相互联系又相互独立。
本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。
本系统能对成绩进行输入和输出;能按姓名对学生进行排序,并显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统所进行的操作进行保存,以及时更新系统中的数据。
三、模块设计与分析
(1)输入学生资料模块:
主要功能用来对学生的成绩进行收集和输入。
在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级,学号,姓名。
在准确输入学生资料后,就可以对该学生的各科成绩进行录入。
该学生各科成绩输入成功后,系统会提示是否继续进行操作,如果想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单。
(2)输出学生资料模块:
主要功能用来对学生的成绩进行输出。
在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。
具体包括学生的班级,学号,姓名和各科成绩。
在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单。
(3)按学生姓名进行排列模块:
主要功能是用来对学生的资料按姓名进行排序。
在系统保存学生资料,成绩的前提下,使用此功能可以对学生的资料按姓名进行排序,这样就方便查找姓氏相同或是相近的同学的资料。
(4)添加学生资料模块:
主要功能是用来添加学生资料,成绩。
如果系统有保存学生资料的情况下,想录入学生成绩的话,就不用添加学生资料这模块。
如果系统没有保存该学生信息的话,就要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作。
(5)按姓名查找,删除该学生资料模块:
主要功能是用来删除学生资料。
在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名,系统查找该学生资料后,就可以删除了。
由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化。
(6)查找并显示学生资料模块:
主要功能是用来查找学生资料。
在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息。
(7)按姓名查找,修改学生资料模块:
主要功能是用来修改学生资料。
在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。
(8)从文件中读入数据模块:
主要功能是用来从文件中读入学生数据。
由于一些资料可以用Word文档或Excel表格输入,故在此模块中增加了导入数据的功能。
这样就方便很多,不用把学生资料一个一个添加,节省了很多时间精力。
(9)储存学生资料并退出系统模块:
主要功能是用来储存学生资料。
在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。
四、类的设计与分析
Student类类图如下
typedefclass
{public:
charnum[10];
charcla[10];
charname[20];
charbyyl[10];
charjsjzc[20];
charsjk[10];
charjsjyy[20];
charjsdl[20];
}Student;
student类说明表如下
名称
属性
说明
num
数据成员
说明学生学号
cla
数据成员
说明学生班级
name
数据成员
说明学生名字
byyl
数据成员
说明学生数据结构成绩
jsjzc
数据成员
说明学生离散数学成绩
sjk
数据成员
说明学生大学物理成绩
jsjyy
数据成员
说明学生大学英语成绩
Jssl
数据成员
说明学生模拟电路成绩
五、特色算法分析
功能:
定义菜单函数,通过输出函数显示系统功能。
利用switch语句实现多分支选择结构。
算法思路:
switch语句的执行流程是:
首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句。
代码:
voidmain()//主函数调用。
{intn=0;
for(;;)
{switch(menu())
{case1:
cout< n=Input(stu,n); break; case2: cout< Display(stu,n); break; case3: cout< Sort(stu,n); cout< system("pause"); break; case4: cout< n=Insert(stu,n); cout< system("pause"); break; case5: cout< cout< "; n=Delete(stu,n); cout< system("pause"); break; case6: cout< Query(stu,n); cout< system("pause"); break; case7: cout< cout< "; n=Xiugai(stu,n); system("pause"); break; case8: cout< n=AddfromText(stu,n); break; case0: cout< WritetoText(stu,n); cout< system("pause"); break;}}} 六、功能测试 学生成绩管理系统主菜单页面 输入学生资料模块页面 输出学生资料模块页面 按学生姓名进行排列模块页面 添加学生资料模块页面 按姓名查找,删除该学生资料模块页面 查找并显示学生资料模块情况页面 按姓名查找,修改学生资料模块页面 从文件中读入数据模块页面 储存学生资料并退出系统模块页面 七、源程序代码 #include #include #include #include #include #include #include usingnamespacestd; typedefclass {public: charnum[10]; charcla[10]; charname[20]; charbyyl[10]; charjsjzc[20]; charsjk[10]; charjsjyy[20]; charjsdl[20];} Student; Studentstu[80]; intmenu() {charc; for(;c<'0'||c>'8';) {system("cls"); cout<<"欢迎使用本学生成绩管理系统! ! "< cout<<""; cout< cout<<"******************************学生成绩管理系统******************************"< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout<<"请选择(0-8): "; c=getchar();} return(c-'0');} intInput(Studentstud[],intn)//输入数据。 {inti=0; charsign,x[10]; for(;sign! ='n'&&sign! ='N';) {cout< "; cin>>stud[n+i].cla; cout< "; cin>>stud[n+i].num; cout< "; cin>>stud[n+i].name; cout< "; cin>>stud[n+i].byyl; cout< "; cin>>stud[n+i].jsjzc; cout< "; cin>>stud[n+i].sjk; cout< "; cin>>stud[n+i].jsjyy; cout< "; cin>>stud[n+i].jsdl; gets(x); cout< cout<<"还有要输入的信息吗? (y/n)"; cin>>&sign; i++;} return(n+i);} voidDisplay(Studentstud[],intn)//输出数据。 {inti; cout< cout< cout< cout< for(i=1;i {printf("\t\t%-9s%-9s%-9s%-9s%-9s%-9s%-9s\n",stud[i-1].cla,stud[i-1].num,stud[i-1].name,stud[i-1].byyl,stud[i-1].jsjzc,stud[i-1].sjk,stud[i-1].jsjyy); if(i>1&&i%10==0) {cout< cout< system("pause"); cout< cout< system("pause");} voidSort(Studentstud[],intn)//按名字排序。 {inti,j; chart[20]; for(i=0;i for(j=0;j if(strcmp(stud[j].num,stud[j+1].num)>0) {strcpy(t,stud[j+1].cla); strcpy(stud[j+1].cla,stud[j].cla); strcpy(stud[j].cla,t); strcpy(t,stud[j+1].num); strcpy(stud[j+1].num,stud[j].num); strcpy(stud[j].num,t); strcpy(t,stud[j+1].name); strcpy(stud[j+1].name,stud[j].name); strcpy(stud[j].name,t); strcpy(t,stud[j+1].byyl); strcpy(stud[j+1].name,stud[j].byyl); strcpy(stud[j].byyl,t); strcpy(t,stud[j+1].jsjzc); strcpy(stud[j+1].name,stud[j].jsjzc); strcpy(stud[j].jsjzc,t); strcpy(t,stud[j+1].sjk); strcpy(stud[j+1].name,stud[j].sjk); strcpy(stud[j].sjk,t); strcpy(t,stud[j+1].jsjyy); strcpy(stud[j+1].name,stud[j].jsjyy); strcpy(stud[j].jsjyy,t); strcpy(t,stud[j+1].jsdl); strcpy(stud[j+1].name,stud[j].jsdl); strcpy(stud[j].jsdl,t);} cout< "< intInsert(Studentstud[],intn)//插入一条学生信息。 {charx[10]; cout< "; cin>>stud[n].cla; cout< "; cin>>stud[n].num; cout< "; cin>>stud[n].name; cout< "; cin>>stud[n].byyl; cout< "; cin>>stud[n].jsjzc; cout< "; cin>>stud[n].sjk; cout< "; cin>>stud[n].jsjyy; cout< "; cin>>stud[n].jsdl; gets(x); n++; cout< "< return(n);} intDelete(Studentstud[],intn)//按名字查找信息,删除信息。 {chars[20]; inti=0,j; cin>>s; while(strcmp(stud[i].name,s)! =0&&i if(i==n) {printf("\t\t\t没有发现该学生资料! \n");/*返回失败信息*/ return(n);} for(j=i;j {strcpy(stud[j].num,stud[j+1].num); strcpy(stud[j].name,stud[j+1].name); strcpy(stud[j].cla,stud[j+1].cla); strcpy(stud[j].byyl,stud[j+1].byyl); strcpy(stud[j].jsjzc,stud[j+1].jsjzc); strcpy(stud[j].sjk,stud[j+1].sjk); strcpy(stud[j].jsjyy,stud[j+1].jsjyy); strcpy(stud[j].jsdl,stud[j+1].jsdl);} cout< "< return(n-1);} voidQuery(Studentstud[],intn)//按名字查找信息 {chars[20]; inti=0; cout< "; cin>>s; while(strcmp(stud[i].name,s)! =0&&i i++;/*查找判断*/ if(i==n) {printf("\t\t\t没有发现该学生资料! \n");/*输入失败信息*/ return;} cout< "< cout< "< cout< "< cout< "< cout< "< cout< "< intXiugai(Studentstud[],intn)//修改信息。 {n=Delete(stud,n); cout< n=Insert(stud,n); cout< return(n);} intAddfromText(Studentstud[],intn)//从文件中读入数据。 {inti=0,num; FILE*fp; charfilename[20]; cout< "; cin>>filename; if((fp=fopen(filename,"rb"))==NULL) {cout< cout< system("pause"); return(n);} fscanf(fp,"%d",&num); for(;i {fscanf(fp,"%s%s%s%s%s%s%s",stud[n+i].cla,stud[n+i].num,stud[n+i].name,stud[n+i].byyl,stud[n+i].jsjzc,stud[n+i].sjk,stud[n+i].jsjyy,stud[n+i].jsdl); i++;} n+=num; fclose(fp); cout< "< cout< system("pause"); return(n); voidWritetoText(Studentstud[],intn)//将所有记录写入文件。 {inti=0; FILE*fp; charfilename[20]; cout< cout< "; cin>>filename; if((fp=fopen(filename,"w"))==NULL) {cout< system("pause"); return;} fprintf(fp,"%d\n",n); for(;i {fprintf(fp,"%-6s%-5s%-5s%-5s%-5s%-5s%-5s\n",stud[i].cla,stud[i].num,stud[i].name,stud[i].byyl,stud[i].jsjzc,stud[i].sjk,stud[i].jsjyy); i++;} fclose(fp); cout< "< intb; cout< "< cout< cout< cin>>b; if(b==0) {cout< "< cout< system("pause"); exit(0);}} voidmain()//主函数调用。 {intn=0; for(;;) {switch(menu()) {case1: cout< n=Input(stu,n); break; case2: cout< Display(stu,n); break; case3: cout< Sort(stu,n); cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 学生 成绩管理系统