📄 通讯录程序.txt
字号:
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define M 50
struct person //定义数据结构
{
char name[10];
char phone[12];
char address[30];
}p[M];
FILE *fp; //调用函数
int n;
void add() //添加记录
{
person p[M];
char c;
cout<<"请输入添加信息:"<<endl;
do //当输入Y/y时执行本操作
{
cout<<"姓名 :";
cin>>p[n].name;
cout<<"电话 :";
cin>>p[n].phone;
cout<<"地址 :";
cin>>p[n].address;
n++; //记录数加1
cout<<"是否继续输入?(y继续,其他退出)"<<endl; //判断是否继续输入信息
cin>>c;
cout<<endl;
}while(c=='y'||c=='Y');
cout<<"成功输入!"<<endl;
}
void find() //查找记录
{
person p[M];
int i;
char s[12];
cout<<"输入要查找人姓名:"<<endl; //输出提示
cin>>s;
for(i=0;i<n;i++)
{
if(strcmp(s,p[i].name)==0) //比较是否相同
{
cout<<"找到!"<<endl;
cout<<" 姓名 电话 地址"<<endl; //找到则输出找到的信息
cout<<p[i].name<<"/t"<<p[i].phone <<"/t"<<p[i].address <<endl;
}
else
cout<<"没找到!"<<endl;
}
}
int dele() //删除记录
{
person p[M];
int i,j;
int m=0;
char s[12]; //要删除记录的姓名
cout<< "输入要删除人姓名:";
cin>>s;
for(i=0;i<n;i++) //是否存在该被删除人
{
if(strcmp(s,p[i].name)==0)
return i;
}
return i;
if(i>n-1) //如果i>n-1超过了数组的长度
cout<<"没有要删除的人!"<<endl;
else
{
cout<<" 姓名 电话 地址"<<endl; //输出找到的信息
cout<<p[i].name<<"/t"<<p[i].phone <<"/t"<<p[i].address <<endl;
cout<<"是否确认删除?"<<endl;
cin>>m;
if(m==1)
{
for(j=i+i;j<n;j++) //删除该记录,实际后续记录前移
{
strcpy(p[j-1].name,p[j].name); //将后一条记录的姓名拷贝到前一条
strcpy(p[j-1].phone,p[j].phone); //将后一条记录的电话拷贝到前一条
strcpy(p[j-1].address,p[j].address); //将后一条记录的地址拷贝到前一条
}
n--; //记录数减1
}
}
return n; //返回记录数
}
void list() //显示记录
{
person p[M];
int i;
cout<<"显示所有记录信息:"<<endl; //输出提示
cout<<"姓名 电话 地址"<<endl;
for(i=0;i<n;i++) //输出所有记录信息
{
cout<<p[i].name<<"/t"<<p[i].phone<<"/t"<<p[i].address<<endl;
}
}
void load(char filename[]) //定义读取文件中数据的函数
{
int n=0; //学生个数n
if((fp=fopen(filename,"rb"))==NULL) //判断文件是否存在
{
cout<<"文件不存在!"<<endl;
return; //文件不存在,返回主函数
}
do //读取数据
{
if(fread(&p[n],sizeof(struct person),1,fp)!=1) //判断读取是否成功
{
if(feof(fp)) return; //若读取结束,返回主函数
cout<<"读取出错!"<<endl; //读取出错
}
n++; //n学生人数加1
}while(1);
fclose(fp); //关闭文件
}
void save(char filename[]) //保存数据
{
int i;
if((fp=fopen(filename,"wb"))==NULL) //判断文件是否存在
{
cout<<"文件不存在!"<<endl;
return;
}
else //保存数据
{
for(i=0;i<n;i++)
if(fwrite(&p[i],sizeof(struct person),1,fp)!=1) //判断数据保存是否成功
cout<<"读取出错!"<<endl;
fclose(fp); //关闭文件
}
}
void newfile() //新建文件
{
char filename[15];
cout<<"请输入文件名:";
cin>>filename;
fp=fopen(filename,"wb+");
cout<<"成功新建文件!"<<endl;
fclose(fp); //关闭文件
}
void main()
{
int c;
cout<<" ********************************************** "<<endl;
cout<<" * 欢迎进入通讯录程序 * "<<endl;
cout<<" * * "<<endl;
cout<<" * 作者:卢、郑 软件6班 04/12/28 * "<<endl;
cout<<" ************************************************************"<<endl;
while(c<0||c>5){
cout<<" *****************************菜单***************************"<<endl;
cout<<" * *"<<endl;
cout<<" * **** 1:新建 **** *"<<endl;
cout<<" * *"<<endl;
cout<<" * **** 2:添加 **** *"<<endl;
cout<<" * *"<<endl;
cout<<" * **** 3:查找 **** *"<<endl;
cout<<" * *"<<endl;
cout<<" * **** 4:删除 **** *"<<endl;
cout<<" * *"<<endl;
cout<<" * **** 5:显示 **** *"<<endl;
cout<<" * *"<<endl;
cout<<" * **** 0:退出 **** *"<<endl;
cout<<" * *"<<endl;
cout<<" ************************************************************"<<endl;
cout<<"请选择:";
cin>>c;
switch(c)
{
case '1':
newfile();
break;
case '2':
add();
break;
case '3':
find();
break;
case '4':
dele();
break;
case '5':
list();
break;
case '0':
exit(0);
}
}return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -