C语言学生成绩管理程序设计实践训练课程设计报告.docx

上传人:叶*** 文档编号:35090740 上传时间:2022-08-20 格式:DOCX 页数:27 大小:148.37KB
返回 下载 相关 举报
C语言学生成绩管理程序设计实践训练课程设计报告.docx_第1页
第1页 / 共27页
C语言学生成绩管理程序设计实践训练课程设计报告.docx_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《C语言学生成绩管理程序设计实践训练课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理程序设计实践训练课程设计报告.docx(27页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、23摘 要随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,人们的生活与工作方式已发生了很大的改观。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行。因此本次课程设计的课题是学生成绩管理系统,本文介绍课程设计课题的基本要求,详细介绍本次课程设计系统中的各种功能及流程图,以及对各种功能的有其详细的源程序代码,同时本文提供了完整的源程序代码,并展示了系统中各种功能的使用和运行效果。最后给出了在用c语言程序设计编程过程中的总结,其中包含作者对本程序的独特设计,作者的设计收获、设计中遇到的困难和

2、问题,以及作者对设计题目及功能的改进意见,英文摘要,查阅的参考文献等方面的内容。关键词:网络技术;数据库;c语言目 录1本课程的作用和目的2 课程的基本要求3设计整体规划及方案4功能分析及设计任务5流程图6各功能的运行过程及结果7讨论及进一步研究建议8课程设计心得9源程序Abstract参考文献1本课程的作用和目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。2.课程基本要求基本要求:(1)能按学期、按班级完成对学生成绩的录入。(

3、2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单(5)能按学号删除学生纪录,成绩等。(6)将学生的学号、姓名及各门课程的成绩等信息保存于外部存储器的文件中。创新要求:在基本要求达到后,可进行创新设计。信息描述:录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等)。3.设计整体规划及方案整个程序的设计是通过对每一个功能的设计,然后,再对每一个功能的程序进行模块化,从而形成一个完整的学生成绩管理系统。在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分。每

4、个子任务如果仍很复杂,还可以再分解为若干个子任务,如此逐层分解。4.功能分析及设计任务能按学期、按班级完成对学生成绩的录入、修改。能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序。能查询学生成绩,不及格科目及学生名单。将学生的学号、姓名及各门课程的成绩等信息保存于外部存储器的文件中能按班级输出学生的成绩单。系统以菜单方式工作。5.流程图开始主界面显示所有学生信息修改学生记录删除学生记录按姓名查询学生记录按平均成绩排序按班级查询按学期查询增加学生记录显示不及格学生信息结束6. 各功能的运行过程及结果1号功能显示所有学生信息2号功能修改学生记录3号功能删除学生记录4号功

5、能按姓名查询学生记录5号功能按平均成绩排序6号功能按班级查询7号功能按学期查询8号功能增加学生记录9号功能显示不及格学生信息7. 讨论及进一步研究建议由于对C语言的系统编程还不是很熟悉,这个学生信息管理程序仍有不足之处和要改进的地方。在这里进行讨论。不足之处有:1.1、由于程序运行窗口尺寸不够大,输入的数据长度有要求,不能够输入的太长否则就会输出结果排列不整齐甚至无法输出数据。1.2、结构体中的班级只能输入整形变量。如果把班级定义为字符数组的话,暂时找不到办法不通过键盘输入,直接给结构体中的字符数组赋值。1.3、排序方法是采用冒泡排序法,对平均值进行排序。不过一旦选择排序,会把文件中的全部结构

6、体进行排序,然后根据用户输入选择,按班级或学期显示出来。如果只按班级或学期进行排序的话,要对文件中的结构体进行筛选,这样就不能使用冒泡排序法,暂时还想不出其他方法。8.课程设计心得大二时我们学习了C这一编程语言,但我们感觉学的很浅薄,平时都只能编一些比较小的程序,对一些比较大的程序都无从下手。这次课程设计花了三天,通过和同学的讨论要与不断地尝试,让我们学到了不少的知识,开拓了视野。回顾这次课程设计,至今我们收获慨颇多,自从拿到题目到完成整个编程,从理论到实践,在整整三天的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设

7、计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考能力。在我们小组有解决不了的问题时,我们会主动查阅相关的资料,或向其他同学询问,这不仅丰富了我们的知识,还增进了我们同学之间的友谊。为了增大信息的安全性,需要用文件来存储信息,由于我们在上课时不注重对文件的运用,所以在这方面有较大的困难。我们先将书本认认真真地看了一遍,又做了一下课后习题来验证和增进自己的理解,终于,经过我们的不懈努力,我们小组的程序有了突破,成功地实现了用文件来保存并查看学生的信息。通过这次课程设计,我们发现了自己

8、的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体、文件等等,这次课程设计,让我们重新温习了C语言的相关知识,并且也让我们对C语言编程的印象有了很大改观,发现C语言也可以完成这么实用的程序。这次课程设计让我们对C语言温故而知新,也大大提高我们小组对C语言编程的兴趣和信心。9.源程序#include #include #include /*定义学生结构体*/struct Studentchar ID20;char Name20;int Cla;int Term;float Mark1;float Mark2;float Mark3;float Average;float S

9、um;/*声明学生数组及学生数量*/struct Student students1000;int num=0;/*求平均值*/float Avg(struct Student stu)return (stu.Mark1+stu.Mark2+stu.Mark3)/3;/求总分float sum(struct Student stu)return (stu.Mark1+stu.Mark2+stu.Mark3);/找出不及格学生void NoPass()printf(-不及格学生信息-n);printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成

10、绩,成绩,成绩,总分,平均成绩);for (int i=0;inum;i+)if(studentsi.Mark160|studentsi.Mark260|studentsi.Mark360)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.ID,studentsi.Name,studentsi.Cla,studentsi.Term,studentsi.Mark1,studentsi.Mark2,studentsi.Mark3,studentsi.Sum,studentsi.Average);/通过学期查询void ter

