职工信息管理系统C++版 程序设计说明书.docx

上传人:b****3 文档编号:5477974 上传时间:2022-12-16 格式:DOCX 页数:27 大小:70.36KB
下载 相关 举报
职工信息管理系统C++版 程序设计说明书.docx_第1页
第1页 / 共27页
职工信息管理系统C++版 程序设计说明书.docx_第2页
第2页 / 共27页
职工信息管理系统C++版 程序设计说明书.docx_第3页
第3页 / 共27页
职工信息管理系统C++版 程序设计说明书.docx_第4页
第4页 / 共27页
职工信息管理系统C++版 程序设计说明书.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

职工信息管理系统C++版 程序设计说明书.docx

《职工信息管理系统C++版 程序设计说明书.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统C++版 程序设计说明书.docx(27页珍藏版)》请在冰豆网上搜索。

职工信息管理系统C++版 程序设计说明书.docx

职工信息管理系统C++版程序设计说明书

高级语言程序设计说明书

 

职工信息管理系统

 

系别

专业班级

学生姓名

指导教师

 

注释:

2010计算机工程系《高级语言程序设计》大作业

 

目录

引言···········································(3)

程序结构·····································(3)

程序流程图···································(4)

程序源程序模块设计说明·······················(5)

1.函数头················································(5)

2.主函数·················································(5)

3.基类及继承类············································(5)

3-1.基类················································(5)

3-2.继承类··············································(6)

3-3.公司类··············································(6)

程序使用说明·································(8)

总结·········································(9)

 

引言

程序名称:

职工信息管理系统

开发平台:

windows7

MicrosoftVisualC++6.0

主要功能:

1。

添加职工信息;

2。

删除职工信息及薪酬;

3。

修改职工信息;

4。

查询职工信息及薪酬;

5。

设置职位基本薪酬;

6。

存储职位信息;

程序说明:

准确性要求高,可靠性要求高,输入控制严格,页面响应时间短,

用户界面友好,输出准确,功能强大!

运行环境:

WindowsNT/2000/XP/VISTA/WIN7

文件说明:

程序源代码(职工信息管理系统.cpp);

程序运行文件(职工信息管理系统.exe);

职工信息存储文件(Employee.text);

参考资料:

《C++程序设计》谭浩强编著清华大学出版社

程序结构

函数头:

//cin,cout,等函数

//类,对象,等函数定义

//文本文档的读/写/复制等函数

主函数:

voidmain()

基类职工类employee

派生类:

Technician技术员类、Salesman销售员类、Salesmanager销售经理类、Manager经理类、Company公司类。

在公司类中定义六个模块功能的实现方法:

voidAdd()//添加

voidDelete()//删除

voidModify()//修改

voidQuery()//查询

voidset()//设置

voidSave()//载入

voidLoad()//储存

程序流程图

程序源程序模块设计说明

1.函数头:

#include

#include

#include

#include

调用系统在程序中将要用到的函数。

2.主函数:

switch(c)

{

case'1':

a.Add();break;

case'2':

a.Delete();break;

case'3':

a.Modify();break;

case'4':

a.Query();break;

case'5':

a.Set();break;

case'6':

a.Save();break;

case'7':

a.Load();break;

}

在do-while循环中嵌套switch结构,用来调用构造函数,实现函数模块的功能。

3.基类及继承类:

3-1.基类:

classEmployee//职工类

{

protected:

intNo;//编号

charName[20];//姓名

charSex[10];//性别

intDuty;//职位

doubleEarning;//收入

Employee*next;

public:

Employee(charID,char*Name,intDuty)

{

this->Duty=Duty;

strcpy(this->Name,Name);

this->No=ID;

}

virtualvoidCalcSalary()=0;

virtualvoidOutput()=0;

friendclassCompany;

};

先定义一个职工基类,设置了属于保护类的职工基本属性,以及构造函数Employee,可以给职工类型继承。

3-2.继承类:

classTechnician:

publicEmployee//技术员类

{

private:

doubleWorkload;//上个月完成工作量

public:

Technician(charID,char*Name,intDuty,doubleWorkload):

Employee(ID,Name,Duty)

{

this->Workload=Workload;

}

doubleGetWorkload()

{

returnWorkload;

}

voidSetWorkload(doubleAmount)

{

this->Workload=Amount;

}

voidCalcSalary()

{

Earning=Workload*100;

}

voidOutput()

{

CalcSalary();

cout<

}

};

以技术员类为例,继承了Employee职工类。

在这个类中定义了上个月的工作量Workload,获得工作量函数doubleGetWorkload(),传入工作量函数voidSetWorkload(doubleAmount),工作量计算薪酬函数voidCalcSalary(),输出薪酬结果以及该类职工信息函数voidOutput()。

3-3.公司类:

classCompany//公司类

