用C语言编写一个电话簿管理系统
#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;
}