11、mserch()int term;printf(请输入要查询的学期:);scanf(%d,&term);getchar();printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成绩,成绩,成绩,总分,平均成绩);printf(-n);for (int i=0;inum;i+)if(studentsi.Term=term)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.ID,studentsi.Name,studentsi.Cla,studentsi.Term,stu

12、dentsi.Mark1,studentsi.Mark2,studentsi.Mark3,studentsi.Sum,studentsi.Average);/*按平均值排序*/void Student_SortByAverage()int i,j;struct Student tmp;for (i=0;inum;i+)for (j=1;jnum-i;j+)if (studentsj-1.Averagestudentsj.Average)tmp=studentsj-1;studentsj-1=studentsj;studentsj=tmp;/通过班级查询void classserch() Stu

13、dent_SortByAverage();int cla;printf(请输入要查询的班级:);scanf(%d,&cla);getchar();printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成绩,成绩,成绩,总分,平均成绩);printf(-n);for (int i=0;inum;i+)if(studentsi.Cla=cla)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.ID,studentsi.Name,studentsi.Cla,studentsi

14、.Term,studentsi.Mark1,studentsi.Mark2,studentsi.Mark3,studentsi.Sum,studentsi.Average);/*通过学号返回数组下标*/int Student_SearchByIndex(char id)int i;for (i=0;inum;i+)if (strcmp(studentsi.ID,id)=0)return i;return -1;/*通过姓名返回数组下标*/int Student_SearchByName(char name)int i;for (i=0;inum;i+)if (strcmp(studentsi.

15、Name,name)=0)return i;return -1;/*显示单条学生记录*/void Student_DisplaySingle(int index)printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成绩,成绩,成绩,总分,平均成绩);printf(-n);printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsindex.ID,studentsindex.Name,studentsindex.Cla,studentsindex.Term,studentsinde

16、x.Mark1,studentsindex.Mark2,studentsindex.Mark3,studentsindex.Sum,studentsindex.Average);/*插入学生信息*/void Student_Insert()int cla;int flag=0,term;int count=1;while(1)if(count=1)count-;printf(请输入学期:);scanf(%d,&term);getchar();printf(请输入班级:);scanf(%d,&cla);getchar();studentsnum.Cla=cla;studentsnum.Term=

