c++职工信息管理系统课程设计说明书带全部源码.docx

上传人:b****8 文档编号:9213832 上传时间:2023-02-03 格式:DOCX 页数:34 大小:185.31KB
下载 相关 举报
c++职工信息管理系统课程设计说明书带全部源码.docx_第1页
第1页 / 共34页
c++职工信息管理系统课程设计说明书带全部源码.docx_第2页
第2页 / 共34页
c++职工信息管理系统课程设计说明书带全部源码.docx_第3页
第3页 / 共34页
c++职工信息管理系统课程设计说明书带全部源码.docx_第4页
第4页 / 共34页
c++职工信息管理系统课程设计说明书带全部源码.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

c++职工信息管理系统课程设计说明书带全部源码.docx

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

c++职工信息管理系统课程设计说明书带全部源码.docx

c++职工信息管理系统课程设计说明书带全部源码

 

课程设计说明书

 

课程名称C++项目设计

设计题目

学生姓名学号

专业

指导教师

 

年月日

课程设计评语与成绩评定

项目

评判标准(在每一项目对应的标准下方空格内标记√)

优秀

良好

中等

及格

不及格

工作量

能很好地完成任务书规定的工作量。

能较好地完成任务书规定的工作量。

按时完成任务书规定的工作量。

基本完成任务书规定的工作量。

没有完成任务书规定的工作量。

资料收集方案设计

独立提出实施方案,有分析整理、获取新知识的能力。

能阅读一些自选资料,能较好地分析整理各类信息。

能分析整理各类信息。

能阅读教师指定的参考资料。

未完成教师指定的参考资料的阅读。

综合应用能力

能熟练掌握和运用基本理论,取得的结果有一定的实用价值。

能熟练掌握和运用有关理论,能独立取得结果。

较好地掌握有关理论,在教师指导下能完成工作。

掌握和运用理论比较符合要求。

基本理论模糊不清,无任何结果。

技术水平实际能力

设计合理,有较强的实际动手能力和计算机应用能力。

设计比较合理、有一定的实际动手能力和计算机应用能力。

设计比较合理,实际动手尚可。

设计基本合理,理论分析与实施无大错。

设计不合理,实际动手能力差。

说明书撰写质量

结构严谨,逻辑性强,层次清晰,文字流畅,符合规范化要求,打印精美。

结构合理,符合逻辑,文章层次分明,语言准确,达到规范化要求,打印工整。

结构基本合理,层次较分明,文理通顺,基本达到规范化要求。

结构基本合理,文字尚通顺,勉强达到规范化要求。

结构混乱,文字表达不清,错别字较多,达不到规范化要求。

学习态度

态度认真,作风严谨,严格按进度开展各项工作。

学习态度比较认真,能按期圆满完成任务书规定的任务。

遵守纪律,基本保证设计时间,按期完成各项工作。

态度尚可,在指导教师的帮助下能按期完成任务。

纪律涣散,不能保证设计时间和进度。

综合评定成绩:

优秀

良好

中等

及格

不及格

指导教师:

年月日

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。

管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。

本文介绍了在MicrosoftVisualC++6.0环境下开发一个职工信息管理系统的过程。

本系统界面友好,操作简单,比较实用。

一、系统开发相关情况

(一)开发背景

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。

管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。

(二)系统开发的目标

为了更好地适应我校的要求,进一步提供全方位的信息服务,职工信息管理系统在实施后应该能够达到以下的目标:

★能够准确地记录职工的相关信息。

★系统界面友好、操作简单易行,查询灵活方便,数据储存安全可靠。

★系统维护安全、方便、可靠,并且能够实现实用性,先进性的要求。

二、系统以及需求分析

(一)系统目标

除了前面所述,我们所开发的系统还应该具有以下功能:

⑴原始数据修改简单方便;

⑵方便的数据查询;

⑶删除数据方便简单,稳定性好;

⑷数据计算自动完成,尽量减少人工干预;

(二)系统可行性分析

1、技术可行性分析

由于本系统管理的对象单一,都是公司职工,所以涉及的计算过程不是很复杂。

现在学校用于学生管理的微机都是Pentium(R)4CPU以上的机器,在存储量、速度方面都能满足各方面的要求。

在技术难度方面,由于有指导老师的指导和相关参考文献,因此完全可以实现。

2、开发工具可行性分析

MicrosoftVisualC++6.0简介

VisualC++是一个功能强大的可视化软件开发工具。

自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。

虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。

所以实际中,更多的是以VisualC++6.0为平台。

VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。

VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。

这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。

根据以上对开发工具的功能的了解,我们相信,依靠MicrosoftVisualC++6.0能开发出我们所期待的系统。

因此,在开发工具方面是可行的。

三、程序功能描述以及模块结构

(一)功能模块描述及主要类描述

模块一:

增加人员函数Add();增加职工基本信息。

