c语言通讯录源代码打印

合集下载

通讯录源代码

通讯录源代码

#include<stdio.h>#include<string.h> //字符串处理//#include<conio.h>#define MY1 printf("\n姓名地址邮政编码电话\t")#define MY2 printf("\n%s %4s %s %s\n",s[i].name,s[i].address,s[i].code,s[i] .tel)#define MAX 20int i;int sum;/*时间结构体类型*/struct s_message{char name[20];char address[50];char code[15];char tel[15];}s[MAX];/*保存通讯录信息*/void save_message(int sum){int i;FILE *fp; //声明fp是指针,用来指向FILE类型的对象//if((fp=fopen("D:\\s.txt","wb"))==NULL){printf("文件有误!\n");return;}for (i=0;i<sum;i++){if(fwrite(&s[i],sizeof(struct s_message),1,fp)!=1) //fwite写一个数据块//printf("writing file is wrong!\n");}fclose(fp);}/*读取通讯录信息*/int read_message(){FILE *fp;int i=0;if((fp=fopen("D:\\s.txt","rb"))==NULL){printf("\n\n***********暂时无任何库存信息,按回车键进入主菜单选择基本信息的录入!***********\n");return 0;}while(feof(fp)==0) /*feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。

通讯录-源程序

通讯录-源程序

#include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<string.h> #define NULL 0#define LEN sizeof(struct student) struct student {char num[20]; char name[10]; char age[5]; char tel[20]; char adress[50]; char email[20]; stru ct student *next;};int n; struct student *creat(void) {char string[]={"结束"}; struct student *head; struct student *p1,*p2; n=0;p1=p2=(struct student *)malloc(LEN); printf("请输入编号\n"); scanf("%s",&p1->num); printf("请输入姓名\n"); scanf("%s",&p1->name); printf("请输入年龄\n"); scanf("%s",&p1->age);printf("请输入电话号码\n"); scanf("%s",&p1->tel);printf("请输入通讯地址\n"); scanf("%s",&p1->adress); printf("请输入电子邮箱\n"); scanf("%s",&p1->email); head=NULL;while(strcmp(p1->num,string)!=0) {n=n+1;if(n==1) head=p1; else p2->next=p1; p2=p1;p1=(struct student *)malloc(LEN); printf("请输入编号\n"); scanf("%s",&p1->num); printf("请输入姓名\n"); scanf("%s",&p1->name);printf("请输入年龄\n");scanf("%s",&p1->age);printf("请输入电话号码\n"); scanf("%s",&p1->tel);printf("请输入通讯地址\n"); scanf("%s",&p1->adress); printf("请输入电子邮箱\n"); scanf("%s",&p1->email); }p2->next=NULL; return(head);}struct student *del( struct student *head, char num[20]) {struct student *p1,*p2; if(head==NULL) {printf("\n list null!\n");return head;} p1=head;while(strcmp(p1->num,num)!=0&&p1->next!=NULL) {p2=p1;p1=p1->next; }if(strcmp(p1->num,num)==0) { if(p1==head) head=p1->next; else p2->next=p1->next;n=n-1;}else printf("%s not been found!\n",num); return (head);}struct student *insert(struct student *head,struct student *stud) {struct student *p0,*p1,*p2;p0=p1=p2=(struct student *)malloc(LEN); p1=head; p0=stud;if(head==NULL){head=p0;p0->next=NULL;} else{while((p0->num>p1->num)&&(p1->next!=NULL)) {p2=p1;p1=p1->next;} if(p0->num<=p1-> num){if(head==p1) head=p0;else p2->next=p0; p0->next=p1; }else {p1->next=p0;p0->next=NULL;} } n=n+1; return(head);}struct student *namesearch(struct student *head) {struct student *p;p=(struct student *)malloc(LEN); char name[10]; p=head;printf("请输入姓名\n");scanf("%s",name);while(p!=NULL&&strcmp(p->name,name)!=0) p=p->next;printf("编号姓名年龄电话号码通讯地址电子邮箱\n");printf("%s %s %s %s %s %s\n",p->num,p->name,p->age,p->tel,p->adress,p->email); return( head); }struct student *numsearch( struct student *head) {struct student *p;p=(struct student *)malloc(LEN); char num[20]; p=head; printf("请输入编号\n"); scanf("%s",num);while(p!=NULL&&strcmp(p->num,num)!=0) p=p->next;printf("编号姓名年龄电话号码通讯地址电子邮箱\n");printf("%s %s %s %s %s %s\n",p->num,p->name,p->age,p->tel,p->adress,p->email); retur n(head); }struct student *messagechange( struct student *head) {struct student *p;p=(struct student *)malloc(LEN); char name[10]; p=head;printf("请输入姓名\n");scanf("%s",name); while(p!=NULL&&strcmp(p->name,name)!=0) p=p->next;printf("请输入编号\n"); scanf("%s",&p->num); printf("请输入姓名\n"); scanf("%s",&p->name); printf("请输入年龄\n"); scanf("%s",&p->age);printf("请输入电话号码\n"); scanf("%s",&p->tel);printf("请输入通讯地址\n"); scanf("%s",&p->adress); printf("请输入电子邮箱\n");scanf("%s",&p->email);return(head); }void print(struct student*head) {struct student *p; p=head;printf("编号姓名年龄电话通讯地址电子邮箱\n"); if(head!=NULL) do{printf("%s %s %s %s %s %s\n",&p->num,&p->name,&p->age,&p->tel,&p->adress,&p->ema il); p=p->next;} while(p!=NULL);}void save(struct student *head) { FILE *fp; int i,n=0;struct student *p;if((fp=fopen("stu_list","wb"))==NULL) {printf("\n\t\t打开文件失败!!!\n");return; }p=head->next;if(p!=NULL){ while (p!=NULL) { p=p->next; n++; }fprintf(fp,"%d",n); fprintf(fp,"\r\n");p=head->next; for(i=0;i<n;i++) {fprintf(fp,"\n\t\t%s,%s,%s,%s,%s,%s",p->num,p->name,p->age,p->tel,p->adress,p->email); fpri ntf(fp,"\t\t\r\n"); p=p->next;}}else printf("Please make sure the data is not NULL!!"); fclose(fp);printf("\n\t\t存盘成功!!!\n");}void quit(void) { exit(0); }void main() {struct student *head,*stud; int flage=1; for(;flage==1;) {int ch;printf("\n\t\t通讯录系统:\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存盘---------------------7\n");printf("\t\t 退出---------------------8\n");printf("\t\t=================================\n");printf("\t\t请输入数字(0~8):");scanf("%d",&ch); switch(ch){case 0:head=creat(); printf("是否继续;1/0\n"); scanf("%d",&flage);break;case 1:print (head);break; case 2:head=numsearch(head); printf("是否继续;1/0\n"); scanf("%d",&flage);break; case 3:head=namesearch(head); printf("是否继续;1/0\n");scanf("%d",&flage);break;case 4:stud=(struct student *) malloc(LEN); head=insert(head,stud); printf("请输入编号\n"); scanf("%s",&stud->num); printf("请输入姓名\n"); scanf("%s",&stud->name); printf("请输入年龄\n"); scanf("%s",&stud->age); printf("请输入电话号码\n"); scanf("%s",&stud->tel); printf("请输入通讯地址\n"); scanf("%s",&stud->adress);printf("请输入电子邮箱\n");scanf("%s",&stud->email); printf("是否继续;1/0\n");scanf("%d",&flage);break;case 5: head=messagechange(head); printf("是否继续;1/0\n"); scanf("%d",&flage);break; case 6:char num[20];printf("请输入编号\n");scanf("%s",num); head=del(head,num); printf("是否继续;1/0\n"); scanf("%d",&flage);break;case 7:save(head);break; case 8:quit();break;default:printf("\n\t\t警告!输入错误,请输入数字0-8!");}}}。

通讯录c语言程序设计代码

通讯录c语言程序设计代码

通讯录c语言程序设计代码#include<stdio.h>。

#include<string.h>。

//通讯录结构体。

typedef struct addressbook。

char name[20];。

long tel;。

char addr[20];。

}Address;。

//把Address结构体强转成Address指针。

typedef Address *Addressbook;。

//查找函数。

Addressbook find (Addressbook book,int count)。

char findName[20];。

int flag=0;。

Addressbook p;。

printf("请输入查找的姓名:");。

scanf("%s",findName);。

for(p=book;p<book+count;p++)。

if(strcmp(findName,p->name)==0)。

flag=1;。

}。

}。

if(flag==0)。

printf("没有找到%s\n",findName);。

return book;。

}。

else。

return p;。

}。

}。

//添加函数。

void add (Addressbook book,int *count)。

printf("请输入需要增加的通讯录内容:\n");。

printf("姓名:");。

scanf("%s",(book+*count)->name);。

scanf("%ld",&(book+*count)->tel);。

printf("地址:");。

scanf("%s",(book+*count)->addr);。

printf("添加成功\n");。

通讯录C语言代码

