班级成绩管理系统(共28页).doc

上传人:飞****2 文档编号:14116799 上传时间:2022-05-02 格式:DOC 页数:28 大小:652.50KB
返回 下载 相关 举报
班级成绩管理系统(共28页).doc_第1页
第1页 / 共28页
班级成绩管理系统(共28页).doc_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《班级成绩管理系统(共28页).doc》由会员分享,可在线阅读,更多相关《班级成绩管理系统(共28页).doc(28页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上课 程 设 计 报 告课程名称 C语言程序设计 课题名称 班级成绩管理系统 专 业 电子信息 班 级 0802班 学 号 32 姓 名 董霄宇 指导教师 肖伟平 罗敬 肖彬 2009年 6 月 19 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 班级成绩管理系统 专业班级 电子信息0802班 学生姓名 董霄宇 学 号 32 指导老师 肖伟平 罗敬 肖彬 审 批 任务书下达日期 2009 年 6 月 19 日任务完成日期 2009年 6 月 30日一、设计内容与设计要求1 设计内容:班级成绩管理系统设计涉及的知识点:掌握并熟练运用C语言的基本

2、数据类型与各种表达式,程序的流程控制语句; 掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。2 设计要求:1) 用C语言实现系统;利用结构体数组实现班级成绩的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个

3、界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。2) 建立一个班级学生成绩数据库,文件名为bjcjk.txt,并从该文件中读取数据;3) 班级成绩管理系统应能提供以下功能:(1)主菜单界面设计。通过提示用户输入一个数字选项,调用相应的功能函数。(2)成绩显示:完成班级全部学生成绩的显示;(3)成绩录入:完成新增一个学生的成绩记录,并重新计算学生的平均成绩;(4)成绩修改:按学号修改一个学生的学习成绩,并重新计算学生的平均成绩;(5)成绩排序:按学生平均成绩进行排序;(6)成绩统计: 统计并显示每门课程的平均成绩; 统计并显示超过某门课程平均分的人数以及学生记录;4) 说明:(

4、1) 要求将修改后的数据写入到一个新的数据文件nwejck.txt中。(2) 对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。5) 班级成绩管理系统采用一个结构体数组,学生成绩数据库结构如下:int xh /*学号*/char name10 /*姓名*/int yy /*英语*/int mat /*数学*/int jsj /*计算机*/int wl /*物理*/int zf /*总分*/ 注意:学号不重复,且数据库应有10条或以上的记录。6) 要求: 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容; 要求学生必须按照课程设计报告的完整格式说明设计内容,设计

5、任务分析过程和算法,给出程序流程图和全部源程序; 设计报告的完整格式应包括以下部分的内容: 设计总体思路; 程序及各个模块说明; 总体模块框图; 各个程序模块说明; 程序流程图; 程序清单; 课程设计总结与体会(不少于400字)。 上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。二、进度安排第 18 周 星期五 8:0012:00 星期日 15:0018:00第 19 周 星期一 19:00 22:00星期三 8:0012:00 星期四 14:30 17:30附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体

6、,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。 目录一.需求分析-7(1)程序功能-7(2)输入输出要求-7二.总体设计-7三.模块功能详细设计分析-8四.调试分析及体会-9五.部分运行界面截取图-11六流程图-17七心得体会-18八.附件-201源程序-202参考书目-27九.评分表-28一.需要分析: (1)程序功能 该程序是

7、一个实现对班级成绩管理的系统。包括显示,添加,删除,修改,排序,查找,统计及退出等功能。输入学生的学号、姓名及成绩对其进行存储,在存储后可以对学生的成绩按学号和姓名进行查寻。该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。(2)输入输出要求学号输入只能用数字输入,姓名输入只能用字符,且最长为10个字符。此程序在BC2.0下运行通过。二.总体设计:(1) 抽象数据类型定义 学生成绩数据库结构: 数据库学号: int( ) 姓名: char(10) 英语: int() 数学: int() 计算机:

