公司员工信息管理系统
目 录
一 系统的背景 2
二 系统的编译环境和语言 2
三 系统类的设计 3
3.1 类的对象: 3
3.2 类的属性列表: 3
3.3 类的行为: 3
3.4 具体代码如下: 3
四 系统运行入口的设计 11
五 运行步骤 13
六 数据文件 16
七 参考文献 16
一 系统的背景
从事商业活动的公司迫切需要这样一个系统:它能高效的管理公司内部所有员工的个人信息,并能正确快速的对系统的使用者的操作做出回应,以提高效率,降低成本。
该系统能够满足以上的要求,使用户可以快速准确的管理公司员工的信息。
二 系统的编译环境和语言
该系统是采用C++语言在Turbo c下编译而成,。
因为在该系统中有明显的对象,即是公司的员工,且C++语言是一个非常强大的面向对象的语言,因此该系统使用C++编写将会简单,快速而有效。
Turbo C是一个经典且功能强大的编译器,是编译用C++语言写成的程序的首要工具。
三 系统类的设计
3.1 类的对象:
系统有两个类:
Employee :对象是公司里的每一个员工,是系统中最重要的类。
DBOperate :对象是系统的数据文件,完成对员工信息的保存和读取。
3.2 类的属性列表:
Employee :
员工的编号:EmployeeNum (long)
员工的姓名:EmployName (string)
员工所属部门:EmployeeDepart (string)
员工级别:EmployeeGrade (string)
员工工资:EmployeePay (float)
员工工龄:EmpoyeeWorkTime (long)
3.3 类的行为:
Employee :
添加新员工信息:NewInfo();
员工信息浏览:ShowInfo();
员工信息变更:RefreshInfo();
发放工资: Pay(int EG);//EG为员工级别
解聘员工: DeleteInfo();
DBOperate :
保存员工信息:WriteIn(int iflag);
读取员工信息:ReadOut();
更新员工总人数:RefreshMaxNum(int iflag);
注释:当iflag 为1时,人数增大;为零时,人数不变,即是修改;为 -1时,人数减少。
3.4 具体代码如下:
long Employee::EmployeeMaxNum = 1000;
float Employee::EmployeeBasePay = 1500;
int Employee::MaxNum()
{
int MN = 0;
ifstream myf("c://EmployeeMaxNum.txt");
myf>>MN;
myf.close();
return MN;
}
void Employee::NewInfo()
{
char tmpName[50];
cout<<"new Employee Name >"; //输入员工名字
cin>>tmpName;
Employee::EmployeeName = new char[strlen(tmpName)+1];
strcpy(Employee::EmployeeName,tmpName);
//////////////////////////////////////////
Employee::EmployeeNum = EmployeeMaxNum + Employee::MaxNum()+1; //自动分配员工编号,为基础标号+员工人数
//////////////////////////////////////////
char tmpDepart[50];
cout<<"new Employee Department >"; //输入员工部门名称
cin>>tmpDepart;
Employee::EmployeeDepart = new char[strlen(tmpDepart)+1];
strcpy(Employee::EmployeeDepart,tmpDepart);
//////////////////////////////////////////
cout<<"new Employee Grade (1:zhiyuan 2:zhuren 3:jingli 4:dongshizhang) >"; //输入员工等级,1为职员,2为主任,3为经理,4为董事长
cin>>Employee::EmployeeGrade;
while(Employee::EmployeeGrade !=1&&
Employee::EmployeeGrade !=2&&
Employee::EmployeeGrade !=3&&
Employee::EmployeeGrade !=4)
{
cout<<"Your Input Error! Input Again be careful:)"<<endl;
cout<<"new Employee Grade (1:zhiyuan 2:zhuren 3:jingli 4:dongshizhang) >";
cin>>Employee::EmployeeGrade;
}
//////////////////////////////////////////
cout<<"new EmployeeWorkTime >"; //输入员工合同期
cin>>Employee::EmployeeWorkTime;
//////////////////////////////////////////
Employee::EmployeePay = Employee::Pay(Employee::EmployeeGrade);
DBOperate dbo;
dbo.ReadOut(); //将原来的数据文件中的数据读出,并加入新的数据
int MaxNum = Employee::MaxNum();
EN[MaxNum] = Employee::EmployeeName;
ENum[MaxNum] = Employee::EmployeeNum;
ED[MaxNum] = Employee::EmployeeDepart;
EG[MaxNum] = Employee::EmployeeGrade;
EWT[MaxNum] = Employee::EmployeeWorkTime;
EP[MaxNum] = Employee::EmployeePay;
dbo.WriteIn(1); //将新的信息全部写入数据文件
return;
}
void Employee::ShowInfo()
{
for(int i=0;i<Employee::MaxNum();i++)
{//顺序输出所有员工的信息,Employee::MaxNum()为员工人数
cout<<"The Employee's Information:"<<endl;
cout<<"**********************************"<<endl;
cout<<"* EmployeeName >"<<EN[i]<<endl;
cout<<"* EmployeeNum >"<<ENum[i]<<endl;
cout<<"* EmployeeDepart >"<<ED[i]<<endl;
cout<<"* EmployeeGrade >"<<EG[i]<<endl;
cout<<"* EmployeeWorkTime >"<<EWT[i]<<endl;
cout<<"* EmployeePay >"<<EP[i]<<endl;
cout<<"**********************************"<<endl;
}
}
void Employee::RefreshInfo()
{
int cNum = 1000; //基础编号
DBOperate dbo;
dbo.ReadOut();
Employee::ShowInfo(); //先将所有员工信息输出
cout<<"Please input the Employee's Num >";
cin>>cNum;
int MN;
MN = Employee::MaxNum();
for(int i=0;i<MN;i++)
{
if(ENum[i] == cNum) //通过编号找到指定要更新的员工
{ //依次更新员工信息
cout<<"***********************************"<<endl;
cout<<"Your choice's the Employee"<<endl;
cout<<"**********************************"<<endl;
cout<<"* EmployeeName >"<<EN[i]<<endl;
cout<<"* EmployeeNum >"<<ENum[i]<<endl;
cout<<"* EmployeeDepart >"<<ED[i]<<endl;
cout<<"* EmployeeGrade >"<<EG[i]<<endl;
cout<<"* Emplo