1
《 面 向 对 象 程 序 设 计 (C++)》
课 程 大 作 业
项目名称: 年终奖励发放系统
班 级:
姓名学号:
完成时间:
指导教师:
日期: 2012 年 2 月 26 日
2
目录
一、需求分析 ......................................................................................................................................................................3
开发背景 ....................................................................................................................................................................3
项目目标 ...................................................................................................................................................................3
运行环境 ...................................................................................................................................................................3
二、程序分析 ......................................................................................................................................................................3
技术要点 ...................................................................................................................................................................3
项目任务书 ................................................................................................................................................................7
三、技术路线 ......................................................................................................................................................................7
总体方案 ....................................................................................................................................................................7
软件及开发平台................................................................................................................................................7
总体方案............................................................................................................................................................7
详细设计 ...................................................................................................................................................................7
四、工程进度 ......................................................................................................................................................................9
五、测试报告 ......................................................................................................................................................................9
阶段性测试 ...............................................................................................................................................................9
总体测试 .............................................................................................................................................................一三
六、个人小结 ....................................................................................................................................................................14
附录 程序源代码 ..............................................................................................................................................................16
3
一、需求分析
开发背景
年终奖就是老板给予员工不封顶的奖金,有的还包括了旅游奖励、物质奖励等,是一年
来的工作业绩奖励,也是可给可不给的一个项目。年终奖的发放额度和形式一般由企业自己
根据情况调整。好的年终奖办法要有较好的考评指标、评价方法、发放规则等等相应的各项
制度,可以有效激励员工,增加企业凝聚力。因此,几乎每个公司每年年末都会根据各个员
工一年的表现发放相应的奖金。
针对以上背景,我们提出了一个年终奖励发放系统的方案,并通过对该系统的操作性、
可行性及实用性等各个方面的分析,最终确定了该方案即为我们的设计方向。
方案提出者:江燊、董诗雅、熊昌磊
开发者:江燊、董诗雅、熊昌磊
用户:所有需要发放年终奖励的公司
项目目标
通过该系统,能够实现对员工的基本信息及一年工作业务量的管理,可以让员工注册自
己的信息、查询自己本年度的奖金,也可以让管理人员录入、修改、删除员工的业务量,由
财务处算出奖金,最后总经理确认奖金的发放。
运行环境
软件:运行在 Windows 软件(Visual C++ )环境下;
硬件:能够运行 Windows 软件的 PC 机或笔记本电脑;最低配置:要求内存大于 128M,
硬盘大于 1G。
二、程序分析
技术要点
系统结构图:
4
程序流程图:
年终奖金发
放系统
录入基本信
息
普通员工
查询系统
管理人员
管理系统
计算年终奖
金
查询 人力资源部 财务部 总经理
录入考勤、
业务量等考
核数据
查询考核数
据
修改考核数
据
删除考核数
据
审核奖金并
确认
确认奖金发
放
图 2-1 系统结构图
5
按 需 求 选 择
相应的功能
开始
功能 1:
录入基
本信息
功能 2:
普 通 员
工 查 询
系统
功能 3:
管 理 人
员 管 理
系统
进入相应的功能系统
图 2-2 主流程图
开始
用户登录
进行录入
结束
图 2-3 录入基本信息流程图
开始
用户登录
查询奖金
结束
图 2-4 普通员工查询系统流程图
6
开始
选择部门
人力资源部
用户登录
按需求选择
相应功能
总经理
用户登录
确认奖金发放
财务部审核
完毕并确认
财务部
用户登录
审核奖金并确
认
人力资源部
录入完毕
录入考核数据
查询考核数据
修改考核数据
删除考核数据
退出系统
图 2-5 管理人员管理系统流程图
7
项目任务书
江燊负责编写 Employee 类、员工注册系统及程序设计报告。
董诗雅负责编写员工查询系统。
熊昌磊负责编写 Database 类及管理人员管理系统。
三人一起进行调试修改。
三、技术路线
总体方案
软件及开发平台
在 Windows XP 环境下,采用 M 采用 Microsoft 公司的 Visual C++作为开发平台。利用
面向对象的思想实现一个报纸杂志的订阅管理使用类的封装性,抽象性,继承性和多态性。
总体方案
系 统 中 应 用 的 头 文 件 : #include <> , #include <> , #include
<> ,#include <> ,#include<>,#include<>
创建的类: Employee //职工类 Database //职工数据类
我们通过主函数实现对类的利用,实现管理人员对员工信息的增添、删除、查询、修改
等一系列的功能。
构造函数用于读入文件中的信息,析构函数用于把信息写入文件,即系统运行时会通过
构造函数自动读入信息,存于内存,而新输入的信息也会先保存在内存在,当系统运行结束
时,自动调用析构函数把信息写入文件。
创建 2 个文件, 用于存放员工基本信息, 用于保存职工的奖金信息。
我们在此基础上设立了可执行的操作界面。
详细设计
系统中涉及的类:
Employee //职工类
Database //职工数据类
详细信息:
1、类名:Employee
私有成员:
int tag;//删除标记
int no;//职工编号
char name[20]; //职工姓名
char zw[20]; //职工职位
int salary;//职工工资
8
char code[20];
公有成员:
Employee()
char *getname()//获取名字
char *getzw()//获取职位
int gettag()//获取标记
int getno()//获取编号
int getsalary()
char *getcode()
void setzw(char q[])//设置名字
void setname(char na[])//设置名字
void setcode(char na[])
void getsalary(int sa)
void delna()//删除
void addemp(int n,int sa,char *na,char *q)//增加
void addemp2(int n ,char *na ,char *q)//增加员工基本信息
void disp()//显示职工信息
2、类名:Database
私有成员:
int top;
Employee read[Maxr],basic[Maxr];
公有成员:
Database()//将职工工资信息从 读取到 read[]中 ,将职工基本信息从
读取到 basic[]中
void clear()//删除所有
int addemp (int n, int sa,char *na,char*q) //增加职工
int addemp2(int n ,char *na,char *q)//增加职工基本信息
Employee *query(int empid) //从职工工资信息中定位编号
Employee *query2(int empid) //从员工基本信息中定位编号
Employee *query1(char empna[20]) //从职工工资信息中定位姓名
Employee *query3(char empna[20]) //从员工基本信息中定位姓名
void disp() //职工信息显示
void screen();
void screen1();
void screen2();
void empdata();//人力资源部管理
9
void Search();
void manager();
void basic2();//普通员工注册系统
~Database() //将 read[]中的信息读如到 中
四、工程进度
任务阶段 时间 计划完成工作 实际完成情况
分析选题阶段
2012 年 1 月 7 日上
午
对大作业所给题目进
行分析,查阅资料,
最终选择感兴趣的题
目并确定方案
经过组员讨论,决定
选择“年终奖励系统”,
随之确定开发方案
规划系统功能,设计
数据结构及类层次阶
段
2012 年 1 月 7 日下
午
至 2012 年 1 月 9 日
上午
确定整体框架,编写
大作业中所用到的各
个类及其对应函数
成功确定整体框架,
并编写出大作业中所
用到的各个类及其对
应函数
函数编写阶段
2012 年 1 月 10 日至
2012 年 2 月一五日
编写所要用到的函数,
功能函数
成功编写出大作业中
所要用到的通用函数,
功能函数
界面编写阶段
2012 年 2 月 16 日至
2012 年 2 月 20 日
确定软件界面,并优
化各操作界面
成功确定软件界面,
并了优化各操作界面,
使软件更加完整,可
用性提高
程序调试阶段
2012 年 2 月 21 日至
2012 年 2 月 23 日
调试整个程序,用大
量数据对每个功能进
行测试,并邀请其他
同学充当用户进行测
试
测试成功,各项功能
均正常实现,用户反
应良好
报告填写阶段
2012 年 2 月 24 日至
2012 年 2 月 26 日
填写实验报告,为整
个程序填加必要注释
完成实验报告,出色
地完成了流程图设计
与表格设计,使整个
实验报告可读性大大
提高
五、测试报告
阶段性测试
在程序基本设计好的时候,我们对整个程序进行了一次比较系统的测试,对各个子系统
的主要功能也都用数据进行了检测,以确保程序的正确性,同时希望程序能够完成对不同员
工信息的输入及显示,从而实现对报纸、杂志订阅系统进行管理。此次测试是在 2012 年 2
表 4-1 工程进度一览表
10
月 21 日进行的。
以下是这次测试的具体结果:
系统主界面:
输入 1,则进入普通员工注册系统
根据职位输入相应数字,系统则会提示输入员工的基本信息,输入成功后会自动跳回主
界面。
输入 2,则进入普通员工查询系统
根据提示输入数字查询,例如:输入 1
图 5-3 普通员工查询系统界面
图 5-2 普通员工注册系统界面
图 5-1 奖金发放系统主界面
11
又例如输入 2:
查询成功后按回车键即可返回
输入 3 则返回主界面
输入 3,则进入管理人员管理系统
根据提示输入数字
1)例如:输入 1,系统会提示用户输入编号,普通员工是没有权利进入的
图 5-4 根据编号查询
图 5-6 管理人员管理系统界面
图 5-5 根据姓名查询
图 5-7 人力资源部界面
12
输入 1,系统会提示输入员工编号
输入 2,则是对员工的奖金进行更改
输入 3,则是删除某位员工的信息
输入 4,则是对员工的奖金信息进行查询
输入 5,则会显示全部员工奖金信息
输入 6,则是删除全部奖金信息
输入 0,则返回主界面
2)例如:输入 2
图 5-8 新增奖金
图 5-9 显示所有奖金
图 5-10 财务部确认
13
3)例如:输入 3
4)输入 4,则返回主界面
此阶段测试基本达到目的。
总体测试
2012 年 2 月 23 日晚上,我们对程序进行了最后一次测试,主要内容与阶段测试相同,
只是改变了一些界面,使其看起来更美观更好使用。以下是修改后的界面:
图 5-11 总经理确认
图 5-12 修改后的主界面
图 5-一三 退出界面
14
六、个人小结
1、**的个人小结
这次的大作业,是对编程能力的一种检验,尤其是对 C++的运用能力,C++和 C 最大的
不同就在于它对类的应用,也正是因为有了类,让我们在编程过程中省了不少麻烦。但是也
因为 C++是刚学的,而且之前并没有接触到 C++中文件的应用,这就让我们在编写初期有了
比较大的困难,但是功夫不负有心人,经过我们的努力,我们成功的把信息写入文件也实现
了文件的读入,这让我们激动有成就感,也鼓励着我们继续努力。虽然这次写的只是一个小
系统,几乎没什么用处,但是对我们而言,它依旧是那么珍贵,因为它是我们努力的成果,
是我们对所学知识的理解和运用,具有极大的意义。
当然了,每一个成就的背后,都离不开团队的合作,我们的系统也一样。作为我们小组
的组长,我对大家的任务进行了划分,而大家也很配合,正是这种团队合作的努力,我们的
系统才能成功完成。往往一个人遇到了问题大家通过讨论和学习一个大的困难变成了一个小
的问题,很自然就解决了。我想这种团队合作的精神,不仅仅是现在需要,以后的生活学习
更需要,通过大家一起交流学习,那才能取得最大的进步。
2、**的个人小结
就我个人而言,我认为 C++相对于数据结构来说还是比较简单的,有些东西不许要特别
的去说明,比如说构造函数和析构函数就是可以把读文件和写文件功能实现,还有非常重要
的一点是,我认为 C++用的语言很简单但是很实用,去掉了某些非常繁琐的步骤,并且它将
一个类别的事件作为一个整体来向我们呈现出来,拿到我们写得这个程序来说,实际意义上
的核心部分还是就是职工类和职工数据类这两个类,简单明了的用其来把实际问题解决掉,
实际上,对于我们来说,我们在大学的学习就是为了简化我们的思路,让我们能够运用有限
的知识来解决实际问题,从这个大作业来看,虽然它是一个很小的系统,但是它还是能体现
我们的思路,我们解决这个问题的具体步骤,我想我们以后走上工作岗位的时候,我们也会
从这个方面考虑,还有就是很重要的一点就是团队的力量,用我高中老师的话来说就是:"在
一个失败的班集体中,没有一个真正意义上的成功者",所以在这个寒假中,我充分体验到了
团队的力量,我们将我们的任务划分成好几个部分,我们三没人完成一个部分,虽然我们做
的工作都很单一,但是绑在一起就会产生微妙的变化,所以我还是能够感受得到"一根筷子是
15
很脆弱的,但是一把筷子是很坚韧的"的道理,还有一点就是,我通过这次的编写,我自己感
觉我的编程能力正在渐渐增长......
3、**的个人小结
通过这次大作业,我们对面向对象编程的思想以及模块化编程有了更为深刻的理解,同
时掌握了一些编程中应注意的问题以及技巧。最重要的是我们通过团队的力量来完成了它,
深度投入的采用了分工合作的精神完成了这个任务。
完成一个系统的设计,要明确要求,构建整体思想,需要构造哪些类,每个类要设置哪
些属性,如何设置这些类的接口,设计好后要对相应的项进行的处理,都需要在编程之前考
虑好,并画出方案的流程图,将整体思想图纸化。每件事总是说起来容易做起来难,我们先
根据要求设计了一个系统实现流程图,在实际操作中发现它很难实现,最后经过小组的多次
讨论和借鉴网上资源完善了思想。
在实施的过程中发现了自己的不足之处和对知识理解不深的地方,任何一个环节出现小
小的疏忽都会导致整个设计的失败,对不确定的地方一定要查阅资料,不能想当然的做。我
们在平时需要注重收集,将一些常用的、自己编写的类、函数,都保存下来,这样将来用到
的时候,就可以方便的搜索以及使用。同时,小组成员在分工协作的时候要多交流、勤思考,
在编写程序的时候要善于试用注释,为了让别人看懂自己的程序或着避免自己因为时间长了
看不懂当初自己写的程序。在整个大作业过程中,大家一起发现修改错误,完善设计。小组
成员互相协作,为本次实验画了一个圆满的句号。
小组的分工协助合作精神也起着互助的一个关键,以后若大的项目不是一力之力其成。
高效的开发效率,众多新颖功能都是来自各人独特的新意,良好的分工合作,达到每人都有
事做,全心投入这块的设计中,小组成员都必须遵从组长的安排,做到服从,认同和内化。对块
合作一定要充足自信心,没有个人的成功,只有小组目标共同的达成。
运用多维评价也是大家分工互助中不可缺少的一环,及时找出现有的缺陷,自我评价和互
相评价,从而集合成组内单一的评价,来达到组内各同学的共识,形成良好的互助条件,也是小
组内合作成效的关键。
还想说的是,程序有不足之处,还请老师帮忙改进一下。
附录 程序源代码
16
#include <>
#include <>
#include <>
#include <>
#include<>
#include<>
int k=0;//定义总经理是否签字的全局变量
const int Maxr=100;
class Employee { //职工类
int tag;//删除标记
int no;//职工编号
char name[20];
char zw[20];//职工姓名
int salary;//职工工资
char code[20];
public:
Employee(){}
char *getname() {return name;}//获取名字
char *getzw(){return zw;}
int gettag() {return tag;}//获取标记
int getno() {return no;}//获取编号
int getsalary(){return salary;}
char *getcode(){return code;}
void setzw(char q[])//设置名字
{
strcpy(zw,q);
}
void setname(char na[])//设置名字
{
strcpy(name,na);
}
void setcode(char na[])
{
strcpy(code,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);
}
17
void addemp2(int n ,char *na ,char *q)//增加员工基本信息
{
tag=0;
no=n;
strcpy(name,na);
strcpy(zw,q);
}
void disp()//显示职工信息
{
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
cout<<" │"<<setw(10)<<getno()<<" │"<<setw(10)<<getname()<<" │"<<setw(10)<<getsalary()<<" │
"<<setw(10)<<getzw()<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
}
};
class Database{ //职工数据类
int top;
Employee read[Maxr],basic[Maxr];
public:
Database()//将职工工资信息从 读取到 read[]中 ,将职工基本信息从 读取到 basic[]
中
{ Employee s;
top=-1;
fstream file("",ios::in);
while (1)
{
((char *)&s,sizeof(s));
if (!file) break;
top++;
read[top]=s;
}
();
top=-1;
fstream file2("",ios::in);
while (1)
{
((char *)&s,sizeof(s));
if (!file2) break;
top++;
basic[top]=s;
}
();
18
}
void clear()//删除所有
{
top=-1;
}
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;
}
int addemp2(int n ,char *na,char *q)//增加职工基本信息
{
Employee *p=query2(n);
if (p==NULL)
{
top++;
basic[top].addemp2(n,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 *query2(int empid) //从员工基本信息中定位编号
{
for (int i=0;i<=top;i++)
if (basic[i].getno()==empid && basic[i].gettag()==0)
return &basic[i];
return NULL;
}
19
Employee *query1(char empna[20]) //从职工工资信息中定位姓名
{
for (int i=0;i<=top;i++)
if ((strcmp(read[i].getname(),empna)==0 )&& read[i].gettag()==0)
return &read[i];
return NULL;
}
Employee *query3(char empna[20]) //从员工基本信息中定位姓名
{
for (int i=0;i<=top;i++)
if ((strcmp(basic[i].getname(),empna)==0 )&& read[i].gettag()==0)
return &basic[i];
return NULL;
}
void disp() //职工信息显示
{
for (int i=0;i<=top;i++)
read[i].disp();
}
void screen();
void screen1();
void screen2();
void empdata();
void Search();
void manager();
void basic2();
~Database() //将 read[]中的信息读如到 中
{
fstream file("",ios::out);
for (int i=0;i<=top;i++)
if (read[i].gettag()==0)
((char *)&read[i],sizeof(read[i]));
();
fstream file2("",ios::out);
for (i=0;i<=top;i++)
if (basic[i].gettag()==0)
((char *)&basic[i],sizeof(basic[i]));
();
}
};
void Database::basic2()//普通员工注册系统
{
20
char rname[20];
int choice=1;
int m=1;
int b=1;
int empid;
Employee *r;
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)<<" └—————————————┘\n";
cin>>m;
switch(m)
{
case 1:
cout<<"输入经理编号:";
A:cin>>empid;
r=query2(empid);
if(r!=NULL){
cout<<"您输入的这个编号资料库已存在!\n 请重新输入编号";
goto A;}
cout<<"输入经理姓名:";
cin>>rname;
addemp2(empid,rname,"经理");
break;
case 2:
cout<<"输入业务经理编号:";
B:cin>>empid;
r=query2(empid);
if(r!=NULL){
cout<<"您输入的这个编号资料库已存在!\n 请重新输入编号";
goto B;}
cout<<"输入业务经理姓名:";
cin>>rname;
addemp2(empid,rname,"业务经理");
break;
case 3:
cout<<"输入职工编号:";
C:cin>>empid;
r=query2(empid);
if(r!=NULL){
cout<<"您输入的这个编号资料库已存在!\n 请重新输入编号";
goto C;}
cout<<"输入职工姓名:";
cin>>rname;
21
addemp2(empid,rname,"普通职工");
break;
break;
}
}
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<<setw(50)<<" 1: 新增 2:更改\n";
cout<<setw(50)<<" 3: 删除 4:查找\n";
cout<<setw(50)<<" 5: 显示 6:全删\n";
cout<<setw(45)<<" 0: 退出\n";
cin>>choice;
switch (choice)
{
case 1:
cout<<"请输入要发放奖金的员工编号:";
C:cin>>empid;
r=query2(empid);
if(r==NULL){
cout<<"您输入的员工编号不存在资料库中!请重新输入:";goto C;}
cout<<"您输入这个员工的姓名是: "<<r->getname()<<" 职位是: "<<r->getzw()<<endl;
if(strcmp(r->getzw(),"经理")==0){
cout<<"经理基本工资为 8000,没有年终提成!"<<endl;
addemp(empid,8000,r->getname(),"经理");}
if(strcmp(r->getzw(),"业务经理")==0){
cout<<"业务经理基本工资为 4000"<<endl;
cout<<"输入年终业绩提成总额: ";
cin>>empsa;
addemp(empid,4000+empsa,r->getname(),"业务经理");
}
if(strcmp(r->getzw(),"普通职工")==0){
cout<<"普通员工没有固定工资"<<endl;
cout<<"输入年终业绩提成总额: ";
cin>>empsa;
addemp(empid,empsa,r->getname(),"普通职工");
}
22
break;
case 2:
cout<<"输入职工编号:";
cin>>empid;
r=query(empid);
if (r==NULL)
{
cout<<"该职工不存在"<<endl;
break;
}
cout<<"您输入这个员工的姓名是: "<<r->getname()<<" 职位是: "<<r->getzw()<<endl;
cout<<"输入新的工资:"<<endl;
cin>>empsa;
r->getsalary(empsa);
cout<<"请输入新的职务"<<endl;
cin>>q;
r->setzw(q);
addemp(empid,empsa,rname,q);
break;
case 3:
cout<<"输入职工编号:";
cin>>empid;
r=query(empid);
if (r==NULL)
{
cout<<"该读者不存在"<<endl;
break;
}
cout<<"您输入这个员工的姓名是: "<<r->getname()<<" 职位是: "<<r->getzw()<<endl;
r->delna();
break;
case 4:
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)<<" └—————————————┘\n";
cin>>b;
while(b!=0)
{
switch(b)
{
case 1:
cout<<"输入职工编号:";
cin>>empid;
23
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:
cout<<"输入职工姓名:";
cin>>rname;
r=query1(rname);
if(r==NULL)
{
cout<<"该职工不存在"<<endl;
break;
}
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│"<<setw(10)<<"年终奖金
"<<"│"<<setw(10)<<"职务"<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
r->disp();
break;
case 3:
break;
}
break;
}
break;
case 5:
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
cout<<" │"<<setw(10)<<" 编号"<<" │"<<setw(10)<<" 姓名"<<" │"<<setw(10)<<" 年终奖金"<<" │
"<<setw(10)<<"职务"<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
disp();
break;
case 6:
clear();
break;
}
}
}
24
void Database::Search(){
int empid;
char rname[20];
int b;
Employee *r;
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)<<" └—————————————┘\n";
cin>>b;
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:
cout<<"输入职工姓名:";
cin>>rname;
r=query1(rname);
if(r==NULL)
{
cout<<"该职工不存在"<<endl;
break;
}
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│"<<setw(10)<<"年终奖金
"<<"│"<<setw(10)<<"职务"<<"│"<<endl;
cout<<"├—————┼—————┼—————┼—————┤"<<endl;
r->disp();
break;
case 3:
25
break;
}
}
void Database::manager(){
char a;
int choice;
int empid;
Employee *r;
cout<<setw(20);
cout<<"请输入您的选择:";
cin>>choice;
switch(choice)
{
case 1:system("cls");
cout<<"********************************************************************************"<<en
dl;
cout<<endl;
cout<<endl;
cout<<setw(20)<<"****************************** 欢 迎 来 到 人 力 资 源 部
******************************"<<endl;
cout<<endl;
cout<<endl;
cout<<"请输入编号登陆:";
cin>>empid;
r=query2(empid);
if (r==NULL)
{
cout<<"该职工不存在"<<endl;
break;
}
if(strcmp(r->getzw(),"普通职工")!=0){
cout<<"欢迎人力资源部的工作人员!"<<endl;
cout<<"您有特权进行一下操作"<<endl;
empdata();
break;}
else
{cout<<"您是普通员工,没有权限进行一下操作"<<endl;break;}
case 2:system("cls");
cout<<"********************************************************************************"<<en
dl;
cout<<endl;
26
cout<<endl;
cout<<setw(20)<<"****************************** 欢 迎 来 到 财 务 部
******************************"<<endl;
cout<<endl;
cout<<endl;
cout<<"请输入编号登陆:";
cin>>empid;
r=query2(empid);
if (r==NULL)
{
cout<<"该职工不存在"<<endl;
break;
}
if(strcmp(r->getzw(),"普通职工")!=0){
cout<<"欢迎财务部的工作人员!"<<endl;
cout<<"人力资源部已将员工的基本信息输入完毕!"<<endl;
cout<<"是否审核?(按 y 确定)";
cin>>a;
if(a=='y'){
disp();
cout<<"审核完毕!资料已经转移至总经理办公室"<<endl;}
else cout<<"未审核!资料未转移!"<<endl;k=1;
break;}
else
{cout<<"您是普通员工,没有权限进行一下操作"<<endl;break;}
case 3:system("cls");
cout<<"********************************************************************************"<<en
dl;
cout<<endl;
cout<<endl;
cout<<setw(20)<<"****************************** 欢 迎 进 入 总 经 理 办 公 室
******************************"<<endl;
cout<<endl;
cout<<endl;
cout<<"请输入编号登陆:";
cin>>empid;
r=query2(empid);
if (r==NULL)
{
cout<<"该职工不存在"<<endl;
break;
}
if(strcmp(r->getzw(),"普通职工")!=0 && strcmp(r->getzw(),"业务经理")!=0){
cout<<"欢迎总经理!"<<endl;
if(k==1) {
27
cout<<"财务部已经将年终奖金审核完毕!是否签字?(按 y 确定)";
cin>>a;
if(a=='y')
{cout<<"已签字,可以发放奖金"<<endl;k=0;}
else
{cout<<"总经理没有签字,不能发放奖金"<<endl;k=0;}
break;}
else
cout<<"财务部还没有审核年终奖金,等其签好了再签字吧!"<<endl; }
else
{cout<<"您不是总经理,没有权限进行一下操作"<<endl;break;}
}
}
void Database::screen(){
cout<<"********************************************************************************"
<<endl;
cout<<endl;
cout<<endl;
cout<<setw(20)<<" ,'''⌒⌒⌒⌒⌒.',''',,',.'',,','',. "<<endl;
cout<<setw(20)<<" ⌒⌒██⌒''o',''',,',.''.'',,',. "<<endl;
cout<<setw(20)<<" |田|田田│ '',,',.',''',,',.'' "<<endl;
cout<<setw(20)<<" ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬"<<endl;
cout<<setw(20)<<" 欢迎使用奖金发放系统 "<<endl;
cout<<endl;
cout<<endl;
cout<<setw(50)<<" ┌—————————————┐\n";
cout<<setw(50)<<" │ 请选择您所需的操作 │\n";
cout<<setw(50)<<" │ │\n";
cout<<setw(50)<<" │ 操作 1,普通员工注册系统 │\n";
cout<<setw(50)<<" │ │\n";
cout<<setw(50)<<" │ 操作 2,普通员工查询系统 │\n";
cout<<setw(50)<<" │ │\n";
cout<<setw(50)<<" │ 操作 3,管理人员管理系统 │\n";
cout<<setw(50)<<" │ │\n";
cout<<setw(50)<<" │ 返回 0,并按回车键 │\n";
cout<<setw(50)<<" └—————————————┘\n";
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
}
void Database::screen1(){
cout<<"********************************************************************************"
<<endl;
28
cout<<endl;
cout<<endl;
cout<<setw(20)<<"****************************** 欢 迎 来 到 普 通 员 工 查 询 系 统
******************************"<<endl;
cout<<endl;
cout<<endl;
}
void Database::screen2(){
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)<<" │ 操作 1,人力资源部 │\n";
cout<<setw(50)<<" │ │\n";
cout<<setw(50)<<" │ 操作 2,财务部 │\n";
cout<<setw(50)<<" │ │\n";
cout<<setw(50)<<" │ 操作 3,总经理办公室 │\n";
cout<<setw(50)<<" │ │\n";
cout<<setw(50)<<" │ 返回 4,并按回车键 │\n";
cout<<setw(50)<<" └—————————————┘\n";
cout<<endl;
cout<<endl;
}
void main() {
int choice=1;
Database EmpDB;
while(choice!=0)
{
();
cin>>choice;
switch(choice)
{
case 1:
system("cls");
();
getch();
29
break;
case 2:
system("cls");
();
();
getch();
break;
case 3:
system("cls");
();
();
break;
case 0:system("cls");
cout<<" \\\/// "<<endl;
cout<<" \\ .-.- // "<<endl;
cout<<" . ( . ) "<<endl;
cout<<" +-------oOOo-----(_)-----oOOo---------+ "<<endl;
cout<<" | | "<<endl;
cout<<" | 谢 谢 使 用!!! | "<<endl;
cout<<" | | "<<endl;
cout<<" +---------------------Oooo------------+ "<<endl;
cout<<" "<<endl;
cout<<" ┬┴┬┌─ ●─┬─ │─┼─┐ ●├─┤○"<<endl;
cout<<" ┴┬┴├┬ ┌─┼─ │⌒ │ │ ○└┬┘●"<<endl;
cout<<" ─┼─││ │ │ ││─┴─┴ ──┼──"<<endl;
cout<<" ●│○││ ┴─┼─ │○ ● / │ \"<<endl;
break;
}
}
}
大作业评阅报告
项目名称:
班 级:
姓名学号:
完成时间:
评语:
成绩(满分 20 分):
指导教师签名:
时间: