1、个人收集整理 勿做商业用途 课程设计说明书 课 程 名 称: 面向对象程序设计 题 目: 公司员工管理系统 年级/专业/班: 学 生 姓 名: 学 号: 目 录 1 引 言
2、 1。1 问题的提出 1.2任务与分析 2 程序的主要功能 2。1新增功能
3、 2.2更改功能 2.3 删除信息 2.4查找功能 2。5显示功能
4、 2.6全部删除功能 3 程序运行平台 4 总体设计 5 程序类的说明
5、 6 模块分析 6.1 添加模块 6.2 显示模块 6。3 修改模块
6、 6。4 查找模块 6。5 删除模块 6。6 清空模块 7 系统测试
7、 引言 1.1 问题的提出 随着计算机的普及,网络进入大宗的家庭,不论在工作、学习还是生活中,人们越来越离不开它,社会上,计算机及使用计算机的人几乎是随处可见。人们用计算机,是因为它能反映现实世界,随着计算机越来越深入到人们的实际生活,如何把计算机科学更好的应用于实际,最大限度解决人们日常问题已经成为许多人热衷的研究方向。 1.2 任务与分析 1. 人数其中,人员编号在生成人员信息时同时生成,
8、每输入一个人员信息编号顺序加1。 2. 升级程序对所有人员有提升级别的功能 3. 工资计算薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成。 4. 修改能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息 5. 在基本要求达到后,可设计出比较友好的界面(如下拉菜单),也可用VC++ ClassWizard 设计. 2. 程序的主要功能 1. 新增(添加新职员,计算工资) 2. 更改(更改职员信息) 3. 删除(删除职员信息) 4. 查找(显
9、示所要寻找的职员信息) 5. 显示(显示所有职员的信息) 6. 全删(删除所有职员的信息) 3. 程序运行平台 WINDOWS XP/2000 VC++ 4. 总体设计 4.1 主要流程图 开始 选定相应操作序号 退出 增加 修改 删除 查询 显示 输 入 数 据 保 存 到 文 件 退 出 显示信息 图2-1 流程图 4.2 N-S图 开始 键盘输入操作序号 判断炒作序号 操作序号传入函数 按要求输入相关数
10、据 数据保存到文件 退出 图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 getsa
11、lary(){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;
12、
strcpy(name,na);
strcpy(zw,q);
}
void disp()//显示职工信息
{
cout<〈"│"〈〈setw(10)< 13、////
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 14、]=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 15、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;
}
////////////////////////////// 16、///////////////////
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++) 17、
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] 18、
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 19、choice)
{
case 1:
cout〈〈setw(50)〈<” ┌—-—-—---———————┐\n”;
cout<〈setw(50)〈<” │ 请选择您所需的操作 │\n”;
cout< 20、人员 4,并按回车键 │\n”;
cout〈 21、
renshu++;
break;
case 2:
cout〈<”输入销售经理编号:”;
cin>>empid;
cout〈<”输入月提成: ";
cin>〉empsa;
cout〈〈"输入销售经理姓名:";
cin〉>rname;
addemp(empid,4000+empsa,rname,”销售经理");
renshu++;
break;
case 3:
cout〈<"输入兼职推销员编号:”;
ci 22、n〉〉empid;
cout〈〈”输入销售额提成: ";
cin>>empsa;
cout<〈"输入兼职推销员姓名:”;
cin>>rname;
addemp(empid,empsa,rname,"兼职推销员”);
renshu++;
break;
case 4:
cout〈〈"输入兼职技术人员编号:”;
cin〉〉empid;
cout〈〈"输入工作小时: ”;
cin〉>empsa;
cout〈<”输入兼职技术人员姓名:";
23、 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〈<”输入新的工资:”〈< 24、endl;
cin>>empsa;
r-〉getsalary(empsa);
cout〈<"请输入新的及级别"〈 25、}
r->delna();
break;
6.4查找:
case 4:
cout< 26、b!=0)
{
switch(b)
{
case 1:
cout<〈"输入职工编号:”;
cin>〉empid;
r=query(empid);
if (r==NULL)
{
cout<<”该职工不存在"〈〈endl;
break;
}
cout〈<”├—————┼—————┼—-———┼————-—-┤"〈〈endl;
cout<<"│"< 27、│"< 28、〈〈setw(10)<〈"姓名”<〈”│”< 29、
while(choice!=0)
{
cout<<”********************************************************************************"〈 30、<” ┌—-—---———-——-——┐\n";
cout〈 31、etw(50)<<" │ │\n”;
cout〈〈setw(50)<<” │ 返回 0,并按回车键 │\n”;
cout〈






