研究生初试录取管理系统课程设计报告_第1页
研究生初试录取管理系统课程设计报告_第2页
研究生初试录取管理系统课程设计报告_第3页
研究生初试录取管理系统课程设计报告_第4页
研究生初试录取管理系统课程设计报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、合肥学院计算机科学与技术系课程设计报告20102011学年第二学期课程C语言课程设计课程设计名称研究生初试录取管理系统学生姓名张勇 学号1004013038 专业班级10级计本四班 指导教师项响琴 徐静2011年6月 一、 需求分析本课程设计的任务和要求是设计一个研究生初试录取管理系统,该系统要求对研究生初试录取信息进行。研究生考试课程为4门,其中数学、外语、政治为统一命题,而专业基础课则根据不同的专业由招生学校自行命题。国家对初试录取分数有总分要求(如某一年要求4门课总分应达到310分),另外还有对每门课的最低分数要求(如总分为100的试卷最低应达到40分,总分为150的试卷最低应达到65分

2、)。编程统计初试合格的人数,并按总分由高到低的顺序输出合格考生的信息。具体功能:(1)程序运行时首先要求输入:考生姓名,准考证号,报考专业,是否应届生,4门课(政治、数学、外语、专业基础课)成绩。同时,这些原始数据应保存到一个文件中。(2)然后输入:录取的总分要求,各课程的最低分数要求。(3)输出要求:过线考生的姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩及总分,这些信息应存放到另一个文件中。(4)测试数据。程序应输入不少于10名考生的信息,其中应届生和历届生分别有若干名,并且都有合格和不合格的情况。二、 算法设计1 设计思想本程序的算法思想主要是链表的创

3、建以及对链表的信息处理和文件操作。创建链表时,逐个添加数据域,借助辅助指针变量完成链表的各级移动,从而完成数据的连接。2 数据结构为了更好地满足题目上的信息要求,从而创建了自定义数据类型,用以存储所有与学生相关的信息。所用的自定义类型是结构体类型,表示的所有的学生信息如下:struct Exam int math; /数学成绩 int English; /英语成绩 int polig; /政治成绩 int zyjc; /专业基础成绩 int sum; /各科分数总和 int number; /学生学号 char name10; /学生姓名 char Zhuanye10; /专业名称 char

4、Yingjie5; /是否应届 struct Exam *next; /定义指针变量;各结构体及函数:struct Exam:struct Exam *creat():void Print(struct Exam *head):struct Exam *Line(struct Exam *head):struct Exam *Check(struct Exam *head):void Daxian(struct Exam *head) :main():开始菜单自动筛选合格学生输出并保存合格学生信息输入合格分数线输出并保存学生信息输入学生全部信息退出系统3 设计表示根据上面的分析,可以将这个系统

5、分为五大模块:输入学生信息(姓名、学号、专业、是否应届以及各科成绩)、输出并保存学生信息、输入合格分数线、自动筛选合格学生以及输出并保存已排序的合格学生信息。(struct Exam:)程序首先声明了一个结构体并定义了相关的变量,同时定义了链表,为下面的其他函数的调用提供了数据源,同时,其链表的定义在整个程序中起到了重要的作用。)(1)struct Exam *creat(): 定义了一个完整的链表,在其内部运用了指针、链表,同时还用到了goto语句,goto语句的作用是在当键入“0”的时候,就直接结束学生信息的输入,而进入到下面一个函数环节,此链表起到了动态输入数据的作用,也就是输入所有学生

6、的全部信息以供参考。(2)void Print(struct Exam *head):对于上一个函数程序完成的所有学生信息的输入进行一个操作:保存至“c:jieguo.txt”文档中。(3)struct Exam *Line(struct Exam *head):难度操作最大的就是这个子函数,内部不仅仅是难以操作的链表与指针之间的复杂关系,而且其担负一个重要的作用,就是用链表对struct Exam *Check(struct Exam *head)函数筛选过后的合格学生的全部信息运用链表按照总分进行由大到小的排序。链表的排序思路与先前所学的知识并无差异,同样是引入中间变量t,在这里的只是t-

