问题及代码:
/******************************************************
*版权所有(c)2015.烟台大学计算机与控制工程学院
*
*文件名称:main.cpp
*文件标示:无
*内容摘要:该代码用于满足后缀要求的第一个文件
*其他说明:无
*当前版本:V1.0
*作者:刘慧超
*完成日期:2015.7.17
*
*修改记录:
*修改日期:
*版本号:V1.0
*修改人:
*修改内容:
*********************************************************/
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int N;
class Netbook
{
private:
int num;
string name;
int age;
char sex;
string birth;
string add;
string phone;
string email;
public:
void input ();
void increas ();
void decreas();
void lookup ();
};
/********************************
功能描述:学生信息输入
输入参数:无
输出参数:无
返回值:无
其他说明:无
*********************************/
void Netbook::input()
{
Netbook *t;
t=new Netbook[N];
int i=0;
for(; i<N; i++)
{
cout<<"请输入第"<<i+1<<"名学生信息:"<<endl;
cout<<" num:";
cin>>t[i].num;
cout<<" name:";
cin>>t[i].name;
cout<<" age:";
cin>>t[i].age;
cout<<" sex:";
cin>>t[i].sex;
cout<<" birth:";
cin>>t[i].birth;
cout<<" add:";
cin>>t[i].add;
cout<<" phone:";
cin>>t[i].phone;
cout<<" email:";
cin>>t[i].email;
}
ofstream outfile("Netbook.txt",ios::out);
for(i=0; i<N; i++)
{
outfile<<t[i].num<<" "<<t[i].name<<" "<<t[i].age<<" "<<t[i].sex<<" ";
outfile<<t[i].birth<<" "<<t[i].add<<" "<<t[i].phone<<" "<<t[i].email<<endl;
}
outfile.close();
delete []t;
cout<<"通讯录建立完毕!"<<endl;
}
/********************************
功能描述:增加学生信息
输入参数:无
输出参数:无
返回值:无
其他说明:无
*********************************/
void Netbook::increas()
{
Netbook *q;
int i=0,t;
cout<<"请输入要增加的学生通讯录人数:";
cin>>t;
N+=t;
q=new Netbook[t];
cout<<"请输入要增加的学生信息:"<<endl;
for(; i<t; i++)
{
cout<<" num:";
cin>>q[i].num;
cout<<" name:";
cin>>q[i].name;
cout<<" age:";
cin>>q[i].age;
cout<<" sex:";
cin>>q[i].sex;
cout<<" birth:";
cin>>q[i].birth;
cout<<" add:";
cin>>q[i].add;
cout<<" phone:";
cin>>q[i].phone;
cout<<" email:";
cin>>q[i].email;
}
ofstream outfile("Netbook.txt",ios::app);
for(i=0; i<t; i++)
{
outfile<<q[i].num<<" "<<q[i].name<<" "<<q[i].age<<" "<<q[i].sex;
outfile<<" "<<q[i].birth<<" "<<q[i].add<<" "<<q[i].phone<<" "<<q[i].email<<endl;
}
outfile.close();
delete []q;
cout<<"录入完成,现通讯录总人数为:"<<N<<"人。"<<endl;
}
/********************************
功能描述:学生信息删除
输入参数:无
输出参数:无
返回值:无
其他说明:无
*********************************/
void Netbook::decreas()
{
cout<<"请输入要删除的学生的学号:";
int n,i=0,j=0;
Netbook *q,*p;
p=new Netbook[N];
ifstream infile("Netbook.txt",ios::in);
for(; i<N; i++)
{
infile>>p[i].num>>p[i].name>>p[i].age>>p[i].sex;
infile>>p[i].birth>>p[i].add>>p[i].phone>>p[i].email;
}
infile.close();
cin>>n;
i=0;
while(i<N)
{
if(p[i].num==n)
{
N--;
q=new Netbook[N];
for(; j<i; j++)
{
q[j]=p[j];
}
for(j=i; j<N; j++,i++)
q[j]=p[i++];
cout<<"学生通讯信息删除完毕!剩余人数为:"<<N<<"人。"<<endl;
ofstream outfile("Netbook.txt",ios::out);
for(i=0; i<N; i++)
{
outfile<<q[i].num<<" "<<q[i].name<<" "<<q[i].age<<" "<<q[i].sex;
outfile<<" "<<q[i].birth<<" "<<q[i].add<<" "<<q[i].phone<<" "<<q[i].email<<endl;
}
outfile.close();
delete []q;
delete []p;
break;
}
i++;
}
if(j==0)
cout<<"通讯录中无该学生信息!"<<endl;
}
/********************************
功能描述:学生信息查找
输入参数:无
输出参数:无
返回值:无
其他说明:无
*********************************/
void Netbook::lookup()
{
cout<<"请输入要查询的学生的学号:";
Netbook *p;
int n,i=0,j=0;
cin>>n;
p=new Netbook[N];
ifstream infile("Netbook.txt",ios::in);
for(; i<N; i++)
{
infile>>p[i].num>>p[i].name>>p[i].age>>p[i].sex;
infile>>p[i].birth>>p[i].add>>p[i].phone>>p[i].email;
}
infile.close();
while(j<N)
{
if(p[j].num==n)
{
i=0;
cout<<"该学生的信息为:"<<endl;
cout<<" num:"<<p[j].num<<endl;
cout<<" name:"<<p[j].name<<endl;
cout<<" age:"<<p[j].age<<endl;
cout<<" sex:"<<p[j].sex<<endl;
cout<<" birth:"<<p[j].birth<<endl;
cout<<" add:"<<p[j].add<<endl;
cout<<" phone:"<<p[j].phone<<endl;
cout<<" email:"<<p[j].email<<endl;
break;
}
j++;
}
delete []p;
if(i!=0)
cout<<"无该学生信息!"<<endl;
}
/********************************
功能描述:菜单输出
输入参数:无
输出参数:无
返回值:无
其他说明:无
*********************************/
void output()
{
cout<<" 1.增加学生通讯录。"<<endl;
cout<<" 2.删除学生通讯录。"<<endl;
cout<<" 3.查找学生通讯录。"<<endl;
cout<<" 4.退出。"<<endl;
cout<<"请输入您要进行的操作:";
}
/********************************
功能描述:通讯录操作
输入参数:无
输出参数:无
返回值:无
其他说明:无
*********************************/
void menu()
{
Netbook stu;
int t;
cout<<" 1.增加学生通讯录。"<<endl;
cout<<" 2.删除学生通讯录。"<<endl;
cout<<" 3.查找学生通讯录。"<<endl;
cout<<" 4.退出。"<<endl;
cout<<"请输入您要进行的操作:";
while(cin>>t&&t!=4)
{
if(t>4||t<1)
{
cout<<"请不要瞎按!;"<<endl;
output();
}
else
{
switch(t)
{
case 1:
stu.increas();
output();
continue;
case 2:
stu.decreas();
output();
continue;
case 3:
stu.lookup();
output();
continue;
}
}
}
}
int main()
{
Netbook Stu;
cout<<"现通讯录为空,先建立通讯录,请输入人数:";
cin>>N;
Stu.input();
menu();
return 0;
}
运行结果: