班级成绩管理系统C语言课程设计_第1页
班级成绩管理系统C语言课程设计_第2页
班级成绩管理系统C语言课程设计_第3页
班级成绩管理系统C语言课程设计_第4页
班级成绩管理系统C语言课程设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计 报 告课程名称 c语言课程设计 课题名称 班级成绩管理系统 专 业 土木工程 班 级 1381 学 号 201313170102 姓 名 金潼 指导教师 王颖 2014年 12月 28日湖南工程学院课 程 设 计 任 务 书课程名称 c语言课程设计 课 题 班级成绩管理系统 专业班级 土木工程1381 学生姓名 金潼 学 号 201313170102 指导老师 王颖 审 批 王颖 任务书下达日期 2014年 12月 10日任务完成日期 2014年 12月 28日目录前 言- 2 -课程设计报告规范- 3 -第一章 绪论- 4 -1.1 课程背景- 4 -1.2 本文所作工作-

2、4 -第二章 需求分析- 4 -第三章 总体设计- 5 -3.1 文字描述- 5 -3.1.1成绩输入- 5 -3.1.2 成绩查询- 5 -3.1.3 成绩修改- 5 -3.1.4 成绩统计- 5 -3.1.5 成绩查看- 5 -3.1.6 成绩保存- 6 -3.1.7 成绩添加- 6 -3.1.8 成绩删除- 6 -3.1.9 退出系统- 6 -3.2 模板划分图- 6 -3.2.1 总层次图- 7 -3.2.2 基本总流程图- 7 -3.3 功能介绍图- 8 -3.3.1 成绩查询流程图- 8 -3.3.2 成绩添加功能- 8 -第四章 详细设计- 8 -4.1 系统模块函数- 8 -4

3、.1.1 模块函数组成- 8 -4.1.2 模块函数介绍- 9 -4.2学生信息数组- 9 -第五章 测试- 10 -5.1 测试图展示- 10 -5.2 系统调试- 14 -5.3 分析结果- 14 -第六章 使用说明- 14 -第七章 总结- 15 -附1:源程序代码- 16 -附2:参考文献- 31 -计算机与通信学院课程设计评分表- 32 -前 言c语言程序设计课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,课程

4、设计的课题比平时的习题复杂得多,也更接近实际。课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。学生可任选其中一题进行设计,设计完毕写出课程设计报告,用a4纸打印成册;并将课程设计报告与源程序存盘。学习委员将课程设计报告与磁盘收齐后交指导老师。一、目的全面熟悉、掌握c语言基本知识,掌握c程序设计中的顺序、分支、循环三种结构及数组、函数和c语言基本图形编

5、程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。二、设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。1. 设计正确,方案合理。2. 界面友好,使用方便。3. 程序精炼,结构清晰。4. 设计报告5000字以上,含程序设计说明,用户使

6、用说明,源程序清单及程序框图。5. 上机演示。6. 按学号顺序选课题号,并在规定的时间内独自完成相关课题的c源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;7. 按本任务书的要求,按附录的要求编写课程设计报告(word文档格式)。并用a4的复印纸打印并装订; 8. 在2014年6月30日之前,请各班学习委员收齐课程设计报告和源程序交王颖老师 ,联系电话三、进度安排第一周 星期四: 课题讲解,查阅资料第二周星期一: 总体设计,详细设计星期二: 编程,上机调试、修改程序星期三:上机调试、完善程序星期四:上机调试、完善程序星期五: 答辩星期六-星期天:撰写课程

7、设计报告课程设计报告规范一、 需求分析1、程序的功能。2、输入输出的要求。二、 概要设计1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。2、课题的总体数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。三、 详细设计1、采用c语言定义相关的数据类型。2、写出各模块的类c码算法。3、画出函数的调用关系图。四、 调试分析以及设计体会1、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。2、程序调试中遇到的问题以及解决问题的方法。3、课程设计过程经验教训、心得体会。五、 使用说明用户使用手册

