#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