数据结构课程设计考务管理程序的设计与实现.doc

上传人:仙人指路1688 文档编号:2396816 上传时间:2023-02-17 格式:DOC 页数:27 大小:183KB
返回 下载 相关 举报
数据结构课程设计考务管理程序的设计与实现.doc_第1页
第1页 / 共27页
数据结构课程设计考务管理程序的设计与实现.doc_第2页
第2页 / 共27页
数据结构课程设计考务管理程序的设计与实现.doc_第3页
第3页 / 共27页
数据结构课程设计考务管理程序的设计与实现.doc_第4页
第4页 / 共27页
数据结构课程设计考务管理程序的设计与实现.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《数据结构课程设计考务管理程序的设计与实现.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计考务管理程序的设计与实现.doc(27页珍藏版)》请在三一办公上搜索。

1、XX 学 院数据结构课 程 设 计设计题目: 考务管理程序的设计与实现 系 别 班级 学生姓名 学号 指导教师 职称 讲师 起止日期: 2011年12月19日起至 2011 年12 月23日止XX 学 院数据结构课程设计任务书课程设计题目: 考务管理程序的设计与实现 系 别 _ 班级信管 学生姓名 学 号 指导教师 职 称 讲师 课程设计进行地点: 实验室C407 任 务 下 达 时 间: 2011 年12 月19日起止日期: 2011年12月19日起至 2011 年12 月23日止一、课程设计的目的课程设计比教学实验复杂一些,涉及的深度广些并更加接近实用。目的一方面是通过课程设计的综合训练,

2、帮助学生系统掌握该门课程的主要内容,更好地完成教学任务;另一方面,通过课程设计使学生进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握编程方法和技巧,培养学生的实际分析问题、编程和动手能力,提高学生用程序的思想来解决实际问题的能力。二、课程设计要求1、遵守课程设计时间安排,按时上机。2、认真查找相关的资料,理解相关的知识内容。3、认真调试程序,组员之间应加强团队合作,取长补短,共同分析问题解决问题。4、根据设计题目规定的具体要求进行具体规范操作。5、认真撰写课程设计报告,避免相互抄袭。三、对课程设计说明书撰写内容、格式、字数的要求1课程设计报告是体现和总结课程设计成果

3、的载体,主要内容包括:设计题目、设计目的、实验器材、设计原理及内容、设计具体步骤、遇到的问题及解决方法、设计总结、参考文献等。一般不应少于3000字。2在适当位置配合相应的实验原理图、实验数据表、问题分析流程图等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。3设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。4课程设计报告打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距20磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。5

4、课程设计报告装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。四、设计题目五、成绩评定评定成绩根据系统功能、界面效果,系统操作的方便性、灵活性等方面进行,主要从三个方面进行考虑:1、对问题的理解程度;2、成果的好坏;3、设计报告。评定结果:不及格、及格、中、良好、优秀。 六、时间进度安排顺序阶段日期计 划 完 成 内 容备注12011.11.19查阅资料,撰写读书笔记22011.11.20系统设计,数据结构设计,算法设计32011.12.21编程并上机调试42011.12.22撰写报告52011.12.23验收程序,提交设计报告书七、主要参考文献XX 学 院 数 学 与 计 算 机

5、科 学 系考勤管理程序设计与实现课程设计成绩评定表教研室: 信管教研室 班级: 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调 研论 证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态 度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工 作 量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质 量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12) 分加权分合计指

6、 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查 阅文 献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工 作 量工作量饱满,难度适中。0.55432说明书的质 量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分目 录第一章 绪论11.1 课题背景11.2 课题目的和要求11.3 课题意义1第二章 系统分析32.1 功能需求32.2 数据需求

7、32.3性能需求3第三章 总体设计53.1 功能模块设计53.2 系统设计方案5第四章 详细设计64.1考生信息的输入64.2考试日程表的输出7第五章 调试与测试85.1调试85.2测试8结束语9致谢10参考文献11附录1用户手册12附录2源程序14摘 要20世纪末,随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。学生考务管理程序是信息管理系统的一个子系统,一个基于单机版的系统。因为随着计算机技术的不断进步与发展,计算机已经深入到人们日常生活的每个角落,例如:政府部门,企事业单位,学校等等。该系统开发功能主要包括:管理员可以通过

