《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文件中,然后参加编译,生成.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