17、term;printf(请输入学号:);scanf(%s,&studentsnum.ID);getchar();printf(请输入姓名:);scanf(%s,&studentsnum.Name);getchar();printf(请输入成绩:); scanf(%f,&studentsnum.Mark1);getchar();printf(请输入成绩:);scanf(%f,&studentsnum.Mark2);getchar();printf(请输入成绩:);scanf(%f,&studentsnum.Mark3);getchar();studentsnum.Average=Avg(stud

18、entsnum);studentsnum.Sum=sum(studentsnum);num+;printf(是否继续?(y/n);if (getchar()=n)break;/*修改学生信息*/void Student_Modify()/float mark1,mark2,mark3;while(1)char id20;int index;printf(请输入要修改的学生的学号:);scanf(%s,&id);getchar();index=Student_SearchByIndex(id);if (index=-1)printf(学生不存在!n);elseprintf(你要修改的学生信息为:

19、n);Student_DisplaySingle(index);printf(- 请输入新值-n);printf(请输入学号:);scanf(%s,&studentsindex.ID);getchar();printf(请输入姓名:);scanf(%s,&studentsindex.Name);getchar();printf(请输入班级:);scanf(%d,&studentsindex.Cla);getchar();printf(请输入学期:);scanf(%d,&studentsindex.Term);getchar();printf(请输入成绩:);scanf(%f,&students

20、index.Mark1);getchar();printf(请输入成绩:);scanf(%f,&studentsindex.Mark2);getchar();printf(请输入成绩:);scanf(%f,&studentsindex.Mark3);getchar();studentsindex.Average=Avg(studentsindex);printf(是否继续?(y/n);if (getchar()=n)break;/*删除学生信息*/void Student_Delete()int i;while(1)char id20;int index;printf(请输入要删除的学生的学号

21、:);scanf(%s,&id);getchar();index=Student_SearchByIndex(id);if (index=-1)printf(学生不存在!n);elseprintf(你要删除的学生信息为:n);Student_DisplaySingle(index);printf(是否真的要删除?(y/n);if (getchar()=y)for (i=index;inum-1;i+)studentsi=studentsi+1;num-;getchar();printf(是否继续?(y/n);if (getchar()=n)break;/*按姓名查询*/void Student

22、_Select()while(1)char name20;int index;printf(请输入要查询的学生的姓名:);scanf(%s,&name);getchar();index=Student_SearchByName(name);if (index=-1)printf(学生不存在!n);elseprintf(你要查询的学生信息为:n);Student_DisplaySingle(index);printf(是否继续?(y/n);if (getchar()=n)break;/*显示学生信息*/void Student_Display()int i;printf(%6s%10s%10s%

23、8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成绩,成绩,成绩,总分,平均成绩);printf(-n);for (i=0;inum;i+)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.ID,studentsi.Name,studentsi.Cla,studentsi.Term,studentsi.Mark1,studentsi.Mark2,studentsi.Mark3,studentsi.Sum,studentsi.Average);/*将学生信息从文件读出*/void IO_ReadInfo

24、()FILE *fp;int i;if (fp=fopen(Database.txt,rb)=NULL)printf(不能打开文件!n);return;if (fread(&num,sizeof(int),1,fp)!=1)num=-1;elsefor(i=0;inum;i+)fread(&studentsi,sizeof(struct Student),1,fp);fclose(fp);/*将学生信息写入文件*/void IO_WriteInfo()FILE *fp;int i;if (fp=fopen(Database.txt,wb)=NULL)printf(不能打开文件!n);retur

25、n;if (fwrite(&num,sizeof(int),1,fp)!=1)printf(写入文件错误!n);for (i=0;inum;i+)if (fwrite(&studentsi,sizeof(struct Student),1,fp)!=1)printf(写入文件错误!n); fclose(fp);/*主程序*/void main()int choice;IO_ReadInfo();while(1)/*主菜单*/printf(n- 学生成绩管理系统-n);printf(1. 显示所有学生信息n);printf(2. 修改学生记录n);printf(3. 删除学生记录n);print

26、f(4. 按姓名查询学生记录n);printf(5. 按平均成绩排序n);printf(6. 按班级查询n);printf(7. 按学期查询n);printf(8. 增加学生记录n);printf(9. 显示不及格学生信息n);printf(10. 退出n);printf(请选择(1-10):);scanf(%d,&choice);getchar();switch(choice)case 1:Student_Display();break;case 2:Student_Modify();break;case 3:Student_Delete();break;case 4:Student_Sel

27、ect();break;case 5:Student_SortByAverage();Student_Display();break;case 6:classserch();break;case 7:termserch();break;case 8:Student_Insert();break;case 9:NoPass();break;case 10:exit(0);break;IO_WriteInfo();AbstractThe subject of this design is student Score Management System. With the development o

28、f computer technology, especially the development of computer network technology and database technology, peoples life and work style has changed a lot. The application of network technology makes it possible to communicate and share information between computers, and the application of database tec

29、hnology provides people with functions of data storage, information retrieval and information analysis, which makes the work more efficient. Therefore this course design of the subject is the student achievement management system, this paper introduces the basic requirements of the curriculum design

30、, detailed introduction of the course design system of all kinds of functions and flow chart, as well as all kinds of functions of the source program code, and this paper provides a complete source program code, and demonstrated the use of various functions and operating results. At last, the author

31、 gives a summary of the programming of C programming language, which contains the authors unique design of the program, the difficulties and problems encountered in the design of the author, and the authors suggestions on improving the design and function.Keywords: network technology; database; C language参考文献论文中最先引用到的参考文献顺序为1,其在参考文献中的顺序也为1,依次类推。1. 刘志铭,杨丽等.c语言入门经典.机械工业出版社,2013.42.朱鸣华,刘旭麟,杨微等.c语言程序设计教程第二版.机械工业出版社.2011.1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com