8、:说明如何使用你编写的程序,详细列出每一步的操作步骤。六、 书写格式1、 设计报告要求用a4纸打印成册:2、 标题和正文要求见附13、 封面格式如下页。七、 附录1、参考书目2、源程序清单(带注释)第一章 绪论1.1 课程背景现代社会是飞速发展的信息社会,各行各业皆离不开信息管理与信息处理,正是计算机被广泛应用于信息管理系统的环境。计算机的最大优点在于利用它的信息管理,使用计算机进行信息控制。不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。而c语言是一门高级计算机编程语言,设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码

9、以及不需要任何运行环境支持便能运行的编程语言。c语言也很适合搭配汇编语言来使用(往往可以通过内联汇编语言或与汇编语言目标文件一起连接。对于任何一种操作系统环境。尽管c语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的c语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称mcu)以及超级电脑等作业平台。本程序可以在短时间内得到总成绩并且得到相应的排名,节省时间。在多名同学参加多门科目考试时很便捷,只要考试成绩出来,输入电脑就可以在短时间内得到总成绩,并知道了某学生在班级的排名,班级的最高分与最底分的情况以及某门课程的平均分,提高了工作效率。1.2

10、 本文所作工作与同组同学一起审阅题目,认真分析该系统需要进行哪些步骤,如何操作,在草稿纸上定好提纲,将功能逐个解析。遇到不懂或解决不了的地方,查阅书籍,参考文献,上网查资料和上机时向老师寻求帮助等。第二章 需求分析对一个有n名学生,每个学生有m门课程的班级做一个系统,实现对班级学生的成绩的管理。该系统应具备成绩输入,成绩查看,成绩查找,成绩统计,成绩排序,成绩修改,成绩添加,成绩删除,成绩保存,退出程序等功能。输入和显示的信息应该为学生的姓名,学号,各科成绩等内容。第三章 总体设计3.1 文字描述3.1.1成绩输入依次输入学生的姓名,学号和成绩,如果该生的信息在学生文件中没有记录,给出提示,完

11、善学生信息,然后保存至学生文件中。最后返回主菜单。数据类型定义如下:姓名 char,学号 char,课程名称 char,成绩char。3.1.2 成绩查询打开学生文件或输入相关学生信息后,可以按照学生的“学号”查询成绩,显示该名学生的成绩与信息;如果查询记录不存在,给出提示信息找不到该学生信息。然后任意键返回主菜单。3.1.3 成绩修改开打学生文件或输入相关学生信息后前,用户需输入密码,密码错误无权修改;密码正确则可以按照“学号”,查询信息,依次修改学生的“学号”,“姓名”,“语文成绩”,“数学成绩”,“英语成绩”和“计算机成绩”。先将修改后的学生信息预览,最后保存至学生文件。没有找到需要修改

12、的信息,给出提示,然后按任意键返回主菜单。3.1.4 成绩统计打开学生文件或输入相关学生信息后,对所有科目进行统计,然后显示学生的“学号”,“姓名”以及各科“成绩”最高分的同学的信息和显示该科的平均分。然后任意键返回主菜单。3.1.5 成绩查看打开学生文件或输入相关学生信息后,按“科目名次”查询,进行“排序;如果查询信息不存在,给出提示。然后任意键返回主菜单。3.1.6 成绩保存其他功能的运行都需要从保存的学生文件中调用,对学生文件操作步骤后,利用指针与地址的作用,经过一系列操作,会将信息资料保存成.txt格式。然后任意键返回主菜单。3.1.7 成绩添加打开学生文件或输入相关学生信息发现遗漏的