8、计算机设置学生考务管理程序,打印供学校及个人使用。该程序是使用C语言编写的学生考务统计程序。关键词:考务;考生基本信息;考试时间;考场;查询;第一章 绪论1.1 课题背景程序实践是本科生重要教学环节之一。通过程序实践,强化学生的计算机应用技能,使学生验证、巩固和充实所学的理论知识, 加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力。考务管理程序是学校教务管理工作中一个比较重要的任务,过多的考务管理工作给学校管理人员带来了很大麻烦的。虽然原始的记录方法在一定的程度上可以解决问题,可是现在计算机已经走到了我们的生活,它的不足之处就显而易见了。 考务管理程序,是一个对于考生的管理系统,

9、 不仅大大减少了考务管理人员大量的工作,而且还方便了老师和考生对考试事项的查询,只要通计算机登入本系统就能及时查询考生的考务信息。这样节省了大量人力物力,节省了宝贵的时间,大大提高了工作效率.用C语言进行了该系统的编写。操作上力争实现人性化、合理化,满足学校、老师、非计算机管理人员的使用和查看。1.2 课题目的和要求目的:要求实现-“考务管理程序”记录考生的基本信息,考试时间,考试课程,考试教室。要求: 1.录入考生的基本信息;2输出考试日程表;3查询某个考生的基本信息;4查询某个考生的考场及考试时间; 1.3 课题意义程序实践是本科生重要教学环节之一。通过程序实践,强化考生的计算机应用技能,

10、使考生验证、巩固和充实所学的理论知识, 加深对相关内容的理解,拓宽知识面,培养考生的创新精神和实践能力。 考务管理程序可以大大减缓考生考务人员的工作量, 方便了对考务的管理。第二章 系统分析需求分析是软件定义时期的最后一个阶段,它更是开发一个好的软件的基础。它的基本任务是准确地回答“需要此软件的人都需要哪些功能?”这个问题。需求分析的主要任务是确定系统必须完成哪些工作,也就是对目标系统提出完整的准确的具体的清晰的要求,确定系统必须具有的功能和性能,系统要求的运行环境,以及预测系统发展的前景开发一个好的软件,进行深入细致的可行性研究是极其必要的,而且还必须做大量的,全,并仔细分析系统中的数据,以

11、便完善良好的软件环境。在需求分析阶段系统分析员将仔细研究软件所需要完成的具体功能。2.1 功能需求本系统主要是考务人员对考试的管理。该系统需要有建立,查询,载入,储存,退出功能,利用查询功能分开查看某一考生的基本信息或者某一个门的考试时间,方便考务人员的管理。2.2 数据需求本系统主要涉及的数据有考生基本信息。考生基本信息包括考试时间,考生姓名,考试科目,考场。2.3性能需求 要求系统具有可靠性,速度要快。第三章 总体设计3.1功能模块设计根据分析整个系统主要划分为3个功能模块,分别执行要求中的功能。数据管理中实现对考生的基本信息、考场基本信息、考生考试时间的查询、输入、储存。查询管理通过根据

12、考生姓名,考试课程, 考试时间等信息,查询单个考生的考试信息。功能模块图如图1所示。考务管理系统 考生基本信息输入考试日程的查询考试时间及考场输入及输出图1 功能模块图3.2系统设计方案此程序是过程性语言设计的。运用多种条件语句,主体采用的是链表指针。系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。程序使用了布尔函数。选择语句多采用if多分支选择结构与switch语句。首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。循环语句采用了for语句等、do-while语句,for语句用于已知循

