




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ixx 学 院数据结构数据结构课 程 设 计设计题目: 考务管理程序的设计与实现 系 别 班级 学生姓名 学号 指导教师 职称 讲师 起止日期: 2011 年 12 月 19 日起至 2011 年 12 月 23 日止考务管理程序的设计与实现iixx 学 院数据结构数据结构课程设计任务书课程设计题目: 考务管理程序的设计与实现 系 别 _ 班级信管 学生姓名 学 号 指导教师 职 称 讲师 课程设计进行地点: 实验室 c407 任 务 下 达 时 间: 2011 年 12 月 19 日起止日期: 2011 年 12 月 19 日起至 2011 年 12 月 23 日止一、课程设计的目的一、课程
2、设计的目的考务管理程序的设计与实现iii课程设计比教学实验复杂一些,涉及的深度广些并更加接近实用。目的一方面是通过课程设计的综合训练,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务;另一方面,通过课程设计使学生进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握编程方法和技巧,培养学生的实际分析问题、编程和动手能力,提高学生用程序的思想来解决实际问题的能力。二、课程设计要求二、课程设计要求1、遵守课程设计时间安排,按时上机。2、认真查找相关的资料,理解相关的知识内容。3、认真调试程序,组员之间应加强团队合作,取长补短,共同分析问题解决问题。4、根据设计题目规定的
3、具体要求进行具体规范操作。5、认真撰写课程设计报告,避免相互抄袭。三、对课程设计说明书撰写内容、格式、字数的要求三、对课程设计说明书撰写内容、格式、字数的要求1课程设计报告是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、实验器材、设计原理及内容、设计具体步骤、遇到的问题及解决方法、设计总结、参考文献等。一般不应少于 3000 字。2在适当位置配合相应的实验原理图、实验数据表、问题分析流程图等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。3设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标
4、。4课程设计报告打印时采用 a4 纸,页边距均为 20mm,正文采用宋体小四号字,行间距 20 磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。5课程设计报告装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。四、设计题目四、设计题目五、成绩评定五、成绩评定评定成绩根据系统功能、界面效果,系统操作的方便性、灵活性等方面进行,主要从三个方面进行考虑:考务管理程序的设计与实现iv1、对问题的理解程度;2、成果的好坏;3、设计报告。评定结果:不及格、及格、中、良好、优秀。 六、时间进度安排六、时间进度安排顺序阶段日期计 划 完
5、成 内 容备注12011.11.19查阅资料,撰写读书笔记22011.11.20系统设计 ,数据结构设计,算法设计32011.12.21编程并上机调试42011.12.22撰写报告52011.12.23验收程序,提交设计报告书七、主要参考文献七、主要参考文献考务管理程序的设计与实现vxxxx 学学 院院 数数 学学 与与 计计 算算 机机 科科 学学 系系考勤管理程序设计与实现考勤管理程序设计与实现课程设计成绩评定表课程设计成绩评定表教研室:教研室: 信管教研室信管教研室 班级:班级: 学生姓名:学生姓名: 指指 导导 教教 师师 评评 审审 意意 见见评价内容具 体 要 求权重评 分加权分调
6、 研论 证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15 54 43 32 2工作能力态 度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25 54 43 32 2工 作 量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25 54 43 32 2说明书的质 量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55 54 43 32 2指导教师评审成绩指导教师评审成绩(加权分合计乘以(加权分合计乘以 1212) 分分加权分合计加权分合计指指 导导 教教 师师 签签 名:名: 年年 月月
7、 日日评评 阅阅 教教 师师 评评 审审 意意 见见评价内容具 体 要 求权重评 分加权分查 阅文 献查阅文献有一定广泛性;有综合归纳资料的能力0.25 54 43 32 2工 作 量工作量饱满,难度适中。0.55 54 43 32 2说明书的质 量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35 54 43 32 2评阅教师评审成绩评阅教师评审成绩(加权分合计乘以(加权分合计乘以 8 8)分分加权分合计加权分合计评评 阅阅 教教 师师 签签 名:名: 年年 月月 日日课课 程程 设设 计计 总总 评评 成成 绩绩分分考务管理
8、程序的设计与实现i目目 录录第一章第一章 绪论绪论.1 11.1 课题背景 .11.2 课题目的和要求 .11.3 课题意义 .1第二章第二章 系统分析系统分析.3 32.1 功能需求 .32.2 数据需求 .32.3 性能需求 .3第三章第三章 总体设计总体设计.5 53.1 功能模块设计 .53.2 系统设计方案 .5第四章第四章 详细设计详细设计.6 64.1 考生信息的输入 .64.2 考试日程表的输出 .7第五章第五章 调试与测试调试与测试.8 85.1 调试 .85.2 测试 .8结束语结束语.9 9致谢致谢.1010参考文献参考文献.1111附录附录 1 1用户手册用户手册 .1
9、212附录附录 2 2源程序源程序 .1414考务管理程序的设计与实现ii摘 要20 世纪末,随着计算机科学的发展,数据库技术在 internet 中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。学生考务管理程序是信息管理系统的一个子系统,一个基于单机版的系统。因为随着计算机技术的不断进步与发展,计算机已经深入到人们日常生活的每个角落,例如:政府部门,企事业单位,学校等等。该系统开发功能主要包括:管理员可以通过计算机设置学生考务管理程序,打印供学校及个人使用。该程序是使用 c 语言编写的学生考务统计程序。关键词:考务;考生基本信息;考试时间;考场;查询;考务管理程序的设计与实现
10、3第一章第一章 绪论绪论1.11.1 课题背景课题背景程序实践是本科生重要教学环节之一。通过程序实践,强化学生的计算机应用技能,使学生验证、巩固和充实所学的理论知识, 加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力。考务管理程序是学校教务管理工作中一个比较重要的任务,过多的考务管理工作给学校管理人员带来了很大麻烦的。虽然原始的记录方法在一定的程度上可以解决问题,可是现在计算机已经走到了我们的生活,它的不足之处就显而易见了。 考务管理程序,是一个对于考生的管理系统, 不仅大大减少了考务管理人员大量的工作,而且还方便了老师和考生对考试事项的查询,只要通计算机登入本系统就能及时查询考
11、生的考务信息。这样节省了大量人力物力,节省了宝贵的时间,大大提高了工作效率.用 c 语言进行了该系统的编写。操作上力争实现人性化、合理化,满足学校、老师、非计算机管理人员的使用和查看。1.21.2 课题目的和要求课题目的和要求目的:要求实现-“考务管理程序”记录考生的基本信息,考试时间,考试课程,考试教室。要求: 1.录入考生的基本信息;2输出考试日程表;3查询某个考生的基本信息;4查询某个考生的考场及考试时间; 1.3 课题意义程序实践是本科生重要教学环节之一。通过程序实践,强化考生的计算机应用技能,使考生验证、巩固和充实所学的理论知识, 加深对相关内容的理解,拓宽知识面,培养考生的创新精神
12、和实践能力。 考务管理程序可以大大减缓考生考务人员的工作量, 方便了对考务的管理。考务管理程序的设计与实现4第二章第二章 系统分析需求分析是软件定义时期的最后一个阶段,它更是开发一个好的软件的基础。它的基本任务是准确地回答“需要此软件的人都需要哪些功能?”这个问题。需求分析的主要任务是确定系统必须完成哪些工作,也就是对目标系统提出完整的准确的具体的清晰的要求,确定系统必须具有的功能和性能,系统要求的运行环境,以及预测系统发展的前景开发一个好的软件,进行深入细致的可行性研究是极其必要的,而且还必须做大量的,全,并仔细分析系统中的数据,以便完善良好的软件环境。在需求分析阶段系统分析员将仔细研究软件
13、所需要完成的具体功能。2.12.1 功能需求功能需求本系统主要是考务人员对考试的管理。该系统需要有建立,查询,载入,储存,退出功能,利用查询功能分开查看某一考生的基本信息或者某一个门的考试时间,方便考务人员的管理。2.22.2 数据需求数据需求本系统主要涉及的数据有考生基本信息。考生基本信息包括考试时间,考生姓名,考试科目,考场。2.32.3 性能需求性能需求 要求系统具有可靠性,速度要快。考务管理程序的设计与实现5第三章第三章 总体设计3.13.1 功能模块设计功能模块设计根据分析整个系统主要划分为 3 个功能模块,分别执行要求中的功能。数据管理中实现对考生的基本信息、考场基本信息、考生考试
14、时间的查询、输入、储存。查询管理通过根据考生姓名,考试课程, 考试时间等信息,查询单个考生的考试信息。功能模块图如图 1 所示。考务管理系统 考生基本信息输入考试日程的查询考试时间及考场输入及输出图 1 功能模块图3.23.2 系统设计方案系统设计方案此程序是过程性语言设计的。运用多种条件语句,主体采用的是链表指针。系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。程序使用了布尔函数。选择语句多采用 if 多分支选择结构与 switch 语句。首先计算switch 表达式,然后在 caes 子句中寻找值相等的常量表达式,并以此为入口符号,由此开始
15、顺序执行。循环语句采用了 for 语句等、do-while 语句,for 语句用于已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。考务管理程序的设计与实现6开始int i=0; char name20;char testid9; structstunode * next;printf(“请输入考生信息:”); scanf(”%s%d” name,testid)i=num 输出考生准考号结束考生不存在第四章第四章 详细设计详细设计4.14.1 考生基本的输入信息考生基本的输入信息考生基本的输入信息如图 2 所示。 图 2 输入相应的信息考务管理程序的设计与实现
16、74.24.2 输入日期查找课程安排输入日期查找课程安排根据输入日期查询考程 如图 3 所示。 y n n y y n 图 3 考程查询 开始t=1;cmdnum=1&cmdnum=2&cmdnum=3printf(“请输入考试日期:”) scanf(“%d”, cmdnum)cmdnum=1printf(1 号上午考c+下午考历史”)cmdnum=2printf(2 号上午考英语下午考管理)cmdnum=3printf(输入日期非考试日期)printf(3 号上午数据结构下午考数学) 结束考务管理程序的设计与实现8第五章第五章 调试与测试调试与测试5.15.1 调试调试此程序是用 vc 程序
17、编写,调试过程中在菜单中选择乍看学生旷课记录,程序不执行。因为没有加入选择的 case 语句。后在 switch 后加一个 case 就可以自动执行了。5.25.2 测试测试由于程序的源代码是在记事本文本中复制到 vc 中的,有些 printf 后比较长的语句会被放到下一行,使程序出现多处类似的错误,经过在 vc 中的修改,程序得以正常的运行。5.25.2 结论结论课程设计顺利完成,题目所要求的功能也都一一实现,可以对学生的缺课信息进行添加,修改,删除以及查询的显示。不过这个程序还有些不够完善,例如不能往当前文件夹中的 txt 文件中添加记录。考务管理程序的设计与实现9结束语结束语整个系统的设
18、计过程对于我来说算是个学习、探索的过程,通过实践和对比别人开发程序的过程。在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是前期工作不彻底,对系统的需求分析的要求认识不够清楚,使得在后边的工作中不得不经常反复去修改。使我体会到设置中每一步的重要性。所以在分析一个问题时,我们需要站在一个有远见的高度。通过此次设计,我不但对 c 语言编程有了更深刻的认识,积累了使用软件工程的思想来开发软件的经验,更重要的是学会了在对待问题时应该考虑到哪些方面和怎么解决问题。虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,希望在日后的努力中能做出更完善的系统。考务管理程序的设计与实现10致
19、致 谢谢这次数据结构课程设计,对于我来说是一个挑战。我在 c 语言的学习过程中的困难并不只在程序的设计中有所体现,每一个函数都设计好了,也调试好了,把它们分开运行并没有错误,但是当把它们组合成一个程序时,便是一个一个地出现错误;把这个问题解决了,另一个新问题又来了。这不能不说是对知识的欠缺。通过这次的程序设计,我懂得了无论什么事都要去做才会发现问题,才有可能去解决问题。对知识的学习,不能潜偿辄止,要深入去学习,去了解,这样才会有所收获。有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机。同时,在这次课程设计的过程中,我认识到学好计算机要重视实践操作,不仅仅是
20、学习 c 语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,不能只是学习和重视书本上的理论知识,所以日后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机这门课程。 以前做实验题目的时候总是感觉很难,因为根本就不知道从哪里开始。这次课程设计让我对编程有了新的认识,也是我知道了只有自己亲自动手才能学到更多东西。拿到题目的时候也是很困惑但仔细琢磨后也不是想象中那么难,觉得就是上课讲到的一些内容,是自己先把自己吓住了。后来,参照书上的和网上的诸多例子,一个模块一个模块的编写,调试,一个功能一个功能去完善。发现越做越顺利,由于以前的实验中对于改错的经验积累和几个学得不错的同学的帮助
21、,我的程序中的错误也一个一个的顺利解决。再后来,等我的程序完全做好以后,我竟然可以独立的帮同学修改一些以前根本不知所以然的错误,其实,从这次实验中我认识到,我距离高手还很远,编程有很多的乐趣也有很多的技巧性和知识性。我将在以后的日子里继续认真的学习知识,积累经验,让自己的编程能力提高。总之,我决得编程就是要请自动手,孰能生巧,感谢学校给我们这次机会使我们通过这次试验学到了很多东西。考务管理程序的设计与实现11参考文献参考文献1刘志文关于考务管理的有效途径.考务管理,2006(3):832谭浩强.c 语言程序设计(第三版).北京:清华大学出版社3严蔚敏教授数据结构及应用算法程序(修订版)北京:清
22、华大学出版社4郭琦.visual basic 数据库系统开发技术 . 人民邮电出版社,2003.12:13考务管理程序的设计与实现12附录附录 1 1用户手册用户手册1、考生信息的输入图 1 考生信息的输入2、考场安排图 2 考场安排考务管理程序的设计与实现133、考试日程查询图 3 考试日程查询考务管理程序的设计与实现14附录附录 2 2源程序源程序#include #include #include #include #include #include #define quit 0 /退出程序的功能代码#define clear_input_buff(c) while(c=getchar(
23、) != eof & c != n) /清除控制台输入缓存#define code 18 /学校代码/存储学生信息的结构体typedef struct int num;char name20;char testid9; /准考证号 8 位,最后一位0 student;/表示学生单链表节点的结构体typedef struct stunodestudent student;struct stunode * next; /指向下一个学生信息节点 studentnode;/表示学生单链表结构体typedef struct studentnode * firstnode;studentnode * en
24、dnode;int length;studentchain;/创建一个存储考生信息的单链表studentchain * createstudentchain()studentchain * stuchain = (studentchain*)malloc(sizeof(studentchain);if(null = stuchain)return null;elsestuchain-firstnode = null;stuchain-length = 0;return stuchain;考务管理程序的设计与实现15/根据传入的一个考生信息动态创建一个 studentnode 节点并返回stud
25、entnode* createstudentnode(int num,char name)studentnode * stunode = (studentnode *)malloc(sizeof(studentnode);if(null = stunode) return null;else stunode-student.num = num;strncpy(stun,name,20);stun19=0;stunode-student.testid0 = 0;stunode-next = null;return stunode;/
26、把一个考生信息节点添加到单链表末尾void chainappendnode(studentchain * stuchain,studentnode * node)if(null = stuchain | null = node)return ;if(stuchain-length=0)stuchain-firstnode = node;stuchain-endnode = node;stuchain-length = 1;elsestuchain-endnode-next = node;stuchain-endnode = node;stuchain-length+;/根据索引值返回考生信息节
27、点studentnode * getstudentnodebyindex(studentchain * stuchain,int index)int i=0;studentnode * tmpp = null;if(null = stuchain | indexlength firstnode;for(; inext;return tmpp;/销毁单链表(释放内存)void destroychain(studentchain* stuchain)studentnode * tmpnode = null;studentnode * curnode = null;if(null = stuchai
28、n | stuchain-length=0)return ;curnode = stuchain-firstnode;tmpnode = curnode-next;for( ; curnode != null ; )free(curnode);curnode = tmpnode;tmpnode = curnode-next;free(stuchain);/显示功能菜单,等待用户输入功能代码/返回值说明:返回功能号int selectcommand()int cmdnum = 0;int ch = 0;printf(n);printf(1 输入考生信息n);printf(2 生成准考号证并显示(
29、座位号随机生成)n); printf(3考试日程表的查询n);printf(0 退出(注:输入非数字字符也可以退出)n);scanf(%d,&cmdnum);clear_input_buff(ch);/清除控制台输入缓存if( cmdnum != 1 & cmdnum !=2 &cmdnum !=0&cmdnum !=3)printf(输入的功能编号不正确(应该为 1、2 或者 0)!nn);elsereturn cmdnum;考务管理程序的设计与实现17/显示考生信息void displaystuinfo(studentchain * stuchain)studentnode * curno
30、de = null;char testid9;if(null = stuchain | stuchain-length=0) printf(当前没有任何考生信息!请录入n);return;printf(*n);printf(学号t 姓名t 准考证号t 考场号t 座位号n);printf(-n);for( curnode = stuchain-firstnode ; curnode != null ; curnode= curnode-next )strncpy(testid,curnode-student.testid,9);if(0 = testid0)printf(%dt%st%st%st
31、%s,curnode-student.num,curn,n);elseprintf(%dt%st%st%c%ct%c%cn,curnode-student.num,curn,curnode-student.testid,curnode-student.testid0,curnode-student.testid1,curnode-student.testid6,curnode-student.testid7);printf(*n);/获取用户输入的考生信息并且保存到结构体参数中/返回值说明: -1 表示输入不正确, 0 表示不想继
32、续录入,1 表示继续录入int inputstudentinfo(int *num,char name20)考务管理程序的设计与实现18int ch=0;int quit = 0;name0 = 0;printf();scanf(%d,%s,num,name);clear_input_buff(ch);if(*num10)printf( 输入错误:学号必须于少两位数!n);return -1;if(strlen(name) =0)printf( 输入错误:考生姓名不能为空!n);return -1;printf(保存成功! 是否继续录入?(y/n);quit = getchar();clear
33、_input_buff(ch);if(quit != y & quit != y)return 0;return 1;/随机生成俩整数间的整数(包括 snum,enum)/返回值说明: -1 表示参数不正确int randnum(int snum,int enum)int num = -1;if(snum 0 | enum 0 | enumsnum) return num;if(snum = enum) return snum;num = rand() % (enum - snum +1) + snum; return num;/在一个整数数组查找 findnum,如果找到则返回索引值,否则返
34、回-1int indexof(int findnum,int *nums,int count)int i=0;if(null = nums | count=0) return -1;for( ; icount ; i+)if(findnum = numsi) return i;return -1;考务管理程序的设计与实现19/生成 snum-enum 之间(包含 snum,enum)的 count 个随机数/参数说明:-1 表示参数不正确 ,-2 表示内存不 足int createrandnums(int snum,int enum,int * nums,int count)int i=0;i
35、nt * tmpnums = null;int tmprandnum = -1;if(snum 0 | enum 0 | enumsnum | count0 | null = nums | enum - snum + 1 count ) return -1;if(null =(tmpnums = (int *)malloc(sizeof(int) * count) return -2;for( ; icount ; i+)tmprandnum = randnum(snum,enum);if(-1 = indexof(tmprandnum , tmpnums , count)tmpnumsi =
36、 tmprandnum;elsei-; /座位号已被分配,重新生成/复制生成的座位号memcpy(nums,tmpnums,sizeof(int) * count);free(tmpnums);/释放内存return 0;/生成准考证号/返回值说明: -1 表示参数不正确, -2 内存不足int createtestid(studentchain * stuchain,int maxstucount)int i=0 , j=0;int maxexamroom=0;/int remain = 0;int * seats = null;int arranged = 0;/表示已被安排座位的考生人数int remain = 0; /剩余考生人数int curroomstus = 0; /当前考场人数char num20;/学号studentnode * tmpstunode = null;if(null = stuchain | maxstucountlength / maxstucount; remain = stuchain-length % maxstucount;if(remain 0) maxexamroom +; /对每个考场进行座位安排for(i=1 ; ilength - arranged;curr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村集体资金入股合同范本
- 鱼船买卖合同协议书模板
- 船员的正规劳务合同范本
- 芯模板行业期货合同范本
- 游艇修理合同协议书模板
- 照明灯安装合同补充协议
- 高速便道租用协议书范本
- 肇庆正规劳务派遣协议书
- 高价回购铝合金合同范本
- 理发店长期消费合同范本
- 截瘫患者的并发症及护理
- 肝切除合并糖尿病
- 《大模型原理与技术》全套教学课件
- 《出口退税培训》课件
- 雾化吸入疗法课件
- 高考补习班招生策划书策划方案
- 康明斯产品合格证
- 矿山废水处理行业调研及投资前景分析报告
- DB13 5808-2023 餐饮业大气污染物排放标准
- 【五升六暑期阅读】专题10.环境描写及其作用-2024年五升六暑期阅读专项提升(统编版)5
- 【电商直播对消费者购买行为影响:以抖音直播为例开题报告1800字】
评论
0/150
提交评论