c语言毕业课程设计报告学生成绩管理系统.docx
- 文档编号:10164154
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:24
- 大小:118.32KB
c语言毕业课程设计报告学生成绩管理系统.docx
《c语言毕业课程设计报告学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《c语言毕业课程设计报告学生成绩管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
c语言毕业课程设计报告学生成绩管理系统
(此文档为word格式,下载后您可任意编辑修改!
)
C语言课程设计报告
题目:
学生成绩管理系统设计
设计者:
余销云
专业班级:
电子信息工程
(2)班
学号:
指导教师:
祝红琴
完成日期:
6月21日
学生成绩管理系统课程设计
报告
目录
一.系统软件环境……………………………………………………(3)
二.课程设计目的……………………………………………………(3)
三.内容与要求………………………………………………………(3)
四.程序主要功能……………………………………………………(4)
五.系统功能设计……………………………………………………(4)
六.函数实现功能说明………………………………………………(5)
七.调试分析…………………………………………………………(6)
八.心得与体会………………………………………………………(6)
九.各功能模块的实现及其程序清单………………………………(7)
十、附页源程序清单…………………………………………………(11)
学生成绩管理系统课程设计
报告
一.系统软件环境:
本程序主要运行在:
VisualC++6.0(主要)
TurboC/C++3.0
TurboC2.
二.课程设计目的:
本课程设计的系统是早已在很多领域均有应用,是一个很不错的教学管理系统,而且其功能更是相当强大、界面更加友好的应用型软件。
而现在我的设计并非是重走旧路,而我的设计主要目的在于学习并深刻地掌握对C语言的基础知识以及其实践经验,更好地在以后的学习中能够更好地运用学习。
特别是像这种比较多运用
到一些课本上没有教的知识,比如说,像清屏函数CLRSCR、菜单函数MENU等。
许多都是一开始就没有涉及到的知识,在自已的设计中得到了提升,更加重要的一点就是增加了自已的实践操作能力。
三.内容与要求:
(一)设计内容:
成绩信息,内容如下:
例:
现有学生成绩信息,包含
姓名学号语文数学英语
张明明01677882
李成友02789188
张辉灿03688256
王露04564577
陈明05673847
………………
请用C/C++编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:
(二)功能要求:
(1)信息输入:
(2)信息查询:
要求:
查询时可实现按姓名查询、按学号查询
(3)成绩统计:
要求:
A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
(4)可选功能:
实现学生信息数据的维护。
可包括:
增加学生信息、删除学生信息、修改学生信息
(其他要求:
学生信息数据以结构体数组组织;或以链表形式组织;或以文件形式保存(可加分)
2、插入记录――在一个特定序号处插入一条记录
3、删除记
4、修改记―关键
可选增强功能:
统计录――修改特定记录
5、查询记录―。
(可对记录分)
6、排序――按学号、姓名、出生年月、家庭住址、邮编、电话等进行排序
7、系统维护――退出系统时关闭所有文件
四.程序主要功能:
本系统的主要功能有如下:
(1)、新输入学生的详细信息(包括:
学号、姓名、语文成绩、数学成绩、英语成绩)
(2)、增加学生的信息
(3)、删除学生的信息
(4)、查询学生的信息
(5)、统计学生的成绩
注:
由于本人能力有限,不能完全地将所有的功能模块做出来;但我相信我能够再接再厉,继续开发下去的,并向人性化发展。
五.系统功能设计:
(一)本系统的总体框架图:
(二)、本系统的总体流程图:
注:
此图为概图、程序较多无法一一展示。
六.函数实现功能说明:
(1)、MENU函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择。
(2)、CREAT函数是定义用于创建新的链表,并带回一个指向链表头的指针。
其功能是输入最初的学生信息。
(3)、ADD函数是定义用于再次输入学生信息,并将所有的学生信息按学号排序。
(4)、DEL函数是定义用于删除学生信息。
:
(5)、SEARCH函数是定义义用于查询学生信息,主要是学号的查询。
:
(6)、TAXIS函数是定义用于统计学生的成绩信息,采用排序函数的方式对学号/数学等的排序。
:
七.调试分析:
因在不同的环境中运行是有不同的结果,以下分两种环境中说明:
(1)、在TurboC2.0
在这个环境下运行警告之处比较多,在调试时采用的图象处理函数在其它两个环境中不能运行。
例如:
在原程序中加入
#include“graphics.h”
{intgdtiver=DETECT,gmode;
Initgraph(&gdriver,&gmode,“图象处理函数的路径”);
Cleardevice();
Setbkcolor(颜色值);
}
**在TurboC/C++3.0中的Error提示是:
Undefinedsymboc_cclosegraphinmodule……
原因在于:
TC3.0中对图象的处理函数有不足之处。
**在VisualC++6.0中的Error提示是:
BGIError:
Graghicsnotinitialized(use’initgraph’)
Cannotopenincludefile:
”graphics.h”
Nosuchfileordiretory
原因在于:
VC6.0中对图象处量理的函数与TC中的不一样。
(2)、在TurboC/C++3.0
在这个环境中运行到输入学生姓名时就出错:
Error:
(在用户窗口中可以看到)
Scanf:
floatingpointformatsnotlinked
Abmormalprogramtermination
**原因在于:
连接浮点库错误。
**解决办法:
在主函数中加入:
fioatarg,*pointer=&arg;
即可运行
。
八.心得与体会:
(1)、通过本次对C语言的深入学习,让我对C语言有了更多的了解并撑握更多的知识,成功地运用各类函数、循环变量、结构化的程序设计,以及结构体、指针的使用。
(2)、但在学习中发现,编程确实不是很好做的,并非是你想要就能完成的,它需要的是认真、仔细地对待每一个程序块,特别是在对指针的使用时更加困难,那些指针指来指去,一不小心就会看错,编译不出来。
(3)、由于学生的我只是大一而已,没能够完完全全地把程序做出来,而且程序中有许多不足之处不能够正确地将它改正,但总体上是可以运行的。
九.各功能模块的实现及其程序清单:
(1)、各功能模块的实现(请参照第六点:
函数实现功能说明)
(2)、程序清单(请见附页)
参考文献:
[1]谭浩强编著.C程序设计第三版.北京:
清华大学出版社,2005
[2]林瑞仲等编著.C语言实例解析精粹.北京:
人民邮电出版社,2005
附页:
学生成绩管理系统源程序清单
#include
#include
#include
#include
#defineM3
/*定义结构体变量*/
typedefstructstudents
{charname[20];
charnum[15];
floatscore[M];
floataverage;
floattotal;
}MESSA;
MESSAstu[20];intS;
/*函数声明*/
voidmenu(void);
voidchoose(void);
voidinput(void);
voidsavescore(void);
voidloadscore(void);
voidchoosec(void);
voidaverage(void);
voidtotal(void);
voidname(void);
voidnumber(void);
voidshow(void);
voidexcellent(void);
voidpassing(void);
voidpersonal(void);
voidExit();
/*主函数调用*/
voidmain()
{menu();
choose();
}
/*菜单系统*/
voidmenu(void)
{
system("CLS");
printf("\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");
printf("\t^**^\n");
printf("\t^*。
。
。
。
。
。
欢迎使用这个成绩管理系统。
。
。
。
。
。
。
*^\n");
printf("\t^**^\n");
printf("\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");
printf("\n");
printf("\t以下这个菜单由余销云制作,详情请看:
\n\n");
printf("\t#########################################################\n");
printf("\t#请输入学生的分数.....................1#\n");
printf("\t#搜索学生分数....................2#\n");
printf("\t#搜索学生的优秀通过率.................3#\n");
printf("\t#搜索学生的通过状况...................4#\n");
printf("\t#搜索个人个门成绩分数.................5#\n");
printf("\t#离开.................................6#\n");
printf("\t#########################################################\n");
printf("\n\t请选择:
\n");
}
/*菜单选择*/
voidchoose(void)
{
intx,flag=0;
while(flag==0)
{
fflush(stdin);
scanf("%d",&x);
getchar();
switch(x)
{case1:
input();savescore();loadscore();menu();choose();flag=1;break;
case2:
choosec();flag=1;break;
case3:
excellent();flag=1;break;
case4:
passing();flag=1;break;
case5:
personal();flag=1;break;
case6:
Exit();flag=1;
default:
printf("\tSorry,yourchoosedoesn'texist!
pleasechooseagain!
\n");
}
}
}
/*输入学生成绩*/
voidinput(void)
{
intflag=1,j,i;chark;floatpp=0;
for(i=0;flag==1;i++)
{
printf("\t请输入第N.%hd个学生的成绩信息:
\n",i+1);
puts("姓名:
");
fflush(stdin);
gets(stu[i].name);
fflush(stdin);
puts("学号:
");
fflush(stdin);
gets(stu[i].num);
puts("\t分数:
\t语文\t数学\t英语");
for(j=0;j scanf("%f",&stu[i].score[j]); puts("\t你想要继续么? (Y/N)"); while (1) {puts("\t请选择......."); fflush(stdin); scanf("%c",&k); if(k! ='N'&&k! ='Y') puts("\t出错了,哈哈,再输一次吧! "); elseif(k=='N') { flag=0;S=i;break; } elsebreak; } } for(i=0;i<=S;i++) { for(j=0,stu[i].total=0.0;j stu[i].total+=stu[i].score[j]; stu[i].average=stu[i].total/M; } } /*保存数据*/ voidsavescore(void) { inti,flag=1;FILE*fp;charm; puts("\t你想要保存这些数据么? (Y/N)"); while (1) { fflush(stdin); scanf("%c",&m); if(m=='Y') { if((fp=fopen("D: \score.txt","w"))==NULL) { printf("\t对不起哦,无法打开这个表单....\n"); exit(0); } for(i=0;i<=S;i++) if(fwrite(&stu[i],sizeof(structstudents),1,fp)! =1) { puts("\t对不起,表单书写错误了! "); flag=0; } if(flag==1) for(i=0;i<=S;i++) printf("\t好了,第N.%d个学生的数据已经被保存了哦! ! ! \n",i+1); fclose(fp); break; } elseif(m! ='N'&&m! ='Y') puts("\t对不起,你输入错误,请重新输入一次吧! "); else break; } } /*读取文件中保存的数据*/ voidloadscore(void) { FILE*fp;charn;MESSArestu[20];inti,j,flag=0; charread[5][10]={"学号","姓名","语文","数学","英语"}; puts("\t你想要立刻读取这些数据么? (Y/N)"); while (1) { fflush(stdin); scanf("%c",&n); if(n=='Y') { if((fp=fopen("D: \score.txt","r"))==NULL) { fprintf(stderr,"\tOpen%serror! ! ! \n","score.txt"); exit(0); } for(i=0;i<=S;i++) fread(&restu[i],sizeof(structstudents),1,fp); system("CLS"); puts("\t成绩信息读取中................."); printf("\t好的,表单已经被读取! ...........\n"); printf("\n"); printf("\t$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$\n"); printf("\t$**$$**$\n\t"); printf("$**$"); for(i=0;i<5;i++) printf("%-10s",read[i]); printf("$**$"); printf("\n"); for(i=0;i<=S;i++) {printf("\t$**$"); printf("%-10s%-10s",restu[i].num,restu[i].name); for(j=0;j<3;j++) printf("%-10.2f",restu[i].score[j]); printf("$**$\n"); } printf("\t$**$$**$"); printf("\n\t$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$\n"); fclose(fp); break; } elseif(n=='N') break; else printf("\t对不起,出现错误了,再来一次吧,相信你会成功的! \n"); } puts("\t输入任意键回到主菜单..............\n"); getchar(); getchar(); } /*选择查分的子菜单及子菜单选择*/ voidchoosec(void) { intbiao,i,flag=0;FILE*fp; if((fp=fopen("D: \\score.txt","r"))==NULL) { printf("\t对不起,你无法输入任何成绩信息! 无法打开这个表单! \n\n\n"); printf("\t输入任意键回到主菜单! ! \n"); getchar(); getchar(); menu(); choose(); } for(i=0;i<=S;i++) fread(&stu[i],sizeof(structstudents),1,fp); fclose(fp); system("CLS"); printf("\t以下是第二个菜单: \n"); printf("\n"); printf("\t%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$\n"); printf("\t%%$按平均分由高到低..............................1%%$\n"); printf("\t%%$按总分由高到低................................2%%$\n"); printf("\t%%$按学号降序....................................3%%$\n"); printf("\t%%$按姓名降序....................................4%%$\n"); printf("\t%%$回到主菜单....................................5%%$\n"); printf("\t%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$%%$\n"); printf("\n\t请选择输入方式: \n"); while(flag==0) { fflush(stdin); scanf("%d",&biao); getchar(); switch(biao) {case1: flag=1;average();show();break; case2: flag=1;total();show();break; case3: flag=1;number();show();break; case4: flag=1;name();show();break; case5: flag=1;menu();choose();break; default: printf("\t对不起,你的操作无法进行! 请重新做出正确操作! \n"); } } } /*显示分数*/ voidshow(void) { inti,j,n,flag=0; charhead[7][10]={"学号","姓名","语文","数学","英语","总分","平均分"}; system("CLS"); puts("\t读取信息中................."); printf("\n"); printf("\t$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$\n\n\t"); for(i=0;i<7;i++) printf("%-10s",head[i]); printf("\n\t"); for(i=0;i<=S;i++) { printf("%-10s%-10s",stu[i].num,stu[i].name); for(j=0;j<3;j++) printf("%-10.2f",stu[i].score[j]); printf("%-10.2f",stu[i].total); printf("%-10.2f",stu[i].average); printf("\n\t"); } printf("\n\t$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$**$\n"); printf("\nYouwant: (1or2)\n"); puts("\t1.回到第二个菜单! \n"); puts("\t2.回到主菜单! \n"); while(flag==0) { fflush(stdin); scanf("%d",&n); getchar(); switch(n) {case1: flag=1;choosec();break; case2: flag=1;menu();choose();break; default: printf("\t出错了,请
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 毕业 课程设计 报告 学生 成绩管理系统