13、环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。第四章 详细设计4.1考生基本的输入信息开始int i=0; char name20;char testID9; structStuNode * next;Printf(“请输入考生信息:”); scanf(”%s%d” name,testID)I=num 输出考生准考号结束考生不存在考生基本的输入信息如图2所示。 图2 输入相应的信息4.2输入日期查找课程安排根据输入日期查询考程 如图3所示。 开始T=1;cmdNum=1&cmdNum=2&cmdNum=3Printf(“请输入考试日期:”) scanf(“%d”

14、, cmdNum)cmdNum=1 Y N Printf(1号上午考C+下午考历史”)cmdNum=2 N YcmdNum=3Printf(2号上午考英语下午考管理) Y Printf(输入日期非考试日期) NPrintf(3号上午数据结构下午考数学) 结束 图3 考程查询第五章 调试与测试5.1调试此程序是用VC程序编写,调试过程中在菜单中选择乍看学生旷课记录,程序不执行。因为没有加入选择的case语句。后在switch后加一个case就可以自动执行了。5.2测试由于程序的源代码是在记事本文本中复制到VC中的,有些printf后比较长的语句会被放到下一行,使程序出现多处类似的错误,经过在VC

15、中的修改,程序得以正常的运行。5.2 结论课程设计顺利完成,题目所要求的功能也都一一实现,可以对学生的缺课信息进行添加,修改,删除以及查询的显示。不过这个程序还有些不够完善,例如不能往当前文件夹中的txt文件中添加记录。结束语整个系统的设计过程对于我来说算是个学习、探索的过程,通过实践和对比别人开发程序的过程。在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是前期工作不彻底,对系统的需求分析的要求认识不够清楚,使得在后边的工作中不得不经常反复去修改。使我体会到设置中每一步的重要性。所以在分析一个问题时,我们需要站在一个有远见的高度。通过此次设计,我不但对C语言编程有了更

16、深刻的认识,积累了使用软件工程的思想来开发软件的经验,更重要的是学会了在对待问题时应该考虑到哪些方面和怎么解决问题。虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,希望在日后的努力中能做出更完善的系统。致 谢这次数据结构课程设计,对于我来说是一个挑战。我在C语言的学习过程中的困难并不只在程序的设计中有所体现,每一个函数都设计好了,也调试好了,把它们分开运行并没有错误,但是当把它们组合成一个程序时,便是一个一个地出现错误;把这个问题解决了,另一个新问题又来了。这不能不说是对知识的欠缺。通过这次的程序设计,我懂得了无论什么事都要去做才会发现问题,才有可能去解决问题。对知识的学习,不能潜偿辄止,要

17、深入去学习,去了解,这样才会有所收获。有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机。同时,在这次课程设计的过程中,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,不能只是学习和重视书本上的理论知识,所以日后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机这门课程。 以前做实验题目的时候总是感觉很难,因为根本就不知道从哪里开始。这次课程设计让我对编程有了新的认识,也是我知道了只有自己亲自动手才能学到更多东西。拿到题目的时候也是很困惑但仔细琢磨后也不是想象中那么难,觉得就是上课讲到的一

18、些内容,是自己先把自己吓住了。后来,参照书上的和网上的诸多例子,一个模块一个模块的编写,调试,一个功能一个功能去完善。发现越做越顺利,由于以前的实验中对于改错的经验积累和几个学得不错的同学的帮助,我的程序中的错误也一个一个的顺利解决。再后来,等我的程序完全做好以后,我竟然可以独立的帮同学修改一些以前根本不知所以然的错误,其实,从这次实验中我认识到,我距离高手还很远,编程有很多的乐趣也有很多的技巧性和知识性。我将在以后的日子里继续认真的学习知识,积累经验,让自己的编程能力提高。总之,我决得编程就是要请自动手,孰能生巧,感谢学校给我们这次机会使我们通过这次试验学到了很多东西。参考文献1刘志文关于考

19、务管理的有效途径.考务管理,2006(3):832谭浩强.C语言程序设计(第三版).北京:清华大学出版社3严蔚敏教授数据结构及应用算法程序(修订版)北京:清华大学出版社4郭琦.Visual Basic 数据库系统开发技术 . 人民邮电出版社,2003.12:13附录1用户手册1、考生信息的输入图1 考生信息的输入2、考场安排图2 考场安排3、考试日程查询图3 考试日程查询附录2源程序#include #include #include #include #include #include #define QUIT 0 /退出程序的功能代码#define CLEAR_INPUT_BUFF(c)

