目录1 前言 (1)2 需求分析 (1)2.1 任务和要求 (1)2.2 运行环境 (1)2.3 开发工具 (1)3 分析和设计 (1)3.1 系统分析及设计思路 (1)3.2 主要类图 (2)3.3 函数流程图 (3)4 具体代码实现 (3)5 课程设计总结 (14)5.1 程序运行结果或预期运行结果 (14)5.2 设计结论 (15)参考文献 (15)致谢 (15)1 前言在日益发展的现代社会,一个高效实用的职工信息管理系统已经是企业必不可少的一个管理工具,它可以使企业在管理方面减少很多时间,本课程设计针对现代社会企业对员工信息的管理而设计,使员工的管理更加的简捷,更加的方便,界面友好,易于操作。
为了设计一个功能强大的职工信息管理系统,我们建立了职工类,用于对职工进行各种操作,将职工的相关数据保存在文本文件中。
2 需求分析2.1 任务和要求设计一个职工信息馆管理系统,完成职工信息管理等功能,要求完成以下功能:1.能够实现职工信息录入功能;2.实现删除职工信息的功能;3.实现修改职工信息的功能;4.实现用文本文件保存职工的信息;5.按照职工编号或工资对职工信息排序;6.按照编号查找职工;程序中所涉及C++语言内容包括:C++语言编译预处理过程、函数、数组、类、继承、封装、多态,重载,面向对象程序设计等相关内容。
2.2 运行环境(1)WINDOWS2000/XP系统(2)Visual C++ 6.0编译环境或DEV C++ 5.0编译环境2.3 开发工具C++语言3 分析和设计3.1 系统分析及设计思路本系统采用C++编写Win32 Console Application。
使用文本文件保存数据。
运行程序即可进入欢迎界面,选择操作序号即可进入相应的操作界面,并执行相应的操作。
其设计思路步骤可分为:(1)添加职工信息添加员工信息,提供员工信息的添加,在该模块中设计了安全检查机制,即确认是否添加员工的信息,若对员工信息的添加不满意,则可以选择重新输入。
还设置有返回主菜单的选项以方便用户。
(2)删除职工信息删除员工信息中设计了对员工人数的检查,如果员工人数NUM的值为0,则返回到主菜单。
如果员工人数NUM不为0,则进入删除员工信息的界面。
界面包括员工信息列表,和删除选项,方便用户的操作。
(3)修改职工信息根据编号来修改职工的信息,若编号不存在则直接返回界面。
(4) 保存职工信息保存员工的信息,即为将当前所有的员工的信息存入到worker.txt中。
这里我们采用的是C++的ofstream的写入文件的对象进行控制。
(5)显示职工的信息按照职工编号从小到大排序或工资由高到低来排序职工信息。
(6)查找职工信息根据编号来查找职工的信息,若编号不存在则直接返回界面。
3.2 主要类图图3.1 职工类图3.3 函数流程图根据需要填上具体内容,没有重要的流程图可以不填。
4 具体代码实现#include <iostream>#include <fstream>#include <string>#include <stdlib.h> //字符转浮点atof()#include <windows.h>using namespace std;FILE *fp; //文件指针,指向worker.txtint NUM=0; //计数员工的个数int saveCtrl=1; //该变量用于检测数据的修改后是否保存的情况class Person{public:Person() {} //构造函数void setPerson(char *num1,char *name1,char *sex1,char *birth1,char *tel1,char *salary1); //成员数据的修改函数;friend void add(); //声明为Person的友元,函数功能为:1. 员工信息输入friend void modify(); //声明为Person的友元,函数功能为:2. 员工信息修改friend void dele(); //声明为Person的友元,函数功能为:3. 员工信息删除friend void index(); //声明为Person的友元,函数功能为:4. 员工信息排序friend void find(); //声明为Person的友元,函数功能为:5. 员工信息查找friend void save(); //声明为Person的友元,函数功能为:6. 员工信息保存friend void read();private: //声明编号、姓名、出生年月、性别、联系电话、基本工资等成员变量char num[15];char name[15];char sex[5];char birth[15];char tel[15];char salary[15];};Person Per[100]; //声明全局Person对象数组void Person::setPerson(char *num1,char *name1,char *sex1,char *birth1,char *tel1,char *salary1){strcpy(num,num1);strcpy(name,name1);strcpy(sex,sex1);strcpy(birth,birth1);strcpy(tel,tel1);strcpy(salary,salary1);}void menu() //主菜单{ cout<<"\n\n"<<endl;cout<<"\t\t*************************************************"<<endl;cout<<"\t\t* \t\t 员工管理系统\t\t*"<<endl;cout<<"\t\t* ------------------------------------------ *"<<endl;cout<<"\t\t* \t\t1. 员工信息输入\t\t*"<<endl;cout<<"\t\t* \t\t2. 员工信息修改\t\t* "<<endl;cout<<"\t\t* \t\t3. 员工信息删除\t\t*"<<endl;cout<<"\t\t* \t\t4. 员工信息排序\t\t*"<<endl;cout<<"\t\t* \t\t5. 员工信息查找\t\t*"<<endl;cout<<"\t\t* \t\t6. 员工信息保存\t\t*"<<endl;cout<<"\t\t* \t\t0. 退出\t\t\t*"<<endl;cout<<"\t\t*************************************************"<<endl;cout<<"\n\n\t请选择(0~6):";}void add() //1. 员工信息输入{ char num[15]; //暂时存放编号char name[15]; //暂时存放姓名char sex[5]; //暂时存放性别char birth[15]; //暂时存放生日char tel[15]; //暂时存放电话char salary[15]; //暂时存放工资char p; //用于选择判断system("cls"); //清屏while(1) //控制信息添加多次的循环{cout<<"\n\n输入员工信息:"<<endl;cout<<"编号:" ;cin>>num;cout<<endl;cout<<"姓名:";cin>>name;cout<<endl;cout<<"性别:" ;cin>>sex;cout<<"生日:";cin>>birth;cout<<endl;cout<<"电话:";cin>>tel;cout<<endl;cout<<"工资:";cin>>salary;cout<<endl;for(int i=0;i<NUM;i++) //检测所添加员工的编号是否存在{if( strcmp(Per[i].num,num)==0 ){cout<<"该编号的已经存在"<<endl;system("pause"); //按任意键继续……return;}}p=0;cout<<"请选择:\n\t1.确认添加数据\n\t2.重新输入\n\t3.返回主菜单"<<endl;cin>>p; //控制是否确认添加数据if(p<'1' || p>'3'){ cout<<"没有这个选项!\n请重新输入:"<<endl;Sleep(1000);continue;}if(p=='2') //重新输入数据{continue;}if(p=='3') //返回主菜单{return;}Per[NUM].setPerson(num,name,sex,birth,tel,salary);cout<<"\n\n\t\t添加数据成功!\n"<<endl;saveCtrl=0;NUM++;cout<<"是否返回主菜单(y/n)";cin>>p; //返回主菜单if(p=='y'||p=='Y'){return;}}}void modify() //2. 员工信息修改{system("cls"); //清屏if(NUM==0) //判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数{cout<<"\n\n\n\n\n\n\t\t\t没有任何员工记录。