版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.PAGE.课程设计报告课程设计名称:数据结构系:三系学生姓名:班级:学号:成绩:指导教师:开课时间:2011-2012学年1学期一.设计题目考生报名管理系统二.主要内容考生报名管理系统的设计主要是实现对考生报考相应类别考试的管理和相关操作。基本功能如下:〔1考试报考息录入、添加功能:包括考生的考号、姓名、性别、年龄、籍贯、考试类别等信息。〔2报考信息查询:可以按考生的考号查询某个考生的报考信息。〔3报考信息排序:按考生的考号排序或按考试类别排序。〔4考生报考信息的修改或删除:按考生考号修改或删除某个考生的相关信息。〔5统计功能:分别统计系统中共有多少人报名、每个考生的报考种类的数量、每种考试类别的考生数量等。三.课题设计的基本思想,原理和算法描述主函数〔intmain主函数〔intmain显示菜单函数〔Display<L>显示菜单函数〔Display<L>定义指针〔LinkList*L初始化线性表函数〔InitList<L>原理和算法描述:本课题是采用单链表编写程序,用函数实现其整个功能,整个程序分为三个模块:1.编写头文件和成员;2.编写外部函数;3.编写主函数。1.编写头文件和成员.1.1头文件:#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>1.2成员:考号<num>、姓名<name>、性别<sex>、年龄<age>、籍贯<address>、考试类别<type>等信息。2.编写外部函数.2.1输入函数〔CreateListR//采用尾差法创建链表a.定义intn//该链表的总人数定义LinkList*s//做作为插入的新结点定义LinkList*r//始终指向尾结点b.使用for循环将新结点逐次插入链表之后〔条件是inti<nc.将尾结点指向null2.2输出函数〔DispLista.定义LinkList*p//指向第一个元素结点b.用while循环逐次输出链表元素〔条件是p!=null2.3查找函数〔LocateElema.定义ElemTypee//作为查找考号的对象b.定义LinkList*p//指向第一个元素结点c.用while循环查找要查找的结点〔条件是p!=NULL&&p->data.num!=e.num>d.找到该结点就输出该结点指向的元素,否则结束2.4删除函数〔ListDeletea.定义ElemTypee//作为删除考号的对象b.定义LinkList*p//指向头结点c.定义LinkList*q//作为存储删除结点的变量d.用while循环查找该结点,并且用free<q>清空该结点<条件是e.num!=p->next->data.num&&p!=NULL>e.调用输出函数,输出删除后的结果2.5修改函数〔createa.定义ElemTypei//作为修改考号的对象b.定义LinkList*p//指向头结点c.用while循环查找该结点<条件是i.num!=p->data.num&&p!=NULL>d.重新输入该结点指向的所有元素e.并且调用输出函数显示修改后的所有信息2.6排序函数〔sort//采用直接插入排序a.定义LinkList*p//指向未排序的第一个结点b.定义LinkList*q//指向头结点c.用while循环寻找p指向的元素比排好序中的元素大,则将其插入其后d.调用输出函数,显示排好序的信息。2.7统计函数〔sumLista.定义LinkList*p//指向头结点b.定义多个变量//统计报考各科的人数c.用while循环和if语句统计人数2.8插入函数<Insterlist>a.定义变量intn//作为插入的人数b.定义变量LinkList*s//作为新插入结点变量c.定义变量LinkList*r//指向尾指针d.定义变量LinkList*p//作为循环条件变量e.用while循环找到尾结点,插入新元素2.9显示菜单并且选择函数〔Displaya.定义变量a//作为选择变量b.用switch语句,编写选择项目2.10初始化线性表函数〔InitList清除线性表函数〔DestroyList菜单函数〔display3.编写主函数a.定义LinkList*Lb.调用初始化线性表函数c.调用显示菜单函数四、运行示例及结果分析运行结果如上图,此图已给出整个程序的菜单功能选项,请选择你所需要的操作的项目序号:排序功能:用直接插入排序,按考号进行递增排序查找功能:请输入考号进行查找,如果找到就输出此考生信息删除功能:首先寻找要删除的考生的考号,再删除该结点4.输出功能:使用循环直接输出结点所指向的元素5.输入功能:采用尾插法,逐次将新结点插入单链表之后6.释放空间:用循环语句,再用free函数清理空间7.统计功能:用循环和条件语句,统计报考各科的人数8.修改功能:先找到修改的考生考号,再重新输入该生信息9.插入功能:先找到尾结点,再输入新元素接在链表之后10.结束功能根据你选择的操作的提示,按步骤执行.例如、选择5输入信息:选择4输出信息:选择7统计信息:选择2查找信息:选择1递增排序:选择8修改信息:选择6释放空间:选择9结束程序:五、调试和运行程序过程中产生的问题及采取的措施问题和措施:1.在用尾插法创建链表时,尾结点没有指向NULL2.在统计功能时,结点指向错误,导致累计人数少3.字符数组之间不能直接互值,不能用数学符号比较大小,应该用循环逐个字符互值,用strcmp函数比较大小4.在结束函数中,要用exit函数,必须定义头文件#include<stdlib.h>5.在直接插入排序中,插入结点时,结点指向指错六、总结和展望一周半的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程."千里之行始于足下",通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.通过这次数据结构设计,本人在多方面都有所提高。通过这次设计,综合运用本专业所学课程的理论和生产实际知识进行一次编写考生信息设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了数据各课程所学的内容,掌握数据结构设计的方法和步骤,掌握数据结构设计的基本的方法,懂得了怎样分析题目,怎样确定程序方案,了解数据结构的基本思想,提高了计算能力,编程能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。在这次设计过程中,体现出自己单独设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。在此感谢我们的刘老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次数据结构设计的每个实验细节和每个数据,都离不开老师的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正,本人将万分感谢。七、参考资料[1]李春葆等著.数据结构课程设计案例精编.清华大学出版社,2009[2]李春葆等主编.数据结构实验和课程设计教程.清华大学出版社,2009代码如下:#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>typedefstructstudent{intnum;charsex[10];charname[10];intage;charaddress[10];inttype;}ElemType;typedefstructLNode { ElemTypedata;structLNode*next;}LinkList;ElemTypee;voidInitList<LinkList*&L>{ L=<LinkList*>malloc<sizeof<LinkList>>; L->next=NULL;}voidDestroyList<LinkList*&L>{ LinkList*p=L,*q=p->next;while<q!=NULL> { free<p>; p=q; q=p->next; } free<p>; printf<"此链表为空,请重新选择,创建链表\n\n\n">;}voidCreateListR<LinkList*&L>{intn;printf<"请输入要增加的人数n=">;scanf<"%d",&n>; LinkList*s,*r;inti;L=<LinkList*>malloc<sizeof<LinkList>>; r=L; printf<"输入考号<不能相同>姓名性别籍贯年龄考试类别<1.英语.电脑.数学.语文.其它>\n">;for<i=0;i<n;i++>{s=<LinkList*>malloc<sizeof<LinkList>>;scanf<"%d%s%s%s%d%d",&s->data.num,&s->,&s->data.sex,&s->data.address,&s->data.age,&s->data.type>;r->next=s;r=s;}r->next=NULL; }voidDispList<LinkList*L>{ LinkList*p=L->next;while<p!=NULL> {printf<"考号<不能相同>姓名性别籍贯年龄考试类别<1.英语.电脑.数学.语文.其它>\n">; printf<"%d%s%s%s%d%d\n",p->data.num,p->,p->data.sex,p->data.address,p->data.age,p->data.type>; p=p->next; } printf<"\n">;}intLocateElem<LinkList*L>{printf<"请输入要查找的考号i=">;scanf<"%d",&e.num>; LinkList*p=L->next;while<p!=NULL&&p->data.num!=e.num> { p=p->next; }if<p==NULL>return<0>;else {printf<"考号:">; printf<"%d\n",p->data.num>; printf<"性别:">; printf<"%s\n",p->data.sex>; printf<"姓名:">; printf<"%s\n",p->>; printf<"籍贯:">; printf<"%s\n",p->data.address>; printf<"年龄:">; printf<"%d\n",p->data.age>; printf<"考试类别<1.英语.电脑.数学.语文.其它>:">; printf<"%d\n",p->data.type>;return1;}}intListDelete<LinkList*&L>{printf<"请输入要删除的考号i=">; scanf<"%d",&e.num>; LinkList*p=L,*q;while<e.num!=p->next->data.num&&p!=NULL> { p=p->next; }if<p==NULL> return0;else { q=p->next; if<q==NULL>return0; p->next=q->next; free<q>; printf<"输出删除以后的全部信息:\n\n">; DispList<L>;return1; }}intcreate<LinkList*&L>{printf<"请输入要修改人的考号i=">; scanf<"%d",&e.num>; LinkList*p=L;while<e.num!=p->data.num&&p!=NULL> { p=p->next; }if <p==NULL>return0;else { printf<"请输入考号\n">;scanf<"%d",&e.num>;if<p->data.num==e.num> { printf<"允许修改,请输入:姓名性别籍贯年龄考试类别<1.英语.电脑.数学.语文.其它>\n">; scanf<"%s%s%s%d%d",&p->,&p->data.sex,&p->data.address,&p->data.age,&p->data.type>; printf<"输出修改以后的全部信息:\n\n">; DispList<L>;return<1>; }else { printf<"考号不同,不能修改,重新执行修改信息\n">;return<1>; } }}voidsort<LinkList*&L>{LinkList*p=L->next,*q,*r;if<p!=NULL>{r=p->next;p->next=NULL;p=r;while<p!=NULL>{r=p->next;q=L;while<q->next!=NULL&&q->next->data.num<p->data.num> q=q->next; p->next=q->next; q->next=p; p=r;}}DispList<L>;}voidsumList<LinkList*&L>{LinkList*p=L;intn=0,m=0,h=0,i=0,j=0,k=0;while<p->next!=NULL>{n++;if<p->next->data.type==1> m++;if<p->next->data.type==2> i++;if<p->next->data.type==3> h++;if<p->next->data.type==4> j++;if<p->next->data.type==5> k++;p=p->next;}printf<"报考的总人数是n=">;printf<"%d\n",n>;printf<"报考英语的人数是e=">;printf<"%d\n",m>;printf<"报考数学的人数是m=">;printf<"%d\n",h>;printf<"报考电脑的人数是c=">;printf<"%d\n",i>;printf<"报考语文的人数是k=">;printf<"%d\n",j>;printf<"报考其它的人数是q=">;printf<"%d\n",k>;}voidInsterlist<LinkList*L>{intn;printf<"请输入要插入的人数n=">;scanf<"%d",&n>; LinkList*s,*r,*p=L;inti;//r=s; printf<"输入考号<不能相同>姓名性别籍贯年龄考试类别<1.英语.电脑.数学.语文.其它>\n">;while<p->next!=NULL> p=p->next;for<i=0;i<n;i++>{s=<LinkList*>malloc<sizeof<LinkList>>;scanf<"%d%s%s%s%d%d",&s->data.num,&s->
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年《价值为纲》学习心得范例(3篇)
- 课题申报参考:接受美学视野下的卞之琳莎学研究
- 课题申报参考:教育强国进程中高校继续教育高质量发展的保障机制和推进路径研究
- 2025版房地产销售代理授权委托合同3篇
- 二零二五年度物流仓储中心临时搬运工劳动合同书4篇
- 2025版学校游泳池配套设施租赁与管理承包合同示范2篇
- 二零二五版艺术品拍卖师佣金分成合同3篇
- 个性化离婚合同与起诉状套装2024版版B版
- 二零二五年度健康管理与养老服务业合作协议3篇
- 二零二五年度图书封面及插图设计合同4篇
- 山东铁投集团招聘笔试冲刺题2025
- 真需求-打开商业世界的万能钥匙
- 2025年天津市政集团公司招聘笔试参考题库含答案解析
- GB/T 44953-2024雷电灾害调查技术规范
- 2024-2025学年度第一学期三年级语文寒假作业第三天
- 2024年列车员技能竞赛理论考试题库500题(含答案)
- 心律失常介入治疗
- 6S精益实战手册
- 展会场馆保洁管理服务方案
- 监理从业水平培训课件
- 广东省惠州市实验中学2025届物理高二第一学期期末综合测试试题含解析
评论
0/150
提交评论