常熟理工学院物理与电子科学系《C语言程序设计》课程设计实验报告题目:学生成绩管理系统专业:电子科学与技术班级:电科111姓名:谢烨学号:050211122成绩:指导教师:涂国辉一、设计任务与要求1、课程设计目的:设计制作学生成绩管理系统,实现成绩的录入、成绩删除、成绩修改以及成绩查询等一些基本功能。编写源程序代码,编译成可执行文件并能正常运行。2、课程设计的任务要求:课程题目:成绩管理系统学生信息包括班级、学号、姓名、成绩、班级、平均分等。试设计一学生成绩管理系统,使之能提供以下功能:(1)能对学生成绩的录入、修改和删除(2)能查询学生成绩,不及格科目及学生名单(3)能统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序(4)能分别统计“优秀(90分~100分)”、“良好(80分~89分)”、“中等(70分~79分)”、“及格(60分~69分)”和“不及格(0分~59分)”人数及所占总人数的百分比。(5)能输出学生的成绩单二、系统分析1.要求分析:1.每一条记录包括一个学生的姓名、学号、成绩、学科、班级、平均分等。2.输入功能:可以一次完成多条记录的输入。3.显示功能:完成全部或任一学生记录的显示。4.修改功能:可以实现学生全部或某一信息的修改。5.删除与添加功能:删除和添加学生记录。6.查找功能:完成按姓名或成绩查找学生记录,并显示。7.保存功能:将学生记录保存在任何自定义的文件中。8.读取功能:将保存在文件中的学生记录读取出来。9.有一个清晰简洁界面来调用各个功能。2.系统性能要求:①系统安全、可靠;②功能齐全;③操作方便;④易于维护和扩充。3.系统的功能分析:资料维护:系统维护包括对各种记录的修改、删除、添加等操作。资料维护:对数据表中的信息进行浏览。系统查询:可以按学生姓名、学生成绩进行详细查询。资料统计:包括统计学生总人数、单门课程成绩、班级总成绩等的统计。4.系统功能模块学生成绩管理系统有:成绩的录入、修改和删除、成绩查询以及学生的成绩统计。5.功能的实现:在主函数中建立inputRecord函数(输入函数),selectRecord函数(显示函数)和updateRecord函数(修改函数),利用switch函数的选择功能,实现各模块的不同作用。1.“数据输入与浏览”模块:(1)数据输入:对学生的班级,学号,科目,成绩等信息进行输入。要实现数据的输入,在inputRecord函数中建立一个input函数,运用printf函数提示输入信息,利用getchar函数输入学生各信息(包括学生的学号,班级,学号,成绩,科目等),并存入文件中。(具体见源程序)(2)数据浏览:对学生的各信息进行浏览。要实现数据的浏览,在selectRecord函数中建立一个showSelectMenu函数,利用for循环和printf函数,将输入的学生成绩信息逐个逐一显示出来。(具体见源程序)2.“数据修改”模块:(1)添加数据:增加一个新职工的记录要实现数据的添加,首先在inputRecord函数中建立一个showSelectMenue函数,使用printf函数提示输入信息,利用getchar函数输入学生信息,最后使用fwrite函数将输入信息插入文件中(具体见源程序)(2)删除数据:删除某个职工的记录要实现数据的删除,首先在inputRecord函数中建立一个del函数,使用fopen函数打开文件,然后利用scanf函数与printf函数,输入要删除的学生姓名,使用for循环与strcmp函数,在原有学生姓名中查找与输入姓名相同的学生,并删除其信息,最后使用fwrite函数保存文件,并输出显示删除后的所有学生的信息。(具体见源程序)(3)修改数据:修改原有职工的记录要实现数据的修改,在inputRecoed函数中建立change函数,使用fopen函数打开文件,先输入要修改的学生姓名,使用for循环与strcmp函数,在原有学生姓名中查找与输入姓名相同的学生,再利用printf函数输出此学生其它信息,最后在此函数中使用switch函数,选择要修改的内容,并使用fwrite函数保存修改后的文件。在以上的每个函数中利用printf函数提示输入信息,scanf函数输入修改信息。(具体见源程序)3.“数据查询”模块:(1)查询整个班级学生的信息要实现数据的查询(整个查询),首先建立showSelectMenu函数,使用fopen函数打开文件,先输入要查询的班级,使用for循环与strcmp函数,在原有班级中查找与输入号码相同的班级,再利用printf函数输出该班级学生信息,最后使用fclose函数关闭文件。(具体见源程序)(2)查询每个学生的平均分及排序要实现数据的查询(平均分查询),首先建立sortSelectByAve函数,计算学生的平均分,再利用sortSelectByAve函数对数据进行按平均分降序的排序,再利用printf函数输出该学生信息,最后使用fclose函数关闭文件。(具体见源程序)(3)查询不及格学生及科目要实现数据的查询(不及格学生机科目),首先建立函数noPass函数,利用for循环和if语句找出不及格的学生及科目,饭后用printf函数输出,最后用fclose函数关闭文件。(具体见源程序)4.“学生信息统计”模块:对班级、学生、科目、成绩,平均分的统计。要实现数据的查询(整个查询),首先建立showSelectMenu函数,使用fopen函数打开文件,先输入要查询的班级,使用for循环与strcmp函数,在原有班级中查找与输入号码相同的班级,再利用printf函数输出该班级学生信息,最后使用fclose函数关闭文件。(具体见源程序)5.模块框架图表7.数据结构设计一.函数定义程序中定义了3个功能函数,它们是输入学生信息----输入函数inputRecord();修改学生信息----修改函数updateRecord();查询学生成绩信息-----查询函数selectRecord()。最后是主函数main()来调用以上3个函数。在查询函数里有查询班级总成绩信息-----显示函数showSelectMenu();显示平均分信息-----显示函数showStatistic();显示不及格学生及科目-----显示函数noPass();对学生进行排序-----排序函数sortSelectByAve()。主函数流程图输入与浏览数据输入数据浏览数据修改删除数据数据查询学生信息分类统计信息统计按姓名查找学生成绩管理系统主函数入口(输入密码)退修改数据添加数据按班级查找学生成绩输出输出学生成绩单三.课程设计心得与体会在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序设计课程。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以我们要有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难输入系统修改系统退出输入显示修改添加删除统计查询录排输查课程设计独创性声明:学生签名:指导教师评语:课程设计成绩:指导教师签名:教研室意见:教研室主任签名: