C语言课程设计报告-班级成绩管理系统_第1页
C语言课程设计报告-班级成绩管理系统_第2页
C语言课程设计报告-班级成绩管理系统_第3页
免费预览已结束,剩余25页可下载查看

下载本文档

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

文档简介

1、.目录第一章绪论-第二章需求分析-2.1程序的功能-2.2输入输出的要求-第三章概要设计-3.1程序的模块组成-3.2学生信息结构数组-3.3各个程序的功能介绍-第四章详细设计-4.1总流程图.-4.2统计函数流程图-第五章测试-5.1系统调试-5.2结果分析-第六章使用说明-第七章总结-附录-评分表-.第一章:绪论一.成绩管理系统的背景分析:当今时代是飞速发展的信息时代 , 在各行各业中离不开信息处理 , 正是计算机被广泛应用于信息管理系统的环境 . 计算机的最大好处在于利用它能够进行信息管理 . 使用计算机进行信息控制 , 不仅提高了工作效率 , 而且大大的提高了其安全性 . 尤其对于复杂

2、的信息管理 , 计算机能够充分发挥它的优越性 .随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能在人类社会的各个领域并发挥着越来越重要的作用. 学生成绩管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生成绩等信息的添加,修改,删除,查询,留言等操作,同时一样的方面学生对自己各科成绩查询,学习的交流.二开发学生成绩管理的必要性开发一个学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高了办学效益和现代化水平.为广大教师和学生提高工作效率,实现学生成绩信息管理工作流程的系统化,规范化和自动化.现在我国的大中专院校的学生成绩档案管理水平普遍都不是很高,有的还停留在全用纸介质

3、基础上,这种管理方式已不能适应时代的发展,社会的需求,因为它浪费了大量的人力物力,也存在着许多不足的因素.在今天信息时代这种传统的管理方法必然会被计算机为基础的信息管理系统所代替.一个高效的学生成绩管理系统可以存储历届的学生成绩档案,不需要大量的人力,只需要几名专门录入员即可操作系统,节省大量人力,可以迅速查到所需信息,高效,安全,学生在能方便的查看自己的成 绩 .三 .课程设计内容问题描述:一个有 N个学生的班级,每个学生有 M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。.功能要求:、本系统采用一个结构体数组, 每个数据的结构应当包括: 学号、姓名、 M门课程名称

4、。、本系统显示这样的菜单:请选择系统功能项:a、成绩录入b、成绩显示c、成绩保存d、成绩排序e、成绩修改(要求先输入密码)f 、成绩统计、显示每门课程成绩最高的学生的基本信息、显示每门课程的平均成绩g、退出系统、执行一个具体的功能之后,程序将重新显示菜单。、将学生成绩保存到文件中。算法提示:、数据结构:结构体类型数组。、数据库结构:下表构成该系统的基本数据库。姓名学号课程名称 1课程名称 2charCharfloatfloat测试数据:学生人数 N=10课程门数 M=4课程名:数学、语文、英语、政治其它该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。四 .课程设计要求及分组安排

5、。1. 课程设计要求.1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计报告 5000 字以上,含程序设计说明、用户使用说明,系统的功能框图、流程图、源程序清单等。5)上机演示。6)每个学生在规定的时间内独自完成相关课题的 C 源程序编写,调整和运行。源程序及编译生成各文件均保存在软盘中;7)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.8)按任务书的要求,按附录的要求编写课程设计报告 (Word文档格式)。并用 A4的复印纸打印并装订。2. 分组及安排所选题目(共 8 题)根据学生学号顺序选课题号,四个人一道题,相邻四个学号的同学选同一道题, 32 号

6、以后的同学按学号每人选一题。如你的学号为 15,则所选题目号为:第四题。3成绩评定程序设计方案是否合理;程序设计是否正确;调试结果; 设计说明书的质量高低;答辩时回答问题情况;课程设计周表现情况;总评成绩记入 “课程设计成绩评分表”。五 . 进度安排第 一 周 星期四 :课题讲解,查阅资料。第 二 周 星期一 :总体设计,详细设计。星期二 :编程,上机调试,修改程序。星期三:上机调试,完善程序。星期四:上机调试,完善程序。星期五:答辩。星期六星期天:撰写课程设计报告。.第二章:系统需求分析1程序的功能:对一个有 N 个学生的班级, 每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、