20、while(c=getchar() != 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;St

21、udentNode * endNode;int length;StudentChain;/创建一个存储考生信息的单链表StudentChain * CreateStudentChain()StudentChain * stuChain = (StudentChain*)malloc(sizeof(StudentChain);if(NULL = stuChain)return NULL;elsestuChain-firstNode = NULL;stuChain-length = 0;return stuChain;/根据传入的一个考生信息动态创建一个StudentNode节点并返回Studen

22、tNode* CreateStudentNode(int num,char name)StudentNode * stuNode = (StudentNode *)malloc(sizeof(StudentNode);if(NULL = stuNode) return NULL;else stuNode-student.num = num;strncpy(stuNode-student.name,name,20);stuNode-student.name19=0;stuNode-student.testID0 = 0;stuNode-next = NULL;return stuNode;/把一

23、个考生信息节点添加到单链表末尾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+;/根据索引值返回考生信息节点S

24、tudentNode * 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 = stuChain

25、| 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 生成准考号证并显示(座位

26、号随机生成)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;/显示考生信息void DisplayStuInfo(StudentChain * stuChain)StudentNode * curNode = NULL;char test

27、Id9;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%s,curNode-student.num,

28、curNode-student.name,n);elseprintf(%dt%st%st%c%ct%c%cn,curNode-student.num,curNode-student.name,curNode-student.testID,curNode-student.testID0,curNode-student.testID1,curNode-student.testID6,curNode-student.testID7);printf(*n);/获取用户输入的考生信息并且保存到结构体参数中/返回值说明: -1表示输入不正确, 0表示不想继续录入,1表示继续录入int InputStude

29、ntInfo(int *num,char name20)int 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_INPUT_BUFF(ch);if(quit != y & quit != Y

30、)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,如果找到则返回索引值,否则返回-1int IndexOf(int findNum,int *nums,int co

31、unt)int i=0;if(NULL = nums | count=0) return -1;for( ; icount ; i+)if(findNum = numsi) return i;return -1;/生成sNum-eNum之间(包含sNum,eNum)的count个随机数/参数说明:-1 表示参数不正确 ,-2 表示内存不 足int CreateRandNums(int sNum,int eNum,int * nums,int count)int i=0;int * tmpNums = NULL;int tmpRandNum = -1;if(sNum 0 | eNum 0 | e

32、NumsNum | 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 = tmpRandNum;elsei-; /座位号已被分配,重新生成/复制生成的座位号memcpy(nums,tmpNums,

33、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;/学

34、号StudentNode * tmpStuNode = NULL;if(NULL = stuChain | maxStuCountlength / maxStuCount; remain = stuChain-length % maxStuCount;if(remain 0) maxExamRoom +; /对每个考场进行座位安排for(i=1 ; ilength - arranged;curRoomStus = (remain maxStuCount?maxStuCount:remain) ;if(CreateRandNums(1,curRoomStus,seats ,curRoomStus

35、) =0)for(j=0;jstudent.num) = 0;if(strlen(num)student.testID,%02d%02d%c%c%02d, i , CODE , num0 , num1 , seatsj );arranged +;free(seats);return 0;int main()int cmdNum = 0;/用于存储功能号int t;int errorCode = 0;/用于存储函数返回的错误号int num = 0;/学号char name20;/考生姓名int maxStuCount = 0;/考场最多容纳考生人数int ch=0;/用于清除输入缓存Stude

36、ntChain * stuChain = CreateStudentChain();if(NULL=stuChain)return 1;while(cmdNum=SelectCommand() != QUIT)switch(cmdNum)case 1:printf(n考生信息录入(输入格式: 学号,姓名)n);while(1)errorCode = InputStudentInfo(&num,name);if(errorCode=-1)break;elseStudentNode * stuNode = CreateStudentNode(num,name);ChainAppendNode(stuCha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号