1、*欢迎使用通讯录系统* 1 通讯录的建立 2 插入通讯记录 3 查询通讯记录 4 删除通讯记录 5 显示通讯录信息 6 退出管理系统2)储存结构设计 本系统主要采用链表结构类型来表示存储在“学生通讯录管理系统”中的信息。其中,链表结点有4个分量构成:通讯录成员学号、通讯录成员姓名、通讯录成员电话号码、指向该结构体的指针。此外,本系统还设置了一个全局变量seat,表示通讯录中成员的序号。3)系统功能设计 本系统设置了5个功能菜单,5个子功能的设计描述如下。 建立通讯录系统。可以一次输入多个成员通讯录的信息,建立通讯录。该功能由creatIncreLink函数实现。 插入通讯记录。每次可以插入一个
2、成员通讯录的信息,如果要连续 插入多个成员通讯录信息则必须多次选择该功能。该功能由insetYouXu函数实现。 查询通讯录记录。可以按两种方式查询所需要的通讯录成员记录,一是按学号查询,二是按照姓名查询。分别有searchNum函数和searchName函数实现。 删除通讯录记录。可以对通讯录中不再需要的信息进行删除。有三种删除方式:按序号进行deleteElem函数、delNum函数和delName函数实现。 显示通讯录记录。可以查看通讯录中所有查看通讯录中所有的通讯录成员记录。该功能由printList函数是实现。3.详细设计1)数据类型定义本系统采用链式结构存储通讯录结点。结点结构定义
3、如下:#define LEN sizeof(LNode)typedef struct LNode int number; /学号 char name20 /姓名 double telenum /电话 struct LNode *next;LNode, *LinkList;2)系统主要子程序详细设计建立通讯录链表的函数。LinkList creatIncreLink( )/创建一个存放通讯录成员的非递减有序表,返回头结点地址 LinkList p; int num=1, number; double telenum; char name20, temp; LinkList L,P; L=(Lin
4、kList)malloc(LEN); L-next=NULL; printf (“请输入学生学号、姓名和电话号码,建立通讯录,以-1为输入结束标记n”); printf (“请输入学号%d: ”,num);scanf(“%d”,&number); printf (“请输入姓名%d: temp=getchar(); gets(name); printf (“请输入电话号码%d:scanf(“%lf”,&telenum); while (number=0)p = (LinkList) malloc (LEN);p - number = number; telenum =telenum;strcpy
5、(p-name,name);insertYouXu(L,p);num+;printf (“请输入学号 %d: “,num); scanf (“%d”,&printf (“请输入姓名 %d:temp = getchar();printf(“请输入电话号码d: scanf (“%lf”,& return (L);/end2)查看通讯录所有记录的函数。 void printList(LinkList L)/打印头结点地址为L的通讯录 LinkList p=L; int n = 1; printf (“n -n”); printf (“ 学号 姓名 电话号码n”); printf (“ -n”); i
6、f (L = NULL | L-next = NULL) /判断通讯录是否为空 printf (“该通讯录在中没有元素n”); else while(p-next != NULL) printf (“ %2d %-9d”,n,p-next- printf (“ %5s %.0fn”,p-name,p- p = p-next; n+; printf (“ -n”); return ;4.测试分析1).通讯录的建立 在主菜单下,用户输入1并回车,然后按照提示建立通讯录。分别依次输入通讯录成员的学号、姓名、电话号码;重复此过程,直至分别输入-1三次,退出。2).插入通讯记录 在主菜单下,用户输入 2
7、 并回车,可以插入一个新成员的记录。按照提示,依次输入学号、姓名、和电话号码后完成插入。3).查询通讯记录 在主菜单下,用户输入 3 并回车,可以按照两种方式查询通讯录。一是按照“学号”查询,二是按“姓名”查询,可按照提示操作。4).删除通讯录记录 在主菜单下,用户输入 4 并回车,可以进行通讯录记录的删除。本系统提供三种删除方式:分别是按序号、按学号、和按姓名进行删除。5).显示通讯录信息 在主菜单下,用户输入 5 并回车,可以查看通讯录中所有的成员信息。5.源程序清单详见附件-文件夹:学生通讯录/main.cpp6.用户手册1)本程序执行文件为“学生通讯录管理系统.exe”。2)进行本系统
8、之后,随即显示系统主菜单界面。用户可在该界面下输入各个菜单前对应的数字并按下回车键,执行相应子菜单命令。3)本系统没用提供直接修改通讯录信息的功能,可通过删除和插入操作完成修改功能。完整代码如下:#include stdlib.hstring.h/* run this program using the console pauser or add your own getch, system(pause) or input loop */int seat; int number; char name20;LNode,*LinkList;/7.找到当前地址元素的直接前驱元素的地址LinkList
9、 prior(LinkList L, LinkList p) LinkList p_prior=L; if(L-next = NULL) return L; while(p_prior-= p) p_prior = p_prior- return (p_prior);/5.插入一条成员记录,使原通讯录保持有序void insertYouXu(LinkList L, LinkList Elem) LinkList p=L- while(p!=NULL & (Elem-number) = (p-number) if(p-number = Elem-number) printf(重复输入! n);
10、return; p=p- if(p=NULL) p=prior(L,p); Elem- p-next=Elem;next=p-/1.创建链表LinkList creatIncreLink() int num=1,number; char name20,temp; printf(请输入学生学号、姓名和电话号码,建立通讯录,以-1为输入结束标志n-n请输入学号%d:,num); scanf(%d,&请输入姓名%d:请输入电话号码%d:%lf while(number p=(LinkList)malloc(LEN);number=number;telenum=telenum; strcpy(p- insertYouXu(L,p); num+; printf( scanf( temp=getchar(); gets(name); return(L); /2.在通讯录中按序号删除第i个成员 void deleteElem(LinkList L, int i) LinkList p=L,q; int j=0; while (p-next & j j+; if(!(p-next)第%d个元素删除失败n,i); return; q = p- p-next
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1