2学生通讯录管理系统.docx

上传人:夺命阿水 文档编号:1382818 上传时间:2024-06-15 格式:DOCX 页数:20 大小:59.54KB
返回 下载 相关 举报
2学生通讯录管理系统.docx_第1页
第1页 / 共20页
2学生通讯录管理系统.docx_第2页
第2页 / 共20页
2学生通讯录管理系统.docx_第3页
第3页 / 共20页
2学生通讯录管理系统.docx_第4页
第4页 / 共20页
2学生通讯录管理系统.docx_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《2学生通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《2学生通讯录管理系统.docx(20页珍藏版)》请在课桌文档上搜索。

1、“学生通讯录管理系统”的设计与实现1、设计要求1.11问题描述I批注Al:为什么要设计该系同?设计该系统的现实意义?纸质的通讯录已经不能满意大家的要求,简单丢失、查找困难等问题是纸质通讯录所不能克服的缺点。“学生通讯录管理系统”是为了帮助老师、同学,或者其他一些须要运用通讯录的人员进行管理和分析的种应用程序。|1.2需求分析I(1)输入数据建立通讯录。(2)查询通讯录中满意要求的信息。(3)插入新的通讯录信息。(4)删除不须要的通讯录信息.0(5)杳看全部的通讯录信息。2、I概要设用为了实现需求分析中的功能,可以从三个方面着手设计。2.1 主界面设计为了实现学生通讯录系统各功能的管理,设计一个

2、含有多个菜单项的主控菜单子程序以链接系统的各项子功能,便利用户运用本系统。本系统主控菜单运行界面如下图所示:*炊迎运用通讯录系统*,*,*1通讯录的建立*.2插入通讯记录*3查询通讯记录*.4删除通讯记录”*5显示通讯录信息*.0退出管理系统*拿*欢迎运用通讯录系统*拿*请选择0-5:2.2 存储结构设计本系统主要采纳链表结构类型来表示存储在“学生通讯录管理系统”中的信息。其中,链表结点由四个审量构成:通讯录成员学号、通讯录成员姓名、通讯录成员电话号码、指向该结构体的指针。此外,系统还设置了一个全局变量seat,表示通讯录中成员的序号。2.3 系统功能设计本系统设置了五个子功能菜单,五个子功能

