用C语言编写一个电话簿管理系统

时间:2025-02-18 07:36:03
#include<> #include<> #include<> #include<> struct person { char clas[10]; //班级 char num[20]; //手机号 char name[20]; //姓名 long int id[]; //学号 char sex[10]; //性别 char QQ[20]; //QQ号 char email[20]; //邮箱 char address[50]; //地址 }; int menu() { int choice; system("cls"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 欢迎使用通讯录管理系统 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 1-新增联系人 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 2-删除联系人 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 3-修改联系人 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 4-按名字查询联系人 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 5-按号码查询联系人 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 6-按姓名显示 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 7-按号码显示 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 8-显示全部联系人 |\n"); printf("\t\t\t\t---------------------------------------------------------\n"); printf("\t\t\t\t| 9-保存文件 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t| 0-退出程序 |\n"); printf("\t\t\t\t----------------------------------------------------------\n"); printf("\t\t\t\t请选择功能:"); scanf("%d",&choice); while(choice>9||choice<0)//判断是否输入正确 { printf("请重新选择:"); scanf("%d",&choice); } return choice; } int add_person(struct person arr[],int n) //添加联系人函数 { system("cls"); //清屏 printf("请输入联系人姓名:"); scanf("%s",arr[n].name); printf("请输入联系人班级:"); scanf("%s",arr[n].clas); printf("请输入联系人手机号:"); scanf("%s",arr[n].num); printf("请输入联系人学号:"); scanf("%s",arr[n].id); printf("请输入联系人性别:"); scanf("%s",arr[n].sex); printf("请输入联系人QQ号:"); scanf("%s",arr[n].QQ); printf("请输入联系人邮箱:"); scanf("%s",arr[n].email); printf("请输入联系人地址:"); scanf("%s",arr[n].address); printf("添加成功!\n"); system("pause"); //暂停界面 return n+1; } void print_person(struct person arr[],int n) { int i; printf("%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n","姓名","班级","手机号","学号","性别","QQ","邮箱","地址"); for(i=0;i<n;i++) { printf("%-15s",arr[i].name); printf("%-15s",arr[i].clas); printf("%-15s",arr[i].num); printf("%-15s",arr[i].id); printf("%-15s",arr[i].sex); printf("%-15s",arr[i].QQ); printf("%-15s",arr[i].email); printf("%-15s",arr[i].address); } } int delete_person(struct person arr[],int n) { int i,j; char temp[20]; system("cls"); printf("请输入要删除的联系人:"); scanf("%s",temp); for(i=0;i<n;i++) { if(!strcmp(temp,arr[i].name)) break; } if(i==n) { printf("没有该联系人!"); system("pause"); return n; } print_person(&arr[i],1); printf("是否删除'Y'or'N':"); scanf("%s",&temp); if(strcmp(temp,"y")==0||strcmp(temp,"Y")) { for(j=i;j<n;j++) { arr[j]=arr[j+1]; } printf("删除成功!\n"); } system("pause"); return n-1; printf("取消删除\n"); system("pause"); return n; } void modify_person(struct person arr[],int n) { int i; char temp[20]; struct person arr0; //临时储存 system("cls"); printf("请输入要修改的联系人:"); scanf("%s",temp); for(i=0;i<n;i++) { if(strcmp(temp,arr[i].name)==0) break; } if(i==n) { printf("无该联系人!"); system("pause"); return ; } print_person(&arr[i],1); printf("请输入联系人班级:"); scanf("%s",arr0.clas); printf("请输入联系人手机号:"); scanf("%s",arr0.num); printf("请输入联系人学号:"); scanf("%s",arr0.id); printf("请输入联系人性别:"); scanf("%s",arr0.sex); printf("请输入联系人QQ号:"); scanf("%s",arr0.QQ); printf("请输入联系人邮箱:"); scanf("%s",arr0.email); printf("请输入联系人地址:"); scanf("%s",arr0.address); printf("是否确认修改Y/N?: "); scanf("%s",temp); if(strcmp(temp,"y")==0||strcmp(temp,"Y")==0) { strcpy(arr0.name,arr[i].name); arr[i]=arr0; printf("修改成功!\n"); system("pause"); return ; } else { printf("已取消修改!"); system("pause"); return ; } } void search_person_name(struct person arr[],int n) { int i; char temp[20]; system ("cls"); printf("请输入要查询的联系人:"); scanf("%s",temp); for(i=0;i<n;i++) { if(strcmp(arr[i].name,temp)==0) { break; } } if(i==n) { printf("未查找到该联系人!\n"); system("pause"); return ; } print_person(&arr[i],1); system("pause"); return; } void search_person_num(struct person arr[],int n) { int i; char temp[20]; system("cls"); printf("请输入要查询的电话号码:"); scanf("%s",temp); for(i=0;i<n;i++) { if(strcmp(arr[i].num,temp)==0) break; } if(i==n) { printf("未查找到该联系人!\n"); system("pause"); return; } print_person(&arr[i],1); system("pause"); } void sort_person_name(struct person arr[],int n) { int i,j; struct person temp; system("cls"); for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(strcmp(arr[i].name,arr[j].name)<0)//小在前 { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } return; } void sort_person_num(struct person arr[],int n) { int i,j; struct person temp; system("cls"); for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(strcmp(arr[i].num,arr[j].num)<0); { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } return; } void save_file(struct person arr[],int n) { int i; FILE *fp; fp=fopen("","w+"); if(fp==NULL) { return; } for(i=0;i<n;i++)//依次写入到文件 { fwrite(&arr[i],sizeof(struct person),1,fp); } fclose(fp); } int read_file(struct person arr[]) { int i=0; FILE* fp; fp=fopen("","r+"); if(fp==NULL) { return 0; } while(fread(&arr[i++],sizeof(struct person),1,fp)); fclose(fp); if(i>=1) { return i-1; } return 0; } int main() { system("color 1E"); SetConsoleTitle("龚靖文琪的通讯录"); int choice; int num=0; //记录结构体数组长度 struct person per[100]; //定义结构体数组 num=read_file(per); do { choice=menu(); switch(choice) { case 1: num=add_person(per,num); //添加 num=n break; case 2: delete_person(per,num); //删除 break; case 3: modify_person(per,num); //修改 break; case 4: search_person_name(per,num); //按名字查找 break; case 5: search_person_num(per,num); //按号码查找 break; case 6: sort_person_name(per,num); //对名字排序 print_person(per,num); system("pause"); break; case 7: sort_person_num(per,num); //对号码排序 print_person(per,num); system("pause"); break; case 8: system("cls"); print_person(per,num); system("pause"); break; case 9: system("cls"); save_file(per,num); printf("保存成功!"); system("pause"); break; case 0: printf("\t谢谢使用!\n"); exit(0); } } while(choice!=0); return 0; }

相关文章