用C语言编写通讯录

合集下载

C语言实现简单通讯录功能

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语言编写的通讯录代码、

c语言编写的通讯录代码、

#include<stdio.h>#include<string.h>struct friends_list{char name[10];int age;char telephone[13];};int Count=0;void new_friend(struct friends_list friends[]);void search_friend(struct friends_list friends[],char*name);void Modify_friend(struct friends_list friends[],char*name);void Delete_friend(struct friends_list friends[],char*name,int n);int main(void){int choice,n;char name[10];struct friends_list friends[50];do{printf("手机通讯录功能选项: 1:新建2:查询3:修改4:删除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 3:printf("请输入您要修改的联系人的姓名:");scanf("%s",name);printf("\n");Modify_friend(friends,name);break;case 4:printf("1:单个删除2:全部删除\n\n");printf("请选择您需要的操作:\n");scanf("%d",&n);if(n==1){printf("输入名字\n");scanf("%s",name);Delete_friend(friends,name,n);break;}if(n==2){Delete_friend(friends,name,n);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",);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(name,friends[i].name)==0){printf("姓名:%s\t",friends[i].name);printf("年龄:%d\t",friends[i].age);printf("电话:%s\n",friends[i].telephone);flag++;}if(flag==0)printf("无此联系人!\n");}/*修改联系人*/void Modify_friend(struct friends_list friends[],char*name){int k,y=0;int t,j=1,g=0;struct friends_list x;if(Count==0){printf("通讯录是空的!\n");return;}/*首先,判断要修改的联系人中有没有相同的名字*/for(k=0;k<Count;k++){if(strcmp(name,friends[k].name)==0)y++;}/*如果,y等于1,说明只有一个需要修改的联系人*/if(y==1){for(k=0;k<Count;k++){if(strcmp(name,friends[k].name)==0){printf("请重新输入姓名\n");scanf("%s",);printf("请重新输入年龄\n");scanf("%d",&x.age);printf("请重新输入电话号码\n");scanf("%s",x.telephone);friends[k]=x;}}}/*如果,y大于1,说明你选择修改的人中,有多个相同名字的联系人*/ if(y>1){/*用序号来显示所有需要修改的联系人*/printf("此通讯录有%d个名字相同的联系人.\n",y);for(k=0;k<Count;k++){if(strcmp(name,friends[k].name)==0){printf("%d:姓名:%-10s",j,friends[k].name);printf("年龄:%-5d",friends[k].age);printf("电话:%13s\n",friends[k].telephone);j++;}}/*选择需要修改的联系人的序号*/printf("请选择所要修改的联系人序号:\n");scanf("%d",&t);for(k=0;k<Count;k++){if(strcmp(name,friends[k].name)==0){g++;if(g==t){/*如果g等于t,说明在序号中找到了需要修改的人*/ printf("请重新输入姓名\n");scanf("%s",);printf("请重新输入年龄\n");scanf("%d",&x.age);printf("请重新输入电话号码\n");scanf("%s",x.telephone);friends[k]=x;}}}}if(y==0)printf("无此联系人\n");}void Delete_friend(struct friends_list friends[],char*name,int n) {int l,h=0,y=0,i,k;int j=1;int a[50],t,g=0;if(Count==0){printf("通讯录是空的!\n");return;}/*如果,n等于1,说明用户选择单个删除*/if(n==1){/*首先,判断在修改的人当中有没有相同名字的*/for(i=0;i<Count;i++){if(strcmp(name,friends[i].name)==0)y++;}/*如果,y等于1,说明你需要修改的人当中只有一个*/if(y==1){for(l=0;l<Count;l++){if(strcmp(name,friends[l].name)==0){do{friends[l]=friends[l+1];l++;}while(l<Count);h++;Count--;printf("删除成功!\n");}}}/*如果,y>1 说明你要修改的人当中有多个相同的名字*/if(y>1){/*用序号来显示所有需要修改的联系人*/printf("有%d个相同的联系人:\n",y);for(l=0;l<Count;l++){if(strcmp(name,friends[l].name)==0){a[l]=l;printf("%d:姓名:%-10s",j,friends[l].name);printf("年龄:%-5d",friends[l].age);printf("电话:%13s\n",friends[l].telephone);j++;h++;}}/*选择需要修改的联系人序号*/printf("请选择所要删除的联系人序号:\n");scanf("%d",&t);for(k=0;k<Count;k++)if(strcmp(name,friends[k].name)==0){g++;if(g==t){/*如果g等于选择的序号t,就开始删除*/do{friends[k]=friends[k+1];k++;}while(k<Count);}if(g==t){/*这里又使用一个g等于t,表面上看是多余的.其实当在选择的序号超出现有的序号时,起到限制作用*/printf("删除成功!\n");Count--;}}}if(h==0)printf("没有此联系人\n");}/*如果n等于2,说明用户选择了全部删除*/if(n==2){Count=0;/*把Count赋0,也就是清空所有联系人*/printf("已全部删除!\n");} }。

