- #include "stdio.h"
- #include "stdlib.h"
- #include "string.h"
- #include "conio.h" //包含这个getch()方法
- #define M 50
- typedef struct
- {
- char name[20]; /*姓名*/
- char ***[10]; /*性别*/
- char birth[15]; /*出生年月*/
- char units[30]; /*工作单位*/
- char studylevel[20]; /*学历*/
- char officenumber[15]; /*办公电话*/
- char homenumber[15]; /*住宅电话*/
- char homeaddress[30]; /*家庭住址*/
- }ADDRESS;
- /*显示指定的一条记录*/
- void mprint(ADDRESS temp)
- {
- printf("\n****************************************************************************\n");
- printf(" 姓名 性别 出生年月 工作单位 学历 办公电话 住宅电话 家庭住址\n");
- printf("----------------------------------------------------------------------------\n");
- printf("%-8s%4s%13s%8s%7s%12s%12s%8s\n",temp.name,temp.***,temp.birth,temp.units,
- temp.studylevel,temp.officenumber,temp.homenumber,temp.homeaddress);
- printf("*********************************end****************************************\n");
- }
- /*输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
- int enter(ADDRESS t[])
- {
- int i,n;
- system("cls");
- printf("********************************************************************************\n");
- printf("请确定您要输入的记录数\n"); /*提示信息*/
- scanf("%d",&n); /*输入记录数*/
- if(n>0)
- {
- printf("请输入您的通讯录记录\n\n"); /*提示输入记录*/
- printf(" 姓名 性别 出生年月 工作单位 学历 办公电话 住宅电话 家庭住址\n");
- printf("--------------------------------------------------------------------------\n");
- for(i=0;i<n;i++)
- {
- scanf("%s%s%s%s%s%s%s%s",t[i].name,t[i].***,t[i].birth,t[i].units,
- t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*输入记录*/
- printf("-------------------------------------------------------------------------\n");
- }
- printf("信息录入成功!");
- return n; /*返回记录条数*/
- }
- if(n<=0) printf("对不起,您输入的记录数不正确\n");exit(0);
- }
- /*显示记录,参数为记录数组和记录条数*/
- void list(ADDRESS t[],int n)
- {
- int i;
- system("cls");
- printf("\n*********************************通讯录***********************************\n");
- printf(" 总共有%d 条记录 \n",n);
- printf(" 姓名 性别 出生年月 工作单位 学历 办公电话 住宅电话 家庭住址\n");
- printf("--------------------------------------------------------------------------\n");
- for(i=0;i<n;i++)
- {
- printf("%-8s%4s%13s%8s%7s%12s%12s%8s\n",t[i].name,t[i].***,t[i].birth,t[i].units,
- t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress);
- if((i+1)%10==0)
- {
- printf("请输入任意键继续....\n");
- getchar();
- }
- }
- printf("**********************************结束************************************\n");
- }
- /*按姓名查找函数,参数为记录数组和记录条数以及姓名s */
- int namefind(ADDRESS t[],int n,char *s)
- {
- int i;
- for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/
- {
- if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/
- return i; /*相等,则返回该记录的下标号,程序提前结结束*/
- }
- return i; /*返回i值*/
- }
- /*按办公电话查找函数,参数为记录数组和记录条数以及办公电话s */
- int officenumberfind(ADDRESS t[],int n,char *s)
- {
- int i;
- for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/
- {
- if(strcmp(s,t[i].officenumber)==0) /*记录中的办公电话和待比较的办公电话是否相等*/
- return i; /*相等,则返回该记录的下标号,程序提前结结束*/
- }
- return i; /*返回i值*/
- }
- /*按住宅电话查找函数,参数为记录数组和记录条数以及住宅电话s */
- int homenumberfind(ADDRESS t[],int n,char *s)
- {
- int i;
- for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/
- {
- if(strcmp(s,t[i].homenumber)==0) /*记录中的住宅电话和待比较的住宅电话是否相等*/
- return i; /*相等,则返回该记录的下标号,程序提前结结束*/
- }
- return i; /*返回i值*/
- }
- /*删除记录函数,参数为记录数组和记录条数*/
- int delet(ADDRESS t[],int n)
- {
- char s[20]; /*要删除记录的姓名*/
- int ch=0;
- int i,j;
- printf("请输入您要删除的记录的姓名\n"); /*提示信息*/
- scanf("%s",s);/*输入姓名*/
- i=namefind(t,n,s); /*调用namefind函数*/
- if(i>n-1) /*如果i>n-1超过了数组的长度*/
- printf("对不起,没有找到要删除的记录!\n"); /*显示没找到要删除的记录*/
- else
- {
- mprint(t[i]); /*调用输出函数显示该条记录信息*/
- printf("您确认要删除该条记录么?(1.是/0.否)\n"); /*确认是否要删除*/
- scanf("%d",&ch); /*输入一个整数或*/
- if(ch==1) /*如果确认删除整数*/
- {
- for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/
- {
- strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/
- strcpy(t[j-1].***,t[j].***); /*将后一条记录的性别拷贝到前一条*/
- strcpy(t[j-1].birth,t[j].birth); /*将后一条记录的生日拷贝到前一条*/
- strcpy(t[j-1].units,t[j].units); /*将后一条记录的工作单位拷贝到前一条*/
- strcpy(t[j-1].studylevel,t[j].studylevel); /*将后一条记录的学历拷贝到前一条*/
- strcpy(t[j-1].officenumber,t[j].officenumber); /*将后一条记录的办公电话拷贝到前一条*/
- strcpy(t[j-1].homenumber,t[j].homenumber); /*将后一条记录的住宅电话拷贝到前一条*/
- strcpy(t[j-1].homeaddress,t[j].homeaddress); /*将后一条记录的家庭地址拷贝到前一条*/
- }
- n--; /*记录数减*/
- printf("记录删除成功!\n");
- }
- }
- return n; /*返回记录数*/
- }
- /*修改记录函数,参数为记录数组和记录条数*/
- void rewrite(ADDRESS t[],int n)
- {
- char s[20]; /*要修改记录的姓名*/
- int ch=0;
- int i;
- printf("请输入您要修改的通讯录的姓名:\n"); /*提示信息*/
- scanf("%s",s);/*输入姓名*/
- i=namefind(t,n,s); /*调用namefind函数*/
- if(i>n-1) /*如果i>n-1超过了数组的长度*/
- printf("对不起,没有找到要修改的记录!\n"); /*显示没找到要修改的记录*/
- else
- {
- mprint(t[i]); /*调用输出函数显示该条记录信息*/
- printf("您确定要修改这条记录么?(1.是/0.否)\n"); /*确认是否要修改*/
- scanf("%d",&ch); /*输入一个整数或*/
- if(ch==1) /*如果确认修改整数为*/
- {
- printf("请输入新的记录\n");
- printf("***************************************************************************\n");
- printf(" 姓名 性别 出生年月 工作单位 学历 办公电话 住宅电话 家庭住址\n");
- printf("---------------------------------------------------------------------------\n");
- scanf("%s%s%s%s%s%s%s%s",t[i].name,t[i].***,t[i].birth,t[i].units,
- t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*输入修改信息*/
- printf("---------------------------------------------------------------------------\n");
- printf("记录修改成功!\n");
- }
- }
- }
- /*插入记录函数,参数为结构体数组和记录数*/
- int add(ADDRESS t[],int n) /*插入函数,参数为结构体数组和记录数*/
- {
- ADDRESS temp; /*新插入记录信息*/
- int i,j;
- char s[20]; /*确定插入在哪个记录之前*/
- printf("请输入您要插入的记录\n");
- printf("***************************************************************************\n");
- printf(" 姓名 性别 出生年月 工作单位 学历 办公电话 住宅电话 家庭住址\n");
- printf("---------------------------------------------------------------------------\n");
- scanf("%s%s%s%s%s%s%s%s",temp.name,temp.***,temp.birth,temp.units,
- temp.studylevel,temp.officenumber,temp.homenumber,temp.homeaddress); /*输入插入信息*/
- printf("---------------------------------------------------------------------------\n");
- printf("请输入您要插入位置的姓名\n");
- scanf("%s",s); /*输入插入位置的姓名*/
- i=namefind(t,n,s); /*调用namefind,确定插入位置*/
-
- for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/
- {
- strcpy(t[j+1].name,t[j].name); /*当前记录的姓名拷贝到后一条*/
- strcpy(t[j+1].***,t[j].***); /*当前记录的性别拷贝到后一条*/
- strcpy(t[j+1].birth,t[j].birth); /*当前记录的出生年月拷贝到后一条*/
- strcpy(t[j+1].units,t[j].units); /*当前记录的单位拷贝到后一条*/
- strcpy(t[j+1].studylevel,t[j].studylevel); /*当前记录的出生年月拷贝到后一条*/
- strcpy(t[j+1].officenumber,t[j].officenumber); /*当前记录的办公电话拷贝到后一条*/
- strcpy(t[j+1].homenumber,t[j].homenumber); /*当前记录的住宅电话拷贝到后一条*/
- strcpy(t[j+1].homeaddress,t[j].homeaddress); /*当前记录的家庭地址拷贝到后一条*/
- }
- strcpy(t[j].name,temp.name); /*将新插入记录的姓名拷贝到第i个位置*/
- strcpy(t[j].***,temp.***); /*将新插入记录的性别拷贝到第i个位置*/
- strcpy(t[j].birth,temp.birth);/*将新插入记录的出生年月拷贝到第i个位置*/
- strcpy(t[j].units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/
- strcpy(t[j].studylevel,temp.studylevel);/*将新插入记录的学历拷贝到第i个位置*/
- strcpy(t[j].officenumber,temp.officenumber);/*将新插入记录的办公电话拷贝到第i个位置*/
- strcpy(t[j].homenumber,temp.homenumber);/*将新插入记录的住宅电话拷贝到第i个位置*/
- strcpy(t->homeaddress,temp.homeaddress);/*将新插入记录的家庭地址拷贝到第i个位置*/
- n++; /*记录数加*/
- printf("记录插入成功!\n");
- return n; /*返回记录数*/
- }
- /*保存函数,参数为结构体数组和记录数*/
- void save(ADDRESS t[],int n)
- {
- int i;
- FILE *fp; /*指向文件的指针*/
- if((fp=fopen("record.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/
- {
- printf("文件不能打开!\n");/*没打开*/
- exit(1); /*退出*/
- }
- fprintf(fp,"%d",n); /*将记录数写入文件*/
- fprintf(fp,"\r\n"); /*将换行符号写入文件*/
- for(i=0;i<n;i++)
- {
- fprintf(fp,"%-8s%4s%13s%8s%7s%12s%12s%8s",t[i].name,t[i].***,t[i].birth,t[i].units,
- t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress);/*格式写入记录*/
- fprintf(fp,"\r\n"); /*将换行符号写入文件*/
- }
- fclose(fp);/*关闭文件*/
- }
- /*读入函数,参数为结构体数组*/
- int load(ADDRESS t[])
- {
- int i,n;
- FILE *fp; /*指向文件的指针*/
- if((fp=fopen("record.txt","rb"))==NULL)/*打开文件*/
- {
- printf("对不起,不能打开文件!\n"); /*不能打开*/
- exit(1); /*退出*/
- }
- fscanf(fp,"%d",&n); /*读入记录数*/
- for(i=0;i<n;i++)
- fscanf(fp,"%s%s%s%s%s%s%s%s",t[i].name,t[i].***,t[i].birth,t[i].units,
- t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*按格式读入记录*/
- fclose(fp); /*关闭文件*/
- return n; /*返回记录数*/
- }
- /*按序号显示记录函数*/
- void display(ADDRESS t[])
- {
- int id,n=0;
- FILE *fp; /*指向文件的指针*/
- if((fp=fopen("record.txt","rb"))==NULL) /*打开文件*/
- {
- printf("对不起,不能打开文件!\n"); /*不能打开文件*/
- exit(1); /*退出*/
- }
- printf("请输入您要查找的序号...\n"); /*显示信息*/
- scanf("%d",&id); /*输入序号*/
- fscanf(fp,"%d",&n); /*从文件读入记录数*/
- if((id>=0)&&(id<n)) /*判断序号是否在记录范围内*/
- {
- fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/
- mprint(t[id]); /*调用输出函数显示该记录*/
- printf("\r\n");
- }
- else
- printf("对不起,你要查询的序号不存在!\n通讯录内共有%d 条记录!\n ",id); /*如果序号不合理显示信息*/
- fclose(fp); /*关闭文件*/
- }
- /*按姓名排序函数,参数为结构体数组和记录数*/
- void namesort(ADDRESS t[],int n)
- {
- int i,j,flag;
- ADDRESS temp; /*临时变量做交换数据用*/
- for(i=0;i<n;i++)
- {
- flag=0; /*设标志判断是否发生过交换*/
- for(j=0;j<n-1;j++)
- if((strcmp(t[j].name,t[j+1].name))>0) /*比较大小*/
- {
- flag=1;
- strcpy(temp.name,t[j].name); /*交换记录*/
- strcpy(temp.***,t[j].***);
- strcpy(temp.birth,t[j].birth);
- strcpy(temp.units,t[j].units);
- strcpy(temp.studylevel,t[j].studylevel);
- strcpy(temp.officenumber,t[j].officenumber);
- strcpy(temp.homenumber,t[j].homenumber);
- strcpy(temp.homeaddress,t[j].homeaddress);
- strcpy(t[j].name,t[j+1].name);
- strcpy(t[j].***,t[j+1].***);
- strcpy(t[j].birth,t[j+1].birth);
- strcpy(t[j].units,t[j+1].units);
- strcpy(t[j].studylevel,t[j+1].studylevel);
- strcpy(t[j].officenumber,t[j+1].officenumber);
- strcpy(t[j].homenumber,t[j+1].homenumber);
- strcpy(t[j].homeaddress,t[j+1].homeaddress);
- strcpy(t[j+1].name,temp.name);
- strcpy(t[j+1].***,temp.***);
- strcpy(t[j+1].birth,temp.birth);
- strcpy(t[j+1].units,temp.units);
- strcpy(t[j+1].studylevel,temp.studylevel);
- strcpy(t[j+1].officenumber,temp.officenumber);
- strcpy(t[j+1].homenumber,temp.homenumber);
- strcpy(t[j+1].homeaddress,temp.homeaddress);
- }
- if(flag==0)break; /*如果标志为,说明没有发生过交换循环结束*/
- }
- printf("按姓名排序成功!\n"); /*显示排序成功*/
- }
- /*按工作单位排序函数,参数为结构体数组和记录数*/
- void unitssort(ADDRESS t[],int n)
- {
- int i,j,flag;
- ADDRESS temp; /*临时变量做交换数据用*/
- for(i=0;i<n;i++)
- {
- flag=0; /*设标志判断是否发生过交换*/
- for(j=0;j<n-1;j++)
- if((strcmp(t[j].units,t[j+1].units))>0) /*比较大小*/
- {
- flag=1;
- strcpy(temp.name,t[j].name); /*交换记录*/
- strcpy(temp.***,t[j].***);
- strcpy(temp.birth,t[j].birth);
- strcpy(temp.units,t[j].units);
- strcpy(temp.studylevel,t[j].studylevel);
- strcpy(temp.officenumber,t[j].officenumber);
- strcpy(temp.homenumber,t[j].homenumber);
- strcpy(temp.homeaddress,t[j].homeaddress);
- strcpy(t[j].name,t[j+1].name);
- strcpy(t[j].***,t[j+1].***);
- strcpy(t[j].birth,t[j+1].birth);
- strcpy(t[j].units,t[j+1].units);
- strcpy(t[j].studylevel,t[j+1].studylevel);
- strcpy(t[j].officenumber,t[j+1].officenumber);
- strcpy(t[j].homenumber,t[j+1].homenumber);
- strcpy(t[j].homeaddress,t[j+1].homeaddress);
- strcpy(t[j+1].name,temp.name);
- strcpy(t[j+1].***,temp.***);
- strcpy(t[j+1].birth,temp.birth);
- strcpy(t[j+1].units,temp.units);
- strcpy(t[j+1].studylevel,temp.studylevel);
- strcpy(t[j+1].officenumber,temp.officenumber);
- strcpy(t[j+1].homenumber,temp.homenumber);
- strcpy(t[j+1].homeaddress,temp.homeaddress);
- }
- if(flag==0)break; /*如果标志为,说明没有发生过交换循环结束*/
- }
- printf("按工作单位排序成功!\n"); /*显示排序成功*/
- }
- /*复制文件*/
- void copy()
- {
- char outfile[20]; /*目标文件名*/
- int i,n;
- ADDRESS t[1024]; /*定义临时变量*/
- FILE *sfp,*tfp; /*定义指向文件的指针*/
- if((sfp=fopen("record.txt","rb"))==NULL) /*打开记录文件*/
- {
- printf("对不起,不能打开您所需要的文件!\n"); /*显示不能打开文件信息*/
- exit(1); /*退出*/
- }
- printf("请输入目标文件名,例如:c:\\f1\\te.txt:\n"); /*提示信息*/
- scanf("%s",outfile); /*输入目标文件名*/
- if((tfp=fopen(outfile,"wb"))==NULL) /*打开目标文件*/
- {
- printf("对不起,不能打开您所需要的文件!\n"); /*显示不能打开文件信息*/
- exit(1); /*退出*/
- }
- fscanf(sfp,"%d",&n); /*读出文件记录数*/
- fprintf(tfp,"%d",n);/*写入目标文件数*/
- fprintf(tfp,"\r\n"); /*写入换行符*/
- for(i=0;i<n;i++)
- {
- fscanf(sfp,"%s%s%s%s%s%s%s%s",t[i].name,t[i].***,t[i].birth,t[i].units,
- t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*读入记录*/
- fprintf(tfp,"%-8s%4s%13s%8s%7s%12s%12s%8s",t[i].name,t[i].***,t[i].birth,t[i].units,
- t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*写入记录*/
- fprintf(tfp,"\r\n"); /*写入换行符*/
- }
- fclose(sfp); /*关闭源文件*/
- fclose(tfp); /*关闭目标文件*/
- }
- /*按姓名查找记录*/
- void namesearch(ADDRESS t[],int n)
- {
- char s[20]; /*保存待查找姓名字符串*/
- int i; /*保存查找到结点的序号*/
- printf("请输入您要查找的姓名\n");
- scanf("%s",s); /*输入待查找姓名*/
- for(i=0;i<n;i++)
- {
- if(strcmp(s,t[i].name)==0)
- {
- if(i==n)
- printf("对不起,没有找到您所需要的记录!\n");
- else
- mprint(t[i]); /*找到,调用显示函数显示记录*/
- }
- }
- }
- /*按工作单位查找记录*/
- void unitssearch(ADDRESS t[],int n)
- {
- char s[30]; /*保存待查找工作单位字符串*/
- int i; /*保存查找到结点的序号*/
- printf("请输入您要查找的工作单位\n");
- scanf("%s",s); /*输入待查找工作单位*/
- for(i=0;i<n;i++)
- {
- if(strcmp(s,t[i].units)==0)
- {
- if(i==n)
- printf("对不起,没有找到您所需要的记录!\n");
- else
- mprint(t[i]); /*找到,调用显示函数显示记录*/
- }
- }
- }
- /*按办公电话电话查找记录*/
- void officenumbersearch(ADDRESS t[],int n)
- {
- char s[15]; /*保存待查找办公电话字符串*/
- int i; /*保存查找到结点的序号*/
- printf("请输入您要查找的办公电话\n");
- scanf("%s",s); /*输入待查找办公电话*/
- i=officenumberfind(t,n,s);/* 调用officenumberfind函数,得到一个整数*/
- if(i==n)
- printf("对不起,没有找到您需要的记录!\n");
- else
- mprint(t[i]); /*找到,调用显示函数显示记录*/
- }
- /*按住宅电话电话查找记录*/
- void homenumbersearch(ADDRESS t[],int n)
- {
- char s[15]; /*保存待查找住宅电话字符串*/
- int i; /*保存查找到结点的序号*/
- printf("请输入您要查找的住宅电话\n");
- scanf("%s",s); /*输入待查找住宅电话*/
- i=homenumberfind(t,n,s);/* 调用homenumberfind函数,得到一个整数*/
- if(i==n)
- printf("对不起,没有找到您需要的记录!\n");
- else
- mprint(t[i]); /*找到,调用显示函数显示记录*/
- }
- /*通讯录信息浏览及排序功能*/
- void showpaixu(ADDRESS adr[],int length)
- {
- int choice;
- menu1:
- system("cls");
- printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
- printf(" 1. 全部显示通讯录信息\n\n");
- printf(" 2. 按序号显示通讯录信息\n\n");
- printf(" 3. 按姓名排序\n\n");
- printf(" 4. 按工作单位排序\n\n");
- printf(" 0. 返回上一级菜单\n\n");
- printf(" ********************************************************************\n");
- printf(" 请选择(0~4)\n ");
- scanf("%d",&choice);
- switch(choice)
- {
- case 1: length=load(adr);
- list(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*显示全部记录*/
- case 2: length=load(adr);
- display(adr);
- printf(" 请按任意键返回...\n");
- getch();break; /*按序号显示记录*/
- case 3: length=load(adr);
- namesort(adr,length);
- save(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*按姓名排序*/
- case 4: length=load(adr);
- unitssort(adr,length);
- save(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*按工作单位排序*/
- case 0: return;
- }
- goto menu1;
- }
- /*通讯录信息查找功能*/
- void chazhao(ADDRESS adr[],int length)
- {
- int choice;
- menu2:
- system("cls");
- printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
- printf(" 1. 通过姓名查找\n\n");
- printf(" 2. 通过工作单位查找\n\n");
- printf(" 3. 通过办公电话查找\n\n");
- printf(" 4. 通过家庭电话查找\n\n");
- printf(" 0. 返回上一级菜单\n\n");
- printf(" ********************************************************************\n");
- printf(" 请选择(0~4)\n ");
- scanf("%d",&choice);
- switch(choice)
- {
- case 1: length=load(adr);
- namesearch(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*按姓名查找记录*/
- case 2: length=load(adr);
- unitssearch(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*按工作单位查找记录*/
- case 3: length=load(adr);
- officenumbersearch(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*按办公电话查找记录*/
- case 4: length=load(adr);
- homenumbersearch(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*按住宅电话查找记录*/
- case 0: return;
- }
- goto menu2;
- }
- /*通讯录信息变更功能*/
- void biangeng(ADDRESS adr[],int length)
- {
- int choice;
- menu3:
- system("cls");
- printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
- printf(" 1. 删除记录\n\n");
- printf(" 2. 修改记录\n\n");
- printf(" 3. 添加记录\n\n");
- printf(" 0. 返回上一级菜单\n\n");
- printf(" ********************************************************************\n");
- printf(" 请选择(0~3)\n ");
- scanf("%d",&choice);
- switch(choice)
- {
- case 1: length=load(adr);
- length=delet(adr,length);
- save(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*删除记录*/
- case 2: length=load(adr);
- rewrite(adr,length);
- save(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*修改记录*/
- case 3: length=load(adr);
- length=add(adr,length);
- save(adr,length);
- printf(" 请按任意键返回...\n");
- getch();
- break; /*插入记录*/
- case 0: return;
- }
- goto menu3;
- }
- /*通讯录及文件操作功能*/
- void wenjian(ADDRESS adr[],int length)
- {
- int choice;
- menu4:
- system("cls");
- printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
- printf(" 1. 导入文件到通讯录\n\n");
- printf(" 2. 把当前文件复制到新文件上\n\n");
- printf(" 0. 返回上一级菜单\n\n");
- printf(" ********************************************************************\n");
- printf(" 请选择(0~2)\n ");
- scanf("%d",&choice);
- switch(choice)
- {
- case 1: length=load(adr);
- printf("您已经成功的导入文件到通讯录!\n");
- printf(" 请按任意键返回...\n");
- getch();break;
- case 2: copy();
- printf("复制成功!\n");
- printf(" 请按任意键返回...\n");
- getch();break;
- case 0: return;
- }
- goto menu4;
- }
- /*关于*/
- void about()
- {
- system("color 87");
- system("cls");
- printf("\n\n\n\n 《通讯录信息管理系统》\n\n\n");
- printf(" *****************************************\n\n\n");
- printf(" 版权所有(C) 2008-2009 DIY软件\n\n\n");
- printf(" 制作人:朱学健、张玮、薛昌萍\n\n\n");
- printf(" *****************************************\n\n\n");
- printf(" 请按任意键返回主菜单...");
- getch();
- }
- /******主函数开始*******/
- void main()
- {
- int choice;
- int length; /*保存记录长度*/
- ADDRESS adr[1024]; /*定义结构体数组*/
- menu:
- system("color f9");
- system("cls");
- printf("\n\n\n\n *************************通讯录信息管理系统*************************\n\n");
- printf(" 请选择以下通讯录管理功能:\n\n");
- printf(" 1. 通讯录信息输入\n\n");
- printf(" 2. 通讯录信息浏览及排序\n\n");
- printf(" 3. 通讯录信息查询\n\n");
- printf(" 4. 通讯录信息更改\n\n");
- printf(" 5. 通讯录及文件操作\n\n");
- printf(" 6. 关于通讯录信息管理系统\n\n");
- printf(" 0. 退出通讯录管理系统\n\n");
- printf(" ********************************************************************\n");
- printf(" 请选择(0~6)\n ");
- scanf("%d",&choice);
- switch(choice)
- {
- case 1: length=enter(adr);
- save(adr,length);
- printf("\n 请按任意键返回...\n");
- getch();break;/*输入记录*/
- case 2: showpaixu(adr,length);break;
- case 3: chazhao(adr,length);break;
- case 4: biangeng(adr,length);break;
- case 5: wenjian(adr,length);break;
- case 6: about();break;/*关于*/
- case 0: return;exit(0); /*如返回值为则程序结束*/
- }
- goto menu;
- }