1西安交通大学城市学院2012数据结构课程设计报告单链表的应用曹春计算机科学与技术计算机001数据结构之单链表的应用2/53西安交通大学城市学院《数据结构课程设计报告书》题目:学生信息管理系统的开发与设计专业:计算机科学与技术专业班级:计算机001学号:10030038姓名:曹春指导教师:吕雅荣开始日期:2012年6月02日完成日期:2012年6月10日数据结构之单链表的应用3/53总目录1序言……………………………………………………………52问题的分析和总体设计………………………………………52.1问题分析…………………………………………………52.2总体设计…………………………………………………53项目介绍………………………………………………………53.1具体实现方法……………………………………………63.2ADT流程图………………………………………………64模块图…………………………………………………………64.1登录模块…………………………………………………74.2录入学生信息模块………………………………………74.3插入学生信息模块………………………………………84.4删除学生信息模块………………………………………84.5修改学生信息模块………………………………………84.6查找学生信息模块………………………………………84.7学生简历输入模块………………………………………84.8退出模块…………………………………………………95模块划分、数据测试…………………………………………95.1登录模块…………………………………………………95.2录入学生信息模块………………………………………165.3插入学生信息模块………………………………………175.4删除学生信息模块………………………………………19数据结构之单链表的应用4/535.5修改学生信息模块………………………………………225.6查找学生信息模块………………………………………235.7学生简历输入模块………………………………………275.8退出模块…………………………………………………286性能要求………………………………………………………297遇到的问题及解决方法………………………………………308总结和体会……………………………………………………309源代码…………………………………………………………31数据结构之单链表的应用5/531.序言随着大二学习的知识的增多,数据结构和算法也逐渐接触,为了能够将课堂上的知识应用到实际,并在实际中加以深入特此以单链表的知识来创建学生信息管理系统。面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范化管理、科学性统计和查询、修改、增加、删除等,从而减少管理方面的工作量。本系统主要应用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是计算学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到了学生选课、针对这些要求设计了学生信息管理系统。由于自己水平有限,其中还有很多东西不完善比如说,没有用到文件指针保存等等,而且由于时间有限自己想加入的功能,都未能添加,还请谅解!编者:曹春2.问题的分析和总体设计2.1问题的分析通过创建单链表,并运用其链式存储结构实现对学生管理系统的学生简历的添加、和更新(增、删、改、查)操作,从而进一步了解单链表的基本操作。2.2总体设计新建立单链表,再通过c++语言实现对单链表的基本操作(增、删、改、查)并通过在编写过程中,对各个单链表的模块功能进行完善,以实现其功能更加稳定和全面!3.项目简介数据结构之单链表的应用6/533.1.具体实现方法通过c语言和c++语言实现单链表的创建和单链表功能函数的编写和完善!3.2.ADT流程图ADTsqlist{数据对象:D={xuehao,xingming,xingbie,banji,phohe,address|均为字符串类型}charxuehao[10];charxingming[10];charxingbie[5];charbanji[10];charphohe[10];charaddress[10];数据关系:R={ai,ai+1|ai,ai+1∈D,i=1,2,3,4,5...}基本运算:init_sqlist(sqlist*&head)//初始化单链表,即构造一个表头节点fuzhi_wencha(sqlist*&head,intn)//尾插法赋值charu(sqlist*&head,chartem[])//插入新的学生信息shanchu_sqlist(sqlist*&head)//删除已有学生信息xiugai_sqlist(sqlist*&head)//修改已有学生信息chazhao_xh(sqlist*&head,chartem[])//按学号查找学生信息chazhao_xm(sqlist*&head,chartem[])//按姓名查找学生信息display_sqlist(sqlist*&head)//显示所有学生的简历信息数据结构之单链表的应用7/53}4.模块图4.1.登入模块4.2.录入信息管理模块4.3.插入学生信息模块登陆界面模块录入学生信息模块输出学生简历模块退出程序模块查找学生学信息模块修改学生信息模块插入学生信息模块删除学生信息模块录入学生信息学号电话家庭住址班级性别姓名数据结构之单链表的应用8/534.4.删除学生信息模块4.5.修改学生信息模块4.7.输出学生简历信息模块修改学生信息学号电话家庭住址班级性别姓名删除学生信息按学号删除插入学生信息学号电话家庭住址班级性别姓名数据结构之单链表的应用9/534.8.退出模块5.模块划分和数据测设5.1登录模块实现后的效果:退出程序谢谢使用!输出学生信息学号电话家庭住址班级性别姓名数据结构之单链表的应用10/53代码设计:(主函数+菜单函数实现)主函数代码:intmain(){sqlist*student;//声明为一个单链表类型的指针menu(student);return0;}菜单函数代码:voidmenu(sqlist*&student){a:system(cls);system(color1e);coutendlendlendl==========\3春\3春\3单\3链\3表\3==========endl========\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3==========endl======1.录入学生信息======endl======2.插入学生信息(按学号)======endl======3.删除学生信息(按学号)======endl======4.修改学生信息(按学号)======endl======5.查找学生信息(按学号/姓名)======endl数据结构之单链表的应用11/53======6.学生简历(全部学生)======endl======7.退出程序======endl===================================endl========================================endlendlendl;cout请选择:\aendl;intn;cinn;switch(n){case1:{system(color2e);init_sqlist(student);cout单链表初始化成功!endl;cout请输入学生的人数为:\n;intl;cinl;fuzhi_wencha(student,l);coutendl尾插法录入学生信息成功!endl;system(pause);gotoa;break;}case2:{system(color3e);cout请输入要插入的新生的简历的学生学号:endl;chartem[10];cintem;charu(student,tem);coutendl插入操作执行完毕!!!endl;system(pause);gotoa;break;}case3:{system(color4e);if(sqlist_empty(student))//删除之前要先检查该单链表是否为空!{cout该单链表中没有录入任何学生的的信息!!!endl;}else{数据结构之单链表的应用12/53shanchu_sqlist(student);coutendl删除学生执行完毕!endl;}system(pause);gotoa;break;}case4:{system(color5e);xiugai_sqlist(student);coutendl修改学生信息执行完毕!endlendl;system(pause);gotoa;break;}case5:{system(color6e);b:sqlist*p;system(cls);cout\4\4\4查\4找\4学\4生\4信\4息\4\4\4endl--------------------endlendl---1.按学号查找---endlendl---2.按姓名查找---endlendl--------------------endlendl\2\2\2\2\2\2\2\2\2\2\2endl请选择:\aendl;intm;cinm;if(m==1){cout请输入要输出的学生简历的学生学号:endl;chartem[10];cintem;p=chazhao_xh(student,tem);if(p){cout姓名为p-xingming的学生信息如下:endl;cout-----------p-xingming的学生简历---------------endlendl1.学号:p-xuehaoendl2.姓名:p-xingmingendl数据结构之单链表的应用13/533.性别:p-xingbieendl4.班级:p-banjiendl5.班级:p-phoheendl6.家庭住址:p-addressendl;coutendl查找信息执行完毕!!endl;}else{cout该学生系统中没有学号为tem的学生信息\a\a\a\aendl;}system(pause);gotoa;break;}elseif(m==2){cout请输入要输出的学生简历的学生姓名:endl;sqlist*q;chartem1[10];cintem1;q=chazhao_xm(student,tem1);if(q){cout姓名为q-xingming的学生信息如下:endl;cout-----------q-xingming的学生简历---------------endlendl1.学号:q-xuehaoendl2.姓名:q-xingmingendl3.性别:q-xingbieendl4.班级:q-banjiendl5.班级:q-phoheendl6.家庭住址:q-addressendl;coutendl查找信息执行完毕!!endl;}else{cout该学生系统中没有姓名为tem1的学生信息\a\a\aendl;}system(pause);gotoa;break;数据结构之单链表的应用14/53}else{co