{

private:

Employee*Worker;//职工表

voidClear();//清除内存中数据

public:

Company()

{

Worker=0;

Load();

}

~Company()

{

Employee*p;

p=Worker;

while(p)

{

p=p->next;

deleteWorker;

Worker=p;

}

Worker=0;

}

在公司类中先定义一个职工表Worker用于存储职工信息,然后构造函数中可以构造链表,用于管理职工的信息。

析构函数用来释放存储空间,清除链表结点中的信息。

模块功能的实现方法:

voidCompany:

:

Add()//增加人员

{

Employee*p;//新结点指针

intDuty;

charName[20];

charSex[10];//性别

doubleWorkload;

cout<<"\n**新增员工**\n";

//输入员工信息

cout<<"输入工号:

";cin>>ID;

cout<<"输入职位(1-技术员3-经理4-销售经理5-销售员):

";cin>>Duty;

cout<<"输入姓名:

";cin>>Name;

cout<<"输入性别:

";cin>>Sex;

if(Duty!

=4)

{

cout<<"上个月完成工作量:

";cin>>Workload;

}

//创建新员工结点

switch(Duty)

{

case1:

p=newTechnician(ID,Name,Duty,Workload);break;

case3:

p=newManager(ID,Name,Duty,Workload);break;

case4:

p=newSalesmanager(ID,Name,Duty);break;

case5:

p=newSalesman(ID,Name,Duty,Workload);break;

}

p->next=0;

构造添加函数Add(),在函数中先定义职工的基本信息和新节点指针,创建新的初始化构造函数,用于添加新的职工信息。

职工结点加入链表:

if(Worker)//若已经存在结点

{

Employee*p2;

p2=Worker;

while(p2->next)//查找尾结点

{

p2=p2->next;

}

p2->next=p;//连接

}

else//若不存在结点(表空)

{

Worker=p;//连接

}

}

使用指针p和职工表Worker构造一个单链表,在if选择结构和while选择结构中添加新的结点,这个新的结点可以输入职工信息和存储信息的地址,再把职工信息添加到职工链表中。

其他模块删除函数Delete()、修改函数Modify()、查询函数Query()、载入函数Save()和存储函数Load()都使用了链表的构造方法。

具体内容可以看代码部分。

voidCompany:

:

Set()//设置基础数据

{

cout<<"\n**设置基础数据**\n";

cout<<"经理的基本工资["<

";cin>>CSalary;

cout<<"销售经理的基本工资["<

";cin>>APSalary;

cout<<"员工工号[>="<

";cin>>ID;

}

设置经理和销售经理的基本工资,用于计算这两个职位的工资。

使用说明

这是一个关于职工信息管理系统,具有增加、输出、删除、查询、修改、保存、载入数据、计算总支出薪酬等功能,建立了一个含有工号、姓名、性别、工作量等成员的类的变量classEmployee。

系统中已预输入了5个职工的相关数据以及基本薪酬数据,调试是可按“4”键先查看输入的数据记录。

调试过程中,可按照有关提示进行相关操作:

增加职工数据按“1”键;

删除职工数据按“2”键;

修改职工数据按“3”键;

查询职工数据按“4”键;

基础数据设置按“5”键;

数据存盘按“6”键;

数据装入按“7”键;

退出系统按“8”键。

总结

经过对职工信息管理系统的分析与编写,我得到了很大的收获。

自主学习的必要性更是解决问题的基础。

这次设计使我重温了以前学过的各科知识,让我对C++编程有了更深刻的认识。

除了对系统作出正确的分析,实际的调查工作对系统的整体设计有着至关重要的作用。

所以在分析系统之前,我花了一些时间在公司的实际管理工作调查上。

也因为这样,如何编写代码逐渐变得明朗。

每一个功能模块经过调查后后,各个功能逐渐显露出来,然后,反复探讨,验证这项功能是否有存在的必要,是否可以改进得更好。

在这样的前提下,最后顺利完成了这份设计。

这次C++系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。

从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用

代码附录:

#include

#include

#include

#include

usingnamespacestd;

//全局数据,对象

doubleAPSalary;

doubleCSalary;

intID;//员工工号

classEmployee//员工类

{

protected:

intNo;//编号

charName[20];//姓名

charSex[10];//性别

intDuty;//职位

doubleEarning;//收入

Employee*next;

public:

Employee(charID,char*Name,intDuty)

{

this->Duty=Duty;

strcpy(this->Name,Name);

this->No=ID;

}

virtualvoidCalcSalary()=0;

virtualvoidOutput()=0;

friendclassCompany;

};

classTechnician:

publicEmployee//技术员类

{

private:

doubleWorkload;//上个月完成工作量

public:

Technician(charID,char*Name,intDuty,doubleWorkload):

Employee(ID,Name,Duty)

{

this->Workload=Workload;

}

doubleGetWorkload()

{

returnWorkload;

}

voidSetWorkload(doubleAmount)

{

this->Workload=Amount;

}

voidCalcSalary()

{

Earning=Workload*100;

}

voidOutput()

{

CalcSalary();

cout<

}

};

classSalesman:

publicEmployee//销售员类

{

private:

doubleWorkload;//上个月完成工作量

public:

Salesman(charID,char*Name,intDuty,doubleWorkload):

Employee(ID,Name,Duty)

{

this->Workload=Workload;

}

doubleGetWorkload()

{

returnWorkload;

}

voidSetWorkload(doubleAmount)

{

this->Workload=Amount;

}

voidCalcSalary()

{

Earning=Workload*0.04;

}

voidOutput()

{

CalcSalary();

cout<

}

};

classSalesmanager:

publicEmployee//销售经理类

{

private:

doubleWorkload;

public:

Salesmanager(charID,char*Name,intDuty):

Employee(ID,Name,Duty)

{

this->Workload=Workload;

}

doubleGetWorkload()

{

returnWorkload;

}

voidSetWorkload(doubleAmount)

{

this->Workload=Amount;

}

voidCalcSalary()

{

Earning=APSalary+Workload*0.005;

}

voidOutput()

{

CalcSalary();

cout<

}

};

classManager:

publicEmployee//经理类

{

private:

doubleWorkload;//上个月完成工作量

public:

Manager(charID,char*Name,intDuty,doubleWorkload):

Employee(ID,Name,Duty)

{

this->Workload=Workload;

}

doubleGetWorkload()

{

returnWorkload;

}

voidSetWorkload(doubleAmount)

{

this->Workload=Amount;

}

voidCalcSalary()

{

Earning=CSalary;//固定月薪

}

voidOutput()

{

CalcSalary();

cout<

}

};

classCompany//公司类

{

private:

Employee*Worker;//员工表

voidClear();//清除内存中数据

public:

Company()

{

Worker=0;

Load();

}

~Company()

{

Employee*p;

p=Worker;

while(p)

{

p=p->next;

deleteWorker;

Worker=p;

}

Worker=0;

}

voidFind(charName[20]);//按姓名查找

voidFind(intID);//按编号查找

voidAdd();//增加人员

voidDelete();//删除人员

voidModify();//修改人员

voidQuery();//查询人员

voidSet();//基础数据设置

voidSave();//数据存盘(包括基础数据,人员数据)

voidLoad();//数据装入(包括基础数据,人员数据)

};

voidCompany:

:

Clear()//清除内存中人员数据(内部使用)

{

Employee*p=Worker;

while(p)

{

Worker=p->next;

deletep;

p=Worker;

}

}

voidCompany:

:

Find(charName[20])

{

}

voidCompany:

:

Add()//增加人员

{

Employee*p;//新结点指针

intDuty;

charName[20];

charSex[10];//性别

doubleWorkload;

cout<<"\n**新增员工**\n";

//输入员工信息

cout<<"输入工号:

";cin>>ID;

cout<<"输入职位(1-技术员3-经理4-销售经理5-销售员):

";cin>>Duty;

cout<<"输入姓名:

";cin>>Name;

cout<<"输入性别:

";cin>>Sex;

if(Duty!

=4)

{

cout<<"上个月完成工作量:

";cin>>Workload;

}

//创建新员工结点

switch(Duty)

{

case1:

p=newTechnician(ID,Name,Duty,Workload);break;

case3:

p=newManager(ID,Name,Duty,Workload);break;

case4:

p=newSalesmanager(ID,Name,Duty);break;

case5:

p=newSalesman(ID,Name,Duty,Workload);break;

}

p->next=0;

//员工结点加入链表

if(Worker)//若已经存在结点

{

Employee*p2;

p2=Worker;

while(p2->next)//查找尾结点

{

p2=p2->next;

}

p2->next=p;//连接

}

else//若不存在结点(表空)

{

Worker=p;//连接

}

}

voidCompany:

:

Delete()//删除人员

{

intNo;

cout<<"\n**删除员工**\n";

cout<<"ID:

";cin>>No;

//查找要删除的结点

Employee*p1,*p2;p1=Worker;

while(p1)

{

if(p1->No==No)

break;

else

{

p2=p1;

p1=p1->next;

}

}

//删除结点

if(p1!

=NULL)//若找到结点,则删除

{

if(p1==Worker)//若要删除的结点是第一个结点

{

Worker=p1->next;

deletep1;

}

else//若要删除的结点是后续结点

{

p2->next=p1->next;

deletep1;

}

cout<<"找到并删除\n";

}

else//未找到结点

cout<<"未找到!

\n";

}

voidCompany:

:

Modify()//修改员工

{

intNo,Duty;

charName[20];

doubleWorkload;

cout<<"\n**修改员工**\n";

cout<<"ID:

";cin>>No;

//查找要修改的结点

Employee*p1,*p2;p1=Worker;

while(p1)

{

if(p1->No==No)

break;

else

{

p2=p1;

p1=p1->next;

}

}

//修改结点

if(p1!

=NULL)//若找到结点

{

p1->Output();

cout<<"调整职位(1-技

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

当前位置:首页 > 医药卫生 > 基础医学

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

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