一、 通讯录管理系统 1. 题目要求 通讯录一般包括通讯者的编号、姓名、性别、电话及地址等信息,设计一个通讯录要求实现通讯者的插入、查询、删除、更新、排序操作。 struct node { char num[5]; //编号 char name[8]; //姓名 char sex; //性别 char tel[8]; //电话 char address[100]; //地址 }; 2. 应用程序功能 开始运行时界面如下: 通讯录链表建立界面如下: 通讯录链表插入界面如下: 通讯录链表查询界面如下: 按编号查询界面如下: 按姓名查询编号如下: 通讯录链表删除界面如下: 通讯录链表输出界面如下: 3 . 输入数据类型、格式和内容限制 输入数据类型为字符型,但在输入过程中不可包含空格,如输入地址过程中不可出现空格! 4. 主要算法模块描述 流程图: 5. 源程序代码 #include #include "iostream" int flag1=0; #include "string.h" #include "stdlib.h" #include "windows.h" using namespace std; typedef struct { //通讯录结点类型 char num[5]; //编号 char name[9]; //姓名 char sex[3]; //性别 char phone[13]; //电话 char addr[31]; //地址 } DataType; typedef struct node { //结点类型定义 DataType data; //结点数据域 struct node *next; //结点指针域 } ListNode; typedef ListNode *LinkList; LinkList head; ListNode *p; LinkList CreateList(void); void InsertNode(LinkList head,ListNode *p); ListNode *ListFind(LinkList head); void DelNode(LinkList head); void PrintList(LinkList head); /*******尾插法建立带头结点的通讯录链表算法*******/ LinkList CreateList(void) { LinkList head=(ListNode *)malloc(sizeof(ListNode)); //申请头结点 ListNode *p,*rear; char flag='y'; //int flag=0; //结束标志置 0 rear=head; //尾指针初始指向头结点 while (flag=='y') { p=(ListNode *)malloc(sizeof(ListNode)); //申新结点 printf("编号(4) 姓名(8) 性别 电话(11) 地址(31)\n"); printf("-----------------------------------------------\n"); printf("\n 添加的编号:\n"); cin>>p->data.num; printf("\n 添加的姓名:\n"); cin>>p->data.name; printf("\n 性别:\n"); cin>>p->data.sex; printf("\n 电话:\n"); cin>>p->da...