13、学生后,输入遗漏学生人数,然后依次输入学生的“学号”,“姓名”,“语文成绩”,“数学成绩”,“英语成绩”和“计算机成绩”,然后任意键返回主菜单。3.1.8 成绩删除通过输入学生学号,然后显示该名同学信息,并提示是否删除。操作完成后任意键返回主菜单。3.1.9 退出系统每执行一个具体的功能,程序重新显示菜单;完成相关程序后,退出系统。如果此前没有进行“保存文件”步骤,给出提示是否保存成功,然后任意键返回主菜单。3.2 模板划分图班级成绩管理系统3.2.1 总层次图主界面菜单成绩查看成绩查询成绩修改保存文件成绩添加成绩删除成绩统计退出程序成绩输入学号查询 语文计算机 英语 数学find()ente

14、r()3.2.2 基本总流程图exit()modify()count()look()deleted()运行程序meunmainadd()save()3.3 功能介绍图主菜单n3.3.1 成绩查询流程图y显示信息是否找到返回输入学号主菜单输入学号,姓名,成绩输入新增人数3.3.2 成绩添加功能第四章 详细设计根据功能模块设计思路,主要功能模块的算法设计思路,班级内同学的相关信息应包括“学号”,“姓名”,“各科成绩”。此程序应具备“成绩输入”,“成绩查看”,“成绩查找”,“成绩统计”,“成绩排序”,“成绩修改”,“成绩添加”,“成绩删除”,“成绩保存”,“退出程序”等功能。详情如下:4.1 系统模

15、块函数4.1.1 模块函数组成01.主函数 void main()02.成绩输入函数 enter()03.成绩查询函数 find()04.成绩修改函数 modify()05.成绩统计函数 count()06.成绩察看函数 look()07.文件保存函数 save()08.成绩添加函数 add()09.成绩删除函数 deleted()10. 主界面函数 home()11.退出系统函数 exit()4.1.2 模块函数介绍01.menu():用switch执行功能选项;用do.while执行每种功能完成后返回菜单。02.enter():用scanf一一对应输入学生的信息;用for循环输入多门成绩;

16、最后用save()函数保存。(参考3.1.1)03.find():用于查询全班各科成绩,与学生姓名,学号,科目相对应。为了美观采用5%换行输出,使信息简洁明了。(参考3.1.2)04.modify():用于修改成绩或学生信息。定义好一个密码以及mm=0;如果密码错误mm=1,用do.while执行是否重新输入密码;密码正确获得修改信息的权限。(参考.1.3)05.count():调用一个menu1()执行菜单功能,用switch执行用户想进行的排序,调用paixu1(),paixu2(),再用menu()函数转回菜单。(参考3.1.4)06.look():定义choice1(),根据用户需要对

17、信息执行所需的排序(参考3.1.5)07.save():用于使用系统功能对学生文件产生变化后,保存学生文件。(参考3.1.6)4.2学生信息数组typedef struct studentchar number10;char name20;float scorem;float aver;stu;第五章 测试5.1 测试图展示图.1主界面。图.2菜单栏。图.3查看成绩。图.4查询栏。图.5平均成绩。图.6添加功能。图.7删除功能。图.8保存功能。5.2 系统调试01:在enter()函数中对学生成绩的输入用scanf(“%d”,s);当输入一门成绩后就会跳回,使接下来的程序无法运行,改为for(

18、j=1;j=m;j+) scanf(“%d”,&si.scorej);将错误解决。02:在enter函数中,输入姓名用scanf(“%s”,&);错误,在scanf函数中的输入项如果是字符数组名代表该数组的起始地址.则应改为scanf(“%d”,); 03:在运行find()函数时,第四门课显示出来的分数并非输入项:错误,在定义时将j=1,要改为j=0。04:学生成绩定义为浮点型,但与scanf连接不起来。是由于所使用的系统不支持该项操作。05:在count()函数中,paixu3();输出的人数比实际的多一人,因为b+:在循环结束之后会自增一次,则比实际的大一。5

