还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
“学生通讯信息记录系统”的设计与实现
一、设计要求
1.问题的描述“学生通讯信息记录系统”是为了实现快速的对学生信息进行录入、删除、查找、显示各个功能靠函数实现2.需求分析
(1)应该包括以下功能输入信息、显示信息、查找以姓名作为关键字、删除信息
(2)作为一个完整的系统,应具有友好的界面和较强的容错能力
二、概要设计
1.主界面设计
2.储存结构设计本系统主要采用链表类型来表示储存“学生信息记录系统”中的信息程序中定义了address结构其中,包括学生的姓名、宿舍信息和学号
3.系统功能的设计1输入信息——enter;2显示信息———display;3查找以姓名作为关键字———search;4删除信息———delete;
三、模块设计
1.模块设计本成绩包含两个模块主程序模块和链表操作模块
2.系统的程序及功能设计系统的功能主要靠函数的功能的实现的,以下是实现各功能的函数voidenter;/*函数声明*/voidsearch;voids__e;voidload;voidlist;voidddeletestructaddress**startstructaddress**last;voidinsertstructaddress*istructaddress**startstructaddress**last;voidinputschar*char*int;voiddisplaystructaddress*;intmenu_selectvoid;
4、详细设计
1.数据类型定义
2.structaddress{/*定义结构*/
3.charname
[10];
4.charstreet
[50];
5.charcity
[10];
6.charstate
[15];
7.chareip
[7];
8.structaddress*next;/*后继指针*/
9.structaddress*prior;/*前驱指针*/
10.};系统主要子程序详细设计
(1)插入学生信息voidenter/*输入函数本函数循环输入资料,当输入姓名为空时退出*/{structaddress*info;/*定义当前结点*/for;;{info=structaddress*__llocsizeofstructaddress;/*为当前结点分配空间*/if!info{printf\nOutofmemory;exit0;/*如果分配空间失败,退出程序*/}printf输入空姓名结束:\n;inputs请输入姓名:info-name10;if!info-name
[0]break;/*如果输入姓名为空,结束循环*/inputs请输入院系:info-street50;inputs请输入宿舍楼:info-city15;inputs请输入宿舍号:info-state15;inputs请输入学号:info-eip7;insertinfostartlast;/*调用结点插入函数*/}}
五、测试分析
1.输入学生信息
2.显示信息
3.查找信息
4.删除信息
5.退出
六、程序清单#includestdio.h#includestdlib.h#includestring.hstructaddress{/*定义结构*/charname
[10];charstreet
[50];charcity
[10];charstate
[15];chareip
[7];structaddress*next;/*后继指针*/structaddress*prior;/*前驱指针*/};structaddress*start;/*首结点*/structaddress*last;/*尾结点*/structaddress*findchar*;/*声明查找函数*/voidenter;/*函数声明*/voidsearch;voids__e;voidload;voidlist;voidddeletestructaddress**startstructaddress**last;voidinsertstructaddress*istructaddress**startstructaddress**last;voidinputschar*char*int;voiddisplaystructaddress*;intmenu_selectvoid;void__in{start=last=NULL;for;;{switchmenu_select{case1:enter;continue;case2:ddeletestartlast;continue;case3:list;continue;case4:search;continue;case5:exit0;}}}intmenu_selectvoid/*主目录*/{chars
[80];intc;printf\n欢迎使用学生通讯录系统;printf\n\n;printf\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n;printf\t┃************************************************************┃\n;printf\t┃***┃\n;printf\t┃*
1.输入信息*
2.删除信息*┃\n;printf\t┃***┃\n;printf\t┃************************************************************┃\n;printf\t┃***┃\n;printf\t┃*
3.显示信息*
4.查找*┃\n;printf\t┃***┃\n;printf\t┃************************************************************┃\n;printf\t┃
5.退出┃\n;printf\t┃************************************************************┃\n;printf\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n;do{printf\n请输入你的选择:\n;getss;c=atois;}whilec0||c7;returnc;/*返回输入值*/}voidenter/*输入函数本函数循环输入资料,当输入姓名为空时退出*/{structaddress*info;/*定义当前结点*/for;;{info=structaddress*__llocsizeofstructaddress;/*为当前结点分配空间*/if!info{printf\nOutofmemory;exit0;/*如果分配空间失败,退出程序*/}printf输入空姓名结束:\n;inputs请输入姓名:info-name10;if!info-name
[0]break;/*如果输入姓名为空,结束循环*/inputs请输入院系:info-street50;inputs请输入宿舍楼:info-city15;inputs请输入宿舍号:info-state15;inputs请输入学号:info-eip7;insertinfostartlast;/*调用结点插入函数*/}}voidinputschar*promptchar*sintcount/*输入函数,有越界检测功能*/{charp
[255];do{printfprompt;fgetsp254stdin;ifstrlenpcountprintf\nTooLong\n;}whilestrlenpcount;p[strlenp-1]=0;strcpysp;}voidinsert/*数据插入函数*/structaddress*istructaddress**startstructaddress**last{if*last==NULL/*如果尾结点为空意味着当前链表为空*/{i-next=NULL;i-prior=NULL;*last=i;*start=i;return;}else{*last-next=i;i-prior=*last;i-next=NULL;*last=*last-next;}}voidddeletestructaddress**startstructaddress**last/*删除函数*/{structaddress*info;chars
[80];inputs请输入姓名:s10;/*输入欲删除结点的name域内容*/info=finds;/*查找该内容*/ifinfo/*如果找到*/{printfDeleting......\n;if*start==info/*如果该结点为首结点把该结点的下驱作为新的首结点(入口)*/{*start=info-next;if*start*start-prior=NULL;else*last=NULL;}else/*如果欲删除的结点不是首结点*/{info-prior-next=info-next;/*令该结点的前驱的next指针指向该结点的后驱,*又令该结点的后驱的prior指点指向该结点的前驱*/ifinfo!=*last/*如果该结点是尾结点,则令该结点的前驱为尾结点*/info-next-prior=info-prior;else*last=info-prior;}freeinfo;/*释放该结点所占用的内存*/printf-Ok删除成功!\n;}}structaddress*findchar*name/*查找函数形参为欲查找结点的name域*/{structaddress*info;info=start;whileinfo{if!strcmpnameinfo-namereturninfo;info=info-next;}printf未找到相关信息.\n;returnNULL;}/*输出整个链表*/voidlistvoid{structaddress*info;info=start;ifinfo==NULLprintf当前记录为空!;elseprintf姓名\t院系\t宿舍楼\t宿舍号\t学号\t\n;whileinfo{displayinfo;ifinfo-next==NULL{break;}info=info-next;};printf\n\n;}voiddisplaystructaddress*info/*输出传入结点函数*/{printf%s\tinfo-name;printf%s\tinfo-street;printf%s\tinfo-city;printf%s\tinfo-state;printf%s\tinfo-eip;printf\n;}voidsearchvoid/*查找函数*/{charname
[40];structaddress*info;printf请输入要查找的姓名:;/*输入欲查找的姓名*/getsname;info=findname;if!infoprintf姓名不存在\n;/*如果没找到,显示Notfound*/elsedisplayinfo;/*如果找到,显示该结点资料*/}
七、用户使用手册
(1)本程序的执行文件为“学生通讯录管理系统.exe”
(2)进入本系统之后,随即显示系统住菜单界面用户可以在该界面下根据提示输入并按回车键确定,执行相应的菜单命令
(3)本系统可以对学生信息进行录入和删除数据结构课程设计课题学生成绩管理系统姓名孙轩宇学号E01014316专业计算机科技院系计科院班级10科技2班
2010.
10.8-12-。