8、int() 物理: int() 总分: int() 平均分:flaot() 名次:int()(2)程序的模块及其功能和关系 该程序由9个模块组成,由主函数调用计算,显示,添加,删除,修改,排序,查找,统计及其退出等模块.下面将介绍每个模块的功能及与他们之间的关系. 模块图如下: 主菜单模块Main()添加模块删除模块查询模块 退出模块修改模块 成 绩 统 计 (3)主函数分析主函数主要由一个switch()开关语句构成,开关语句在一个无限循环体里,开关语句里的开关是调用主菜单显示函数的返回值。除最后一个语句是强制结束整个程序的语句外,其它case都是调用相应的函数,完成相应的功能。各调用情况如

9、下: case1:调用显示函数 case 2:调用追加函数、case 3:调用修改函数、case 4:调用删除函数、 case 5:调用查询函数 、 case 6:调用排序函数、 case 7:调用退出函数,主函数将保证每调用完一个函数之后又调用显示函数,然后按任意键又重新回到主菜单,以便用户进行下一次的操作。三模块功能详细设计分析 班级成绩显示模块:Void Disp( ) 这个模块的主要功能是用来计算每个人的平均分并显示班级中所有人各科相对应的成绩,平均分,总分及名次。在主菜单中选择“1”就可以进入这个模块界面。这个功能的实现是用了一个for循环来完成的。通过这个循环printf()函数依

10、次输出每一个人的学号,姓名,各科成绩,平均分,总分,名次。最后在界面上显示所有人的信息因此我们可以浏览所有人的信息。2班级成绩追加模块:Void Appe()本模块的主要功能是添加一个人的记录。在主菜单中键入“2”,就进入次模块。由多个for 循环控制。在for循环中包括printf和scanf函数,依照提示依次输入:学号,姓名,各科成绩。再调用显示函数Disp( )。班级成绩修改模块:void Modi( )本模块的主要功能是按学号查找相应的记录,然后系统判断学号是否存在,如果不存在将提示用户,如果存在再根据提示语句,用户可以按要求修改记录中除学号,姓名以外的指定内容,可按照用户要求修改对应

11、成绩,可由用户自行控制修改人数,并重新显示。在主菜单中键入“3”就可以进入这个模块。此模块是通过for循环语句控制实现的。如果输入的信息不存在系统就提示信息提醒。班级成绩删除模块:Void Dele( )此模块的主要功能是用来删除班级成绩管理中的信息。可按指定学号,姓名删除记录并重新显示。在主菜单中选择输入“4”,就可以进入这个模块的界面。这个模块的设计是通过if和for循环语句控制实现的。如果输入的信息不存在系统就提示信息提醒。.班级成绩查询模块:void Query()这个模块可以按学号查询;然后系统判断所输入信息是否存在,如果存在将显示该人的各科成绩,平均分,总分及名次。这个模块是通过i

12、f和for循环语句控制实现的。如果输入的信息不存在系统就提示信息提醒。 班级成绩排序模块:Void Sort( )该模块先由计算模块算出每个人的平均分及名次,再通过对名次的排序。运用双重for循环嵌套及if语句进行排序。班级成绩退出模块:void Quit()任意键退出程序.四程序调试分析 1在显示函数里应该含有计算函数,否则显示的信息中平均分,总分及名次都为零。2在输入函数中设了一个无限循环,可以输入无数个学生的成绩信息,但是不方便退出,后来用了一个输入函数输入要输入的学生信息的个数,在用循环控制,这样就方便多了。3输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不

13、要输入太多记录。4在程序调试的时候,出现函数名变成未定义字符,经过分析后发现是没有在程序的 前面些程序包含的语句,加上前面的头文件包含后就没有这个错误了.5在程序中需要输入的项太多,故在每个输入项前应加一个提示输入项,提示用户输入正确的信息。五.部分运行界面截取图1 、显示模块运行截面图运行程序菜单框图中选则1,按回车。运行结果如下图: 2、追加模块运行截面图运行程序菜单框图中选则2,按回车.按照提示输入信息,运行结果如下图:3、修改模块运行截面图运行程序菜单框图中选则3,按回车.按照提示输入信息,结果如图:4、删除模块运行截面图运行程序菜单框图中选则4,按回车.按照提示输入信息,运行结果如下