19、.3 分析结果01:为了使调试程序简便,先定义班级的人数n为2人,编译连接后,显示出菜单桌面,先输入学生成绩保存起来。 2:选择2.在用循环输出学生的基本信息的最后加printf(“n”);,则输出学生的基本信息是每行显示一位同学的信息。3:选择5.修改函数中用getchar()来覆盖原有的,则就可输出修改的信息。4:在modify( )函数中,当输入一个错误的密码时会出现死循环,因为跳出的位置错误了。第六章 使用说明运行系统以后,主界面需要输入帐号和密码,分别为“jintong”,“123456”。进入菜单后,按“1”键进入“输入想添加的学生人数,相关信息与成绩”,按任意键返回主菜单;按“2

20、”键进入“查看全班学生的信息与成绩”功能,可以按任意键返回主菜单;按“3”键进入“按学号查询班级内某个同学的信息与成绩”功能,可以按任意键返回主菜单;按“4”键进入“查询班级平均分与各科平均分”功能,可以按任意键返回主菜单;按“5”键进入“按学号查看和修改班级内某个同学的信息和成绩”功能,可以按任意键返回主菜单;按“6”键进入“想添加的人数和相关学生信息与成绩”功能,可以按任意键返回主菜单;按“7”键进入“按学号查询到班级内某个同学的相关信息并提示是否删除改名学生信息”功能,可以按任意键返回主菜单;按“8”键进入“保存全班同学信息”功能;按“9”键退出程序。第七章 总结课程设计是培养学生综合运

21、用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。我的题目是班级成绩管理系统的设计,对于我们这些新手来说,这是很大的考验,我一千次一万次的问自己,怎么才能找到课堂所学与实际应用的最佳结合点?怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?怎样让自己的业余更靠近专业?怎样让自己的计划更具有序性,而不会忙无一用?机会是老师,学校,以及无数代教育工作者给的,而能力是自己的,耐性是需要的。经过自己的琢磨,还查阅

22、了很多书籍,才做到了心中有数,才了解了c语言课程设计的真正用意培养自学能力,养成程序编辑的好习惯。我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能

23、力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体等等。通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在郭老师的辛勤指导下,终于游逆而解。同时,在郭老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢。做完这个课程设计,我们的自信一下子提高了,我们也会写程序了;尽管对于有些人这种程序会很简单,可对于我们c语言初学者来说,已经很

24、不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在美妙啊!在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。没有了柳暗花明的一天,那么我怎么能说经受住了考验?

25、谢谢老师的那句话,她说:人力有所不能及,然而,人的精神是不会败倒的。我鼓起勇气,到处问,到处查资料,黄天不负有心人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。谢谢给我指点迷津的老师。附1:源程序代码#include#include#include#include#include#define n 20#define m 4typedef struct studentchar number10;char name20;float scorem;float aver;stu;stu stun;int n;voi

