C++职工管理系统设计Word格式.docx
《C++职工管理系统设计Word格式.docx》由会员分享,可在线阅读,更多相关《C++职工管理系统设计Word格式.docx(33页珍藏版)》请在冰点文库上搜索。
![C++职工管理系统设计Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/5a60ae47-97c3-4b9a-a057-d6d9451b86eb/5a60ae47-97c3-4b9a-a057-d6d9451b86eb1.gif)
voidRefreshInfo();
//修改员工信息函数
voidDeleteInfonum(intcNum);
//按编号删除员工数据函数
voidDeleteInfodegree(intdegree);
//按学历删除员工数据函数
voidDeleteInfoname(stringname);
//按姓名删除员工数据函数
voidDeleteInfoall();
//删除所有员工信息函数
voidDeleteInfo();
//删除员工信息函数
staticintMaxNum();
//返回系统已存储人数函数
文件操作类:
主要用于对员工信息处理过程中对文件读入、写出等操作。
主要包括以下两种处理函数:
voidWriteIn(intiflag);
//数据写入操作函数
voidReadOut();
//数据读出操作函数
voidRefreshMaxNum(intiflag);
//更新系统中员工计数文件函数
对于员工信息的保存,由写入函数writein(intiflag)写入文Employee.txt中,并将员工总人数写入文件EmployeeMaxNum.txt中。
当需要读出时,由读出函数readout();
读出,注意读出时保存顺序与写入时的数据保存顺序要一致。
然后对类的成员函数进行具体定义。
(2)新增员工数据功能的设计
由员工信息管理类成员函数[voidEmployee:
:
NewInfo();
]完成。
首先读取文件中的员工信息,根据已有信息设置编号,编号的设置方法为:
若无保存数据,则第一个的编号设为1001,否则根据最后一个员工的编号加一,以达到编号递增排序。
然后进行数据输入,结束后由写入函数将数据写入到文件,提示新增成功。
(3)查询员工数据功能的设计
查询功能设计了四种查询方法:
输出所有[showall()]、按学历输出[showdegree(intdegree)]、按年龄段输出[showage(intmin,max)]以及按编号输出[shownum(intnumber)]。
前三种方法都是基于按编号输出来实现,即需要调用按编号输出函数shownum(intnumber);
。
按编号输出函数,根据参数形参number遍历已有数据(条件:
Enum[i]==number),找到该编号则输出其信息,否则提示未找到相关信息。
另外三种查询方式都是先根据输入的数据查找相应的编号,然后将该编号传递给[shownum()]函数进行显示输出。
设计一个输出信息函数[showinfo()]进行设计一个选择菜单,根据选择不同的操作调用相应的函数执行。
(4)修改员工数据功能的设计
由员工信息管理类成员函数[Employee:
RefreshInfo()]完成。
要求输入编号进行修改。
首先读取文件保存的员工信息,然后要求输入要修改的员工编号,如果找到该编号信息,则输出信息,并提示是否修改,选择是则进行修改,然后保存信息提示修改成功。
否则提示未找到返回主菜单。
(5)删除员工数据功能的设计
删除功能设计了四种删除方法:
按编号删除[Employee:
DeleteInfonum(intcNum)]
按学历删除[Employee:
DeleteInfodegree(intdegree)]
按姓名删除[Employee:
DeleteInfoname(stringname)]
删除所有[Employee:
DeleteInfoall()]
删除方法基本相似,先读取文件保存的内容,然后根据传递给函数的形参进行查找相关信息,找到则输出信息并提示是否删除,选择是则删除操作并提示删除成功;
未找到则提示未找到相关信息;
但每个函数的设计还是有很多区别的。
设计了一个删除函数[Employee:
DeleteInfo()],进行设计一个选择菜单,根据选择不同的删除方法调用相应的函数执行。
(6)主程序的设计:
主程序开始,设计一个选择菜单,根据选择进行调用信息管理类的不同的成员函数实现相应的操作。
3、系统模块划分:
(1)本程序共分为以下几个主要模块:
新建员工数据
查询员工数据
修改员工数据
删除员工数据
(2)员工信息的主要内容如下表:
员工信息表
列名
数据类型
姓名
string
编号
Int
性别
char
年龄
出生年月
工作年月
学历
职位
住址
String
电话
三.数据结构与算法描述:
1程序的数据结构
(1)定义全局变量与函数
constN=50;
//定义系统可录入的员工最大数值
stringEname[N];
//姓名
longEnum[N];
//人数
charEsex[N];
//性别
intEage[N];
//年龄
stringEborndate[N];
//出生年月
stringEworkdate[N];
//工作年月
intEdegree[N];
//学历
intEposition[N];
//职位
stringEaddress[N];
//住址
stringEphone[N];
//电话
intshuzi(intsz);
//数字判断函数也可用voidshuzi(int&
sz);
方式
(2)定义员工管理类:
用于程序运行中对员工信息进行各种操作:
classEmployee{
public:
stringEmployeename;
//姓名
longEmployeenum;
charEmployeesex;
intEmployeeage;
//年龄
stringEmployeeborndate;
stringEmployeeworkdate;
intEmployeedegree;
//学历
intEmployeeposition;
stringEmployeeaddress;
stringEmployeephone;
staticlongEmployeeMaxNum;
//静态变量,主要用于对编号的处理
voidNewInfo();
};
(3)定义文件操作类:
主要用于程序运行中对员工信息进行文件读入、写出等操作
classDBOperate{
stringEmployeephone;
staticlongEmployeeMaxNum;
voidReadOut();
voidRefreshMaxNum(intiflag);
(4)所有函数定义:
对定义的函数进行具体定义实现
(5)主函数的定义:
intmain(){
system("
color06f"
);
//设置当前窗口的背景色和前景色
char*select;
select=newchar;
while(*select!
='
5'
){
do{
cout<
<
"
\t===================主菜单===================="
endl;
\t
请选择功能"
\t---------------------------------------------"
1.新建并输入职工数据"
2.按条件输出职工数据"
3.修改指定职工的数据"
4.删除数据"
5.退出"
\t============================================="
请选择您要服务的类别:
"
;
cin>
>
select;
\n============================================\n"
;
Employeee;
DBOperatedbo;
switch(*select){
case'
1'
e.NewInfo();
break;
2'
dbo.ReadOut();
e.ShowInfo();
3'
e.RefreshInfo();
4'
e.DeleteInfo();
sign();
break;
default:
输入错误,请重新输入!
}
cout<
endl<
}while(*select<
'
||*select>
exit
(1);
return0;
}
四.测试结果与分析:
测试结果示例:
主菜单显示:
新员工添加:
输出员工数据:
输出员工信息:
修改员工信息:
(1)程序开始,显示主菜单:
(2)新建员工数据
选择1,新建员工数据;
(3)查询员工数据
添加完后返回主菜单,选择2,按条件输出职工信息,实现的是查询功能:
可以选择4种查询输出方式:
a.输出全体职工信息,输出一个暂停一下,回车后继续,直至全部输出;
b.选择按职工学历输出,则要求选择学历,然后输出所有同学历的职工信息,同样输出一位暂停一下直至全部输出后返回主菜单;
c.选择按年龄段输出,则输出所有在这个年龄段范围内的职工信息;
d.选择按职工编号输出,则输出所输入编号职工的信息,如果编号输入错误则提示未找到相关信息。
(4)修改员工数据
选择3,则修改指定编号员工的信息,如果输入编号不存在则提示未找到相关信息,如找到,则先显示该信息,提示是否修改。
(5)删除员工数据
选择4,则对员工信息进行删除操作,共有四种删除方式供选择:
a.选择1按编号删除,要求输入要删除的编号,如果输入编号不存在则提示未找到相关信息,否则显示该编号员工的信息,并提示是否删除;
选择Y,则进行删除并提示删除成功,否则返回主菜单。
b.选择2按学历进行删除,则先要求选择要删除的学历,如果找到相关信息,然后显示该学历的所有员工信息,并提示是否删除;
否则返回主程序。
c.选择3按姓名进行删除,则输入姓名后进行查找,如找到则显示信息,进行逐条提示删除,直至所有该姓名的员工均查找出来;
否则提示未找到相关信息,并返回主菜单。
输入错误提示未找到;
d.选择4全部删除,则提示是否删除。
(6)结束界面:
选择5,程序结束,显示程序结束的签名界面然后退出。
五.心得体会
C++是一种具有语句简洁,使用灵活,执行效率高等特点的一门语言,学起来确实有很大的困难,但通过这次课程设计的实训,使我对上学期所学的C++语言的理论知识得到巩固,增加了我学习软件技术的兴趣,同时也明白了实际动手操作的重要性。
虽然现在还不明确软件技术包含的具体内容,但从C++语言这门课程开始,我已发现程序设计的乐趣,在做这次课设的过程中也学到了许多计算机的应用基础知识,对计算机的机体也有了一个大体的了解。
在实际操作过程中经常会犯一些错误,而且这些错误或疏忽很难被发现,但通过同学的帮助,自己的努力,终于圆满的完成了这次课设,收获很大,感觉实际动手操作起来很有意思,在具体操作中对这学期所学的C++语言的理论知识得到巩固,达到做课设的基本目的,也发现了很多自己的不足之处,在以后的操作中我会更加注意。
通过实际操作,我学会C++语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力,深刻的体会到“团结就是力量”,“实践是检验真理的标准”的寓意。
在此感谢老师和同学的帮助,同时也希望以后能多进行这样的实训,加长时间,培养我们独立思考问题的能力,提高实际操作水平。
六.参考文献:
(1).刘璟等.《高级语言c++程序设计》.北京:
高等教育出版社,2006.03.
(2).严蔚敏等.《数据结构(C语言版)》.北京:
清华大学出版社,2007.04.
七.参考程序:
对单位的职工进行管理,包括插入、删除、查找、排序等功能。
基本要求:
职工对象包括姓名、性别、出生年月、工作年月的方法。
在此基础上实现增、删、查询、修改等操作。
#include<
iostream>
string>
fstream>
usingnamespacestd;
//出生年月
//工作年月
//数字判断函数
也可使用voidshuzi(int&
方式
//员工管理类
intEmployeeposition;
//全体员工输出函数
//修改员工信息函数
voidDeleteInfodegree(intdegree);
voidDeleteInfoname(stringname);
//文件操作类
//数据写入操作函数
//数据读出操作函数
//==============类Employee成员函数定义================
longEmployee:
EmployeeMaxNum=1000;
//员工编号基数从10001开始
//===返回系统已存储人数函数===
intEmployee:
MaxNum(){
intmn=0;
ifstreamEMN;
EMN.open("
EmployeeMaxNum.txt"
EMN>
mn;
//
mn<
EMN.close();
returnmn;
//===添加新成员函数===
voidEmployee:
NewInfo(){
DBOperatedbo;
dbo.ReadOut();
//读取存储文件
新员工姓名:
cin>
Employee:
Employeename;
if(Employee:
MaxNum()==0)
Employeenum=EmployeeMaxNum+Employee:
MaxNum()+1;
//员工编号依次递增
elseEmployee:
Employeenum=dbo.Employeenum+1;
//编号为最后一个员工编号加一递增
do{
新员工性别:
[F为女性,M为男性]:
char*tmp00=newchar;
tmp00;
//输入存为字符串,然后取其首首字符进行判断,处理输入多个字符出错问题
Employeesex=*tmp00;
Employeesex!
f'
&
&
Employee:
F'
m'
M'
)
输入错误,请重新输入!
en