- //
- // main.c
- // 文件的通讯录
- /*
- 通讯录文件创建成功!
- 数据初始化成功!...
- **************************************
- ********欢迎使用通讯录************
- *********1、添加联系人************
- *********2、删除联系人************
- *********3、修改联系人************
- *********4、查看所有联系人*******
- *********5、搜索联系人************
- *********6、退出系统***************
- **************************************
- 请选择1-6之间的操作
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- //*********宏定义**********
- #define N 100 //可存入联系人的个数
- #define NAMELEN 21 //名字字符串数组的长度
- #define NUM 13//电话字符串数组长度
- //联系人结构体
- struct tongXunLu{
- char name[NAMELEN];
- char num[NUM];
- };
- char *file = "TXL.data";
- struct tongXunLu per[N]; //用来储存联系人的数组
- int total = 0; //统计联系人个数
- //*****************函数的声明************************
- void set();//初始化~~
- void JM(); //显示主界面~~
- int judgment(int a, int min, int max); //判断输入是否合法~~
- void writeFile(); //将数据写入文件~~
- void add1(); //添加联系人~~
- void del2(); //删除联系人~~
- void change3(); //修改联系人~~
- void showAll4();//查看所有联系人~~~~
- void find5();//查找指定联系人~~~
- int main(int argc, const char * argv[])
- {
- system("clear"); //清理屏幕
- //初始化系统
- set( );
- int en = 10;
- while(en != -1)
- {
- do
- {
- JM();
- rewind(stdin);
- scanf("%d",&en);
- }while(judgment(en,1,6));
- switch(en)
- {
- case 1:
- add1();
- break;
- case 2:
- del2();
- break;
- case 3:
- change3();
- break;
- case 4:
- showAll4();
- break;
- case 5:
- find5();
- break;
- case 6:
- printf("系统正在退出...\n");
- printf("系统已经退出!\n");
- return 0;
- break;
- }
- }
-
-
-
-
- return 0;
- }
- void set()
- {
- printf("文件正在初始化...\n");
- FILE *p = fopen(file,"r");
- if(p != NULL)
- {
- fread(&total,sizeof(total),1,p);
- for(int i = 0; i < total; i++)
- {
- fread(&per[i],sizeof(struct tongXunLu),1,p);
- }
- }
- else
- {
- p = fopen(file,"wb");
- fwrite(&total,sizeof(total),1,p);
- }
- printf("文件初始化成功~~~\n");
- fclose(p);
- }
- int judgment(int a, int min, int max)
- {
- if(a < min || a> max)
- {
- printf("非法输入!请重新输入:\n");
- return 1;
- }
- else
- {
- return 0;
- }
- }
- void JM()
- {
- printf("**************************************\n");
- printf("********欢迎使用通讯录************\n");
- printf("*********1、添加联系人************\n");
- printf("*********2、删除联系人************\n");
- printf("*********3、修改联系人************\n");
- printf("*********4、查看所有联系人*******\n");
- printf("*********5、收索联系人************\n");
- printf("*********6、退出系统***************\n");
- printf("**************************************\n");
- printf("请选择1-6之间的操作:");
- }
- void writeFile()
- {
- FILE *p = fopen(file,"wb+");
- if( p != NULL)
- {
- fwrite(&total,sizeof(total),1,p);
- for(int i = 0; i < total;i++)
- {
- fwrite(&per[i],sizeof(struct tongXunLu),1,p);
- }
- fclose(p);
- }
- }
- void add1()
- {
- printf("你选择的是添加联系人功能,请按提示操作:\n");
- printf("请输入联系人姓名:\n");
- scanf("%s",per[total].name);
- printf("请输入联系人电话:\n");
- scanf("%s",per[total].num);
- printf("您是否确认添加联系人 0:取消 1:确认\n");
- int flag = -1;
- scanf("%d",&flag);
- if(flag == 1)
- {
- total++;
- writeFile();
- printf("添加联系人成功\n");
- }
- else
- {
- printf("取消添加联系人\n");
- }
-
- }
- void del2()
- {
- printf("你选择的是删除联系人功能,请按提示操作:\n");
- showAll4();
- printf("请输入您要删除的联系人的编号:\n");
- int bianHao = 0;
- scanf("%d",&bianHao);
- while(judgment(bianHao,1,total));
- printf("您是否确认删除联系人 0:取消 1:确认\n");
- int flag = -1;
- scanf("%d",&flag);
- if(flag == 1)
- {
- for(int i = bianHao;i <total;i++)
- {
- per[i-1]= per[i];
- }
- total--;
- writeFile();
- printf("删除联系人成功\n");
- }
- else
- {
- printf("取消删除联系人\n");
- }
- }
- void change3()
- {
- printf("你选择的是修改联系人功能,请按提示操作:\n");
- showAll4();
- printf("请输入您要修改的联系人的编号:\n");
- int bianHao = 0;
- scanf("%d",&bianHao);
- while(judgment(bianHao,1,total));
- printf("您是否确认修改联系人 0:取消 1:确认\n");
- int flag = -1;
- scanf("%d",&flag);
- if(flag == 1)
- {
- printf("请重新输入联系人姓名:");
- scanf("%s",per[bianHao-1].name);
- printf("请重新输入联系人电话:");
- scanf("%s",per[bianHao-1].num);
- writeFile();
- printf("修改联系人成功\n");
- }
- else
- {
- printf("取消修改联系人\n");
- }
- }
- void showAll4()
- {
- printf("联系人列表如下:\n");
- for(int i = 0; i < total; i++)
- {
- printf("%d、姓名:%s 电话:%s\n",i+1,per[i].name,per[i].num);
- }
- }
- void find5()
- {
- struct tongXunLu temp;
- printf("你选择的是修改联系人功能,请按提示操作:\n");
- showAll4();
- printf("请输入您要查找的联系人的姓名:\n");
- scanf("%s",temp.name);
- printf("搜索中...\n");
- int flag = 1;
- for(int i = 0; i < total;i++)
- {
- if((strcmp(temp.name,per[i].name))==0)
- {
- printf("通讯录中%s的电话为%s\n",per[i].name,per[i].num);
- flag = 0;
- break;
- }
- }
- if(flag)
- {
- printf("并没有=。=\n");
- }
- }
复制代码
|
|