26、d enter();/输入void save();/保存void avergescore();/平均分void home();/主界面 void look();/查看void find();/查找void count();/统计void add();/添加void modify();/修改void deleted();/删除void menu();/菜单void exit();/退出void main()/主函数开始int i,k=0;char username15,pwd6;printf(nn);printf( tn);printf( t*n);printf( t* *n);printf(

27、t* 欢迎使用班级成绩管理系统 *n);printf( t* *n);printf( t* 湖南工程学院 *n);printf( t* *n);printf( t* 指导老师:王颖 *n);printf( t* *n);printf( t* 操作学生:金潼 *n);printf( t* *n);printf( t*n);printf( tn); for(i=0;i3;i+)printf(n请输入我的名字:); gets(username); printf(n请输入权限密码:); gets(pwd);if(strcmp(username,jintong)=0)&(strcmp(pwd,12345

28、6)=0) printf(n您已经成功登录n);k=1;for(i=0;i20;i+)printf(.);sleep(100);system(cls);home();break; elseprintf(n用户名或密码无效 请重新输入:n); continue;if(k=0)printf(n连续输入错误3次 将退出程序n);sleep(2000);exit(0);void home() /*功能选项调用*/int mm=0;menu();domm=1;switch(getch()case 1 : enter();break; /*成绩输入*/case 2 : look();break; /*成绩

29、查看*/case 3 : find();break; /*成绩查找*/case 4 : count();break; /*成绩统计*/case 5 : modify();break; /*成绩修改*/case 6 : add();break; /*成绩添加*/case 7 : deleted();break; /*成绩删除*/case 8 : save();break; /*成绩保存*/case 9 : exit(0); /*退出程序*/default : printf(输入有误n);printf(按任意键继续n);getch();menu();while (mm=1);void menu()

30、 /*进入菜单*/system(cls);printf(n);printf(n);printf(*欢迎进入学生成绩管理系统*n);printf( 菜单 n);printf( 1、成绩输入 n);printf( 2、成绩查看 n);printf( 3、成绩查询 n);printf( 4、成绩统计 n);printf( 5、成绩修改 n);printf( 6、成绩添加 n);printf( 7、成绩删除 n);printf( 8、成绩保存 n);printf( 9、退出系统 n);printf(*请选择相应的功能号(1-9):*n);void enter()/*输入信息和成绩功能*/int i,j

31、;system(cls);printf(输入班级学生人数:n);scanf(%d,&n);for(i=0;in;i+)printf(请输入学生%d的学号 姓名:n,i+1);scanf(%s%s,stui.number,);printf(请输入学生成绩:n);printf(语文t数学t英语t计算机n);for(j=0;jm;j+)scanf(%f,&stui.scorej);printf(成功输入n);void avergescore()/*计算平均分功能*/int i,j;for(i=0;in;i+)stui.aver=0;for(j=0;jm;j+)stui.aver+=

32、stui.scorej;stui.aver=stui.aver/m;void look()/*查看及排序功能*/int i,j,k;stu t;avergescore();system(cls);for(i=0;in-1;i+)for(k=i,j=i+1;jstuk.aver)k=j;if(k!=j)t=stuk;stuk=stui;stui=t;printf(名次t学号t姓名t语文t数学t英语t计算机t平均分n);for(i=0;in;i+)printf(%dt%st%st,i+1,stui.number,);for(j=0;jm;j+)printf(%4.2ft,stui

33、.scorej);printf(%4.2f,stui.aver);printf(n);void find()/*查找功能*/char a10;int i,j;system(cls);printf(请输入需查询的学生学号n);scanf(%s,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0)printf(名次t学号t姓名t语文t数学t英语t计算机t平均分n);printf(%dt%st%st,i+1,stui.number,);for(j=0;jm;j+)printf(%4.2ft,stui.scorej);printf(%4.2f,st

34、ui.aver);printf(n);break;elseprintf(未找到该学生信息n);void count()/*统计功能*/stu *p=stu;int i,j;float averm=0;float count=0.0,sum=0.0;system(cls);for(i=0;iaver;printf(班级平均分为:%4.2f分n下列依次为语文t数学t英语t计算机的平均分:n,sum/n);/*平均分计算*/for(i=0;im;i+)for(j=0;jn;j+)averi=averi+stuj.scorei/n;for(i=0;im;i+)printf(%fn,averi);pri

35、ntf(n);void modify()/*修改功能*/char a10;int i,j;system(cls);printf(请输入需要修改成绩的学生学号n);scanf(%s,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0)printf(名次t学号t姓名t语文t数学t英语t计算机t平均分n);printf(%dt%st%st,i+1,stui.number,);for(j=0;jm;j+)printf(%4.2ft,stui.scorej);printf(%4.2f,stui.aver);printf(n);printf(请重新输入该学生的学号 姓名:n);scanf(%s%s,stui.number,);printf(请重新输入学生成绩:n);printf(t语文t数学t英语t计算机n);for(j=0;jm;j+)scanf(%f,&stui.scorej);/*找到该学生成绩后进行修改,跳出for

温馨提示

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

最新文档

评论

0/150

提交评论