From d276072d27a34b6303b0d0985143325893476fc5 Mon Sep 17 00:00:00 2001 From: "18408000632@stu.hut.edu.cn" <18408000632@stu.hut.edu.cn> Date: Tue, 8 Jan 2019 00:31:54 +0800 Subject: [PATCH] second --- main.cpp | 318 ++++++++++++++++++++++++++++++++++++++++++++++++++-- main.exe | Bin 0 -> 48880 bytes storage.sto | 1 + 3 files changed, 309 insertions(+), 10 deletions(-) create mode 100644 main.exe create mode 100644 storage.sto diff --git a/main.cpp b/main.cpp index 2785c35..5fde37c 100644 --- a/main.cpp +++ b/main.cpp @@ -1,20 +1,33 @@ #include #include #include +FILE *ptr1; typedef struct { char name[20]; char phonenum[20]; - char kind[10]; + int kind; char email[30]; - } linkman; + } lm; + lm linkman; + + +void add(); +void view(); +void search(); +void sc(); +void dial(); +void amend(); + + int main_menu() { + char c; do{ - + system("cls"); printf("\t\t ════════════════\n"); - printf("\t\t 手机通讯录小程序 \n"); + printf("\t\t 手机通讯录小程序 \n"); printf("\t\t ════════════════\n"); printf("\t\t ┌────────────────┐\n"); printf("\t\t │ 1. 新增联系人 2. 全部联系人 │\n"); @@ -32,7 +45,7 @@ int main_menu() } main() { - for(;;) + while(1) { switch(main_menu()) { @@ -53,15 +66,15 @@ main() amend(); break; case 5: - printf("\t\t -----------拨号-----------\n"); - delete(); + printf("\t\t --------删除联系人---------\n"); + sc(); break; case 6: - printf("\t\t --------全部联系人--------\n"); + printf("\t\t -----------拨号------------\n"); dial(); break; - case 0; - printf("感谢使用,再见\n"); + case 0: + printf("感谢使用,再见\n"); system("pause"); exit(0); @@ -69,4 +82,289 @@ main() } return 0; +} +void add() +{ + int i=0; + ptr1=fopen("storage.sto","rb+"); + if(ptr1==NULL) + { + ptr1=fopen("storage.sto","wb+"); + if(ptr1==NULL) + { + printf("无法建立文件\n"); + exit(0); + } + } + rewind(ptr1); + while(!feof(ptr1)) + { + fscanf(ptr1, "%s%s%d%s",linkman.name,linkman.phonenum,&linkman.kind,linkman.email); + ++i; + } + fseek(ptr1,0,SEEK_END); + printf("您目前有%d条联系人数据,您还可以新增%d条联系人数据(%d/15)\n",i,15-i,i); + if(i==15) + { + system("pause"); + return; + } + char ch='y'; + while(ch!='n'&&ch!='N') + { + fflush(stdin); + ++i; + printf("姓名:"); + gets(linkman.name); + printf("电话号码:"); + gets(linkman.phonenum); + printf("分类(1 办公类 2 个人类 3 商务类):"); + scanf("%d",&linkman.kind); + while(linkman.kind<0||linkman.kind>3) + { + printf("请输入1-3内的数字:"); + scanf("%d",&linkman.kind); + } + printf("电子邮箱:"); + fflush(stdin); + gets(linkman.email); + fprintf(ptr1, "%20s%20s%5d%20s",linkman.name,linkman.phonenum,linkman.kind,linkman.email); + if(i<15) + printf("\n这是您的第%d条联系人,您可以继续新增%d条联系人(y/n)",i,15-i); + else + { + printf("\n这是您的第%d条联系人,您无法继续新增联系人了(y/n)",i,15-i); + system("pause"); + return; + } + fflush(stdin); + ch=getchar(); + } + fclose(ptr1); } +void view() +{ + int x,i=0; + ptr1=fopen("storage.sto","rb+"); + if(ptr1==NULL) + { + printf("您目前没有联系人的记录\n"); + printf("【1】返回主目录\n"); + printf("【2】新增联系人\n"); + printf("【3】结束程序\n"); + scanf("%d",&x); + while(x<1||x>3) + { + printf("请输入1-3内的数字:"); + scanf("%d",&x); + } + switch(x) + { + case 1:return;break; + case 2:add();return;break; + case 3:exit(0); + } + } + rewind(ptr1); + fflush(stdin); + printf("请您选择查看联系人的范围:\n"); + printf("【1】所有联系人\n"); + printf("【2】办公联系人\n"); + printf("【3】个人联系人\n"); + printf("【4】商务联系人\n"); + while(x<1||x>4) + { + printf("请输入1-4内的数字:"); + scanf("%d",&x); + } + printf("序号 姓名 手机号码 分类 电子邮件\n"); + printf("***************************************************************\n"); + if(x==1) + { + while(!feof(ptr1)) + { + fscanf(ptr1, "%s%s%d%s",linkman.name,linkman.phonenum,&linkman.kind,linkman.email); + i++; + //printf("%d %-10s %-10s %d %-10s",i,linkman.name,linkman.phonenum,linkman.kind,linkman.email); + if(linkman.kind==1) + printf("%d %-10s %-10s 办公类 %-10s",i,linkman.name,linkman.phonenum,linkman.email); + if(linkman.kind==2) + printf("%d %-10s %-10s 个人类 %-10s",i,linkman.name,linkman.phonenum,linkman.email); + if(linkman.kind==3) + printf("%d %-10s %-10s 商务类 %-10s",i,linkman.name,linkman.phonenum,linkman.email); + + printf("\n"); + + } + } + else + { + while(!feof(ptr1)) + { + + fscanf(ptr1, "%s%s%d%s",linkman.name,linkman.phonenum,&linkman.kind,linkman.email); + + switch(x) + { + case 2:if(linkman.kind==1)printf("%d %-10s %-10s 办公类 %-10s",++i,linkman.name,linkman.phonenum,linkman.email);break; + case 3:if(linkman.kind==2)printf("%d %-10s %-10s 个人类 %-10s",++i,linkman.name,linkman.phonenum,linkman.email);break; + case 4:if(linkman.kind==3)printf("%d %-10s %-10s 商务类 %-10s",++i,linkman.name,linkman.phonenum,linkman.email);break; + } + printf("\n"); + + } + } + printf("已经显示全部内容,共%d条\n",i); + system("pause"); + return; +} +void search() +{ + int x,i=0,u=0; + ptr1=fopen("storage.sto","rb+"); + if(ptr1==NULL) + { + printf("您目前没有联系人的记录\n"); + printf("【1】返回主目录\n"); + printf("【2】新增联系人\n"); + printf("【3】结束程序\n"); + scanf("%d",&x); + while(x<1||x>3) + { + printf("请输入1-3内的数字:"); + scanf("%d",&x); + } + switch(x) + { + case 1:return;break; + case 2:void add();break; + case 3:exit(0); + } + } + rewind(ptr1); + fflush(stdin); + printf("您想按照什么关键字搜索呢:\n"); + printf("【1】模糊搜索\n"); + printf("【2】姓名搜索\n"); + printf("【3】手机号码搜索\n"); + printf("【4】电子邮件地址搜索\n"); + printf("【5】返回主菜单\n"); + scanf("%d",&x); + while(x<1||x>5) + { + printf("请输入1-5内的数字:"); + scanf("%d",&x); + } + char keywords[20]; + fflush(stdin); + printf("请输入关键字:"); + gets(keywords); + while(!feof(ptr1)) + { + fscanf(ptr1, "%s%s%d%s",linkman.name,linkman.phonenum,&linkman.kind,linkman.email); + + if(x==1) + { + if(keywords[0]==linkman.name[0]&&keywords[1]==linkman.name[1])u=1; + } + if(x==2) + { + if(strcmp(keywords,linkman.name)==0)u=1; + } + if(x==3) + { + if(strcmp(keywords,linkman.phonenum)==0)u=1; + } + if(x==4) + { + if(strcmp(keywords,linkman.email)==0)u=1; + } + + if(u) + { + switch(linkman.kind) + { + case 1:printf("%d %-10s%-10s办公类%-10s",++i,linkman.name,linkman.phonenum,linkman.email);break; + case 2:printf("%d %-10s%-10s个人类%-10s",++i,linkman.name,linkman.phonenum,linkman.email);break; + case 3:printf("%d %-10s%-10s商务类%-10s",++i,linkman.name,linkman.phonenum,linkman.email);break; + } + } + u=0; + printf("\n"); + + } + printf("已经显示全部搜索结果,共%d条\n",i); + system("pause"); + return; +} +void amend() +{ + int x,i=0; + FILE *ptr2; + ptr1=fopen("storage.sto","rb+"); + if(ptr1==NULL) + { + printf("您目前没有联系人的记录\n"); + printf("【1】返回主目录\n"); + printf("【2】新增联系人\n"); + printf("【3】结束程序\n"); + scanf("%d",&x); + while(x<1||x>3) + { + printf("请输入1-3内的数字:"); + scanf("%d",&x); + } + switch(x) + { + case 1:return;break; + case 2:add();return;break; + case 3:exit(0); + } + } + rewind(ptr1); + fflush(stdin); + printf("序号 姓名 手机号码 分类 电子邮件\n"); + printf("***************************************************************\n"); + while(!feof(ptr1)) + { + fscanf(ptr1, "%s%s%d%s",linkman.name,linkman.phonenum,&linkman.kind,linkman.email); + i++; + //printf("%d %-10s %-10s %d %-10s",i,linkman.name,linkman.phonenum,linkman.kind,linkman.email); + if(linkman.kind==1) + printf("%d %-10s %-10s 办公类 %-10s",++i,linkman.name,linkman.phonenum,linkman.email); + if(linkman.kind==2) + printf("%d %-10s %-10s 个人类 %-10s",++i,linkman.name,linkman.phonenum,linkman.email); + if(linkman.kind==3) + printf("%d %-10s %-10s 商务类 %-10s",++i,linkman.name,linkman.phonenum,linkman.email); + + printf("\n"); + + } + printf("请从(0-%d)选择要修改的序号:",%i); + scanf("%d",&x); + while(x<0||x>i) + { + printf("请从(0-%d)选择要修改的序号:",%i); + scanf("%d",&x); + } + ptr2=fopen("temp","wb+"); + if(ptr2==NULL) + { + printf("ERROR"); + exit(0); + } + + return; +} +void sc() +{ + return; +} +void dial() +{ + return; +} + + + + diff --git a/main.exe b/main.exe new file mode 100644 index 0000000000000000000000000000000000000000..ac5827165065214fd82ff22ae7285cb6e60e1a88 GIT binary patch literal 48880 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