diff --git a/addressbook++.cpp b/addressbook++.cpp new file mode 100644 index 0000000..d1d8e1a --- /dev/null +++ b/addressbook++.cpp @@ -0,0 +1,485 @@ +#include +#include +#include +#include//为了使用gitch函数,调用此头文件 +#define Bytes sizeof(struct linkman) //宏定义结构体字节数,用于文件读写 +#define FORMAT "\t%-10s%-10s%-15s%-15s%-20s\n\n" //宏定义输出格式 +#define DATA peo[i].name,peo[i].birthplace,peo[i].tel_1,peo[i].tel_2,peo[i].email //宏定义结构体输出列表 +struct linkman //定义联系人结构体类型 +{ + char name[10];//联系人姓名 + char birthplace[10];//联系人籍贯 + char tel_1[15];//联系人的电话号码1 + char tel_2[15];//联系人的电话号码2 + char email[20];//邮箱地址 +}; +struct linkman peo[100];//定义联系人人数上限 +void addman(); +void queryman(); +void delman(); +void update(); +void outputman(); +void menu(); + +void menu()//菜单模块 +{ + system("cls");//清屏 + printf("\n\t\t**********通讯录管理系统*********\n"); + printf("\t\t┌-------------------------------┐\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│ 0.退出 │\n"); + printf("\t\t└-------------------------------┘\n"); + printf("\t\t请您选择功能(0-5):"); +} + +void tou() //联系人列表头部图案 +{ system("cls"); + printf("\n"); + printf("*************************************联系人列表***************************************\n\n"); + printf("\t姓名\t 籍贯\t 电话号码1\t 电话号码2\t 电子邮箱\n\n"); +} +void wei() //联系人列表尾部图岸 +{ + printf("\n**************************************************************************************\n\n"); +} + +int main ()//主函数 +{ + system("mode con: cols=86 lines=30");//设置窗口大小 + int n; + menu();//调用菜单函数模块 + scanf("%d",&n);//输入选项 + while(n)//当n=0时退出菜单,结束程序 + { + switch(n) + { + case 1: + addman();//当n=1时,进入添加联系人模块 + getch(); + break; + case 2: + queryman();//当n=1时,进入添加联系人模块 + getch(); + break; + case 3: + delman();//当n=1时,进入添加联系人模块 + getch(); + break; + case 4: + update();//当n=1时,进入添加联系人模块 + getch(); + break; + case 5: + outputman();//当n=1时,进入添加联系人模块 + getch(); + break; + default:break; + } + menu();//各功能运行完break之后 又进入菜单界面,直到退出 + scanf("%d",&n); + } + } + + +void addman()//添加联系人函数模块 +{ +FILE *p1; //定义文件指针 + int i,n,count=0; // count为联系人个数 + if ((p1=fopen("D:\\我的项目\\linkman.txt","a+"))==NULL) //打开linkman文件 + { + printf("不能打开此文件"); + exit(0); + } + while(!feof(p1))//检测流上的文件结束符 即文件结束:返回非0值。文件未结束:返回0值) + { + if(fread(&peo[count],Bytes,1,p1)==1) //从文件流中读数据,如果不成功或读到文件末尾 ,则返回 0 + count++; //如果成功读取了 一次 count就加一 + } + fclose(p1); //关闭文件 + if(count==0) + printf("\n\t联系人列表为空!\n\n"); + else + { + system("cls"); //清屏 + outputman();//调用联系人输出模块,输出所有人的信息 + } + if ((p1=fopen("D:\\我的项目\\linkman.txt","wb"))==NULL)//以二进制方式打开linkman文件 ,准备将联系人写入文件 + { + printf("\t不能打开联系人列表\n"); + return; + } + printf("\t是否添加联系人(1 or 0):"); + scanf("%d",&n); + while(n==1) + { + printf("\t请输入信息:\n\n"); + printf("\t姓名: ");//输入姓名 + scanf("%s",&peo[count].name); + for(i=0;i