c语言 通讯录程序代码.docx
《c语言 通讯录程序代码.docx》由会员分享,可在线阅读,更多相关《c语言 通讯录程序代码.docx(19页珍藏版)》请在冰豆网上搜索。
c语言通讯录程序代码
#include
#include
#include
#include
#include
classstudent
{public:
charnum[20];
charname[20];
charaddress[40];
chartel_num[12];
charpost_code[7];
chare_mail[40];
};
classfunction:
publicstudent
{public:
voidadd();
voiddel();
voidfind_num();
voidfind_name();
voidlist_num();
voidlist_name();
voidcorrect();
voidformat();
voidshow();
};
//主函数
intmain()
{
functiona;
charselect1;
cout<intm=0;
do
{
cout<<"---------------------------------通讯录-----------------------------------"<cout<<"******************************************************************************"<cout<<"*1.通讯录编辑2.查询联系人3.按序排列4.格式化5.显示通讯录6.清屏7.退出*"<cout<<"******************************************************************************"<cout<<"请选择:
";
cin>>select1;
cout<<"------------------------------------------------------------------------------"<switch(select1)
{
case'1':
cout<<"1.添加2.删除3.修改4.返回主菜单"<charselect2;
cout<<"请选择:
"<cin>>select2;
switch(select2)
{
case'1':
a.add();
break;
case'2':
a.del();
break;
case'3':
a.correct();
break;
case'4':
break;
default:
cout<<"输入错误!
"<}
break;
case'2':
cout<<"1.姓名查找2.学号查找3.返回主菜单"<charselect3;
cout<<"请选择:
";
cin>>select3;
switch(select3)
{
case'1':
a.find_name();
break;
case'2':
a.find_num();
break;
case'3':
break;
default:
cout<<"输入错误!
"<}
break;
case'3':
cout<<"1.按学号排序2.按姓名排序3.返回主菜单"<cout<<"请选择:
";
charselect4;
cin>>select4;
switch(select4)
{
case'1':
a.list_num();
break;
case'2':
a.list_name();
break;
case'3':
break;
default:
cout<<"输入错误!
"<}
break;
case'4':
cout<<"请确认删除所有资料(Y/N)";
charselect5;
cin>>select5;
if(select5=='Y'||select5=='y')
a.format();
break;
case'5':
a.show();break;
case'6':
system("cls");break;//清屏函数
case'7':
m=1;cout<<"谢谢使用!
"<default:
cout<<"输入错误!
"<}
}while(m!
=1);
return0;
}
//添加联系人
voidfunction:
:
add()
{inti;
cout<<"输入添加个数(10个以内):
";
cin>>i;
studentstud1[40]={0};
ofstreamoutfile("学生通讯录.dat",ios:
:
app|ios:
:
binary);
if(!
outfile)
{
cerr<<"打开错误,程序将退出!
";
abort();
}
for(intj=0;j
{
cout<<"学号:
";
cin>>stud1[j].num;
cout<<"姓名:
";
cin>>stud1[j].name;
cout<<"地址:
";
cin>>stud1[j].address;
cout<<"电话号码:
";
cin>>stud1[j].tel_num;
cout<<"邮编:
";
cin>>stud1[j].post_code;
cout<<"电子邮件:
";
cin>>stud1[j].e_mail;
outfile.write((char*)&stud1[j],sizeof(stud1[j]));
}
outfile.close();
}
//删除联系人
voidfunction:
:
del()
{
studentstud2[40]={0};
charname[20]="\0";
cout<<"请输入要删除的学生的姓名:
";
cin>>name;
ifstreaminfile("学生通讯录.dat",ios:
:
binary);
if(!
infile)
{
cerr<<"打开错误,程序将退出!
";
abort();
}
intk=0;
while
(1)
{
infile.read((char*)&stud2[k],sizeof(stud2[k]));
if(infile.eof())break;
k++;
}
infile.close();
remove("学生通讯录.dat");
ofstreamoutfile("学生通讯录.dat",ios:
:
binary);
if(!
outfile)
{
cerr<<"打开错误,程序将退出!
";
abort();
}
inti=0;
while
(1)
{if(i>k-1)break;//每删除一项就会减少一组数据,所以是k-1
if(!
strcmp(stud2[i].name,name))
i=i+1;
if(i>k-1)break;
outfile.write((char*)&stud2[i],sizeof(stud2[i]));
i++;
}
outfile.close();
if(k-1==0)
remove("学生通讯录.dat");
}
//修改联系人
voidfunction:
:
correct()
{
studentstud3[40]={0};
ifstreaminfile("学生通讯录.dat",ios:
:
binary);
intk=0;
while
(1)
{if(infile.eof())break;
infile.read((char*)&stud3[k],sizeof(stud3[k]));
k++;
}
infile.close();
charname[20]="\0";
cout<<"请输入要修改学生的姓名:
";
cin>>name;
intx;
for(inti=0;i{
if(!
strcmp(stud3[i].name,name))
x=i;
}
charselect;
cout<<"1.修改姓名2.修改学号3.修改地址4.修改邮编5.修改电话号码6.修改E_MAIL"<cout<<"请选择:
";
cin>>select;
charname1[20]="\0";
charnum1[20]="\0";
charaddress1[40]="\0";
charpost_code1[7]="\0";
chartel_num1[20]="\0";
chare_mail1[40]="\0";
switch(select)
{
case'1':
cout<<"输入要修改的姓名:
";
cin>>name1;
strcpy(stud3[x].name,name1);
cout<<"修改成功"<break;
case'2':
cout<<"输入要修改的学号:
";
cin>>num1;
strcpy(stud3[x].num,num1);
cout<<"修改成功"<break;
case'3':
cout<<"输入要修改的地址:
";
cin>>address1;
strcpy(stud3[x].address,address1);
cout<<"修改成功"<break;
case'4':
cout<<"输入要修改的邮编:
";
cin>>post_code1;
strcpy(stud3[x].post_code,post_code1);
cout<<"修改成功"<break;
case'5':
cout<<"输入要修改的电话号码:
";
cin>>tel_num1;
strcpy(stud3[x].tel_num,tel_num1);
break;
case'6':
cout<<"输入要修改的E_MAIL";
cin>>e_mail1;
strcpy(stud3[x].e_mail,e_mail1);
cout<<"修改成功"<break;
default:
cout<<"输入错误!
";break;
}
remove("学生通讯录.dat");
ofstreamoutfile("学生通讯录.dat",ios:
:
binary);
intl=0;
while
(1)
{if(l>k-2)break;
outfile.write((char*)&stud3[l],sizeof(stud3[l]));
l++;
}
outfile.close();
}
//按学号查询
voidfunction:
:
find_num()
{
studentstud4[40]={0};
ifstreaminfile("学生通讯录.dat",ios:
:
binary);
if(infile.peek()==EOF)//发现如果不判断文件是否为空,本程序格式化过后查找出现未知数据。
{
cout<<"文件为空"<return;
}
cout<<"请输入学号:
";
charnum[20]="\0";
cin>>num;
cout<<"------------------------------------------------------------------------------"<inti=0;
while
(1)
{
infile.read((char*)&stud4[i],sizeof(stud4[i]));
if((!
strcmp(stud4[i].num,num))||infile.eof())break;
i++;
}
if(!
infile.eof())
{
cout<<"学号:
"<cout<<"姓名:
"<cout<<"地址:
"<cout<<"电话号码:
"<cout<<"邮编:
"<cout<<"E-MAIL:
"<}
else
cout<<"输入的学号查不到"<infile.close();
}
//按姓名查找
voidfunction:
:
find_name()
{
studentstud5[40]={0};
ifstreaminfile("学生通讯录.dat",ios:
:
binary);
if(infile.peek()==EOF)
{
cout<<"文件为空"<return;
}
cout<<"请输入姓名:
";
charname[20]="\0";
cin>>name;
cout<<"------------------------------------------------------------------------------"<for(inti=0;i<40;i++)
{
infile.read((char*)&stud5[i],sizeof(stud5[i]));
if(!
strcmp(stud5[i].name,name)||infile.eof())
break;
}
if(!
infile.eof())
{
cout<<"学号:
"<cout<<"姓名:
"<cout<<"地址:
"<cout<<"电话号码:
"<cout<<"邮编:
"<cout<<"E-MAIL:
"<}
else
cout<<"输入的姓名查不到"<infile.close();
}
//按学号排序
voidfunction:
:
list_num()
{
studentstud6[40]={0};
ifstreaminfile("学生通讯录.dat",ios:
:
binary);
intk=0;
while
(1)
{if(infile.eof())break;
infile.read((char*)&stud6[k],sizeof(stud6[k]));
k++;
}
charnum[20]="\0";
charname[20]="\0";
charaddress[40]="\0";
chartel_num[12]="\0";
charpost_code[7]="\0";
chare_mail[40]="\0";
for(inti=0;i{
for(intj=0;j{
if(strcmp(stud6[j].num,stud6[j+1].num)>0)
{
strcpy(num,stud6[j].num);
strcpy(stud6[j].num,stud6[j+1].num);
strcpy(stud6[j+1].num,num);
strcpy(name,stud6[j].name);
strcpy(stud6[j].name,stud6[j+1].name);
strcpy(stud6[j+1].name,name);
strcpy(address,stud6[j].address);
strcpy(stud6[j].address,stud6[j+1].address);
strcpy(stud6[j+1].address,address);
strcpy(tel_num,stud6[j].tel_num);
strcpy(stud6[j].tel_num,stud6[j+1].tel_num);
strcpy(stud6[j+1].tel_num,tel_num);
strcpy(post_code,stud6[j].post_code);
strcpy(stud6[j].post_code,stud6[j+1].post_code);
strcpy(stud6[j+1].post_code,post_code);
strcpy(e_mail,stud6[j].e_mail);
strcpy(stud6[j].e_mail,stud6[j+1].e_mail);
strcpy(stud6[j+1].e_mail,e_mail);
}
}
}
infile.close();
remove("学生通讯录.dat");
ofstreamoutfile("学生通讯录.dat",ios:
:
binary);
intl=0;
while
(1)
{if(l>k-2)break;
outfile.write((char*)&stud6[l+2],sizeof(stud6[l+2]));
l++;
}
outfile.close();
}
//按姓名排序
voidfunction:
:
list_name()
{
studentstud7[40]={0};
charnum[20]="\0";
charname[20]="\0";
charaddress[40]="\0";
chartel_num[20]="\0";
charpost_code[7]="\0";
chare_mail[40]="\0";
ifstreaminfile("学生通讯录.dat",ios:
:
binary);
intk=0;
while
(1)
{if(infile.eof())break;
else
infile.read((char*)&stud7[k],sizeof(stud7[k]));
k++;
}
infile.close();
for(inti=0;i{
for(intj=0;j{
if(strcmp(stud7[j].name,stud7[j+1].name)>0)
{
strcpy(num,stud7[j].num);
strcpy(stud7[j].num,stud7[j+1].num);
strcpy(stud7[j+1].num,num);
strcpy(name,stud7[j].name);
strcpy(stud7[j].name,stud7[j+1].name);
strcpy(stud7[j+1].name,name);
strcpy(address,stud7[j].address);
strcpy(stud7[j].address,stud7[j+1].address);
strcpy(stud7[j+1].address,address);
strcpy(tel_num,stud7[j].tel_num);
strcpy(stud7[j].tel_num,stud7[j+1].tel_num);
strcpy(stud7[j+1].tel_num,tel_num);
strcpy(post_code,stud7[j].post_code);
strcpy(stud7[j].post_code,stud7[j+1].post_code);
strcpy(stud7[j+1].post_code,post_code);
strcpy(e_mail,stud7[j].e_mail);
strcpy(stud7[j].e_mail,stud7[j+1].e_mail);
strcpy(stud7[j+1].e_mail,e_mail);
}
}
}
remove("学生通讯录.dat");
ofstreamoutfile("学生通讯录.dat",ios:
:
binary);
intl=0;
while
(1)
{if(l>k-2)break;
outfile.write((char*)&stud7[l+2],sizeof(stud7[l+2]));
l++;
}
outfile.close();
}
//格式化(删除文件)
voidfunction:
:
format()
{
remove("学生通讯录.dat");
}
//显示通讯录
voidfunction:
:
show()
{
studentstud8[40]={0};
ifstreaminfile("学生通讯录.dat",ios:
:
in|ios:
:
binary);
infile.seekg(0,ios:
:
beg);
if(infile.peek()==EOF)
{
cout<<"文件为空"<return;
}
inti=0;
while
(1)
{
infile.read((char*)&stud8[i],sizeof(stud8[i]));
if(infile.eof())
break;