#include#include #include #define MAX 1000 #define NAME_MAX 10 //打印菜单 void meun() { printf("*************************************n"); printf("********1.add 2.del *******n"); printf("********3.search 4.modl *******n"); printf("********5.sort 6.show *******n"); printf("********0.exit *******n"); printf("*************************************n"); } //人的结构体 typedef struct People { char name[NAME_MAX]; char sex[5]; int age; char tel[12]; char ads[50]; }People; //通讯录的结构体 typedef struct Contact { People data[MAX];//存放数据; int sz;//通讯录中有效信息的个数 }Contact; //初始化通讯录 void chushihua(Contact* p) { p->sz=0; memset(p->data,0,sizeof(p->data)); } //增加联系人 void Add(Contact *pc) { if(pc->sz==MAX) { printf("通讯录已满n"); return; } else { printf("请输入姓名:>"); scanf("%s",pc->data[pc->sz].name); printf("请输入年龄:>"); scanf("%d",&pc->data[pc->sz].age); printf("请输入性别:>"); scanf("%s",pc->data[pc->sz].sex); printf("请输入电话:>"); scanf("%s",pc->data[pc->sz].tel); printf("请输入地址:>"); scanf("%s",pc->data[pc->sz].ads); pc->sz++; printf("增加联系人成功n"); } } //查找联系人 int find(char arr[],Contact* p) { int i; for(i=0;i < p->sz;i++) { if(strcmp(p->data[i].name,arr)==0) { return i; } } return -1; } //删除联系人 void Del(Contact* p) { char arr[NAME_MAX]; if(p->sz==0) { printf("没有联系人n"); return; } else { printf("请输入要删除联系人的姓名:>n"); scanf("%s",arr); int ret=find(arr,p); //查找联系人 if(ret==-1) { printf("要删除的人不存在n"); } else { //找到了要删除的人,进行删除 *** 作 for(int j=ret;j sz-1;j++) { p->data[j]=p->data[j+1]; } p->sz--; printf("删除成功n"); } } } //查找联系人 void newfind(Contact *p) { int flag=0; printf("请输入要查找联系人的姓名:>"); char name[NAME_MAX]; scanf("%s",name); int i; for(i=0;i sz;i++) { if(strcmp(p->data[i].name,name)==0) { flag=1; printf("%-8st%-4dt%-4st%-20st%-20stn", p->data[i].name,p->data[i].age,p->data[i].sex,p->data[i].tel,p->data[i].ads); return; } } if(flag==0) { printf("要查找的联系人不存在n"); return; } } //修改 void xiugai(int ret,Contact*p) { int input,flag=1; printf("请选择要修改的属性:>n"); printf("*******************************************n"); printf("*******1. 姓名 2. 年龄 3.性别**********n"); printf("*******4. 电话 5. 地址 0.返回**********n"); printf("*******************************************n"); do { scanf("%d",&input); switch(input) { case 1: { printf("请输入要修改的姓名:>"); char sx[NAME_MAX]; scanf("%s",sx); strcpy(p->data[ret].name,sx); printf("修改成功n"); flag=0; break; } case 2: { printf("请输入要修改的年龄:>"); int age=0; scanf("%d",&age); p->data[ret].age=age; printf("修改成功n"); flag=0; break; } case 3: { printf("请输入要修改的性别:>"); char sx[NAME_MAX]; scanf("%s",sx); strcpy(p->data[ret].sex,sx); printf("修改成功n"); flag=0; break; } case 4: { printf("请输入要修改的电话:>"); char sx[20]; scanf("%s",sx); strcpy(p->data[ret].tel,sx); printf("修改成功n"); flag=0; break; } case 5: { printf("请输入要修改的地址:>"); char sx[20]; scanf("%s",sx); strcpy(p->data[ret].ads,sx); printf("修改成功n"); flag=0; break; } case 0: { printf("返回n"); return; } default: { printf("输入错误,请重新输入n"); } } }while(flag); return; } //4.修改联系人 void mode(Contact*p) { printf("请输入要修改的联系人的姓名:>"); char name[NAME_MAX]; scanf("%s",name); int ret=find(name,p); if(ret==-1) { printf("该联系人不存在n"); return; } else { xiugai(ret,p); return; } } //6.打印通讯录 void show(Contact* p) { int i; printf("%-8st%-4st%-4st%-20st%-20stn","姓名","年龄","性别","电话","地址"); for(i=0;i sz;i++) { printf("%-8st%-4dt%-4st%-20st%-20stn", p->data[i].name,p->data[i].age,p->data[i].sex,p->data[i].tel,p->data[i].ads); } } //排序通讯录 int imp_char(const void*e1,const void*e2) { return strcmp((char*)e1,(char*)e2); } void sort(Contact*p) { qsort(p,p->sz,sizeof(p->data[0]),imp_char); printf("排序后的结果:>n"); show(p); } int main() { int input; Contact con; chushihua(&con); do { meun(); printf("请选择:—>"); scanf("%d",&input); switch(input) { case 1: Add(&con); //增加联系人 break; case 2: Del(&con); //删除联系人 break; case 3: newfind(&con); break; case 4: mode(&con); break; case 5: sort(&con); break; case 6: show(&con); break; case 0: printf("退出程序n"); break; } }while(input); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)