运行结果:
我的代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
struct people
{
char name[20];
char phone[11];
char email[30];
char company[30];
} x[100];
/*全局变量*/
int i = 0;
int n = 0;
int count = 0;
int m = 0;
/*函数声明*/
void ReadFromFlie();
void WriteToFile();
void Display();
void InputRecord();
void menu();
void asdf();
void del();
void modify();
/*检测文件是否存在,若不存在则创建*/
void createfile()
{
FILE *fph;
if(access("person.txt",F_OK)==-1)
{
if((fph=fopen("person.txt","wb"))==NULL)
{
printf("创建文件失败");
}
fclose(fph);
}
return;
}
//读取文件
void ReadFromFile()
{
int i = 0;
FILE *fp = NULL;
if((fp = fopen("person.txt","r+")) == NULL)
{
printf("读取文件失败!\n");
return;
}
while(!feof(fp))
{
fscanf(fp,"%s %s %s %s",x[i].name,x[i].phone,x[i].email,x[i].company);
i++;
}
n = i-1;
fclose(fp);
}
//写入文件保存
void WriteToFile()
{
int i;
FILE *fp;
fp = fopen("person.txt", "w");
for (i = 0; i < n; i++)
{
fprintf(fp,"%s %s %s %s",x[i].name,x[i].phone,x[i].email,x[i].company);
}
printf("保存成功!\n");
fclose(fp);
system("pause");
}
//显示全部信息
void Display()
{
system("cls");
int i;
printf("\n\t 通讯录 \n\n");
printf("姓名 手机号 电子邮件 公司\n");
for(i = 0; i < n; i++)
{
printf("%s , %s , %s , %s",x[i].name,x[i].phone,x[i].email,x[i].company);
printf("\n");
}
system("pause");
}
//添加信息
void InputRecord()
{
int i = n,j,flag;
printf("要添加的联系人个数:");
scanf("%d",&m);
if(m > 0)
{
do
{
flag = 1;
while (flag)
{
flag = 0;
printf("输入联系人姓名:\n");
scanf("%s", x[i].name);
for (j = 0; j < i; j++)
{
if (strcmp(x[i].name, x[j].name) == 0)
{
printf("该联系人已经存在了!\n");
flag = 1;
}
}
}
printf("输入联系人电话:\n");
scanf("%s", x[i].phone);
printf("输入联系人电子邮件:\n");
scanf("%s", x[i].email);
printf("输入联系人公司:\n");
scanf("%s",x[i].company);
if (flag == 0)
{
i ++;
}
}
while (i < n+m);
}
n += m;
printf("联系人添加成功\n");
}
//菜单
void menu()
{
printf("\n----------------通讯录-----------------\n");
printf("\n\t 1.显示所有联系人\n");
printf("\n\t 2.添加新的联系人\n");
printf("\n\t 3.修改联系人信息\n");
printf("\n\t 4.删除联系人信息\n");
printf("\n\t 5.按姓名查找联系人\n");
printf("\n\t 0.退出系统\n");
printf("\n----------------通讯录-----------------\n");
}
//查询信息
void asdf()
{
int i, flag = 0;
char s1[20];
printf("输入需要查询的姓名:\n");
scanf("%s", s1);
for (i = 0; i<n; i++)
if (strcmp(s1,x[i].name) == 0)
{
flag = 1;
printf("姓名 手机号 电子邮件 公司\n");
printf("%s %s %s %s\n",x[i].name,x[i].phone,x[i].email,x[i].company);
}
if (flag == 0)
printf("该联系人不存在\n");
}
//删除信息
void del()
{
int i, j, flag = 0;
char s1[20];
printf("需要删除联系人的姓名:\n");
scanf("%s", s1);
for (i = 0; i < n; i++)
{
if (strcmp(x[i].name, s1) == 0)
{
flag = 1;
for (j = i; j < n - 1; j++)
{
x[j] = x[j + 1];
}
}
}
if (flag == 0)
{
printf("该联系人不存在!!!\n");
}
if (flag == 1)
{
printf("删除成功!!!");
n--;
}
}
//修改信息
void modify()
{
int i, item, name = -1;
char s1[20];
printf("需要修改联系人的姓名:\n");
scanf("%s", s1);
for (i = 0; i < n; i++)
{
if (strcmp(x[i].name, s1) == 0)
{
name = i;
printf("1.修改电话号码\n");
printf("2.修改电子邮件\n");
printf("3.修改公司\n");
printf("4.退出该菜单\n");
while (1)
{
printf("请选择要修改的选项:");
scanf("%d", &item);
switch (item)
{
case 1:
printf("请输入新的手机号码:\n");
scanf("%s",x[name].phone);
break;
case 2:
printf("请输入新的电子邮件:\n");
scanf("%s", x[name].email);
break;
case 3:
printf("请输入新的公司:\n");
scanf("%s",x[name].company);
case 4:
return;
default:
printf("请选择1-3\n");
}
}
printf("修改完成!\n");
}
else
{
printf("找不到这个人!");
}
}
}
//主函数
int main(void)
{
createfile();
while(1)
{
menu();
printf("输入要选择的选项:");
scanf("%d", &count);
switch (count)
{
case 1:
ReadFromFile();
Display();
break;
case 2:
ReadFromFile();
InputRecord();
WriteToFile();
break;
case 3:
ReadFromFile();
modify();
WriteToFile();
break;
case 4:
ReadFromFile();
del();
WriteToFile();
break;
case 5:
ReadFromFile();
asdf();
break;
case 0:
printf("\n欢迎下次使用");
exit(0);
default:
printf("请输入0-5之间的选项\n");
}
}
return 0;
}