求解一道C++程序题目
要求一个职工信息管理系统。系统功能如下:1,创建存储该单位职工信息的存储系统,在第一次输入基本信息时,创建文件将职工信息写入文件。2,增加职工信息,增加新职工时输入新职工...
要求一个职工信息管理系统。
系统功能如下:
1,创建存储该单位职工信息的存储系统,在第一次输入基本信息时,创建文件将职工信息写入文件。
2,增加职工信息,增加新职工时输入新职工的基本信息并加入文件。
3,删除某职工的基本信息,同时修改文件中相应的内容。
4,修改某职工的某些信息,如加工资,获新学位,晋升职称。
5,可以输出符合某种特征的职工信息列表,包括:
a)全体职工信息;
b)某职称的职工全部信息;
c)出生日期在某一范围的全部职工信息;
d)某一部门全部职工信息。
问题补充:对了。。。该系统在内存中存储了某个单位所有职工的基本信息,对每一个职工存储:职工编号,姓名,性别,出生年月,部门,职称,最后学历,工工资和婚否等信息 展开
系统功能如下:
1,创建存储该单位职工信息的存储系统,在第一次输入基本信息时,创建文件将职工信息写入文件。
2,增加职工信息,增加新职工时输入新职工的基本信息并加入文件。
3,删除某职工的基本信息,同时修改文件中相应的内容。
4,修改某职工的某些信息,如加工资,获新学位,晋升职称。
5,可以输出符合某种特征的职工信息列表,包括:
a)全体职工信息;
b)某职称的职工全部信息;
c)出生日期在某一范围的全部职工信息;
d)某一部门全部职工信息。
问题补充:对了。。。该系统在内存中存储了某个单位所有职工的基本信息,对每一个职工存储:职工编号,姓名,性别,出生年月,部门,职称,最后学历,工工资和婚否等信息 展开
2个回答
展开全部
#include<iostream>
#include <string>
#include<fstream>
using namespace std;
//职工信息
class worker
{public:
// worker();
void get_value(){cin>>num>>name;}
void display(){cout<<num<<" "<<name<<" ";
}
int get1(){return num;}
string get2(){return name;}
private:
string name;
int num;
};
class poster:public worker
{public:
//poster(string n,int a,int nu,char s,float w):worker(n,a),num(nu),sex(s),wage(w){}
void get_value1()
{get_value();
cin>>age>>sex>>wage;
}
void display1()
{display();
cout<<age<<" "<<sex<<" "<<wage<<endl;
}
int get3(){return age;}
char get4(){return sex;}
int get5(){return wage;}
// friend ostream& operator<<(ostream&,poster&)
private:
int age;
char sex;
float wage;
}a[50];
//重载函数
ostream&operator<<(ostream&output,poster&p)
{output<<p.get1()<<" "<<p.get2()<<" "<<p.get3()<<" "<<p.get4()<<" "<<p.get5()<<endl;
return output;
}
int m,n;
//菜单界面
void show5()
{cout<<"***************************************"<<endl<<endl;
cout<<" 职工信息管理系统 "<<endl;
cout<<" 南京信息职业技术学院欢迎你 "<<endl<<endl;
cout<<"***************************************"<<endl;}
void show()
{cout<<"1 设置职工最大数"<<'\n'<<"2 从文件读记录"<<endl<<"3 增加职工记录"
<<endl<<"4 删除职工记录"<<endl<<"5 设置信息表"<<endl<<"6 显示原始记录"
<<endl<<"7 显示简表记录"<<endl<<"8 显示工资平均值 "<<endl<<"9 保存记录"<<endl<<
"10 结束运行 "<<endl;
cout<<"请输入1-10中的一个数:";
}
//1 设置最大数
int t;
void set()
{cout<<"请设置你想设置的最大数:"<<endl;
cin>>t;
cout<<"你设置的最大数为"<<t<<endl;
}
//2 从文件读入
char*filename;
void display_file(char*filename)
{//ifstream infile1("qq.dat");
/*ifstream infile(filename,ios::in);
cout<<"输入文件名:"<<endl;
cin>>filename;
//if(infile==NULL)cout<<"sorry!"<<endl;
if (!infile)
{cerr<<"open error!"<<endl;
exit(1);}
cout<<"成功进入!"<<endl;
char ch;
while(infile.get(ch))
cout.put(ch);
cout<<endl;
infile.close();*/
ifstream infile(filename,ios::in);
if(!infile){cerr<<"open error!"<<endl;
exit(1);}
char ch;
while(infile.get(ch))
cout.put(ch);
cout<<endl;
infile.close();
//ofstream outfile;
//string filename;
//cout<<"enter the name:"<<endl;
//cin>>filename;
//if(outfile1==outfile)
//outfile.open(filename.c_str());
//for(int i=0;i<3;i++)
//cout<<a[i];
//cout<<"it is ok!";
}
//3 增加职工信息
void add()
{ofstream outfile("xx",ios::app);
if(!outfile)
{cerr<<"open xx.dat error!"<<endl;
exit(1);}
cout<<"请输入所需增加的人的个数:"<<endl;
//int m;
cin>>m;
cout<<"请输入职工的序号,姓名,年龄,性别,工资等信息"<<endl;
for(int i=0;i<m;i++)
{a[i].get_value1();
//a[i].display1();
outfile<<a[i]<<" ";}
cout<<endl;
outfile.close();
}
//4 删除记录
/*void remove()
{ofstream outfile("xx.dat")
outfile
{cout<<"请输入想要删除人的序号:"<<endl;
int num;
cin>>num;
fstream iofile("xx",ios::out);
if(! iofile)
{cerr<<"open error!"<<endl;
exit(1);}
//iofile.seekg(0,ios::beg);
for(int i=0;i<t;i++)
{if(num==a[i].get1())
a[i].get1()==0;
a[i].display1();}
iofile.close();
}*/
//5 生成信息简表
void protect()
{ifstream infile("xx1",ios::in);
if(!infile)
{cerr<<"open xx1.dat error!"<<endl;
exit(1);}
int i;
cout<<a[i].get1()<<" "<<a[i].get2()<<" ";
infile.close();
}
//6 显示原始记录
void show2()
{ifstream infile("xx",ios::in);
if(!infile)
{cerr<<"open xx.dat error!"<<endl;
exit(1);}
cout<<"enter!"<<endl;
/* for(int i=0;i<6;i++)
{a[i].display1();
cout<<endl;}*/
char ch;
while(infile.get(ch))
cout.put(ch);
infile.close();
}
//7 显示信息简表
void show1()
{ifstream infile("xx",ios::in);
if(!infile)
{cerr<<"open xx.dat error!"<<endl;
exit(1);}
for(int i=0;i<m;i++)
{a[i].display();
cout<<endl;}
infile.close();
}
//8 求平均值
void average()
{cout<<"请输入所求平均工资的人数:"<<endl;
int e;
cin>>e;
int s=0;
int ar=0;
for(int i=0;i<e;i++)
{s+=a[i].get5();}
ar=s/e;
cout<<"平均工资为"<<ar<<endl;
}
//9 保存文件
void save()
{/*for(int i=0;i<50;i++)
a[i].get_value();*/
ofstream outfile("xx",ios::out);
if(! outfile)
{cerr<<"open error!"<<endl;
exit(1);}
/*for(int i=0;i<50;i++)
{a[i].get_value1();*/
int i=0;
i=i+m;
outfile<<(a[i]);
i=i-n;
outfile<<(a[i]);
cout<<"保存成功!"<<endl;
outfile.close();
}
//10 结束运行
void complete()
{cout<<"你确定要退出运行吗?(yes/no)";
string b;
cin>>b;
if(b=="yes")exit(1);
}
//主函数
int main()
{ show5();
show();
int x;
cin>>x;
for(int i=1;;i++)
{switch(x)
{case 1:set();break;
case 2:display_file("xx");break;
case 3:add();break;
//case 4: remove();break;
case 5:protect();break;
case 6:show2();break;
case 7:show1();break;
case 8:average();break;
case 9:save();break;
case 10: complete();break;
default:{cout<<"上一次输入错误,请再次输入1-10中的一个数:"<<endl;
cin>>x;}break;
}
show();
cin>>x;
}
return 0;
}
#include <string>
#include<fstream>
using namespace std;
//职工信息
class worker
{public:
// worker();
void get_value(){cin>>num>>name;}
void display(){cout<<num<<" "<<name<<" ";
}
int get1(){return num;}
string get2(){return name;}
private:
string name;
int num;
};
class poster:public worker
{public:
//poster(string n,int a,int nu,char s,float w):worker(n,a),num(nu),sex(s),wage(w){}
void get_value1()
{get_value();
cin>>age>>sex>>wage;
}
void display1()
{display();
cout<<age<<" "<<sex<<" "<<wage<<endl;
}
int get3(){return age;}
char get4(){return sex;}
int get5(){return wage;}
// friend ostream& operator<<(ostream&,poster&)
private:
int age;
char sex;
float wage;
}a[50];
//重载函数
ostream&operator<<(ostream&output,poster&p)
{output<<p.get1()<<" "<<p.get2()<<" "<<p.get3()<<" "<<p.get4()<<" "<<p.get5()<<endl;
return output;
}
int m,n;
//菜单界面
void show5()
{cout<<"***************************************"<<endl<<endl;
cout<<" 职工信息管理系统 "<<endl;
cout<<" 南京信息职业技术学院欢迎你 "<<endl<<endl;
cout<<"***************************************"<<endl;}
void show()
{cout<<"1 设置职工最大数"<<'\n'<<"2 从文件读记录"<<endl<<"3 增加职工记录"
<<endl<<"4 删除职工记录"<<endl<<"5 设置信息表"<<endl<<"6 显示原始记录"
<<endl<<"7 显示简表记录"<<endl<<"8 显示工资平均值 "<<endl<<"9 保存记录"<<endl<<
"10 结束运行 "<<endl;
cout<<"请输入1-10中的一个数:";
}
//1 设置最大数
int t;
void set()
{cout<<"请设置你想设置的最大数:"<<endl;
cin>>t;
cout<<"你设置的最大数为"<<t<<endl;
}
//2 从文件读入
char*filename;
void display_file(char*filename)
{//ifstream infile1("qq.dat");
/*ifstream infile(filename,ios::in);
cout<<"输入文件名:"<<endl;
cin>>filename;
//if(infile==NULL)cout<<"sorry!"<<endl;
if (!infile)
{cerr<<"open error!"<<endl;
exit(1);}
cout<<"成功进入!"<<endl;
char ch;
while(infile.get(ch))
cout.put(ch);
cout<<endl;
infile.close();*/
ifstream infile(filename,ios::in);
if(!infile){cerr<<"open error!"<<endl;
exit(1);}
char ch;
while(infile.get(ch))
cout.put(ch);
cout<<endl;
infile.close();
//ofstream outfile;
//string filename;
//cout<<"enter the name:"<<endl;
//cin>>filename;
//if(outfile1==outfile)
//outfile.open(filename.c_str());
//for(int i=0;i<3;i++)
//cout<<a[i];
//cout<<"it is ok!";
}
//3 增加职工信息
void add()
{ofstream outfile("xx",ios::app);
if(!outfile)
{cerr<<"open xx.dat error!"<<endl;
exit(1);}
cout<<"请输入所需增加的人的个数:"<<endl;
//int m;
cin>>m;
cout<<"请输入职工的序号,姓名,年龄,性别,工资等信息"<<endl;
for(int i=0;i<m;i++)
{a[i].get_value1();
//a[i].display1();
outfile<<a[i]<<" ";}
cout<<endl;
outfile.close();
}
//4 删除记录
/*void remove()
{ofstream outfile("xx.dat")
outfile
{cout<<"请输入想要删除人的序号:"<<endl;
int num;
cin>>num;
fstream iofile("xx",ios::out);
if(! iofile)
{cerr<<"open error!"<<endl;
exit(1);}
//iofile.seekg(0,ios::beg);
for(int i=0;i<t;i++)
{if(num==a[i].get1())
a[i].get1()==0;
a[i].display1();}
iofile.close();
}*/
//5 生成信息简表
void protect()
{ifstream infile("xx1",ios::in);
if(!infile)
{cerr<<"open xx1.dat error!"<<endl;
exit(1);}
int i;
cout<<a[i].get1()<<" "<<a[i].get2()<<" ";
infile.close();
}
//6 显示原始记录
void show2()
{ifstream infile("xx",ios::in);
if(!infile)
{cerr<<"open xx.dat error!"<<endl;
exit(1);}
cout<<"enter!"<<endl;
/* for(int i=0;i<6;i++)
{a[i].display1();
cout<<endl;}*/
char ch;
while(infile.get(ch))
cout.put(ch);
infile.close();
}
//7 显示信息简表
void show1()
{ifstream infile("xx",ios::in);
if(!infile)
{cerr<<"open xx.dat error!"<<endl;
exit(1);}
for(int i=0;i<m;i++)
{a[i].display();
cout<<endl;}
infile.close();
}
//8 求平均值
void average()
{cout<<"请输入所求平均工资的人数:"<<endl;
int e;
cin>>e;
int s=0;
int ar=0;
for(int i=0;i<e;i++)
{s+=a[i].get5();}
ar=s/e;
cout<<"平均工资为"<<ar<<endl;
}
//9 保存文件
void save()
{/*for(int i=0;i<50;i++)
a[i].get_value();*/
ofstream outfile("xx",ios::out);
if(! outfile)
{cerr<<"open error!"<<endl;
exit(1);}
/*for(int i=0;i<50;i++)
{a[i].get_value1();*/
int i=0;
i=i+m;
outfile<<(a[i]);
i=i-n;
outfile<<(a[i]);
cout<<"保存成功!"<<endl;
outfile.close();
}
//10 结束运行
void complete()
{cout<<"你确定要退出运行吗?(yes/no)";
string b;
cin>>b;
if(b=="yes")exit(1);
}
//主函数
int main()
{ show5();
show();
int x;
cin>>x;
for(int i=1;;i++)
{switch(x)
{case 1:set();break;
case 2:display_file("xx");break;
case 3:add();break;
//case 4: remove();break;
case 5:protect();break;
case 6:show2();break;
case 7:show1();break;
case 8:average();break;
case 9:save();break;
case 10: complete();break;
default:{cout<<"上一次输入错误,请再次输入1-10中的一个数:"<<endl;
cin>>x;}break;
}
show();
cin>>x;
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询