模块二:

删除人员函数Delete();删除指定的职工的基本信息以及薪酬。

模块三:

修改人员函数Modify();修改指定的职工基本信息。

模块四:

查询职工信息函数Query();查询指定的职工信息以及薪酬。

模块五:

基础数据设置函数Set();设置五类职位的基本薪酬。

模块六:

数据存盘,载入函数Save()以及Load();储存职工基本信息,薪酬以及五类职位的基本薪酬。

本系统采用了面向对象的程序设计方法。

所有的方法均以类为基础。

所涉及到的类包括:

classPerson基本员工类;该类是一个基类,设置了属于保护类的职工基本属性,以及构造函数Person(charID,char*Name,intDuty)。

可以给职工类型继承。

classCservant文员类;由Person类继承而来。

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

classSalesman业务员类;同Cservant文员类。

classAPman行政人员类;同Cservant文员类。

classCSman文员兼职业务人员类;同Cservant文员类。

classACman行政人员兼职文员类;同Cservant文员类。

classCompany公司类;该类定义了前文所述六个模块功能的实现方法,链表的使用也包括其中。

此类的作能在于将所有功能模块集成并定义本系统使用的主要方法。

(二)程序流程图

表3-1数据结构表

(三)数据结构表

序号

成员名

数据类型

长度

字段含义

1

No

int

工号

2

Name

char

20

名字

3

Sex

char

10

性别

4

Tel

char

20

联系方式

5

Nation

char

30

国籍

6

Duty

int

职位

7

Earning

double

收入

四、用户使用说明与调试结果

(一)使用说明

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

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

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

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

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

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

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

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

数据存盘按“6”键;

数据装入按“7”键;

退出系统按“8”键。

(二)调试结果

★代码中运用了switch语句调用各子函数,数字1、2、3、4、5、6、7、8等七个数字代表不同的指令。

 

★系统启动时,会自动在存放该系统的磁盘根目录之下装入两个数据文件:

person.txt和base.txt。

装入成功之后会显示“人员和基础数据已经装入…”。

调试时两个数据文件都已经写入部分数据,使用功能“4-查询职工信息”,显示如下:

★各个职工最后的“工资”根据事前输入的职位,工作量自动计算生成。

并将所有的工资累加得到每个月需要支付的总工资。

以本次调试为例,系统显示“本月实发工资总数:

14110元”。

★指令“1-增加人员”代表调用增加人员函数Add(),要求操作者输入职工的相关信息,管理系统会自动地开辟一个新的节点指针,把它的结点赋给预输入数据中的最后一个节点p2->next,使其链接起来。

 

★指令“2-删除人员”代表调用删除人员函数Delete(),要求操作者输入职工的相关ID,系统根据操作者输出的ID,找出对应的记录,然后删除该职工的信息,如果删除的是第一个结点,则p1->next,指向第二个结点;下图示范了删除第一个节点之后的显示结果:

