班级成绩管理系统C语言课程设计

上传人:仙*** 文档编号:78537123 上传时间:2022-04-21 格式:DOC 页数:25 大小:761.22KB
收藏 版权申诉 举报 下载
班级成绩管理系统C语言课程设计_第1页
第1页 / 共25页
班级成绩管理系统C语言课程设计_第2页
第2页 / 共25页
班级成绩管理系统C语言课程设计_第3页
第3页 / 共25页
资源描述:

《班级成绩管理系统C语言课程设计》由会员分享,可在线阅读,更多相关《班级成绩管理系统C语言课程设计(25页珍藏版)》请在装配图网上搜索。

1、 课 程 设 计 报 告课程名称 C语言程序设计 课题名称 班级成绩管理系统 专 业 机械设计制造及其自动化 班 级 0983班 学 号 200913090334 姓 名 指导教师 王颖 2010年6月30日湖南工程学院 课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 班级成绩管理系统 专业班级 机械设计0983 学生姓名 学 号 200913090334 指导老师 王颖 审 批 任务书下达日期 年 月 日任务完成日期 年 月 日目录第一章 绪论-第二章 需求分析- 2.1 程序的功能- 2.2 输入输出的要求-第三章 概要设计- 3.1程序的模块组成- 3.2学生信息结构数组-

2、3.3各个程序的功能介绍-第四章 详细设计- 4.1总流程图- 4.2统计函数流程图-第五章 测试- 5.1系统调试- 5.2结果分析-第六章 使用说明-第七章 总结-附录-评分表-第一章:绪论 一. 成绩管理系统的背景分析: 当今时代是飞速发展的信息时代,在各行各业中离不开信息处理, 正是计算机被广泛应用于信息管理系统的环境.计算机的最大好处在于利用它能够进行信息管理.使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性. 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能在人类社会的各个领域并发挥着越来越重要的作用

3、. 学生成绩管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生成绩等信息的添加,修改,删除,查询,留言等操作,同时一样的方面学生对自己各科成绩查询,学习的交流. 二开发学生成绩管理的必要性 开发一个学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高了办学效益和现代化水平.为广大教师和学生提高工作效率,实现学生成绩信息管理工作流程的系统化,规范化和自动化.现在我国的大中专院校的学生成绩档案管理水平普遍都不是很高,有的还停留在全用纸介质基础上,这种管理方式已不能适应时代的发展,社会的需求,因为它浪费了大量的人力物力,也存在着许多不足的因素.在今天信息时代这种传统的管理方法必然会

4、被计算机为基础的信息管理系统所代替.一个高效的学生成绩管理系统可以存储历届的学生成绩档案,不需要大量的人力,只需要几名专门录入员即可操作系统,节省大量人力,可以迅速查到所需信息,高效,安全,学生在能方便的查看自己的成绩.三.课程设计内容问题描述:一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。功能要求:、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。、本系统显示这样的菜单:请选择系统功能项:a、 成绩录入b、 成绩显示c、 成绩保存d、 成绩排序e、 成绩修改(要求先输入密码)f、 成绩统计、显示每门课程成

5、绩最高的学生的基本信息、显示每门课程的平均成绩g、 退出系统、执行一个具体的功能之后,程序将重新显示菜单。、将学生成绩保存到文件中。算法提示:、数据结构:结构体类型数组。、数据库结构:下表构成该系统的基本数据库。 姓名学号课程名称1课程名称2charCharfloatfloat 测试数据:学生人数N=10课程门数M=4课程名:数学、语文、英语、政治其它该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。四.课程设计要求及分组安排。 1. 课程设计要求1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计报告5000字以上,含程序设计说明、用户使用说明,系统

