C++职工管理系统设计.docx
- 文档编号:12852400
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:33
- 大小:104.11KB
C++职工管理系统设计.docx
《C++职工管理系统设计.docx》由会员分享,可在线阅读,更多相关《C++职工管理系统设计.docx(33页珍藏版)》请在冰豆网上搜索。
C++职工管理系统设计
目 录
一.问题描述……………………………………………………3
二.系统设计……………………………………………………3
三.数据结构与算法描述………………………………………5
四.测试结果与分析……………………………………………8
五.心得体会……………………………………………………12
六.参考文献……………………………………………………13
七.参考程序……………………………………………………13
职工管理系统
一.问题描述:
对单位的职工进行管理,包括插入、修改、删除、查找等功能。
二.系统设计:
1、设计目标:
职工对象包括姓名、性别、年龄、出生年月、工作年月、学历、职务、住址、电话等信息,在此基础上实现增加、删除、查询、修改等操作。
2、设计思想:
一个简单的职工管理系统,根据要求作如下设计:
(1)首先主要设计定义了两个类:
员工信息管理类:
主要用于对员工信息进行新增、查询、修改、删除等操作处理;主要包括以下几种信息处理函数:
voidNewInfo();//添加新成员函数
voidShowInfo();//员工信息查询函数
voidshowall(); //全体员工输出函数
voidshowdegree(intdegree);//按学历输出函数
voidshowage(intmin,intmax);//按年龄段输出函数
voidshownum(longnumber);//按编号输出函数
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
年龄
Int
出生年月
string
工作年月
string
学历
Int
职位
Int
住址
String
电话
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();//添加新成员函数
voidShowInfo();//员工信息查询函数
voidshowall(); //全体员工输出函数
voidshowdegree(intdegree);//按学历输出函数
voidshowage(intmin,intmax);//按年龄段输出函数
voidshownum(longnumber);//按编号输出函数
voidRefreshInfo(); //修改员工信息函数
voidDeleteInfonum(intcNum);//按编号删除员工数据函数
voidDeleteInfodegree(intdegree);//按学历删除员工数据函数
voidDeleteInfoname(stringname);//按姓名删除员工数据函数
voidDeleteInfoall();//删除所有员工信息函数
voidDeleteInfo();//删除员工信息函数
staticintMaxNum();//返回系统已存储人数函数
};
(3)定义文件操作类:
主要用于程序运行中对员工信息进行文件读入、写出等操作
classDBOperate{
public:
stringEmployeename;
longEmployeenum;
charEmployeesex;
intEmployeeage;
stringEmployeeborndate;
stringEmployeeworkdate;
intEmployeedegree;
intEmployeeposition;
stringEmployeeaddress;
stringEmployeephone;
staticlongEmployeeMaxNum;
voidWriteIn(intiflag);//数据写入操作函数
voidReadOut();//数据读出操作函数
voidRefreshMaxNum(intiflag);//更新系统中员工计数文件函数
};
(4)所有函数定义:
对定义的函数进行具体定义实现
(5)主函数的定义:
intmain(){
system("color06f");//设置当前窗口的背景色和前景色
char*select;
select=newchar;
while(*select!
='5'){
do{
cout<<"\t===================主菜单===================="< cout<<"\t 请选择功能"< cout<<"\t---------------------------------------------"< cout<<"\t 1.新建并输入职工数据"< cout<<"\t 2.按条件输出职工数据"< cout<<"\t 3.修改指定职工的数据"< cout<<"\t 4.删除数据"< cout<<"\t 5.退出"< cout<<"\t============================================="< cout<<"\t---------------------------------------------"< cout<<"请选择您要服务的类别: "; cin>>select; cout<<"\n============================================\n"; Employeee; DBOperatedbo; switch(*select){ case'1': e.NewInfo();break; case'2': dbo.ReadOut(); e.ShowInfo();break; case'3': e.RefreshInfo();break; case'4': e.DeleteInfo();break; case'5': sign();break; default: cout<<"输入错误,请重新输入! "< } cout< }while(*select<'1'||*select>'5'); } 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 #include #include usingnamespacestd; 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);方式 //员工管理类 classEmployee{ public: stringEmployeename;//姓名 longEmployeenum;//人数 charEmployeesex;//性别 intEmployeeage; //年龄 stringEmployeeborndate; //出生年月 stringEmployeeworkdate; //工作年月 intEmployeedegree; //学历 intEmployeeposition; //职位 stringEmployeeaddress;//住址 stringEmployeephone; //电话 staticlongEmployeeMaxNum; voidNewInfo();//添加新成员函数 voidShowInfo();//员工信息查询函数 voidshowall(); //全体员工输出函数 voidshowdegree(intdegree);//按学历输出函数 voidshowage(intmin,intmax);//按年龄段输出函数 voidshownum(longnumber);//按编号输出函数 voidRefreshInfo(); //修改员工信息函数 voidDeleteInfonum(intcNum);//按编号删除员工数据函数 voidDeleteInfodegree(intdegree);//按学历删除员工数据函数 voidDeleteInfoname(stringname);//按姓名删除员工数据函数 voidDeleteInfoall();//删除所有员工信息函数 voidDeleteInfo();//删除员工信息函数 staticintMaxNum();//返回系统已存储人数函数 }; //文件操作类 classDBOperate{ public: stringEmployeename; longEmployeenum; charEmployeesex; intEmployeeage; stringEmployeeborndate; stringEmployeeworkdate; intEmployeedegree; intEmployeeposition; stringEmployeeaddress; stringEmployeephone; staticlongEmployeeMaxNum; voidWriteIn(intiflag);//数据写入操作函数 voidReadOut();//数据读出操作函数 voidRefreshMaxNum(intiflag);//更新系统中员工计数文件函数 }; //==============类Employee成员函数定义================ longEmployee: : EmployeeMaxNum=1000;//员工编号基数从10001开始 //===返回系统已存储人数函数=== intEmployee: : MaxNum(){ intmn=0; ifstreamEMN; EMN.open("EmployeeMaxNum.txt"); EMN>>mn; // cout< EMN.close(); returnmn; } //===添加新成员函数=== voidEmployee: : NewInfo(){ DBOperatedbo; dbo.ReadOut();//读取存储文件 cout<<"新员工姓名: "; cin>>Employee: : Employeename; if(Employee: : MaxNum()==0) Employee: : Employeenum=EmployeeMaxNum+Employee: : MaxNum()+1;//员工编号依次递增 elseEmployee: : Employeenum=dbo.Employeenum+1; //编号为最后一个员工编号加一递增 do{ cout<<"新员工性别: [F为女性,M为男性]: "; char*tmp00=newchar; cin>>tmp00;//输入存为字符串,然后取其首首字符进行判断,处理输入多个字符出错问题 Employee: : Employeesex=*tmp00; if(Employee: : Employeesex! ='f'&&Employee: : Employeesex! ='F'&&Employee: : Employeesex! ='m'&&Employee: : Employeesex! ='M') cout<<"输入错误,请重新输入! "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 职工 管理 系统 设计