c语言课程设计学生成绩管理系统4.doc

上传人:文库蛋蛋多 文档编号:2384771 上传时间:2023-02-17 格式:DOC 页数:20 大小:224KB
返回 下载 相关 举报
c语言课程设计学生成绩管理系统4.doc_第1页
第1页 / 共20页
c语言课程设计学生成绩管理系统4.doc_第2页
第2页 / 共20页
c语言课程设计学生成绩管理系统4.doc_第3页
第3页 / 共20页
c语言课程设计学生成绩管理系统4.doc_第4页
第4页 / 共20页
c语言课程设计学生成绩管理系统4.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《c语言课程设计学生成绩管理系统4.doc》由会员分享,可在线阅读,更多相关《c语言课程设计学生成绩管理系统4.doc(20页珍藏版)》请在三一办公上搜索。

1、课程设计任务书一、课程设计的内容对学生信息(包括学号、数学、英语、计算机、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.每个教师都将各自班学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩员。假设,教师现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。二、课程设计的要求与数据1、用C语言实现系统;对学生信息(包括学号、数学、英语、C语言、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.是高等

2、学校教务管理的重要组成部分,学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:(1) 每一条记录包括一个学生的学号、姓名、3门课成绩(2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录的输入。)(3)、成绩信息显示浏览功能:完成全部学生记录的显示。(4)、查询功能:完成按姓名查找学生记录,并显示。(5)成绩信息的删除:按学号进行删除某学生的成绩.(6)、排序功能:按学生平均成绩进行排序。(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!三、课程设计应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分

3、析;(3)撰写课程设计报告。四、课程设计(论文)进程安排序号设计(论文)各阶段内容地点起止日期1审题、搜集资料综合楼6082编写算法并测试综合楼6083撰写课程设计报告综合楼608五、应收集的资料及主要参考文献1谭浩强. C程序设计(第三版) . 北京:清华大学出版社, 2005 2谭浩强. C程序设计题解与上机指导(第三版) . 北京:清华大学出版社, 20053谭浩强. C程序设计教程 北京:清华大学出版社, 20074谭浩强. C+程序设计 北京:清华大学出版社, 20045李春葆,张植民,肖忠付.C语言设计题典M.北京:清华大学出版社,2002发出任务书日期: 2010 年 6 月 9

4、 日 指导教师签名:计划完成日期: 2010 年 7 月 2 日 教学单位责任人签章:目 录一 总体设计(包含几大功能模块)1二 详细设计(各功能模块的具体实现算法流程图)5三 调试分析(包含各模块的测试用例,及测试结果)153.1源程序153.2调试与测试15四 总结15五 参考资料15 一 总体设计(包含几大功能模块) 1、成绩录入功能 2、成绩输出功能 3、成绩查询功能 4、删除模块 5、排序功能 6、统计功能 7、退出系统二、详细设计(各功能模块的具体实现算法流程图)2.1各函数的功能和实现1、输入初始的学生信息:输入信息包括学生的姓名、学号以及学生的成绩等相关信息;可用函数void

5、input(STUDENT *data, int *len)来实现此操作。 2、成绩输出模块:输出学生的信息以及成绩void output(STUDENT *data, int len):通过学生的姓名来查看学生的相关成绩,同时也可以分别通过caverage()、maverage()、eaverage()和comaverage()来输出成绩的平均分数、最高和最低分数。3、成绩查询模块:可用void find(STUDENT *data, int len)来实现。找到就输出此学生全部信息。4、删除模块:用函数void delete_item(STUDENT *data, int *len)来实现

6、5、排序模块:用函数void sort(STUDENT *data, int len)来实现6、统计功能能:用函数void stat(STUDENT *data, int len) 来实现7、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。 结束开始输出菜单根据菜单输入n的值选择程序输入退出输出保存查找排序统计插入删除三 调试分析(包含各模块的测试用例,及测试结果) 3.1源程序#include #include #include #define MAXN 35#define MAX_NAME 256typedef struct stud

7、ent /学生信息int no;char nameMAX_NAME;double english;double math;double Programming;double mark_ave;double mark_tot; STUDENT;/*-输入信息子程序-*/void input(STUDENT *data, int *len)int no;putchar(n);printf(%sn, 请输入新的记录,如果需要退出当前菜单请输入-1.);printf(%sn, 格式:n学号n);printf(%sn, 姓名 英语 数学 C语言);putchar(n);printf(如:n);print

8、f(5n);printf(黄宏业 100 100 100n);scanf(%d, &no);while(no != -1) data*len.no = no;scanf(%s %lf %lf %lf, data*len.name, &data*len.english, &data*len.math,&data*len.Programming);data*len.mark_ave=(data*len.english+data*len.math+data*len.Programming)/3.0;data*len.mark_tot=data*len.english+data*len.math+da

9、ta*len.Programming;(*len)+;scanf(%d, &no);/*-输出信息子程序-*/void output(STUDENT *data, int len) int i;system(cls); printf(%8s, 学号); printf(%8s, 姓名); printf(%8s, 英语); printf(%8s, 数学); printf(%10s, C语言); printf(%12s, 平均分); printf(%10s, 总分); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); for (i =

10、0; i len; i+) printf(%8d, datai.no); printf(%8s, datai.name); printf(%8.1lf, datai.english); printf(%8.1lf, datai.math); printf(%10.1lf, datai.Programming); printf(%12.1lf, datai.mark_ave); printf(%10.1lf, datai.mark_tot); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); printf(按回车键继续.); get

11、char(); getchar();/*-排序子程序-*/void sort(STUDENT *data, int len) int i,j,k; STUDENT temp; for (i=0; ilen-1; i+) for (k=i, j=i+1; j dataj.mark_ave) k=j;if (k != i) temp = datai;datai = datak;datak = temp; /*-搜索子程序-*/void find(STUDENT *data, int len) int find_no, result ; int i;lab: result=0; printf(%sn

12、, 请输入需要查找的学生的学号,退出当前菜单请输入 -1.); scanf(%d, &find_no); if (find_no = -1) return; /*exit the fine sub program*/ while( dataresult.no != find_no & result = len ) printf(%sn, 未查询到相关信息); goto lab; else system(cls); printf(%sn, 查询信息如下:); for (i =0; i 80; i+) putchar(=); putchar(n); printf(%8s, 学号); printf(

13、%8s, 姓名); printf(%8s, 英语); printf(%8s, 数学); printf(%10s, C语言); printf(%12s, 平均分); printf(%10s, 总分); putchar(n); printf(%8d, dataresult.no); printf(%8s, dataresult.name); printf(%8.1lf, dataresult.english); printf(%8.1lf, dataresult.math); printf(%10.1lf, dataresult.Programming); printf(%12.1lf, data

14、result.mark_ave); printf(%10.1lf, dataresult.mark_tot); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); goto lab; /*-插入子程序-*/void insert(STUDENT *data, int *len) int no, pos;double english, math, Programming, mark_ave, mark_tot;int i; char nameMAX_NAME;lab: printf(%sn, 输入新的记录,退出当前菜单请输入-1.);