C语言编程-通讯录

C语言编程-通讯录

C语言编程-通讯录#include<string.h> /*字符函数和字符串函数*/#include<conio.h> /*字符模式函数(调用getch()函数)*/#include<stdio.h> /*输入输出函数*/ int i;struct friend /*电子通讯录结构定义*/{char num[5]; /*编号*/char name[11]; /*名字*/char sex[2]; /*性别*/char phone[12]; /*电话*/char address[26]; /*地址*/char post_num[11]; /*邮编*/}friends[50];FILE *fp;void Data_load() /*数据载入函数*/{ int j;fp=fopen("friend.txt","r+"); /*打开文件friend.txt*/if(fp==NULL) /*判断是否存在friend.txt,如果不存在则创建*/ { fp=fopen("friend.txt","w");i=0;}else{ for(i=0;i<50;i++){ j=fgetc(fp);if(j==EOF)/*判断是否到了文件尾*/return;fseek(fp,i*sizeof(struct friend),0);fread(&friends[i],sizeof(struct friend),1,fp); /*从文件中读取一条记录*/}}}void Menu_Select() /*显示菜单界面*/{printf(" \n");printf(" \n");printf(" \n");printf(" Address Book Management System \n");printf(" \n");printf(" ======================\n"); printf(" 1.Address book data Entry\n"); /*数据输入*/printf(" 2.Address Book data Show\n"); /*数据显示*/printf(" 3.Address Book data Search\n"); /*数据查找*/printf(" 4.Address Book data Alter\n"); /*数据修改*/printf(" 5.Address Book data Insert\n"); /*数据插入*/printf(" 6.Address Book data Delete\n");/*数据删除*/printf(" 7.Address Book data Save\n"); /*数据保存*/printf(" 0.Exit\n"); /*退出*/printf(" ======================\n"); printf( " Please chioce 0-7 \n\n");}int Data_check(int k,char ID[5]) /*检查通讯录中是否存在相同ID或ID输入格式错误*/{int j;if(ID[0]=='0')k=1;for(j=0;ID[j]!='\0';j++){if(ID[j]>'9'||ID[j]<'0')k++;}for(j=0;j<i+1;j++){if(strcmp(ID,friends[j].num)==0)k++;}return k;}void Data_Input() /*数据输入函数*/{char yes_no='1';char ID[5];int k=0;if(i>=50)printf("\n\n Storage full!\n\n");if(i<50){printf("***************************************** *******************************\n");printf(" ******************* Add Address Book Information ***********************\n");printf("***************************************** *******************************\n");printf("***************************************** *******************************\n");}for(;i<50;i++){do{switch(yes_no){case '1': /*如果输入为'1',则进行数据输入*/printf(" ****** No.(4) Name(10) Sex(M/F) Phone(11) Address(25) Zip_Code(10)*******\n");scanf("%s%s%s%s%s%s",ID,friends[i].name,f riends[i].sex,friends[i].phone,friends[i].address,f riends[i].post_num);Data_check(k,ID);while(Data_check(k,ID)>0) /*检查输入的ID是否已存在,如果存在重新输入*/{printf("The No. already exists Or The No. isn't correct, please re-enter\n");scanf("%s",ID);Data_check(k,ID);}strcpy(friends[i].num,ID);if(i<49){printf("\n\n Whether to be continue? Y(1)/N(0) \n\n");yes_no=getch();}if(i>=49)printf("\n\nStorage full!\n\n");break;case '0':break;default:yes_no=getch();}}while(yes_no!='1'&&yes_no!='0'); /*如果输入的不是'1'或'0'则重新输入*/if(yes_no=='0')/*如果输入'0'则退出输入函数*/{i++;break;}}}int The_Size(char a[],char b[]) /*比较两个ID的大小*/{int j,t;if((j=strlen(a)-strlen(b))>0) t=1;if((j=strlen(a)-strlen(b))<0) t=-1;if((j=strlen(a)-strlen(b))==0){if(strcmp(a,b)>0) t=1;if(strcmp(a,b)<0) t=-1;if(strcmp(a,b)==0) t=0;}return t;}void Data_Show() /*数据输出函数*/{ int j,k;char m;struct friend t;printf("***************************************** ***************************\n");printf(" No. Name Sex Phone Address Zip_Code \n");printf("***************************************** ***************************\n");for(j=0;j<i-1;j++)/*对数据进行排序*/{ for(k=0;k<i-1-j;k++){if(The_Size(friends[k].num,friends[k+1].num)= =1){t=friends[k];friends[k]=friends[k+1];friends[k+1]=t;}}}for(j=0;j<i;j++)/*数据输出*/{printf("%4s %10s %4s %11s %20s %10s\n",fri ends[j].num,friends[j].name,friends[j].sex,friend s[j].phone,friends[j].address,friends[j].post_num );m=getch();if(m==' ')break;}printf("\n\n There are %d data in the book .\n\n",i);}void Data_Search() /*数据查找函数*/{char k;int j,a,b;char ID[5];char NAME[11];printf("Search by No. : 1\n");printf("Search by name : 2\n");k=getch();switch(k){case '1': /*按ID查找*/a=0;printf("\n\n Please enter the No.\n\n");scanf("%s",ID);for(j=0;j<i+1;j++){if(strcmp(ID,friends[j].num)==0){a++;printf(" No. Name Sex Phone Address Zip_Code \n");printf("%4s %10s %4s %11s %20s %10s\n",fri ends[j].num,friends[j].name,friends[j].sex,friend s[j].phone,friends[j].address,friends[j].post_num );}}if(a==0)printf(" Do not have to find the No.!\n\n");break;case '2': /*按姓名查找*/b=0;printf("\n\n Please enter the Name\n\n");scanf("%s",NAME);for(j=0;j<i+1;j++){if(strcmp(NAME,friends[j].name)==0){b++;printf(" No. Name Sex Phone Address Zip_Code \n");printf("%4s %10s %4s %11s %20s %10s\n",fri ends[j].num,friends[j].name,friends[j].sex,friend s[j].phone,friends[j].address,friends[j].post_num );}}if(b==0)printf(" Do not have to find the Name!\n\n");break;default:printf("\n\n Error!\n");break;}}void Data_Insert() /*数据插入函数*/{ if(i>=50)printf("\n\n Storage full!\n\n");if(i<50){char ID[5];int k=0;printf("Please enter the No. that you want to insert.\n");scanf("%s",ID);Data_check(k,ID);printf("%d",Data_check(k,ID)); /*检查所需插入的ID是否已存在,如果存在重新输入*/while(Data_check(k,ID)>0){printf("The No. already exists Or The No. isn't correct, please re-enter\n");scanf("%s",ID);Data_check(k,ID);}strcpy(friends[i].num,ID);/*插入数据*/printf(" ****** Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*******\n");scanf("%s%s%s%s%s",friends[i].name,friends [i].sex,friends[i].phone,friends[i].address,friends [i].post_num);i++;}}void Data_Delete() /*数据删除函数*/{int k,t=0;char ID[5];printf("\n\n Please enter the No. need to be deleted\n\n");scanf("%s",ID);for(k=0;k<i;k++){if(strcmp(friends[k].num,ID)==0){t++;break;}}if(t==0)printf("\n\n The No. does not Exist!\n\n");if(t>0){for(;k<i;k++)/*删除位置前的元素顺序前移*/{friends[k]=friends[k+1];}printf("\n\n Delete success!\n\n");i=i-1;}}void Data_Alter() /*修改函数*/{int k,t=0;char ID[5];printf("\n\n Please enter the No. to be Amended\n\n");scanf("%s",ID);for(k=0;k<i;k++){if(strcmp(friends[k].num,ID)==0){t++;break;}}if(t==0)printf("\n\n The No. does not Exist!\n\n");if(t>0){strcpy(friends[k].num,ID);printf(" ****** Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*******\n");scanf("%s%s%s%s%s",friends[k].name,friend s[k].sex,friends[k].phone,friends[k].address,frie nds[k].post_num);printf("\n\n Alter Success!\n\n");}}void Data_Save() /*数据保存函数*/{int j;fp=fopen("friend.txt","w");for(j=0;j<=i-1;j++){fwrite(&friends[j],sizeof(struct friend),1,fp);}printf("\n\n Save Success!\n\n");}void Exit() /*退出函数*/{char flag;printf(" Save or Not? (Y/N)\n"); /*判断是否保存*/do{flag=getch();switch(flag){case 'Y': /*保存*/Data_Save();break;case 'y': /*保存*/Data_Save();break;case 'N':break;case 'n':break;}}while(flag!='Y'&&flag!='y'&&flag!=' N'&&flag!='n');}void main(){ char choose,yes_no;Data_load();do{Menu_Select();choose=getch();switch(choose){case '1': Data_Input(); break; /*输入*/case '2': Data_Show(); break; /*显示*/case '3': Data_Search(); break; /*查找*/case '4': Data_Alter(); break; /*修改*/case '5': Data_Insert(); break; /*插入*/case '6': Data_Delete(); break; /*删除*/case '7': Data_Save(); break; /*保存*/case '0': Exit(); break; /*退出*/default : printf(" Error!\n");}if(choose=='0')break;printf(" Would you like to be continue? (Y/N)\n");do{yes_no=getch();}while(yes_no!='Y'&&yes_no!='y'&&yes _no!='N'&&yes_no!='n');if(yes_no=='N'||yes_no=='n'){Exit();break;}}while(yes_no!='Y'||yes_no!='y');。