7、排序、保存等操作的管理。本系统采用一个包含 N个结构的数组,每个数据结构应当包括:学号、姓名、 M个课程名称。2. 输入输出要求 :在菜单选项中 1-7, 选择功能项 , 进行对应选项的函数调用.输入 1, 输入学生的基本信息存入磁盘文件中;输入 2, 输出已存盘的学生信息;输入 3, 输出用户所要选择科目的提问 , 输入科目后输出该科目一排好的学生成绩;输入 4, 修改功能 , 输入密码 . 错误输出是否继续输入密码 . 正确则逐个输出是否想要修改学生信息;输入 5, 输出三项功能的介绍 , 输入你的选择后输出实现的结果;每执行一个具体的程序后都要重新显示菜单。.第三章:系统概要设计1程序的

8、模块组成第一个模块:先定义好一些必要的全局变量以及调用的函数和结构体数组。第二个模块:设计一个菜单函数menu(); 实现能供用户选择功能项。第三个模块:用 enter()函数实现成绩的输入。第四个模块:用 save() 函数实现成绩的保存。第五个模块:用 print()函数实现成绩输出。第六个模块:用 cort()函数实现成绩排序功能。第七个模块:用 modify() 函数实现成绩修改功能。第八个模块:用count()函数实现成绩统计功能。2. 学生信息结构数组struct stuchar name20;int num;int scoreM;3. 各个程序的功能介绍1:为便于用户使用,先定义

9、一个常数 N表示人数,学生信息的结构体数组,以及调用功能项的函数。2:在menu()函数中,用 switch 来选择要执行的功能项用 do while 实现每种具体功能后能返回菜单。3:Enter() 函数,用 scanf 依次输入学生信息, 在输入多门成绩成绩时, 用 for 循环来实现,结尾调用 save() 函数保存。4:Print ()函数中为使界面美观对学生成绩用 %5d输出,且用换行实现,学生信息整齐排列。5:Save ()函数使用文件保存。6:Cort ()函数先定义 choice1, 输出想要排序的 科目的 序号,用选择排序法实现函数学生成绩的排序。7:Modify ()函数,

10、先定义好一个密码以及 flag=0 ;如果输入的密码错误则 flag=1, 用 do .while 实现是否重新输入密码,密码准确后调用 modi()函数,实现修改功能。8:Count ()函数用 menu1函数实现一个菜单功能。用 switch 实现,用户选择想执行的功能,从而调用 Show1() Show2() Show3();.第四章:系统详细设计1总流程图开始Main()Choice 函数7退出程序Choice123456enter()print()save()sort()modify ()count()运行程序.2. 统计函数流程图开始调用 menu1 函数输入 choice11调用

11、 show1 函 数输入选择的科 目I=0I=i+1I<N输 出排 序成绩sn.scorei>sn+结束1.scoreTemp=si.scoresn.scorei=sn+1.scorSi+1.scoren=tem3choice1返回函数2调用 show2 函J=0J=j+1I=0;sum=0I=i+1I<NSum=sum+si.sSum=sum+si.sccorejorej输出平均成绩结束.第五章:测试1系统调试1: 在 enter() 函数中对学生成绩的输入用 scanf( “%d”,s); 当输入一门成绩后 就 会 跳 回 , 使 接 下 来 的 程 序 无 法 运 行

12、, 改 为 for(j=1;j<=M;j+)scanf( “ %d”,&si.scorej);将错误解决 .2: 在 enter 函数中 , 输入姓名用 scanf( “%s”,&);错误 , 在 scanf 函数中的输入项如果是字符数组名代表该数组的起始地址. 则应改为scanf( “ %d”,);3: 在运行 print ()函数时,第四门课显示出来的分数并非输入项:错误,在定义时将 j=1 ,应改为 j=0 。4: 学生成绩定义为浮点型, 但与 scanf 连接不起来。是 由于所使用的系统不支持该项操作。5: 在 count( ) 函数中

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

