资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据结构课程设计报告 课题名称:_考生报名管理系统_专业班级: 11软件2班 学 号: 20110311220 姓 名:_胡德义_ 指导老师: 刘 杰 成 绩:_ 2012年12月一、课题名称 考生报名管理系统。二、主要内容考生报名管理系统的设计主要是实现对考生报考相应类别考试的管理和相关操作。基本功能如下:(1)考试报考息录入、添加功能:包括考生的考号、姓名、性别、年龄、籍贯、考试类别(如:计算机二级VC,英语四级等)等信息。(2)报考信息查询:可以按考生的考号查询某个考生的报考信息。可以按考试类别查询所有报告改类别的学生信息(3)报考信息排序:按考生的考号升序排序。按考试类别升序排序,考试类别相同时再按考试考号升序排序。(4)考生报考信息的修改、删除功能:按考生考号修改或删除某个考生的相关信息。(5)统计功能:分别统计系统中共有多少人报名、每个考生的报考种类的数量、每种考试类别的考生数量等。三、课题设计的基本思想,原理和算法描述对于这个题目很显然用线性表的顺序存储再好不过了,根据题目的要求得出应有11个功能函数,主要十个函数模块,并利用循环实现多次操作。其界面为:图 1 主菜单界面设计图 对应的具体情况为:(1) 添加函数。其重点是添加重号的问题,当重号时要判断除了考试类别其他元素手否完全相同,当然同一个学生的考试类别要不同,再添加时也要判断,具体的算法是利用while循环,若添加失败则循环,否则停止。(2) 利用学号查询函数。(3)利用考试类别查询函数。主要就是strcmp这个函数。(4)利用学号排序函数(升序)。本程序是利用冒泡排序,值得注意的是在交换位置时同时要该其内在的元素,因为其是一个整体,不像单一的值。先比较学号而后比较考试类别,(5)利用考试类别排序函数(升序)。其算法与4相同,唯有的区别是其顺序颠倒。(6)修改函数1。其主要的功能是改变一个学号对应的姓名,性别,年龄,籍贯但考试类别不能改变,因为一个学号对应多个考试类别。(7)修改函数2。其主要是修改某个学号对应的其中的一个考试类别,即改变某个学生的一门考试。(8)删除函数1。主要删除一个考生的一门报考科目。(9)删除函数2。其目的是删除一个考生的所有报考科目,即删除这个考生。(10)统计函数。针对所有数据从三个方面统计,分别是:每种考试类别有多少人报考科,每个考生报考了几门,一共有多少人参与报考。(11)退出函数。其流程图如下:图 2 主菜单流程图模块的主要的难点是:1.创建时,要判断是否重号,若是立马判断基本信息是否完全匹配,而后还要判断其考试类别是否已添加。2.以考试类别统计时因为没有定下有几个考试类别,所以要普查线性表看有多少种考试类别,并把其存放起来,然后在普查一遍统计各个的个数,以学号统计类同。四、运行示例及结果分析图 1 (成功添加一个学生)图 2 (再次添加这个学生时信息不一致和即使信息一致课程却以报考了)图 3 (输入的学号查不到的情况)图 4 (查询1号时的结果)图 5 (输入的考试类别查不到时)图 6 (输入11查找后的结果)图 7 (按学号升序排序)图 8 (按考试类别升序排序结果)图 9 (输入的学号不存在无法修改)图 10 (将1号的除了考试类别的信息修改了)图 11 (输入的学号不存在不能修改)图 12 (即使学号有了 考试类别不存在也不能修改)图 13 (修改后的考试类别不能与以添加的相同)图 14 (修改成功的结果)图 15 (找不到删除的学号)图 16 (学号与考试类别必须都匹配否则不能删除)图 17 (删除一个某个考生的一个考试类别)图 18 (删除的学号不存在)图 19 (删除一个考生的所有考试类别的结果)图 20 (从考试类别,学号,总人数进行统计)五、调试和运行程序过程中产生的问题及采取的措施1.对要求分析的错误。开始自己的理解是学号不能重复,但要求中要求统计每个学生,显然学生的学号可以重复的,只要他的考试类别不同即可,当然不重号也是可以的,那就是对考试类别进行再分割,但是不同的学生具有不同的考试数目,因而在统计的时候十分麻烦,显然用重号解决跟优;2.总体设计的不足。对几个主要的功能函数的设计还是比较全面的,然而为了使运行的结果具有对比性和他人对程序的操作更简单,应该在实现每个函数前把数据输出,便于运行者功判断模块函数是否正确,刚开始没想到。3模块函数的问题与不足。模块一:添加函数(1)虽然考虑到了重号问题,但没有考虑到同一个考生的姓名,性别,年龄,籍贯是相同的,所以在添加重号是要对添加的这四个信息验证,具体的语句:if(strcmp(L-datai.name,L-dataL-length.name)=0&strcmp(L-datai.sex,L-dataL-length.sex)=0&strcmp(L-datai.age,L-dataL-length.age)=0&strcmp(L-datai.jg,L-dataL-length.jg)=0)而后在这个的基础上进行判断考试类别是否相同。(2)问题一的反面显然对应着添加的信息有问题,但为了方便错误了可以再添加,故用了循环函数,所以会输出多个:输入的信息有误输入的信息有误输入的信息有误解决方法是:else a=1;用a来进行标记,在这个循环结束够添加了,if(a=1) printf( 输入的信息有误n);模块二:以学号为基础查询函数。没有问题。模块三:以考试类别为基础查询函数。没有问题。模块四:按学号升序排序(学号相同以考试类别再升序)函数(1)刚开始把学号定义为字符串,但比较时出现了问题,如:2和11比较的结果是211,显然按字符串的比较没有任何问题,不过这是学号,当然改成02就解决了,不过一般的话人们习惯不写0,所以排序的结果与所想的不符。解决方法:把num定义为整形,为防止输入不是整形,在输入时应给予提醒。 模块五:以考试类别升序排序(考试类别相同以学号升序)函数。没有问题。模块六:修改某个学生的除了考试类别其他信息函数(1)因为要修改所有重号的信息,故要对线性表进行普查,查到后就修改了,并且添加了输出函数,结果就是结果被多次输出,而且每次还不同,与设想的最后输出结果不符。解决方法:for(i=0;ilength;i+) if(L-datai.num=num) c=1;if(f=0) printf( 输入要修改的内容n); printf( 姓名 性别 年龄 籍贯n); scanf(%s%s%s%s,name,sex,age,jg );f+; strcpy(L-datai.name,name); strcpy(L-datai.sex,sex); strcpy(L-datai.age,age); strcpy(L-datai.jg,jg); if(c=1&i=L-length-1) printf( 修改成功n);printf( 修改后是n); printf(t学号t姓名t性别t年龄t籍贯t考试类别n); for(i=0;ilength;i+) printf(t%dt%st%st%st%st%sn,L-datai.num,L-datai.name,L-datai.sex,L-datai.age,L-datai.jg,L-datai.kaoshi ); 模块七:修改某个学生的一个考试类别函数(1)本没有考虑到新的考试类别是否会和以添加的相同。解决方法:在输入新的考试类别后进行判断for(int j=0;jlength;j+) if(L-dataj.num=num&strcmp(L-dataj.kaoshi,kaoshi2)=0)u=1;printf( 此课程该考生已报考 修改失败n);return; 模块八:删除一个学生的一个考试类别的函数。没有问题。模块九:删除一个学生的所有考试类别函数(1)如果添加的元素全是一个学生的情况下,出现不能删除完的情况: for (i=0;ilength;i+) if(L-datai.num=num) c=1; for (j=i;jlength-1;j+) L-dataj=L-dataj+1;L-length-; 解决方法:显然运行一次后元素前移了,但i的值却增大了,不能从0再次查找了,导致循环提前结束,稍作修改:for (i=0;ilength;i+) if(L-datai.num=num) c=1; for (j=i;jlength-1;j+) L-dataj=L-dataj+1;L-length-; i=-1; 模块十:统计函数。没有问题。六、总结 这次程序对于功能的实现比较全,但代码比较复杂,耗费了我比较多的时间,主要的问题并非是在算法的设计上,而是由于对需求的分析不够透彻,从而对题意的要求产生了偏差,最后发现了问题有重做,本两天可以完成的用了四天,但瑕不掩瑜,收获颇丰。首先使自己明白透彻的理解一个问题很重要,也是设计一个程序的第一步,最重要的环节,如同行路一样,不要走了很远甚至已到达“终点”才知路选错了,这样不仅浪费了时间,而且这是一个程序最致命的缺点,严谨和仔细是每一个程序员必备的能力。接着,程序在设计过程中要一个一个模块的去完成,不是一把抓,即是一个个函数的去实现,终点是难的的函数,当你克服了难的困难后会有比较大的成就感,会获得源源不断的力量源泉,毕竟解决矛盾要从主要的着手。再而,一个自信的心态很重要,程序其实很简单的,就几个功能函数,最后用一个主函数将其囊括即可,不畏
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号