通讯录C语言代码
fclose(fp);
}getch();goto kai;break;
case('4'):
{
cout<<"输入地址:";
cin>>key;
num=0;
while(!feof(fp))
{
fscanf(fp,"%s%s%s%s\n",,da.sex,da.phone,da.addr);
}
}
//创建新的通讯录
void newd()
{
FILE *fp;
char s[50];
strcpy(s,"D:\\通讯录.TXL");
//wen:cout<<"请输入通讯录的名字:";
// cin>>s;
if((fp=fopen(s,"ab+"))==NULL)
{
cout<<"不能打开文件!"<<endl;
{
cout<<"输入姓名:";
cin>>key;
num=0;
while(!feof(fp))
{
fscanf(fp,"%s%s%s%s\n",,da.sex,da.phone,da.addr);
if(compare(key,)==1)
{
s1[0]='\0';
}
else
{
for (i=0; i<len; i++)
s1[i]=s2[i+pos];

学生通讯录C语言课程设计源代码

学生通讯录C语言课程设计源代码

#include<stdio.h> //程序中所需用到的所有函数的头文件// #include<stdlib.h> //清屏,暂停所需头文件//#include<process.h> //退出所需函数头文件//#include<string.h> //字符串函数//char namekey[20],numkey[11],phonekey[20]; //全局变量,输入,查询,修改时要用到// int rshu;void menu(); //后面主函数中需要调用到的函数,为全局变量//void add();void alter();void delet();void search();void help();void order();void scan();struct student //定义一个数组,储存所需录入的信息,整个程序都可以使用//{char num[11];char name[20];char sex[5];char address[50];char phone[20];char qq[10];}stu[50];void menu(){int wenjian();int n;while(1) //循环使用此函数//{system("cls"); //每次循环此函数都清屏//wenjian(); //存入文件//printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^");printf("\n ★→菜单←★\n");printf("\n 1.添加学生信息 2.修改学生信息\n");printf("\n 3.删除学生信息 4.查询学生信息\n");printf("\n 5.学生信息排序 6.浏览学生信息\n");printf("\n 7.帮助菜单8.退出系统\n");printf("\n ★→学生通讯录←★\n");printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^");printf("\n");printf("请选择序号(1~8):[ ]\b\b");scanf("%d",&n);if (n>0 && n<9){switch(n){case 1:add();break;case 2:alter();break;case 3:delet();break;case 4:search();break;case 5:order();break;case 6:scan();break;case 7:help();break;case 8:exit(0);}}else{printf("您输入的序号不在范围内:\n");system("pause"); //暂停,不直接执行后续操作// }}}void main() //主函数,运行菜单函数//{menu();}void add() //添加函数,添加通讯录中的信息//{int i,n,j,k;char w,m;printf("请输入所需添加信息条数(请输入数字1~50):"); //输入信息的条数,决定添加多少信息//scanf("%d",&n);for(j=0;;j++){if(n<1 || n>50) //判断输入的数是否在存储空间中,不满足,则重新选择//{printf("输入错误,请选择:1.重新输入 2.退出输入返回主菜单:");printf("\n输入您的选择(1 or 2):");scanf("%d",&k);if(k==1) add(); //返回添加函数//if(k==2) menu(); //返回主菜单//}else break;}for(i=0;i<n;i++) //输入信息//{printf("\n请输入学号:");scanf("%s",stu[rshu+i].num);printf("请输入姓名:");scanf("%s",stu[rshu+i].name);printf("请输入性别(m or w):");scanf("%s",stu[rshu+i].sex);for(j=0;;j++){if(strcmp(stu[rshu+i].sex,"w")!=0 && strcmp(stu[rshu+i].sex,"m")!=0){ //进行性别录入判断,只能为m或者w,否则重新输入//printf("输入错误,请重新输入:");printf("\n请输入性别(m or w):");scanf("%s",stu[rshu+i].sex);}else break;}printf("请输入通讯地址:"); //判断后继续输入//scanf("%s",stu[rshu+i].address);printf("请输入电话:");scanf("%s",stu[rshu+i].phone);printf("请输入QQ号:");scanf("%s",stu[rshu+i].qq);}rshu+=n; //总人数增加添加的条数// printf("\n添加成功!\n");system("pause"); //暂停,不直接执行后续操作//menu(); //返回主菜单//}void alter() //修改通讯录中的信息//{int i,j,k,n;char m,w;if(rshu==0) //当人数为0时,没有数据删除,用户选择是否添加数据// {printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字则返回主菜单):\n");printf("请选择:");scanf("%d",&n);if(n==1) add();else menu();}printf("\n请输入要修改学生的姓名:");scanf("%s",namekey);for(i=0;i<rshu;i++)if(strcmp(namekey,stu[i].name)==0) //比较字符串//{printf("\n已查询到,记录为:");printf("\n\n学号,姓名,性别,通讯地址,电话,QQ号:");printf("\n%s , %s , %s , %s , %s , %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phon e,stu[i].qq);break;}if(i==rshu) //当i=rshu时,证明整个通讯录中的学生都查询到了,没有符合的//{printf("\n没有该同学记录,请继续选择操作:\n");printf("\n请选择:1.重新输入(其它数字键则返回主菜单)");scanf("%d",&n);if(n==1) alter();else menu();}else{system("pause");system("cls");printf("\n\n学号,姓名,性别,通讯地址,电话,QQ号:");printf("\n%s , %s , %s , %s , %s , %s",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phone, stu[i].qq);printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^");printf("\n\n请选择要修改的信息且一次操作只能修改一次: ");printf("\n\n 1.学号 2.姓名"); //满足各种需要修改的信息//printf("\n\n 3.通讯地址 4.电话号码");printf("\n\n 5.QQ号码 6.全部信息");printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^");printf("\n请选择(1~6):");scanf("%d",&k);if(k<1 || k>6){printf("输入有误,请选择1.重新输入2.退出修改返回主菜单");printf("\n输入您的选择(1 or 2):");scanf("%d",&n);if(n==1) alter();if(n==2) menu();}if(k==1) //修改学号//{printf("\n请输入新数据:");printf("\n请输入学号:");scanf("%s",stu[i].num);}if(k==2){printf("\n请输入新数据:");printf("请输入姓名:");scanf("%s",stu[i].name);if(k==3) //修改通讯地址// {printf("\n请输入新数据:");printf("请输入通讯地址:");scanf("%s",stu[i].address);}if(k==4) //修改电话// {printf("\n请输入新数据:");printf("请输入电话:");scanf("%s",stu[i].phone);}if(k==5) //修改QQ号// {printf("\n请输入新数据:");printf("请输入QQ号:");scanf("%s",stu[i].qq);}if(k==6) //修改全部信息// {printf("\n请输入新数据:");printf("\n请输入学号:");scanf("%s",stu[i].num);printf("请输入姓名:");scanf("%s",stu[i].name);printf("请输入性别(m or w):");scanf("%s",stu[i].sex);for(j=0;;j++){if(strcmp(stu[i].sex,"w")!=0 && strcmp(stu[i].sex,"m")!=0){printf("输入错误,请重新输入:");printf("\n请输入性别(m or w):");scanf("%s",stu[i].sex);}else break;}printf("请输入通讯地址:");scanf("%s",stu[i].address);printf("请输入电话:");scanf("%s",stu[i].phone);printf("请输入QQ号:");scanf("%s",stu[i].qq);}printf("修改成功!\n");printf("是否需要查看修改后的信息?: 是(按1) or 否(按2):");scanf("%d",&k);if(k==1){printf("\n 学号,姓名,性别,通讯地址,电话,QQ号:");printf("\n%s , %s , %s , %s , %s , %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phon e,stu[i].qq);printf("\n可返回主菜单\n");}if(k==2){printf("\n可返回主菜单\n");}system("pause"); //暂停,不直接执行后续操作//menu();}void delet() //删除函数//{int i,k,n;char *s; //定义一个字符指针变量//if(rshu==0) //当人数为0时,没有数据删除,用户选择是否添加数据// {printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字键则返回主菜单):\n");printf("请选择:");scanf("%d",&n);if(n==1) add();else menu();}printf("\n请输入要删除学生的姓名:");scanf("%s",namekey);for(i=0;i<rshu;i++)if(strcmp(namekey,stu[i].name)==0) //判断输入名字是否在通讯录中有记录,进行字符串比较//{printf("\n已查询到,记录为:");printf("\n 学号, 姓名, 性别, 通讯地址, 电话, QQ号:"); //显示查询到的printf("\n %s , %s , %s , %s , %s , %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].pho ne,stu[i].qq);break;}if(i==rshu){printf("\n没有该同学记录,请继续选择操作:\n");printf("\n请选择:1.重新输入(其它数字键则返回主菜单)");scanf("%d",&n);if(n==1) delet();else menu();}else{system("pause");system("cls");printf("\n\n学号,姓名,性别,通讯地址,电话,QQ号:");printf("\n%s , %s , %s , %s , %s , %s",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phone, stu[i].qq);printf("\n*********************************************************************** ********");printf("\n\n 请选择需要删除的信息: ");printf("\n\n****************** 1.学号 2.通讯地址**********************");printf("\n\n****************** 3.电话 4.QQ号**************************");printf("\n\n**************************** 5.全部信息***********************************");printf("\n******************************************************************* ************");printf("\n\n按其它数字键则不删除信息且返回主菜单,请选择:");scanf("%d",&k);if(k==1){printf("\n是否删除该学生<学号>信息?:删除(按1) or 不删除(按其它任意数字键):");scanf("%d",&n);if(n==1){s=stu[i].num; //将所查询到的姓名所在地址赋给s//*s=0; //s所指的值为0,原值将被删除//printf("已删除!\n");}else{printf("请选择:1.重新选择(按其它数字键则返回主菜单)\n");scanf("%d",&n);if(n==1) alter();else menu();}}if(k==2){printf("\n是否删除该学生<通讯地址>信息?:删除(按1) or 不删除(按其它任意数字键):");scanf("%d",&n);if(n==1){s=stu[i].address; //将所查询到的通讯地址所在地址赋给s//*s=0; //s所指的值为0,原值将被删除//printf("已删除!\n");}else{printf("请选择:1.重新选择(按其它数字键则返回主菜单)\n");scanf("%d",&n);if(n==1) alter();else menu();}}if(k==3){printf("\n是否删除该学生<电话>信息?:删除(按1) or 不删除(按其它任意数字键):");scanf("%d",&n);if(n==1){*(stu[i].phone)=0; //将地址所指函数的值赋为,则原值删除//printf("已删除!\n");}else{printf("请选择:1.重新选择(按其它数字键则返回主菜单)\n");scanf("%d",&n);if(n==1) alter();else menu();}}if(k==4){printf("\n是否删除该学生<QQ号>信息?:删除(按1) or 不删除(按其它任意数字键):");scanf("%d",&n);if(n==1){*(stu[i].qq)=0; //将地址所指函数的值赋为,则原值删除//printf("已删除!\n");}else{printf("请选择:1.重新选择(按其它数字键则返回主菜单)\n");scanf("%d",&n);if(n==1) alter();else menu();}}if(k==5){printf("\n是否删除该学生<全部>信息?:删除(按1) or 不删除(按其它任意数字键):");scanf("%d",&n);if(n==1){stu[i]=stu[i+1];printf("已删除!\n");}else{printf("请选择:1.重新选择(按其它数字键则返回主菜单)\n");scanf("%d",&n);if(n==1) alter();else menu();}}}if(k==5&&n==1) //当删除全部信息后,人数才减,其它删除操作不改变人数个数//rshu-=1;system("pause");}void search() //查询函数//{void xm();void xh();void dh();int n;system("cls"); //清屏,把主菜单的目录覆盖掉,只显示查询界面//printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^\n");printf("\n ★→查询界面←★\n");printf("\n");printf(" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n");printf(" 1.按姓名查询| 2.按学号查询\n");printf("―――――――――――――――――――|――――――――――――――――――――\n");printf(" 3.按电话查询| 4.返回主菜单\n");printf("__________________| ___________________\n");printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^\n");printf("\n");while(1){printf("请选择序号(1~4):[ ]\b\b");scanf("%d",&n);if (n>0 && n<5){switch(n){case 1:xm();break;case 2:xh();break;case 3:dh();break;case 4:menu();}}else{printf("您输入的序号不在范围内,请输入[1~4]:\n");}}}void xm() //按姓名查询函数//{int i,n;if(rshu==0) //当人数为0时,没有数据查询,用户选择是否添加数据// {printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字键则返回主菜单):\n");printf("请选择:");scanf("%d",&n);if(n==1) add();else menu();}printf("\n请输入要查询的姓名:");scanf("%s",namekey);for(i=0;i<rshu;i++)if(strcmp(namekey,stu[i].name)==0){printf("\n已查询到,记录为:");printf("\n 姓名,学号,性别,通讯地址,电话,QQ号:");printf("\n%s , %s , %s , %s , %s , %s\n",stu[i].name,stu[i].num,stu[i].sex,stu[i].address,stu[i].phon e,stu[i].qq);system("pause");break;}if(i==rshu){printf("没有该同学记录,请继续选择操作:\n");system("pause");return; //回到查询界面选择//}}void xh() //按学号查询函数//{int i,n;if(rshu==0) //当人数为0时,没有数据查询,用户选择是否添加数据// {printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字键则返回主菜单):\n");printf("请选择:");scanf("%d",&n);if(n==1) add();else menu();}printf("\n请输入要查询的学号:");scanf("%s",numkey);for(i=0;i<rshu;i++)if(strcmp(numkey,stu[i].num)==0){printf("\n已查询到,记录为:");printf("\n 学号,姓名,性别,通讯地址,电话,QQ号:");printf("\n%s , %s , %s , %s , %s , %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phon e,stu[i].qq);system("pause");break;}if(i==rshu){printf("没有该同学记录,请继续选择操作:\n");system("pause");return;}}void dh() //按电话查询函数//{int i,n;if(rshu==0) //当人数为0时,没有数据查询,用户选择是否添加数据// {printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字键则返回主菜单):\n");printf("请选择:");scanf("%d",&n);if(n==1) add();else menu();}printf("\n请输入要查询的电话:");scanf("%s",phonekey);for(i=0;i<rshu;i++)if(strcmp(phonekey,stu[i].phone)==0){printf("\n已查询到,记录为:");printf("\n 电话,学号,姓名,性别,通讯地址,QQ号:");printf("\n%s , %s , %s , %s , %s , %s\n",stu[i].phone,stu[i].num,stu[i].name,stu[i].sex,stu[i].addres s,stu[i].qq);system("pause");break;}if(i==rshu){printf("没有该同学记录,请继续选择操作:\n");system("pause");return;}}void help() //帮助函数//{system("cls");printf("\n~~~~~~~~~~~~~~~~~~~##########欢迎使用帮助菜单##########~~~~~~~~~~~~~~~~~~~~~~\n");printf("\n ** 本系统为学生通讯录系统,管理学生通讯录信息** \n");printf("\n ** 您可在本系统实现添加、删除、修改、查询、排序等操作** \n");printf("\n ** 请在选择操作时,注意查看操作提示, 请您注意看清选项** \n");printf("\n ** 望您按照提示信息准确输入! ** \n");printf("\n ** 如有不便, 请见谅** \n");printf("-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||");system("pause");}void order() //排序函数//{ int n;void num();void name();system("cls"); //清屏,把主菜单的目录覆盖掉,只显示排序界面//printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^");printf("\n ★→请选择所需选项←★\n");printf("\n-------------------------------------------------------------------------------");printf("\n 1.按学号排序");printf("\n");printf("\n 2.按姓名排序");printf("\n");printf("\n 3.返回主菜单");printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^");printf("\n");while(1){printf("请选择序号(1~3):[ ]\b\b");scanf("%d",&n);if (n>0 && n<4){switch(n){case 1:num();break;case 2:name();break;case 3:menu();}}else{printf("您输入的序号不在范围内,请输入[1~3]:\n");}}}void num() //排序函数中需要调用的一个函数,按学号排序//{int i,j,n;struct student temp; //定义一个新的结构体储存//if(rshu==0){printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字键则返回主菜单):\n");printf("请选择:");scanf("%d",&n);if(n==1) add();else menu();}for(i=0;i<rshu-1;i++) //选择法进行排序//{for(j=i+1;j<rshu;j++){if(strcmp(stu[i].num,stu[j].num)>0){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}}}for(i=0;i<rshu;i++)printf("\n%s , %s , %s , %s , %s , %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phon e,stu[i].qq);system("pause");}void name() //排序函数中需要调用的一个函数,按姓名排序//{int i,j,n;struct student temp;if(rshu==0){printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字键则返回主菜单):\n");printf("请选择:");scanf("%d",&n);if(n==1) add();else menu();}for(i=0;i<rshu-1;i++){for(j=i+1;j<rshu;j++){if(strcmp(stu[i].name,stu[j].name)>0){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}}}for(i=0;i<rshu;i++)printf("\n%s , %s , %s , %s , %s , %s\n",stu[i].name,stu[i].num,stu[i].sex,stu[i].address,stu[i].phon e,stu[i].qq);system("pause"); //暂停,不直接执行后续操作//}void scan() //浏览函数//{int i,n;if(rshu==0){printf("暂无通讯录数据,是否添加通讯录:1.是(按其它数字键则返回主菜单):\n");printf("请选择:");scanf("%d",&n);if(n==1) add();else menu();}printf("\n 学号, 姓名, 性别, 通讯地址, 电话, QQ号");for(i=0;i<rshu;i++)printf("\n%s , %s , %s , %s , %s , %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phon e,stu[i].qq);system("pause"); //暂停,不直接执行后续操作//}int wenjian() //文件函数,将输入的信息存入文件中//{FILE *fp; //定义结构指针变量//int i;if((fp=fopen("tongxunlu.txt","wb"))==NULL) //为只写打开一个二进制文件,并测试//{printf("\n文件打开失败\n");exit(1);}for(i=0;i<50;i++){fwrite(&stu[i],sizeof(struct student),1,fp); //可写进50个数据//}fclose(fp); //关闭文件//return 0; //返回值//}。

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

#include<string.h> /*字符函数和字符串函数*/#include<conio.h> /*字符模式函数(调用getch()函数)*/#include<stdio.h> /*输入输出函数*/int i;struct person /*电子通讯录结构定义*/{char num[5];char name[11];char sex[2];char phone[12];char address[26];char post_num[11];}persons[50];FILE *fp;vonum dateload() /*数据载入函数*/{ int j;fp=fopen("person.bat","r+"); /*打开文件person.bat*/if(fp==NULL) /*判断是否存在person.bat,如果不存在则创建*/{ fp=fopen("person.bat","w");i=0;}else{ for(i=0;i<50;i++){ j=fgetc(fp);if(j==EOF) /*判断是否到了文件尾*/return;fseek(fp,i*sizeof(struct person),0);fread(&persons[i],sizeof(struct person),1,fp); /*从文件中读取一条记录*/}}}vonum 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 datecheck(int k,char num[5]) /*检查通讯录中是否存在相同num或num输入格式错误*/{int j;if(num[0]=='0')k=1;for(j=0;num[j]!='\0';j++){if(num[j]>'9'||num[j]<'0')k++;}for(j=0;j<i+1;j++){if(strcmp(num,persons[j].num)==0)k++;}return k;}vonum dateInput() /*数据输入函数*/{char yes_no='1';char num[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",num,persons[i].name,persons[i].sex,persons[i].phone,persons [i].address,persons[i].post_num);datecheck(k,num);while(datecheck(k,num)>0) /*检查输入的num是否已存在,如果存在重新输入*/{printf("The No. already exists Or The No. isn't correct, please re-enter\n");scanf("%s",num);datecheck(k,num);}strcpy(persons[i].num,num);if(i<49){printf("\n\n Whether to be continue? Y(1)/N(0) \n\n");yes_no=getch();}if(i>=49)printf("\n\n Storage 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[]) /*比较两个num的大小*/{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;}vonum dateShow() /*数据输出函数*/{ int j,k;char m;struct person 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(persons[k].num,persons[k+1].num)==1){t=persons[k];persons[k]=persons[k+1];persons[k+1]=t;}}}for(j=0;j<i;j++) /*数据输出*/{printf("%4s %10s %4s %11s %20s%10s\n",persons[j].num,persons[j].name,persons[j].sex,persons[j].phone,persons[j].address,persons[j].post_num);m=getch();if(m==' ')break;}printf("\n\n There are %d data in the book .\n\n",i);}vonum dateSearch() /*数据查找函数*/{char k;int j,a,b;char num[5];char NAME[11];printf("Search by No. : 1\n");printf("Search by name : 2\n");k=getch();switch(k){case '1': /*按num查找*/a=0;printf("\n\n Please enter the No.\n\n");scanf("%s",num);for(j=0;j<i+1;j++){if(strcmp(num,persons[j].num)==0){a++;printf(" No. Name Sex Phone Address Zip_Code \n");printf("%4s %10s %4s %11s %20s%10s\n",persons[j].num,persons[j].name,persons[j].sex,persons[j].phone,persons[j].address,persons[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,persons[j].name)==0){b++;printf(" No. Name Sex Phone Address Zip_Code \n");printf("%4s %10s %4s %11s %20s%10s\n",persons[j].num,persons[j].name,persons[j].sex,persons[j].phone,persons[j].address,persons[j].post_num);}}if(b==0)printf(" Do not have to find the Name!\n\n");break;default:printf("\n\n Error!\n");break;}}vonum dateInsert() /*数据插入函数*/{ if(i>=50)printf("\n\n Storage full!\n\n");if(i<50){char num[5];int k=0;printf("Please enter the No. that you want to insert.\n");scanf("%s",num);datecheck(k,num); /*检查所需插入的num是否已存在,如果存在重新输入*/while(datecheck(k,num)>0){printf("The No. already exists Or The No. isn't correct, pleasere-enter\n");scanf("%s",num);datecheck(k,num);}strcpy(persons[i].num,num); /*插入数据*/ printf(" ****** Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*******\n");scanf("%s%s%s%s%s",persons[i].name,persons[i].sex,persons[i].phone,persons[i].ad dress,persons[i].post_num);i++;}}vonum dateDelete() /*数据删除函数*/{int k,t=0;char num[5];printf("\n\n Please enter the No. need to be deleted\n\n");scanf("%s",num);for(k=0;k<i;k++){if(strcmp(persons[k].num,num)==0){t++;break;}}if(t==0)printf("\n\n The No. does not Exist!\n\n");if(t>0){for(;k<i;k++) /*删除位置前的元素顺序前移*/{persons[k]=persons[k+1];}printf("\n\n Delete success!\n\n");i=i-1;}}vonum dateAlter() /*修改函数*/{int k,t=0;char num[5];printf("\n\n Please enter the No. to be Amended\n\n");scanf("%s",num);for(k=0;k<i;k++){if(strcmp(persons[k].num,num)==0){t++;break;}}if(t==0)printf("\n\n The No. does not Exist!\n\n");if(t>0){strcpy(persons[k].num,num);printf(" ****** Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*******\n");scanf("%s%s%s%s%s",persons[k].name,persons[k].sex,persons[k].phone,persons[k].ad dress,persons[k].post_num);printf("\n\n Alter Success!\n\n");}}vonum dateSave() /*数据保存函数*/{int j;fp=fopen("person.bat","w");for(j=0;j<=i-1;j++){fwrite(&persons[j],sizeof(struct person),1,fp);}printf("\n\n Save Success!\n\n");}vonum Exit() /*退出函数*/{char flag;printf(" Save or Not? (Y/N)\n"); /*判断是否保存*/do{flag=getch();switch(flag){。

C语言课程设计——通讯录软件源代码(完美版)

C语言课程设计——通讯录软件源代码(完美版)

C语言课程设计——通讯录软件源代码(完美版)通讯录完美版操作说明书编译环境:Visual C++ 6.0初始密码为:111111主菜单:选择编号进行相应的操作:选择“1”:输入编号:如“001”。

通讯录数据结构如下,只要输入的数据不超过允许的范围即可:struct callmember //定义数据结构{char code[8]; // 编号char name[20]; // 姓名char callnumber[16]; // 电话号码char address[30]; // 地址};输入完后“Enter”结束。

然后又回到“main menu”。

选择“2”显示通讯录信息,但此时刚输入的信息还没保存,选择“3”就可以将联系人信息保存在“通讯录.txt”文件中了,这个文件是自动生成的不需自己建立。

除此外还有查询、修改、删除功能。

当然功能有限,望有能之士加以修改,完善内容~本软件是一个值得收藏的软件,可以用于管理自己的通讯录~源程序:/***************************C语言课程设计*****************************//******************************************************************* **//******************************************************************* **//******************************************************************* **//***** 项目名称: 通讯录管理系统 *****/ /***** 作者: *****/ /*****专业: ***** *****/ /***** 班级: ***** *****/ /***** 学号: ********* *****//***** 指导老师: *****/ /***** 完成时间: 2010.7.12 *****/ /***** 联系电话: 150*******3 *****/ /***** 初始密码: 111111 *****//*********************************************************************/ /******************************************************************* **//******************************************************************* **//************************预处理***************************************/ #include<string.h> #include<stdio.h>#include<stdlib.h>#include<windows.h>#include<conio.h>#define N 301 //修改N的值,就可以改变记录个数,实际容纳人数为N-1 struct callmember //定义数据结构{char code[8]; // 编号char name[20]; // 姓名char callnumber[16]; // 电话号码char address[30]; // 地址};/***********************定义全局变量**********************************/FILE * fp; //文件指针struct callmember person[N]; //记录信息,N为通信录容量,有用信息为后N-1条int counter; //统计记录个数(联系人个数)/***********************函数声明*************************************/void creat(); //创建通讯录 OKvoid load(); //加载数据 OKvoid menu(); //界面菜单显示 OKvoid choose_1(int ); //选择功能 OKvoid insert(); //1、通讯信息的录入 OKvoid output(); //2、通讯信息的显示 OKvoid save(); //3、通讯信息的保存 OKvoid del(); //4、记录的删除 OKvoid modify(); //5、记录的修改 OKvoid found(); //6、记录的查找,三种方式 OKvoid choose_2(int ); //选择查询方式 OKvoid found_code(); //6.1、按编号查询 OK void found_name(); //6.2、按姓名查询 OK void found_callnumber(); //6.3、按电话号码查询 OK voidquit(); //7、退出系统 OK /********************** MAIN 函数***********************************/int main(){char m;char mima[10];char jiema[10];/*************密码文件的创建*****************/if((fp=fopen("mi_ma.dat","rb"))==NULL) //rb 只读(打开){fp=fopen("mi_ma.dat","wb");//wb 为读写建立一个新的文件(如果文件不存在,建立新文件)fprintf(fp,"%s","111111");fclose(fp);}/*************密码的读入*********************/fp=fopen("mi_ma.dat","rb");fscanf(fp,"%s",jiema);fclose(fp);/*************界面设置***********************/system("color 2f"); //设置界面颜色system("cls"); //清屏printf("\n\n\n\n\n\n\n\n\n\n\t\t\t请输入您的密码: "); //输入九位以内的密码gets(mima);if(!strcmp(mima,jiema)){printf("\n\n\t\t\t是否想修改您的密码 (Y/N) : "); scanf("%c",&m);if(m=='y'||m=='Y'){fp=fopen("mi_ma.dat","wb");printf("\n\t\t\t请输入您的新密码: ");scanf("%s",jiema);fprintf(fp,"%s",jiema);fclose(fp);printf("\n\t\t\t密码修改成功!");getchar();getchar();}system("cls"); //清屏system("color 2f"); //设置界面颜色creat(); //为程序创建文件(如果文件不存在)fp=fopen("counter.txt","r"); //r 只读(打开文件)fscanf(fp,"%d",&counter); //将磁盘中的数据赋给counter fclose(fp); //关闭打开的文件load(); //数据装载到内存中menu();return 0;}else{printf("\n\n\t\t\t输入密码错误!");getchar();printf("\t\t\t");return 0;}}/************************创建通讯录函数****************************/ void creat(){if((fp=fopen("通讯录.txt","r"))==NULL)//r 只读(打开){fp=fopen("通讯录.txt","w");//w 为读写建立一个新的文件(如果文件不存在,建立新文件)fprintf(fp,"%-10s%-20s%-20s%-30s\n","编号","姓名","电话号码","地址"); //写入基本信息person[0]fclose(fp);}if((fp=fopen("counter.txt","r"))==NULL) //r 只读(打开){fp=fopen("counter.txt","w"); //w 为只写建立一个新的文件fprintf(fp,"%d",0); //写入初值(自有文件新建时才有)fclose(fp);}}void load(){int i;if((fp=fopen("通讯录.txt","r"))!=NULL) //r 只读(打开),打开文件成功for(i=0;i<=counter;i++)fscanf(fp,"%s%s%s%s",person[i].code,person[i].name,person[i].callnum ber,person[i].address);//将文件中的信息加载到内存中,供操作使用elseprintf("打开文件失败!\n");fclose(fp);}/************************界面菜单显示函数**************************/ void menu(){int k;printf("\n");printf("\n");printf("\t ********************************************\n");printf("\t ********** 设计者: ***********\n");printf("\t ********** 设计时间: 2010.7.13 ***********\n");printf("\t ********************************************\n\n");printf("\t ********************************************\n");printf("\t **************** MENU ********************\n");printf("\t ********************************************\n");printf("\t ********* 1、通讯信息的录入: *************\n");printf("\t ********* 2、通讯信息的显示: *************\n");printf("\t ********* 3、通讯信息的保存: *************\n");printf("\t ********* 4、通信记录的删除: *************\n");printf("\t ********* 5、通信记录的修改: *************\n");printf("\t ********* 6、通信记录的查找: *************\n");printf("\t ********* 0、退出系统: *************\n");printf("\t ********************************************\n");printf("\t Now Please Enter your choose(0-6): ");scanf("%d",&k);choose_1(k);}/************************函数功能选择函数************************/ void choose_1(int k){switch(k){case 1 : insert();break;case 2 : output();break;case 3 : save();system("cls");printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t 保存成功!");getchar();getchar();system("cls");menu();break;case 4 : del();break;case 5 : modify();break;case 6 : found();break;case 0 : quit();break;default: ;break;}}/****************************OK***********************************/ /************************通讯信息录入函数*************************/ /***************将数据写入内存中,由person[N]数组保存着***********/ void insert(){struct callmember * p;system("cls");p=(struct callmember *)malloc(sizeof(struct callmember ));//将动态分配的内存首地址赋给pprintf("\n\n\n\n\n\n");printf("\t *********************************\n\n");printf("\t 编号: ");scanf("%s",p->code);strcpy(person[counter+1].code,p->code);printf("\t 姓名: ");scanf("%s",p->name);strcpy(person[counter+1].name,p->name);printf("\t 电话: ");scanf("%s",p->callnumber);strcpy(person[counter+1].callnumber,p->callnumber);printf("\t 地址: ");scanf("%s",p->address);strcpy(person[counter+1].address,p->address);printf("\n\t *********************************");counter++;free(p); //释放空间getchar();getchar();system("cls");menu();}/************************通讯信息显示函数************************/ /************从内存中将数据显示在屏幕上,不用打开文件************/ void output(){int i=1;system("cls");if(counter){for(i=0;i<=counter;i++)printf("\t%-8s%-20s%-16s%-30s",person[i].code,person[i].name,person[i].callnumber,person[i].address);printf("\t");}elseprintf("\n\n\n\n\n\t\t记录为空,请输入联系人信息!");getchar();getchar();system("cls");menu();}/*************保存、修改、删除只针对内存中的数组进行操作*********/ /************************通讯信息保存函数************************/ void save() {int i;system("cls");if((fp=fopen("counter.txt","w"))==NULL) //w 只写覆盖原来的数据{printf("\n\n\n\t\t\t操作失败.");exit(1);}fprintf(fp,"%d",counter); //往磁盘写入现在的值,即保存fclose(fp);if((fp=fopen("通讯录.txt","w"))!=NULL)fprintf(fp,"%s","\0");fclose(fp);if((fp=fopen("通讯录.txt","a"))!=NULL)for(i=0;i<=counter;i++)fprintf(fp,"%-10s%-20s%-20s%-30s\n",person[i].code,person[i].name,person[i].callnumber,p erson[i].address);fclose(fp);system("cls");}/************************信息删除函数****************************/ void del() //根据姓名删除,根据显示选择要删的内容 {int k=1;int c=0;char m;char namekey[20];system("cls");printf("\n\n\n\n\n\n\t\t\t请输入要删除的姓名:");scanf("%s",namekey);while(k<=counter){if(!strcmp(namekey,person[k++].name)){c=k-1;break;}}if(c){printf("\t\t\t已查到,记录为:\n\n\n");printf("\t%-10s%-20s%-20s%-30s\n",person[0].code,person[0].name,person[0].callnumber,p erson[0].address);printf("\t%-10s%-20s%-20s%-30s\n",person[c].code,person[c].name,person[c].callnumber,pe rson[c].address);printf("\n\n\t\t\t确定要删除吗? (Y/N) : ");scanf("%s",&m);if(m=='y'||m=='Y'){if(c==counter){strcpy(person[counter].code,"\0");strcpy(person[counter].name,"\0");strcpy(person[counter].callnumber,"\0");strcpy(person[counter].address,"\0");counter--;}else{for(k=c;k<=counter;k++) //后面的信息将前面的信息覆盖掉{strcpy(person[k].code,person[k+1].code);strcpy(person[k].name,person[k+1].name);strcpy(person[k].callnumber,person[k+1].callnumber); strcpy(person[k].address,person[k+1].address);}strcpy(person[counter].code,"\0"); //最后面的信息为空strcpy(person[counter].name,"\0");strcpy(person[counter].callnumber,"\0");strcpy(person[counter].address,"\0");counter--;}printf("\t\t\t删除成功!");getchar();getchar();system("cls");save(); //用save()函数将删除后的信息从新保存menu();}else{system("cls");menu();}}else{printf("\n\t\t\t对不起,没有此人记录!");getchar();getchar();system("cls");menu();}}/************************信息修改函数****************************/ //可以设定编号唯一,通过查找编号来确定记录位置,进而进行修改 void modify(){int k=1;char m;char codekey[20];system("cls");printf("\n\n\t\t\t 请输入要修改的编号: ");scanf("%s",codekey);while(k<=counter){if(!strcmp(codekey,person[k].code))break;k++;}if(k<=counter){printf("\n\t\t\t 已查到,记录为:\n");printf("\n\t\t%-10s%-20s%-20s%-30s\n","编号","姓名","电话号码","地址");printf("\t\t%-10s%-20s%-20s%-30s\n",person[k].code,person[k].name,person[k].callnumber, person[k].address);printf("\t\t\t 确定要修改吗? (Y/N) : ");scanf("%s",&m);if(m=='y'||m=='Y'){printf("\n\t\t\t 请输入新的信息:\n\n");printf("\t *********************************\n\n");printf("\t 编号: ");scanf("%s",person[k].code);printf("\t 姓名: ");scanf("%s",person[k].name);printf("\t 电话: ");scanf("%s",person[k].callnumber);printf("\t 地址: ");scanf("%s",person[k].address);printf("\n\t *********************************"); printf("\n\n\t\t\t 修改成功!");getchar();getchar();system("cls");save(); //修改完后立马保存menu();}else{system("cls");menu();}}else{printf("\n\n\t\t\t对不起,没有此人记录!");getchar();getchar();system("cls");menu();}}/************************信息查询函数****************************/ void found() //调试合适{int k;system("cls");printf("\n");printf("\n");printf("\n\t\t******************************************\n"); printf("\n\t\t 1、按编号查询:\n");printf("\n\t\t 2、按姓名查询:\n");printf("\n\t\t 3、按电话号码查询:\n");printf("\n\t\t 0、返回:\n");printf("\n\t\t******************************************\n\n"); printf("\t\tPlease Enter Your Choose now: ");scanf("%d",&k);choose_2(k);}void choose_2(int k){switch(k){case 1 : found_code(); break;case 2 : found_name(); break;case 3 : found_callnumber(); break;case 0 : system("cls");menu(); break;default : system("cls");menu();break;}system("cls");menu();}//按编号查询void found_code(){int k=0;char codekey[8];struct callmember * p;p=(struct callmember *)malloc(sizeof(struct callmember)); printf("\n\t\t请输入要查询的编号:");scanf("%s",codekey);if((fp=fopen("通讯录.txt","r"))==NULL){printf("\n不能打开通讯录!\n");exit(0);}while(!feof(fp)) //当文件结束时,feof()返回值为1{fscanf(fp,"%s%s%s%s\n",p->code,p->name,p->callnumber,p->address);if(!strcmp(codekey,p->code)){k=1;break; //k=1,说明已经查到}}if(k){printf("\n\t\t%-10s%-20s%-20s%-30s\n","编号","姓名","电话号码","地址");printf("\t\t%-10s%-20s%-20s%-30s",p->code,p->name,p->callnumber,p->address);}elseprintf("\n\t\t您查询的编号不存在!");fclose(fp);getchar();getchar();system("cls");}//按姓名查询void found_name(){int k=0;char namekey[8];struct callmember * p;p=(struct callmember *)malloc(sizeof(struct callmember));printf("\n\t\t请输入要查询的姓名:");scanf("%s",namekey);if((fp=fopen("通讯录.txt","r"))==NULL){printf("\n不能打开通讯录!\n");exit(0);}while(!feof(fp)) //当文件结束时,feof()返回值为1.{fscanf(fp,"%s%s%s%s\n",p->code,p->name,p->callnumber,p->address); if(!strcmp(namekey,p->name)){k=1;break; //k=1,说明已经查到}}if(k){printf("\n\t\t%-10s%-20s%-20s%-30s\n","编号","姓名","电话号码","地址");printf("\t\t%-10s%-20s%-20s%-30s",p->code,p->name,p->callnumber,p->address);}elseprintf("\n\t\t您查询的姓名不存在!");fclose(fp);getchar();getchar();system("cls");}//按电话号码查询void found_callnumber(){int k=0;char callnumberkey[8];struct callmember * p;p=(struct callmember *)malloc(sizeof(struct callmember));printf("\n\t\t请输入要查询的电话号:");scanf("%s",callnumberkey);if((fp=fopen("通讯录.txt","r"))==NULL){printf("\n不能打开通讯录!\n");exit(0);}while(!feof(fp)) //当文件结束时,feof()返回值为1.{fscanf(fp,"%s%s%s%s\n",p->code,p->name,p->callnumber,p->address);if(!strcmp(callnumberkey,p->callnumber)){k=1;break; //k=1,说明已经查到}}if(k){printf("\n\t\t%-10s%-20s%-20s%-30s\n","编号","姓名","电话号码","地址");printf("\t\t%-10s%-20s%-20s%-30s",p->code,p->name,p->callnumber,p->address);}elseprintf("\n\t\t您查询的号码不存在!");fclose(fp);getchar();getchar();system("cls"); }/************************退出系统函数******************************/void quit() //调试合适 { printf("\t\t");exit(0);}。

手机通讯录源代码

手机通讯录源代码
char dizhi[20];
}ren;
//菜单
void menu() //目录
{
system("cls"); //清屏
printf(" #########欢迎使用手机通讯录#########\n");
printf("\n");
printf("==============================================================================\n");
if(!feof(fp))
{ printf("人员的信息如下:\n");
printf("说明:(A办公类B个人类C商务类)");
printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");
while(!feof(fp))
{
if(strcmp(ry.leibie,leibie)==0) //若为该类别则输出
void bohao()
{ ren ry[N];
FILE *fp;
char name[10];
int i,len,k=-1;
system("cls");
printf("\n输入要删除的人员姓名: ");scanf(""ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}

通讯录管理系统C语言代码

通讯录管理系统C语言代码
printf("\t姓名:");
scanf("\t%s",per[i].name);
printf("\t电话号码:");
scanf("\t%s",per[i].num);
printf("\t通讯住址:");
scanf("\t%s",per[i].adds);
printf("\t邮政编码:");
{
char s[20];
int i=0,j;
printf("\t请输入想删除记录中的名字:");
scanf("%s",s);
while(strcmp(per[i].name,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t通讯录中没有此人!\n");
printf("\t\t * 0. 退出程序 *\n");
printf("\t\t ****************\n");
printf("\t\t请您选择(0-6):");
c=getchar();
}while(c<'0'||c>'6');
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return;
}
printf("\t此人学号: %d\n",per[i].score);
printf("\t此人姓名: %s\n",per[i].name);

通讯录源代码

通讯录源代码

#include "stdio.h"#include "stdlib.h"#include "string.h"typedef struct Content//........................................结构体{char name[20];long number;char dress[100];struct Content *next;}ML;//ML* head=NULL;ML* Found(){ML *p;p=(ML *)malloc(sizeof(ML));//指针申请空间if(p==NULL){printf("创建失败!!!");exit(0);}p->name;p->number=0;p->dress;p->next=NULL;return p;}void Imput(ML *head)//......................................联系人增添{ML*p=Found();p->next=head->next;head->next=p;printf("\n请输入联系人姓名:");getchar();gets(p->name);printf("\n请输入电话号码::");scanf("%ld",&p->number);printf("\n请输入联系人地址:");getchar();gets(p->dress);}void Revise(ML *head)//.........................................修改{char s[10];int ch;long nu;ML *p=Found();printf("输入需要修改的联系人姓名:");getchar();gets(s);p=head->next;while(strcmp(p->name ,s)){p=p->next;}printf("\n-------------------------------------\n");printf("|**********请输入操作编号***********|\n");printf("| |\n");printf("| 1、联系人姓名|\n");printf("| 2、联系人电话|\n");printf("| 3、联系人地址|\n");printf("| 0、退出|\n");printf("| |\n");printf("|-----------------------------------|\n");printf("请选择需要修改的内容:");scanf("%d",&ch);switch(ch){case 1:{printf("\n请输入名字:");getchar();gets(p->name);printf("修改成功!\n");break;}case 2:{printf("\n请输入电话:");scanf("%ld",&nu);p->number=nu;printf("修改成功!\n");break;}case 3:{printf("\n请输入地址:");getchar();gets(p->dress);printf("修改成功!\n");break;}default:break;}}void Delete(ML *head)//........................................删除{char s[10];ML *p,*d;p=Found();d=Found();p=head->next;head->next=p;printf("输入要删除的联系人姓名:\n");getchar();gets(s);d=head;do{if(!strcmp(p->name ,s)){d->next=p->next;free(p);printf("删除成功!\n");return;}d=p;p=p->next;}while(p!=NULL);printf("该联系人不存在!!!\n");}void Res(ML *head)//.............................................查找{char s[10];ML *p=Found();p=head->next;printf("输入要查找的联系人姓名\n");getchar();gets(s);for(;p!=NULL;p=p->next){if(!strcmp(p->name ,s)){printf("\n名字:%s",p->name);printf("\n电话:%ld",p->number);printf("\n地址:%s\n",p->dress);return;}}printf("该联系人不存在!!!\n");}void Browse(ML *head)//........................................浏览{ML *p=Found();printf("\n**********************************");if(head->next!=NULL){printf("\n..................................\n");printf("名字\t电话\t地址\t\n");for(p=head->next;p!=NULL;p=p->next){printf("%s\t%ld\t%s\t\n",p->name,p->number,p->dress);}}elseprintf("\n通讯录为空!!!\n");printf("\n**********************************\n");}int Menu(ML *head)//....................................................菜单{int ch;printf("-------------------------------------\n");printf("|**********请输入操作编号***********|\n");printf("| |\n");printf("| 1、添加联系人|\n");printf("| 2、修改联系人|\n");printf("| 3、删除联系人|\n");printf("| 4、查找联系人|\n");printf("| 5、浏览联系人|\n");printf("| 0、退出|\n");printf("| |\n");printf("|-----------------------------------|\n");printf("请选择:");scanf("%d",&ch);switch(ch){case 1:Imput(head);break;case 2:Revise(head);break;case 3:Delete(head);break;case 4:Res(head);break;case 5:Browse(head);break;default:break;}return ch;}void main()//........................................主函数{ML *head=Found();printf("-------------------------------------\n");printf("|* * * * * * |\n");printf("| * * * * |\n");printf("| * * * * |\n");printf("| * * * * * * |\n");printf("| * * * 通讯录. * * * |\n");printf("| |\n");printf("| * * * * * * |\n");printf("| * * * |\n");printf("| * * * ---XXX * * |\n");printf("|-----------------------------------|\n");while(Menu(head));}。

通讯录系统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 ;

通讯录源代码,直接可用

通讯录源代码,直接可用

#include <stdio.h>#include <windows.h>#include <stdlib.h>#include <conio.h>#include <string.h>/********************结构体定义******************************/ struct Contact{char NAME[20];char Phone[12];char QQ[12];};struct Node{Contact person;Node *next;};Node *head=NULL;/**************************函数申明*************************/ void AddPerson(Contact); //添加联系人Contact *FindPerson(char *name); //查找联系人void DelPerson(char *name); //删除联系人void ShowAll(); //显示所有联系人void function_6(); //分类显示联系人void SaveData(); //保存联系人信息void LoadData(); //载入联系人信息void face(); //界面int CheckPhone(char *num); //检验手机号是否合法int JudgePhone(char *num); //判断电话号码的用户类型/**********************主函数部分****************************/ int main(){system("title 迷你通讯录BY 马恒");system("color f2");LoadData();int op;face();while(1){printf("请选择功能:");fflush(stdin);if(0==scanf("%d",&op)){printf("\n输入不合法,请重新输入!\n");continue;}switch(op){case 0:{printf("感谢您的使用,下次再见!\n");getchar();exit(0);}break;case 1:{Contact per;fflush(stdin);printf("姓名:");scanf("%s",);do{printf("联系电话:");scanf("%s",per.Phone);}while(!CheckPhone(per.Phone));printf("QQ:");scanf("%s",per.QQ);AddPerson(per);SaveData();printf("添加联系人成功!\n");}break;case 2:{char name[15];printf("输入查找姓名:");scanf("%s",name);Contact *per=FindPerson(name);if(NULL!=per){printf("%s %s %s",per->NAME,per->Phone,per->QQ);}else{printf("%s联系人不存在,查询失败!",name);}}break;case 3:{char name[15];printf("输入需要修改的联系人:\n");scanf("%s",name);Contact *per=FindPerson(name);if(NULL==per){printf("%s联系人不存在,修改失败!",name);}else{printf("新姓名:");scanf("%s",per->NAME);printf("\n新号码:");scanf("%s",per->Phone);printf("\n新QQ号:");scanf("%s",per->QQ);SaveData();printf("更新联系人成功!\n");}}break;case 4:{char name[20];printf("输入需要删除的联系人:");scanf("%s",name);Contact *per=FindPerson(name);if(per==NULL){printf("%s联系人不存在,删除失败!",name);}else{DelPerson(name);SaveData();printf("\n成功删除联系人!\n");}}break;case 5:{ShowAll();}break;case 6:{system("cls");for(int i=1;i<=80;i++){printf("@");}printf("\t\t\t\t1.显示全部移动用户\n");//2printf("\t\t\t\t2.显示全部联通用户\n");//1printf("\t\t\t\t3.显示全部电信用户\n");//3printf("\t\t\t\t0.返回主菜单\n");for(i=1;i<=80;i++){printf("@");}int m=1,op;while(m){Node *p=head;printf("请输入指令:");fflush(stdin);if(0==scanf("%d",&op)){printf("您输入的指令无效,重新输入:");continue;}switch(op){case 0:{system("cls");face();m=0;}break;case 1:{while(NULL!=p){if(2==JudgePhone(p->person.Phone)){printf("%s %s %s \n",p->,p->person.Phone,p->person.QQ);}p=p->next;}}break;case 2:{while(NULL!=p){if(1==JudgePhone(p->person.Phone)){printf("%s %s %s \n",p->,p->person.Phone,p->person.QQ);}p=p->next;}}break;case 3:{while(NULL!=p){if(3==JudgePhone(p->person.Phone)){printf("%s %s %s \n",p->,p->person.Phone,p->person.QQ);}p=p->next;}}break;default:{printf("输入不合法,重新输入:");}}}}break;default:{printf("您输入的内容不合法,请重新输入!\n");}}}return 0;}void AddPerson(Contact person) //添加联系人Node *pNewNode;pNewNode=(Node*)malloc(sizeof(Node));pNewNode->person=person;pNewNode->next=NULL;if(NULL==head){head=pNewNode;}else{Node *pNode=head;while(NULL!=pNode->next){pNode=pNode->next;}pNode->next=pNewNode;}}void ShowAll() //显示所有联系人{Node *pNode=head;int icnt=0;while(NULL!=pNode){printf("%s %s %s \n",pNode->,pNode->person.Phone,pNode->person.QQ);pNode=pNode->next;icnt++;}printf("一共有%d个联系人\n",icnt);}Contact *FindPerson(char *name) //查找联系人{Node *pNode=head;while(NULL!=pNode){if(strcmp(pNode->,name)==0){break;}elsepNode=pNode->next;}return pNode?(&(pNode->person)):NULL;}void DelPerson(char *name){if(strcmp(head->,name)==0){Node *pNewHead=head->next;free(head);head=pNewHead;return;}Node *p1=head;while(strcmp(p1->next->,name)!=0) {p1=p1->next;}Node *p2=p1->next->next;free(p1->next);p1->next=p2;}void LoadData(){FILE *fp=fopen("data","rb");if(NULL==fp){return;}Contact ct;while(fread(&ct,sizeof(Contact),1,fp)){AddPerson(ct);}fclose(fp);}void SaveData(){FILE *fp=fopen("data","wb"); //以二进制写入Node *pNode=head;while(NULL!=pNode){fwrite(&(pNode->person),sizeof(Contact),1,fp);pNode=pNode->next;}fclose(fp);}void face(){for(int i=1;i<=80;i++)printf("=");for(i=1;i<=30;i++)printf("=");printf("通讯录管理系统v1.0");for(i=0;i<=30;i++)printf("=");for(i=1;i<=80;i++)printf("=");printf("\t\t\t\t1.添加联系人\n");printf("\t\t\t\t2.查找联系人\n");printf("\t\t\t\t3.修改联系人\n");printf("\t\t\t\t4.删除联系人\n");printf("\t\t\t\t5.显示所有联系人\n");printf("\t\t\t\t6.分类显示联系人\n");printf("\t\t\t\t0.退出通讯录\n");for(i=1;i<=80;i++){printf("=");}for(i=1;i<=80;i++){printf("=");}}int CheckPhone(char *num){if(11!=strlen(num)){return 0;}int i;for(i=0;i<11;i++){if(num[i]<'0'||num[i]>'9'){return 0;}}return 1;}int JudgePhone(char *num) //判断电话号码的用户类型{if('1'!=num[0]){return 0;}if('1'==num[0]){if('3'==num[1]){switch(num[2]){case '0':case '1':case '2':return 1;break;case '3':return 3;break;case '4':case '5':case '6':case '7':case '8':case '9':return 2;break;default:return 0;}}else if('5'==num[1]){switch(num[2]){case '0':case '1':case '2':case '7':case '8':case '9':return 2;break;case '5':case '6':return 1;break;case '3':return 3;break;default:return 0;}}else if('8'==num[1]){switch(num[2]){case'5':case'6':return 1;break;case'0':case'1':case'2':case'7':case'8':case'9':return 2;break;case'3':return 3;break;default:return 0;break;}}else{return 0;}}return 0;}。

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

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>struct person{char name[15];char sex[2];int nianling;long int youbian;char addr[50];char celephone[22];char homephone[22];char company[20];char email[40];long int QQ;}per[500];int num=0;//*外部变量num为文件中的纪录数*//FILE *fp;void mainmenu();//*主菜单*//void newrecord();//新添纪录*//void xiugaimenu();//*修改菜单*//void xiugaibyname();//*按姓名修改*//void xiugaibycelephone();//*按手机号码修改*//void xiugaixiangmu(int a);//*修改项目*//void searchmenu();//*查询菜单*//void searchbyname();//*按姓名查询*//void searchbycelephone();//*按手机号码查询*//void searchbyhomephone();//*按家庭电话号码查询*// void searchbyqq();//*按QQ查询*//void deletemenu();//*删除菜单*//void deleteall();//*删除所有信息*//void deleteone();//*删除单个*//void showall();//*输出全部信息*//void readfromfile();//*读取文件*//void writetofile();//*写入文件*// /void deletebycelephone(); //*按手机号码删除*//void deletebyname();//*按姓名删除*/void listbycelephone();//*按手机号码排序*//void listbyname();//*按姓名排序*//void listmenu();//*排序菜单*//void main()//*主函数*//{system("cls");readfromfile();while (1){mainmenu();}} //*主函数结束*//void mainmenu()//*主菜单函数*//{int a;system("cls");system("color 2a");printf("\n\t 您好! 欢迎使用通讯录!\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(" 9: 删除所有\n");printf(" 0: 退出\n");printf(" 请输入您的数字选择: ");loop1: scanf("%d",&a);switch (a){case 1:newrecord();break;case 2:searchmenu();break;case 3:deletemenu();break;case 4:xiugaimenu();break;case 5:listmenu();break;case 6:showall();break;case 7:writetofile();break;case 8:readfromfile();break;case 9:deleteall();break;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(strlen(per[num].sex)==0){printf("对不起!您的输入有误!请重新输入");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){printf("对不起!您的输入有误!请重新输入\n");goto addr;}printf("\n请输入手机号码:\n");celephone: scanf("%s",&per[num].celephone);if(strlen(per[num].celephone)!=11){printf("对不起!您的输入有误!请重新输入\n");goto celephone;}printf("\n请输入家庭电话号码:\n");homephone: scanf("%s",&per[num].homephone);if(strlen(per[num].homephone)!=11){printf("对不起!您的输入有误!请重新输入\n");goto homephone;}printf("\n请输入公司名称:");company: scanf("%s",&per[num].company);if(strlen(per[num].company)>20||strlen(per[num].company)<10){printf("对不起!您的输入有误!请重新输入");goto company;}printf("\n输入电子邮箱:");email: scanf("%s",&per[num].email);if(strlen(per[num].email)>30||strlen(per[num].email)<4){printf("对不起!您的输入有误!请重新输入");goto email;}printf("\n输入QQ号码:");QQ: scanf("%ld",&per[num].QQ);if(per[num].QQ>00||per[num].QQ<){printf("对不起!您的输入有误!请重新输入");goto QQ;}num++;printf("\n是否继续添加?\n");printf("\n请按1和2(1代表继续;2代表不继续)\n");printf("请输入您的选择");scanf("%d",&a);if(a==1){goto loop;}else{return;}}void searchmenu()//*查询菜单*//{int a;system("cls");system("color 2a");printf("\n\t\t 欢迎使用查询菜单");printf("\n\t\t 1-按手机号码查询");printf("\n\t\t 2-按姓名查询");printf("\n\t\t 3-按家庭电话号码查询");printf("\n\t\t 4-按QQ查询");printf("\n\t\t 5-返回主菜单");printf("\n\t\t");printf("请输入您的选择");scanf("%d",&a);switch (a){case 1:searchbycelephone();break;case 2:searchbyname();break;case 3:searchbyhomephone();break;case 4:searchbyqq();break;case 5:mainmenu();break;}}void searchbycelephone()//*按手机号码查询*//{int mark=0;int i,j;int a=0;char celephone[11];printf("\n 按手机号码查找\n");printf("\n请输入手机号码:\n");scanf("%s",celephone);for(i=0;i<num;i++){if (strcmp(per[i].celephone,celephone)==0){printf("\n 以下是您查找的联系人的信息");printf("\n________________________________");printf("\n名字:%s",per[i].name);printf("\n性别:%s",per[i].sex);printf("\n年龄:%d",per[i].nianling);printf("\n邮编:%ld",per[i].youbian);printf("\n地址:%s",per[i].addr);printf("\n手机号码:%s",per[i].celephone);printf("\n家庭电话号码:%s",per[i].homephone);printf("\n公司名称:%s",per[i].company);printf("\n电子邮件:%s",per[i].email);printf("\nQQ号码:%ld",per[i].QQ);printf("\n________________________________");printf("\n请按任意数字键返回主菜单");mark++;scanf("%d",&j);return;}}if (mark==0){printf("\n对不起!没有该联系人的信息!");printf("\n请按任意数字键返回主菜单");scanf("%d",&j);return;}}void searchbyname()//*按姓名查询*//{int mark=0;int i,j,findmark=0;int a=0;char name[15];printf("\n 按姓名查找");printf("\n请输入姓名:");scanf("%s",name);for(i=a;i<num;i++){if (strcmp(per[i].name,name)==0){findmark++;printf("\n\t\t 以下是您查找的联系人的信息");printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");if ((i+1)<num){printf("\n是否继续查找相同名字的联系人的信息?(1代表继续;2代表不继续)");scanf("%d",&j);if (j==1){a=i;mark++;continue;}elsebreak;}else{printf("\n请按任意数字键返回主菜单");scanf("%d",&j);return;}}}if(mark!=0){printf("\n对不起! 没有相同名字的该联系人的信息!!");printf("\n请按任意数字键返回主菜单");scanf("%d",&j);return;}else if(findmark==0){printf("\n对不起!没有该联系人的信息!");printf("\n请按任意数字键返回主菜单");scanf("%d",&j);return;}}void searchbyhomephone()//*按家庭电话号码查询*//{int mark=0;int i,j;int a=0;char homephone[11];printf("\n\t\t 按家庭电话号码查找");printf("\n请输入家庭电话号码:");scanf("%s",homephone);for(i=0;i<num;i++){if (strcmp(per[i].homephone,homephone)==0){printf("\n\t\t 以下是您要查找的联系人的信息");printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t请按任意数字键返回主菜单");mark++;scanf("%d",&j);return;}}if (mark==0){printf("\n\t\t对不起!没有该联系人的信息!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}}void searchbyqq()//*按QQ查询*//{int mark=0;int i,j;long int QQ;printf("\n\t\t 按QQ号码查找\n");printf("\n请输入QQ号码:");scanf("%ld",&QQ);for(i=0;i<num;i++){if(per[i].QQ==QQ){printf("\n\t\t 以下是您查找的联系人的信息");printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t请按任意数字键返回主菜单");mark++;scanf("%d",&j);return;}}if (mark==0){printf("\n\t\t对不起!没有该联系人的信息!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}}void deletemenu()//*删除菜单*//{int i,j;system("cls");system("color 3b");if(num==0){printf("\n\t\t对不起!文件中无任何纪录!");printf("\n\t\t请先添加个人信息!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}else{printf("\n\t\t 删除菜单");printf("\n\t\t 1-删除单个");printf("\n\t\t 2-返回主菜单");printf("\n\t\t ");printf("\n\t\t请输入您的数字选择: ");loop4: scanf("%d",&i);switch (i){case 1:deleteone();break;case 2:mainmenu();break;default:printf("对不起!您的输入有误!请重新输入: ");goto loop4;}}}void deleteone()//*删除单个*//{int i;printf("\n\t\t1-按手机号码删除2-按姓名删除");printf("\n\t\t请输入您的选择:");loop5:scanf("%d",&i);;switch (i){case 1:deletebycelephone();break;case 2:deletebyname();break;default:printf("对不起!您的输入有误!请重新输入: ");goto loop5;}}void deletebyname()//姓名删除*//{int a=0;int findmark=0;int i,j,k;int deletemark=0;char name[15];printf("\n\t\t请输入您要删除的联系人的姓名:");scanf("%s",name);for (i=a;i<num;i++){if (strcmp(per[i].name,name)==0){printf("\n\t\t以下是您要删除的联系人的纪录:");findmark++;printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t是否删除?(1代表删除;2代表不删除)\n");printf("\n\t\t请输入您的数字选择: ");scanf("%d",&k);if(k==1){for (j=i;j<num-1;j++) //*纪录移动,从per数组中删除之*//per[j]=per[j+1];num--;deletemark++;printf("\n\t\t删除成功");if((i+1)<num){printf("\n\t\t是否继续删除相同姓名的联系人的信息?(1代表删除;2代表不删除)");printf("\n\t\t请输入您的数字选择: ");scanf("%d",&k);if(k=1){a=i;findmark++;continue;}}printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)");printf("\n\t\t请输入您的数字选择: ");scanf("%d",&k);if(k==1)deleteone();elsebreak;}}elsecontinue;}if((deletemark==0)&&(findmark==0)){printf("\n\t\t对不起!没有该联系人的纪录!");printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&k);if(k==1)deleteone();}else if(findmark!=0){printf("\n\t\t对不起!没有重名信息!");printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&k);if(k==1)deleteone();}}void deletebycelephone()//*按手机号码删除*//{int i,j,h,m;int deletemark=0;char celephone[11];printf("\n\t\t请输入要删除的联系人的手机号码:");scanf("%s",celephone);for(i=0;i<num;i++){if(strcmp(per[i].celephone,celephone)==0){deletemark++;printf("\n\t\t以下是您要删除的联系人的纪录:");printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t是否删除?(1代表删除;2代表不删除)\n");printf(" 请输入您的数字选择: ");scanf("%d",&h);if(h==1){for (j=i;j<num-1;j++) /*纪录移动,从per数组中删除之*/per[j]=per[j+1];num--;printf("\n\t\t删除成功");printf("\n是否继续删除?(1代表继续;2代表不继续)\n");printf(" 请输入您的数字选择: ");scanf("%d",&h);if(h==1)deletebycelephone();}}}if(deletemark==0){printf("\n\t\t对不起!没有该联系人的纪录!");printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)\n");printf(" 请输入您的数字选择: ");scanf("%d",&m);if(m==1)deletebycelephone();}}void xiugaimenu()//*修改菜单*//{int i,j;system("cls");system("color 3f");if(num==0){printf("\n\t\t对不起!文件中无任何纪录!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}else{printf("\n\t\t 1-按姓名修改2-按手机号码修改\n");printf(" 请输入您的数字选择: ");loop6:scanf("%d",&i);switch (i){case 1:xiugaibyname();break;case 2:xiugaibycelephone();break;default:printf("对不起!您的输入有误!请重新输入: ");goto loop6;}}}void xiugaibyname()//*按姓名修改*//{int a=0;int findmark=0;int xiugaimark=0;int i,j;char name[15];printf("\n\t\t请输入要修改联系人的姓名:");scanf("%s",name);for (i=a;i<num;i++){if (strcmp(per[i].name,name)==0){printf("\n\t\t以下是您要修改的联系人的纪录:");findmark++;printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t是否修改?(1代表修改;2代表不修改)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1){xiugaixiangmu(i);xiugaimark++;printf("\n\t\t修改成功");if((i+1)<num){printf("\n\t\t是否继续修改相同姓名的联系人的信息?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1){a=i;findmark++;continue;}}printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1)xiugaibyname();return;}}}if ((xiugaimark==0)&&(findmark==0)){printf("\n\t\t没有该联系人的纪录");printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1)xiugaibyname();return;}else if (findmark!=0){printf("\n\t\t没有重名信息");printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1)xiugaibyname();return;}}void xiugaibycelephone()//*按手机号码修改*//{int findmark=0;int i,j;char celephone[11];printf("\n\t\t请输入要修改联系人的手机号码:");scanf("%s",celephone);for (i=0;i<num;i++){if (strcmp(per[i].celephone,celephone)==0){printf("\n\t\t以下是您要修改的联系人的纪录:");findmark++;printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t是否修改?(1代表修改;2代表不修改)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1){xiugaixiangmu(i);printf("\n\t\t修改成功");printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);printf(" 请输入您的数字选择: ");if (j==1)xiugaixiangmu(i);break;}}}if (findmark==0){printf("\n\t\t对不起!没有该联系人的纪录!");printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1)xiugaibycelephone();return;}}void xiugaixiangmu(int a)//*修改项目*//{int i;system("cls");system("color c0");printf("\n\t\t 请输入您要修改的项目");printf("\n\t\t\n");printf("\n\t\t1-手机号码\n");printf("\n\t\t2-姓名\n");printf("\n\t\t3-家庭电话号码\n");printf("\n\t\t4-QQ号码\n");printf("\n\t\t5-地址\n");printf("\n\t\t6-邮编\n");printf("\n\t\t7-电子邮件\n");printf("\n\t\t8-回主菜单\n");printf("\n\t\t\n");printf(" 请输入您的数字选择: ");scanf("%d",&i);loop9: switch (i){case 1:printf("请输入手机号码:");scanf("%s",&per[a].celephone);break;case 2:printf("请输入姓名:");scanf("%s",&per[a].name);break;case 3:printf("请输入家庭电话号码:");scanf("%s",&per[a].homephone);break;case 4:printf("请输入QQ号码:");scanf("%s",&per[a].QQ);break;case 5:printf("请输入地址:");scanf("%s",&per[a].addr);break;case 6:printf("请输入邮编:");scanf("%s",&per[a].youbian);break;case 7:printf("请输入email:");scanf("%s",&per[a].email);break;case 8:mainmenu();break;default: printf("对不起!您的输入有误!请重新输入: ");goto loop9;}}void listmenu()//*排序菜单*//{int i,j;system("cls");system("color b0");if(num==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}else{system("cls");system("color 12");printf("\n\t\t 排序菜单");printf("\n\t\t 1-按姓名排序");printf("\n\t\t 2-按手机号码排序");printf("\n\t\t 3-返回主菜单");printf(" 请输入您的数字选择: ");loop10: scanf("%d",&i);switch(i){case 1:listbyname();break;case 2:listbycelephone();break;case 3:mainmenu();break;default:printf("对不起!您的输入有误!请重新输入: ");goto loop10;}}}void listbyname()//*按姓名排序*//{int i,j,k;struct person tmp;for (i=1;i<num;i++){if(strcmp(per[i].name,per[i-1].name)<0){tmp=per[i];j=i-1;do{per[j+1]=per[j];j--;}while ((strcmp(,per[j].name)<0&&j>=0));per[j+1]=tmp;}}printf("\n\t\t排序成功,是否显示?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&k);if (k==1)showall();return;}void listbycelephone()//*按手机号码排序*//{int i,j,k;struct person tmp;for (i=1;i<num;i++){if(strcmp(per[i].celephone,per[i-1].celephone)<0){tmp=per[i];j=i-1;do{per[j+1]=per[j];j--;}while ((strcmp(tmp.celephone,per[j].celephone)<0)&&j>=0);per[j+1]=tmp;}}printf("\n\t\t排序成功,是否显示?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&k);if (k==1)showall();return;}void showall()//*输出全部信息*//{int i,j;system("cls");system("color 3b");if(num!=0){printf("\n\t\t*************** 以下为通讯录所有信息************");for (i=0;i<num;i++){printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\t\t");if (i+1<num){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************");}elseprintf("\n\t\t对不起!通讯录中无任何纪录!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}void writetofile()//*写入文件*//{int i,k;system("cls");system("color 84");if ((fp=fopen("per.bin","wb"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<num;i++){if (fwrite(&per[i],sizeof(struct person),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&k);return;}void readfromfile()//*读取文件*//{int i,j,k;system("cls");system("color 2b");if((fp=fopen("per.bin","rb"))==NULL){printf("\n\t\t****************************");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t* 通讯录文件不存在! *");if ((fp=fopen("per.bin","wb"))==NULL){printf("\n* 建立失败! *");printf("\n* *");printf("\n* *");printf("\n****************************");exit(0);}else{printf("\n\t\t* 通讯录文件已建立! *");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t****************************");printf("\n\t\t 按任意键进入主菜单");printf("\n\t\t 请输入您的数字选择: ");scanf("%d",&k);return;}exit(0);}fseek(fp,0,2); //*文件位置指针移动到文件末尾*//if (ftell(fp)>0) //*文件不为空*//{rewind(fp); //*文件位置指针移动到文件开始位置*//for (num=0;!feof(fp) && fread(&per[num],sizeof(struct person),1,fp);num++);printf("\n\t\t****************************");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t* 文件导入成功! *");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t****************************");printf("\n\t\t 按1显示所有信息,按2回主菜单!");printf("\t\t 请输入您的数字选择: ");scanf("%d",&j);if(j==1)showall();}else{printf("\n\t\t****************************");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t* 文件导入成功! *");printf("\n\t\t* 通讯录文件中无任何纪录! *");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t****************************");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&i);return;}}void deleteall()//*删除所有信息*//{int i,j;system("cls");system("color 50");printf("\n\t\t确认删除?\n");printf("请按1和2(1代表确认;2代表不删除)\n ");scanf("%d",&i);if (i==1){fclose(fp);if ((fp=fopen("per.bin","wb"))==NULL){printf("\n\t\t不能打开文件,删除失败");readfromfile();}num=0;printf("\n\t\t纪录已删除!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}}。

通讯录管理系统程序C语言源代码

通讯录管理系统程序C语言源代码
} Address;
Address * h[5];
/*************************************************/
void menu();//一级菜单
void relatives();//亲人
void friends();//朋友
void classmates();//同学
/********************************************************/
void InitList(Address *&L);
int ListInsert(Address *&L,int i,AddressList e);
void DispList(Address *L);
void CreateListR(Address *&L, AddressList a[],int n);
int ListEmpty(Address *L);
void DispName(Address *L);
int ListLength(Address *L);
int ListDelete(Address *&L,int i,AddressList &e);
scanf("%d",&num1);
switch(num1)
{
case 1: menu();
case 2: SecondMenu();
default :exit(1);
}
}
void Delete()
{
int num1;
int m;
if (ListEmpty(h[x])==1)

基于c语言手机通讯录源程序

基于c语言手机通讯录源程序
#include<stdio.h>
#include<stdlib.h>
#define n 5
typedef struct stu_node
{
char xh[20];
char xm[20];
char xb[4];
char gzdw[20] ;
char dhhm[13];
char email[20];
,{"00002","李四","男","西科大","12576898756","28192892@"}
,{"00003","王莉","女","西科大","13587870101","32992@"}};
flag=3;
system("color 4a");
for(k=j;k<flag-1;k++)
{
note[k]=note[p];
}
flag--;
}
}
printf("删除成功\n\n\n");
break;
case 3:
printf("请输入要修改学生的学号:\n");
printf("请输入新添加的性别:");
scanf("%s",note[flag].xb);
printf("请输入新添加的学号:");
scanf("%s",note[flag].xh);

C语言通讯录代码

C语言通讯录代码
} txl[100];
main() /*主函数及函数调用*/
{
welcome();
while(1)
{
menu();
}
return 0;/*????*/
}
welcome() /*版本信息*/
{
printf("\n\n\n\n\n");
printf("\n\t\t----------------按姓名查找 --------------------");
printf("\n\t\t请输入您要查找的姓名:");
scanf("%s",&na);
for(i=0;i<n;i++)
{
if (strcmp(txl[i].name,na)==0)
if (getch()=='y')
enter();
return;
}
browse() /*浏览模块*/
{
int i;
system("cls");
if(n!=0)
{
printf("\n\t\t----------欢迎查询通讯录所有联系人信息-------------");
FILE *fp;
int n=0;
struct tongxunlu
{
char name[20]; /*姓名*/
char phone[20]; /*电话号码*/
char qq[20]; /*qq号码*/
char address[40];/*住址*/
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("\n\t\t手机号码:%s",per[i].celephone);
printf("\n\t\t家庭电话号码:%s",per[i].homephone);
printf("\n\t\t公司名称:%s",per[i]pany);
printf("\n\t\t电子邮件:%s",per[i].email);
printf("\n请按任意数字键返回主菜单");
scanf("%d",&j);
return;
}
}
void searchbyhomephone()omephone,homephone)==0)
{
printf("\n\t\t以下是您要查找的联系人的信息");
printf("\n\t\t________________________________");
printf("\n\t\tQQ号码:%ld",per[i].QQ);
printf("\n\t\t________________________________");
printf("\n\t\t请按任意数字键返回主菜单");
mark++;
scanf("%d",&j);
return;
}
}
if (mark==0)
if(strlen(per[num].email)>30||strlen(per[num].email)<4)
{
printf("对不起!您的输入有误!请重新输入");
goto email;
}
printf("\n输入QQ号码:");
QQ:scanf("%ld",&per[num].QQ);
{
printf("对不起!您的输入有误!请重新输入");
printf("\n\t\t邮编:%ld",per[i].youbian);
printf("\n\t\t地址:%s",per[i].addr);
printf("\n\t\t手机号码:%s",per[i].celephone);
printf("\n\t\t家庭电话号码:%s",per[i].homephone);
}
printf("\n请输入家庭电话号码:\n");
homephone:scanf("%s",&per[num].homephone);
if(strlen(per[num].homephone)!=11)
{
printf("对不起!您的输入有误!请重新输入\n");
goto homephone;
}
printf("\n请输入公司名称:");
printf("\n\t\t公司名称:%s",per[i]pany);
printf("\n\t\t电子邮件:%s",per[i].email);
printf("\n\t\tQQ号码:%ld",per[i].QQ);
printf("\n\t\t________________________________");
goto addr;
}
printf("\n请输入手机号码:\n");
celephone: scanf("%s",&per[num].celephone);
if(strlen(per[num].celephone)!=11)
{
printf("对不起!您的输入有误!请重新输入\n");
goto celephone;
printf("\n\t\t邮编:%ld",per[i].youbian);
printf("\n\t\t地址:%s",per[i].addr);
printf("\n\t\t手机号码:%s",per[i].celephone);
printf("\n\t\t家庭电话号码:%s",per[i].homephone);
goto QQ;
}
num++;
printf("\n是否继续添加\n");
printf("\n请按1和2(1代表继续;2代表不继续)\n");
printf("请输入您的选择");
scanf("%d",&a);
if(a==1)
{
goto loop;
}
else
{
return;
}
}
void searchmenu()2aelephone,celephone)==0)
printf("\n\t\t手机号码:%s",per[i].celephone);
printf("\n\t\t家庭电话号码:%s",per[i].homephone);
printf("\n\t\t公司名称:%s",per[i]pany);
printf("\n\t\t电子邮件:%s",per[i].email);
{
printf("对不起!您的输入有误!请重新输入");
goto youbian;
}
printf("\n请输入地址\n");
addr:scanf("%s",&per[num].addr);
if(strlen(per[num].addr)>50||strlen(per[num].addr)<4)
{
printf("对不起!您的输入有误!请重新输入\n");
}
printf("\n请输入性别:\n");
sex: scanf("%s",&per[num].sex);
if(strlen(per[num].sex)==0)
{
printf("对不起!您的输入有误!请重新输入");
goto sex;
}
printf("\n请输入年龄:");
nianling:scanf("%d",&per[num].nianling);
printf("\n电子邮件:%s",per[i].email);
printf("\nQQ号码:%ld",per[i].QQ);
printf("\n________________________________");
printf("\n请按任意数字键返回主菜单");
mark++;
scanf("%d",&j);
printf("\n\t\tQQ号码:%ld",per[i].QQ);
printf("\n\t\t________________________________");
printf("\n\t\t请按任意数字键返回主菜单");
mark++;
scanf("%d",&j);
return;
}
}
if (mark==0)
printf("\n\t\t名字:%s",per[i].name);
printf("\n\t\t性别:%s",per[i].sex);
printf("\n\t\t年龄:%d",per[i].nianling);
printf("\n\t\t邮编:%ld",per[i].youbian);
printf("\n\t\t地址:%s",per[i].addr);
return;
}
}
if (mark==0)
{
printf("\n对不起!没有该联系人的信息!");
printf("\n请按任意数字键返回主菜单");
scanf("%d",&j);
return;
}
}
void searchbyname()ame,name)==0)
{
findmark++;
printf("\n\t\t以下是您查找的联系人的信息");
printf("\n\t\t________________________________");
printf("\n\t\t名字:%s",per[i].name);
printf("\n\t\t性别:%s",per[i].sex);
printf("\n\t\t年龄:%d",per[i].nianling);
char homephone[22];
char company[20];
char email[40];
long int QQ;
}per[500];
int num=0;2aame);
if(strlen(per[num].name)>15)
{
printf("对不起!您的输入有误!请重新输入");
相关文档
最新文档