小型人员信息管理系统.docx
- 文档编号:9688199
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:26
- 大小:187.52KB
小型人员信息管理系统.docx
《小型人员信息管理系统.docx》由会员分享,可在线阅读,更多相关《小型人员信息管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
小型人员信息管理系统
成绩评定表
学生姓名
初珊珊
班级学号
1203060111
专业
通信工程
课程设计题目
小型人员信息管理系统的设计与实现
评
语
组长签字:
成绩
日期
20年月日
课程设计任务书
学院
信息科学与工程
专业
通信工程
学生姓名
初珊珊
班级学号
1203060111
课程设计题目
小型人员信息管理系统的设计与实现
实践教学要求与任务
某小型公司主要有四类人员:
经理、兼职技术人员、销售经理和兼职推销员。
现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。
人员编号基数为1000,每输入一个人员信息编号顺序加1。
程序要有对所有人员提升级别的功能。
本例中为简单起见,所有人员的初始级别均为1级,然后进行升级,经理升为4级,兼职技术人员和销售经理升为3级,推销员认为1级。
月薪计算办法是:
经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;兼职推销员的月薪按该推销员当月销售额的4%提成;销售经理即拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的千分之五。
要求为每一类人员单独建立文件,并在每个文件中手工录入一些人员基本信息,并根据这些基本信息计算职工的月薪,并将计算结果保存入相应的磁盘文件中。
要求编写程序实现上述功能,并且可以通过实例演示上述功能。
工作计划与进度安排
第17周:
分析题目,查阅课题相关资料,进行类设计、算法设计;
第一八周:
程序的设计、调试与实现;
第19周:
程序测试与分析,撰写课程设计报告,进行答辩验收。
指导教师:
201年月日
专业负责人:
201年月日
学院教学副院长:
201年月日
摘要
是支持面向过程的设计,更是支持基于对象和面向对象的程序设计。
类是中十分重要的概念,它是实现面向对象程序设计的基础。
本文采用虚基类及其派生类实现了对小型人员信息的管理,类的封装性和信息隐蔽性可以很好的保护公司员工的信息,同时采用了6.0的控制台工程和工程实现了对员工基本信息的输入和全部信息的输出及保存。
关键词:
信息管理;类;控制台工程;工程
1需求分析
(1)对小型公司进行小型人员信息操作管理系统。
该公司主要有四类人员:
经理、销售经理、兼职技术人员、兼职推销员;定义一个虚基类并且派生四个子类。
(2)系统需要存储这些人员的姓名、编号、级别、当月薪水,输入基本信息,计算月薪总额,显示并保存全部信息;每个派生类的构造函数要实现对其特有数据成员的初始化。
(3)系统具体要求:
①编号要求:
人员编号基数为1000,每输入一个员工姓名编号加1;编号定义为全局静态变量即可。
②级别要求:
所有人员的初始级别均为1级,然后进行升级,经理升为4级,兼职技术人员和销售经理升为3级,兼职推销员为1级;直接对级别赋值即可。
③月薪要求:
经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;兼职推销员的月薪按该推销员当月销售额的4%提成;销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的千分之五。
④总体要求:
为每一类人员单独建立文件,并在每个文件中手工录入一些人员基本信息,并根据这些基本信息计算职工的月薪,并将计算结果保存入相应的磁盘文件中。
2算法基本原理
(1)定义一个员工虚基类(),包括员工姓名、级别、编号月薪共有的基本数据成员;
(2)在基类的基础上派生出经理()类、销售经理()类、兼职技术人员()类和兼职推销员()类,并在这四个派生类中添加各自数据成员和成员函数。
具体分析如下:
①员工编号的可以定义全局静态变量0;并且初始化员工编号1000;每输入一个员工的姓名编号加1。
②员工等级按照要求直接赋值即可;
③在派生类的构造函数中初始化数据成员并且按照要求计算各成员的月薪。
(3)定义一个结构体链表,并将链表的头指针头封装在友元类()中。
(4)运行时构造对象指针,并存在链表中,利用类中的成员函数来实现对链表节点的打印、添加、保存。
这些操作均作为数据结构中对单链表的操作。
3类设计
首先定义一个员工基类,由于要派生出多个子类,所以将其定义为虚基类;在类外定义全局静态变量,用于记录员工的编号。
虚基类中的数据成员包括姓名、编号、等级、月薪。
虚基类的成员函数包括打印函数(),并声明友元类。
然后派生出经理类、销售经理类、兼职技术人员类和兼职推销员类。
在派生类的构造函数直接对月薪和等级赋值:
月薪8000,等级4;在派生类的构造函数中定义特有的数据成员:
销售总额1,并根据要求计算月薪,等级赋值3;在派生类的构造函数中定义特有的数据成员:
工作时间,并根据要求计算月薪,等级赋值3;在派生类的构造函数中定义特有的数据成员:
销售额2,并根据要求计算月薪,等级赋值1。
派生类的功能有打印函数(),储存函数()。
友元类存放的数据成员有,功能有构造函数()、插入函数()、打印函数()以及析构函数();其中功能构造函数用来开辟储存空间,插入函数采用单链表现实信息的输入,打印函数用来输出录入员工的全部信息,析构函数用来释放空间。
基类与各派生类之间的关系如下图所示:
图1类和其派生类关系的图形表示
在程序实现过程中,各派生类的成员函数需要访问基类的数据成员,利用公有继承方式派生,同时将类中的数据成员的访问控制设置为保护类型。
这样,经过公有派生之后,基类的保护成员在派生类中依然是保护成员,可以被派生类的成员函数访问。
4基于控制台的应用程序
整个程序分为三部分,各种职员的类,结构体链表以及封装在结构体链表的类。
实现时先生成各种职员的对象指针,之后将生成的对象指针插入到链表中,最后通过封装类类的成员函数对链表节点进行操作,实现对员工的操作。
4.1类的接口设计
<>
<>
<>
;
0;全局动态变量,用于记录员工编号
定义虚基类
{:
()构造函数,初始化员工基本信息
{<<"请输入员工姓名:
";
>>;
;
1000;
1;
}
();打印函数
;声明友元类
:
数据成员为保护类型
[30];
;
;
;
};
派生类
:
{:
()(){48000;}构造函数定义
();储存函数
();打印函数
;声明友元类
};
派生类
:
{:
()()构造函数定义
{3;
<<"输入月部门销售总额:
";
>>1;
5000+0.005*1;计算销售经理工资
}
();储存函数
();打印函数
;
:
1;销售总额
};
派生类
:
{:
()()构造函数定义
{3;
<<"输入该技术人员的工作时间:
";
>>;
100*;计算技术人员工资
}
();储存函数
();打印函数
;
:
;工作时间
};
派生类
:
/
{:
()()构造函数定义
{1;
<<"输入部门月销售总额:
";
>>2;
0.04*2;计算销售员工资
}
();储存函数
();
;
:
2;销售总额
};
定义友元类
{:
();构造函数
(*);单链表的插入函数
();打印函数
();析构函数
:
*;单链表的头结点
};
经过公有派生,四个派生类获得了除构造函数之外的类的全部成员,由于基类的成员是公有和保护类型,因此在派生类中的成员函数中,基类继承来的成员全部可以访问,而对于建立派生类对象的外部模块来讲,基类的保护成员是无法访问的。
通过保护访问类型和公有的继承方式,实现了基类的数据的有效共享和可靠保护。
友元类可以实现外部函数对类中数据成员的调用,在程序中,员工的基本信息的输入,全部信息的保存都是在基类、派生类的构造函数以及友元类的成员函数中完成,它们的清理工作在友元类析构函数中完成。
4.2类的实现
基类输出函数
()
{<<"姓名:
"<<<<""<<"编号:
"<<<<""<<"等级:
"<<<<""<<"月薪:
"<<<<;
}
派生类输出函数
()
{<<"姓名:
"<<<<""<<"编号:
"<<<<""<<"等级:
"<<<<""<<"月薪:
"<<<<;
}
派生类储存函数
()
{("f:
\\");
<<"姓名:
"<<<<""<<"编号:
"<<<<""<<"等级:
"<<<<""<<"月薪:
"<<<<;
<<""<<;
}
派生类输出函数
()
{<<"姓名:
"<<<<""<<"编号:
"<<<<""<<"等级:
"<<<<""<<"月薪:
"<<<<;
}
派生类储存函数
()
{("f:
\\");
<<"姓名:
"<<<<""<<"编号:
"<<<<""<<"等级:
"<<<<""<<"月薪:
"<<<<;
<<""<<;
}
派生类输出函数
()
{<<"姓名:
"<<<<""<<"编号:
"<<<<""<<"等级:
"<<<<""<<"月薪:
"<<<<;
}
派生类储存函数
()
{("f:
\\");
<<"姓名:
"<<<<""<<"编号:
"<<<<""<<"等级:
"<<<<""<<"月薪:
"<<<<;
<<""<<;
}
派生类输出函数
(){
{<<"姓名:
"<<<<""<<"编号:
"<<<<""<<"等级:
"<<<<""<<"月薪:
"<<<<;
}
派生类:
储存函数
()
{("f:
\\");
<<"姓名:
"<<<<""<<"编号:
"<<<<""<<"等级:
"<<<<""<<"月薪:
"<<<<;
<<""<<;
}
友元类的实现
()友元类的构造函数实现初始化链表
{(())
(-1);
>;
}
(*)链表的插入函数
{*;
(>)链表的头结点的下个结点不为空时,开辟空间
>;
>;
>>;
>>0;
}
链表的输出函数
()
{*>;
()
{
>>();插入打印函数
>;
}
}
链表的析构函数
()
{*,*q;
>;
()
{;
>;
q;释放空间
}
}
菜单函数
(*)
{n;
<<"请输入1、打印0、退出:
";
>>n;
(n)多分支选择语句
{1:
>();输出链表节点
;
0:
;
}
<<"是否继续?
如果继续请按1,退出请按0:
";
>>n;
(0)
();递归调用
}
菜单函数1
1(*)
{*M;声明类指针
*S;
*T;
*S1;
n;
<<"请输入1、经理2、销售经理3、技术人员4、销售员0、退出:
";
>>n;
(n)
{1:
;构造对象指针
>();储存对象数据
>(M);将对象指针插入到链表中
;
2:
;构造对象指针
>();储存对象数据
>(S);将对象指针插入到链表中
;
3:
;构造对象指针
>();储存对象数据
>(T);将对象指针插入到链表中
;
4:
S1;构造对象指针
S1->();储存对象数据
>(S1);将对象指针插入到链表中
;
0:
;
}
<<"是否继续?
如果继续请按1,退出请按0:
";
>>n;
(0)1();递归调用
}
在类的成员函数实现过程中,派生类的成员函数调用了基类的构造函数,只是整个调用过程中完全是由系统内部完成。
基类的保护数据成员,经过公有派生之后,在派生类中是以保护成员的身份出现的,派生类的成员函数可以自由地进行访问。
通过定义友元类访问类内的保护成员,并通过单链表法开辟输入空间以便插入员工的信息。
最后通过友元类的析构函数释放空间。
4.3主函数设计
主函数
()
{;构造对象
n;
(1)
{<<"请输入:
1、输入2、打印0、退出:
";
>>n;
(n)多分支语句进行菜单的选择
{1:
1();
;
2:
();
;
0:
("");
;
}
}
("");
}
在程序的主函数部分,定义一个构造对象以便实现调用。
多分支选择语句可以选择菜单从而实现输入、打印操作。
4.4基于控制台的应用程序测试
程序运行结果如图2-1和2-2所示。
图2-1程序运行结果1
图2-2程序运行结果2
为每类员工保存的文件夹如图3-1所示的、、、:
图3-1存盘文件夹
为经理建立的文件夹打开后如图3-2所示:
图3-2显示经理文件夹
为销售经理建立的文件夹打开后如图3-3所示:
图3-3显示销售经理文件夹
为兼职技术人员建立的文件夹打开后如图3-4所示:
图3-4显示兼职技术人员文件夹
为兼职推销员建立的文件夹打开后如图3-5所示:
图3-5显示兼职推销员文件夹
从图2-1到3-5可以看出,在界面通过对菜单的选择可以输入和打印员工的信息。
经理只需要输入姓名,销售经理要输入姓名和当月的部门的销售总额,兼职技术人员要输入姓名和工作时间,兼职推销员要输入姓名和月销售额,然后选择打印菜单即可输出各类人员的全部信息,而这些信息已经通过程序的文件输出流以的格式保存在了电脑磁盘F:
\梁庶芹文件夹中。
打开后便可显示各类员工的全部信息。
5基于的应用程序
是通过窗口和控件实现输入输出,设置界面也很重要,界面的美观程度直接影响了程序设计的好坏。
下面在类的框架下加入上述类并实现人员的信息管理,通过图形界面的输入和输出。
5.1基于的应用程序设计
5.1.1程序界面设计
首先在中建立()工程,名称为,并在向导的1中选择,即建立基于对话框的应用程序,如下图4~1和4-2所示。
图4-1建立()工程
图4-2建立基于对话框的应用程序
将对话框资源中的默认对话框利用工具箱改造成如下界面,如图4-3所示。
图4-3显示员工信息程序界面设计
图4-3所示的界面中包含了5个,7个控件,5个控件,和一五个控件,控件的基本信息列表如下表1所示。
表1控件基本信息
控件类别
控件
控件
说明
职位
见图6
姓名
级别
月薪
存盘
经理
见图6
销售经理
技术人员
推销员
销售总额
工作时间
销售额
1
提交
见图6
2
3
4
5
姓名栏第一个
姓名栏第二个
姓名栏第三个
姓名栏第四个
1
级别栏第一个
2
级别栏第二个
3
级别栏第三个
4
级别栏第四个
1
月薪栏第一个
1
月薪栏第二个
1
月薪栏第三个
1
月薪栏第四个
销售总额右边
工作时间右边
销售额右边
5.1.2程序代码设计
为了能够将对话框界面上的控件能够与代码联系起来,需要为一五个控件建立,按键进入界面,选择选项卡,可显示成员变量设置界面,如图4-4所示。
图4-4成员变量设置界面1
通过该界面设置与一五个控件对应的成员变量,具体与请详见图4-4
编写代码也是非常重要的阶段,可以借鉴在设计基于界面的控制台应用程序的代码,并将其作必要的改写,具体改写如下。
①各员工的姓名直接在界面的姓名档中输入,等级和月薪直接赋值即可。
②修改内容包括:
●将显示员工信息的()函数去掉,因为在图形界面的程序上已经不需要连个函数承担输出功能了;
●将存盘函数()去掉直接在界面的存盘档位每类员工建立文件夹并保存,仍然使用文件输出流;
●菜单函数也不再需要,直接通过对按钮的选择进行输入输出和存盘操作。
具体代码如下:
①为提交键编写的程序,用来实现信息的输出:
1()
{
();
()为经理的等级和月薪赋值
{
1=4;
1=8000;
}
()为销售经理的等级和月薪赋值
{
2=3;
2=50002*0.005;
}
()为兼职技术人员的等级和月薪赋值
{
3=3;
3*100;
}
()为兼职推销员的等级和月薪赋值
{
4=1;
41*0.04;
();
}
}
②为经理建立文件夹,将其信息保存在磁盘中
2()
{
("f:
\\");
<<"姓名:
"<<<<""<<"等级:
"<<1<<""<<"月薪:
"<<1<<;
}
③为销售经理建立文件夹,将其信息保存在磁盘中
3()
{
("f:
\\");
<<"姓名:
"<<<<""<<"等级:
"<<2<<""<<"月薪:
"<<2<<;
}
④为兼职技术人员建立文件夹,将其信息保存在磁盘中
4()
{("f:
\\");
<<"姓名:
"<<<<""<<"等级:
"<<3<<""<<"月薪:
"<<3<<;
}
⑤为兼职推销员建立文件夹,将其信息保存在磁盘中
5()
{("f:
\\");
<<"姓名:
"<<<<""<<"等级:
"<<4<<""<<"月薪:
"<<4<<;
}
5.2基于的应用程序测试
运行程序后,首先出现的界面如图5-1所示。
图5-1程序初始运行界面
单击读入数据按钮。
结果如图5-2所示。
图5-2显示初始信息的界面
单击输出结果按钮。
结果如图5-3所示。
图5-3显示输出信息的界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小型 人员 信息管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)