简单通讯录C++实现
C语言实现手机通讯录的简单功能
C语言实现手机通讯录的简单功能/*功能:实现手机通讯录的简单功能 */#include#include/*手机通讯录结构定义*/struct friends_list{char name[10]; /* 姓名 */int age; /* 年龄 */char telephone[13]; /* 联系电话 */};int Count = 0; /* 定义全局变量Count,记录当前联系人总数 */ void new_friend(struct friends_list friends[ ] );void search_friend(struct friends_list friends[ ], char *name);int main(void){int choice;char name[10];struct friends_list friends[50]; /* 包含50个人的通讯录 */do{printf("手机通讯录功能选项:1:新建 2:查询 0:退出\n");printf("请选择功能:");scanf("%d", &choice);switch(choice){case 1:new_friend(friends);break;case 2:printf("请输入要查找的联系人名:");scanf("%s", name);search_friend(friends, name);break;case 0: break;}}while(choice != 0);printf("谢谢使用通讯录功能!\n");return 0;}/*新建联系人*/void new_friend(struct friends_list friends[ ]){struct friends_list f;if(Count == 50){printf("通讯录已满!\n");return;}printf("请输入新联系人的姓名:");scanf("%s", /doc/122170412.html,); printf("请输入新联系人的年龄:");scanf("%d", &f.age);printf("请输入新联系人的联系电话:");scanf("%s", f.telephone);friends[Count] = f;Count++;}/*查询联系人*/void search_friend(struct friends_list friends[ ], char *name) {int i, flag = 0;if(Count == 0){printf("通讯录是空的!\n");return;}for(i = 0; i < Count; i++)if(strcmp(friends[i].name,name) == 0){ /* 找到联系人*/ flag=1;break;}if(flag){printf("姓名: %s\t", friends[i].name);printf("年龄: %d\t", friends[i].age);printf("电话: %s\n", friends[i].telephone);}elseprintf("无此联系人!");}/* 功能:按成绩从高到低输出学生信息 */#includestruct student{int num;char name[20];int score;};struct student stud[10]; /* 定义记录10个学生信息的结构数组*/int main(void){int i, j, index, sum = 0;struct student temp; /* 工作变量 *//* 输入10个学生的记录,并累加成绩 */printf("\nInput the student's number, name and score: \n");for(i = 0; i < 10; i++){printf("No %d: ", i+1); /* 提示输入第i个同学的信息 */scanf("%d%s%d", &stud[i].num, stud[i].name, &stud[i].score);sum = sum + stud[i].score;}/* 按照分数从低到高排序,使用选择排序法 */for(i = 0; i < 9; ++i ){ /* 外部循环 */index =i;for (j = i+1; j <10; j++ ) /* 内部循环 */if (stud[j].score < stud[index].score) /* 比较成绩的大小 */index = j;temp = stud[index]; /* 交换数组元素 */stud[index] = stud[i];stud[i] = temp;}/* 输出成绩 */printf("The average: %d\n", sum/10 );/* 输出平均分 */printf("The student score:\n");for (i = 9; i >= 0; i-- )printf("%d %s %d\n", stud[i].num, stud[i].name, stud[i].score);return 0;}。
c语言通讯录实验报告
c语言通讯录实验报告C语言通讯录实验报告一、实验目的通讯录是我们日常生活中常用的工具,可以帮助我们管理联系人信息。
本次实验旨在通过使用C语言编写一个简单的通讯录程序,加深对C语言的理解和运用。
二、实验环境本次实验使用的开发环境是Visual Studio Code,编程语言为C语言。
三、实验过程1. 通讯录数据结构设计在开始编写程序之前,我们需要先设计好通讯录的数据结构。
通讯录的基本信息包括姓名、电话号码和电子邮件地址。
我们可以使用结构体来表示一个联系人的信息,然后使用数组来存储多个联系人的信息。
2. 程序主体框架设计接下来,我们需要设计程序的主体框架。
首先,我们可以定义一个数组来存储通讯录中的联系人信息。
然后,我们可以使用一个循环来提供用户操作的选项,比如添加联系人、查找联系人、删除联系人等。
用户可以通过输入相应的数字来选择不同的操作。
3. 添加联系人功能在程序中添加联系人的功能可以通过用户输入联系人的姓名、电话号码和电子邮件地址来实现。
我们可以通过循环遍历通讯录数组,找到第一个空闲的位置,将新的联系人信息存储到该位置。
4. 查找联系人功能查找联系人的功能可以通过用户输入联系人的姓名来实现。
我们可以通过遍历通讯录数组,逐个比较联系人的姓名,找到匹配的联系人并输出其详细信息。
5. 删除联系人功能删除联系人的功能可以通过用户输入联系人的姓名来实现。
我们可以通过遍历通讯录数组,找到匹配的联系人并将其从数组中删除。
6. 修改联系人功能修改联系人的功能可以通过用户输入联系人的姓名来实现。
我们可以通过遍历通讯录数组,找到匹配的联系人,并允许用户修改其电话号码和电子邮件地址。
7. 显示通讯录功能显示通讯录的功能可以通过遍历通讯录数组,逐个输出联系人的详细信息来实现。
四、实验结果经过编写和调试,我们成功实现了一个简单的C语言通讯录程序。
用户可以通过输入相应的数字来选择不同的操作,包括添加联系人、查找联系人、删除联系人、修改联系人和显示通讯录。
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语⾔实现简单通讯录功能本⽂实例为⼤家分享了C语⾔实现简单通讯录功能的具体代码,供⼤家参考,具体内容如下1.存放联系⼈信息2.信息:名字+年龄+性别+电话+住址3.增加联系⼈4.删除联系⼈5.查找联系⼈6.修改联系⼈7.排序test.c源⽂件代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"void menu(){printf("#####################################\n");printf("##### 1. add 2. del #####\n");printf("##### 3. search 4. modify #####\n");printf("##### 5. show 6. sort #####\n");printf("##### 0. exit #####\n");printf("#####################################\n");}//创建⼀个枚举类型,分别对应菜单选项enum Option{EXIT,ADD,DEL,SEARCH,MODIFY,SHOW,SORT,};int main(){int input = 0;//创建⼀个通讯录struct Contact con;//初始化通讯录InitContact(&con);//最多可以放3个联系⼈信息//空间不够再增容do{menu();//进⼊循环,先打印菜单printf("请选择:>");scanf("%d", &input);//⽤户选择操作switch (input){case ADD:AddContact(&con);break;case DEL:DelContact(&con);break;case SEARCH:SearchContact(&con);break;case MODIFY:ModifyContact(&con);break;case SHOW:ShowContact(&con);break;case SORT:SortContact(&con);break;case EXIT:SaveContact(&con);//销毁通讯录DestroyContact(&con);printf("退出\n");break;default:printf("选择错误\n");break;}} while (input);return 0;}contact.c源⽂件代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"//检测通讯录容量void CheckCapacity(struct Contact* pc){//断⾔assert(pc);if (pc->sz == pc->capacity)//如果有效联系⼈等于最⼤容纳量{//增加容量struct PeoInfo* ptr = realloc(pc->data, (pc->capacity + 2) * sizeof(struct PeoInfo)); if (ptr != NULL)//如果不为空,表⽰增容成功{pc->data = ptr;pc->capacity += 2;printf("增容成功\n");}else{perror("AddContact::realloc");return;}}}//加载有效联系⼈信息void LoadContact(struct Contact* pc){assert(pc);struct PeoInfo tmp = { 0 };//临时空间FILE* pfRead = fopen("contact.txt", "rb");//打开⽂件,读取数据if (NULL == pfRead){perror("open file for reading");return;}//加载数据//每次读取⼀个联系⼈信息,直到frea返回值⼩于1,表⽰读取完毕,循环结束while (fread(&tmp, sizeof(struct PeoInfo), 1, pfRead)){CheckCapacity(pc);pc->data[pc->sz] = tmp;pc->sz++;}//关闭⽂件fclose(pfRead);pfRead = NULL;//置空,防⽌变成野指针}//初始化通讯录void InitContact(struct Contact* pc){assert(pc);pc->sz = 0;pc->capacity = DEFAULT;pc->data = (struct PeoInfo*)malloc(DEFAULT * sizeof(struct PeoInfo));//动态申请空间 if (pc->data == NULL){perror("InitContact::malloc");return;}LoadContact(pc);//加载通讯录的信息}//增加联系⼈void AddContact(struct Contact* pc){assert(pc);CheckCapacity(pc);//检查容量是否为满,是则进⾏增容//输⼊增加指定联系⼈的信息printf("请输⼊名字:>");scanf("%s", pc->data[pc->sz].name);printf("请输⼊年龄:>");scanf("%d", &(pc->data[pc->sz].age));printf("请输⼊性别:>");scanf("%s", pc->data[pc->sz].sex);printf("请输⼊电话:>");scanf("%s", pc->data[pc->sz].tele);printf("请输⼊地址:>");scanf("%s", pc->data[pc->sz].addr);printf("添加成功\n");pc->sz++;//有效联系⼈加1}//销毁通讯录void DestroyContact(struct Contact* pc){assert(pc);free(pc->data);//释放申请的动态内存空间pc->data = NULL;//置为空指针pc->capacity = 0;//容量置0pc->sz = 0;//有效联系⼈置0}//显⽰通讯录信息void ShowContact(const struct Contact* pc){assert(pc);int i = 0;printf("%20s\t%5s\t%10s\t%12s\t%50s\n\n", "name", "age", "sex", "tele", "addr");for (i = 0; i < pc->sz; i++){//打印每⼀个数据printf("%20s\t%5d\t%10s\t%12s\t%50s\n",pc->data[i].name,pc->data[i].age,pc->data[i].sex,pc->data[i].tele,pc->data[i].addr);}}//查找指定联系⼈int FindContactByName(const struct Contact* pc, const char* name){assert(pc && name);int i = 0;for (i = 0; i < pc->sz; i++){if (strcmp(pc->data[i].name, name) == 0){return i;}}//找不到return -1;}//删除指定联系⼈void DelContact(struct Contact* pc){assert(pc);if (pc->sz == 0){printf("通讯录为空,⽆法删除\n");return;}char name[NAME_MAX] = { 0 };printf("请输⼊要删除联系⼈的名字:>");scanf("%s", name);//查找到删除的⼈int pos = FindContactByName(pc, name);if (pos == -1)printf("指定联系⼈不存在\n");else{//删除int i = 0;for (i = pos; i < pc->sz-1; i++){pc->data[i] = pc->data[i + 1];}pc->sz--;printf("成功删除\n");}}//查找指定联系⼈void SearchContact(const struct Contact* pc){assert(pc);char name[NAME_MAX] = { 0 };if (pc->sz == 0){printf("通讯录为空,⽆法查找\n");return;}printf("请输⼊要查找的联系⼈名字:>");scanf("%s", name);int pos = FindContactByName(pc, name);if (-1 == pos)printf("查⽆此⼈\n");else{printf("%15s\t%5s\t%8s\t%15s\t%30s\n\n", "name", "age", "sex", "tele", "addr"); printf("%15s\t%5d\t%8s\t%15s\t%30s\n",pc->data[pos].name,pc->data[pos].age,pc->data[pos].sex,pc->data[pos].tele,pc->data[pos].addr);}}//修改指定联系⼈void ModifyContact(struct Contact* pc){assert(pc);char name[NAME_MAX] = { 0 };if (pc->sz == 0){printf("通讯录为空,⽆法修改\n");return;}printf("请输⼊要修改的联系⼈名字:>");scanf("%s", name);int pos = FindContactByName(pc, name);printf("要修改的⼈不存在\n");else{printf("请输⼊新的名字:>");scanf("%s", pc->data[pos].name);printf("请输⼊新的年龄:>");scanf("%d", &(pc->data[pos].age));printf("请输⼊新的性别:>");scanf("%s", pc->data[pos].sex);printf("请输⼊新的电话:>");scanf("%s", pc->data[pos].tele);printf("请输⼊新的地址:>");scanf("%s", pc->data[pos].addr);}}//按照名字排序->升序int cmp_by_name(const void* e1, const void* e2){return strcmp((((struct PeoInfo*)e1)->name), (((struct PeoInfo*)e2)->name)); }//按照年龄排序->升序int cmp_by_age(const void* e1, const void* e2){return ((struct PeoInfo*)e1)->age - ((struct PeoInfo*)e2)->age;}//排序通讯录void SortContact(struct Contact* pc){assert(pc);int input = 0;if (pc->sz == 0){printf("通讯录为空,⽆法排序\n");return;}printf("按名字排序请输⼊1,年龄排序请输⼊2:>");scanf("%d", &input);if (1 == input){//名字排序qsort(pc->data, pc->sz, sizeof(struct PeoInfo), cmp_by_name);}else{//年龄排序qsort(pc->data, pc->sz, sizeof(struct PeoInfo), cmp_by_age);}}//保存通讯录void SaveContact(struct Contact* pc){assert(pc);int i = 0;FILE* pfWrite = fopen("contact.txt", "wb");把当前程序的有效联系⼈写⼊⽂件 if (NULL == pfWrite)//判断是否为空指针{perror("open file for writting");return;}//写数据for (i = 0; i < pc->sz; i++){fwrite(pc->data+i, sizeof(struct PeoInfo), 1, pfWrite);//进⾏写⼊}fclose(pfWrite);//关闭⽂件pfWrite = NULL;//置为空指针}contact.h头⽂件代码如下:#include <string.h>#include <stdio.h>#include <stdlib.h>#include <assert.h>#define DEFAULT 3#define NAME_MAX 20#define SEX_MAX 10#define TELE_MAX 12#define ADDR_MAX 50#define MAX 1000//描述联系⼈的信息struct PeoInfo{char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX];};//通讯录-动态增长版本struct Contact{struct PeoInfo* data;int sz;//通讯录中当前有效元素个数int capacity;//通讯录的当前最⼤容量};//增容void CheckCapacity(struct Contact* pc);//初始化通讯录void InitContact(struct Contact* pc);//销毁通讯录void DestroyContact(struct Contact* pc);//增加联系⼈void AddContact(struct Contact* pc);//显⽰通讯录void ShowContact(const struct Contact* pc); //删除指定联系⼈void DelContact(struct Contact* pc);//查找指定联系⼈void SearchContact(const struct Contact* pc); //修改指定联系⼈void ModifyContact(struct Contact* pc);//排序通讯录void SortContact(struct Contact* pc);//保存通讯录到⽂件void SaveContact(struct Contact* pc);//加载通讯录void LoadContact(struct Contact* pc);程序运⾏:重新运⾏程序并显⽰之前添加的联系⼈会存放在指定⽂件中,再次运⾏程序会加载进去,增容成功是因为默认容纳的联系⼈有3位,要加载4位联系⼈,所以⾃动进⾏增容。
C语言运用文件和结构体的一个例子(简易通讯录的实现)
/*:1.该程序建立一个通讯录文件,可存放有姓名、电话号码、住址信息,并且有通信录输出、查找、添加、修改及删除功能。
2.请先阅读程序,依照现有函数,完成modify()和output()函数。
3.本程序缺陷,通讯录保存信息较简单;另外,每次运行程序,都重新建立通信录;请修改程序,增加email地址信息;修改程序,使之可以对现有通信录文件操作。
*/#include<stdio.h>#include<string.h>struct person{char name[8];char tel[15];char addr[50];char em[20];};//filename数组存放通信录文件名char filename[25];FILE *fp;//主要函数原型声明void creat();void output();void search();void append();void modify();void delete();void exit();main(){int m;char k;printf("\n请输入你要打开的通讯录文件名:");gets(filename);if((fp=fopen(filename,"r"))==NULL){printf("\n当前没有此通讯录文件,现在是否执行创建(Y/N)?:");scanf("%c",&k);getchar();//用于接收输入后的回车键,下边的delete函数同理while(k!='Y'&&k!='N'&&k!='y'&&k!='n'){printf("\n输入有误,请再次输入一个值:");scanf("%c",&k);getchar();} if(k=='Y'||k=='y') {creat();}//当选择了Y或y时执行创建函数else if(k=='N'||k=='n'){printf("\n由于你选择了退出,现在程序即将关闭!\n");exit();} }else //当文件存在时把通讯录信息输出,并且提示操作{printf("\n你要打开的通讯录文件%s已存在,现在可直接对其操作*^_^*\n",filename);printf("\n通讯录文件%s现已有的通讯信息:\n",filename);output();printf("\n请根据提示选择1~5对通讯录文件进行操作*^_^*\n");}while(1){printf("\n添加,请按1");printf("\n查找,请按2");printf("\n修改,请按3");printf("\n删除,请按4");printf("\n输出,请按5");printf("\n退出,请按0\n");printf("请输入数字1~5:");scanf("%d",&m);getchar();while(m<0||m>5){printf("\n抱歉,您输入的值不是1~5的数字^@@^,请再次输入:");scanf("%d",&m);getchar();}if(m>=0&&m<=5){switch(m){case 1: append();break;case 2: search();break;case 3: modify();break;case 4: delete();break;case 5: output();break;case 0: exit();}printf("\n操作完毕,请再次选择!\n");}}}/*建立通信录函数creat():功能:建立通信录文件,并连续输入记录,以0结束输入*/void creat(){struct person one;if((fp=fopen(filename,"w"))==NULL){printf("\n不能建立通讯簿!");exit();}printf("\n成功创建%s通讯录文件,请按提示进行操作*^_^*\n",filename);fprintf(fp,"%-10s%-20s%-25s%-25s\n","姓名","电话号码","住址","电子邮件");printf("\n请输入每个成员的姓名、电话号码、住址和电子邮件(当成员名是0时结束输入):\n");scanf("%s",);while(strcmp(,"0"))//当输入的名字不为“0”的时候,执行循环,当名字为“0”时,退出循环{scanf("%s%s%s",one.tel,one.addr,one.em);fprintf(fp,"%-10s%-20s%-25s%-25s\n",,one.tel,one.addr,one.em);//把输入的信息按指定格式写入文件当中scanf("%s",);}fclose(fp);}/*输出函数output();通信录中所有通信记录,每行输出一条记录*/void output(){struct person one;if((fp=fopen(filename,"r"))==NULL){printf("\n不能打开通讯簿!");exit();}printf("\n\n%40s\n","< 通讯簿>");while(!feof(fp))//当文件未结束时,逐条读取文件信息并输出{fscanf(fp,"%s%s%s%s\n",,one.tel,one.addr,one.em);printf("%-10s%-20s%-25s%-25s",,one.tel,one.addr,one.em);}fclose(fp);}/*通讯录添加函数*/void append(){struct person one;if((fp=fopen(filename,"a"))==NULL){printf("\n不能打开通讯簿!");exit();}printf("\n请输入添加的姓名:");scanf("%s",);printf("请输入电话号码:");scanf("%s",one.tel);printf("请输入住址:");scanf("%s",one.addr);printf("请输入电子邮件:");scanf("%s",one.em);fprintf(fp,"%-10s%-20s%-25s%-25s\n",,one.tel,one.addr,one.em);printf("\n你添加的信息:\n");printf("%-10s%-20s%-25s%-25s\n","姓名","电话号码","住址","电子邮件");printf("%-10s%-20s%-25s%-25s\n",,one.tel,one.addr,one.em);fclose(fp);}/*通讯录查找函数*/void search(){int flag=0;char namekey[8];struct person one;printf("\n请输入你要查找的姓名:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL){printf("\n不能打开通讯簿!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s%s\n",,one.tel,one.addr,one.em);if(!strcmp(namekey,)){printf("\n已查到,记录为:");printf("\n%-10s%-18s%-25s%-25s",,one.tel,one.addr,one.em);flag=1;}}if(!flag)printf("\n对不起,通讯簿中没有此人的记录。
C语言简单通讯录
C语言简单通讯录#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<windows.h>#define LEN sizeof(struct student)#define TITLE_T "╔═══════════════╗\n"#define NAME "║※姓名: 号码: ║\n"#define GESHI "║※%-15s %-11s ║\n"#define BOTTOM_B "╚═══════════════╝\n"#define NEIRONG stu[i].name,stu[i].numstruct student //定义通讯录结构体{char name[15]; //姓名char num[12]; //号码};struct student stu[50]; //定义结构体数组void in(); //添加联系人void show(); //显示联系人void order(); //按字符排序void del(); //删除联系人void modify(); //修改联系人void menu(); //主菜单void total(); //计算总人数void search(); //查找联系人void main() //主函数{system("title 某某某通讯录"); //设置cmd窗口标题system("mode con cols=85 lines=35");break;case 5:modify();break;case 6:total();break;default:printf("输入编码有误!正在返回...");Sleep(3000);break;}menu(); //执行完功能再次显示菜单界面scanf("%d",&n);}}void menu() //自定义函数实现菜单功能{system("cls");system("date /t");system("time /t");printf("\n\n\n\n\n");printf("\t\t╔══════════某某某通讯录══════════╗\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. 联系人总数║\n");printf("\t\t╚══════════════════════════╝\n\n");printf("\t\t请选择(0-6):");}void in() //添加联系人{int i,m=0; //m是记录的条数char ch[2];FILE *fp; //定义文件指针if((fp=fopen("data","ab+"))==NULL) //打开指定文件{printf("打开文件失败!正在返回...");Sleep(3000);return;}while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;//统计当前记录条数}fclose(fp);if(m==0)printf("当前无记录!\n");else{system("cls");printf(TITLE_T);printf(NAME);for(i=0;i<m;i++)printf(GESHI,NEIRONG);//将信息按指定格式输出printf(BOTTOM_B);}if((fp=fopen("data","wb"))==NULL) //以只写二进制方式打开文件{printf("打开文件失败!正在返回...");Sleep(3000);return;}for(i=0;i<m;i++)fwrite(&stu[i] ,LEN,1,fp); //如果原来有记录,就将记录写入到磁盘文件中printf("是否添加?(y/n):");scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要添加联系人{back: printf("请输入联系人姓名:");scanf("%s",&stu[m].name); //输入姓名for(i=0;i<m;i++)if(strcmp(stu[i].name,stu[m].name)==0){printf("您输入的联系人已存在!\n");goto back;}printf("请输入联系人号码:");scanf("%s",stu[m].num);if(fwrite(&stu[m],LEN,1,fp)!=1) //将新录入的信息写入指定的磁盘文件{printf("保存'%s'失败!是否继续?(y/n):",stu[m].name);scanf("%s",ch);continue;}else{printf("添加'%s'成功!\n",stu[m].name);m++;}printf("是否继续?(y/n):"); //询问是否继续scanf("%s",ch);}printf("正在返回...");fclose(fp);order();return;}void show() //显示联系人{FILE *fp;int i,m=0;if((fp=fopen("data","ab+"))==NULL) //打开指定文件{printf("打开文件失败!正在返回...");Sleep(3000);return;}while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;}fclose(fp);if(m>0){printf(TITLE_T);printf(NAME);for(i=0;i<m;i++)printf(GESHI,NEIRONG);//将信息按指定格式输出printf(BOTTOM_B);}elseprintf("当前无记录!");printf("按任意键返回...");getch();}void del() //删除联系人函数{FILE *fp;int i,j,m=0;char sname[15];char ch[2];if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件,正在返回...\n");return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("当前无记录!正在返回...\n");Sleep(3000);return;}printf("请输入联系人姓名:");scanf("%s",sname);for(i=0;i<m;i++)if(strcmp(sname,stu[i].name)==0) break;if(i==m){printf("找不到'%s'!正在返回...",sname);return;}printf("已找到'%s',是否删除?(y/n)",sname);scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要进行删除{for(j=i;j<m;j++)stu[j]=stu[j+1];//将后一个记录移到前一个记录的位置m--;//记录的总个数减1printf("删除'%s'成功!\n",sname);}if((fp=fopen("data","wb"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}for(j=0;j<m;j++)//将更改后的记录重新写入指定的磁盘文件中if(fwrite(&stu[j] ,LEN,1,fp)!=1){printf("保存失败!正在返回...\n");Sleep(3000);}fclose(fp);show();}void search() //自定义查找函数{FILE *fp;int i,m=0;char sname[15];char ch[2];if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("当前无记录!正在返回...\n");Sleep(3000);return;}back1: printf("请输入联系人姓名:");scanf("%s",&sname);for(i=0;i<m;i++)if(strcmp(sname,stu[i].name)==0) //查找输入的号码是否在记录中{printf("已找到'%s',是否显示?(y/n)",sname);scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf(TITLE_T);printf(NAME);printf(GESHI,NEIRONG); //将查找出的结果按指定格式输出printf(BOTTOM_B);}else{printf("正在返回...");Sleep(3000);return;}}if(i==m+1){printf("找不到'%s',是否继续?(y/n):",sname); //未找到要查找的信息scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要继续查找联系人goto back1;printf("正在返回...");Sleep(3000);return;}printf("按任意键返回...\n");getch();}void modify(){ FILE *fp;int i,j,m=0;char sname[15];if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("当前无记录!正在返回...\n");Sleep(3000);return;}printf("请输入联系人姓名:\n");scanf("%s",&sname);for(i=0;i<m;i++)if(strcmp(sname,stu[i].name)==0) //检索记录中是否有要修改的信息break;if(i<m){printf("已找到'%s',请修改!\n",sname);printf("请输入联系人姓名:\n");scanf("%s",stu[i].name);//输入名字printf("请输入联系人号码:\n"); //输入号码scanf("%s",stu[i].num);}else{printf("找不到'%s'!正在返回...",sname);Sleep(3000);return;}if((fp=fopen("data","wb"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}for(j=0;j<m;j++) //将新修改的信息写入指定的磁盘文件中if(fwrite(&stu[j] ,LEN,1,fp)!=1){printf("保存'%s'失败!正在返回...",sname);Sleep(3000);return;}fclose(fp);order();show();}void total() //自定义计算总人数函数{FILE *fp;int m=0;if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;printf("此通讯录总共有%d名联系人!\n",m); //将统计的个数输出fclose(fp);printf("\n按任意键返回...\n");getch(); //输入任意键返回}void order() //自动排序函数{FILE *fp;struct student t; //用于交换信息int i=0,j=0,m=0; //i,j用于循环if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...");Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m] ,LEN,1,fp)==1)m++;for(i=0;i<m-1;i++)for(j=i+1;j<m;j++) //双重循环实现联系人比较并交换if((strcmp(stu[i].name,stu[j].name))>0){t=stu[i];stu[i]=stu[j];stu[j]=t;}if((fp=fopen("data","wb"))==NULL){printf("文件打开失败!正在返回...\n");Sleep(3000);return;}for(i=0;i<m;i++)//将重新排好序的内容重新写入指定的磁盘文件中if(fwrite(&stu[i],LEN,1,fp)!=1){printf("排序失败!正在返回...");Sleep(3000);return;}fclose(fp);}。
通讯录的制作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语言实现简易通讯录
⽤C语⾔实现简易通讯录C语⾔实现⼀个通讯录,通讯录可以⽤来存储1000个⼈的信息,每个⼈的信息包括:姓名、性别、年龄、电话、住址**提供⽅法:1. 添加联系⼈信息2. 删除指定联系⼈信息3. 查找指定联系⼈信息4. 修改指定联系⼈信息5. 显⽰所有联系⼈信息6. 清空所有联系⼈7. 以名字排序所有联系⼈**思路分析:⾸先我们可以分三个模块来解决这个问题,第⼀个模块我们需要⼀个头⽂件,这个头⽂件⾥可以包含⼀些相应信息,当实现⽂件和测试⽂件包含⾃⼰定义的头⽂件时便可以获得⼀些相关的信息。
所以头⽂件⾥应该包括⼀个结构体,这个结构体⾥应包含姓名,性别,年龄,电话,住址。
同时还可以定义⼀个结构体,这个结构体⾥包含通讯录,同时通讯录⾥⼈员的计数变量,将通讯录的地址传到别的地⽅便可以实现对它遍历或者其他操作。
第⼆个模块便是我们的测试函数,测试函数便可以实现我们的菜单打印,同时由我们接收不同的值便可以实现不同的操作,就是相应的⽅法的实现,这⾥很明显可以通过⼀个switch语句来进⾏控制。
第三个模块便是我们的⽅法实现的函数,将模块2⾥定义的类型为通讯录的地址传到各个⽅法⾥,这样便可以实现对通讯录的操作。
1.linkman.h(头⽂件)#ifndef __LINKMAN_H__#define __LINKMAN_H__#include<stdio.h>#include<windows.h>#include<string.h>#pragma warning (disable:4996)typedef struct LINKMAN//建⽴结构体,存放联系⼈信息{char name[20];char sex[10];int age;int tel[12];char addr[50];}LINKMAN;typedef struct Statis //把通讯录和⼈员统计放在结构体内{LINKMAN num[1000];int count;}Statis;void inint_linkman(Statis *p);//初始化数组void Add_linkman(Statis *p);// 添加联系⼈信息void Dele_linkman(Statis *p);//删除指定联系⼈信息void Find_linkman(Statis *p);//查找指定联系⼈信息void Revise_linkman(Statis *p);//修改指定联系⼈信息void Display_linkman(Statis *p);//显⽰所有联系⼈信息void Empty_linkman(Statis *p);//清空所有联系⼈void sort_linkman(Statis *p);//以名字排序所有联系⼈#endif2.test.c(测试)#include "linkman.h"Statis sta;void menu()//菜单{printf("***********************************\n");printf("********1.添加联系⼈信息***********\n");printf("********2.删除指定联系⼈信息*******\n");printf("********3.查找指定联系⼈信息*******\n");printf("********4.修改指定联系⼈信息*******\n");printf("********5.显⽰所有联系⼈信息*******\n");printf("********6.清空所有联系⼈***********\n");printf("********7.以名字排序所有联系⼈*****\n");printf("**************按0退出程序**********\n");printf("***********************************\n");}void test(){int i = 0;do{menu();printf("请输⼊你要进⾏的选项:");scanf("%d", &i);switch (i){case 1:Add_linkman(&sta);break;case 2:Dele_linkman(&sta);break;case 3:Find_linkman(&sta);break;case 4:Revise_linkman(&sta);break;case 5:Display_linkman(&sta);break;case 6:Empty_linkman(&sta);break;case 7:sort_linkman(&sta);break;case 0:exit(1);break;default:printf("输⼊错误\n");break;}} while (i);}int main(){inint_linkman(&sta);test();system("pause");return 0;}3.game.c(实现)#include "linkman.h"void inint_linkman(Statis *p){int count = sizeof(p->num);p->count = 0;memset(p->num, 0,count);}int Find(Statis *p, char *pname)//对于⼀个联系⼈是否存在封装⼀个函数,在后⾯的修改、删除、查找可以⽤到{int i = 0;for (i = 0; i < (p->count); i++){if (strcmp(p->num[i].name, pname) == 0) return i;}return -1;}void menu1()//修改联系⼈时所⽤到的菜单{printf("*********************\n");printf("****1.姓名*2.性别****\n");printf("****3.年龄*4.电话****\n");printf("****5.地址*6.返回****\n");printf("*********************\n");}void Add_linkman(Statis *p)//添加联系⼈{printf("请输⼊你要添加的联系⼈姓名:\n"); scanf("%s", p->num[p->count].name);printf("请输⼊你要添加的联系⼈性别:\n"); scanf("%s", p->num[p->count].sex);printf("请输⼊你要添加的联系⼈年龄:\n"); scanf("%d", &(p->num[p->count].age)); printf("请输⼊你要添加的联系⼈电话:\n"); scanf("%s", p->num[p->count].tel);printf("请输⼊你要添加的联系⼈地址:\n"); scanf("%s", p->num[p->count].addr);if ((p->count) > 1000){printf("联系⼈上限\n");}else{printf("添加成功\n");p->count++;}}void Dele_linkman(Statis *p)//删除联系⼈{char name[20] = { 0 };int result = 0;int n = 0;int i = 0;printf("请输⼊要删除⼈的姓名:\n");scanf("%s", name);result = Find(p, name);if (result != -1){printf("你是否要删除该联系⼈?\n");printf("删除请按1,不删除请按0\n");scanf("%d", &n);if (n == 1){for (i = 0; i < (p->count)-1; i++){p->num[i] = p->num[i + 1];}p->count --;printf("删除成功\n");}else{printf("删除失败\n");}}else{printf("你要删除的联系⼈不存在\n");}}void Find_linkman(Statis *p)//查找联系⼈{char name[20] = { 0 };int result = 0;printf("请输⼊要查找联系⼈的姓名:\n");scanf("%s", name);result = Find(p, name);if (result != -1){printf("姓名:%s\n", p->num[result].name);printf("性别:%s\n", p->num[result].sex);printf("年龄:%d\n", p->num[result].age);printf("电话:%s\n", p->num[result].tel);printf("地址:%s\n", p->num[result].addr);}else{printf("你要查找的联系⼈不存在\n");}}void Revise_linkman(Statis *p)//修改联系⼈{char name[20] = {0};int result = 0;printf("请输⼊你要修改联系⼈的姓名:\n");scanf("%s", name);result = Find(p, name);if (result != -1){printf("姓名:%s\n", p->num[result].name);printf("性别:%s\n", p->num[result].sex);printf("年龄:%d\n", p->num[result].age);printf("电话:%s\n", p->num[result].tel);printf("地址:%s\n", p->num[result].addr);int i = 0;do{menu1();printf("输⼊你要修改的选项:\n");scanf("%d", &i);switch (i){case 1:printf("请把姓名修改成:");scanf("%s", p->num[result].name);break;case 2:printf("请把性别修改成:");scanf("%s", p->num[result].sex);break;case 3:printf("请把年龄修改成:");scanf("%d", &(p->num[result].age));break;case 4:printf("请把电话修改成:");scanf("%s", p->num[result].tel);break;case 5:printf("请把地址修改成:");scanf("%s", p->num[result].addr);break;case 0:break;default:printf("输⼊错误");break;}} while (i);}else{printf("你要修改的联系⼈不存在\n");}}void Display_linkman(Statis *p)//打印所有联系⼈信息{int i = 0;printf("输出所有⼈的信息:\n");printf("%10s%7s%6s%8s%10s\n","名字","性别","年龄","电话","住址"); for (i = 0; i <(p->count); i++){printf("%11s", p->num[i].name);printf("%5s", p->num[i].sex);printf("%5d", p->num[i].age);printf("%10s", p->num[i].tel);printf("%12s", p->num[i].addr);printf("\n");}}void Empty_linkman(Statis *p)//清空联系⼈{p->count = 0;}void sort_linkman(Statis *p)//以名字排序所有联系⼈(冒泡){int i = 0;int j = 0;for (i = 0; i < p->count - 1; i++)for (j = 0; j < p->count - 1 - i; j++){if (strcmp(p->num[j].name, p->num[j + 1].name)>0){LINKMAN tmp;tmp = p->num[j];p->num[j] = p->num[j + 1];p->num[j + 1] = tmp;}}}程序运⾏结果部分⽰范:到此为⽌,我们的简易通讯录就实现啦。
通讯录的制作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++实现
简单通信录的C++实现这是一个简单的通讯录系统,数据结构内包括学号,姓名,手机号,具备增加、删除、修改、查询的功能。
//2015/3/12 by LDSD#include<iostream>#include<string.h>using namespace std;struct node{char num[15];char name[7];char phone[12];node *next;};void serch(node *head){head=head->next;char con;char data[15];while(1){cout<<"1:按学号查询 2:按姓名查询,请选择指令执行操作。
\n";cin>>con;if(con=='1'){cout<<"请输入学号。
"<<endl;cin>>data;while(head!=NULL){if(strcmp(head->num,data)==0){cout<<head->num<<'\t'<<head->name<<'\t'<<head->phone<<'\n';break;}elsehead=head->next;}if(head==NULL)cout<<"未查询到匹配的记录!"<<endl;break;}else if(con=='2'){cout<<"请输入姓名。
"<<endl;cin>>data;while(head!=NULL){if(strcmp(head->name,data)==0){cout<<head->num<<'\t'<<head->name<<'\t'<<head->phone<<'\n';break;}elsehead=head->next;}if(head==NULL)cout<<"未查询到匹配的记录!"<<endl;break;}elsecout<<"你输入的指令不正确!"<<endl;}}void add(node *head){node *new_stu=new node;cout<<"依次输入学号,姓名,电话号码。
c语言编写通讯录程序源代码
c语言编写通讯录程序源代码以下是一个简单的 C 语言编写的通讯录程序示例,包含了添加、查找、修改和删除联系人的功能:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100// 联系人结构体struct Contact {char name[50];char number[20];};// 通讯录数组struct Contact contacts[MAX_CONTACTS];// 通讯录大小int size = 0;// 添加联系人void addContact() {if (size >= MAX_CONTACTS) {printf("通讯录已满,无法添加更多联系人。
\n");return;}printf("请输入联系人姓名:");scanf("%s", contacts[size].name);printf("请输入联系人号码:");scanf("%s", contacts[size].number);size++;printf("联系人已添加。
\n");}// 查找联系人void findContact() {char name[50];printf("请输入要查找的联系人姓名:");scanf("%s", name);for (int i = 0; i < size; i++) {if (strcmp(contacts[i].name, name) == 0) {printf("姓名:%s\n", contacts[i].name); printf("号码:%s\n", contacts[i].number); return;}}printf("未找到该联系人。
c简便通讯录课程设计
c 简便通讯录课程设计一、课程目标知识目标:1. 让学生理解通讯录的基本概念,掌握电子通讯录的组成和功能。
2. 学会使用简易的编程语言或软件工具,设计并创建个人的电子通讯录。
3. 了解数据存储的基本原理,理解如何在电子设备上保存和读取联系人信息。
技能目标:1. 培养学生运用信息技术解决问题的能力,能独立操作相关软件或编程环境。
2. 提高学生的项目设计与实施能力,通过小组合作完成一个简易通讯录的制作。
3. 培养学生将理论知识与实践相结合的能力,学会在实际生活中应用所学知识。
情感态度价值观目标:1. 培养学生对信息技术的兴趣和热情,激发他们探索新知的精神。
2. 增强学生的团队合作意识,学会在小组合作中沟通、协调与分工。
3. 引导学生认识到信息安全的重要性,培养他们在使用通讯录时保护个人隐私的意识。
本课程针对初中年级学生,结合他们的年龄特点和认知水平,注重培养实际操作能力和团队协作能力。
课程设计以实用性为导向,使学生在掌握基本知识的同时,能够将所学应用于日常生活,提高信息技术素养。
通过明确具体的课程目标,为后续教学设计和评估提供依据,确保教学效果的实现。
二、教学内容1. 通讯录基本概念:介绍通讯录的定义、作用及其在生活中的应用。
- 教材章节:第一章第二节2. 电子通讯录组成与功能:讲解电子通讯录的组成部分,如联系人、电话号码、邮箱等,以及其具备的查询、添加、修改等功能。
- 教材章节:第二章第一节3. 编程语言或软件工具:学习使用简单的编程语言(如Python)或软件工具(如Excel)创建和编辑通讯录。
- 教材章节:第三章4. 数据存储原理:介绍数据存储的基本概念,如何在电子设备上保存和读取联系人信息。
- 教材章节:第四章第一节5. 实践操作:分组进行项目实践,设计并创建一个简易的电子通讯录。
- 教材章节:第五章6. 评估与展示:对学生完成的通讯录项目进行评估,组织成果展示,分享学习经验。
- 教材章节:第六章教学内容按照科学性和系统性进行组织,注重理论与实践相结合。
c编写的简单通讯录系统
/*Eg10-3:通讯录管理系统:该系统通过文本菜单进行操作,功能包括:创建通讯录、显示记录、查询记录、修改记录、添加记录、删除记录和记录排序等,各功能模块均采用独立的函数来表示,通过主函数直接或是间接调用,特别注意的是,通讯录数据采用结构体定义和管理,并可以直接从文件中读入数据或是将数据写入文件中,体会这样做的的优越性。
(1)程序如下:*/#define N 100#define SIZE 30#include <stdio.h>#include <string.h>#include <conio.h>#include<process.h>struct student{char num[SIZE];char name[SIZE];char tel[SIZE];};//函数声明void myprint();// 显示菜单int mycreat(struct student*p,int n); // 输入通讯录void mydisplay(struct student*p,int n); // 显示通讯录void mysearch(struct student*p,int n); // 查找void mymodify(struct student*p,int n); // 修改通讯录int myadd(struct student*p,int n); // 增加通讯录int mydelete(struct student*p,int n); // 删除void mysort(struct student*p,int n); // 排序void sch_num(struct student*p,int n); // 按学号查找void sch_name(struct student*p,int n); // 按姓名查找int loadinfo(struct student*p,int n); // 载入通讯录信息int saveinfo(struct student*p,int n); // 保存通讯录信息void main(){// 文件定义char yes_no ;int choose;//定义choose为整形struct student record[N]; // 存放通讯录信息,共100 条int total=0,flag ; // 通讯录总数total=loadinfo(record,N); // 从文件读取记录信息,不超过100 条do{myprint();// 显示菜单printf(" 请选择:");scanf("%d",&choose);//输入数据switch(choose){case 1 :total=mycreat(record,total);break ;case 2 :mydisplay(record,total);break ;case 3 :mysearch(record,total);break ;case 4 :mymodify(record,total);break ;case 5 :total=myadd(record,total);break ;case 6 :total=mydelete(record,total);break ;case 7 :mysort(record,total);break ;case 8 :flag=saveinfo(record,total);if(flag==1)printf("\n 保存成功!\n");elseprintf("\n 保存失败!\n");break ;case 0 : exit(0);break ;default :printf("\n %c 为非法选项!\n",choose); }//if(choose==0)break ;printf("\n 要继续选择吗(Y/N)?");do{yes_no=getchar();} while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');}while(yes_no!='N'&&yes_no!='n');}void myprint()// 显示菜单信息{printf(" \n");printf(" 请输入选项编号(0--7) \n");printf(" 1---批量输入通讯录\n");printf(" 2---显示通讯录\n");printf(" 3---查询通讯录\n");printf(" 4---修改通讯录\n");printf(" 5---添加通讯录\n");printf(" 6---删除通讯录\n");printf(" 7---排序通讯录\n");printf(" 8---保存通讯录\n");printf(" 0---退出\n");printf(" \n");}int mycreat(struct student*p,int n) // 批量输入学生信息{int i=0 ;int m ;printf("添加前的记录,共有<%d>个:\n",n);printf("\n 记录号学号姓名电话号码\n");i=0 ;while((i<n)&&(strcmp(p->num,"")!=0)){printf("%d: %15s%15s%15s\n",i+1,p->num,p->name,p->tel);i++;p++;}printf("\n 请输入要输入的学生人数(< %d): ",N-n);scanf("%d",&m);i=0 ;while(i<m){printf("\n");printf("请输入第%d 个记录:\n",i+1);printf("学号:");do{gets(p->num);}while(strcmp(p->num,"")==0);printf("姓名:");gets(p->name);printf("电话号码:");gets(p->tel);p++;i++;}return m+n ;}void mydisplay(struct student*p,int n) // 显示学生信息{//clrscr();int i=0 ;printf("\n 记录号学号姓名电话号码\n");while(i<n){printf("%d: %15s%15s%15s\n",i+1,p->num,p->name,p->tel);p++;i++;}}void mymodify(struct student*p,int n) // 修改学生信息{ char c;int i ;char nam[10];mydisplay(p,n);printf("\n 请输入要修改记录的姓名:");c=getchar();gets(nam);for(i=0;i<n;i++,p++)if(strcmp(nam,p->name)==0)break ;if(i==n)printf("无此人!\n");else{printf("请输入正确的学号:");do{gets(p->num);}while(strcmp(p->num,"")==0);printf("请输入正确的姓名:");gets(p->name);printf("请输入正确的电话号码:");gets(p->tel);}}void mysearch(struct student*p,int n) // 查找指定学生{char c ;mydisplay(p,n);printf("\n 按学号查询(h),还是按姓名查询(m)?");c=getchar();c=getchar();if(c=='h'||c=='H')sch_num(p,n);else if(c=='m'||c=='M')sch_name(p,n);elseprintf("\n 非法字符!\n");}void sch_num(struct student*p,int n) // 按学号查询{char c ;int i,flag=0 ;char nm[10];printf("\n 请输入要查询记录的学号:");c=getchar();gets(nm);for(i=0;i<n;i++)if(strcmp(nm,p[i].num)==0){printf("\n 学号姓名电话号码\n");printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);flag=1 ;}if(flag==0)printf("无此人!\n");}void sch_name(struct student*p,int n) // 按姓名查询{char c ;int i,flag=0 ;char nam[10];printf("\n 请输入要查询记录的姓名:");c=getchar();gets(nam);for(i=0;i<n;i++)if(strcmp(nam,p[i].name)==0){printf("\n 学号姓名电话号码\n");printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);flag=1 ;}if(flag==0)printf("无此人!\n");}int myadd(struct student*p,int n) //增加学生信息{int i=0 ;char c ;struct student t,*q ;printf("添加前的记录:\n");printf("\n 学号姓名电话号码\n"); i=0 ;q=p ;// 显示原有记录信息while(i<n){printf("%15s%15s%15s\n",q->num,q->name,q->tel);i++;q++;}do{printf("请输入新记录的学号:\n");do{gets(t.num);} while(strcmp(t.num,"")==0); // 学号不能为空printf("请输入新记录的姓名:");gets();printf("请输入新记录的电话号码:");gets(t.tel);for(i=0;i<n;i++)if(strcmp(t.num,(p+i)->num)==0||strcmp(t.tel,(p+i)->tel)==0){printf("学号或电话号码重,要重新输入吗(Y/N)?");c=getchar();putchar('\n');break ;}// 找到最后,没有重复if(i==n){*(p+i)=t ;printf("添加后的记录:\n");printf("\n 学号姓名电话号码\n");for(i=0;i<n+1;i++)printf("%15s%15s%15s\n",(p+i)->num,(p+i)->name,p[i].tel);break ;}}while(c=='y'||c=='Y');return n+1 ;}int mydelete(struct student*p,int n) // 删除学生信息{int i,x ;char c,nm[10],nam[10];printf("删除前的记录:\n");printf(" \n 学号姓名电话号码\n");for(i=0;i<n;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);printf("按学号删除(h),还是按姓名删除(m)?");c=getchar();c=getchar();if(c=='h'||c=='H'){printf("\n 请输入要删除记录的学号:");c=getchar();gets(nm);for(x=0;x<n;x++)if(strcmp(nm,p[x].num)==0)//说明提前结束循环,找到人if(x<n){for(i=x;i<n-1;i++){p[i]=p[i+ 1];}printf("删除后的记录:\n");printf(" 学号姓名电话号码\n");for(i=0;i<n-1;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}elseprintf("无此人\n");}elseif(c=='m'||c=='M'){printf("\n 请输入要删除记录的姓名:");c=getchar();for(x=0;x<n;x++)if(strcmp(nam,p[x].name)==0)break ;if(x<n){for(i=x;i<N-1;i++){p[i]=p[i+1];}printf("删除后的记录:\n");printf(" 学号姓名电话号码\n");for(i=0;i<n-1;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}elseprintf("无此人\n");}elseprintf("\n 非法字符\n");return n-1 ;}void mysort(struct student*p,int n) // 排序函数{char c;int j,i,k ;char c1,c2 ;struct student temp ;printf("\n 排序前的记录:\n");printf("\n 学号姓名电话号码\n");for(i=0;i<n;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);printf("\n 按学号排序(h),还是按姓名排序(m)?");c=getchar();c1=getchar();if(c1=='h'||c1=='H'){printf("\n 按升序排序(s),还是按降序排序(j )?");c=getchar();c2=getchar();// 升序if(c2=='s'||c2=='S'){for(i=0;i<n-1;i++){k=i ;for(j=i;j<n;j++)if(strcmp(p[k].num,p[j].num)<0)k=j ;temp=p[k];p[k]=p[i];p[i]=temp ;}printf("\n 排序后的记录:\n");printf("\n 学号姓名电话号码\n");for(i=0;i<n;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}else if(c2=='j'||c2=='J') //* 降序{for(i=0;i<n-1;i++){k=i ;for(j=0;j<n;j++)if(strcmp(p[k].num,p[j].num)<0)k=j ;temp=p[k];p[k]=p[i];p[i]=temp ;}printf("排序后的记录:\n");printf("\n 学号姓名电话号码\n");for(i=0;i<n;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}else printf("\n 非法字符\n");}else if(c1=='m'||c1=='M') // 按姓名排序{printf("\n 按升序排序(s),还是按降序排序(j )? ");c=getchar();c2=getchar();if(c2=='s'||c2=='S'){for(i=0;i<n-1;i++){k=i ;for(j=0;j<n;j++)if(strcmp(p[k].name,p[j].name)<0)k=j ;temp=p[k];p[k]=p[i];p[i]=temp ;}printf("排序后的记录:\n");printf("\n 学号姓名电话号码\n");for(i=0;i<n;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}else if(c2=='j'||c2=='J') // 降序{for(i=0;i<n-1;i++){for(j=i;j<n;j++)if(strcmp(p[k].name,p[j].name)<0)k=j ;temp=p[k];p[k]=p[i];p[i]=temp ;}printf("排序后的记录:\n");printf("\n 学号姓名电话号码\n");for(i=0;i<n;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}else printf("\n 非法字符!\n");}else printf("\n 非法字符!\n");}int loadinfo(struct student*p,int n) // 载入通讯录信息{int i,all=0 ;char filename[30]="txl.dat" ;fp=fopen(filename,"r");if(fp==NULL){// printf("\n***不能打开文件%s,或%s 文件不存在!***",filename,filename);return 0 ;}fscanf(fp,"%d\n",&all);if(all>N) // 读取记录总数{printf("文件记录数太多,不能读取");return 0;}for(i=0;i<all;i++)// 读取记录信息{fscanf(fp,"%s %s %s\n",p[i].num,p[i].name,p[i].tel);}fclose(fp); // 关闭文件}int saveinfo(struct student*p,int n){FILE*fp ;int i,all=0 ;char filename[30]="txl.dat" ; //文件可以用记事本打开fp=fopen(filename,"w");if(fp==NULL){printf("\n***不能建立或打开文件%s!***",filename);return 0 ;}fprintf(fp,"%d\n",n);for(i=0;i<n;i++)fprintf(fp,"%s %s %s\n",p[i].num,p[i].name,p[i].tel);fclose(fp);return 1 ;}。
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课程设计简单通讯录
C 课程设计简单通讯录一、教学目标本课程旨在让学生掌握简单通讯录的设计与实现。
通过本课程的学习,学生将能够理解通讯录的基本结构,学会使用C语言进行程序设计,实现通讯录的增删改查功能。
1.了解通讯录的基本结构及其在现实生活中的应用。
2.掌握C语言的基本语法和编程技巧。
3.理解程序设计的基本思想,学会模块化编程。
4.能够使用C语言编写简单的程序,实现通讯录的增删改查功能。
5.具备基本的程序调试和优化能力。
情感态度价值观目标:1.培养学生的团队协作精神,学会与他人分享和交流编程经验。
2.激发学生对计算机科学的兴趣,培养学生的创新意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.通讯录的基本结构及其在现实生活中的应用。
2.C语言的基本语法和编程技巧。
3.程序设计的基本思想和模块化编程。
4.通讯录的增删改查功能的实现。
5.课程引入:介绍通讯录的基本结构及其在现实生活中的应用。
6.C语言基础:学习C语言的基本语法,掌握基本数据类型、运算符、控制语句等。
7.程序设计基本思想:学习程序设计的基本思想,了解函数、模块化编程。
8.通讯录实现:学习如何使用C语言实现通讯录的增删改查功能。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于传授C语言的基本语法和程序设计的基本思想。
2.案例分析法:通过分析实际案例,让学生学会如何设计简单的通讯录程序。
3.实验法:让学生动手实践,实际编写代码,实现通讯录的增删改查功能。
四、教学资源本课程所需教学资源包括:1.教材:《C程序设计》。
2.参考书:《C语言编程实例教程》。
3.多媒体资料:教学PPT、视频教程。
4.实验设备:计算机、编程环境。
教学资源将用于支持教学内容的学习,帮助学生更好地掌握C语言编程技巧,提高实际编程能力。
五、教学评估本课程的教学评估采用多元化的评价方式,以全面、客观、公正地评价学生的学习成果。
评估方式包括:1.平时表现:观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和实际操作能力。
c简单通讯录课程设计
c 简单通讯录课程设计一、课程目标知识目标:1. 让学生掌握通讯录的基本概念和功能,理解其在日常生活和学习中的应用。
2. 学会使用编程语言(如Python)编写简单的通讯录管理系统,包括增加、删除、查找和修改联系人信息。
3. 了解数据存储和文件操作的基本方法,并能够将通讯录数据保存在本地文件中。
技能目标:1. 培养学生运用编程思维解决问题的能力,学会分析需求、设计程序结构和编写代码。
2. 提高学生的动手实践能力,通过编写通讯录程序,熟练使用编程环境,掌握基本调试技巧。
3. 培养学生团队协作和沟通能力,能够在小组合作中共同完成任务,相互学习和分享经验。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养主动探索、积极进取的学习态度。
2. 培养学生的创新意识,鼓励他们在编写通讯录程序时提出独特的想法和改进措施。
3. 增强学生的信息安全意识,让他们认识到保护个人隐私的重要性,遵循道德规范,合理使用通讯录信息。
本课程针对的是初中年级学生,他们在学习编程方面具有一定的逻辑思维能力和基础知识。
课程性质为实践性较强的信息技术课程,要求学生在学习过程中动手实践,将理论知识与实际应用相结合。
通过本课程的学习,期望学生能够达到上述课程目标,为今后的信息技术学习奠定基础。
二、教学内容1. 通讯录基本概念:介绍通讯录的定义、作用和常见功能,如添加、删除、查找和修改联系人信息。
2. 编程语言基础:回顾Python编程语言的基本语法,如变量、数据类型、条件语句和循环语句。
3. 通讯录管理系统设计:- 需求分析:引导学生分析通讯录的功能需求,明确系统所需实现的基本功能。
- 程序结构设计:介绍如何使用面向对象编程思想设计通讯录管理系统,包括类的定义、属性和方法的创建。
4. 数据存储与文件操作:- 介绍本地文件存储的基本方法,如文本文件和CSV文件的读写操作。
- 指导学生将通讯录数据保存到本地文件中,实现数据的持久化存储。
C语言实现简易通讯录实例
C 语⾔实现简易通讯录实例⽬录⼀、问题描述⼆、功能介绍⼆、实现流程1.创建通讯录2.创建源⽂件test.c3.创建源⽂件contact.c4.删除通讯录联系⼈信息 (DelContact 函数实现)5.查找通讯录联系⼈信息( SearchContact 函数实现)6.修改联系⼈信息(ModifyContact 函数实现)总结:⼀、问题描述⽤C 语⾔来写⼀个简易的通讯录⼆、功能介绍通讯录1.通讯录中能够存放1000个⼈的信息每个⼈的信息:名字,年龄,性别,电话,地址2.增加⼈的信息3.删除⼈的信息4.修改指定⼈的信息5.查找指定⼈的信息6.排序⼆、实现流程1.创建通讯录1.创建头⽂件contact.h头⽂件contact.h ⽤来实现类型的定义和函数的声明。
2.定义结构体类型(struct peoInfo )⼀个⼈的信息包含名字,年龄,性别,电话,地址,所以我们要定义⼀个结构体类型才能完整的表述。
写⼀个结构体类型struct peoInfo 存放⼀个⼈的信息代码如下:12345678/类型的定义typedef struct peoInfo{char name[MAX_NAME];//名字char sex[MAX_SEX];//性别int age;//年龄char tele[MAX_TELE];//电话char addr[MAX_ADDR];//地址}peoInfo;typedef (类型重命名),struct peoInfo 重命名为peoInfo 。
3.定义通讯录结构体类型(struct contact)因为要存放1000个这样的⼈的信息,所以我们创建⼀个结构体类型的数组data 。
再创建⼀个变量sz 来表⽰这个数组的下标,data 数组中存第⼀个⼈信息的时候,我们放在下标为sz 的位置,这个时候让我们的sz 等于0,存第⼆个⼈的信息的时候,让我们的sz 等于1,这样后续就⽅便我们通过下标的⽅式找到存⼊的每⼀个⼈的信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单通信录的C++实现
这是一个简单的通讯录系统,数据结构内包括学号,姓名,手机号,具备增加、删除、修改、查询的功能。
//2015/3/12 by LDSD
#include<iostream>
#include<string.h>
using namespace std;
struct node
{
char num[15];
char name[7];
char phone[12];
node *next;
};
void serch(node *head)
{
head=head->next;
char con;
char data[15];
while(1)
{
cout<<"1:按学号查询 2:按姓名查询,请选择指令执行操作。
\n";
cin>>con;
if(con=='1')
{
cout<<"请输入学号。
"<<endl;
cin>>data;
while(head!=NULL)
{
if(strcmp(head->num,data)==0)
{
cout<<head->num<<'\t'<<head-
>name<<'\t'<<head->phone<<'\n';break;
}
else
head=head->next;
}
if(head==NULL)
cout<<"未查询到匹配的记录!"<<endl;
break;
}
else if(con=='2')
{
cout<<"请输入姓名。
"<<endl;
cin>>data;
while(head!=NULL)
{
if(strcmp(head->name,data)==0)
{
cout<<head->num<<'\t'<<head-
>name<<'\t'<<head->phone<<'\n';break;
}
else
head=head->next;
}
if(head==NULL)
cout<<"未查询到匹配的记录!"<<endl;
break;
}
else
cout<<"你输入的指令不正确!"<<endl;
}
}
void add(node *head)
{
node *new_stu=new node;
cout<<"依次输入学号,姓名,电话号码。
\n";
cin>>new_stu->num>>new_stu->name>>new_stu->phone;
new_stu->next=head->next;
head->next=new_stu;
}
void modify(node *head)
{
char num[15];
char name[7];
char phone[12];
node *head1=head->next;
int i=1;
node *new_stu=new node;
cout<<"通讯录内容如下,请依次输入编号,学号,姓名,电话号码,以便对信息更新。
\n";
while(head1!=NULL)
{
cout<<i++<<'\t'<<head1->num<<'\t'<<head1-
>name<<'\t'<<head1->phone<<'\n';
head1=head1->next;
}
cin>>i>>num>>name>>phone;
while(i--&&head!=NULL)
head=head->next;
if(head==NULL)
cout<<"你的编号不正确!"<<endl;
else
{
strcpy(head->num,num);
strcpy(head->name,name);
strcpy(head->phone,phone);
}
}
void del(node *head)
{
node *head1=head->next;
int i=1;
cout<<"通讯录内容如下,请输入要删除的编号。
\n";
while(head1!=NULL)
{
cout<<i++<<'\t'<<head1->num<<'\t'<<head1-
>name<<'\t'<<head1->phone<<'\n';
head1=head1->next;
}
cin>>i;
i--;
while(i--&&head->next!=NULL)
head=head->next;
if(head->next==NULL)
cout<<"你的编号不正确!"<<endl;
else
{
head->next=head->next->next;
}
}
void main()
{
char con;
node *head=new node;
head->next=NULL;
while(1)
{
cout<<"1:查询 2:添加 3:修改 4:删除,请选择指令执行操作。
\n";
cin>>con;
if(con=='1')
serch(head);
else if(con=='2')
add(head);
else if(con=='3')
modify(head);
else if(con=='4')
del(head);
else
cout<<"你输入的指令不正确!"<<endl; }
}。