★如果删除的是第i个(0

”。

★指令“3-修改人员”代表调用修改人员函数Modify(),体统根据操作者输入的ID找到对应的记录,将新输入的数据对应地赋给要修改的各成员。

包括调整职位,修改姓名,工作量。

★如果没有找到对应的ID,则不会修改任何一个记录,并输出“未输出!

”。

★指令“4-查询职工信息”表示调用查询职工信息函数Query(),先输出所有的职工记录,然后系统根据输入的ID找到对应的数据,并输出总支出薪酬,如果没有找到对应的记录,则输出“未找到!

”。

★指令“5-基础数据设置”表示调用基础数据设置函数Set(),要求操作员输入文员,行政人员,业务员的基本工资,以便计算每位职工的薪酬。

★指令“6-数据存盘”表示调用存盘函数Save(),输入“Y”或者“N”以进一步操作。

★指令“7-数据装入”表示调用载入函数Load(),系统直接导入数据。

(三)优缺点分析

优点:

★系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大;

★可以随意地选择不同的指令进行操作;

★自动计算本月应该支出的所有薪酬;

★排版效果清晰明了,美观;

★操作简单方便。

缺点:

★在调用某些函数时,若没有找到对应记录的情况下,输出结果的处理不太完善,例如查询函数;

★录入函数的设计不完善,这也是整个程序设计中最突出的问题。

五、总结

本次设计我选择的题目是职工信息管理系统。

因为事先的计划非常明确,所以我们在完成这个设计的过程也是比较顺利的。

在系统分析和设计的部分仍然花了比较多的时间。

模块设计部分因为涉及功能的实现,要从抽象的设计转化成实际的代码,因此对于某项功能的实现方法都思考得比较详尽。

加上在开发系统之前,我阅读很多与本系统有相关内容的书籍以做参考,使得此次系统编写能顺利进行。

由于班里每个人都需要做一份设计,所以我们经常互相交流。

在交流的时候经常能够互相提出更好的建议。

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

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

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

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

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

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

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

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

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

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

 

参考文献:

[1]徐士良:

C常用算法程序集,清华大学出版社,1995年版.

[2]洪永清:

面向对象建模与设计,清华大学出版社,1993年版.

[3]谭浩强:

C程序设计,清华大学出版社,1991年版.

[4]张国峰:

C++语言及其程序设计教程,电子工业出版社,1997年版.

[5]侯捷:

STL源码剖析,华中科技大学出版社,2002年版.

[6]BruceEckel:

ThinkinginC++(2nded),机械工业出版社,2003年版.

 

附录:

职工信息管理系统源码(C++)

#include

#include

#include

#include

//全局数据,对象

doubleCSalary;//文员的基本工资

doubleSSalary;//业务员的基本工资

doubleAPSalary;//行政人员的基本工资

intID;//员工工号(要保证唯一)

classPerson//员工类

{

protected:

intNo;//编号

charName[20];//姓名

charSex[10];//性别

charTel[20];//联系方式

charNation[30];//国籍

intDuty;//职位

doubleEarning;//收入

Person*next;

public:

Person(charID,char*Name,intDuty)

{

this->Duty=Duty;

strcpy(this->Name,Name);

this->No=ID;

}

virtualvoidCalcSalary()=0;

virtualvoidOutput()=0;

friendclassCompany;

};

classCservant:

publicPerson//文员类

{

private:

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

public:

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

Person(ID,Name,Duty)

{

this->Workload=Workload;

}

doubleGetWorkload()

{

returnWorkload;

}

voidSetWorkload(doubleAmount)

{

this->Workload=Amount;

}

voidCalcSalary()

{

Earning=CSalary+(Workload-20)*20;

}

voidOutput()

{

CalcSalary();

cout<

}

};

classSalesman:

publicPerson//业务员类

{

private:

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

public:

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

Person(ID,Name,Duty)

{

this->Workload=Workload;

}

doubleGetWorkload()

{

returnWorkload;

}

voidSetWorkload(doubleAmount)

{

this->Workload=Amount;

}

voidCalcSalary()

{

Earning=SSalary+(Workload-15)*20+150;//150为业务补贴

}

voidOutput()

{

CalcSalary();

cout<

}

};

classACman:

publicPerson//行政人员兼职文员类

{

private:

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

public:

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

Person(ID,Name,Duty)

{

this->Workload=Workload;

}

doubleGetWorkload()

{

returnWorkload;

}

voidSetWorkload(doubles)

{

Workload=s;

}

voidCalcSalary()

{

Earning=250+APSalary+CSalary+(Workload-15)*20;

}

voidOutput()

{

CalcSalary();

cout<

}

};

classAPman:

publicPerson//行政人员类

{

public:

APman(charID,char*Name,intDuty):

Person(ID,Name,Duty){}

voidCalcSalary()

{

Earning=APSalary+250;//250为行政补贴

}

voidOutput()

{

CalcSalary();

cout<

}

};

classCSman:

publicPerson//文员兼职业务人员

{

private:

doubleWorkload;//文员兼职业务人员上个月完成工作量

public:

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

Person(ID,Name,Duty)

{

this->Workload=Workload;

}

doubleGetWorkload()

{

returnWorkload;

}

voidSetWorkload(doubleAmount)

{

this->Workload=Amount;

}

voidCalcSalary()

{

Earning=(Workload-25)*20+CSalary+150+SSalary;//150为业务补贴

}

voidOutput()

{

CalcSalary();

cout<

}

};

classCompany//公司类

{

private:

Person*Worker;//员工表

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

public:

Company()

{

Worker=0;

Load();

}

~Company()

{

Person*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()//清除内存中人员数据(内部使用)

{

Person*p=Worker;

while(p)

{

Worker=p->next;

deletep;

p=Worker;

}

}

voidCompany:

:

Find(charName[20])

{

}

voidCompany:

:

Add()

{

Person*p;//新结点指针

intDuty;

charName[20];

charSex[10];//性别

charTel[20];//联系方式

charNation[30];//国籍

doubleWorkload;

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

//输入员工信息

cout<<"输入工号:

";cin>>ID;

cout<<"输入职位(1-文员2-行政人员兼职文员3-文员兼职业务员4-行政人员5-业务员):

";cin>>Duty;

cout<<"输入姓名:

";cin>>Name;

cout<<"输入性别:

";cin>>Sex;

cout<<"输入联系方式:

";cin>>Tel;

cout<<"输入国籍:

";cin>>Nation;

if(Duty!

=4)

{

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

";cin>>Workload;

}

//创建新员工结点

switch(Duty)

{

case1:

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

case2:

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

case3:

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

case4:

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

case5:

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

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

当前位置:首页 > 解决方案 > 学习计划

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

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