6、的功能框图、流程图、源程序清单等。5)上机演示。6)每个学生在规定的时间内独自完成相关课题的C源程序编写,调整和运行。源程序及编译生成各文件均保存在软盘中;7)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.8)按任务书的要求,按附录的要求编写课程设计报告(Word文档格式)。并用A4的复印纸打印并装订。2.分组及安排所选题目(共8题)根据学生学号顺序选课题号,四个人一道题,相邻四个学号的同学选同一道题,32号以后的同学按学号每人选一题。如你的学号为15,则所选题目号为:第四题。3成绩评定程序设计方案是否合理;程序设计是否正确;调试结果;设计说明书的质量高低;答辩时回答问题情况;课程设

7、计周表现情况;总评成绩记入“课程设计成绩评分表”。五. 进度安排第 一 周 星期四 :课题讲解,查阅资料。第 二 周 星期一 :总体设计,详细设计。 星期二 :编程,上机调试,修改程序。 星期三:上机调试,完善程序。星期四:上机调试,完善程序。星期五:答辩。星期六星期天:撰写课程设计报告。第二章:系统需求分析1程序的功能:对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。本系统采用一个包含N个结构的数组,每个数据结构应当包括:学号、姓名、M个课程名称。2. 输入输出要求:在菜单选项中1-7,选择功能项,进行对应选项的函数调用.输入1,输

8、入学生的基本信息存入磁盘文件中;输入2,输出已存盘的学生信息;输入3,输出用户所要选择科目的提问,输入科目后输出该科目一排好的学生成绩;输入4,修改功能,输入密码.错误输出是否继续输入密码.正确则逐个输出是否想要修改学生信息;输入5,输出三项功能的介绍,输入你的选择后输出实现的结果;每执行一个具体的程序后都要重新显示菜单。第三章:系统概要设计1程序的模块组成第一个模块:先定义好一些必要的全局变量以及调用的函数和结构体数组。第二个模块:设计一个菜单函数menu();实现能供用户选择功能项。第三个模块:用enter()函数实现成绩的输入。第四个模块:用save()函数实现成绩的保存。第五个模块:用

9、print()函数实现成绩输出。第六个模块:用cort()函数实现成绩排序功能。第七个模块:用modify()函数实现成绩修改功能。第八个模块:用count()函数实现成绩统计功能。2.学生信息结构数组 struct stuchar name20; int num; int scoreM;3.各个程序的功能介绍1:为便于用户使用,先定义一个常数N表示人数,学生信息的结构体数组,以及调用功能项的函数。2:在menu()函数中,用switch来选择要执行的功能项用dowhile实现每种具体功能后能返回菜单。3:Enter()函数,用scanf依次输入学生信息,在输入多门成绩成绩时,用for循环来实

10、现,结尾调用save()函数保存。4:Print()函数中为使界面美观对学生成绩用%5d输出,且用换行实现,学生信息整齐排列。5:Save()函数使用文件保存。6:Cort()函数先定义choice1,输出想要排序的 科目的 序号,用选择排序法实现函数学生成绩的排序。7:Modify()函数,先定义好 一个密码以及flag=0;如果输入的密码错误则flag=1,用do .while实现是否重新输入密码,密码准确后调用modi()函数,实现修改功能。 8:Count()函数用menu1函数实现一个菜单功能。用switch实现,用户选择想执行的功能,从而调用Show1()Show2()Show3(

11、);第四章:系统详细设计1总流程图开始Main()enter()print()save()sort()modify ()运行程序count()ChoiceChoice函数123456退出程序72.统计函数流程图开始调用menu1函数输入choice1choice1调用show1函数调用show2函数输入选择的科目J=0I=0I=i+1Isn+1.scoreiTemp=si.scorensn.scorei=sn+1.scoreiSi+1.scoren=tempJ=j+1I=0;sum=0 I=i+1INSum=sum+si.scorejSum=sum+si.scorej输出排序成绩输出平均成绩返

