资源描述
个人收集整理 勿做商业用途
课程设计说明书
课 程 名 称: 面向对象程序设计
题 目: 公司员工管理系统
年级/专业/班:
学 生 姓 名:
学 号:
目 录
1 引 言
1。1 问题的提出
1.2任务与分析
2 程序的主要功能
2。1新增功能
2.2更改功能
2.3 删除信息
2.4查找功能
2。5显示功能
2.6全部删除功能
3 程序运行平台
4 总体设计
5 程序类的说明
6 模块分析
6.1 添加模块
6.2 显示模块
6。3 修改模块
6。4 查找模块
6。5 删除模块
6。6 清空模块
7 系统测试
引言
1.1 问题的提出
随着计算机的普及,网络进入大宗的家庭,不论在工作、学习还是生活中,人们越来越离不开它,社会上,计算机及使用计算机的人几乎是随处可见。人们用计算机,是因为它能反映现实世界,随着计算机越来越深入到人们的实际生活,如何把计算机科学更好的应用于实际,最大限度解决人们日常问题已经成为许多人热衷的研究方向。
1.2 任务与分析
1. 人数其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
2. 升级程序对所有人员有提升级别的功能
3. 工资计算薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成。
4. 修改能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息
5. 在基本要求达到后,可设计出比较友好的界面(如下拉菜单),也可用VC++ ClassWizard 设计.
2. 程序的主要功能
1. 新增(添加新职员,计算工资)
2. 更改(更改职员信息)
3. 删除(删除职员信息)
4. 查找(显示所要寻找的职员信息)
5. 显示(显示所有职员的信息)
6. 全删(删除所有职员的信息)
3. 程序运行平台
WINDOWS XP/2000 VC++
4. 总体设计
4.1 主要流程图
开始
选定相应操作序号
退出
增加
修改
删除
查询
显示
输 入 数 据
保 存 到 文 件
退 出
显示信息
图2-1 流程图
4.2 N-S图
开始
键盘输入操作序号
判断炒作序号
操作序号传入函数
按要求输入相关数据
数据保存到文件
退出
图2-2 N—S图
5. 程序类的说明
class Employee //职工类
{
int tag;//删除标记
int no;//职工编号
char name[20];
char zw[20];//职工职位
int salary;//职工工资
public:
Employee(){}
char *getname() {return name;}//获取名字
int gettag() {return tag;}//获取标记
int getno() {return no;}//获取编号
int getsalary(){return salary;}//获取工资
void setzw(char q[])//设置职位
{
strcpy(zw,q);
}
void setname(char na[])//设置名字
{
strcpy(name,na);
}
void getsalary(int sa){salary=sa;}
void delna(){tag=1;}//删除
void addemp(int n,int sa,char *na,char *q)//增加
{
tag=0;
no=n;
salary=sa;
strcpy(name,na);
strcpy(zw,q);
}
void disp()//显示职工信息
{
cout<〈"│"〈〈setw(10)<<no〈〈"│”〈<setw(10)<<name〈<”│”<<setw(10)<<salary<〈"│”<〈setw(10)〈〈zw〈<” │"〈<endl;
cout〈〈”├——--—┼—————┼—————┼—-————-┤”<〈endl;
}
};
///////////////////////////////////
///////////////////////////////////
class Database//职工数据类
{
int top;
Employee read[Maxr];
public:
Database()//将职工信息从employee。txt读取到read[]中
{
Employee s;
top=-1;
fstream file("employee。txt",ios::in);
while (1)
{
file.read((char *)&s,sizeof(s));
if (!file) break;
top++;
read[top]=s;
}
file。close();
}
void clear()//删除所有
{
top=-1;
renshu=0;
}
//////////////////////////////////////////////////////////
int addemp (int n, int sa,char *na,char*q) //增加职工
{
Employee *p=query(n);
if (p==NULL)
{
top++;
read[top].addemp(n,sa,na,q);
return 1;
}
return 0;
}
//////////////////////////////////////////////////////
Employee *query(int empid)
{
for (int i=0;i<=top;i++)
if (read[i]。getno()==empid && read[i]。gettag()==0)
return &read[i];
return NULL;
}
/////////////////////////////////////////////////
Employee *query1(char empna[20])
{
for (int i=0;i<=top;i++)
if ((read[i]。getname()==empna) && read[i]。gettag()==0)
return &read[i];
return NULL;
}
/////////////////////////////////////////////
void disp() //职工信息显示
{
for (int i=0;i〈=top;i++)
read[i].disp();
}
//////////////////////////////////////////////////
void empdata();
~Database() //将read[]中的信息读如到employee。txt中
{
fstream file(”employee.txt”,ios::out);
for (int i=0;i<=top;i++)
if (read[i].gettag()==0)
file。write((char *)&read[i],sizeof(read[i]));
file。close();
}
};
6. 模块分析
6.1添加:
void Database::empdata()//职工维护
{
int choice=1;
int m=1;int b=1;
char rname[20];
int empid; int empsa;char q[20];
Employee *r;
while (choice!=0)
{
cout<<”职工维护 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>”;
cin>>choice;
switch (choice)
{
case 1:
cout〈〈setw(50)〈<” ┌—-—-—---———————┐\n”;
cout<〈setw(50)〈<” │ 请选择您所需的操作 │\n”;
cout<<setw(50)<〈" │ 经理: 1,并按回车键 │\n";
cout<<setw(50)〈<” │ 销售经理: 2,并按回车键 │\n";
cout<<setw(50)<〈” │ 兼职推销员: 3,并按回车键 │\n";
cout<<setw(50)<<” │ 兼职技术人员 4,并按回车键 │\n”;
cout〈<setw(50)<〈" └———-—-—————-———┘\n”;
cout〈<setw(50)〈<” 公司总人数:"<〈renshu<<endl;
cin>〉m;
while(m!=0)
{
switch(m)
{
case 1:
cout〈〈"输入经理编号:”;
cin>>empid;
cout<〈"输入经理姓名:";
cin〉>rname;
addemp(empid,8000,rname,"经理");
renshu++;
break;
case 2:
cout〈<”输入销售经理编号:”;
cin>>empid;
cout〈<”输入月提成: ";
cin>〉empsa;
cout〈〈"输入销售经理姓名:";
cin〉>rname;
addemp(empid,4000+empsa,rname,”销售经理");
renshu++;
break;
case 3:
cout〈<"输入兼职推销员编号:”;
cin〉〉empid;
cout〈〈”输入销售额提成: ";
cin>>empsa;
cout<〈"输入兼职推销员姓名:”;
cin>>rname;
addemp(empid,empsa,rname,"兼职推销员”);
renshu++;
break;
case 4:
cout〈〈"输入兼职技术人员编号:”;
cin〉〉empid;
cout〈〈"输入工作小时: ”;
cin〉>empsa;
cout〈<”输入兼职技术人员姓名:";
cin〉>rname;
addemp(empid,20*empsa,rname,"兼职技术人员");
renshu++;
break;
}
break;
}
break;
6。2更改:
case 2:
cout<〈"输入职工编号:”;
cin〉>empid;
r=query(empid);
if (r==NULL)
{
cout<〈"该职工不存在”<〈endl;
break;
}
cout〈<”输入新的工资:”〈<endl;
cin>>empsa;
r-〉getsalary(empsa);
cout〈<"请输入新的及级别"〈<endl;
cin>>q;
r—>setzw(q);
addemp(empid,empsa,rname,q);
break;
6。3删除:
case 3:
cout〈〈”输入职工编号:”;
cin〉〉empid;
r=query(empid);
if (r==NULL)
{
cout〈<"该读者不存在”<〈endl;
break;
}
r->delna();
break;
6.4查找:
case 4:
cout<<setw(50)〈〈” ┌—-——————-————┐\n";
cout〈<setw(50)〈<" │ 请选择您所需的操作 │\n";
cout〈<setw(50)<〈" │ 按编号查找1,并按回车键 │\n";
cout〈<setw(50)<〈" │ 返回 2,并按回车键 │\n”;
cout〈〈setw(50)<〈" └—————-——--———┘\n";
cin〉〉b;
while(b!=0)
{
switch(b)
{
case 1:
cout<〈"输入职工编号:”;
cin>〉empid;
r=query(empid);
if (r==NULL)
{
cout<<”该职工不存在"〈〈endl;
break;
}
cout〈<”├—————┼—————┼—-———┼————-—-┤"〈〈endl;
cout<<"│"<<setw(10)〈〈”编号”〈〈"│"〈〈setw(10)〈<"姓名"<<"│"<<setw(10)〈<"工资”〈<”│”<<setw(10)〈<"级别”<〈” │”<<endl;
cout<〈”├——-——┼———-—┼——-—-┼—-—————┤"<<endl;
r—〉disp();
break;
case 2:
break;
}
break;
}
break;
6.5显示:
case 5:
cout〈〈"├—-———┼—-——-┼—-—--┼———-—-—┤"<〈endl;
cout<<"│”〈<setw(10)<<”编号”〈〈"│"〈〈setw(10)<〈"姓名”<〈”│”<<setw(10)〈<"工资"<<”│”<〈setw(10)〈<”级别"〈<” │"<〈endl;
cout〈〈”├—--——┼——--—┼————-┼-————--┤”〈〈endl;
disp();
6.6全部删除:
case 6:
clear();
break;
}
}
/////////////////////////////////////////////////////////////
void main()
{
int choice=1;Database EmpDB;
while(choice!=0)
{
cout<<”********************************************************************************"〈<endl;
cout<<endl;
cout〈<endl;
cout〈<setw(20)〈〈"******************************欢迎使用职工管理系统******************************"<〈endl;
cout<〈endl;
cout<<endl;
cout〈〈setw(50)〈<” ┌—-—---———-——-——┐\n";
cout〈<setw(50)〈〈” │ 欢迎使用公司员工管理系统 │\n";
cout〈〈setw(50)〈〈” │ │\n”;
cout〈<setw(50)〈〈” │ 请选择您所需的操作 │\n";
cout〈<setw(50)〈〈” │ │\n”;
cout<<setw(50)<<" │ 操作 1,并按回车键 │\n";
cout〈〈setw(50)<<" │ │\n”;
cout〈〈setw(50)<<” │ 返回 0,并按回车键 │\n”;
cout〈<setw(50)〈〈” └———————--——————┘\n";
cin>〉choice;
switch(choice)
{
case 1:
while(1)
{
cout<<setw(20);
EmpDB。empdata();
break;
break;
}
}
}
}
7. 系统测试
开始
选择“1”,进行操作:
,出现职工维护:
选择任务1新增,并且添加一个经理职务:
我们先选择4查询任务,并按编号查询:
选择5显示任务:
选择3删除任务,并按编号删除:
展开阅读全文