14、printf("1: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");选择 <1>. 输入选择的科目用标记法找出成绩最高的的学生则输出其基本信息 .

15、选择 <2>. 用 for 循环 , 先求出了每门的总成绩再除以人数的到平均成绩用一个数组接收 . 再用循环则的到结果 .选择 <3>. 先定义了一个数组 bM. 用循环如果出现超过平均成绩的人就自增一次 , 接收到 bM 中, 用循环输出 bM 则得到每门超过平均成绩的人数 .5: 在 modify( ) 函数中,当输入一个错误的密码时会出现死循环,因为跳出的 位置错误了第六章:该系统使用说明1运行时进入主界面, 系统根据输入的数字选项来调用相应的函数。主要实现 “功能选择 ”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。以下为该介面;.2

16、. 当录入完成输入显示学生成绩功能时,运行结果如下图:.3. 当输入输入成绩统计功能时,运行结果如下图:.3. 成绩修改时需要输入密码才能进行 , 密码错误时不能进行该操作,只有输入正确的密码才能运行,运行结果如下图:.第七章:总结不经一番寒彻骨,哪得梅花扑鼻香。一周的 C语言课程设计已接近尾声了,现在回想起来真是五味俱全,从开始的懵懂无知到现在做出一本挺有厚度的资料,我不但实践了课本的知识, 还编出小程序,虽然很多人帮了我的忙, 仍旧感觉自己对 C 语言有了深入的了解, 还是有所成长,有所收获,在实践中,自己编程常会犯错误,并总结一些克服缺点的方法。深刻体会到程序设计中最重要的一部分不是编写

17、源程序, 而是调试过程。只有经过调试程序, 我们才能掌握正确的语法知识及把问题的解决方法用程序语言来表达。 在这段时间里, 我门匆匆忙忙为了它准备了很多, 其中不免有叹息声,但是总的来说让我么学到了很多,也懂得了很多,不仅在知识方面,还在有人的生活态度, 目标上。这次的 C 语言课程设计充分展示了 C 的魅力,用一些小小的实现合成一个系统从而融入到生活中解决实际问题。 同时也教会了我应站在用户的角度去设计程序。在此次设计过程中必不可少的出现了 很多问题,整体规划,模块与模块之间的调用与划分,标识符的使用。单词的拼写错误,结构体数组的使用,正确的使用循环的限制条件 . 。这些问题大多是因为平时上

18、课很少听讲的原因,以至于很多概念混淆不清 。这次的课程设计让我看到自己对 C 语言研究地少之又少。这次的班级成绩管理系统仍旧存在着不足。记得开始课设的第一天,我糊里糊涂地在机房呆了一个上午,对老师要求做的课程设计束手无策,上网搜了几个,但觉得没点意思,最后还是没有用。但相对于别人的做的系统, 我的好像简单多了。 但后来还是不得不去看书, 因为很多东西还牛毛都不知道。比如,做这个课程设计时候,最好使用链表,而链表我们还没有深入去熟悉它, 在说这个课程设计牵涉到前面我们学过的所有内容, 如,一些基本函数的运用,函数的调用及指针,结构体。内容多而复杂,如果没有对教材有个很好的了解掌握, 是不可能篇好

19、这个程序的。 我还在把书本重新温习了一遍,对照程序一一翻书, 试图找到一中解释来说明程序当中一些函数的作用和结构。接下来的一段时间里对这段程序进行了修改,经过东凑西凑,拼拼剪剪,终于可以在电脑上运行了, 但是它的功能不是很完善, 需要进一步完善。 后来怀着疑问去询问老师才发现其实很多问题都想比较简单的, 比如在运行程序时发现无论我怎么输入成绩, 第四门课的成绩都与我输入的分数不同, 自己也尝试用很多方法去解决, 最终不了了之。 同学看过以后告诉我是我在定义的时候把初始值定义错了。在修该以后, 再次运行便没看见以前的错误了。 后来有用这种方法把后面的两个警告解决了一个。在这个过程中,也试图自己独