15、 printf(%sn, 格式:学号); printf(%sn, 姓名 英语 数学 C语言); scanf(%d, &no); if (no = -1) return; data*len.no = no; scanf(%s %lf %lf %lf, name, &english, &math, &Programming); mark_ave=(english+math+Programming)/3.0; mark_tot=english+math+Programming; pos = 0; while (datapos.mark_ave mark_ave) & (pos = pos; i-)

16、datai+1 = datai; datapos.no = no; strcpy(datapos.name, name); datapos.english = english; datapos.math = math; datapos.Programming = Programming; datapos.mark_ave = mark_ave; datapos.mark_tot = mark_tot; (*len)+; goto lab;/*-删除子程序-*/void delete_item(STUDENT *data, int *len) int no, i, pos;lab: pos=0;

17、 printf(%sn, 输入需要删除的学生的学号,退出当前菜单请输入-1.); scanf(%d, &no); if (no = -1) return; while( (datapos.no != no) & (pos = *len) printf(%sn, 未找到需要删除的学生); goto lab; else for (i = pos+1;i *len; i+) datai-1 = datai; *len = *len -1; if (*len = 0) printf(%sn, 没有任何记录,请按回车键返回.); getchar(); getchar(); return; goto la

18、b; /*-统计子程序-*/void stat(STUDENT *data, int len) int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0; int i; for (i = 0;i len; i+) if (datai.mark_ave =59) no_59+; else if (datai.mark_ave =69) no_69+;else if (datai.mark_ave =79) no_79+;else if (datai.mark_ave = 89) no_89+;else no_100+; system(cls); for (

19、i =0; i 80; i+) putchar(=);putchar(n); printf(%10s, 分数); printf(%10s, 0-59); printf(%10s, 60-69); printf(%10s, 70-79); printf(%10s, 80-89); printf(%10s, 90-100); putchar(n); putchar(n); printf(%10s, 学生); printf(%10d, no_59); printf(%10d, no_69); printf(%10d, no_79); printf(%10d, no_89); printf(%10d,

20、 no_100); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); printf(按回车键返回); getchar(); getchar();/*-显示信息子程序-*/void paint() int i;system(cls); printf(%55sn, 学生管理系统n); printf( 制作者: 09级01班 n); for (i = 0; i 80; i+) putchar(=); putchar(n); printf( 1 输入信息 2 输出信息n); printf( 3 按平均分排序 4 按学号查找n); prin