14、图:5、查询模块运行截面图运行程序菜单框图中选则5,按回车.按照提示输入信息,运行结果如下图6、排序模块运行截面图运行程序菜单框图中选则6,按回车.按照提示输入信息,运行结果如下图六、流程图1、总体设计流程图主函数流程图:读 入 数 据 菜单界面 输入选择值 menu-selcet() 执行退出函数执行排序函数执行追加函数执行删除函数执行修改函数执行显示函数执行查询函数 创建新数据库结束七心得体会课程设计这一周感受颇深。我想说实践是检验真理的唯一标准。尤其对于C语言这门对动手能力要求很高的学科。有很多程序你编了也检查了但也许就是发现不了错误,但只要一上机操作隐含的问题就全面暴露出来了。C语言课

15、程设计是一门细致的活。正如熟话所说的:一招不慎,满盘皆输。一个错误的存在整个程序就运行不出结果。对于基础不太牢固的我来真是一个考验,同时有时一个挑战。它需要耐心、仔细和坚持。说句老实话正如肖老师预言的在课程设计的前两天我是在失望、痛苦、焦虑和茫然中度过。一开始我编的程序存在很多问题,这些问题使我头都大了。就拿建立数据库来说我就建了不下十个。真的是无从下手也不知所措!怎么做怎么错,失败全面打击着我。万事开头难,课程设计是前所未有的难。痛定思痛,我强迫自己冷静下来:先弄懂设计思路从整体上对课程设计有一个清晰的了解,接下来就开始着手模块的设计。由于之前受了太多打击,接下来显示模块的成功出世给了我极大

16、的安慰。再接下来的追加、删除、修改和查询模块就顺手多了,因为我找到了一点自信。C语言程序设计既是一个整体,同是各个模块之间相互独立又紧密联系。因为有规律可循,后四个模块基本上就是switch、if-else和for语句的嵌套使用,当然还有基本输入输出函数的大量使用。找到正确的方法才能得出结果。在课程设计的过程中我遇到了很多问题,有过很多茫然,我觉得这是一个既艰辛又快乐的过程。在这个过程中我学到了很多。关于C语言关于人生。碰壁,碰壁,碰多了就会学会。也许真的就是那最后的坚持铸就了程序的结果。更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。这个学生成绩管理系

17、统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。通过对数据结构的课程设计,我了解并发现了很多调试程序的方法,而且懂得了如何处理错误的方法。对C语言的使用得到了进一步的提高。针对数据结构的书本知识得到了进一步的巩固,具体化就是加深了我对线性表的结构的理解查找的方法,数的排序等。对程序的深层理解,清楚程序中每一步的功能,在程序的运行中是十分重要的,一个好的结构在运行中能够充分的发挥程序的功能。结构设计的合理性决定了这个程序的价值。在今后的学习中我要注意

18、这方面,使得我的编程能力能有进一步的提高。经历了这次课程设计,不仅对我的学习提供了帮助,而且在意志力方面也得到了锻炼。经过上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在

19、实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机没有足够的耐力和信心就很难坚持对课程设计每一步的顺利进行。相信这次的课程设计为我以后使用计算机打了一个小小的开头,这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验!。我发现现在对于C语言我很感兴趣。课程设计这一周我花了不少时间,流了不少汗水。这说明了一个道理:没有付出就没有收获!八.附录 1源程序#include stdio.h#include string.h#include conio.hint N=0;struct stu int num; /*学号*/ char name10; /*姓名*/

20、 int eng; /*英语*/ int mat; /*数学*/ int com; /*计算机*/ int phy; /*物理*/ int sum; /*总分*/ s20;void Re_file() FILE *fp; fp=fopen(G:bjcjk.txt,r); while( fscanf(fp,%dn%sn%dn%dn%dn%dn%dn,&sN.num,sN.name,&sN.eng,&sN.mat,&sN.com,&sN.phy,&sN.sum)!=EOF) N+; fclose(fp); void Wr_file()int i; FILE *fp; fp=fopen(G:nwej

21、ck.txt,w); for(i=0;iN;i+) fprintf(fp,%dn%sn%dn%dn%dn%dn%dn,si.num,si.name,si.eng,si.mat,,si.phy,si.sum); fclose(fp);void Disp() /*显示模块*/int i;float ave20;printf(n);printf(学号 姓名 英语 数学 计算机 物理 总分 平均分n);for(i=0;iN;i+)avei=(float)si.sum/4;printf(%-7d%-15s%-6d%-6d%-8d%-6d%-8d%-8f%,si.num,si.name,si.eng,si

22、.mat,,si.phy,si.sum,avei);printf(n);printf(n);void Appe() /*追加模块*/ int i,num,j=0;printf(Input the number of the student:n);scanf(%d,&num);for(i=0;iN;i+)if(num=si.num)j=1;break;if(j=1)printf(Error!n);if(j=0)i=N;si.num=num;printf(Input the name of the student:n);scanf(%s,si.name);printf(Input the Engl

23、ish score of the student:n);scanf(%d,&si.eng);printf(Input the math score of the student:n);scanf(%d,&si.mat);printf(Input the computer score of the student:n);scanf(%d,&);printf(Input the physics score of the student:n);scanf(%d,&si.phy);si.sum=si.eng+si.mat++si.phy;N=N+1;void Modi() /*修改模块*/ int n

