面向对象课程设计报告人事管理系统Word文档下载推荐.docx

上传人:b****5 文档编号:21650350 上传时间:2023-01-31 格式:DOCX 页数:16 大小:41.27KB
下载 相关 举报
面向对象课程设计报告人事管理系统Word文档下载推荐.docx_第1页
第1页 / 共16页
面向对象课程设计报告人事管理系统Word文档下载推荐.docx_第2页
第2页 / 共16页
面向对象课程设计报告人事管理系统Word文档下载推荐.docx_第3页
第3页 / 共16页
面向对象课程设计报告人事管理系统Word文档下载推荐.docx_第4页
第4页 / 共16页
面向对象课程设计报告人事管理系统Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

面向对象课程设计报告人事管理系统Word文档下载推荐.docx

《面向对象课程设计报告人事管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《面向对象课程设计报告人事管理系统Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

面向对象课程设计报告人事管理系统Word文档下载推荐.docx

界面友好,方便管理。

其中,普通职工无底薪,业务经理底薪4000加月提成,新增时工资方面只需输入月提成。

经理是底薪8000加奖金,新增时工资方面只需输入奖金。

3.性能描述

(1)数据精确度:

精确到整数部分。

(2)时间特性:

响应时间短,可更新性强,运行速度快。

4.运行环境:

VisualC++6.0

5.条件与限制:

装有Windows操作系统的计算机,装有软件VisualC++6.0

三.任务设计

1.类的划分:

(1)类1:

类名Employee,是职工类。

功能是对名字(name)、标记(tag)、编号(no)、工资(salary)的设置等。

主要成员函数及功能:

char*getname(){returnname;

}//获取名字

intgettag(){returntag;

}//获取标记

intgetno(){returnno;

}//获取编号

intgetsalary(){returnsalary;

}//获取工资

流程图如图3-1.

图3-1职工类流程图

(2)类2:

类名Database,是职工数据类。

主要功能是将职工信息从employee.txt读取到read[]中,对职工信息的读取、增加职工、删除全部、更改查找以及职工信息的显示等。

voidclear()//删除所有

intaddemp(intn,intsa,char*na,char*q)//增加职工

voiddisp()//职工信息显示

voidDatabase:

:

empdata()//职工维护

流程图如图3-2.

图3-2职工数据类流程图

2.类的接口设计:

(1)类1:

Employee(){}