12、回函数123结束结束第五章:测试1系统调试1:在enter()函数中对学生成绩的输入用scanf(“%d”,s);当输入一门成绩后就会跳回,使接下来的程序无法运行,改为for(j=1;j=M;j+) scanf(“%d”,&si.scorej);将错误解决.2:在enter函数中,输入姓名用scanf(“%s”,&si.name);错误,在scanf函数中的输入项如果是字符数组名代表该数组的起始地址.则应改为scanf(“%d”,si.name);3:在运行print()函数时,第四门课显示出来的分数并非输入项:错误,在定义时将j=1,应改为j=0。 4:学生成绩定义为浮点型,但与scanf连

13、接不起来。是 由于所使用的系统不支持该项操作。5:在count( )函数中,show3( );输出的人数比 实际的多一人,因为b+:在循环结束之后会自增一次,则比 实际的大一。2. 结果分析1:为了使调试程序简便,先定义班级的人数N为3人,编译连接后,显示出菜单桌面,先输入学生成绩保存起来.2:选择2.在用循环输出学生的基本信息的最后加printf(“n”);,则输出学生的基本信息是每行显示一位同学的信息.3:选择5.修改函数中用getchar()来覆盖原有的,则就可输出修改的信息.4:选择6.用一个选择菜单int menu1()int choice1;printf(n*n);printf(1

14、:xian shi mei ke cheng ji zui gao de xue sheng xin xin);printf(2:xian shi mei ke ping jun cheng jin);printf(3:xian shi chao gou ping jun cheng ji de ren shun);printf(4:quitn);printf(*n);选择.输入选择的科目用标记法找出成绩最高的的学生则输出其基本信息.选择.用for循环,先求出了每门的总成绩再除以人数的到平均成绩用一个数组接收.再用循环则的到结果.选择.先定义了一个数组bM.用循环如果出现超过平均成绩的人就自增

15、一次,接收到bM中,用循环输出bM则得到每门超过平均成绩的人数.5:在modify( )函数中,当输入一个错误的密码时会出现死循环,因为跳出的 位置错误了第六章:该系统使用说明1运行时进入主界面,系统根据输入的数字选项来调用相应的函数。主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。以下为该介面;2.当录入完成输入显示学生成绩功能时,运行结果如下图:3. 当输入输入成绩统计功能时,运行结果如下图:3.成绩修改时需要输入密码才能进行,密码错误时不能进行该操作,只有输入正确的密码才能运行,运行结果如下图:第七章:总结 不经一番寒彻骨,哪得梅花扑鼻香。

16、一周的C语言课程设计已接近尾声了,现在回想起来真是五味俱全,从开始的懵懂无知到现在做出一本挺有厚度的资料,我不但实践了课本的知识,还编出小程序,虽然很多人帮了我的忙,仍旧感觉自己对C语言有了深入的了解,还是有所成长,有所收获,在实践中,自己编程常会犯错误,并总结一些克服缺点的方法。深刻体会到程序设计中最重要的一部分不是编写源程序,而是调试过程。只有经过调试程序,我们才能掌握正确的语法知识及把问题的解决方法用程序语言来表达。 在这段时间里,我门匆匆忙忙为了它准备了很多,其中不免有叹息声,但是总的来说让我么学到了很多,也懂得了很多,不仅在知识方面,还在有人的生活态度,目标上。这次的C语言课程设计充

17、分展示了C的魅力,用一些小小的实现合成一个系统从而融入到生活中解决实际问题。同时也教会了我应站在用户的角度去设计程序。在此次设计过程中必不可少的出现了 很多问题,整体规划,模块与模块之间的调用与划分,标识符的使用。单词的拼写错误,结构体数组的使用,正确的使用循环的限制条件.。这些问题大多是因为平时上课很少听讲的原因,以至于很多概念混淆不清 。这次的课程设计让我看到自己对C语言研究地少之又少。这次的班级成绩管理系统仍旧存在着不足。记得开始课设的第一天,我糊里糊涂地在机房呆了一个上午,对老师要求做的课程设计束手无策,上网搜了几个,但觉得没点意思,最后还是没有用。但相对于别人的做的系统,我的好像简单