7、*类的,对其每一个节点而言,进行比较的只是其实部data,而指针next则不需要变化。(4)struct Exam *Check(struct Exam *head):本函数就是要求键入所谓合格的具体分数要求,进行设置以便进一步筛选出合格的研究生。(5)void Daxian(struct Exam *head):对合格达线的学生的信息进行保存,也是保存在“c:jieguo.txt”文档中。4 算法设计中一些新的想法:为使程序界面不至于太累琐,我在适当的位置都添加了清屏函数system(“cls”),使视觉上更清晰,同时,在实现排序功能上,并未直接将过线成绩结果及过线成绩排序显示在程序运行当中

8、,以实际操作着想,便把上述结果直接显示到“c:jieguo.txt”文档中。最后,我的菜单设计的还是挺不错的。*研究生初试录取管理系统* 学号:1004013038 制作:张勇 计本四班 5 不足之处:缺点就是感觉自己在一开始没有做个菜单形式,既主菜单、子菜单之类的,有待于改进。三、 用户手册程序运行菜单输入学生全部信息输入录取要求并筛选保存程序运行结果四、 测试及调试1、先进行人工检查,即静态检查。在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的多数错误。这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器

9、时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。 为了更有效地进行人工检查,所编的程序应力求做到以下几点: 应当采用结构化程序方法编程,以增加可读性; 尽可能多加注释,以帮助理解每段程序的作用;在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。 2、在人工检查无误后,再上机调试。通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错

10、的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。如果系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”,输入这些数据可以很容易判断结果正确与否。例如解方程。事实上,当程序复杂时很

11、难把所有的可能情况全部都试到,选择典型的临界数据作试验即可。3、运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法:(1).将程序与流程图仔细对照,如果流程图是正确的,程序写错了,是很容易发现的。例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。(2).如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就能发现错误所在。(3).也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干pr

12、intf函数语句就要进行编译并执行。当调试完毕,这些语句不用再编译了,也不再被执行了)。这种方法可以不必一一去掉printf函数语句,以提高效率。(4).如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题。如有则改正之,接着修改程序。 总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于积累经验。在程序调试过程中往往反映出一个人的水平,经验和态度。希望大家给以足够的重视。上机调试程序的目的决不是为了“验证程序的正确”,而是“掌握调试的方法和技术”,要学会自己找问题,这样慢慢自己就会写出错误较少的实用程序。比如:scanf()问题:在编译时没有报错,但是在程序运行时总是退出

13、或者运行结果出错。再对菜单进行选择时,scanf(%c,&choice),总是接受错误,后来才发现,原来要写这样的格式:scanf( %c,&choice);(多一个空格),应为c在scanf()函数的缓冲区内误读了回车键,空格的目的是吸收回车键。我干脆就用了scanf(%d,&choice).1、 小结研究生初试录取系统的源程序是用VC+编写的,其特点在于层次分明并由不同函数组成。在程序的设计过程中,运用了各种基本的函数,相互交织同时又单独作用,由函数的声明,函数的结构体,最主要的特点是运用了链表的相关知识给予连接完善,不仅仅巩固了所学的知识,同时也使自己在动手实践的过程中学习了很多,产生了

14、很多新体会。回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整五天的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针

15、,链表通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。学海无涯,我将继续努力,坚持不懈,相信付出就有收获,一定会取得更好的成绩。2、 参考文献1 郭翠英编著C语言课程设计案例精编北京:中国水利水电出版社2 谭浩强编著C程序设计题解与上机指导(第3版) 北京:清华大学出版社3苏小红 陈慧鹏 孙志岗等编著的C语言大学实用课程附录:#include#include#includestruct Exam int math; int English; int polig; int zyjc; int sum; int number; char name10; char Zhuanye10;

