面象程序设计(C++)
课程作业
工程名称: 年终奖励发放系统
班 级:
姓名学号:
完成时间:
指导教师:
日期: 2021 年 2 月 26 日
目录
需求分析 3
11开发背景 3
12 工程目标 3
13 运行环境 3
二程序分析 3
21 技术点 3
22工程务书 7
三技术路线 7
31总体方案 7
311 软件开发台 7
312 总体方案 7
32 详细设计 7
四工程进度 9
五测试报告 9
51 阶段性测试 9
52 总体测试 13
六结 14
附录 程序源代码 16
需求分析
11开发背景
年终奖老板予员工封顶奖金包括旅游奖励物质奖励等年工作业绩奖励工程年终奖发放额度形式般企业根情况调整年终奖方法较考评指标评价方法发放规等等相应项制度效鼓励员工增加企业凝聚力公司年年末会根员工年表现发放相应奖金
针背景提出年终奖励发放系统方案通该系统操作性行性实性等方面分析终确定该方案设计方
方案提出者:江燊董诗雅熊昌磊
开发者:江燊董诗雅熊昌磊
户:需发放年终奖励公司
12 工程目标
通该系统够实现员工根信息年工作业务量理员工注册信息查询年度奖金理员录入修改删员工业务量财务处算出奖金总理确认奖金发放
13 运行环境
软件:运行Windows软件〔Visual C++ 60〕环境
硬件:够运行Windows软件PC机笔记电脑低配置:求存128M硬盘1G
二程序分析
21 技术点
系统结构图:
年终奖金发放系统
录入根信息
普通员工
查询系统
理员
理系统
计算年终奖金
查询
力资源部
财务部
总理
录入考勤业务量等考核数
查询考核数
修改考核数
删考核数
审核奖金确认
确认奖金发放
图21 系统结构图
程序流程图:
需求选择相应功
开始
功1:
录入基
信息
功2:普通员工查询系统
功3:理员理系统
进入相应功系统
图22 流程图
开始
户登录
查询奖金
结束
图24普通员工查询系统流程图
开始
户登录
进行录入
结束
图23 录入根信息流程图
开始
选择部门
力资源部
户登录
需求选择
相应功
总理
户登录
确认奖金发放
财务部审核
完毕确认
财务部
户登录
审核奖金确认
力资源部录入完毕
录入考核数
查询考核数
修改考核数
删考核数
退出系统
图25 理员理系统流程图
22工程务书
江燊负责编写 Employee类员工注册系统程序设计报告
董诗雅负责编写员工查询系统
熊昌磊负责编写 Database类理员理系统
三起进行调试修改
三技术路线
31总体方案
311 软件开发台
Windows XP环境采M采Microsoft 公司Visual C++作开发台利面象思想实现报纸杂志订阅理类封装性抽象性继承性态性
312 总体方案
系统中应头文件:#include
创立类: Employee 职工类 Database 职工数类
通函数实现类利实现理员员工信息增添删查询修改等系列功
构造函数读入文件中信息析构函数信息写入文件系统运行时会通构造函数动读入信息存存新输入信息会先保存存系统运行结束时动调析构函数信息写入文件
创立2文件basictxt 存放员工根信息employeetxt 保存职工奖金信息
根底设立执行操作界面
32 详细设计
系统中涉类:
Employee 职工类
Database 职工数类
详细信息:
1类名:Employee
私成员:
int tag删标记
int no职工编号
char name[20] 职工姓名
char zw[20] 职工职位
int salary职工工资
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 nint sachar *nachar *q)增加
void addemp2(int n char *na char *q)增加员工根信息
void disp()显示职工信息
2类名:Database
私成员:
int top
Employee read[Maxr]basic[Maxr]
公成员:
Database()职工工资信息employeetxt读取read[]中 职工根信息basictxt读取basic[]中
void clear()删
int addemp (int n int sachar *nachar*q) 增加职工
int addemp2(int n char *nachar *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()力资源部理
void Search()
void manager()
void basic2()普通员工注册系统
~Database() read[]中信息读employeetxt中
四工程进度
表41 工程进度览表
务阶段
时间
方案完成工作
实际完成情况
分析选题阶段
2021年1月7日午
作业题目进行分析查阅资料终选择感兴趣题目确定方案
组员讨决定选择年终奖励系统〞确定开发方案
规划系统功设计数结构类层次阶段
2021年1月7日午
2021年1月9日午
确定整体框架编写作业中类应函数
成功确定整体框架编写出作业中类应函数
函数编写阶段
2021年1月10日2021年2月15日
编写函数功函数
成功编写出作业中通函数功函数
界面编写阶段
2021年2月16日2021年2月20日
确定软件界面优化操作界面
成功确定软件界面优化操作界面软件更加完整性提高
程序调试阶段
2021年2月21日2021年2月23日
调试整程序量数功进行测试邀请学充户进行测试
测试成功项功均正常实现户反响良
报告填写阶段
2021年2月24日2021年2月26日
填写实验报告整程序填加必注释
完成实验报告出色完成流程图设计表格设计整实验报告读性提高
五测试报告
51 阶段性测试
程序根设计时候整程序进行次拟系统测试子系统功数进行检测确保程序正确性时希程序够完成员工信息输入显示实现报纸杂志订阅系统进行理次测试2021年2月21日进行
次测试具体结果:
系统界面:
图51 奖金发放系统界面
511 输入1进入普通员工注册系统
图52 普通员工注册系统界面
根职位输入相应数字系统会提示输入员工根信息输入成功会动跳回界面
512 输入2进入普通员工查询系统
图53 普通员工查询系统界面
根提示输入数字查询例:输入1
图54 根编号查询
例输入2:
图55 根姓名查询
查询成功回车键返回
输入3返回界面
513 输入3进入理员理系统
图56 理员理系统界面
根提示输入数字
1〕例:输入1系统会提示户输入编号普通员工没权利进入
图57 力资源部界面
输入1系统会提示输入员工编号
图58 新增奖金
输入2员工奖金进行更改
输入3删某位员工信息
输入4员工奖金信息进行查询
输入5会显示全部员工奖金信息
图59 显示奖金
输入6删全部奖金信息
输入0返回界面
2〕例:输入2
图510 财务部确认
3〕例:输入3
图511 总理确认
4〕输入4返回界面
阶段测试根达目
52 总体测试
2021年2月23日晚程序进行次测试容阶段测试相改变界面起更美观更修改界面:
图512 修改界面
图513 退出界面
六结
1**结
次作业编程力种检验尤C++运力C++C类应正类编程程中省少麻烦C++刚学前没接触C++中文件应编写初期拟困难功夫负心努力成功信息写入文件实现文件读入动成感鼓励着继续努力然次写系统没什处言旧珍贵努力成果学知识理解运具极意义
然成背离开团队合作系统样作组组长家务进行划分家配合正种团队合作努力系统成功完成遇问题家通讨学困难变成问题然解决想种团队合作精神仅仅现需生活学更需通家起交流学取进步
2**结
言认C++相数结构说拟简单东西许特说明方说构造函数析构函数读文件写文件功实现非常重点认C++语言简单实掉某非常繁琐步骤类事件作整体呈现出写程序说实际意义核心局部职工类职工数类两类简单明实际问题解决掉实际说学学简化思路够运限知识解决实际问题作业然系统表达思路解决问题具体步骤想走工作岗位时候会方面考虑重点团队力量高中老师话说失败班集体中没真正意义成功者寒假中充分体验团队力量务划分成局部三没完成局部然做工作单绑起会产生微妙变化够感受根筷子脆弱筷子坚韧道理点通次编写感觉编程力正渐渐增长
3**结
通次作业面象编程思想模块化编程更深刻理解时掌握编程中应注意问题技巧重通团队力量完成深度投入采分工合作精神完成务
完成系统设计明确求构建整体思想需构造类类设置属性设置类接口设计相应项进行处理需编程前考虑画出方案流程图整体思想图纸化件事总说起容易做起难先根求设计系统实现流程图实际操作中发现难实现组屡次讨鉴网资源完善思想
实施程中发现缺乏处知识理解深方环节出现疏忽会导致整设计失败确定方定查阅资料想然做时需注重收集常编写类函数保存样时候方便搜索时组成员分工协作时候交流勤思考编写程序时候善试注释懂程序着防止时间长懂初写程序整作业程中家起发现修改错误完善设计组成员互相协作次实验画圆满句号
组分工协助合作精神起着互助关键假设工程力力成高效开发效率众新颖功独特新意良分工合作达事做全心投入块设计中组成员必须遵组长安排做服认化块合作定充足信心没成功组目标达成
运维评价家分工互助中缺少环时找出现缺陷评价互相评价集合成组单评价达组学识形成良互助条件组合作成效关键
想说程序缺乏处请老师帮助改良
附录 程序源代码
#include
#include
#include
#include
#include
#include
int k0定义总理否签字全局变量
const int Maxr100
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(zwq)
}
void setname(char na[])设置名字
{
strcpy(namena)
}
void setcode(char na[])
{
strcpy(codena)
}
void getsalary(int sa){salarysa}
void delna(){tag1}删
void addemp(int nint sachar *nachar *q)增加
{
tag0
non
salarysa
strcpy(namena)
strcpy(zwq)
}
void addemp2(int n char *na char *q)增加员工根信息
{
tag0
non
strcpy(namena)
strcpy(zwq)
}
void disp()显示职工信息
{
cout<<├—————┼—————┼—————┼—————┤<
}
class Database{ 职工数类
int top
Employee read[Maxr]basic[Maxr]
public
Database()职工工资信息employeetxt读取read[]中 职工根信息basictxt读取basic[]中
{ Employee s
top1
fstream file(employeetxtiosin)
while (1)
{
fileread((char *)&ssizeof(s))
if (file) break
top++
read[top]s
}
fileclose()
top1
fstream file2(basictxtiosin)
while (1)
{
file2read((char *)&ssizeof(s))
if (file2) break
top++
basic[top]s
}
file2close()
}
void clear()删
{
top1
}
int addemp (int n int sachar *nachar*q) 增加职工
{
Employee *pquery(n)
if (pNULL)
{
top++
read[top]addemp(nsanaq)
return 1
}
return 0
}
int addemp2(int n char *nachar *q)增加职工根信息
{
Employee *pquery2(n)
if (pNULL)
{
top++
basic[top]addemp2(nnaq)
return 1
}
return 0
}
Employee *query(int empid) 职工工资信息中定位编号
{
for (int i0i
return &read[i]
return NULL
}
Employee *query2(int empid) 员工根信息中定位编号
{
for (int i0i
return &basic[i]
return NULL
}
Employee *query1(char empna[20]) 职工工资信息中定位姓名
{
for (int i0i
return &read[i]
return NULL
}
Employee *query3(char empna[20]) 员工根信息中定位姓名
{
for (int i0i
return &basic[i]
return NULL
}
void disp() 职工信息显示
{
for (int i0i
}
void screen()
void screen1()
void screen2()
void empdata()
void Search()
void manager()
void basic2()
~Database() read[]中信息读employeetxt中
{
fstream file(employeetxtiosout)
for (int i0i
filewrite((char *)&read[i]sizeof(read[i]))
fileclose()
fstream file2(basictxtiosout)
for (i0i
file2write((char *)&basic[i]sizeof(basic[i]))
file2close()
}
}
void Databasebasic2()普通员工注册系统
{
char rname[20]
int choice1
int m1
int b1
int empid
Employee *r
cout<
switch(m)
{
case 1
cout<<输入理编号:
Acin>>empid
rquery2(empid)
if(rNULL){
cout<<您输入编号资料库已存\n请重新输入编号
goto A}
cout<<输入理姓名:
cin>>rname
addemp2(empidrname理)
break
case 2
cout<<输入业务理编号:
Bcin>>empid
rquery2(empid)
if(rNULL){
cout<<您输入编号资料库已存\n请重新输入编号
goto B}
cout<<输入业务理姓名:
cin>>rname
addemp2(empidrname业务理)
break
case 3
cout<<输入职工编号:
Ccin>>empid
rquery2(empid)
if(rNULL){
cout<<您输入编号资料库已存\n请重新输入编号
goto C}
cout<<输入职工姓名:
cin>>rname
addemp2(empidrname普通职工)
break
break
}
}
void Databaseempdata()力资源部理
{
int choice1
int m1
int b1
char rname[20]
int empid
int empsa
char q[20]
Employee *r
while (choice0)
{
cout<
switch (choice)
{
case 1
cout<<请输入发放奖金员工编号
Ccin>>empid
rquery2(empid)
if(rNULL){
cout<<您输入员工编号存资料库中请重新输入goto C}
cout<<您输入员工姓名 <
cout<<理根工资8000没年终提成<
if(strcmp(r>getzw()业务理)0){
cout<<业务理根工资4000<
cin>>empsa
addemp(empid4000+empsar>getname()业务理)
}
if(strcmp(r>getzw()普通职工)0){
cout<<普通员工没固定工资<
cin>>empsa
addemp(empidempsar>getname()普通职工)
}
break
case 2
cout<<输入职工编号:
cin>>empid
rquery(empid)
if (rNULL)
{
cout<<该职工存<
}
cout<<您输入员工姓名 <
r>getsalary(empsa)
cout<<请输入新职务<
r>setzw(q)
addemp(empidempsarnameq)
break
case 3
cout<<输入职工编号:
cin>>empid
rquery(empid)
if (rNULL)
{
cout<<该读者存<
}
cout<<您输入员工姓名 <
break
case 4
cout<
while(b0)
{
switch(b)
{
case 1
cout<<输入职工编号:
cin>>empid
rquery(empid)
if (rNULL)
{
cout<<该职工存<
}
cout<<├—————┼—————┼—————┼—————┤<
break
case 2
cout<<输入职工姓名:
cin>>rname
rquery1(rname)
if(rNULL)
{
cout<<该职工存<
}
cout<<├—————┼—————┼—————┼—————┤<
break
case 3
break
}
break
}
break
case 5
cout<<├—————┼—————┼—————┼—————┤<
break
case 6
clear()
break
}
}
}
void DatabaseSearch(){
int empid
char rname[20]
int b
Employee *r
cout<
switch(b)
{
case 1
cout<<输入职工编号:
cin>>empid
rquery(empid)
if (rNULL)
{
cout<<该职工存<
}
cout<<├—————┼—————┼—————┼—————┤<
break
case 2
cout<<输入职工姓名:
cin>>rname
rquery1(rname)
if(rNULL)
{
cout<<该职工存<
}
cout<<├—————┼—————┼—————┼—————┤<
break
case 3
break
}
}
void Databasemanager(){
char a
int choice
int empid
Employee *r
cout<
cin>>choice
switch(choice)
{
case 1system(cls)
cout<<********************************************************************************<
cin>>empid
rquery2(empid)
if (rNULL)
{
cout<<该职工存<
}
if(strcmp(r>getzw()普通职工)0){
cout<<欢送力资源部工作员<
break}
else
{cout<<您普通员工没权限进行操作<
cout<<********************************************************************************<
cin>>empid
rquery2(empid)
if (rNULL)
{
cout<<该职工存<
}
if(strcmp(r>getzw()普通职工)0){
cout<<欢送财务部工作员<
cin>>a
if(a'y'){
disp()
cout<<审核完毕资料已转移总理办公室<
else
{cout<<您普通员工没权限进行操作<
cout<<********************************************************************************<
cin>>empid
rquery2(empid)
if (rNULL)
{
cout<<该职工存<
}
if(strcmp(r>getzw()普通职工)0 && strcmp(r>getzw()业务理)0){
cout<<欢送总理<
cout<<财务部已年终奖金审核完毕否签字(y确定)
cin>>a
if(a'y')
{cout<<已签字发放奖金<
{cout<<总理没签字发放奖金<
else
cout<<财务部没审核年终奖金等签签字吧<
{cout<<您总理没权限进行操作<
}
void Databasescreen(){
cout<<********************************************************************************<
void Databasescreen1(){
cout<<********************************************************************************<
void Databasescreen2(){
cout<<********************************************************************************<
void main() {
int choice1
Database EmpDB
while(choice0)
{
EmpDBscreen()
cin>>choice
switch(choice)
{
case 1
system(cls)
EmpDBbasic2()
getch()
break
case 2
system(cls)
EmpDBscreen1()
EmpDBSearch()
getch()
break
case 3
system(cls)
EmpDBscreen2()
EmpDBmanager()
break
case 0system(cls)
cout<< \\\ <
break
}
}
}
作业评阅报告
工程名称:
班 级:
姓名学号:
完成时间:
评语:
成绩〔总分值20分〕:
指导教师签名:
时间:
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档