18、多了。但后来还是不得不去看书,因为很多东西还牛毛都不知道。比如,做这个课程设计时候,最好使用链表,而链表我们还没有深入去熟悉它,在说这个课程设计牵涉到前面我们学过的所有内容,如,一些基本函数的运用,函数的调用及指针,结构体。内容多而复杂,如果没有对教材有个很好的了解掌握,是不可能篇好这个程序的。我还在把书本重新温习了一遍,对照程序一一翻书,试图找到一中解释来说明程序当中一些函数的作用和结构。接下来的一段时间里对这段程序进行了修改,经过东凑西凑,拼拼剪剪,终于可以在电脑上运行了,但是它的功能不是很完善,需要进一步完善。后来怀着疑问去询问老师才发现其实很多问题都想比较简单的,比如在运行程序时发现无

19、论我怎么输入成绩,第四门课的成绩都与我输入的分数不同,自己也尝试用很多方法去解决,最终不了了之。同学看过以后告诉我是我在定义的时候把初始值定义错了。在修该以后,再次运行便没看见以前的错误了。后来有用这种方法把后面的两个警告解决了一个。 在这个过程中,也试图自己独立完成这个课程,偶尔发现书本上第11章节里面,有介绍链表的使用,而且书本上关于这个课程的一些基本函数功能在本章节都有说明,比如,链表的创建,节点的插入,删除,一些基本信息的修改都有。 最终完成的课程的设计,马马虎虎的,完成的,但是还是受益匪浅。其中老师与同学的教导让我刻苦铭心。不管其结果怎么样,但至少这个过程,让我们明白了,懂得了很多。

20、虽然有点挫折很艰辛在里面,但是那都是短暂的,美丽的,它教会了我们不经过自己的努力,是达不到预期的结果的,不经过自己的实践操作,是体验不到其中的美妙的。不仅如此,还给了我们一个警告,对待学习不可马马虎虎,否则完成不了应有的任务,得不到理想的结果,半途而废是失败的首要原因,不要什么事情都觉得满不在乎,踏踏实实的学习,踏踏实实的工作,拥有积极乐观的态度去应对一切挫折,最终会让你走想成功的前沿。因为:“胜利永远是属于永不放弃的人!附录1. 参考文献C程序设计(第三版) 谭浩强 著 清华大学出版社C语言程序设计实用指南 谭浩强 著 清华大学出版社C语言大学实用教程学习指导 苏小红 著 电子工业出版社2.

21、 源代码#include /*I/O函数*/#include /*字符串函数*/#define M 4 /*课程数*/#define NUM 3 /*人数*/ #define NULL 0#include#includeint avarM;struct stuchar name20; int num; int scoreM; void enter(struct stu s,int n); /*进入*/ void print(struct stu s,int n); /*输入文件*/ void save(struct stu s,int n); /*保存文件*/ void sort(struct

