c职工信息管理系统课程设计说明书带全部源码Word格式文档下载.docx
《c职工信息管理系统课程设计说明书带全部源码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c职工信息管理系统课程设计说明书带全部源码Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
说明书撰写质量
结构严谨,逻辑性强,层次清晰,文字流畅,符合规范化要求,打印精美。
结构合理,符合逻辑,文章层次分明,语言准确,达到规范化要求,打印工整。
结构基本合理,层次较分明,文理通顺,基本达到规范化要求。
结构基本合理,文字尚通顺,勉强达到规范化要求。
结构混乱,文字表达不清,错别字较多,达不到规范化要求。
学习态度
态度认真,作风严谨,严格按进度开展各项工作。
学习态度比较认真,能按期圆满完成任务书规定的任务。
遵守纪律,基本保证设计时间,按期完成各项工作。
态度尚可,在指导教师的帮助下能按期完成任务。
纪律涣散,不能保证设计时间和进度。
综合评定成绩:
指导教师:
年月日
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
本文介绍了在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行政人员类;
classCSman文员兼职业务人员类;
classACman行政人员兼职文员类;
classCompany公司类;
该类定义了前文所述六个模块功能的实现方法,链表的使用也包括其中。
此类的作能在于将所有功能模块集成并定义本系统使用的主要方法。
(二)程序流程图
表3-1数据结构表
(三)数据结构表
序号
成员名
数据类型
长度
字段含义
1
No
int
工号
2
Name
char
20
名字
3
Sex
10
性别
4
Tel
联系方式
5
Nation
30
国籍
6
Duty
职位
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<
i<
n)就把下一个结点地址赋给前一个结点地址;
如果找不到对应的ID,则不会删除任何一个记录,并输出“未找到!
”。
★指令“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<
iostream.h>
fstream.h>
ctype.h>
string.h>
//全局数据,对象
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);
No=ID;
}
virtualvoidCalcSalary()=0;
virtualvoidOutput()=0;
friendclassCompany;
};
classCservant:
publicPerson//文员类
private:
doubleWorkload;
//上个月完成工作量
Cservant(charID,char*Name,intDuty,doubleWorkload):
Person(ID,Name,Duty)
Workload=Workload;
doubleGetWorkload()
returnWorkload;
voidSetWorkload(doubleAmount)
Workload=Amount;
voidCalcSalary()
Earning=CSalary+(Workload-20)*20;
voidOutput()
CalcSalary();
cout<
<
No<
"
\t"
Name<
\t文员\t"
\t\t"
Earning<
endl;
classSalesman:
publicPerson//业务员类
Salesman(charID,char*Name,intDuty,doubleWorkload):
Earning=SSalary+(Workload-15)*20+150;
//150为业务补贴
\t业务员\t"
classACman:
publicPerson//行政人员兼职文员类
ACman(charID,char*Name,intDuty,doubleWorkload):
voidSetWorkload(doubles)
Workload=s;
Earning=250+APSalary+CSalary+(Workload-15)*20;
\t行政人员兼职文员\t"
classAPman:
publicPerson//行政人员类
APman(charID,char*Name,intDuty):
Person(ID,Name,Duty){}
Earning=APSalary+250;
//250为行政补贴
\t行政人员\t\t"
classCSman:
publicPerson//文员兼职业务人员
//文员兼职业务人员上个月完成工作量
CSman(charID,char*Name,intDuty,doubleWorkload):
Earning=(Workload-25)*20+CSalary+150+SSalary;
//150为业务补贴
\t文员兼职业务人员\t"
classCompany//公司类
Person*Worker;
//员工表
voidClear();
//清除内存中数据
Company()
Worker=0;
Load();
~Company()
Person*p;
p=Worker;
while(p)
p=p->
next;
deleteWorker;
Worker=p;
voidFind(charName[20]);
//按姓名查找
voidFind(intID);
//按编号查找
voidAdd();
//增加人员
voidDelete();
//删除人员
voidModify();
//修改人员
voidQuery();
//查询人员
voidSet();
//基础数据设置
voidSave();
//数据存盘(包括基础数据,人员数据)
voidLoad();
//数据装入(包括基础数据,人员数据)
voidCompany:
:
Clear()//清除内存中人员数据(内部使用)
Person*p=Worker;
Worker=p->
deletep;
Find(charName[20])
Add()
//新结点指针
\n**新增员工**\n"
;
//输入员工信息
输入工号:
cin>
>
ID;
输入职位(1-文员2-行政人员兼职文员3-文员兼职业务员4-行政人员5-业务员):
Duty;
输入姓名:
Name;
输入性别:
Sex;
输入联系方式:
Tel;
输入国籍:
Nation;
if(Duty!
=4)
上个月完成工作量:
Workload;
//创建新员工结点
switch(Duty)
case1:
p=newCservant(ID,Name,Duty,Workload);
break;
case2:
p=newACman(ID,Name,Duty,Workload);
case3:
p=newCSman(ID,Name,Duty,Workload);
case4:
p=newAPman(ID,Name,Duty);
case5:
p=newSalesman(ID,Name,Duty,Workload);
p->
next=0;
//员工