考生报名系统(数据结构).doc_第1页
考生报名系统(数据结构).doc_第2页
考生报名系统(数据结构).doc_第3页
考生报名系统(数据结构).doc_第4页
考生报名系统(数据结构).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

数据结构课程设计报告 课 程 设 计 报 告课程设计名称:数据结构 系 : 三 系 学生姓名: 班 级: 学 号: 成 绩: 指导教师: 开课时间: 2011-2012 学年 1 学期一设计题目 考生报名管理系统二主要内容考生报名管理系统的设计主要是实现对考生报考相应类别考试的管理和相关操作。基本功能如下:(1)考试报考息录入、添加功能:包括考生的考号、姓名、性别、年龄、籍贯、考试类别等信息。(2)报考信息查询:可以按考生的考号查询某个考生的报考信息。(3)报考信息排序:按考生的考号排序或按考试类别排序。(4)考生报考信息的修改或删除:按考生考号修改或删除某个考生的相关信息。(5)统计功能:分别统计系统中共有多少人报名、每个考生的报考种类的数量、每种考试类别的考生数量等。三课题设计的基本思想,原理和算法描述主函数(int main)l 基本思想: 显示菜单函数(Display(L))定义指针(LinkList *L)初始化线性表函数(InitList(L)) l 原理和算法描述:本课题是采用单链表编写程序,用函数实现其整个功能,整个程序分为三个模块:1.编写头文件和成员;2.编写外部函数;3.编写主函数。1. 编写头文件和成员.1.1头文件: #include #include #include #include 1.2成员 :考号(num)、姓名(name)、性别(sex)、年龄(age)、籍贯(address)、考试类别(type)等信息。2.编写外部函数. 2.1输入函数(CreateListR) /采用尾差法创建链表 a定义int n /该链表的总人数 定义LinkList *s /做作为插入的新结点 定义LinkList *r /始终指向尾结点 b使用for循环将新结点逐次插入链表之后(条件是int idata.num!=e.num) d找到该结点就输出该结点指向的元素,否则结束 2.4删除函数(ListDelete) a定义ElemType e /作为删除考号的对象 b定义LinkList *p /指向头结点c定义LinkList *q /作为存储删除结点的变量d用while循环查找该结点,并且用free(q)清空该结点(条件是e.num!=p-next-data.num &p!=NULL)e调用输出函数,输出删除后的结果2.5修改函数(create) a定义ElemType i /作为修改考号的对象 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统计函数(sumList) a定义LinkList *p /指向头结点 b定义多个变量 /统计报考各科的人数 c用while循环和if语句统计人数 2.8插入函数(Insterlist) a.定义变量int n /作为插入的人数 b.定义变量LinkList *s /作为新插入结点变量 c.定义变量LinkList *r /指向尾指针 d.定义变量LinkList *p /作为循环条件变量 e.用while循环找到尾结点,插入新元素2.9显示菜单并且选择函数(Display) a定义变量a /作为选择变量 b用switch语句,编写选择项目2.10初始化线性表函数(InitList) 清除线性表函数(DestroyList)菜单函数(display)3编写主函数 a定义LinkList *L b调用初始化线性表函数 c调用显示菜单函数四、运行示例及结果分析运行结果如上图,此图已给出整个程序的菜单功能选项,请选择你所需要的操作的项目序号:1 排序功能 : 用直接插入排序,按考号进行递增排序2 查找功能 :请输入考号进行查找,如果找到就输出此考生信息3 删除功能 :首先寻找要删除的考生的考号,再删除该结点4. 输出功能 : 使用循环直接输出结点所指向的元素5. 输入功能 : 采用尾插法,逐次将新结点插入单链表之后6. 释放空间 : 用循环语句,再用free函数清理空间7. 统计功能 : 用循环和条件语句,统计报考各科的人数8. 修改功能 : 先找到修改的考生考号,再重新输入该生信息9插入功能 : 先找到尾结点,再输入新元素接在链表之后10. 结束功能 根据你选择的操作的提示,按步骤执行.例如、选择5 输入信息:选择4 输出信息:选择7 统计信息:选择2 查找信息:选择1 递增排序:选择8 修改信息:选择6 释放空间:选择9 结束程序:五、调试和运行程序过程中产生的问题及采取的措施问题和措施:1.在用尾插法创建链表时,尾结点没有指向NULL 2.在统计功能时,结点指向错误,导致累计人数少 3.字符数组之间不能直接互值,不能用数学符号比较大小,应该用循环逐个字符互值,用strcmp函数比较大小 4.在结束函数中,要用exit函数,必须定义头文件#include 5.在直接插入排序中,插入结点时,结点指向指错六、总结和展望一周半的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础通过这次数据结构设计,本人在多方面都有所提高。通过这次设计,综合运用本专业所学课程的理论和生产实际知识进行一次编写考生信息设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了数据各课程所学的内容,掌握数据结构设计的方法和步骤,掌握数据结构设计的基本的方法,懂得了怎样分析题目,怎样确定程序方案,了解数据结构的基本思想,提高了计算能力,编程能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。在这次设计过程中,体现出自己单独设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。在此感谢我们的刘老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次数据结构设计的每个实验细节和每个数据,都离不开老师的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。 由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正,本人将万分感谢。七、参考资料1 李春葆等著.数据结构课程设计案例精编.清华大学出版社,20092 李春葆等主编.数据结构实验和课程设计教程. 清华大学出版社,2009)代码如下:#include #include #include #include typedef struct student int num; char sex10;char name10;int age;char address10; int type;ElemType;typedef struct LNodeElemType data; struct LNode *next; LinkList;ElemType e;void InitList(LinkList *&L)L=(LinkList *)malloc(sizeof(LinkList); L-next=NULL;void DestroyList(LinkList *&L)LinkList *p=L,*q=p-next;while (q!=NULL)free(p);p=q;q=p-next;free(p);printf(此链表为空,请重新选择,创建链表nnn);void CreateListR(LinkList *&L) int n; printf(请输入要增加的人数n=); scanf(%d,&n); LinkList *s,*r;int i; L=(LinkList *)malloc(sizeof(LinkList); r=L; printf(输入考号(不能相同) 姓名性别籍贯年龄考试类别(1.英语.电脑.数学.语文.其它)n);for (i=0;idata.num,&,&s-data.sex,&s-data.address,&s-data.age,&s-data.type); r-next=s; r=s; r-next=NULL; void DispList(LinkList *L)LinkList *p=L-next;while (p!=NULL) printf(考号(不能相同) 姓名性别籍贯年龄考试类别(1.英语.电脑.数学.语文.其它)n); printf(%d %s %s %s %d %dn,p-data.num,,p-data.sex,p-data.address,p-data.age,p-data.type); p=p-next;printf(n); int LocateElem(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);elseprintf(考号:); printf(%dn,p-data.num); printf(性别:); printf(%sn,p-data.sex); printf(姓名:); printf(%sn,); printf(籍贯:); printf(%sn,p-data.address); printf(年龄:); printf(%dn,p-data.age); printf(考试类别(1.英语.电脑.数学.语文.其它):); printf(%dn,p-data.type); return 1;int ListDelete(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)return 0;elseq=p-next;if (q=NULL)return 0;p-next=q-next;free(q);printf(输出删除以后的全部信息:nn); DispList(L);return 1; int create(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)return 0;else printf(请输入考号n); scanf(%d,&e.num); if(p-data.num=e.num) printf(允许修改,请输入:姓名性别籍贯年龄考试类别(1.英语.电脑.数学.语文.其它)n); scanf(%s %s %s %d %d,&,&p-data.sex,&p-data.address,&p-data.age,&p-data.type); printf(输出修改以后的全部信息:nn); DispList(L); return (1); else printf(考号不同,不能修改,重新执行修改信息n); return (1);void sort(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.numdata.num)q=q-next;p-next=q-next;q-next=p;p=r; DispList(L);void sumList(LinkList *&L)LinkList *p=L; int n=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(%dn,n); printf(报考英语的人数是e=); printf(%dn,m); printf(报考数学的人数是m=); printf(%dn,h); printf(报考电脑的人数是c=); printf(%dn,i); printf(报考语文的人数是k=); printf(%dn,j); printf(报考其它的人数是q=); printf(%dn,k);void Insterlist(LinkList *L) int n; printf(请输入要插入的人数n=); scanf(%d,&n); LinkList *s,*r,*p=L;int i; /r=s; printf(输入考号(不能相同) 姓名性别籍贯年龄考试类别(1.英语.电脑.数学.语文.其它)n);while(p-next!=NULL)p=p-next;for (i=0;idata.num,&,&s-data.sex,&s-data.address,&s-data.age,&s-data.type); p-

温馨提示

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

评论

0/150

提交评论