通讯录的制作(数据结构C语言版)
班级通讯录(大数据结构,C语言)
班级通讯录1、设计目的设计一个计算机管理系统对班级通讯录进行管理。
2、设计要求一个学生的数据包括:学号、、、手机、QQ号。
要求设计一个计算机管理系统对班级通讯录进行管理,具有的功能是能够进行录入、修改、删除、查找和输出所有记录。
为提高数据的可访问性,、手机、QQ号建立索引表,索引表可以在维护数据时动态维护,也可能最后一次建立。
设计条件:硬件条件:(1)学生用微机(2)多媒体教室(3)局域网环境软件条件:(1)Windows XP中文操作系统(2)Turbo C 3.03、课程设计的容3.1、需求分析:随着科技的进步和信息产业的发展,通讯录成为了现代生活中的一个重要的工具。
利用通讯录管理系统对通讯录进行统一管理,包括添加,修改,查询记录等功能,实现通讯录管理工作的系统化,规化和自动化,为生活提供便利。
在设计的通讯录中,学生学号,,手机,QQ均以数字的形式进行输入,学生则以中文,英文输入均可进行记录,输出的形式与输入形式相同。
按要求,设计的通讯录管理系统可以实现添加、修改、删除、查找,对学号的排序和输出所有学生记录。
进行测试的数据和执行情况如下图所示:程序主观图:添加记录:显示所有记录:删除一条记录:根据学号查找:对记录的排序:主要是对添加新纪录在链表中按升序排列,如新加伟这条记录,对它采取排序,具体结果如下:进行排序:输入6即退出:3.2、概要设计:对该系统各种函数的定义在源代码给出,先给出函数的定义,然后给出菜单的执行函数,建立链表,并对各个功能的实现编出程序,直到调试成功为止。
3.3、详细设计主要给出程序的流程图,如下所示:菜单函数:链表构造:按学号显示学生数据:删除记录:显示所有信息:排序:3.4、程序调试与测试结果:经过认真调试最终结果为正确。
如图:3.5、结果分析:在编译过程中遇到很多困难,程序也基本上符合要求,但是有一点目前还没解决,就是基于链表的修改还没掌握,因此花了很大的力气,但是还是没有完成,只好采取的修改方式为:删除,添加,排序的方法对链表中的元素进行修改。
数据结构课程设计(通讯录)
数据结构课程设计(通讯录)
题目描述:
设计一个通讯录程序,实现以下功能:
1. 添加联系人信息
2. 删除联系人信息
3. 修改联系人信息
4. 查找联系人信息
5. 显示所有联系人信息
6. 退出程序
要求:
1. 使用链表作为数据结构存储联系人信息
2. 界面友好,操作简单方便
3. 能够防止重复添加联系人信息
设计思路:
1. 定义一个结构体Contact表示联系人信息,包括姓名、电话、邮箱等成员变量。
2. 定义一个链表结构体List表示联系人链表,包括头结点、
节点数量等成员变量。
3. 实现添加联系人信息函数,首先判断联系人是否存在,如果存在则提示用户,否则分配一个新的节点,并将联系人信息存储在节点中,将新节点插入链表中。
4. 实现删除联系人信息函数,首先判断联系人是否存在,如果不存在则提示用户,否则在链表中删除该节点。
5. 实现修改联系人信息函数,首先判断联系人是否存在,如果不存在则提示用户,否则修改节点中的信息。
6. 实现查找联系人信息函数,遍历链表查找是否有匹配姓名的联系人。
7. 实现显示所有联系人信息函数,遍历链表打印出所有联系人信息。
8. 在main函数中调用上述函数,根据用户输入的指令调用对应的函数,直到用户选择退出程序。
C语言使用结构体实现简单通讯录
C语⾔使⽤结构体实现简单通讯录C语⾔⽤结构体实现⼀个通讯录,通讯录可以⽤来存储1000个⼈的信息,每个⼈的信息包括:姓名、性别、年龄、电话、住址提供⽅法:1. 添加联系⼈信息2. 删除指定联系⼈信息3. 查找指定联系⼈信息4. 修改指定联系⼈信息5. 显⽰所有联系⼈信息6. 清空所有联系⼈代码实现:头⽂件:#ifndef __HEAD_H__ ////防⽌头⽂件被多次调⽤#define __HEAD_H__#include<stdio.h>#include<string.h>#include<stdlib.h>#define PEOPLE_MAX 1000#define NAME_LENTH 20#define SEX_LENTH 5#define AGE_LENTH 10#define TEL_LENTH 15#define ADDR_LENTH 50 //宏定义各个数据所需的⼤⼩,后续引⽤直接可以使⽤名称,或需修改时只⽤修改这⾥就可以了struct People{char name[NAME_LENTH];char sex[SEX_LENTH];int age;char tel[TEL_LENTH ];char addr[ADDR_LENTH];}; //定义⼈的信息结构体(包含各种信息)struct Contact{struct People person[PEOPLE_MAX];int user_count;}; //定义通讯录结构体(包含⼈的信息的结构体和⽤户个数)typedef struct Contact * pContact;int add_contact(pContact pcon); //pContact是⼀个结构体指针类型,pcon是⼀个指向struct Contact的⼀个指针int dele_contact(pContact pcon); //例如:typedef int * int 即 int *p ==> int pint find_contact(pContact pcon);int modify_contact(pContact pcon);int show_contact(pContact pcon);int clear_contact(pContact pcon);void menu(); //函数的声明#endif各种函数实现:#include"head.h"int add_contact(pContact pcon){if(pcon->user_count >= PEOPLE_MAX){printf("contact is full!\n");return -1;}else{printf("input name,please!\n");scanf("%s",pcon->person[pcon->user_count].name);printf("input sex,please!\n");scanf("%s",pcon->person[pcon->user_count].sex);printf("input age,please!\n");scanf("%d",&pcon->person[pcon->user_count].age); //这⾥⽤%d输出intprintf("input tel,please!\n");scanf("%s",pcon->person[pcon->user_count].tel);printf("input addr,please!\n");scanf("%s",pcon->person[pcon->user_count].addr);(pcon->user_count)++;}return 0;} //添加信息的实现int dele_contact(pContact pcon){int ret = find_contact(pcon); //调⽤查找函数并保存其值if(ret != -1){int i = 0;i = ret; //这⾥要⽤另⼀个变量来保存输⼊的姓名for(i = 0;i < pcon->user_count-1;i++){pcon->person[i] = pcon->person[i+1]; //⽤后⼀个覆盖前边的,如果要删除的是最后⼀个不进⾏此步骤}pcon->user_count --; //直接减去最后⼀个即count--}return 0;}int find_contact(pContact pcon){int i = 0;char ret[NAME_LENTH]; //⽤另⼀个数组来保存nameprintf("input name,please!\n");scanf("%s",ret);while(i <= pcon->user_count){if(strcmp(ret,pcon->person[i].name)== 0) //⽐较输⼊的姓名和通讯录中已有的姓名{printf("name\tsex\tage\ttel\taddr\t\n");printf("%s\t",pcon->person[i].name);printf("%s\t",pcon->person[i].sex);printf("%d\t",pcon->person[i].age);printf("%s\t",pcon->person[i].tel);printf("%s\t\n",pcon->person[i].addr);return i;}i++;}printf("sorry,the name you find is not exist!\n");return -1;}int modify_contact(pContact pcon) //修改函数,⾸先找到如要修改的姓名,然后重新输⼊{int ret = find_contact(pcon);if(ret != -1){printf("input name,please!\n");scanf("%s",pcon->person[ret].name);printf("input sex,please!\n");scanf("%s",pcon->person[ret].sex);printf("input age,please!\n");scanf("%d",&(pcon->person[ret].age));printf("input tel,please!\n");scanf("%s",pcon->person[ret].tel);printf("input addr,please!\n");scanf("%s",pcon->person[ret].addr);}else{printf("sorry,the name you find is not exist!\n");}return 0;}int show_contact(pContact pcon){int i = 0;printf("name\tsex\tage\ttel\t\taddr\t\n"); //制表符来制作表头for(i = 0;i < pcon->user_count;i++){printf("%s\t",pcon->person[i].name);printf("%s\t",pcon->person[i].sex);printf("%d\t",pcon->person[i].age);printf("%s\t",pcon->person[i].tel);printf("%s\t\n",pcon->person[i].addr);}printf("\n");return 0;}int clear_contact(pContact pcon){pcon->user_count = 0 ;return 0;} //清除所有⼈,直接让成员个数变为0即可void menu(){printf("-------contact---------\n");printf(" 1.添加联系⼈信息 \n");printf(" 2.删除指定联系⼈信息 \n");printf(" 3.查找指定联系⼈信息 \n");printf(" 4.修改指定联系⼈信息 \n");printf(" 5.显⽰所有联系⼈信息 \n");printf(" 6.清空所有联系⼈ \n");printf(" 0.谢谢使⽤ \n");printf("-------contact---------\n");}主函数:#include"head.h"int main(){int n=1;struct Contact people; //调⽤通讯录结构体er_count = 0; //初始化user_countwhile(n){menu();printf("please input\n");scanf("%d",&n);switch(n){case 1:{add_contact(&people);break;}case 2:{dele_contact(&people);break;}case 3:{find_contact(&people);break;}case 4:{modify_contact(&people);break;}case 5:{show_contact(&people);break;}case 6:{clear_contact(&people);break;}default:{return 0;break;} //switch case语句分⽀选择不同函数实现不同作⽤ }}return 0;}结果实现:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
通讯录c语言程序设计代码
通讯录c语言程序设计代码#include<stdio.h>。
#include<string.h>。
//通讯录结构体。
typedef struct addressbook。
char name[20];。
long tel;。
char addr[20];。
}Address;。
//把Address结构体强转成Address指针。
typedef Address *Addressbook;。
//查找函数。
Addressbook find (Addressbook book,int count)。
char findName[20];。
int flag=0;。
Addressbook p;。
printf("请输入查找的姓名:");。
scanf("%s",findName);。
for(p=book;p<book+count;p++)。
if(strcmp(findName,p->name)==0)。
flag=1;。
}。
}。
if(flag==0)。
printf("没有找到%s\n",findName);。
return book;。
}。
else。
return p;。
}。
}。
//添加函数。
void add (Addressbook book,int *count)。
printf("请输入需要增加的通讯录内容:\n");。
printf("姓名:");。
scanf("%s",(book+*count)->name);。
scanf("%ld",&(book+*count)->tel);。
printf("地址:");。
scanf("%s",(book+*count)->addr);。
printf("添加成功\n");。
通讯录C语言程序设计
通讯录C语言程序设计通讯录C语言程序设计是一个常见的编程练习项目,它可以帮助初学者熟悉C语言的基本语法和数据结构。
下面是一个简单的通讯录程序设计示例,包括了程序的基本框架、功能实现和代码实现。
程序设计目标设计一个通讯录程序,能够实现以下功能:1. 添加联系人2. 删除联系人3. 修改联系人信息4. 显示所有联系人5. 按姓名查找联系人6. 保存联系人信息到文件7. 从文件加载联系人信息程序设计思路1. 数据结构设计:使用结构体`struct Contact`来存储联系人信息,包括姓名、电话号码、电子邮件等。
2. 功能模块划分:将程序分为多个功能模块,如添加、删除、修改、显示、查找、保存和加载。
3. 用户界面设计:设计一个简单的文本界面,使用循环让用户选择相应的操作。
4. 文件操作:使用C语言的文件操作函数来实现联系人信息的持久化存储。
数据结构定义```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100#define MAX_NAME 50#define MAX_PHONE 20#define MAX_EMAIL 50struct Contact {char name[MAX_NAME];char phone[MAX_PHONE];char email[MAX_EMAIL];};struct Contact contacts[MAX_CONTACTS];int contactCount = 0;```功能实现1. 添加联系人```cvoid addContact() {if (contactCount >= MAX_CONTACTS) {printf("Contact list is full.\n"); return;}printf("Enter name: ");scanf("%49s", contacts[contactCount].name);printf("Enter phone: ");scanf("%19s", contacts[contactCount].phone);printf("Enter email: ");scanf("%49s", contacts[contactCount].email);contactCount++;}```2. 删除联系人```cvoid deleteContact() {int i, index;printf("Enter name of the contact to delete: ");scanf("%49s", contacts[index].name);for (i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, contacts[index].name) == 0) {index = i;break;}}if (i == contactCount) {printf("Contact not found.\n");} else {for (; i < contactCount - 1; i++) {contacts[i] = contacts[i + 1];}contactCount--;printf("Contact deleted.\n");}}```3. 修改联系人信息```cvoid modifyContact() {// 类似于删除联系人,找到联系人后修改信息}```4. 显示所有联系人```cvoid displayContacts() {for (int i = 0; i < contactCount; i++) {printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}}```5. 按姓名查找联系人```cvoid findContact() {char name[MAX_NAME];printf("Enter name to find: ");scanf("%49s", name);for (int i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, name) == 0) { printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);return;}}printf("Contact not found.\n");}```6. 保存联系人信息到文件```cvoid saveContactsToFile() {FILE *file = fopen("contacts.txt", "w");if (file == NULL) {printf("Error opening file.\n");return;}for (int i = 0; i < contactCount; i++) {fprintf(file, "%s,%s,%s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}fclose(file);printf("Contacts saved to file.\n");}```7. 从文件加载联系人信息```cvoid loadContactsFromFile() {FILE *file = fopen("contacts.txt", "r");if (file == NULL) {printf("。
c语言课程设计通讯录
c语言课程设计通讯录好的,我可以帮助您设计一个简单的通讯录程序。
下面是一个示例代码,实现了通讯录的基本功能,包括添加联系人、显示联系人列表、查找联系人、删除联系人和修改联系人信息。
c复制代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100 // 通讯录最大容量// 定义联系人结构体typedef struct {char name[20]; // 姓名char phone[15]; // 电话号码char email[30]; // 邮箱地址} Contact;// 定义通讯录结构体typedef struct {Contact contacts[MAX_CONTACTS]; // 联系人数组int size; // 当前联系人数量} AddressBook;// 添加联系人void add_contact(AddressBook *book) {if (book->size >= MAX_CONTACTS) {printf("通讯录已满,无法添加联系人。
\n"); return;}printf("请输入联系人姓名:");scanf("%s", book->contacts[book->size].name); printf("请输入联系人电话号码:");scanf("%s", book->contacts[book->size].phone); printf("请输入联系人邮箱地址:");scanf("%s", book->contacts[book->size].email); book->size++;printf("联系人已添加。
数据结构课程设计报告--通讯录的制作
山东理工大学计算机学院课程设计(数据结构)班级姓名学号指导教师二○一一年一月二十日课程设计任务书及成绩评定课题名称数据结构Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。
(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。
(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2、设计题目要求:通讯录的制作设计目的:用〈〈数据结构〉〉中的双向链表作数据结构,结合C/C++语言基本知识。
编写一个通讯录管理系统。
以把所学数据结构知识应用到实际软件开发中去。
设计内容:本系统应完成一下几方面的功能:输入信息——enter();显示信息———display( );查找以姓名作为关键字———search( );删除信息———delete( );存盘———save ( );装入———load( ) ;设计要求:1) 每条信息至包含:姓名(NAME )街道(STREET)城市(CITY)邮编(ZIP)国家(STATE)几项。
2) 作为一个完整的系统,应具有友好的界面和较强的容错能力。
3) 上机能正常运行,并写出课程设计报告。
Ⅱ、设计进度及完成情况Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3] 谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一一年一月二十一日目录第一章概述 (1)第二章系统分析 (2)第三章概要设计 (2)第四章详细设计 (5)第五章运行与测试 (16)第六章总结与心得 (22)参考文献 (24)第一章概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
通讯录的制作c语言
通讯录的制作1. 介绍通讯录是一种管理联系人信息的工具,能够存储和查找联系人的姓名、电话号码、邮箱等信息。
在现代社会中,通讯录已经成为人们日常生活中必备的工具之一。
本文将介绍如何使用C语言编写一个简单的通讯录程序。
2. 功能需求通讯录程序应该具备以下功能: - 添加联系人:用户可以输入联系人的姓名、电话号码和邮箱,将其添加到通讯录中。
- 删除联系人:用户可以根据姓名或电话号码删除已存在的联系人。
- 修改联系人信息:用户可以根据姓名或电话号码修改已存在联系人的信息。
- 查找联系人:用户可以根据姓名或电话号码查找已存在的联系人,并显示其详细信息。
- 显示所有联系人:用户可以显示通讯录中所有联系人的列表。
3. 数据结构设计为了实现上述功能,我们需要设计合适的数据结构来存储联系人信息。
在C语言中,可以使用结构体来表示一个联系人。
typedef struct {char name[50];char phone[20];char email[50];} Contact;以上代码定义了一个名为Contact的结构体,包含了三个字段:姓名、电话号码和邮箱。
每个字段都使用字符数组来表示。
同时,我们需要定义一个数据结构来存储多个联系人,可以使用数组或链表。
在本文中,我们将使用数组来实现通讯录。
#define MAX_CONTACTS 100Contact contacts[MAX_CONTACTS];int numContacts = 0;以上代码定义了一个名为contacts的数组,用于存储所有联系人的信息。
numContacts变量用于记录当前通讯录中联系人的数量。
4. 功能实现4.1 添加联系人添加联系人功能允许用户输入联系人的姓名、电话号码和邮箱,并将其添加到通讯录中。
void addContact() {if (numContacts >= MAX_CONTACTS) {printf("通讯录已满,无法添加更多联系人。
数据结构_c语言电话本
电话本程序代码,可实现添加,删除,查找等操作。
#include<stdio.h>#include<string.h>struct contact{char name[15],adress[20],number[13];}con[100];int i=0;void add(){char aname[15],aadress[20],anumber[13];int f;printf("输入姓名,地址,电话,空格区分\n");scanf("%s %s %s",aname,aadress,anumber);for(f=0;f<i;f++){if(strcmp(con[f].name,aname)==0){printf("联系人姓名重复,是否覆盖联系人?覆盖输入'y'\n");if('y'==getch()){strcpy(con[f].name,aname);strcpy(con[f].adress,aadress);strcpy(con[f].number,anumber);printf("覆盖成功!\n");return;}printf("取消覆盖!\n");return;}}for(f=0;f<i;f++){if(strcmp(con[f].number,anumber)==0){printf("联系人电话重复,是否覆盖联系人?覆盖输入'y'\n");if('y'==getch()){strcpy(con[f].name,aname);strcpy(con[f].adress,aadress);strcpy(con[f].number,anumber);printf("覆盖成功!\n");return;}printf("取消覆盖!");return;}}strcpy(con[i].name,aname);strcpy(con[i].adress,aadress);strcpy(con[i].number,anumber);i++;printf("添加成功!\n");return;}void dele(int d){printf("删除成功!\n",con[d].name,con[d].adress,con[d].number);strcpy(con[d].name,con[i-1].name);strcpy(con[d].adress,con[i-1].adress);strcpy(con[d].number,con[i-1].number);i--;return;}int find(){printf("输入查找方式:---------1姓名----2地址----3电话---------\n"); int in,f;scanf("%d",&in);while((in==1)||(in==2)||(in==3)){if(in==1){char name[15];printf("\n请输入姓名:");scanf("%s",name);for(f=0;f<i;f++)if(strcmp(con[f].name,name)==0){printf("姓名:%s 地址:%s 电话:%s\n",con[f].name,con[f].adress,con[f].number);return f;}return(-1);}else if(in==2){char adress[20];int count,j;count=0;printf("\n请输入地址:");scanf("%s",adress);for(j=0;j<i;j++)if(strcmp(con[j].adress,adress)==0){printf("姓名:%s 地址:%s 电话:%s\n",con[j].name,con[j].adress,con[j].number);count++;f=j;}if(count>1)return (-2);else if(count==1)return f;elsereturn (-1);}else if(in==3){char number[13];printf("\n请输入电话:");scanf("%s",number);for(f=0;f<i;f++)if(strcmp(con[f].number,number)==0){printf("姓名:%s 地址:%s 电话:%s\n",con[f].name,con[f].adress,con[f].number);return f;}return(-1);}}}main(){int c,d;while(1){printf("\n输入:-----1添加联系人----2删除联系人----3查找联系人----4列出所有联系人-----\n");scanf("%d",&c);while((c==1)||(c==2)||(c==3)||(c==4)){switch(c){case 1:{printf("添加操作:");add();break;}case 2:{printf("删除操作:");d=find();if(d>=0)dele(d);else if(d==-2)printf("有多个同地址的联系人,请选择其他删除方式!\n");else{printf("错误,联系人不存在!\n");}break;}case 3:{printf("查找操作:");if((d=find())==-1){printf("联系人不存在,是否添加?添加输入'y'\n");if('y'==getch())add();}break;}case 4:{printf("所有联系人:\n");int j=0;for(;j<i;j++)printf("姓名:%s 地址:%s 电话:%s\n",con[j].name,con[j].adress,con[j].number);}}break;}}}。
通讯录的制作c语言
通讯录的制作c语言一、前言通讯录是一个常见的管理工具,它可以帮助我们更好地组织和管理联系人信息。
在日常生活中,我们经常需要制作通讯录来保存联系人信息。
本文将介绍如何使用C语言来制作一个简单的通讯录程序。
二、需求分析在开始编写程序之前,我们需要先确定程序的需求。
通讯录程序需要具备以下功能:1. 添加联系人:输入联系人信息并保存到文件中。
2. 显示所有联系人:从文件中读取所有联系人信息并显示。
3. 查找联系人:根据姓名查找并显示相应的联系人信息。
4. 修改联系人:根据姓名修改相应的联系人信息。
5. 删除联系人:根据姓名删除相应的联系人信息。
三、程序设计1. 文件结构设计为了实现通讯录数据的持久化存储,我们可以将所有联系人信息保存在一个文件中。
文件结构可以设计为以下格式:struct Contact {char name[20]; // 姓名char phone[20]; // 电话号码char email[30]; // 邮箱地址};2. 界面设计为了方便用户操作,我们可以设计一个简单的命令行界面,通过输入数字选择相应功能。
界面可以设计为以下格式:*********************** 通讯录管理系统 ** 1. 添加联系人 ** 2. 显示所有联系人 ** 3. 查找联系人 ** 4. 修改联系人 ** 5. 删除联系人 ** 0. 退出系统 ***********************请选择功能:3. 功能实现根据需求分析,我们需要实现以下功能:1. 添加联系人添加联系人需要输入姓名、电话号码和邮箱地址,并将数据保存到文件中。
可以使用以下代码实现:void addContact() {struct Contact contact;printf("请输入姓名:");scanf("%s", );printf("请输入电话号码:");scanf("%s", contact.phone);printf("请输入邮箱地址:");scanf("%s", contact.email);FILE *fp = fopen("contacts.dat", "ab");fwrite(&contact, sizeof(struct Contact), 1, fp);fclose(fp);printf("添加成功!\n");}2. 显示所有联系人显示所有联系人需要从文件中读取数据并输出到屏幕上。
c语言通讯录程序(共5篇)
c语言通讯录程序(共5篇)第一篇:c语言通讯录程序C语言程序设计实践——通讯录管理系统六、程序源代码及注释#include #include #include #include #define SUM 100 #define STOP 1000typedef struct /*结构体,存放通讯录成员信息,重新定义成member型变量*/ { char name[10]; char tel[15]; char cla[5]; char mail[20]; char qq[15]; }member;member info[SUM]; //所有成员空间FILE *fp;//文件指针,用于打开或保存通讯录文件int count=0; //全局变量,用于计数已存入数量/*-----------------------*/int load(char filename[])//打开通讯录文件{ member *p; int i=0; if((fp=fopen(filename,"rb"))==NULL)return i; else{while(!feof(fp)){p=(member *)malloc(sizeof(member));if(fread(p,sizeof(member),1,fp)==1){strcpy(info[i].name,p->name);strcpy(info[i].tel,p->tel);strcpy(info[i].cla,p->cla);strcpy(info[i].mail,p->mail);strcpy(info[i].qq,p->qq);i++;}free(p);}return i;} } /*------------------*/void save(char filename[]) //保存通讯录文件 {int i;member *p;if((fp=fopen(filename,"wb"))==NULL){printf("无法保存!打开文件%s时出错\n",filename); exit(1);}elsefor(i=0;i{p=(member *)malloc(sizeof(member));strcpy(p->name,info[i].name);strcpy(p->tel,info[i].tel);strcpy(p->cla,info[i].cla);strcpy(p->mail,info[i].mail);strcpy(p->qq,info[i].qq);fwrite(p,sizeof(member),1,fp);free(p);}fclose(fp); } /*-----------------*/ void display(void) //分类查看功能 { system("cls");char dis;char way[5];int i,j=0;choice:printf("**********请选择查看分类***********\n");printf("**********1.亲友**********\n");printf("**********2.同学**********\n");printf("**********3.老师**********\n");printf("**********4.其他**********\n");printf("**********5.查看全部**********\n");printf("**********0.返回上一级菜单**********\n");printf("*****************************************\n"); printf("请选择(1~5或0):");dis=getchar();getchar();switch(dis){case '1':strcpy(way,"亲友");break;case '2':strcpy(way,"同学");break;case '3':strcpy(way,"老师");break;case '4':strcpy(way,"其他");break;case '5':printf("*******全部通讯成员*******\n"); for(i=0;iprintf("姓名:%s\n",info[i].name);printf("电话号码:%s\n",info[i].tel);printf("电子邮箱:%s\n",info[i].mail);printf("QQ号:%s\n",info[i].qq);printf("分类:%s\n",info[i].cla);printf("*****************************\n");j++;}if(j==0){printf("************************\n");printf("无任何通讯成员\n");}j=0;Sleep(STOP);goto choice; break;case '0':return; break;default:printf("*************************\n");printf("输入指令有误!\n");printf("*************************\n");Sleep(STOP);goto choice;}printf("********通讯成员之%s*******\n",way); for(i=0;iif(strcmp(info[i].cla,way)==0){printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("**********************************\n"); j++;}}if(j==0){printf("该分类中无通讯成员\n");printf("******************\n");}j=0;Sleep(STOP);goto choice; }/*------*/ int add(void)//增加新的成员 {member temp;int i;reinput_name:printf("请输入新成员的姓名:");gets();for(i=0;iif(strcmp(info[i].name,)==0){ printf("该姓名已存在!\n");Sleep(STOP);goto reinput_name;}reinput_tel:printf("请输入新成员的电话号码:"); gets(temp.tel);for(i=0;iif(strcmp(info[i].tel,temp.tel)==0){ printf("该电话号码已存在!\n");Sleep(STOP);goto reinput_tel;}printf("请输入新成员的电子邮箱:"); gets(temp.mail);printf("请输入新成员的QQ号:");gets(temp.qq);printf("请输入新成员的分类:");gets(temp.cla);info[count]=temp;count++;return count; }/*-----*/ int search(char sname[]) //查找功能 { int flag=0,i;for(i=0;iif(strcmp(info[i].name,sname)==0){printf("*****************************\n"); printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("******************************\n"); flag=1;}return flag; }/*---------*/ int rework(char rname[])//修改功能 {int flag=0,i;for(i=0;iif(strcmp(info[i].name,rname)==0){printf("*********************");printf("请输入新的姓名:");gets(info[i].name);printf("请输入新的电话号码:");gets(info[i].tel);printf("请输入新的电子邮箱:");gets(info[i].mail);printf("请输入新的QQ号:");gets(info[i].qq);printf("请输入新的分类:");gets(info[i].cla);printf("********************");flag=1;}return flag; }/*-----------------------------*/ int erase(char ename[]) //删除功能 {int flag=0,i,j;for(i=0;iif(strcmp(info[i].name,ename)==0){for(j=i;jinfo[j]=info[j+1];count--;flag=1;}return flag; } /*-----------------------------*/ int call(void)//拨号功能 {int i,j,flag=0;char cname[10];printf("**************************\n");for(i=0;iprintf("%s ",info[i].name);}putchar('\n');printf("请输入需要拨号的姓名:");gets(cname);for(i=0;iif(strcmp(info[i].name,cname)==0){printf("正在拨号:");for(j=0;info[i].tel[j]!='\0';j++){printf("%c",info[i].tel[j]);Sleep(300);}putchar('\n');flag=1;}return flag; } /*-----------------------*/ int main(void)//主函数{ char filename[40]; char c,save_j; int t; char s_r_e_name[10];printf("欢迎使用通讯录系统!请输入通讯录文件的有效路径(若文件不存在则自动创建新通讯录)\n"); gets(filename); count=load(filename); system("cls");printf("======================================\ n");printf("==========欢迎使用我的通讯录==========\n");printf("============ 制作:石贵清===========\n");begin:printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n");printf("※※\n");printf("※通迅录※\n");printf("※※\n");printf("※1. 添加新联系人.5. 分类显示查询.※\n");printf("※※\n");printf("※2. 删除联系人.6.拨出电话.※\n");printf("※※\n");printf("※3. 查询通讯成员.7.保存通讯文件.※\n");printf("※※\n");printf("※4. 修改信息.0. 关闭通迅录.※\n");printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf("友情提醒:请在退出本程序之前按7保存通讯文件! \n"); printf("请输入您选择的操作:");c=getchar();getchar(); switch(c) {case '1':if(count==SUM){printf("======= 通讯录空间已满,无法继续录入!===\n"); Sleep(STOP);goto begin; break;}t=add();printf("===== 信息已建立,请尽快保存!=====\n");if(t==SUM){printf("===== 通讯录空间已满,无法继续录入!=====\n"); }Sleep(STOP);goto begin;break; case '2': if(count==0){printf("========================\n");printf("=== 通讯录中无任何成员!====\n");printf("======================\n");Sleep(STOP);goto begin;break; }printf("请输入要删除成员的姓名:");gets(s_r_e_name);t=erase(s_r_e_name);if(!t) {printf("=================\n");printf("==== 查无此人====\n");printf("=================\n"); } else {printf("======================\n");printf("======已成功删除======\n");printf("======================\n"); } Sleep(STOP); goto begin;break; case '3':printf("请输入要查找的成员姓名:");gets(s_r_e_name);t=search(s_r_e_name);if(!t){printf("======================\n");printf("===== 查无此人 =======\n");printf("======================\n");}Sleep(STOP);goto begin;break;case '7':save(filename);printf("==============================\n");printf("======保存成功!=======\n");printf("==============================\n"); Sleep(STOP); goto begin;break;case '4':printf("请输入要修改的成员姓名:");gets(s_r_e_name);t=rework(s_r_e_name);if(!t) {printf("=======查无此人====\n"); }else{printf("=========================\n"); printf("====修改成功====\n");}Sleep(STOP);goto begin;break;case '5':display();Sleep(STOP);goto begin;break;case '6':t=call();if(!t){printf("=============================\n"); printf("====== 输入姓名错误! =======\n");printf("============================\n"); }else{printf("=========================\n");printf("======电话已经拨出=====\n");printf("=======================\n");}Sleep(STOP);goto begin;break;case '0':printf("是否保存数据文件?(Y:是/N:否)");save_j=getchar();if(save_j=='Y'||save_j=='y'){save(filename);printf("====== 保存成功!=======\n");printf("======= 感谢您的使用!再见! ======\n");}else{printf("========================\n");printf("=== 感谢您的使用!再见! ===\n");printf("========================\n");}exit(0); default:printf("=====Sleep(STOP);goto begin; } return 0; }输入指令无效!====");第二篇:C语言程序设计学生通讯录管理系统#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "stdlib.h" #define null 0 struct record { char name[20]; char phone[20]; char adress[40]; char postcode[10]; char e_mail[30]; }student[500]; struct LinkList { struct record US; struct LinkList *next; }a; struct LinkList *head=null; int num=0; FILE *fp; int menu_select(); int adduser(); int list(); int search(); int display(); int add(); int listbyname(); int dele(); int save(); int exit();void main() {system("cls"); for(;;) { switch(menu_select()) { case 0:adduser();break; case 1:list();break; case 2:search();break; case 3:add();break; case 4:dele();break; case 5:save();break; case 6:exit(0); } } } menu_select() { char s[80]; int a; printf("*_* press any key enter menu! *_* \n"); getch(); system("cls"); printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\n"); printf("\t\t 1. 显示记录 \n"); printf("\t\t 2. 按姓名查找\n"); printf("\t\t 3. 插入记录 \n"); printf("\t\t 4. 删除记录\n"); printf("\t\t 5. 记录保存文件\n"); printf("\t\t 6. Quit\n"); printf("\t\t***********************************************\n");do{ printf("\n Enter you choice(0~11):"); scanf("%s",s); a=atoi(s); } while (a<0||a>11); return a; }adduser() { printf("\n\t\t**************** 请输入用户信息****************\n"); printf("\n\t\t输入姓名:"); scanf("%s",&student[num].name); printf("\n\t\t输入电话号码:"); scanf("%s",&student[num].phone); printf("\n\t\t输入地址:"); scanf("%s",&student[num].adress); printf("\n\t\t输入邮编:"); scanf("%s",&student[num].postcode); printf("\n\t\t输入e-mail:"); scanf("%s",&student[num].e_mail); num++; printf("\n\t\t是否继续添加?(Y/N):"); if (getch()=='y') adduser(); return(0); } list() { int i; system("cls"); if(num!=0) { printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;iprintf("\n\t\t姓名:%s",student[i].name); printf("\n\t\t电话:%s",student[i].phone); printf("\n\t\t地址:%s",student[i].adress); printf("\n\t\t邮编:%s",student[i].postcode); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\t\t"); if (i+1add() { int i; if ((fp=fopen("student.bin","wb"))==NULL) { printf("\n\t\t文件打开失败"); } for (i=0;isave() { int j; FILE*fp; fp=fopen("student.txt","w"); if (fp==NULL) printf("can't open the file."); if(num!=0) { for(j=0;j fwrite(student,sizeof(student),1,fp); } } printf("保存成功!"); fclose(fp); return(0); }第三篇:C语言作业:学通讯录学生通讯录一、语言和环境1.实现语言:C语言。
通讯录的录入与显示c语言多种解题思路
通讯录的录入与显示C语言多种解题思路一、概述通讯录是我们日常生活中常用的功能之一,通过通讯录我们可以方便地管理通联人的信息,并随时查找需要的通联人。
在编程领域中,通讯录的录入与显示是一个常见的问题,C语言作为一种经典的编程语言,对于通讯录的解题思路也有多种方式。
本文将介绍通讯录的录入与显示问题,并从C语言多种解题思路进行讨论。
二、通讯录的录入1. 使用结构体在C语言中,我们可以使用结构体来表示一个通联人的信息,包括尊称、通联方式号码、电流新箱等。
我们需要定义一个结构体来存储通联人的信息:```ctypedef struct{char name[50];char phone[20];char em本人l[50];} Contact;```我们可以定义一个数组来存储多个通联人的信息:```cContact contacts[100];```接下来,我们可以通过循环和用户输入的方式来进行通讯录的录入:```cint numContacts;printf("请输入通联人数量:");scanf("d", numContacts);for(int i=0; i<numContacts; i++){printf("请输入第d个通联人的尊称:", i+1);scanf("s", contacts[i].name);printf("请输入第d个通联人的通联方式号码:", i+1);scanf("s", contacts[i].phone);printf("请输入第d个通联人的电流新箱:", i+1);scanf("s", contacts[i].em本人l);}```通过以上方式,我们可以实现通讯录的录入功能,并且将通联人的信息存储在一个结构体数组中。
原创c语言课程设计通讯录
原创C语言课程设计通讯录1. 引言通讯录是一种用于存储联系人信息的工具,对于个人和组织来说,它是必不可少的。
在本篇文章中,我将介绍一个基于C语言的通讯录设计方案。
通过这个课程设计项目,我们可以学习到如何使用C语言实现基本的数据处理和文件操作。
2. 功能需求分析在设计通讯录之前,我们需要明确所要实现的功能。
根据常见的通讯录需求,以下是我们的功能设计:•添加联系人信息:通过输入姓名、手机号码、邮箱等信息,将联系人添加到通讯录中。
•删除联系人信息:根据姓名或手机号码查找并删除指定联系人。
•修改联系人信息:根据姓名或手机号码查找并修改指定联系人的信息。
•查找联系人信息:根据姓名或手机号码查找并显示指定联系人的信息。
•显示全部联系人信息:将通讯录中的所有联系人信息按照一定的格式显示出来。
•保存通讯录:将通讯录中的联系人信息保存到文件中。
3. 数据结构设计在实现通讯录的功能之前,我们需要设计合适的数据结构来存储联系人信息。
考虑到联系人的信息较为复杂,并且需要支持动态增删改查的操作,我们选择使用链表来存储联系人信息。
每个节点包含姓名、手机号码、邮箱等信息,以及指向下一个节点的指针。
struct Contact {char name[50];char phone[20];char email[50];struct Contact *next;};4. 程序流程设计4.1 主菜单设计通讯录程序的主要界面是一个菜单,让用户选择不同的功能。
使用一个无限循环来保持程序一直运行,用户可以输入不同的指令来选择要执行的功能。
```c while (1) { // 显示菜单 printf(。
c语言通讯录设计与实现
C 语言通讯录设计与实现本文主要介绍了如何使用 C 语言设计并实现一个通讯录程序,包括通讯录的存储、添加、查找、修改和删除等基本操作,同时考虑了数据的持久化存储问题。
下面是本店铺为大家精心编写的4篇《C 语言通讯录设计与实现》,供大家借鉴与参考,希望对大家有所帮助。
《C 语言通讯录设计与实现》篇1引言通讯录是一个常见的应用程序,用于存储和管理联系人的信息,包括姓名、电话号码、电子邮件地址等。
在现代智能手机中,通讯录已经成为了一个不可或缺的应用程序。
在本文中,我们将使用 C 语言来设计和实现一个简单的通讯录程序。
通讯录的设计通讯录程序需要存储联系人的信息,包括姓名和电话号码等。
我们可以使用结构体来存储联系人的信息,如下所示:```struct contact {char name[20];char phone[20];};```通讯录程序需要具有添加、查找、修改和删除联系人信息的功能。
我们可以使用数组来存储联系人的信息,并使用索引来标识每个联系人。
以下是通讯录程序的基本设计:```#define MAX_CONTACTS 100 // 通讯录最大容量struct contact contacts[MAX_CONTACTS]; // 通讯录数组int num_contacts; // 当前通讯录中的联系人数量// 添加联系人信息void add_contact(char *name, char *phone) {if (num_contacts == MAX_CONTACTS) {printf("通讯录已满,无法添加联系人");return;}contacts[num_contacts].name = name;strcpy(contacts[num_contacts].phone, phone);num_contacts++;}// 查找联系人信息void find_contact(char *name) {int i;for (i = 0; i < num_contacts; i++) {if (strcmp(contacts[i].name, name) == 0) {printf("找到联系人 %s,电话号码为 %s", name, contacts[i].phone);return;}}printf("未找到联系人 %s", name);}// 修改联系人信息void modify_contact(char *name, char *phone) { int i;for (i = 0; i < num_contacts; i++) {if (strcmp(contacts[i].name, name) == 0) {contacts[i].phone = phone;printf("修改联系人 %s的电话号码为 %s", name, phone);return;}}printf("未找到联系人 %s", name);}// 删除联系人信息void delete_contact(char *name) {int i, j;for (i = 0; i < num_contacts; i++) {if (strcmp(contacts[i].name, name) == 0) { for (j = i; j < num_contacts - 1; j++) { contacts[j] = contacts[j + 1];}num_contacts--;printf("删除联系人 %s成功", name);return;}}printf("未找到联系人 %s", name);}```通讯录的实现为了实现通讯录程序,我们需要将设计转化为代码。
班级通讯录(大数据结构,C语言)
班级通讯录1、设计目的设计一个计算机管理系统对班级通讯录进行管理。
2、设计要求一个学生的数据包括:学号、姓名、电话号码、手机、QQ号。
要求设计一个计算机管理系统对班级通讯录进行管理,具有的功能是能够进行录入、修改、删除、查找和输出所有记录。
为提高数据的可访问性,电话号码、手机、QQ号建立索引表,索引表可以在维护数据时动态维护,也可能最后一次建立。
设计条件:硬件条件:(1)学生用微机(2)多媒体教室(3)局域网环境软件条件:(1)Windows XP中文操作系统(2)Turbo C 3.03、课程设计的内容3.1、需求分析:随着科技的进步和信息产业的发展,通讯录成为了现代生活中的一个重要的工具。
利用通讯录管理系统对通讯录进行统一管理,包括添加,修改,查询记录等功能,实现通讯录管理工作的系统化,规范化和自动化,为生活提供便利。
在设计的通讯录中,学生学号,电话号码,手机号码,QQ均以数字的形式进行输入,学生姓名则以中文,英文输入均可进行记录,输出的形式与输入形式相同。
按要求,设计的通讯录管理系统可以实现添加、修改、删除、查找,对学号的排序和输出所有学生记录。
进行测试的数据和执行情况如下图所示:程序主观图:添加记录:显示所有记录:删除一条记录:根据学号查找:对记录的排序:主要是对添加新纪录在链表中按升序排列,如新加李伟这条记录,对它采取排序,具体结果如下:进行排序:输入6即退出:3.2、概要设计:对该系统各种函数的定义在源代码给出,先给出函数的定义,然后给出菜单的执行函数,建立链表,并对各个功能的实现编出程序,直到调试成功为止。
3.3、详细设计主要给出程序的流程图,如下所示:菜单函数:链表构造:按学号显示学生数据:删除记录:显示所有信息:排序:3.4、程序调试与测试结果:经过认真调试最终结果为正确。
如图:3.5、结果分析:在编译过程中遇到很多困难,程序也基本上符合要求,但是有一点目前还没解决,就是基于链表的修改还没掌握,因此花了很大的力气,但是还是没有完成,只好采取的修改方式为:删除,添加,排序的方法对链表中的元素进行修改。
C 通讯录的制作
Sleep(500); cout<<"\n\n\t\t 请重新输入。。。"<<endl; system("pause"); Run(1,0); } system("cls"); cout<<"\t\t\t《通讯录 管理系统》——【增加信息】"<<endl; Dhead.Display(Dhead.head->Former); Menu(1);//【增加信息】的子菜单 Run(1,Choose()); break; case 1://编辑新增信息 Edit(Dhead.head->Former); break; case 2://删除新增的信息 system("cls"); cout<<"\t\t\t《通讯录 管理系统》——【删除新增的信息】"<<endl; cout<<"\n\t 你选择的是:【删除新增的信息】"<<endl; Dhead.Display(Dhead.head->Former);//显示 cout<<"\n!警告:该信息删除后将不能恢复!\n\t 是否确认删除以上信息:
Run(1,0); else { cout<<"\n\t 返回【主菜单】中。。。"<<endl;
+ Copy(ch: char*): void
DLinkList
- ofile: ofstream - ifstream: ifile - tempfile: ofstream - now_time: SYSTEMTIME; - Length: int = 0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通讯录的设计一、设计思路:经过一个学期的程序设计学习,我逐渐了解了计算机的基本原理和c语言的基本常识,并可以逐渐自己来实现一些简单的程序任务。
此次程序设计我选择了通讯录设计,通过函数、结构体的定义以及一些基本操作运用,经过一个多月的编写、调试、测试,最终完成了该程序的设计。
以下为我的设计思路:首先,确定通讯录的功能,我初步设计了六项功能:输入(程序中对应 enter ())、删除(程序中对应delete())、显示通讯录(程序中对应list())、搜索(程序中对应search())、保存(程序中对应save())、装载(程序中对应 load())。
其次,对于存储的数据结构,我则主要选择了一下几个方面的信息:姓名、性别年龄、籍贯、手机、下一个指针(用于链表的操作与实现)、当前指针(用于链表的操作与实现)。
二、程序源代码:#include <stdio.h>struct address{ /*创建一个address结构*/char name[10]; /*姓名*/char sex[2]; /*性别*/char age[2]; /*年龄*/char native[10]; /*籍贯*/char telephone[12]; /*手机*/struct address *next; /*下一个入口的指针*/struct address *prior; /*当前记录的指针*/} list_entry;struct address *start; /*指向列表中第一个入口*/struct address *last; /*指向列表中最后一个入口*/voidenter(),display(),search(),save(),loa d();menu_select(),list(),delet(),inp uts();main(){char s[20],choice;struct address *info;start=last=NULL; /*列表长度清零*/for(;;) { /*列循环的一个用法*/switch(menu_select()){case 1: enter(); /*输入1,进入enter()程序,是输入通讯录*/break;case 2:delet(); /*输入2,进入delete()程序,是删除一个记录*/break;case 3:list(); /*输入3,进入list()程序,是列表显示通信录*/break;case 4:search(); /*输入4,进入search()程序,搜索一个街道*/break;case 5:save(); /*输入5,保存列表到磁盘文件*/break;case 6:load(); /*输入6,从磁盘文件读入列表*/break;case 7:return(0);}}}/*选择一个选项*/menu_select(){char s[20];int c;printf("1.输入一个名字(直接回车则退出)\n");printf("2.删除一个名字\n");printf("3.列表显示\n");printf("4.搜索查询\n");printf("5.保存文件\n");printf("6.装入文件\n");printf("7.退出\n");do{printf("\n输入您的选择:");gets(s);c=atoi(s);}while (c<0||c>7);return c;}/*输入名字和地址*/void enter(){struct address *info,*dls_store();for(;;){info=(struct address *) malloc(sizeof(list_entry));if (!info) {printf("\n内存溢出");return;}inputs("输入姓名:",info->name,10);if (!info->name[0]) break; /*名字长度为0,停止输入*/inputs("输入性别:",info->sex,2);inputs("输入年龄:",info->age,2);inputs("输入籍贯:",info->native,10);inputs("输入电话:",info->telephone,12);start=dls_store(info,start);/*保存在第一个记录里*/} /*输入循环*/}inputs(prompt,s,count) /*这个函数用于输入长度为count的一个字符串,用于防止字符串长度超过它的空间,并提出警告*/char *prompt;char *s;int count;{char p[255];do{printf(prompt);/*显示这个函数的字符串*/gets(p); /*从键盘获得255个输入*/if(strlen(p)>count) printf("n字符串超过长度!");/*如果数组P中的长度超过调用函数中的参数count,提示*/}while (strlen(p)>count);/*如果输入的字符串长度超过count,循环重新输入,否则退出,返回调用者*/strcpy(s,p); /*s是目标字符串,输出时字符串在s中*/return(0);}/*产生一个又链接表,当一个新元素插入到列表的开始时,一个指向第一个元素的指针被返回*/struct address *dls_store(i,top) /*存贮顺序*/struct address *i;/*新的元素*/struct address *top;/*列表中的第一个元素*/ {struct address *old,*p;if(last==NULL) { /*列表中的第一个元素*/i->next=NULL;i->prior=NULL;last=i;return i;}p=top; /*从列表的顶部开始*/old=NULL;while(p){if(strcmp(p->name,i->name)< 0){old=p;p=p->next;}else{if (p->prior) {p->prior->next=i;i->next=p;i->prior=p->prior;p->prior=i;return top;}i->next=p; /*新的第一个元素*/i->prior=NULL;p->prior=i;return i;}}old->next=i; /*设置未尾*/i->next=NULL;i->prior=old;last=i;return start;}/*从列表中删除一个元素*/delet(){struct address *info,*find();char s[10];printf("输入姓名:");gets(s);info=find(s);if(info){if (start==info){start=info->next;if(start)start->prior=NULL;else last=NULL;}else {info->prior->next=info->next;if (info!=last)info->next->prior=info->prior ;elselast=info->prior;}free(info); /*释放空间*/}return(0);}struct address *find(name)/*一个查找姓名的结构*/ char *name;{struct address *info;info=start;while(info){if(!strcmp(name,info->name)) return info;info=info->next;/*获得下一个地址*/}printf("姓名没有发现!\n");return NULL; /*没有发现姓名*/}list() /*列表*/{register int t;struct address *info;info=start;while(info){display(info);info=info->next;/*获得下一个地址*/}printf("\n\n");return(0);}void display(info) /*显示通信录*/struct address *info;{printf("%s\n",info->name);printf("%s\n",info->sex);printf("%s\n",info->age);printf("%s\n",info->native);printf("%s\n",info->teleph one);printf("\n\n");}void search() /*搜索一个名字*/{char name[10];struct address *info,*find();printf("输入查找的名字!");gets(name);if(!(info=find(name))) printf("没有找到!\n");else display(info);}void save() /*保存通信录*/{register int t;struct address *info;FILE *fp;if((fp=fopen("mlist","wb")) ==NULL) { /*打开文件名mlist 如果错误*/printf("没有找到文件.\n");exit(1);}printf("\n正在保存文件...\n");info=start;while(info){fwrite(info,sizeof(struct address),1,fp);info=info->next;/*获得下一个地址*/}fclose(fp);}void load() /*打开一个文件*/{register int t;struct address *info,*temp=NULL;FILE *fp;if((fp=fopen("mlist","rb"))= =NULL){printf("打开文件失败...\n");exit(1);}while(start){info=start->next;free(info);start=info;}printf("\n正在读取文件...\n");start=(struct address*) malloc(sizeof(struct address));if(!start){printf("存贮溢出...\n");return;}info=start;while(!feof(fp)){if(1!=fread(info,sizeof(struct address ),1,fp)) break;/*为下一个分配空间*/info->next=(struct address*)malloc (sizeof(struct address));if(!info->next){printf("存贮溢出...\n");return;}info->prior=temp;temp=info;info=info->next;}temp->next=NULL; /*最后一个输入*/last=temp;start->prior=NULL;fclose(fp);}三、调试结果调试结果初始状态如下图所示:以下介绍五大重点功能:步骤一:输入功能。