3、的设计描述如下。(1)建立通讯录系统。可以一次输入多个成员通讯录的信息,建立通讯录。该功能由creatlncre1.ink()函数实现。(2)插入通讯记录。每次可以插入一个成员通讯录的信息。假如要连续插入多个成员通讯录信.息必需多次选择该功能。该功能由insertYouXu()函数实现。(3)行询通讯记录。可以根据两种方式杳询所须要的通讯录成员记录,一是按学号台询,二是按姓名查询。分别由SearChNUmO函数和SearChName()函数实现。(4)删除通讯记束。可以对通讯录中不再须要的信息进行删除。有三种删除方式:按序号进行删除,按学号进行删除和按姓名进行删除。分别由deleteElem(

4、)函数、delNum()函数和delName()函数实现。(5)显示通讯录信息。可以查看通讯录中全部的通讯录成员信息。该功能由PrintUSU)函数实现。3、模块设计3.1 模块设计本程序包含两个模块:主程序模块和链表操作模块。其调用关系如下图:I主程序模块I隧操作模块I3.2 系统子程序及功能设计本系统共设置十个子程序,各程序的函数名及功能说明如下,其中大部分函数都是链表的基木操作函数。(1) 1.ink1.istCreatlnere1.ink()链表的创建(2) deleteElem(1.ink1.ist1.,inti)从通讯录中按序号删除第i个元素(3) delName(1.ink1.i

5、st1.,charn)按姓名删除通讯者记录(4) delNm(1.ink1.ist1.,intn)按学号删除通讯者记求(5) voidinsertYouXu(1.ink1.ist1.,1.ink1.istEIem)插入一条通讯录(6) print1.ist(1.ink1.ist1.)打印指针地址为1.的通讯录(7) prior(1.ink1.ist1.,1.ink1.istP)查找位于当前地址元素的前一个元素的地址(8) searchaName(1.ink1.ist1.Charn)按姓名行找通讯录记求(9) intsearchNur(1.ink1.ist1.,intn)按学号查找通讯录记录(1

6、0) VoidmainO主函数。设定界面的颜色和大小,调用链表操作模块3.3 函数主要调用关系图本系统十个子程序之间的主要谢用关系如下图所示。图中数字是各函数的编号。4、具体设计4.1 数据类型定义本系统采纳链式结构存储通讯泉结点。结点定义如下:typedefstruct1.Node(intnumber;doubletelemum;charname20;struct1.Nodenext;1.Node*1.ink1.ist;4.2 系统主要子程序具体设计(1)建立链表的函数,主要用来建立通讯录。1.ink1.istcreatlncre1.ink()创建一个存放通讯录成员的非递减有序表,返回头结点

7、地址。1.ink1.ist1.=(1.inkuSt)mall。C(1.EN);头结点1.-next=NU1.1.;intnum=l,number;doubletelenum;charname20;Printf(“请输入学生学号、姓名和电话号码,建立通信录,以5,为输入结束标记n”);Printf(“请输入学号&d:,num);SCanf(%d”,&number);Printf(“请输入姓名%d:,num);chartemp=getchar();gets(name);printf(wi输入电话号码d,num);scanf(w%lfw,&telenum);while(number=O)(P=(1.

8、ink1.iSt)malloc(1.EN);新结点p-number=number;p-telenum=telenum;strcpy(p-name,name);MsertYouXu(1.p);有序地插入新结点num+;Prirrtf(“请输入学号d:,num);scanf(w%dw,8tnumber);Printf(“请输入姓名d:,num);temp=getchar();gets(name);Printf(“请输入电话号码d:,num);scanf(w%lf,Stelenum);)return(1.);)(2)显示链表中全部结点的信息,用于查看通讯录全部的记录。voidprint1.ist(1

9、.ink1.ist1.)打印头结点地址为1.的通讯录printf(11n);pirntf(w学号姓名电话号码n);printf(wnrt);1.ink1.istp=1.;intn=l;if(1.=NU1.1.111.-next=NU1.1.)Printfr该通讯录中没有元素n):推断通讯录是否为空elsewhile(p-next!=NU1.1.)(printf(w%2d%-9dw,n,p-net-number);printf(w%-5s%.Of11wp-11et-name,p-next-telenum);p=p-next;n+;return;5、测试分析系统运行主界面如前面所示。各子功能测试运

10、行结果如下。5.1 通讯录的建立在主菜单下,用户输入1并回车,然后根据提示建立通讯录,分别输入通讯录成员的学号,姓名,电话号码,运行结果如下图:卜a*欢迎运用通讯录系统*丰*,* 1通讯录的建立* 2插入通讯记录* 3查询通讯记录* 4删除通讯记录* 5显示通讯录信息* O退出管理系统*拿*拿*拿*拿*欢迎运用通讦I录系统余*拿*拿*拿*今*拿*请选择0-5:1请输入学生学号,姓名和电话号码,建立通讯录,以y,为输入结束标记请输入学号two请输入姓名1:张燕请输入电话号码1:88087655批注A4J:要求学生做截图请输入学号2:101请输入姓名2:李敏I5.2 插入通讯记录在主菜单下,用户输

11、入2并回车,可以插入个新的通讯录成员,依次输入学号,姓名和电话号码,运行结果如下图:悔择功能:2请输入通讯者的学号和姓名:请输入学号:103请输入姓名:李娜插入后:学号姓名电话号码1100张燕88087655-批注伊5:截图5.3查询通讯记录在主菜单下,用户输入3并回车,可以根据两种方式杳询通讯录。种是按学号杳询,另种方式是按姓名查询。可根据提示操作,运行结果如下图:性择功能:3选择杳找方式:1.按学号2.按姓名1请输入学号:100要查找的第1位通讯者:学号:100姓名:张燕电话号码:88087655选择功能:3选择住找方式:1.按学号2.按姓名1.1一批注A6J:截图请输入姓名:李敏要查找的

12、第2位通讯者:I5.4 删除通讯记录在主菜单下,用户输入4井回车,进行通讯录记录的删除。可以根据三种方式进行删除操作:按序号、按学号和姓名。下图是按序号删除的运行结果。帔择功能:4选择删除方式:1.按序号2.按学号3.按姓名请输入通讯录序号:1删除后:学号姓名电话号码批注A7:运行后截图5.5 显示通讯录信息在主菜单下,用户输入5并回车,可以杳看通讯录中全部的成员信息。运行结果如下图。随择功能:5当前通讯录内容如下:学号姓名电话号码1100张燕88087655V批注依8):运行后截图6、源程序清单MndUdeWinclude4include/,defineNU1.1.0#define1.ENs