char*getname(){returnname;

intgettag(){returntag;

intgetno(){returnno;

intgetsalary(){returnsalary;

}

voidsetzw(charq[])//设置名字

(3)类2:

Database()//将职工信息从employee.txt读取到read[]中

{

Employees;

top=-1;

fstreamfile("

employee.txt"

ios:

in);

while

(1)

{

file.read((char*)&

s,sizeof(s));

if(!

file)break;

top++;

read[top]=s;

}

file.close();

}

3.类之间的关系:

类2的功能实现是建立在类1的基础之上的,可以说类2是继承了类1,同时类1也包含了类2。

classDatabase

{

inttop;

Employeeread[Maxr];

四.编写代码

1.问题1

(1)问题描述:

刚接到任务时无从下手,对功能的实现比较乱。

(2)解决办法:

提前设计程序流程图,理清设计思路和功能实现方法。

2.问题2

(1)问题描述:

编写程序的动手能力差,没有自定义析构函数。

(2)解决办法:

在程序中补充自定义了析构函数~Database()(将read[]中的信息读如到employee.txt中)。

3.问题3

所有语句输出显示成一排,没有加换行符。

在程序中必要的语句后加换行符,使程序输出更加友好、整洁。

4.问题4

在编写程序时未加注释,对查错和阅读带来很多不便。

将程序语句后写上注释,方便自己和他人阅读查错。

五.程序运行

1.程序运行的过程:

通过人事管理系统管理职工的信息,方便新增职工,和对职工信息的更改、查找、删除等操作。

2.类的构造顺序:

类1构造后类2才可调用。

3.错误描述及其解决办法

(1)问题1

问题描述:

程序编译时没有编写退出选项,进入界面后,无“退出”选项。

解决办法:

重新修改调试程序,将“退出”选项显示在程序显示窗口。

(2)问题2

问题描述:

一开始查询职工信息时,输入不存在的职工编号,程序无法响应。

在程序中加入if语句,当职工编号不存在时,输出“该职工不存在”。

(3)问题3

问题描述:

主界面比较单一,不够友好,输出显示职工信息时不够规

范整洁。

在程序中的信息显示部分加入边框,使输出信息更加美观、友好。

六、感想认识

两个星期的课程设计虽然有些疲劳和困倦,但带给我很多的收获。

随着课程学习的深入,我感觉到了利用类和对象、继承、封装等一系列知识可以把我们程序中很多繁杂、重复的部分省略掉,还可以解决一些利用面向过程的设计思想无法解决的问题。

在课程设计之前,因为有了综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间。

于是在课程设计的时候,我花了三天的时间来规划与写代码,将要实现的内容分析清楚,才把代码输入电脑。

我觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这才可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的。

这次的课程设计,真是让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好c++是多么的重要。

在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。

自己上机实际操作总出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。

虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。

以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长,才能成为当今社会需要的人才。

七.程序代码

#include<

iostream.h>

#include<

iomanip.h>

#include<

string.h>

fstream.h>

constintMaxr=100;

classEmployee//职工类

{

inttag;

//删除标记

intno;

//职工编号

charname[20];

charzw[20];

//职工姓名

intsalary;

//职工工资

public:

Employee(){}

strcpy(zw,q);

}

voidsetname(charna[])//设置名字

strcpy(name,na);

voidgetsalary(intsa){salary=sa;

voiddelna(){tag=1;

}//删除

voidaddemp(intn,intsa,char*na,char*q)//增加

{

tag=0;

no=n;

salary=sa;

strcpy(name,na);

strcpy(zw,q);

voiddisp()//显示职工信息

cout<

<

"

│"

setw(10)<

no<

name<

salary<

zw<

endl;

├==========┼==========┼==========┼==========┤"

};

classDatabase//职工数据类

inttop;

Employeeread[Maxr];

Database()//将职工信息从employee.txt读取到read[]中

voidclear()//删除所有

}intaddemp(intn,intsa,char*na,char*q)//增加职工

Employee*p=query(n);

if(p==NULL)

read[top].addemp(n,sa,na,q);

return1;

}

return0;

}

Employee*query(intempid)

for(inti=0;

i<

=top;

i++)

if(read[i].getno()==empid&

&

read[i].gettag()==0)

return&

read[i];

returnNULL;

Employee*query1(charempna[20])

i++)

if((read[i].getname()==empna)&

read[i].gettag()==0)

return&

voiddisp()//职工信息显示

read[i].disp();

voidempdata();

~Database()//将read[]中的信息读如到employee.txt中

out);

if(read[i].gettag()==0)

file.write((char*)&

read[i],sizeof(read[i]));

file.close();

};

voidDatabase:

intchoice=1;

intm=1;

intb=1;

charrname[20];

intempid;

intempsa;

charq[20];

Employee*r;

while(choice!

=0)

{

cout<

职工维护1:

新增2:

更改3:

删除4:

查找5:

显示6:

全删0:

退出=>

;

cin>

>

choice;

switch(choice)

case1:

cout<

setw(50)<

┌**************************┐\n"

│请选择您所需的操作│\n"

│经理:

1,并按回车键│\n"

│业务经理:

2,并按回车键│\n"

│普通职工:

3,并按回车键│\n"

└**************************┘\n"

cin>

m;

while(m!

=0){

switch(m)

case1:

输入经理编号:

empid;

输入奖金:

"

empsa;

输入经理姓名:

rname;

addemp(empid,8000+empsa,rname,"

经理"

);

break;

case2:

输入业务经理编号:

输入月提成:

输入业务经理姓名:

addemp(empid,4000+empsa,rname,"

业务经理"

break;

case3:

输入职工编号:

输入工资:

输入职工姓名:

addemp(empid,empsa,rname,"

普通职工"

break;

break;

cin>

r=query(empid);

if(r==NULL)

该职工不存在"

输入新的工资:

cin>

r->

getsalary(empsa);

请输入新的职务"

q;

setzw(q);

addemp(empid,empsa,rname,q);

r=query(empid);

if(r==NULL)

该读者不存在"

delna();

case4:

│按编号查找1,并按回车键│\n"

│返回2,并按回车键│\n"

b;

while(b!

switch(b)

cout<

if(r==NULL)

编号"

姓名"

工资"

职务"

r->

disp();

case2:

case5:

disp();

case6:

clear();

voidmain()

DatabaseEmpDB;

while(choice!

********************************************************************************"

setw(20)<

******************************欢迎使用人事管理系统******************************"

││\n"

│操作1,并按回车键│\n"

│返回0,并按回车键│\n"

switch(choice)

case1:

while

(1)

setw(20);

EmpDB.empdata();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1