22、 stu s,int n); /*排序*/ void modify(struct stu s,int n); /*修改*/ void count(struct stu s,int n); /*统计*/ int menu();void main()void clrscr(); struct stu studentNUM; for( ; ; ) switch(menu() case 1:enter(student,NUM);break; case 2:print(student,NUM);break; case 3:save(student,NUM);break; case 4:sort(stud

23、ent,NUM);break; case 5:modify(student,NUM);break; case 6:count(student,NUM);break; case 7:return; int menu()int choice;printf(n*级成绩管理*n);printf( 1 成绩录入n);printf( 2 成绩显示n);printf( 3 成绩保存n);printf( 4 成绩排序n);printf( 5 成绩修改n);printf( 6 成绩统计n);printf( 7 退出系统n);printf( 学生人数级 NUM 课程 数学0 语文1 英语2 政治3n);print

24、f(*n);doprintf(nchoice1-7:); scanf(%d,&choice);while(choice7);return choice;void enter(struct stu s,int n) /成绩录入char c;int i=0;int j;do printf(please enter the message:n);getchar(); printf(enter name:n); scanf(%s,si.name); printf(enter num:n); scanf(%d,&si.num);printf(enter score:n); for(j=0;jM;j+)s

25、canf(%d,&si.scorej);printf(按Y继续录入,按N结束录入!);getchar();scanf(%c,&c);if(c!=Y&c!=y) /可以选择是否继续录入break;+i;while(i!=n);void save(struct stu s,int n) /文件存储数据FILE *fp; int i; char save20; printf(enter the file name:); scanf(%s,save); /*输入选择项*/ if(fp=fopen(stu-list,wb)=NULL)printf(can not open filen); return;

26、 elsefor (i=0;in;i+) if(fwrite (&si,sizeof(struct stu),1,fp)!=1); printf(file write errorn); fclose(fp); printf(successn);void print (struct stu s,int n) /成绩显示int i,j; for(i=0;in;i+) printf( 数学 语文 英语 政治n);printf(%s,si.name); printf(%d,si.num); for(j=0;jM;j+) printf(%5d,si.scorej); printf(n);void sor

27、t(struct stu s,int n) /*排序*/int i,j,min,temp,k; printf(please choice subject 1-4:n); scanf(%d,&k); for(i=0;in-1;i+)min=i; for(j=i+1;jsj.scorek)temp=smin.scorek; smin.scorek=sj.scorek; sj.scorek=temp; printf(n The sorted numbers:n); for(i=0;in;i+) printf(%5d,si.scorek); printf(n);void count(struct st

28、u s,int n)void show1(struct stu a,int n1);void show2(struct stu a,int n1);int menu1();for( ; ;) switch(menu1() case 1:show1(s,n);break; case 2:show2(s,n);break; case 3:return;int menu1()int choice1;printf(n*n);printf(1:显示每科成绩最高的学生信息n);printf(2:显示每科平均成绩n);printf(3:退出n);printf(*n);do printf(n Enter to

29、u choice1 (1-3):);scanf(%d,&choice1);while(choice13);return choice1;void show1(struct stu a,int n1)int k,i,j,c=0; printf(please enter the subject num:); scanf(%d,&k); for(i=0;in1;i+) if(ac.scorekai.scorek) c=i; printf(%s,%d,ac.name,ac.num); for(j=0;jM;j+) printf(%5d,ac.scorej);void show2(struct stu

30、a,int n1)int i,j,sum; for(j=0;jM;j+)sum=0; for(i=0;in1;i+) sum=sum+ai.scorej; avarj=sum/n1; printf(The %d avarage is:%dn,j,avarj);void modify(struct stu s,int n)void modi(struct stu c,int n1); int flag=0; char a10,c,code10=1234a;/*密码*/ doprintf(please enter you code:n); scanf(%s,&a); if(strcmp(code,

31、a)=0)break; elseprintf(You code is wrong,enter again?ynn); scanf(%cn,&c); if(c=n|c=N)flag=1;break;while(1); if(flag=0) modi(s,n);void modi (struct stu c,int n1) int num,ch; int i,j; printf(please input modify No:); scanf(%d,&num ); getchar(); for(i=0;i=n1) printf(n list No %d studentn,ci.num); elsep

32、rintf(modify(y/n)?n); ch=getchar();getchar(); if(ch=y|ch=Y)printf(enter numn); scanf(%d,&ci.num); getchar(); printf(modify name(y/n)?n); / ch=getchar();getchar(); if(ch=y|ch=Y)printf(enter name:n); scanf(%s,ci.name); getchar(); printf(modify record(y/n)?n); ch=getchar();getchar(); if(ch=y|ch=Y)printf(enter record:n); for(j=0;jM;j+)scanf(%d,&ci.scorej); getchar();return;应用技术学院课程设计评分表课题名称: 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: (注:1此页附在课程设计报告最后一页;2综合成绩按优、良、中、及格和不及格五级评定。)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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