1、C语言学生成绩管理系统整理课 程 设 计 报 告课程名称 C语言课程设计课题名称成绩管理系统专 业班 级学 号姓 名指导教师20年月 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言课程设计 课 题 成绩管理系统专业班级 学生姓名 学 号 指导老师 任务书下达日期 0000 年0 月0日任务完成日期 0000年0月00日C语言课程设计任务书设计课题1:成绩管理系统问题描述:成绩管理系统主要管理学生考试成绩的基本信息。在系统中,每个学生是一条记录,包括姓名、学号、所选课程,而每个学生对应课程有相应成绩。系统要对一个有N个学生的班级所选课程成绩统一进行管理。包括了学生成绩的录入、显示、修改
2、、排序、保存等操作。1、 功能设计要求:1)本系统采用两个结构体数组进行数据存储。学生结构体应该包括学生的基本信息(学号、姓名、所选课程),课程结构包括各项课程的基本信息(所选的各门课程对应的成绩)2)设计主菜单界面,确定函数个数。设计菜单应包含以下功能: 录入信息(学生基本信息录入、课程成绩基本信息录入) 显示(显示学生基本情况和所选课程成绩) 修改信息(学生基本信息修改、成绩基本信息修改) 成绩统计(各科成绩最高分,平均分) 退出系统3)要求:建立两个结构体数组(或链表、文件),包括至少3门课程成绩和5个学生的必要信息,能对数据进行补充、修改。执行一个具体的功能之后,程序将重新显示菜单。3
3、、要求:1)用C语言实现系统;2)函数功能要划分好(结构化程序设计);3)界面友好(良好的人机交互),加必要的注释;4)提供程序测试方案。目录一、系统介绍1二、总体设计12.1程序模块12.2.函数分析12.3.总体结构2三主要模块的实现3四程序调试6五总结与体会13六源程序清单14一、系统介绍成绩管理系统主要管理学生考试成绩的基本信息。在系统中,每个学生是一条记录,包括姓名、学号、所选课程,而每个学生对应课程有相应成绩。系统要对一个有N个学生的班级所选课程成绩统一进行管理。包括了学生成绩的录入、显示、修改、排序、保存等操作。二、总体设计2.1程序模块主界面void homepage()。 显
4、示全部成绩void display()。 录入 插入void input()。 删除记录void del()。 排序void sort()。 等待界面void waiting()。 退出界面void quit()。 2.2.函数分析主函数:调用所定义的函数,实现本系统要求的功能主界面函数 :显示主页面,并连接其它函数模块显示函数: 显示按要求查询的信息录入 插入函数 :录入或插入所需信息删除记录函数 : 删除数据中原有的信息排序函数 : 按照要求排列出信息的顺序等待界面函数 : 在显示期间一个缓冲页面退出界面函数 : 退出现有页面并返回子菜单2.3.总体结构.三主要模块的实现主函数(main)
5、通过对函数的调用实现录入、显示、修改、排序、保存等功能,有机的联系了所有的模块,是整个系统正常完整的运行。主页面函数void homepage()这个函数主要利用了printf输出了完整的主页面,并且通过函数的调用使这个页面和本程序的其他功能模块连接了起来!显示全部成绩函数void display()这个函数主要通过printf输出提示,操作者输入所查找方向,调用先前建立的数组中的存储数据,再通过printf函数按照一定的顺序全部完整的输出出来。完成了整个成绩的输出,显示。录入插入函数void input()这个函数先用到if语句判断输入成绩是否正确,for语句判断学号是否正确,然后用到for
6、,printf,scanf三的函数完成了对所有学生信息的录入,并且保存到系统中,又用if,else判断输入数量是否超出数组的容纳量删除记录函数void del()这个函数先用for,if来判断所输入信息是否属于该系统信息,找到信息后用del()函数删除掉原有的信息,并且用if,else选择是否继续。排序函数void sort()这个函数用printf输出操作提示,可以用for,if来实现对每一种方式的排序,在按数字时用通过函数的调用地方法完成进入每一种排序的页面。退出界面函数void quit()这个函数主要通过printf输出“谢谢是由本程序”,完成对整个程序运行结束的提醒。删除模式输入信息
7、四程序调试五总结与体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在一个多星期的日子里,我学到很多很多的的东西,同时不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相
8、结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于完成课程设计。同时,我也学得到很多实用的知识,在次,对给予过我帮助的各位指导老师和所有同学表示忠心的感谢!参考文献C语言程序设计案例教程 张基温 编著 清华大学出版社C程序设计
9、(第三版) 谭浩强 著 清华大学出版社 C语言程序设计方法 邓文新 张宏烈 著 哈尔滨工业大学出版社C语言课程设计案例精编 中国水利水电出版社六源程序清单#include#include#include#includevoid homepage()。 /主界面void display()。 /显示全部成绩void input()。 /录入 插入void del()。 /删除记录void sort()。 /排序void waiting()。 /等待界面void quit()。 /退出界面struct student int num。 char name15。 float score3。 floa
10、t avg。int count=0。 /当前学生个数int sort_type=0。 /当前排序类型struct student stu10。void main() int i,k=0。 char username15,pwd6。 system(color ED)。 printf(nn)。 printf( tn)。 printf( tn)。 printf( tn)。 printf( tn)。 printf( t 欢迎使用学生成绩管理系统 n)。 printf( tn)。 printf( tn)。 printf( tXXXXXn)。 printf( tn)。 printf( tXXXXXXn)。
11、 printf( tn)。 printf( tn)。 printf( tn)。 printf( tn)。 printf(nttt请按回车键继续!n)。 getchar()。 system(cls)。 homepage()。void homepage()/主页面函数 char n。 printf(nn)。 printf(tn)。 printf(tn)。 printf(t n)。 printf(t 1.显示成绩 n)。 printf(t n)。 printf(tn)。 printf(t n)。 printf(t 2.录入成绩 n)。 printf(t n)。 printf(tn)。 printf(
12、t n)。 printf(t 3.删除记录 n)。 printf(t n)。 printf(tn)。 printf(t n)。 printf(t 4.排序 n)。 printf(t n)。 printf(tn)。 printf(t n)。 printf(t 0.退出程序 n)。 printf(t n)。 printf(tn)。 printf(tn)。 while (n!=1)&(n!=2)&(n!=3)&(n!=4)&(n!=0) printf(n请选择:)。 fflush(stdin)。/函数清空 scanf(%c,&n)。 switch(n) case 1: display()。 brea
13、k。 case 2: if(count10) input()。 else printf(记录数已满n)。 Sleep(2000)。 system(cls)。 homepage()。 break。 case 3:del()。 break。 case 4: sort()。 case 0: quit()。 break。 default:/不执行 printf(n选项错误n)。 void display()/显示全部成绩函数 int i。 char c。 system(cls)。 switch(sort_type) case 0: printf(tt未排序:nn)。 break。 case 1: pr
14、intf(tt按学号排序:nn)。 break。 case 2: printf(tt按成绩1排序:nn)。 break。 case 3: printf(tt按成绩2排序:nn)。 break。 case 4: printf(tt按成绩3排序:nn)。 break。 case 5: printf(tt按平均成绩排序:nn)。 break。 printf(t学号t姓名t英语t数学t物理t平均成绩n)。 for(i=0。icount。i+) printf(t%dt%st%5.2ft%5.2ft%5.2ft%5.2fn,stui.num,stui.name,stui.score0,stui.score
15、1,stui.score2,stui.avg)。 printf(nn按任意键返回n)。 c=getch()。 system(cls)。 homepage()。void input()/录入插入函数 int i,numcheck。 char c。 system (cls)。 do printf(学号:n)。 scanf(%d,&stucount.num)。 numcheck=1。 if(stucount.num0) printf(请输入正整数:n)。 for(i=0。icount。i+) if(stucount.num=stui.num) numcheck=0。 printf(学号重复,重新输入
16、:n)。 while(!numcheck)。 printf(姓名:n)。 fflush(stdin)。 gets(stucount.name)。 for(i=0。i3。i+) printf(第%d门课成绩:n,i+1)。 scanf(%f,&stucount.scorei)。 stucount.avg=(stucount.score0+stucount.score1+stucount.score2)/3。 printf(是否继续输入(y/n):n)。 do c=getchar()。 if(c=y|c=Y) count+。 if(count10) input()。 else printf(记录数
17、已满n)。 Sleep(2000)。 system(cls)。 homepage()。 else if(c=n|c=N) count+。 system(cls)。 homepage()。 else。 while(c!=y)&(c!=n)&(c!=Y)&(c!=N)。void del()/删除记录函数 int i,j,del_num,match=0。 char c。 system(cls)。 printf(请输入要删除的学生学号:n)。 scanf(%d,&del_num)。 waiting()。/等待函数 for(i=0。icount。i+) if(stui.num=del_num)/匹配输出
18、 match=1。 for(j=i。jcount。j+) stuj=stuj+1。 if(!match) printf(没有要找的学号.n)。 printf(是否继续删除?(y/n)。 fflush(stdin)。 do c=getchar()。 if(c=y|c=Y) count-。 del()。/删除记录 else if(c=n|c=N) count-。 system(cls)。 homepage()。 else。 while(c!=y)&(c!=n)。void sort()/排序函数 int i,j。 int choice。 struct student temp。 system(cls
19、)。 printf(tt请选择排序功能:n)。 printf(t1.按学号排序n)。 printf(t2.按成绩1排序n)。 printf(t3.按成绩2排序n)。 printf(t4.按成绩3排序n)。 printf(t5.按平均成绩排序n)。 do scanf(%d,&choice)。 while(choice!=1)&(choice!=2)&(choice!=3)&(choice!=4)&(choice!=5)。 switch(choice) case 1:/按学号 for(i=0。icount-1。i+) for(j=0。jstuj+1.num) temp=stuj。 stuj=stu
20、j+1。 stuj+1=temp。 sort_type=1。 break。 case 2: for(i=0。icount-1。i+) for(j=0。jcount-i-1。j+) if(stuj.score0stuj+1.score0) temp=stuj。 stuj=stuj+1。 stuj+1=temp。 sort_type=2。 break。 case 3: for(i=0。icount-1。i+) for(j=0。jcount-i-1。j+) if(stuj.score1stuj+1.score1) temp=stuj。 stuj=stuj+1。 stuj+1=temp。 sort_t
21、ype=3。 break。 case 4: for(i=0。icount-1。i+) for(j=0。jcount-i-1。j+) if(stuj.score2stuj+1.score2) temp=stuj。 stuj=stuj+1。 stuj+1=temp。 sort_type=4。 break。 case 5: for(i=0。icount-1。i+) for(j=0。jcount-i-1。j+) if(stuj.avgstuj+1.avg) temp=stuj。 stuj=stuj+1。 stuj+1=temp。 sort_type=5。 break。 system(cls)。 wai
22、ting()。 homepage()。void waiting() int i。 printf(nt请稍侯.)。 for(i=0。i25。i+) switch(i%4) case 1:printf(b)。break。 case 2:printf(b-)。break。 case 3:printf(b/)。break。 case 0:printf(b|)。break。 Sleep(100)。 system(cls)。void quit() system(cls)。 printf(nn)。 printf(tn)。 printf(tn)。 printf(t n)。 printf(t 谢谢使用本程序 n)。 printf(tn)。 printf(tnn)。计算机与通信学院课程设计评分表课程名称:C语言程序设计项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期:(注:1此页附在课程设计报告之后;2综合成绩按优、良、中、及格和不及格五级评定。)