21、tf( 5 插入 6 按学号删除n); printf( 7 按平均分输出统计信息 8 保存到文件n); printf( 0 退出n);for (i = 0; i= 79; i+) putchar(=); putchar(n); printf(%sn, 请输入各操作对应的序号:);void save(STUDENT *data, int len)/将数据保存到文件int i;FILE *fp;fp=fopen(成绩统计表.txt,w);fprintf(fp,%8s, 学号); fprintf(fp,%8s, 姓名); fprintf(fp,%8s, 英语); fprintf(fp,%8s, 数学

22、); fprintf(fp,%10s, C语言); fprintf(fp,%12s, 平均分); fprintf(fp,%10sn, 总分); fprintf(fp,=n); putchar(n); for (i = 0; i len; i+) fprintf(fp,%8d, datai.no); fprintf(fp,%8s, datai.name); fprintf(fp,%8.1lf, datai.english); fprintf(fp,%8.1lf, datai.math); fprintf(fp,%10.1lf, datai.Programming); fprintf(fp,%12

23、.1lf, datai.mark_ave); fprintf(fp,%10.1lfn, datai.mark_tot); fprintf(fp,=n);fclose(fp);printf(文件已保存到成绩统计表.txt);getchar();getchar();/*-主程序-*/void main() STUDENT dataMAXN; int len = 0; char ctrl_ch; paint(); scanf(%c, &ctrl_ch); while (ctrl_ch != 0) switch(ctrl_ch) case 1:input(data, &len);break;case

24、2:output(data, len);break;case 3:sort(data, len);break;case 4:find(data, len);break;case 5:insert(data, &len);break;case 6:delete_item(data, &len);break;case 7:stat(data, len);break;case 8:save(data, len);break;default:if (ctrl_ch != n) printf(%sn, 输入错误!);break; if (ctrl_ch != n) paint(); scanf(%c,

25、&ctrl_ch); 3.2调试与测试 3.2.1算法调试过程中出现的问题及解决方法-Configuration: 4 - Win32 Debug-Compiling.4.cppf:学习c语言ex14.cpp(288) : error C2065: MAXN : undeclared identifierf:学习c语言ex14.cpp(288) : error C2057: expected constant expressionf:学习c语言ex14.cpp(288) : error C2466: cannot allocate an array of constant size 0f:学习

26、c语言ex11.cpp(288) : error C2133: data : unknown size执行 cl.exe 时出错.1.obj - 1 error(s), 0 warning(s)解决方法:对MAXN进行定义,在第三行加入#define MAXN 353.2.2主要程序运行结果运行开始 选择1输入成绩选择2 输出成绩选择3按平均分排序 再按2输出成绩选择4查找(输入学号1)选择5插入新数据 选择6按学号删除(输入学号3)选择7按平均分输出统计信息选择8保存选择0退出 总 结由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设

27、计出来的菜单不是预想的那样,而是总个窗中出现混乱。解决的这个问题的办法是调整。一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从

28、理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识本次课程设计结束了,对于我的影响很大。我通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我知道自己哪些方面做得还不够。但我出总结出了一点点的经验如下:1、要对系统的功能和要求做出详细的分析,并合理分解任务。 2、把分解出来的子任务,做给一个相对独立的模块。3

29、、在设计一个模块之前,要简单构想一下总界面的显视情况。4、针对构想出来的界面进行程序的编写。心得体会通过这次课程设计,增加了我对软件技术的了解,虽然还不明确软件技术包含的具体内容,但从学习C语言这门课程开始,已发现程序设计的好处,他对我们数学的学习也有很大的帮助。在学习C语言的过程中也学到和巩固了许多计算机应用基础知识,对计算机的机体也有了一个较为详细的了解。在具体操作中对这学期所学的C语言的理论知识得到巩固加强,达到实训的目的,也发现自己的不足之处,为我问以后的c语言学习奠定了基础,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机操作的重要作用,特别是对数组和循环有了深刻

30、的理解。通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。三人行必有我师,遇到问题我们一起讨论,研究,错了再写,写了在改.经过多次的修改,调试,运行,添加,终于最后在大家的欢呼声中,完成了我的任务.虽说是累了点,但我也从中找到了自己的快乐,每当完成一个新的函数时,那心情是激动啊,这毕竟是自己弄出来的,同时也使我感受到了学习的快乐!生活上我们也同样如此,以这种精神对待生活,对待生命,我想,我们的人生会更美好,路是自己走出来的,也只有经过无数次的磨练,无数次地坚定我们的信心,锻炼我们的意志渐渐地使自己才能够使自己成熟起来,走出一片属于自己的天空。 2010 年 7 月 2 日教师评语 2010 年 7 月 2 日成绩及签名 2010 年 7 月 2 日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号