C++之 职工管理系统
介绍:
此设计只涉及了部分C++知识,大多是面向过程的C语言知识。
可以说是用C语言的思想编写的。
心得:
既然已经花费时间在这件事情上,就应该把这件事情做到最好!!!
省去返工的时间。
只是想做个纪念。。。
代码:
#include<conio.h>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cstring>
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 10010
int xz; //选择;
string sf; //是否;
class start //界面管理
{
public:
void interface();
void waiting();
void Printf();
void Printf_re();
void menu();
};
class Worker:public start //职工
{
private:
string wid; //职工号
string name; //姓名
string sex; //性别
string birthday; //出生年月
string education; //学历
string duty; //职务
int wage; //工资
string add; //住址
string phone; //电话
public:
Worker()
{
}
~Worker()
{
}
void show(); //显示职工信息
friend class Boss;
};
class Boss:public start //老板
{
private:
Worker W[maxn];
static int Num; //职工数目;
public:
Boss();
void Append(); //输入
void Display(); //显示
void Search(); //查询
void Modify(); //修改
void Delete(); //删除
void save(); //保存
void Allclear(); //全清
};
int Boss::Num=0;
Boss::Boss()
{
ifstream file("inform.txt",ios::in);
string q_id,q_name,q_sex,q_birthday,q_education,q_duty,q_add,q_phone;
int q_wage;
int total=0;
if(!file)
{
cout<<"\t\t没有信息存入!!!"<<endl;
getch();
exit(0);
}
while(!file.eof())//将所输入的数据作为整体一次性读出来
{
q_id="";
file>>q_id>>q_name>>q_sex>>q_birthday>>q_education>>q_duty>>q_wage>>q_add>>q_phone;
if(q_id.length()==0)
break;
W[total].wid=q_id;
W[total].name=q_name;
W[total].sex=q_sex;
W[total].birthday=q_birthday;
W[total].education=q_education;
W[total].duty=q_duty;
W[total].wage=q_wage;
W[total].add=q_add;
W[total].phone=q_phone;
total++; //记录有多少组数据
}
file.close();
Num=total;
}
void start::Printf()
{
cout<<"\t职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t地址\t电话\t"<<endl;
}
void start::Printf_re()
{
cout<<"\t没有职工信息存入"<<endl;
}
void start::waiting()
{
int i;
cout<<"\n\t 请稍侯........... \t";
for(i=0; i<79900; i+=6)
{
switch(i%4)
{
case 1:
cout<<"\b\\";
break;
case 2:
cout<<"\b-";
break;
case 3:
cout<<"\b/";
break;
case 0:
cout<<"\b|";
break;
}
}
cout<<endl;
}
void start::menu() //菜单
{
cout<<endl;
cout<<" ********************* MENU ******************** "<<endl;
cout<<" 1. 信息输入 "<<endl;
cout<<" 2. 全部信息显示 "<<endl;
cout<<" 3. 信息查询 "<<endl;
cout<<" 4. 信息修改 "<<endl;
cout<<" 5. 信息删除 "<<endl;
cout<<" 6. 信息保存 "<<endl;
cout<<" 7. 信息全清 "<<endl;
cout<<" 0. 退出系统 "<<endl;
cout<<" ********************************************* "<<endl;
cout<<endl;
}
void start::interface() //主界面
{
Boss wl;
system("cls");
menu();
while(1)
{
cout<<"\t请选择你要实现的功能(0-6)";
cin>>xz;
cout<<endl;
while(xz<0||xz>7)
{
cout<<"\t输入有误,请重新输入:";
cin>>xz;
cout<<endl;
}
switch(xz)
{
case 1:
wl.Append();
break;
case 2:
wl.Display();
break;
case 3:
wl.Search();
break;
case 4:
wl.Modify();
break;
case 5:
wl.Delete();
break;
case 6:
wl.save();
break;
case 7:
wl.Allclear();
break;
case 0:
cout<<"\t系统退出!!!"<<endl;
exit(0);
break;
default:
break;
}
cout<<"\t是否返回主菜单?Y/N (N直接退出系统)";
cin>>sf;
cout<<endl;
if(sf=="n"||sf=="N")
{
waiting();
cout<<endl;
cout<<"\t是否已保存文件???"<<endl;
cout<<endl;
cout<<"\t若已保存,请按--1 (系统将不再保存文件)"<<endl;
cout<<"\t若未保存并想要保存,请按--2"<<endl;
cin>>xz;
while(xz<1||xz>2)
{
cout<<"\t输入有误,请重新输入";
cin>>xz;
cout<<endl;
}
if(xz==2)
wl.save();
cout<<"\t系统退出!!"<<endl;
exit(0);
}
else
{
system("cls");
menu();
}
}
}
void Boss::Append() //信息输入
{
cout<<"\t请不要输入已存在的职工号,以下是已存在的职工号:"<<endl;
for(int i=0; i<Num; i++)
cout<<W[i].wid<<'\t';
cout<<endl;
cout<<"\t请输入职工信息:"<<endl;
do
{
cout<<"\t职工号:";
string num;
cin>>num;
while(1)
{
int flag=1;
for(int i=0; i<Num; i++)
{
if(num==W[i].wid)
{
cout<<"\t此职工号已存在,请重新输入:";
cin>>num;
flag=0;
cout<<endl;
}
}
if(flag)
break;
}
W[Num].wid=num;
cout<<"\t姓名:";
cin>>W[Num].name;
cout<<"\t性别(male/female):";
cin>>W[Num].sex;
cout<<"\t出生年月(yyyy/mm):";
cin>>W[Num].birthday;
cout<<"\t学历(junior/college/master/other):";
cin>>W[Num].education;
cout<<"\t职务:";
cin>>W[Num].duty;
cout<<"\t工资:";
cin>>W[Num].wage;
cout<<"\t地址:";
cin>>W[Num].add;
cout<<"\t电话:";
cin>>W[Num].phone;
Num++;
Num=Num;
cout<<"\t是否要继续输入 Y?(按任意键退出)";
cin>>sf;
cout<<endl;
}
while(sf=="y"||sf=="Y");
}
void Boss::Display() //信息展示
{
if(Num<=0)
{
Printf_re();
}
else
{
int total=0;
cout<<endl;
cout<<"\t已保存的职工信息如下:"<<endl;
Printf();
for(int i=0; i<Num; i++)
{
total++;
cout<<"\t"<<W[i].wid<<'\t'<<W[i].name<<'\t'<<W[i].sex<<'\t'<<W[i].birthday;
cout<<"\t\t"<<W[i].education<<'\t'<<W[i].duty<<'\t'<<W[i].wage<<'\t'<<W[i].add<<'\t'<<W[i].phone<<endl;
}
cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
}
}
void Boss::Search() //查询
{
if(Num<=0)
{
Printf_re();
}
else
{
do
{
cout<<"\t请选择查询方式"<<endl;
cout<<"\t**************************"<<endl;
cout<<"\t** **"<<endl;
cout<<"\t** 1.按职工号查找 **"<<endl;
cout<<"\t** 2.按姓名查找 **"<<endl;
cout<<"\t** 3.按工资查找 **"<<endl;
cout<<"\t** 4.按学历查找 **"<<endl;
cout<<"\t** 0.返回主菜单 **"<<endl;
cout<<"\t** **"<<endl;
cout<<"\t**************************"<<endl;
cout<<endl;
cout<<"\t请选择要实现的功能【0-4】:";
cin>>xz;
while(xz<0||xz>4)
{
cout<<endl;
cout<<"\t输入有误,请重新输入:";
cin>>xz;
}
int fl,total=0;
if(xz==1)
{
cout<<endl;
string id;
cout<<"\t请输入要查询的职工号:";
cin>>id;
cout<<endl;
fl=0;
cout<<endl;
cout<<"\t查询职工的信息如下:"<<endl;
for(int j=0; j<Num; j++)
{
if(id==W[j].wid)
{
total++;
fl=1;
if(j==0)
Printf();
cout<<"\t"<<W[j].wid<<'\t'<<W[j].name<<'\t'<<W[j].sex<<'\t'<<W[j].birthday<<"\t\t"<<W[j].education<<'\t'<<W[j].duty<<'\t'<<W[j].wage<<'\t'<<W[j].add<<'\t'<<W[j].phone<<endl;
}
}
if(!fl)
cout<<"\t不存在此职工!"<<endl;
else
cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
}
else if(xz==2)
{
string nam;
cout<<"\t请输入要查询的姓名:";
cin>>nam;
fl=0;
cout<<endl;
cout<<"\t查询职工的信息如下:"<<endl;
for(int j=0; j<Num; j++)
{
if(nam==W[j].name)
{
total++;
fl=1;
if(j==0)
Printf();
cout<<"\t"<<W[j].wid<<'\t'<<W[j].name<<'\t'<<W[j].sex<<'\t'<<W[j].birthday;
cout<<"\t\t"<<W[j].education<<'\t'<<W[j].duty<<'\t'<<W[j].wage<<'\t'<<W[j].add<<'\t'<<W[j].phone<<endl;
}
}
if(!fl)
cout<<"\t不存在此职工!"<<endl;
else
cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
}
else if(xz==3)
{
int wag;
cout<<"\t请输入要查询的工资:";
cin>>wag;
fl=0;
cout<<endl;
cout<<"\t查询职工的信息如下:"<<endl;
for(int j=0; j<Num; j++)
{
if(wag==W[j].wage)
{
total++;
fl=1;
if(j==0)
Printf();
cout<<"\t"<<W[j].wid<<'\t'<<W[j].name<<'\t'<<W[j].sex<<'\t'<<W[j].birthday;
cout<<"\t\t"<<W[j].education<<'\t'<<W[j].duty<<'\t'<<W[j].wage<<'\t'<<W[j].add<<'\t'<<W[j].phone<<endl;
}
}
if(!fl)
cout<<"\t不存在此职工!"<<endl;
else
cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
}
else if(xz==4)
{
string edu;
cout<<"\t请输入要查询的学历:";
cin>>edu;
fl=0;
cout<<endl;
cout<<"\t查询职工的信息如下:"<<endl;
for(int j=0; j<Num; j++)
{
if(edu==W[j].education)
{
total++;
fl=1;
if(j==0)
Printf();
cout<<"\t"<<W[j].wid<<'\t'<<W[j].name<<'\t'<<W[j].sex<<'\t'<<W[j].birthday;
cout<<"\t\t"<<W[j].education<<'\t'<<W[j].duty<<'\t'<<W[j].wage<<'\t'<<W[j].add<<'\t'<<W[j].phone<<endl;
}
}
if(!fl)
cout<<"\t不存在此职工!"<<endl;
else
cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
}
else if(xz==0)
{
sf="N";
}
if(xz!=0)
{
cout<<endl;
cout<<"\t是否还要继续查询 Y?(按任意键退出) "<<endl;
cin>>sf;
}
}
while(xz!=0&&(sf=="Y"||sf=="y"));
}
}
void Boss::Modify() //修改
{
string n;
if(Num<=0)
{
Printf_re();
}
else
{
cout<<"\t全部职工信息如下:"<<endl;
Printf();
for(int ii=0; ii<Num; ii++)
{
cout<<"\t"<<W[ii].wid<<'\t'<<W[ii].name<<'\t'<<W[ii].sex<<'\t'<<W[ii].birthday;
cout<<"\t\t"<<W[ii].education<<'\t'<<W[ii].duty<<'\t'<<W[ii].wage<<'\t'<<W[ii].add<<'\t'<<W[ii].phone<<endl;
}
do
{
cout<<"\t请输入需要修改信息职工的职工号:";
string id2;
cin>>id2;
cout<<endl;
int flag=1,k=0;
while(flag)
{
for(int j=0; j<Num; j++)
{
if(id2==W[j].wid)
{
k=j;
flag=0;
break;
}
}
if(flag)
{
cout<<"\t不存在该职工,请重新输入:";
cin>>id2;
cout<<endl;
}
}
cout<<endl;
cout<<"\t你要修改的职工信息如下:"<<endl;
Printf();
cout<<"\t"<<W[k].wid<<'\t'<<W[k].name<<'\t'<<W[k].sex<<'\t'<<W[k].birthday;
cout<<"\t\t"<<W[k].education<<'\t'<<W[k].duty<<'\t'<<W[k].wage<<'\t'<<W[k].add<<'\t'<<W[k].phone<<endl;
cout<<"\t请选择修改方式:"<<endl;
cout<<"\t**************************"<<endl;
cout<<"\t** **"<<endl;
cout<<"\t** 1.修改职工号 **"<<endl;
cout<<"\t** 2.修改姓名 **"<<endl;
cout<<"\t** 3.修改性别 **"<<endl;
cout<<"\t** 4.修改出生年月 **"<<endl;
cout<<"\t** 5.修改学历 **"<<endl;
cout<<"\t** 6.修改职务 **"<<endl;
cout<<"\t** 7.修改工资 **"<<endl;
cout<<"\t** 8.修改地址 **"<<endl;
cout<<"\t** 9.修改电话 **"<<endl;
cout<<"\t** 10.修改多个成员 **"<<endl;
cout<<"\t** 0.返回主菜单 **"<<endl;
cout<<"\t** **"<<endl;
cout<<"\t**************************"<<endl;
cout<<endl;
cout<<"\t请选择要实现的功能【0-10】:";
cin>>xz;
while(xz<0||xz>10)
{
cout<<endl;
cout<<"\t输入有误,请重新输入:";
cin>>xz;
}
switch(xz)
{
case 1:
cout<<"\t新的职工号:";
cin>>n;
while(1)
{
int flag=1;
for(int i=0; i<Num; i++)
{
if(n==W[i].wid)
{
cout<<"\t此职工号已存在,请重新输入:";
cin>>n;
flag=0;
cout<<endl;
}
}
if(flag)
break;
}
W[k].wid=n;
cout<<"\t修改成功";
break;
case 2:
cout<<"\t请输入新的姓名:";
cin>>W[k].name;
cout<<"\t修改成功";
break;
case 3:
cout<<"\t请输入新的性别:";
cin>>W[k].sex;
cout<<"\t修改成功";
break;
case 4:
cout<<"\t请输入新的出生年月:";
cin>>W[k].birthday;
cout<<"\t修改成功";
break;
case 5:
cout<<"\t请输入新的学历:";
cin>>W[k].education;
cout<<"\t修改成功";
break;
case 6:
cout<<"\t请输入新的职务 :";
cin>>W[k].duty;
cout<<"\t修改成功";
break;
case 7:
cout<<"\t请输入新的工资:";
cin>>W[k].wage;
cout<<"\t修改成功";
break;
case 8:
cout<<"\t请输入新的地址:";
cin>>W[k].add;
cout<<"\t修改成功";
break;
case 9:
cout<<"\t请输入新的电话:";
cin>>W[k].phone;
cout<<"\t修改成功";
break;
case 10:
cout<<"\t新的职工号:";
cin>>n;
while(1)
{
int flag=1;
for(int i=0; i<Num; i++)
{
if(n==W[i].wid)
{
cout<<"\t此职工号已存在,请重新输入:";
cin>>n;
flag=0;
cout<<endl;
}
}
if(flag)
break;
}
W[k].wid=n;
cout<<"\t新的姓名:";
cin>>W[k].name;
cout<<"\t新的性别:(male/female)";
cin>>W[k].sex;
cout<<"\t新的出生年月(yyyy/mm):";
cin>> W[k].birthday;
cout<<"\t新的学历(junior/college/master/other):";
cin>>W[k].education;
cout<<"\t新的职务:";
cin>>W[k].duty;
cout<<"\t新的工资:";
cin>>W[k].wage;
cout<<"\t新的地址:";
cin>>W[k].add;
cout<<"\t新的电话:";
cin>>W[k].phone;
break;
case 0:
sf="N";
break;
}
if(xz!=0)
{
cout<<"\t修改后的职工信息如下:"<<endl;
Printf();
cout<<"\t"<<W[k].wid<<'\t'<<W[k].name<<'\t'<<W[k].sex<<'\t'<<W[k].birthday;
cout<<"\t\t"<<W[k].education<<'\t'<<W[k].duty<<'\t'<<W[k].wage<<'\t'<<W[k].add<<'\t'<<W[k].phone<<endl;
cout<<"\t是否要修改其它人 Y?(按任意键退出)";
cin>>sf;
}
}
while(xz!=0&&(sf=="Y"||sf=="y"));
}
}
void Boss::Delete() //删除
{
if(Num<=0)
{
Printf_re();
}
else
{
cout<<endl;
cout<<"\t全部职工信息如下:"<<endl;
Printf();
for(int ii=0; ii<Num; ii++)
{
cout<<"\t"<<W[ii].wid<<'\t'<<W[ii].name<<'\t'<<W[ii].sex<<'\t'<<W[ii].birthday;
cout<<"\t\t"<<W[ii].education<<'\t'<<W[ii].duty<<'\t'<<W[ii].wage<<'\t'<<W[ii].add<<'\t'<<W[ii].phone<<endl;
}
do
{
cout<<endl;
cout<<"\t请输入需要删除信息职工的职工号:";
string id4;
cin>>id4;
cout<<endl;
int flag=1,k=0;
while(flag)
{
for(int j=0; j<Num; j++)
{
if(id4==W[j].wid)
{
k=j;
flag=0;
break;
}
}
if(flag)
{
cout<<"\t不存在该职工,请重新输入:";
cin>>id4;
cout<<endl;
}
}
cout<<endl;
cout<<"\t你要删除的职工信息如下:"<<endl;
Printf();
cout<<"\t"<<W[k].wid<<'\t'<<W[k].name<<'\t'<<W[k].sex<<'\t'<<W[k].birthday;
cout<<"\t\t"<<W[k].education<<'\t'<<W[k].duty<<'\t'<<W[k].wage<<'\t'<<W[k].add<<'\t'<<W[k].phone<<endl;
cout<<"\t是否确认删除Y/N: ";
cin>>sf;
if(sf=="y"||sf=="Y")
{
for(int j=k; j<Num-1; j++)
W[j]=W[j+1];
Num--;
cout<<"\t删除成功"<<endl;
}
cout<<"是否继续删除职工信息 Y?(按任意键退出)";
cin>>sf;
}
while(sf=="Y"||sf=="y");
}
}
void Boss::save() //保存
{
if(Num<=0)
{
Printf_re();
}
else
{
ofstream oflie,ofshow;
oflie.open("inform.txt",ios::out); //信息处理文件
ofshow.open("show.txt",ios::out); //展示文件
cout<<"\t文件正在保存"<<endl;
ofshow<<"已保存员工信息如下:"<<endl;
ofshow<<"职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t地址\t电话"<<endl;
for(int i=0; i<Num; i++)
{
oflie<<W[i].wid<<'\t'<<W[i].name<<'\t'<<W[i].sex<<'\t'<<W[i].birthday;
oflie<<'\t'<<W[i].education<<'\t'<<W[i].duty<<'\t'<<W[i].wage<<'\t'<<W[i].add<<'\t'<<W[i].phone<<endl;
ofshow<<W[i].wid<<'\t'<<W[i].name<<'\t'<<W[i].sex<<'\t'<<W[i].birthday;
ofshow<<'\t'<<W[i].education<<'\t'<<W[i].duty<<'\t'<<W[i].wage<<'\t'<<W[i].add<<'\t'<<W[i].phone<<endl;
}
oflie.close();
ofshow.close();
}
}
void Boss::Allclear()
{
ifstream ifile("inform.txt",ios::in);
ofstream ofile("temp.txt",ios::in|ios::trunc);
if(!ifile)
cout<<"\t\t\t\t\tCan not open the inform file!"<<endl;
if(!ofile)
cout<<"\t\t\t\t\tCan not creat the temp file!"<<endl;
ifile.close();
ofile.close();
system("del inform.txt");
system("rename temp.txt,inform.txt");
waiting();
cout<<"信息已全部清除"<<endl;
}
void Worker::show() //职工展示
{
cout<<endl;
ifstream ifile("inform.txt",ios::in);
string q_id,q_name,q_sex,q_birthday,q_education,q_duty,q_wage,q_add,q_phone;
int flag=0;
if(!ifile)
{
cout<<"\t\tCan not open the inform file!"<<endl;
exit(0);
getch();
}
cout<<"\t你仅有查看自己信息的权限!!!"<<endl;
cout<<endl;
ifile.seekg(0,ios::beg); //将文件指针指向文件开头
cout<<"\t请输入你的职工号:";
cin>>wid;
while(!ifile.eof())
{
q_id="";
ifile>>q_id>>q_name>>q_sex>>q_birthday>>q_education>>q_duty>>q_wage>>q_add>>q_phone;
if(q_id.length()==0)
break;
if(wid==q_id)
{
flag=1;
Printf();
cout<<"\t"<<q_id<<"\t"<<q_name<<"\t"<<q_sex<<"\t"<<q_birthday<<"\t\t"<<q_education<<"\t"<<q_duty<<"\t"<<q_wage<<"\t"<<q_add<<"\t"<<q_phone<<endl;
}
}
ifile.close();
if(!flag)
cout<<"\t您好,不存在你的信息!"<<endl;
cout<<endl;
cout<<"\t系统退出!"<<endl;
exit(0);
}
int main()
{
start St;
cout<<" 欢 迎 来 到 职 工 管 理 系 统 "<<endl;
cout<<endl;
cout<<'\t'<<"请输入你的身份:"<<endl;
cout<<'\t'<<"老板---请输 1"<<endl;
cout<<'\t'<<"职工---请输 2"<<endl;
int shu;
cin>>shu;
while(1)
{
if(shu==1||shu==2)
break;
else
{
cout<<"\t输入错误!请重新输入 1 / 2"<<endl;
cin>>shu;
}
}
if(shu==1)
{
St.interface();
}
if(shu==2)
{
Worker E;
E.show();
}
return 0;
}