文档库 最新最全的文档下载
当前位置:文档库 › C++课程设计代码(学生通讯录)

C++课程设计代码(学生通讯录)

#include
#include
#include
#include
using namespace std;
class student
{public:
char num[20];
char name[20];
char address[40];
char tel_num[12];
char post_code[7];
char e_mail[40];
};
class function:public student
{public:
void add();
void del();
void find_num();
void find_name();
void list_num();
void list_name();
void correct();
void format();
void show();
};
//主函数
int main()
{
function a;
char select1;
cout<int m=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.返回主菜单"<char select2;
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.返回主菜单"<char select3;
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<<"请选择:";
char select4;
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)";
char select5;
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);

return 0;
}
//添加联系人
void function::add()
{int i;
cout<<"输入添加个数(10个以内):";
cin>>i;
student stud1[40]={0};
ofstream outfile("学生通讯录.dat",ios::app|ios::binary);
if (! outfile)
{
cerr<<"打开错误,程序将退出!";
abort();
}
for(int j=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 ();
}
//删除联系人
void function::del()
{
student stud2[40]={0};
char name[20]="\0";
cout<<"请输入要删除的学生的姓名:";
cin>>name;
ifstream infile("学生通讯录.dat",ios::binary);
if (!infile)
{
cerr<<"打开错误,程序将退出!";
abort();
}
int k=0;
while(1)
{
infile.read((char*)&stud2[k],sizeof(stud2[k]));
if(infile.eof())break;
k++;
}
infile.close();
remove("学生通讯录.dat");
ofstream outfile("学生通讯录.dat",ios::binary);
if (!outfile)
{
cerr<<"打开错误,程序将退出!";
abort();
}
int i=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");

}

//修改联系人
void function::correct()
{
student stud3[40]={0};
ifstream infile("学生通讯录.dat",ios::binary);
int k=0;
while(1)
{if(infile.eof())break;
infile.read((char*)&stud3[k],sizeof(stud3[k]));
k++;
}
infile.close();
char name[20]="\0";
cout<<"请输入要修改学生的姓名:";
cin>>name;
int x;
for(int i=0;i{
if(!strcmp(stud3[i].name,name))
x=i;
}
char select;

cout<<"1.修改姓名 2.修改学号 3.修改地址 4.修改邮编 5.修改电话号码 6.修改E_MAIL"<cout<<"请选择:";
cin>>select;
char name1[20]="\0";
char num1[20]="\0";
char address1[40]="\0";
char post_code1[7]="\0";
char tel_num1[20]="\0";
char e_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");
ofstream outfile("学生通讯录.dat",ios::binary);
int l=0;
while(1)
{if(l>k-2)break;
outfile.write((char*)&stud3[l],sizeof(stud3[l]));
l++;
}
outfile.close();
}
//按学号查询
void function::find_num()
{
student stud4[40]={0};
ifstream infile("学生通讯录.dat",ios::binary);
if(infile.peek()==EOF) //

发现如果不判断文件是否为空,本程序格式化过后查找出现未知数据。
{
cout<<"文件为空"<return;
}
cout<<"请输入学号:";
char num[20]="\0";
cin>>num;
cout<<"------------------------------------------------------------------------------"<int i=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();

}
//按姓名查找
void function::find_name()
{
student stud5[40]={0};
ifstream infile("学生通讯录.dat",ios::binary);
if(infile.peek()==EOF)
{
cout<<"文件为空"<return;
}
cout<<"请输入姓名:";
char name[20]="\0";
cin>>name;
cout<<"------------------------------------------------------------------------------"<for(int i=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();

}
//按学号排序
void function::list_num()
{
student stud6[40]={0};
ifstream infile("学生通讯录.dat",ios::binary);
int k=0;
while(1)
{if(infile.eof())break;
infile.read((char*)&stud6[k],sizeof(stud6[k]));
k++;
}
char num[20]="\0";
char name[20]="\0";
char address[40]="\0";
char tel_num[12]="\0";
char post_code[7]="\0";
char e_mail[40]="\0";
for(int i=0;i{
for(int j=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");
ofstream outfile("学生通讯录.dat",ios::binary);
int l=0;
while(1)
{if(l>k-2)break;
outfile.write((char*)&stud6[l+2],sizeof(stud6[l+2]));
l++;
}
outfile.close();
}
//按姓名排序
void function::list_name()
{
student stud7[40]={0};
char num[20]="\0";
char name[20]="\0";
char address[40]="\0";
char tel_num[20]="\0";
char post_code[7]="\0";
char e_mail[40]="\0";

ifstream infile("学生通讯录.dat",ios::binary);
int k=0;
while(1)
{if(infile.eof())break;
else
infile.read((char*)&stud7[k],sizeof(stud7[k]));
k++;
}
infile.close();
for(int i=0;i{
for(int j=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");
ofstream outfile("学生通讯录.dat",ios::binary);
int l=0;
while(1)
{if(l>k-2) break;
outfile.write((char*)&stud7[l+2],sizeof(stud7[l+2]));
l++;
}
outfile.close();
}
//格式化(删除文件)
void function::format()
{
remove("学生通讯录.dat");
}
//显示通讯录
void function::show()
{
student stud8[40]={0};
ifstream infile("学生通讯录.dat",ios::in|ios::binary);
infile.seekg(0,ios::beg);
if(infile.peek()==EOF)
{
cout<<"文件为空"<return;
}
int i=0;
while(1)
{

infile.read((char*)&stud8[i],sizeof(stud8[i]));
if(infile.eof())
break;
else
cout<<"学号:"<cout<<"姓名:"<cout<<"地址:"<cout<<"电话号码:"<cout<<"邮编:"<cout<<"E-MAIL:"<i++;
}
infile.close();
}


相关文档
相关文档 最新文档