20、立完成这个课程,偶尔发现书本上第11 章节里面,有介绍链表的使用, 而且书本上关于这个课程的一些基本函数功能在本章节都有说明,比如,链表的创建,节点的插入, 删除,一些基本信息的修改都有。.最终完成的课程的设计,马马虎虎的,完成的,但是还是受益匪浅。其中老师与同学的教导让我刻苦铭心。 不管其结果怎么样, 但至少这个过程, 让我们明白了,懂得了很多。虽然有点挫折很艰辛在里面,但是那都是短暂的,美丽的,它教会了我们不经过自己的努力, 是达不到预期的结果的, 不经过自己的实践操作,是体验不到其中的美妙的。不仅如此,还给了我们一个警告,对待学习不可马马虎虎,否则完成不了应有的任务, 得不到理想的结果,

21、 半途而废是失败的首要原因,不要什么事情都觉得满不在乎,踏踏实实的学习,踏踏实实的工作,拥有积极乐观的态度去应对一切挫折,最终会让你走想成功的前沿。因为: “胜利永远是属于永不放弃的人!.附录1.参考文献C程序设计(第三版)谭浩强著清华大学出版社C语言程序设计实用指南谭浩强著清华大学出版社 C 语言大学实用教程学习指导苏小红著电子工业出版社2. 源代码#include <stdio.h> /*I/O函数 */#include <string.h> /*字符串函数 */#define M 4 /*课程数 */#define NUM 3 /*人数 */#define NUL

22、L 0#include<stdio.h>#include<string.h>int 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 stu s,int n); /*排序 */void modify(struct stu s,int n); /*修改 */vo

23、id 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(student,NUM);break;case 5:modify(student,NUM);break;case 6:count(student,N

24、UM);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

25、语文 1英语 2政治 3n");printf("*n"); doprintf("nchoice1-7:");scanf("%d",&choice);while(choice<1|choice>7);return choice;void enter(struct stu s,int n)/成绩录入char c;int i=0;int j;doprintf("please enter the message:n");getchar();printf("enter name:n&q

26、uot;);scanf("%s",);.printf("enter num:n");scanf("%d",&si.num);printf("enter score:n");for(j=0;j<M;j+)scanf("%d",&si.scorej);printf("按 Y 继续录入,按N 结束录入 !");getchar();scanf("%c",&c);if(c!='Y'&&c!=

27、'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;elsefor (i=0;i&

28、lt;n;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;i<n;i+)printf("数学语文英语政治 n");printf("%s",);printf("%d",si.num);.for(j=0;j&l

29、t;M;j+)printf("%5d",si.scorej);printf("n");void sort(struct stu s,int n)/*排序 */int i,j,min,temp,k;printf("please choice subject 1-4:n");scanf("%d",&k);for(i=0;i<n-1;i+)min=i;for(j=i+1;j<n;j+)if(smin.scorek>sj.scorek)temp=smin.scorek;smin.scorek=sj

30、.scorek;sj.scorek=temp;printf("n The sorted numbers:n");for(i=0;i<n;i+)printf("%5d",si.scorek);printf("n");void count(struct stu 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:

31、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 tou choice1 (1-3):");scanf("%d",&choice1);while(choice1<

32、1|choice1>3);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;i<n1;i+)if(ac.scorek<ai.scorek)c=i;printf("%s,%d",,ac.num);for(j=0;j<M;j+)printf("%5d",ac.scorej);voi

33、d show2(struct stu a,int n1)int i,j,sum;for(j=0;j<M;j+)sum=0;for(i=0;i<n1;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,a)=0)break;elseprintf("You code is wrong,enter again?y

温馨提示

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

最新文档

评论

0/150

提交评论