实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
<pre name="code" class="cpp">#include <stdio.h>
#include <iomanip>
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
#define MAXSIZE 15 //输入姓名、性别、电话、地址时,最多只能输入15个字符,否则会影响版面
#define MAXNUM 10
struct info
{
char name[MAXSIZE];
char sex[MAXSIZE];
char age[MAXSIZE];//int age;
char tel[MAXSIZE];
char address[MAXSIZE];
bool bo;
}a[MAXNUM];
void addinfo(struct info a[])
{
int i=0;
while(i<MAXNUM)
{
if(!a[i].bo)
{
//FILE *pfile=fopen("Data.txt","a+");
printf("请输入姓名:");
cin>>a[i].name;
printf("\n");
printf("请输入性别:");
cin>>a[i].sex;
printf("\n");
printf("请输入年龄:");
cin>>a[i].age;
printf("\n");
printf("请输入联系电话:");
cin>>a[i].tel;
printf("\n");
printf("请输入地址:");
cin>>a[i].address;
printf("\n");
a[i].bo=true;
cout<<"添加成功!";
break;
}
i++;
}
}
void del(struct info a[])
{
char name[MAXSIZE];
printf("请输入要删除的联系人姓名:");
scanf("%s",&name);
int i=0;
while(i<MAXNUM)
{
if(strcmp(name,a[i].name)==0)
{
a[i].bo=false;
cout<<"删除成功!";
}
i++;
}
}
void find(struct info a[])
{
char name[MAXSIZE];
printf("请输入要查找的联系人姓名:");
scanf("%s",&name);
int i=0;
cout<<setiosflags(ios_base::left)<<setw(10)<<"姓名:\t"<<setw(10)<<"性别:\t"<<setw(10)<<"年龄:\t"<<setw(20)<<"电话:\t"<<setw(25)<<"地址:"<<endl;
while(i<MAXNUM)
{
if(strcmp(name,a[i].name)==0)
{
cout<<setiosflags(ios_base::left)<<setw(10)<<a[i].name<<setw(10)<<a[i].sex<<setw(10)<<a[i].age<<setw(20)<<
a[i].tel<<setw(25)<<a[i].address<<endl;
}
i++;
}
}
void change(struct info a[])
{
char name[MAXSIZE];
printf("请输入要修改的联系人姓名:");
scanf("%s",&name);
int i=0;
while(i<MAXNUM)
{
if(strcmp(name,a[i].name)==0)
{
printf("请输入姓名:");
cin>>a[i].name;
printf("\n");
printf("请输入性别:");
cin>>a[i].sex;
printf("\n");
printf("请输入年龄:");
cin>>a[i].age;
printf("\n");
printf("请输入联系电话:");
cin>>a[i].tel;
printf("\n");
printf("请输入地址:");
cin>>a[i].address;
printf("\n");
cout<<"添加成功!";
break;
}
i++;
}
}
void showall(struct info a[])
{
int i=0;
cout<<setiosflags(ios_base::left)<<setw(10)<<"姓名:"<<setw(10)<<"性别:"<<setw(10)<<"年龄:"<<setw(20)<<"电话:"<<setw(25)<<"地址:"<<endl;
while(i<MAXNUM)
{
if(a[i].bo)
{
cout<<setiosflags(ios_base::left)<<setw(10)<<a[i].name<<setw(10)<<a[i].sex<<setw(10)<<a[i].age
<<setw(20)<<a[i].tel<<setw(25)<<a[i].address<<endl;
}
i++;
}
}
void cleanall(struct info a[])
{
int i=0;
while(i<MAXNUM)
{
if(a[i].bo)
{
a[i].bo=false;
}
i++;
}
cout<<"清空完成!";
}
void interface()
{
printf("\t\t\t 欢迎使用本通讯录系统\n");
printf("\t\t\t***************************\n");
printf("\t\t\t* 1、添加联系人信息 *\n");
printf("\t\t\t* 2、删除指定联系人信息 *\n");
printf("\t\t\t* 3、修改指定联系人信息 *\n");
printf("\t\t\t* 4、显示所有联系人信息 *\n");
printf("\t\t\t* 5、清空所有联系人 *\n");
printf("\t\t\t* 6、退出 *\n");
printf("\t\t\t***************************\n");
printf("\t\t请选择:");
}
void ReadinMem()
{
FILE *pfile;
if((pfile=fopen("Data.txt","r"))==NULL)
{
//free (pfile);
//fclose(pfile);
return;
}
//pfile=fopen("Data.txt","r"); //上面if语句已经打开文件,不必重复打开
for (int i=0;i<MAXNUM;i++)
{
if (EOF!=(fscanf(pfile,"%s\t%s\t%s\t%s\t%s\t",&a[i].name,&a[i].sex,&a[i].age,&a[i].tel,&a[i].address)))
{
a[i].bo=true;
}
}
fclose(pfile);
}
void save()
{
FILE *pfile;
pfile=fopen("Data.txt","w");
for (int i=0;i<MAXNUM;i++)
{
if (a[i].bo&&(EOF!=(fprintf(pfile,"%10s%10s%10s%20s%25s",a[i].name,a[i].sex,a[i].age,a[i].tel,a[i].address))))
{
fprintf(pfile,"\n");
}
}
fclose(pfile);
}
int main()
{
ReadinMem();
while(true)
{
int x=0;
interface();
cin>>x;
switch(x)
{
case 1:addinfo(a);break;
case 2:del(a);break;
case 3:change(a);break;
case 4:showall(a);break;
case 5:cleanall(a);break;
case 6:save();goto lable;break;
default:printf("输入错误!");break;
}
system("pause");
system("cls");
}
lable:
return 0;
}