13、izeof(1.Node)ntseat;|typedefstruct1.Node用于通讯录结点intnumber;doubletelenum;charname20;struct1.Node*next;1.Node,*1JnkUStJl/.创建链表1.ink1.istcreatlncre1.link()创建一个存放通讯录成员的非递减有序表,返回头结点地址。1.ink1.ist1.=(1.ink1.iSt)mall。C(1.EN);头结点/批注依9):函数在运用之前都须要进行定义和声明。头文件中包含的函数是已经定义和声明的文件。#include编译预处理吩咐将头文件中的函数都添加到现在所写的CPP

14、文件中,然后参加编译,生成.obj文件。批注AlO:宏定义,将一个标识符定义为一个字符申批注IAll:定义Seat为整形变量批注IA12:定义,个结构体类型INode,同时定义了个指向该结构体类型的一个指针UnkUS3以后可以利用1.Node和UnkuSt对该结构类型的变徵和指针进行声明.1.-next=NU1.1.;1.ink1.istp;intnum=l,number;doubletelenum;charname20;Printf(“请输入学生学号、姓名和电话号码,建立通信录,以为输入结束标记n”);Printf(“请输入学号&d:”,num);scanf(w%dw,number);Pri

15、ntf(“清输入姓名d:,num);chartemp=getchar();gets(name);Printf(请输入电话号码d:,num);SCanf(%lf”,&telenum);while(number=0)(P=(Ijnk1.iSt)mall。C(1.EN);新结点p-number=number;p-telenum=telenum;strcpy(p-name,name);insertYouXu(1.,p);有序地插入新结点num+;Printf(请输入学号d:,num);SCanf(%d”,&numberj;Printf(“请输入姓名d:,num);temp=getchar();gets

16、(name);Printf(“请输入电话号码d:”,num);/批注A13:该系统中学生通讯录信息是用一个带有头结点的链表进行存储的,即一条学生信息对应链表中的一个结点。因此可以助于单链表的建立来完成通讯录的建立.通讯录建立完成返何头指针,以后可以借助于头指针对该链表进行访问,即对通讯录访问。scanf(w%lfw,8ttelenum);return(1.);批注A14:从通讯录中删除一条通讯信息,相当于从1.链表中捌除一个结点,即借助于单处表中结点的删除操作来完成删除通讯录信息。删除操作,可以采纳三种方式进行:按序号删除、按姓名删除和按学号蒯除,分别对应三个子程序2.从通讯录中删除第i个元素

17、voiddeleteElem(1.ink1.ist1.,inti)1.ink1.istP=1.;intj=0;while(p-next&jnet;j+;)if(!(p-next)推断i是否合法,i不能大于元素的个数,也不能小于等于0(Printf(第d个元素删除失败n”,i);return;)1.ink1.istq=p-next;p-net=q-next;free(q);释放删除的结点3.按姓名删除通讯者intdelName(1.ink1.ist1.,charn)(intflag=O;推断要删除的通讯者和通讯者的姓名是否匹配1.ink1.istp=1.-next;seat=l;if(1.-ne

18、xt=NU1.1.)Printfr该链表中没有元素,查找失败n);elsewhile(p!=NU1.1.)if(!strcmp(-name,n)比较输入的姓名和通讯录中的姓名fag=l;输入姓名匹配printf(w%sw,p-name);p=p-next;deleteElem(1.,seat);)else(p=p-next;seat+输入姓名不匹配,指针移到下一个通讯者)if(flag)Printf(被删除n);)returnflag;4.按学号删除通讯者intdelNum(1.inkUst1.,intn)(intflag=O;推断要删除的通讯者和通讯者的学号是否匹配1.ink1.istp=1

19、.-next;seat=l;if(1.-next=NU1.1.)Printf(该链表中没有元素,删除失败n);else(while(p!=NU1.1.)(if(p-numbernumber=n)flag=l;输入学号匹配Printf(%dnumber);p=p-next;deleteElem(1.,seat);else(p=p-next;seat+);)Printf(被删除n);returnflag;5.插入一个元素,使原有表仍为有序voidinsertYouXu(1.ink1.ist1.,1.ink1.istElem)|批注依15:插入通讯记录的操作事实上相当于在桂表I中插入个数据元素,因此

20、可借助于链表中的插入操作(完成。这里为了操作上的便利.要求插入之后的链表仍1.ink1.istp=1.-next;旧为有序表,所以是一种有序插入while(p!=NU1.1.&Elem-number=p-number)(if(p-number=Elem-number)(Printf(重复输入lln);return;p=p-next;确定EIem插入的位置if(P=NU1.1.)p=prior(1.,p);Elem-next=NU1.1.;p-next=Elem;else若为空表,插到头结点之后p=prior(1.,p);Elem-next=p-next;p-next=Elem;6.打印头结点地

21、址为I的通讯录,Oidprint1.ist(1.ink1.ist1.)|批注A16J:显示通讯录信息的操作可借助单链表打印完成/打印头结点地址为1.的通讯录Printf(Qnnw);Pimtf(学号姓名电话号码n);printf(wVr);1.ink1.istp=1.;intn=l;if(1.=NU1.1.111.-next=NU1.1.)Printf(该通讯录中没有元素n);推断通讯录是否为空elsewhile(p-next!=NU1.1.)(printf(w%2d%-9dw,n,p-next-number);printf(w%-5s%.0A11w,p-next-name,p-next-te

22、lenum);p=p-next;n+;Printf(-n);return;)7.找到位于当前地址元素的前一元素的地址1.ink1.istprior(1.ink1.ist1.,1.ink1.istp)|批注伊”:隹找通讯录中记录信息.这里绐出了三种查找方法:1、杏找P所指向的记录的前一条记录2、按姓名查找某条通讯信息3、按学号查找某条通讯录信if(1.-next=NU1.1.)return(1.);息1.ink1.istp-prior=1.;while(p-prior-nextl=p)p-prior=p-prior-next;return(p-prior);)8.按姓名杳找通讯者ntsearch

23、Name(1.ink1.ist1.,charn)批注依1可:皆询某一条通讯录信息(intflag=0;标记要套找的通讯者和通讯者中的姓名是否匹配1.ink1.istp=1.-next;seat=l;else(while(p!=NU1.1.)(if(IStremP(P-name,n)比较要查找的姓名是否和当前通讯者所指姓名匹配(fag=l;输入姓名匹配Printf(要位找的是第d位通讯者:n”,seat);Printf(Number:%dName:%sTeIeNo.:%.0fnw,p-number;p-name,p-telenum);)p=p-next;seat+;、)returnflag;9.

24、按学号查找通讯者intsearchNum(1.ink1.ist1.,intn)(intflag=O;标记要查找的通讯者和通讯者中的学号是否匹配1.ink1.istp=1.-next;seat=l;if(1.-next=NU1.1.)Printf(该链表中没有元素,杳找失败n);else(while(p!=NU1.1.)if(p-numbernumber=n)(fag=l;输入学好匹配Printf(要行找的是第d位通讯者:n,seat);Printf(“学号:d姓名:%s电话号码:%00f11w,p-number,p-name,p-telenum);p=p-next;seat+;)returnf

25、lag;/10.主函数。设定界面的颜色大小,调用工作区模块函数voidmain()(批注(A19:C语言中的System是调用d。S吩咐.colorIf是用来设置dos窗口颜色的。1用来设置窗口的背景颇色.f设置字体颜色,这里设置为蓝底白字.如有须要设置其他颜色,可自行杳阅览料。ISyStem(colorIf设定界面颜包,IPrintfO”n*A3欢迎运用通讯录系统*n);printf(rt*1通讯录的建立*n);Printfr*2插入通讯记录*n);printf(rt*3查询通讯记录*n);printf(rt*4删除通讯记录*11);printf(rt*5显示通讯录信息*n);printf(

26、rt*0退出管理系统*n);1.ink1.ist1.=NU1.1.:Printf()n*AA欢迎运用通讯录系统*n);|/批注(20:系统运行时,呈现的主界面格式intflag=O;通讯录是否建立intmenu;菜单选项Printf(请选择55:”);SCanf(%d”,&menu);批注A21J:当分支过多时,合理运用switch语句,限制ifelse语句嵌套深度while(menul=O)switch(menu)|用于调用菜单的语句一case 1:(1.=CreatlnCre1.ink();调用函数实现通讯业的建立Printf(建立通讯录:);print1.ist(1.);flag=l;b

27、reak;)case 2:(if(flag=l)(intnumber,telenum;charname20;Printf(请输入通讯者的学号和姓名:n);Printfr请输入学号:);SCanf(%d,numberw);Printfr请输入姓名:chartemp=getchar();gets(name);Printf(请输入电话号码:”);SCanf(%d”,Stelenum);1.ink1.istp=(1.ink1.ist)malloc(1.EN);新结点p-number=number;strcpy(p-name,name);p-telenum=telenum;/有序地插入新结点insert

28、YoUXU(1.,p);Printf(插入后:):Print1.ist(1.);)elseprintf(nERROR:通讯录还没有建立,请先建立通讯录n);break;)case 3:(intway,n,s;查找方式charna20;if(1.l=NU1.1.)(if(flag)通讯录已建立(Printf(选择查找方式:nn);printf(w1.按学号2.按姓名”);SCanf(%d”,&way);if(way=l)(printf(n请输入学好:”);SCanf(%d,&n);s=searchNum(1.,n);if(s=0)Printf(无此通讯者,杳找失败!n);)printf(wn请输

29、入姓名:”);chartemp=getchar();gets(na);s=searchaName(1.,na);if(s=0)Printf(无此通讯者,位找失败!n);)elsePrintfr通讯录中午记录!11w);)break;)elsePrintfr通讯泵中无记录W);break;)case 4:(intway;删除方式Printf(选择删除方式:1.按序号2.按学号3.按姓名nn);SCanf(%d”,&way);if(way=l)(intn;Printfr请输入通讯录序号:”);SCanf(%d,&n);Printf(删除后:n);deleteElem(1.,n);按序号删除Prin

30、t1.ist(1.);)intn,f;Printf(请输入学号:”);SCanf(%d,&n);f=delNum(1.,n);if(f!=O)(Printfr删除后:nrt);Print1.ist(1.);elseprintf(无该学号,删除失败!n);)elseif(way=3)(charna20;intf;Printfrn请输入姓名:”);chartemp=getchar();gets(na);f=delName(1.,na);if(f!=0)Printf(删除后:n);print1.ist(1.);elseprintf(无该学号,删除失败!nw)elseprintf(wERROR!nw);break;case5:Printfr当前通讯录内容如下:n);Print1.ist(1.);break;)caseO:exit(O);default:printf(rtn没有此功能,重新输入n)Printf(选择功能:):scanf(,%dw,men);)7、用户手册(1)本程序执行文件为“学生通讯录管理系统.exe”.(2)进入本系统之后,随即显示系统主菜单界面。用户可在该界面下输入各子菜单前对应的数字并按回车键,执行相应子菜单吩咐。(3)本系统没有供应干脆修改通讯录信息的功能,可通过删除和插入操作完成修改功能。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号