




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要利用所学过的C语言知识,采用结构化程序设计方法,设计一个学生成绩管理档案程序,该程序的主要功能为:0将表格初始化,1建立学生成绩表格,2从表中删除原有纪录,3显示单链表中所有记录,4按照姓名查找纪录,5计算所有学生的总分和均分,6插入纪录到表中,7复制文件,8将所有学生成绩排序,9分类合计,10退出。该系统功能完善,界面友好,短小经用,使用方便,即使是不熟悉计算机也可以自如的使用该系统。通过上机调试运行与模拟操作, 完成对学生成绩的管理, 减轻管理人员的劳动强度, 提高一个学校的自动化管理水平。关键词:学生成绩管理;结构化程序设计;调试运行;功能完善目录第一章概述1.1 项目背景1.2 工
2、作环境第二章系统分析2.1系统需求分析2.2系统功能分析2模块实现算法2进入主菜单。2建立学生表格2从表中删除原有纪录2显示单链表中所有记录2按照姓名查找纪录2计算所有学生的总分和均分2插入纪录到表中2复制文件将所有学生成绩排序分类合计:退出第三章总体设计软件描述设计方法软件结构文件及函数组成第五章使用说明第六章工作总结参考文献(参考书或论文或文章)附录源代码第一章概述现今已步入高速发展的时代,电脑技术发展日新月异,时代潮流也不断变革,竞争越发激烈,时间就是金钱,但是就是在一些琐碎的事上面浪费了大量的时间,例如查询资料之类.如果我们把浪费的时间用于其他方面,势必会有更大的收益.应此需求,为使广
3、大教师掌握更多的时间,相应的开发出此软件一学生成绩管理软件系统.而编写详细设计说明书是软件开发过程必不可少的部分,其目的是为了使开发人员在完成概要设计说明书的基础上完成概要设计规定的各项模块的具体实现的设计工作。本软件属于绿色软件,适合任何层次的用户,因此本说明书的预期读者范围相当广。项目背景一、软件名称学生成绩管理二、相关单位主要是学校用于学校的成绩管理工作环境A.一台586以上的微机及兼容B.内存16MB(最好32MEft存)C.VGA彩显一台第二章系统分析系统需求分析随着网络经济时代的到来,社会飞速的发展,人们的生活发生着日新月异的变化,高新技术正驱赶着人们生活的脚步,人们对工作生活的要
4、求也日益提高,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作,随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理,但手工管理具有效率底、,这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,用计算机对学校学生成绩进行管理已逐步取代了传统的管理方式。学生成绩查询系统对学校加强学生成绩管理有着极其重要的作用。由于各个大学都在持续扩招,学生的数量日益庞大,传统的手工成绩管理不仅工作量大,而且容易出现问题。从而需要对学生成绩管理等工作方面
5、提高精确度。经过我对学校情况和师生需求的的具体分析,初步设计了一套有关“学生成绩管理”的程序,希望可以帮助学校改善以往需求紧张的管理系统,为广大师生提供方便,节省时间,提高工作效率,从而树立良好的办学形象。学校具体需求分析学生:对各科成绩的查询及查看本班成绩排名。老师:输入并维护所教科目的学生成绩,计算本科的成绩排名、本科成绩在班上的排名。班主任:输入并维护本班的基本信息,对本班的各科成绩汇总,计算各科成绩的总分,排名,本班平均分等需求。输出学生的基本信息,各科的成绩及各科成绩的部分,各科成绩的排名,总分的排名情况。教务处:学校全体成员的信息管理,对考试科目,时间及对所考科目的编号等进行具体的
6、管理,并对任课老师,班主任等输入的信息进行存库,对学生的信息进行必要的维护,可打印学生的所有信息。系统功能分析在本章中,我使用模块等分析法进行系统功能分析。按任意键进合法用户进入各功能;2-1进入主菜单模块2.2.3I建立需失看格,簟法实现模式.如图2-2所示:返回主模块返回主模块2-2建立学生表格模块任意键返回主模块篇-33除扁有纪录模块返回主模块录任意键返回主模块返回主模块模块任意键返回主模块返回主模块2.2.4网表中留峻握有纪录模块,算法,如图2-3所示:返回主模块返回主模块返回主模块士任意键返回主模块本行 7 兀 j 录模块返回主模块返回主模块任意键返回主模块任意键返回主模块任意键返回
7、主模块录返回主模块返回主模块任意键返回主模块2-10分类合计模块0第三章总体设计3.1 软件描述该程序的主要功能为:0将表格初始化,1建立学生成绩表格,2从表中删除原有纪录,3显示单链表中所有记录,4按照姓名查找纪录,5计算所有学生的总分和均分,6插入纪录到表中,7复制文件,8将所有学生成绩排序,9分类合计,10退出。另外,该程序主要调用了:I/O函数(stdio.h),其他说明(stdib.h),字符串函数(string.h),屏幕操作函数(conio.h),内存操作函数(mem.h),字符操作函数(ctype.h),动就 8 星制模块返回主模块任意键返回主模块返回主模块态地址分配函数(al
8、loc.h),定义常数。本软件采用传统的软件开发生命周期的方法,采用自定向下,逐步求精的结构化的软件设计方法。3.3 软件结构根据以上模块可得到总体结构系统才层次图,如图3-1所示:3-1 总体结构系统层次图如表1-1所示:表 3-1 主要函数函数名功能Init()初始化函数Create()创建链表Delete(STUDENT*h)删除记录Print(STUDENT*h)显示所有记录Search(STUDENT*h查找学生成绩Computer(STUDENT*h)计算学生的总分和均分Insert(STUDENT*h)插入记录Copy()复制文件Sort(STUDENT*h)按姓名开头字母排序T
9、otal(STUDENT*h)分类合计Menu_select()主菜单函数1.显示内存动态记录数据函数函数原型:voidcreate()功能:显示内存里的记录参数:记录数组和记录条数要求:报告是否有记录及记录成绩内容.输入信息函数函数原型:intinputs(char*prompt,char*s,intcount)功能:添加记录参数:结构体数组.要求:如果内存已经存在记录.则将新记录追加在记录尾部,如果还没有建立记录链表,则建立链表并从尾部开始追加记录.删除记录函数函数原型:intdelete(STUDENT*h)功能:删除内存链表中的指定结点参数:记录数组和记录条数,成绩要求:给出相关信息.
10、按序号显示记录函数函数原型:voidprint(STUDENT*h)功能:根据用户需求输出记录要求:判断内存中记录的序号与输入的是否相等,如果相等则输出,否则关闭文件.查找函数函数原型:intsearch()功能:根据用户需要输出记录参数:记录数组和记录成绩以及姓名s要求:判断内存中记录的名字与输入的是否相等则提前结束.计算函数函数原型:intComputer(STUDENT*h)功能:根据用户需要计算总分和学生平均成绩参数:记录数和计算要求:内存中记录数进行相加和平均数运算.插入记录函数函数原型:intinsert(STUDENT*h)功能:根据用户指定将信息插入特定位置参数:结构体数组和记
11、录数要求:输入信息.复制文件函数函数原型:voidcopy()功能:复制记录要求:判断所要文件是否能打开,打不开则退出记录并复制,如果相等则输出,否,能打开则读出文件中.排序函数函数原型:voidsort(STUDENT*h)功能:将记录进行排序参数:结构体数组和记录数要求:比较内存中记录,判断大小并进行交换,交换后显示排序成功.分类合计函数函数原型:voidTotal(STUDENT*h)功能:分类存放参数:结构体数组和记录数要求:在内存中分类存放各班不同的记录数和计算后得到的记录数.菜单函数函数原型:menu_select()功能:控制程序要求:管理菜单命令并完成初始化第四章程序调试在设计
12、该程序的时候我采用了结构化程序方法编辑,并在源代码的基础上添加了中文注释。但是在该系统的编写过程中仍然有许多错误,主要的有:注释文字的排版,定义错误,句式的语法错误。在完善程序时,我将源代码先打印下来反复的捉摸和研究,力图在上机运行时先改正一些低级错误.如缺少; ”之类.在仔细检查之后, 将源代码上机调试一进行编译,在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正直到顺利显示我预期的。1、首先,在本次调试过程中我碰到了在上机前根本没有想到的错误:在注释的时候,注释文字应写在一起中间不能有中断,不能再其中包含c语言的语句。否则会引起错误,例如格式不正确或是多了字
13、符等。2、缺少变量定义或是定义位置不正确;由于该程序相对来讲稍有些长,前后有些变量很难联系起来,但是在错误信息的提示下一般还是很是可以找到。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为减少这样的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。3、句式的语法错误;大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况
14、不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的编译、连接的成功并不意味着程序的最终成功。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要编程序的人有相当的耐心和细心去把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。往往运行之后得不到另人满意的结果,此时解决的方法一则可以用“分段检查”的方法,在程序的不同位置设几个printf函数语句,输出有关变量的值,逐段往下检查,或用debug进行调试,对检查出的错误进行修改,当调试完毕将设置的printf都删去。若在程序中找不到问题,则再来考虑算法是否逻辑严
15、谨,再进行修改。如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我就是常遇到编译能通过,能够运行程序,但是总在输入、删除等操作完之后再想去看数据文件中存在的数据记录的时候,却一条记录也显示不出来,我怀疑是哪个对方对n变量的定义或使用出错了,于是在每个主要函数的操作过程中添加了printf语句用来显示n的变化,例如在执行某个函数前添加插入语句显示n的起始值,在执行完该个函数后再添加插入语句显示此时n的结果值,观察n的变化是否正确,如果错误了,也就说明该函数编写过程有错。诸如这样的调试方法,不断缩小检查范围,最后将错误找到,进行修改。所以到最后我找到了错误,及时改正,终于把程序完成了,一
16、切功能显示正常。以上是调试的全过程第五章使用说明首先进入界面时,根据屏幕上的提示pressanykeyentermenu即是按任意键均可进入主菜单,考虑到学生成绩大多由老师输入和调用,所以这里对使用者没有要求也就没有添加密码的必要。在进入主菜单时可以看到这样的画面,如图4-1所示:4-1主菜单从0到10共有11个功能键。此时应该根据提示Enteryourchoice(0-10):选择自己需要用的功能,例如:在提示后按1再回车(Enter键)的话就会进入编辑。在主菜单上的11个功能分别是:0initlist将表格初始化:使用0后,系统会将原有的一切记录全部删去,所有的恢复到位使用时。一切在主菜单
17、上完成。Enterlist建立学生成绩表格:使用1后,在界面上会要求你输入学号no,姓名name和成绩score1、2、3。如果已经输入完毕只要在下一个no后输入!再按回车键即可,此时就会回到主菜单,如图4-2所示:4-2输入界面Deletearecordfromlist从表中删除原有纪录:使用2后,会进入子界面,提示语会告诉你输入你要删除的信息的学生的学号后会出现“listno*student”这就表示删除成功,如果没有这个学生的信息则会跳过步执行但是还是会输出上述的句子,如图4-3所示:4-3显示删除界面printlist显示单链表中所有记录:如果是在执行完5以后,那么总分和均分一栏就不会
18、空白,而是会输出计算后的数据,如图4-4所示:4-4打印数出界面Searchrecordfromlist按照姓名查找纪录:根据提示pleaseenterstudentsnameforsearch”输入学生的拼音拼写的姓名,如图4-5所示:4-5查找界面computethescore计算所有学生的总分和均分:按5后,系统会自动计算然后输出结果,如图4-6所示:4-6计算界面insertrecordtolist插入纪录到表中:使用6时,要输入你想插到哪一个学生前,只需输入他的学号。然后,在提示语的提醒下输入要插入学生的学号,姓名和成绩。然后再进入打印界面,此时可以看到已经将09插入到02前。如图4
19、-7所示:,然4-7插入后界面copythefiletonewfile复制文件:执行完7后,会根据使用者输入的地址和命名生成文本文档存储。sorttomakenewfile将所有学生成绩排序:在完成后,会出现“sortsuccess!”如果想看结果的话,可以在执行完这一步后在执行3,这样就可以看到排序后的结果。totalonnomber分类合计,如图4-9所示:4-9分类合计界面Quit退出模块,在主菜单上实行。如图4-10所示:4-10退出界面第六章工作总结在这次的编程过程中,我不仅在C语言的学习上有了很大的提高而且也培养了我的毅力、耐心、决心和学习能力。短短的两周,我自己都不敢相信可以弄好
20、一个对我而言一个大而功能相对而言还可以的程序。但是不得不说在这个程序中仍然有许多的缺陷,诸如:计算均分时只能计算三门的总均分;无法将文件以文档或是表格形式存储;排序、删除等必须以一种形式先查找学生信息然后再实行操作并不多样化。总之,在这个过程中我还面对了程序无法执行,改错时怎么也找不到错误在哪里的困境;但我还是在老师和同学们的帮助下完成了这个程序。可以说我的心情是相当的激动,相信有了这样的经历后我能够更加娴熟的面对各种情况。注:课程设计以来的感想、心得、经验、收获、有待改进的方面。不超过一页。参考文献(参考书或论文或文章)1黄明等.21世纪进阶辅导C语言程序设计.大连理工大学出版社,2005:
21、452082马靖善等.C语言程序设计.清华大学出版社,2005:23-145附录源代码#includestdio.h#includestdlib.h#includestring.h#includeconio.h#includemem.h#includectype.h#includealloc.h#defineN3typedefstructz1charname20;intscoreN;floatsum;floataverage;intorder;structz1*next;STUDENT;STUDENT*init();STUDENT*create();STUDENT*delete(STUDENT
22、*h);voidprint(STUDENT*h);voidsearch(STUDENT*h);voidsave(STUDENT*h);STUDENT*load();voidcomputer(STUDENT*h);STUDENT*insert(STUDENT*h);voidappend();voidcopy();STUDENT*sort(STUDENT*h);voidtotal(STUDENT*h);intmenu_select();main()inti;STUDENT*head;head=init();clrscr();for(;)switch(menu_select()case0:head=
23、init();break;case1:head=create();break;case2:head=delete(head);break;case3:print(head);break;case4:search(head);break;case5:computer(head);break;case6:head=insert(head);break;case7:copy();break;case8:head=sort(head);break;case9:total(head);break;case10:exit(0);menu_select()0.initlist,1.Enterlist,2.D
24、eletearecordfromlist,3.printlist,4.Searchrecordonname,putethescore,6.insertrecordtolist,7.copythefiletonewfile,/*char*menu=”*MENU*”复制文件*/8.sorttomakenewfile,/*9.totalonnomber,/*10.Quit);/*chars3;intc,i;gotoxy(1,25);printf(pressanykeyentermenugetch();clrscr();gotoxy(1,1);textcolor(BLUE);textbackgroun
25、d(WHITE);gotoxy(10,2);putch(0 xc9);for(i=1;i44;i+)putch(0 xcd);putch(0 xbb);for(i=3;i20;i+)(排序*/分类合计*/退出*/n);gotoxy(10,i);putch(0 xba);gotoxy(54,i);putch(0 xba);/*输出右垂直线*/gotoxy(10,20);putch(0 xc8);for(i=1;i44;i+)putch(0 xcd);putch(0 xbc);window(11,3,53,19);clrscr();for(i=0;i16;i+)gotoxy(10,i+1);cpr
26、intf(%s,menui);textbackground(GREEN);window(1,1,80,25);gotoxy(10,21);doEnteryouchoice(010):);scanf(%s,s);printf(nc=atoi(s);while(c10);returnc;STUDENT*init()returnNULL;STUDENT*create()inti;ints;STUDENT*h=NULL,*info;for(;)info=(STUDENT*)malloc(sizeof(STUDENT);if(!info)printf(noutofmemory);returnNULL;)
27、inputs(enterno:,info-no,11);if(info-no0=!)break;inputs(enterstudentsname:,info-name,20);printf(pleaseinput%dscoren,N);s=0;for(i=0;iscorei);if(info-scorei100|info-scoreiscorei100|info-scoreiscorei;info-sum=s;info-average=(float)s/N;info-order=0;info-next=h;h=info;)return(h);)inputs(char*prompt,char*s
28、,intcount)(charp255;doprintf(prompt);scanf(%s,p);if(strlen(p)count)printf(ntoolong!n);while(strlen(p)count);strcpy(s,p);voidprint(STUDENT*h)inti=0;STUDENT*p;clrscr();p=h;printf(|Rec|No|Name|Sc1|Sc2|Sc3|Sum|Ave|Order|n);printf(|-|1|一|一-|-一|一-|一|n);while(p!=NULL)i+;printf(|%3d|%-10s|%-15s|%4d|%4d|%4d|
29、%4.2f|%4.2f|%3d|n,i,p-no,p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order);p=p-next;printf(nnn*STUDENT*n);STUDENT*delete(STUDENT*h)(STUDENT*p,*q;chars11;clrscr();printf(pleasedeletednon);scanf(%s,s);q=p=h;while(strcmp(p-no,s)&p!=NULL)(q=p;p=p-next;)if(p=NULL)printf(nlistno%sstudentn,s);
30、elseprintf(”*end*n);printf(|No|Name|Sc1|Sc2|Sc3|Sum|Ave|Order|n);printf(|1|-|-一|-一|-一|-|n);printf(|%-10s|%-15s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|n,p-no,p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order);*n);getch();if(p=h)foundprintf(”*n);haveprintf(”*end*h=p-next;elseq-next=p-next;free(p);printf(
31、nhavedeletedNo%sstudentn,s);printf(Dontforgetsaven);return(h);voidsearch(STUDENT*h)STUDENT*p;chars15;clrscr();printf(Pleaseenterstudentsnameforsearchn);scanf(%s,s);p=h;while(strcmp(p-name,s)&p!=NULL)p=p-next;if(p=NULL)printf(nlistno%sstudentn,s);else(*n);printf(|No|Name|Sc1|Sc2|Sc3|Sum|Ave|Order
32、|n);printf(|1|-|-一|-一|-一|-|n);printf(|%-10s|%-15s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|n,p-no,p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order);printf(”*end*n);printf(nn*havefound*STUDENT*insert(STUDENT*h)(STUDENT*p,*q,*info;chars11;ints1,i;printf(pleaseenterlocationbeforethenon);scanf(%s,s);printf(
33、npleasenewrecordn);info=(STUDENT*)malloc(sizeof(STUDENT);if(!info)(printf(noutofmemory);returnNULL;)inputs(enterno:,info-no,11);inputs(entername:,info-name,15);printf(pleaseinput%dscoren,N);s1=0;for(i=0;iscorei);if(info-scorei100|info-scoreiscorei100|info-scoreiscorei;info-sum=s1;info-average=(float
34、)s1/N;info-order=0;info-next=NULL;p=h;q=h;while(strcmp(p-no,s)&p!=NULL)q=p;if(p=NULL)if(p=h)h=info;elseq-next=info;elseif(p=h)(info-next=p;h=info;)else(info-next=p;q-next=info;)p=p-next;printf(nhaveinserted%ssave-n);return(h);voidcopy()charoutfile10,infile10;FILE*sfp,*tfp;STUDENT*p=NULL;clrscr()
35、;printf(Enterinfilename,forc:f1te.txt:n);scanf(%s,infile);if(sfp=fopen(infile,rb)=NULL)printf(cannotopeninputfilen);exit(0);student-n,info-name);printf(-Dontforgettoprintf(Enteroutfilename,forexampleexamplec:f1te.txt:n);scanf(%s,outfile);if(tfp=fopen(outfile,wb)=NULL)(printf(cannotopenoutputfilen);exit(0);while(!feof(sfp)(if(1!=fread(p,sizeof(STUDENT),1,sfp)break;fwrite(p,sizeof(STUDENT),1,tfp);fclose(sfp);fclose(tfp);printf(youhavesuccesscopyfile!n);STUDENT*sort(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025标准租房合同模板
- 2025标准个人借款合同模板下载
- 2025建筑材料供应商品混凝土居间合同
- 2025YY年技术服务合同
- 2025【党课例文】党课正确看待权力善修为官之德党课【职场文档】经理聘任合同
- 2025年电池修复机合作协议书
- 2025年非机械驱动车辆项目合作计划书
- 2025年造纸印染污染治理项目建议书
- 移民留学专题报道策划方案
- 2025年增亮膜合作协议书
- 2024年天津市高考化学试卷(含答案逐题解析)
- 《设计构成》试卷及答案A
- 2024年高考真题-政治(江苏卷) 含答案
- 大型活动策划与管理第十一章 大型活动后勤保障
- 测土配方施肥技术
- 【沙利文公司】2024年中国银发经济发展报告
- 海绵城市工程施工方案
- 内蒙古自治区高等职业院校2024年对口招收中等职业学校毕业生单独考试语文试题(无答案)
- 《喝出营养:解惑饮水、矿物质与健康》随笔
- 中职计算机专业《计算机网络基础》说课稿
- 【H公司员工培训的现状、问题和对策探析(含问卷)13000字(论文)】
评论
0/150
提交评论