24、umber,i,neng,nmat,ncom,nphy,t,j=0;printf(Input the error number of the student:n);scanf(%d,&number);for(i=0;iN;i+)if(si.num=number)j=1;break;if(j=1)printf(Input the new English score of the student:n);scanf(%d,&neng);t=si.eng;si.eng=neng;neng=t;printf(Input the new math score of the student:n);scanf

25、(%d,&nmat);t=si.mat;si.mat=nmat;nmat=t;printf(Input the new computer score of the student:n);scanf(%d,&ncom);t=;=ncom;ncom=t;printf(Input the new physics score of the student:n);scanf(%d,&nphy);t=si.phy;si.phy=nphy;nphy=t;si.sum=si.eng+si.mat++si.phy;if(j=0)printf(Error!n);void Dele() /*删除模块*/ int n

26、umber,i,j=0;struct stu t;printf(Input the number of the student:n);scanf(%d,&number);for(i=0;iN;i+)if(si.num=number)j=1;break;if(j=1)for(;iN;i+)t=si+1;si+1=si;si=t;N=N-1;if(j=0)printf(Error!n);void Query() /*查询模块*/ int number,i,j=0;float ave;printf(Input the number of the student:n);scanf(%d,&number

27、);for(i=0;iN;i+)if(si.num=number)j=1;break;if(j=1)printf(学号 姓名 英语 数学 计算机 物理 总分 平均分n);ave=(float)si.sum/4;printf(%-7d%-15s%-6d%-6d%-8d%-6d%-8d%-8f%,si.num,si.name,si.eng,si.mat,,si.phy,si.sum,ave);if(j=0)printf(Error!n);void Sort() /*排序*/ int i,j;struct stu t2;float ave20,t1;for(i=0;iN;i+)avei=(float

28、)si.sum/4;for(j=0;jN-1;j+)for(i=0;iN-j-1;i+)if(aveiavei+1)t2=si+1;si+1=si;si=t2;t1=avei+1;avei+1=avei;avei=t1;void Quit() /*退出*/ printf( * Thank you bye * n); void main() int sele; Re_file(); sele=1; while(sele) void clrscr(); printf(nn); printf( *n); printf( * *n); printf( * 1:Disp 2:Appe *n); prin

29、tf( * *n); printf( * 3:Modi 4:Dele *n); printf( * *n); printf( * 5:Query 6:Sort *n); printf( * *n); printf( * 7.Quit *n); printf( * *n); printf( *n); printf(nnInput your selection: ); scanf(%d,&sele); switch(sele) case 1:Disp();break; case 2:Appe();Disp();break; case 3:Modi();Disp();break; case 4:De

30、le();Disp();break; case 5:Query();break; case 6:Sort();Disp(); break; case 7:Quit(); sele=0;break; printf(nnPress any key to continuen); getch(); Wr_file(); 2参考书目C语言设计(第三版) 潭浩强著 清华大学出版社C语言程序设计 杨路明著 北京邮电大学出版社C语言程序设计案例分析 人民邮电出版社 C语言实例解析精粹 人民邮电出版社C语言程序案例分析 人民邮电出版社计算机与通信学院课程设计评分表课题名称:班级成绩管理系统 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: (注:1此页附在课程设计报告之后;2综合成绩按优、良、中、及格和不及格五级评定。)专心-专注-专业

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档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