




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、“学生通讯录管理系统”的设计与实现1、设计要求1.1问题描述纸质的通讯录已经不能够满足大家的要求,简单扔掉、查找困难等问题是纸质通讯录所不能够战胜的缺点。“学生通讯录管理系统”是为了帮助老师、同学,也许其他一些需要使用通讯录的人员进行管理和解析的一种应用程序。1.2需求解析1)输入数据建立通讯录。2)盘问通讯录中满足要求的信息。3)插入新的通讯录信息。4)删除不需要的通讯录信息。5)查察所有的通讯录信息。2、大纲设计为了实现需求解析中的功能,能够从三个方面着手设计。2.1主界面设计为了实现学生通讯录系统各功能的管理,设计一个含有多个菜单项的主控菜单据程序以链接系统的各项子功能,方便用户使用本系
2、统。本系统主控菜单运行界面以以下图所示:*欢迎使用通讯录系统*1通讯录的建立*2插入通讯记录*3盘问通讯记录*4删除通讯记录*5显示通讯录信息*0退出管理系统*欢迎使用通讯录系统请选择0-5:2.2储藏结构设计本系统主要采用链表结构种类来表示储藏在“学生通讯录管理系统”中的信息。其中,链表结点由四个重量构成:通讯录成员学号、通讯录成员姓名、通讯录成员电话号码、指向该结构体的指针。其他,系统还设置了一个全局变量seat,表示通讯录中成员的序号。2.3系统功能设计本系统设置了五个子功能菜单,五个子功能的设计描述以下。(1)建立通讯录系统。能够一次输入多个成员通讯录的信息,建立通讯录。该功能由cre
3、atIncreLink()函数实现。(2)插入通讯记录。每次能够插入一个成员通讯录的信息。若是要连续插入多个成员通讯录信息必定多次选择该功能。该功能由insertYouXu()函数实现。(3)盘问通讯记录。能够依照两种方式盘问所需要的通讯录成员记录,一是按学号盘问,二是按姓名盘问。分别由searchNum()函数和searchName()函数实现。(4)删除通讯记录。能够对通讯录中不再需要的信息进行删除。有三种删除方式:按序号进行删除,按学号进行删除和按姓名进行删除。分别由deleteElem()函数、delNum()函数和delName()函数实现。(5)显示通讯录信息。能够查察通讯录中所有
4、的通讯录成员信息。该功能由printList()函数实现。3、模块设计3.1模块设计本程序包含两个模块:主程序模块和链表操作模块。其调用关系以以下图:主程序模块-链表操作模块3.2系统子程序及功能设计本系统共设置十个子程序,各程序的函数名及功能说明以下,其中大部分函数都是链表的基本操作函数。(1)LinkListcreatIncreLink()/链表的创办(2)deleteElem(LinkListL,inti)/从通讯录中挨次号删除第i个元素(3)delName(LinkListL,charn)/按姓名删除通讯者记录(4)delNum(LinkListL,intn)/按学号删除通讯者记录(5
5、)voidinsertYouXu(LinkListL,LinkListElem)/插入一条通讯录(6)printList(LinkListL)/打印指针地址为L的通讯录(7)prior(LinkListL,LinkListp)/查找位于当前地址元素的前一个元素的地址(8)searchaName(LinkListL,charn)/按姓名查找通讯录记录(9)intsearchNum(LinkListL,intn)/按学号查找通讯录记录(10)voidmain()/主函数。设定界面的颜色和大小,调用链表操作模块3.3函数主要调用关系图本系统十个子程序之间的主要调用关系以以下图所示。图中数字是各函数的
6、编号。12345689574、详细设计4.1数据种类定义本系统采用链式结构储藏通讯录结点。结点定义以下:typedefstructLNodeintnumber;doubletelemum;charname20;structLNode*next;LNode*LinkList;4.2系统主要子程序详细设计(1)建立链表的函数,主要用来建立通讯录。LinkListcreatIncreLink()/创办一个存放通讯录成员的非递减有序表,返回头结点地址。LinkListL=(LinkList)malloc(LEN);/头结点L-next=NULL;LinkListp;intnum=1,number;do
7、ubletelenum;charname20;printf(“请输入学生学号、姓名和电话号码,建立通讯录,以-1为输入结束标志n”);printf(“请输入学号&d:”,num);scanf(“%d”,&number);printf(“请输入姓名%d:”,num);chartemp=getchar();gets(name);printf(“请输入电话号码%d:”,num);scanf(“%1f”,&telenum);while(number=0)p=(LinkList)malloc(LEN);/新结点p-number=number;p-telenum=telenum;strcpy(p-name
8、,name);insertYouXu(L,p);/有序地插入新结点num+;printf(“请输入学号%d:”,num);scanf(“%d”,&number);printf(“请输入姓名%d:”,num);temp=getchar();gets(name);printf(“请输入电话号码%d:”,num);scanf(“%1f”,&telenum);return(L);(2)显示链表中所有结点的信息,用于查察通讯录所有的记录。voidprintList(LinkListL)/打印头结点地址为L的通讯录printf(“n-n”);pirntf(“学号姓名电话号码n”);printf(“-n”)
9、;LinkListp=L;intn=1;if(L=NULL|L-next=NULL)printf(“该通讯录中没有元素n”);/判断通讯录可否为空elsewhile(p-next!=NULL)printf(“%2d%-9d”,n,p-next-number);printf(“%-5s%.0fn”,p-next-name,p-next-telenum);p=p-next;n+;printf(“-n”);return;5、测试解析系统运行主界面如前面所示。各子功能测试运行结果以下。5.1通讯录的建立在主菜单下,用户输入1并回车,尔后依照提示建立通讯录,分别输入通讯录成员的学号,姓名,电话号码,运行
10、结果以以下图:*欢迎使用通讯录系统*1通讯录的建立*2插入通讯记录*3盘问通讯记录*4删除通讯记录*5显示通讯录信息*0退出管理系统*欢迎使用通讯录系统请选择0-5:1请输入学生学号,姓名和电话号码,建立通讯录,以-1为输入结束标志请输入学号1:100请输入姓名1:张燕请输入学号2:101请输入姓名2:李敏5.2插入通讯记录在主菜单下,用户输入2并回车,能够插入一个新的通讯录成员,依次输入学号,姓名和电话号码,运行结果以以下图:选择功能:2请输入通讯者的学号和姓名:请输入学号:103请输入姓名:李娜插入后:-学号姓名电话号码-5.3盘问通讯记录在主菜单下,用户输入3并回车,能够依照两种方式盘问
11、通讯录。一种是按学号盘问,另一种方式是按姓名盘问。可依照提示操作,运行结果以以下图:选择功能:3选择查找方式:1.按学号2.按姓名1请输入学号:100要查找的第1位通讯着:选择功能:3选择查找方式:1.按学号2.按姓名2请输入姓名:李敏要查找的第2位通讯着:5.4删除通讯记录在主菜单下,用户输入4并回车,进行通讯录记录的删除。能够依照三种方式进行删除操作:挨次号、按学号和姓名。以下图是挨次号删除的运行结果。选择功能:4选择删除方式:1.挨次号2.按学号3.按姓名1请输入通讯录序号:1删除后:-学号姓名电话号码-5.5显示通讯录信息在主菜单下,用户输入5并回车,能够查察通讯录中所有的成员信息。运
12、行结果以以下图。选择功能:5当前通讯录内容以下:-学号姓名电话号码-6、源程序清单#include#include#include#defineNULL0#defineLENsizeof(LNode)intseat;typedefstructLNode/用于通讯录结点intnumber;doubletelenum;charname20;structLNode*next;LNode,*LinkList;/1.创办链表LinkListcreatIncreLlink()/创办一个存放通讯录成员的非递减有序表,返回头结点地址。LinkListL=(LinkList)malloc(LEN);/头结点L-
13、next=NULL;LinkListp;intnum=1,number;doubletelenum;charname20;printf(“请输入学生学号、姓名和电话号码,建立通讯录,以-1为输入结束标志n”);printf(“请输入学号&d:”,num);scanf(“%d”,&number);printf(“请输入姓名%d:”,num);chartemp=getchar();gets(name);printf(“请输入电话号码%d:”,num);scanf(“%1f”,&telenum);while(number=0)p=(LinkList)malloc(LEN);/新结点p-number=
14、number;p-telenum=telenum;strcpy(p-name,name);insertYouXu(L,p);/有序地插入新结点num+;printf(“请输入学号%d:”,num);scanf(“%d”,&number);printf(“请输入姓名%d:”,num);temp=getchar();gets(name);printf(“请输入电话号码%d:”,num);scanf(“%1f”,&telenum);return(L);/2.从通讯录中删除第i个元素voiddeleteElem(LinkListL,inti)LinkListP=L;intj=0;while(p-nex
15、t&jnext;j+;if(!(p-next)/判断i可否合法,i不能够大于元素的个数,也不能够小于等于0printf(“第%d个元素删除失败n”,i);return;LinkListq=p-next;p-next=q-next;free(q);/释放删除的结点/3.按姓名删除通讯者intdelName(LinkListL,charn)intflag=0;/判断要删除的通讯者和通讯者的姓名可否般配LinkListp=L-next;seat=1;if(L-next=NULL)printf(“该链表中没有元素,查找失败n”);elsewhile(p!=NULL)if(!strcmp(p-name,
16、n)/比较输入的姓名和通讯录中的姓名flag=1;/输入姓名般配printf(“%s”,p-name);p=p-next;deleteElem(L,seat);else(p=p-next;seat+/输入姓名不般配,指针移到下一个通讯者if(flag)printf(“被删除n”);returnflag;/4.按学号删除通讯者intdelNum(LinkListL,intn)intflag=0;/判断要删除的通讯者和通讯者的学号可否般配LinkListp=L-next;seat=1;if(L-next=NULL)printf(“该链表中没有元素,删除失败n”);elsewhile(p!=NULL
17、)if(p-numbernumber=n)flag=1;/输入学号般配printf(“%d”,p-number);p=p-next;deleteElem(L,seat);else(p=p-next;seat+);printf(“被删除n”);returnflag;/5.插入一个元素,使原有表仍为有序voidinsertYouXu(LinkListL,LinkListElem)LinkListp=L-next;while(p!=NULL&Elem-number=p-number)if(p-number=Elem-number)printf(“重复输入!n”);return;p=p-next;/确
18、定Elem插入的地址if(p=NULL)p=prior(L,p);Elem-next=NULL;p-next=Elem;else/若为空表,插到头结点此后p=prior(L,p);Elem-next=p-next;p-next=Elem;/6.打印头结点地址为L的通讯录voidprintList(LinkListL)/打印头结点地址为L的通讯录printf(“n-n”);pirntf(“学号姓名电话号码n”);printf(“-n”);LinkListp=L;intn=1;if(L=NULL|L-next=NULL)printf(“该通讯录中没有元素n”);/判断通讯录可否为空elsewhil
19、e(p-next!=NULL)printf(“%2d%-9d”,n,p-next-number);printf(“%-5s%.0fn”,p-next-name,p-next-telenum);p=p-next;n+;printf(“-n”);return;/7.找到位于当前地址元素的前一元素的地址LinkListprior(LinkListL,LinkListp)if(L-next=NULL)return(L);LinkListp-prior=L;while(p-prior-next!=p)p-prior=p-prior-next;return(p-prior);/8.按姓名查找通讯者ints
20、earchName(LinkListL,charn)intflag=0;/标志要查找的通讯者和通讯者中的姓名可否般配LinkListp=L-next;seat=1;elsewhile(p!=NULL)if(!strcmp(p-name,n)/比较要查找的姓名可否和当前通讯者所指姓名匹配flag=1;/输入姓名般配printf(“要查找的是第%d位通讯者:n”,seat);printf(“Number:%dName:%sTeleNo.:%.0fn”,p-number,p-name,p-telenum);p=p-next;seat+;、returnflag;/9.按学号查找通讯者intsearch
21、Num(LinkListL,intn)intflag=0;/标志要查找的通讯者和通讯者中的学号可否般配LinkListp=L-next;seat=1;if(L-next=NULL)printf(“该链表中没有元素,查找失败n”);elsewhile(p!=NULL)if(p-numbernumber,p-name,p-telenum);p=p-next;seat+;returnflag;/10.主函数。设定界面的颜色大小,调用工作区模块函数voidmain()system(“color1f”);/设定界面颜色LinkListL=NULL;printf()”n欢迎使用通讯录系统*n”);prin
22、tf(“*1通讯录的建立*n);printf(“*2插入通讯记录*n);printf(“*3盘问通讯记录*n);printf(“*4删除通讯记录*n);printf(“*5显示通讯录信息*n);printf(“*0退出管理系统*n);printf()”n欢迎使用通讯录系统*n”);intflag=0;/通讯录可否建立intmenu;/菜单项选择项printf(“请选择0-5:”);scanf(“%d”,&menu);while(menu!=0)switch(menu)/用于调用菜单的语句case1:L=creatIncreLink();/调用函数实现通讯录的建立printf(“建立通讯录:”)
23、;printList(L);flag=1;break;case2:if(flag=1)intnumber,telenum;charname20;printf(“请输入通讯者的学号和姓名:n”);printf(“请输入学号:”);scanf(“%d,&number”);printf(“请输入姓名:”);chartemp=getchar();gets(name);printf(“请输入电话号码:”);scanf(“%d”,&telenum);LinkListp=(LinkList)malloc(LEN);/新结点p-number=number;strcpy(p-name,name);p-telen
24、um=telenum;/有序地插入新结点insertYouXu(L,p);printf(“插入后:”);printList(L);elseprintf(“nERROR:通讯录还没有建立,请先建立通讯录n”);break;case3:intway,n,s;/查找方式charna20;if(L!=NULL)if(flag)/通讯录已建立printf(“选择查找方式:n”);printf(“1.按学号2.按姓名”);scanf(“%d”,&way);if(way=1)printf(“n请输入学好:”);scanf(“%d”,&n);s=searchNum(L,n);if(s=0)printf(“无此通讯者,查找失败!n”);elseif(way=2)printf(“n请输入姓名:”);chartemp=getchar();gets(na);s=searchaName(L,na);if(s=0)prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医药法试题及答案
- 云南省玉溪市民中2024-2025学年高二下物理期末调研模拟试题含解析
- 餐厅餐饮服务与食品安全责任保险合同
- 车辆赠与合同范本:车辆保险后赠与
- EPS线条安装工程环保风险评估合同
- 父母房产买卖合同与子女优先购买权协议
- 施工现场安全文明施工管理制度
- 公益劳动心得体会1000字范文(15篇)
- 工程合作合同(15篇)
- 行政管理中的信息共享与合作试题及答案
- 2024行政处罚法:行政处罚的听证程序
- 漆艺课件教学课件
- 《世界文化遗产长城》课件
- GB/T 2982-2024工业车辆充气轮胎规格、尺寸、气压与负荷
- 妊娠合并高血压疾病护理查房
- 第六章 方差分析课件
- 走进泰国-课件
- 一站到底课件
- 西安中建一局装修合同模板
- 班主任工作经验交流:在班级管理中要尊重、关爱学生班主任班级管理方案
- 《PLC应用技术(西门子S7-1200)第二版》全套教学课件
评论
0/150
提交评论