16、 char Yingjie5; struct Exam *next;struct Exam *creat() /*动态输入数据*/ struct Exam *head,*p,*q; int n=0; int ch; head=NULL; p=(struct Exam *)malloc(sizeof(struct Exam); puts(=信息=n); puts(请输入你的姓名:); scanf(%s,p-name); puts(请输入你的学号:); scanf(%d,&(p-number); puts(请输入你的专业:); scanf(%s,&(p-Zhuanye); puts(是否应届(y/

17、n):); scanf(%s,&(p-Yingjie); puts(=考生的各科成绩=n数学 英语 政治 专业基础); scanf(%d%d%d%d,&(p-math),&(p-English),&(p-polig),&(p-zyjc); /scanf(%s%d%s%s%d%d%d%d,p-name,&(p-number),p-Zhuanye,p-Yingjie,&(p-math),&(p-English),&(p-polig),&(p-zyjc); while(p-math=0&p-English=0&p-zyjc=0&p-polig=0) n+; if(n=1) head=p; else

18、q-next=p; q=p; puts(1 继续 0 停止); scanf(%d,&ch); if(ch=0) goto loop; p=(struct Exam *)malloc(sizeof(struct Exam);/ puts(请输入信息:姓名 学号 专业 应届 数学 英语 政治 专业); system(cls); puts(ttt*n); puts(ttt研究生初试录取管理系统n); puts(ttt*n); puts(ttt 学号:1004013038 n); puts(ttt 制作:张勇 n); puts(ttt 计本四班 n); puts(=信息=n); puts(请输入姓名:

19、); scanf(%s,p-name); puts(请输入学号:); scanf(%d,&(p-number); puts(请输入专业:); scanf(%s,&(p-Zhuanye); puts(是否应届:); scanf(%s,&(p-Yingjie); puts(=考生的各科成绩=n数学 英语 政治 专业); scanf(%d%d%d%d,&(p-math),&(p-English),&(p-polig),&(p-zyjc); /scanf(%s%d%s%s%d%d%d%d,p-name,&(p-number),p-Zhuanye,p-Yingjie,&(p-math),&(p-Engl

20、ish),&(p-polig),&(p-main); loop: q-next=NULL; return head;void Print(struct Exam *head) FILE *fp; struct Exam *p=head; fp=fopen(c:jieguo.txt,w); fprintf(fp,t*n); fprintf(fp,t研究生初试录取管理系统n); fprintf(fp,t*n); fprintf(fp,t 学号:1004013038 n); fprintf(fp,t 制作:张勇 n); fprintf(fp,t 计本四班 n); fprintf(fp,t*n); f

21、printf(fp,姓名 学号 专业 应届 数学 英语 政治 专业 总分n); while(p!=NULL) p-sum=p-math+p-English+p-zyjc+p-polig;/求和 fprintf(fp,%s%6d%6s%6s%6d%6d%6d%6d%6dn,p-name,(p-number),p-Zhuanye,p-Yingjie,(p-math), (p-English),(p-polig),(p-zyjc),(p-sum); p=p-next; puts(信息已存入c:jieguo.txt); fclose(fp);struct Exam *Line(struct Exam

22、*head) struct Exam *h,*p,*q,*t; int term; char fu10; h=head; if(h=NULL) puts(数据为空,不能排序); else if(h-next=NULL) puts(只有一个数据); else for(p=h;p!=NULL;p=p-next) p-sum=p-math+p-English+p-zyjc+p-polig; for(q=p-next;q!=NULL;q=q-next) q-sum=q-math+q-English+q-zyjc+q-polig; if(p-sumsum) t=(struct Exam *)malloc

23、(sizeof(struct Exam); t-English=p-English; t-math=p-math; t-number=p-number; t-polig=p-polig; t-sum=p-sum; strcpy(t-name,p-name); strcpy(t-Yingjie,p-Yingjie); strcpy(t-Zhuanye,p-Zhuanye); t-zyjc=p-zyjc; p-English=q-English; p-math=q-math; p-number=q-number; p-polig=q-polig; p-sum=q-sum; strcpy(p-nam

24、e,q-name); strcpy(p-Yingjie,q-Yingjie); strcpy(p-Zhuanye,q-Zhuanye); p-zyjc=q-zyjc; q-English=t-English; q-math=t-math; q-number=t-number; q-polig=t-polig; q-sum=t-sum; strcpy(q-name,t-name); strcpy(q-Yingjie,t-Yingjie); strcpy(q-Zhuanye,t-Zhuanye); q-zyjc=t-zyjc; printf(=); return head;struct Exam

25、*Check(struct Exam *head) int zf,mt,eg,pg,ma; struct Exam *q=head,*p=head; while(p!=NULL) p-sum=p-math+p-English+p-polig+p-zyjc; p=p-next; p=head; system(cls); puts(ttt*n); puts(ttt研究生初试录取管理系统n); puts(ttt*n); puts(ttt 学号:1004013038 n); puts(ttt 制作:张勇 n); puts(ttt 计本四班 n); puts(要求=n总分 数学 英语 政治 专业); scanf(%d%d%d%d%d,&zf,&mt,&eg,&pg,&ma);

温馨提示

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

最新文档

评论

0/150

提交评论