C语言程序通讯录完美版

C语言程序通讯录完美版
if(strcmp(t->xm,mt)!=0)
{
printf("您输入的人名不存在!\001\n");
xuanxiang();
}
else xuanxiang();
}
void main()
{
printf("欢迎使用通讯录\n");
counter1=yuanyour();
xuanxiang();
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct txl
{
char xm[11];
char dz[11];
char yb[11];
char dh[11];
}A;
FILE *fp;
int rs;
int counter1=0;
else printf("请输入:");
for(i=0;;i++)
{
scanf("%s",&a[i].xm);
scanf("%s",&a[i].dz);
scanf("%s",&a[i].yb);
scanf("%s",&a[i].dh);
if(strcmp(a[i].xm,"0")==0)break;
if((fp=fopen("f:\\tongxunlu.dat","ab+"))==NULL)
{
printf("can not open this file\n");

通讯录的制作c语言

通讯录的制作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语言学生通讯录设计示例:#include <stdio.h>#include <string.h>struct student {char name[20];int age;char gender;char phone[15];};int main() {struct student students[100];int n, i;printf("请输入学生人数:");scanf("%d", &n);for (i = 0; i < n; i++) {printf("请输入第%d个学生的姓名、年龄、性别和电话号码:", i+1);scanf("%s %d %c %s", students[i].name, &students[i].age, &students[i].gender, students[i].phone);}printf("\n学生通讯录\n");printf("姓名\t年龄\t性别\t电话号码\n");for (i = 0; i < n; i++) {printf("%s\t%d\t%c\t%s\n", students[i].name, students[i].age, students[i].gender, students[i].phone);}return 0;}该程序定义了一个名为`student`的结构体,用于存储学生的姓名、年龄、性别和电话号码。

在主函数中,首先通过`scanf`函数从用户输入中读取学生人数`n`,然后使用一个循环来依次读取每个学生的信息,并将它们存储到`students`数组中。

最后,使用另一个循环将所有学生的信息打印出来。

该程序可以根据需要添加其他功能,例如根据姓名或电话号码查询学生信息、添加或删除学生信息等。

通讯录(C语言版)(请下载观看,无乱码)

通讯录(C语言版)(请下载观看,无乱码)

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>typedef struct personnode {char name[8];char tel[16];char add[30];}personnode;FILE *fp; //定义文件型指针变量/*以下创建通讯录,若通讯录不存在,刚提示创建,若存在则不创建*/void creat(){personnode *person;person=(personnode *)malloc(sizeof(personnode));if((fp=fopen("通讯录.dat","r"))==NULL){ //r 只读(打开)printf("通讯录不存在!\n");fp=fopen("通讯录.dat","w"); //w 只写(建立)fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","地址");printf("\n建立通讯录成功!\n");}elseprintf("通讯录已存在,不用建立!\n");fclose(fp);} //creat()void output(){personnode *person;person=(personnode *)malloc(sizeof(personnode));if((fp=fopen("通讯录.dat","r"))==NULL){printf("\n不能打开通讯录!\n");exit(0);}printf("\n**************************************\n");printf("%24s\n","通讯录");while(!feof(fp)){ //如果没到文件末尾,则不停循环输出fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add);printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add);}fclose(fp);printf("\n**************************************\n");} //output()/*以下为添加模块*/void append(){personnode *person;person=(personnode *)malloc(sizeof(personnode));if((fp=fopen("通讯录.dat","a"))==NULL){ //a 追加printf("\n不能打开通讯录!\n");exit(0);}printf("\n请输入添加的姓名、电话号码及地址\n");scanf("%s%s%s",person->name,person->tel,person->add);fprintf(fp,"%-10s%-20s%-50s\n",person->name,person->tel,person->add);fclose(fp);printf("\n添加成功!\n");} //append()/*以下为查找模块*/void search(){int k=0,h;char namekey[8],telkey[16];personnode *person;person=(personnode *)malloc(sizeof(personnode));printf("\n*********************************\n");printf("* \t1 -- 按号码查找 \t*\n");printf("* \t2 -- 按姓名查找 \t*\n");printf("*********************************\n");printf("\n请选择操作 (1 ~ 2) :");scanf("%d",&h);fp=fopen("通讯录.dat","r");if(h==1){printf("\n请输入你查找的号码!\n");scanf("%s",telkey);while(!feof(fp)){fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add);if(!strcmp(telkey,person->tel)){printf("\n\n已查到,记录为:\n");printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add);k=1;} //if}}else if(h==2){printf("\n请输入要查找的姓名:");scanf("%s",namekey);while(!feof(fp)){fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add);if(!strcmp(namekey,person->name)){printf("\n\n已查到,记录为:\n");printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add);k=1;} //if} //while*/if(!k)printf("对不起,没有此人记录!\n");fclose(fp);}} //search()/*以下为修改模块*/void modify(){int k=0;long offset;char namekey[8];personnode *person;person=(personnode *)malloc(sizeof(personnode));printf("\n请输入要修改的姓名:");scanf("%s",namekey);if((fp=fopen("通讯录.dat","r+"))==NULL){ // r+ 读写printf("\n不能打开通讯录!\n");exit(0);}while(!feof(fp)){offset=ftell(fp);fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add);if(!strcmp(namekey,person->name)){k=1;break;}}if(k){printf("\n已查到,记录为:\n");printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add);printf("\n请输入新姓名、电话号码及地址\n");scanf("%s%s%s",person->name,person->tel,person->add);fseek(fp,offset,SEEK_SET); //从该条记录的开始点进行写操作 fprintf(fp,"%-10s%-20s%-50s\n",person->name,person->tel,person->add);printf("\n修改成功!\n");}else printf("\n对不起,没有此人记录!\n");fclose(fp);}/*以下为删除模块*/void delrecord(){int k=0;int sum=1;char m;long offset1;char namekey[8];personnode *person;person=(personnode *)malloc(sizeof(personnode));printf("\n请输入要删除的姓名:");scanf("%s",namekey);if((fp=fopen("通讯录.dat","r+"))==NULL){printf("\n不能打开通讯录!\n");exit(0);}while(!feof(fp)){offset1=ftell(fp); //文件位置指针当前值fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add);sum+=1;if(!strcmp(namekey,person->name)){k=1;break;}} //while()if(k){printf("\n已查到,记录为:\n");printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add);printf("\n确定要删除吗? (Y/N) ");scanf("%s",&m);if(m=='y'||m=='Y'){rewind(fp);fseek(fp,sum*80L,1);fprintf(fp,"%-10s%-20s%-50s\n","","","");printf("\n删除成功!\n");} //if}else printf("\n对不起,没有此人记录!\n");fclose(fp);} //delcord()void main(){int m,flag=1;system("color 2f"); //调用颜色命令,包含在stdlib.h头文件中printf("\n\n******************************************************************** ***********\n\n");printf("\t\t┏━━━━━━━━━━━━━━━━━━━━━┓\n");printf("\t\t┃∩__∩ Random 编写♂┃\n");printf("\t\t┃欢迎使用Random的通讯录┃\n");printf("\t\t┃ QQ:747187822 ┃\n");printf("\t\t┣━━━━━━━━━━┳━━━━━━━━━━┫\n");printf("\t\t┃ 1 -- 添加┃ 2 -- 查找┃\n");printf("\t\t┃┃┃\n");printf("\t\t┃ 3 -- 修改┃ 4 -- 删除┃\n");printf("\t\t┃┃┃\n");printf("\t\t┃ 5 -- 打印┃ 0 -- 退出┃\n");printf("\t\t┗━━━━━━━━━━┻━━━━━━━━━━┛\n");printf("\n********************************************************************** *********\n\n");creat();while(flag){ //用死循环实现printf("\n请选择操作 (0 ~ 5) :");scanf("%d",&m);switch(m){case 1: append();break;case 2: search();break;case 3: modify();break;case 4: delrecord();break;case 5: output();break;case 0: printf("\n\n==========>感谢使用Random的通讯录!<==========\n");exit(0);} //switch()} //while()}/*本程序编写By:Random*/。

通讯录的制作c语言

通讯录的制作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语言程序_附完整代码
通讯录系统 C 语言程序_完整代码
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<memory.h> struct student { char names[20]; int year; int month; int day; int sex; //sex=1 表示男生,2 表示女生 char tel[20]; char department[20]; }s[50]; //一共能够登记 50 个人 int cnt=0; void display(){ printf("| 请输入 0-4 |\n"); printf("| 1.注册(增加)|\n"); printf("| 2.删减用户 |\n"); printf("| 3.修改用户 |\n"); printf("| 4.查询功能 |\n"); printf("| 0.退出系统 |\n"); } void in(){ printf("请输入姓名:"); scanf("%s",&s[cnt].names); printf("\n"); printf("请输入出生年月日,中间用空格隔开:"); scanf("%d %d %d",&s[cnt].year,&s[cnt].month,&s[cnt].day); printf("\n"); printf("请输入性别,1 表示男生,2 表示女生:"); scanf("%d",&s[cnt].sex); printf("\n"); printf("请输入电话:"); scanf("%s",&s[cnt].tel); printf("\n"); printf("请输入职位:"); scanf("%s",&s[cnt].department); printf("\n 注册完毕\n"); cnt++; return ;

c语言通讯录程序(共5篇)

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语言通讯录源代码

case 0:exit(0); default:printf("对不起!您的输入有误!请重新输入: } }
");goto loop1;
void newrecord()//*添加纪录*// { int a; system("cls"); system("color 2a"); loop: printf("\n\n\n\n\t\t 请输入您要添加的联系人的信息: \n"); printf("\n 请输入姓名:\n"); name: scanf("%s",&per[num].name); if(strlen(per[num].name)>15) { printf("对不起!您的输入有误!请重新输入"); goto name; } printf("\n 请输入性别:\n"); sex: scanf("%s",&per[num].sex); if(s不起!您的输入有误!请重新输入"); goto sex; } printf("\n 请输入年龄:"); nianling: scanf("%d",&per[num].nianling); if(per[num].nianling<10||per[num].nianling>110) { printf("对不起!您的输入有误!请重新输入"); goto nianling; } printf("\n 请输入邮编\n"); youbian: scanf("%d",&per[num].youbian); if(per[num].youbian<10000||per[num].youbian>999999) { printf("对不起!您的输入有误!请重新输入"); goto youbian; } printf("\n 请输入地址\n"); addr: scanf("%s",&per[num].addr); if(strlen(per[num].addr)>50||strlen(per[num].addr)<4) {

课程设计 个人通讯录 代码 C语言设计

课程设计  个人通讯录  代码   C语言设计
printf("\t\t * 3.按通讯者的分组查找 *\n");
printf("\t\t * 4.按通讯者的生日查找 *\n");
printf("\t\t * 5.返回主菜单 *\n");
printf("\t\t ♀**************************♀\n");
scanf("%s",p->);
}
printf("请输入手机号码\n");
scanf("%s",p->data.telephone);
while(strlen(p->data.telephone)>=12||strlen(p->data.telephone)<=10)
printf("file write error\n");
fputs("\0",fp);//将回车保存到文件中
}
}
else//添加联系人信息存盘
{
fclose(fp);
if((fp=fopen("information","a+"))==NULL)//将文件以追加方式打开
q=p;
}
}
if(number!=0)
{
q->next=NULL;
Save(head,0);
return(head);
}
return NULL;
}
//通讯者的插入
NODE *Insert()
{
NODE *q,*p;

c语言编写通讯录程序源代码

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语言编写通讯录
}
}
int list()
{
int n;
n=loadfiles();
printf_files(n-1);
printf("\n");
back();
}
int loadfiles()
{
m=1;
getchar();
}
else m=0;
}while(m==1);
switch(n)
{
}
}
if(m==2)
{
printf("---------------------------------------------\n");
printf("-------------Thanks for your using-----------\n");
exit(0);
printf("----------------------------Menu---------------------------\n\n");
puts("1.List\n");
puts("2.Location\n");
puts("3.Addition\n");
printf("name address telephone qq\n");
printf("%s %s %s %s\n\n",per[p].name,per[p].address,per[p].telephone,per[p].qq);
printf("%s %s %s %s\n",per[p].name,per[p].address,per[p].telephone,per[p].qq);

C语言编写的通讯录

C语言编写的通讯录

目录一、训练项目 (2)二、训练目的 (2)三、设计分析 (2)四、设计方案 (2)五、实训详细设计 (2)六、使用说明 (12)七、运行调试 (12)八、训练心得 (17)九、参考文献 (17)一、训练项目通讯录管理系统问题描述:建立一个本班学生通讯录文件,包括学号(xuehao)、姓名(name)、性别(sex)、联系方式(lianxifangshi)、QQ、家庭住址(zhuzhi)、其它(qita)。

要求:编写菜单程序,功能包括:加密设置、输入记录、修改记录、删除记录、按学号或姓名查询或排序记录、显示记录、保存文件。

定义全班学生结构为STU。

每一个学生都是一个结构体,包括学号(xuehao)、姓名(name)、性别(sex)、联系方式(lianxifangshi)、家庭住址(zhuzhi)、其它(qita),均为字符型数组,长度分别为10,10, 4, 11, 30, 10, 10。

二、训练目的通过本次训练,能够进一步巩固、掌握程序设计基础和数据结构课程的基本知识、基本技能。

运用算法分析与程序设计的一般方法进行实际项目的开发。

本项目需要具备熟练的数组和线性表知识,具备程序编写、调试的基本能力,具有一定的文字表达和报告撰写能力,具备办公软件使用能力。

三、设计分析通过密码设置进入文件,通过在主函数里调用各个小的子函数,进行学生信息输入,查询,修改,删除,显示与保存文件操作,基本完成平时简单的小小通讯录的作用。

四、设计方案(1)主函数:可让用户选择用系统的哪个功能,从而去连接到相应的子函数;(2)密码设置:让用户通过输入密码来进入系统服务;(3)写入数据:让用户输入通讯录里的内容;(4)修改数据:让用户在通讯录修改原有数据;(5)查找数据:通过用户输入需要找的名字或学号来找到相关资料;(6)显示数据:将已有数据进行显示输出;(7)删除数据:通过输入学号或姓名选择删除想要删除的资料;(8)保存数据:使通讯录里的数据得以保存。

c语言通讯录设计与实现

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.创建源⽂件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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<stdio.h>#include<string.h>typedef struct Friends{char sName[30];int tel;int sMovtel;int home;char Emaile[30];char assort[30];}Friends;int c;void jianli ();void search ();void amend ();void change ();void input (Friends *p);void output (Friends *p);void sdele ();void fugai ();int main(){int a,b=1;char s;while(b==1){printf("\t\t通讯录\n");printf("\t1、新建\n");printf("\t2、查找\n");printf("\t3、修改\n");printf("\t4、删除\n");printf("请选择.......\n");scanf("%d",&a);switch(a){case 1:jianli ();break;case 2:search ();break;case 3:amend ();break;case 4:sdele();break;}printf("是否返回主菜单('Y'or'N')\n");fflush(stdin);scanf("%c",&s);if(s=='y'|| s=='Y')b=1;elsebreak;}return 0;}/*新建*/void jianli (){int b=1;char d;Friends x;FILE *fp;fp=fopen("e:\\通讯录.txt","ab");while (b==1){input(&x);fwrite(&x,sizeof(x),1,fp);printf("是否继续新建('Y'or'N')?\n");fflush(stdin);scanf("%c",&d);if(d=='y'||d=='Y'){b=1;}elsebreak;}fclose(fp);}/*查找*/void search (){int h , j = 1 , n=0 , num ;char k[20];FILE *fp;Friends y;printf("\t1、按号码查找\n");printf("\t2、按姓名查找\n");printf("请选择...........\n");scanf("%d",&h);if(h==1){printf("\t请输入你查找的号码!\n");while(j==1){scanf("%d",&num);fp=fopen("e:\\通讯录.txt","rb");while(!feof(fp)){fread(&y,sizeof(y),1,fp);if(num==y.sMovtel){output(&y);break;}}if(num!=y.sMovtel){printf("你输入的号码有误\n请重新输入\n");j=1;}fclose(fp);}}if(h==2){printf("\t请输入你查找的姓名!\n");while(j==1){scanf("%s",k);fp=fopen("e:\\通讯录.txt","rb");while(!feof(fp)){fread(&y,sizeof(y),1,fp);if(strcmp(k,y.sName)==0){output(&y);break;}}if(strcmp(k,y.sName)!=0){printf("你输入的姓名有误\n请重新输入\n");j=1;}fclose(fp);}}}/*修改*/void amend (){int h , j = 1 , n=0 , num ;char k[20];FILE *fp;Friends y;printf("\t1、按号码查找你所需要修改的原始资料\n"); printf("\t2、按姓名查找你所需要修改的原始资料\n"); printf("请选择...........\n");scanf("%d",&h);if(h==1){printf("\t请输入查找你的号码!\n");while(j==1){scanf("%d",&num);fp=fopen("e:\\通讯录.txt","rb");while(!feof(fp)){c++;fread(&y,sizeof(y),1,fp);if(num==y.sMovtel){change ();break;}}if(num!=y.sMovtel){printf("你输入的号码有误\n请重新输入\n");j=1;}fclose(fp);}}if(h==2){printf("\t请输入你查找的姓名!\n");while(j==1){c++;scanf("%s",k);fp=fopen("e:\\通讯录.txt","rb");while(!feof(fp)){fread(&y,sizeof(y),1,fp);if(strcmp(k,y.sName)==0){change ();break;}}if(strcmp(k,y.sName)!=0){printf("你输入的姓名有误\n请重新输入\n");j=1;}fclose(fp);}}}/*删除*/void sdele(){int h , j = 1 , n=0 , num ;char k[20];FILE *fp;Friends y;printf("\t1、按号码查找你所需要修改的原始资料\n"); printf("\t2、按姓名查找你所需要修改的原始资料\n"); printf("请选择...........\n");scanf("%d",&h);if(h==1){printf("\t请输入查找你的号码!\n");while(j==1){scanf("%d",&num);fp=fopen("e:\\通讯录.txt","rb");while(!feof(fp)){fread(&y,sizeof(y),1,fp);if(num==y.sMovtel){fugai ();break;}}if(num!=y.sMovtel){printf("你输入的号码有误\n请重新输入\n");j=1;}fclose(fp);}}if(h==2){printf("\t请输入你查找的姓名!\n");while(j==1){scanf("%s",k);fp=fopen("e:\\通讯录.txt","rb");while(!feof(fp)){fread(&y,sizeof(y),1,fp);if(strcmp(k,y.sName)==0){fugai ();break;}}if(strcmp(k,y.sName)!=0){printf("你输入的姓名有误\n请重新输入\n");j=1;}fclose(fp);}}}void change ()/*用于修改*/{int f,j;FILE *fp;Friends z ;j=c*133;printf("你要修改的内容:\n");printf("\t1、姓名\n\t2、手机号\n\t3、固定电话号码\n"); printf("\t4、电子信箱\n\t5、家庭住址、\n\t6、分类\n"); printf("请选择...........\n");scanf("%d",&f);printf("输入你的新信息!\n");switch(f){case 1:fp=fopen("e:\\通讯录.txt","wb");fread(&z,sizeof(z),1,fp);fseek(fp,j,SEEK_SET);scanf("%s",z.sName);fwrite(&z.sName,sizeof(z.sName),1,fp);fclose(fp);output (&z);break;fclose(fp);case 2:fp=fopen("e:\\通讯录.txt","rb");fread(&z,sizeof(z),1,fp);fseek(fp,(j+31),SEEK_SET);scanf("%d",&z.sMovtel);fwrite(&z.sMovtel,sizeof(z.sMovtel),1,fp);fclose(fp);break;case 3:fp=fopen("e:\\通讯录.txt","rb");fread(&z,sizeof(z),1,fp);fseek(fp,(j+35),SEEK_SET);scanf("%d",&z.tel);fwrite(&z.tel,sizeof(z.tel),1,fp);fclose(fp);case 4:fp=fopen("e:\\通讯录.txt","rb");fread(&z,sizeof(z),1,fp);fseek(fp,(j+73),SEEK_SET);scanf("%s",z.Emaile);fwrite(&z.Emaile,sizeof(z.Emaile),1,fp);fclose(fp);break;case 5:fp=fopen("e:\\通讯录.txt","rb");fread(&z,sizeof(z),1,fp);fseek(fp,(j+69),SEEK_SET);scanf("%d",&z.home);fwrite(&z.home,sizeof(z.home),1,fp);fclose(fp);break;case 6:fp=fopen("e:\\通讯录.txt","rb");fread(&z,sizeof(z),1,fp);fseek(fp,(j+103),SEEK_SET);scanf("%d",&z.assort);fwrite(&z.assort,sizeof(z.assort),1,fp);fclose(fp);break;}}void input (Friends *p)/*输入*/{printf("请输入姓名:\n");scanf("%s",p->sName);printf("请输入手机号码:\n");scanf("%d",&p->sMovtel);printf("请输入固定电话号码:\n"); scanf("%d",&p->tel);printf("请输入电子信箱:\n");scanf("%s",p->Emaile);printf("输入家庭住址");scanf("%s",p->home);printf("请分类:\n");scanf("%s",p->assort);}void output (Friends *p)/*输出*/{printf("**********************\n"); printf("%s\n",p->sName);printf("%d\n",p->sMovtel);printf("%d\n",p->tel);printf("%s\n",p->Emaile);printf("%d\n",p->home);printf("%s\n",p->assort);}void fugai ()/*用于删除*/{Friends d;FILE *fp;fp=fopen("e:\\通讯录.txt","rb");fread(&d,sizeof(d),1,fp);}。

相关文档
最新文档