人事信息管理系统part1

人事信息管理系统项目构建(1)
系统描述:采用计算机对人事信息进行管理的系统。当今社会人员流动越来越频繁,人事管理工作也变得越来越复杂。如果能够实现人事管理的自动化,无疑将给企业管理部门带来很大的方便。人事信息管理就是把分散在企业单位的职工信息实行统一、集中、规范的收集管理,建立分类编号管理、电脑存储查询等现代化、专业化的管理系统。企业人事管理的对象是企业、企业化管理的事业单位及职工本人。人事信息管理为企业单位和个人提供信息输入、信息修改、信息查询、工资调整、依据信息出具个人的基本档案等服务;为企业单位和个人提供信息的收集、整理、保管服务。
优点:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高企事业单位人事信息管理工作的效率,是企事业单位人事管理部门的科学化、正规化管理的重要途径,也是企事业单位与世界接轨的重要途径。

功能/需求分析:
1.登录功能
2.员工信息查询、修改功能
▷职工编号
▷姓名
▷性别
▷部门名称
▷部门编号
▷职位
▷民族
▷政治面貌
▷受教育情况
▷身份证号
▷出生日期
▷联系电话
▷e-mail
▷家庭住址
▷家庭成员信息
▷入职时间
3.员工调动信息查询及管理功能
▷员工调动记录
4.部门信息查询及管理的功能
▷部门编号
▷名称
▷人数
▷部门职能情况
5.员工工资查询及管理功能
▷员工每月工资查询
▷员工奖惩原因和奖惩金额查询
6.员工请假管理功能
▷员工请假记录
7.员工考勤查询及管理功能
▷员工每日考勤时间记录
▷各部门人员考勤情况统计
8.密码修改功能
▷员工密码修改、找回

数据流图:
在这里插入图片描述

#include<iostream> #include<string> #include<fstream> #include <vector> #include <functional> #include <algorithm> #include<string> using namespace std; class Employee{ protected: int number; string name; public: Employee(){} Employee(int num,string nam); void setname(string n); void setnumber(int n); string getname(void); int getnumber(void); virtual void display(void); friend bool less_number(const Employee & m1, const Employee & m2); }; class EmployeeDetial:public Employee{ protected: string sex; int age; public: EmployeeDetial(){} EmployeeDetial(int num,string nam,string se,int ag); void setsex (string s); void setage(int a); string getsex(void); int getage(void); void display(void); friend bool less_age(const EmployeeDetial & m1, const EmployeeDetial & m2); }; void Employee::setname(string n){ name=n; } void Employee::setnumber(int n){ number=n; } string Employee::getname(void){ return name; } int Employee::getnumber(void){ return number; } void Employee::display(void){ // cout<<"E.display"<<endl; cout<<number<<" "<<name<<endl; } void EmployeeDetial::setsex(string s){ sex=s; } void EmployeeDetial::setage(int a){ age=a; } string EmployeeDetial::getsex(void){ return sex; } int EmployeeDetial::getage(void){ return age; } void EmployeeDetial::display(void){ // cout<<"ED.display"<<endl; cout<<number<<" "<<name<<" "<<sex <<" "<<age<<" "<<endl; } EmployeeDetial::EmployeeDetial(int num,string nam,string se,int ag){ number=num; name=nam; sex=se; age=ag; } Employee::Employee(int num,string nam){ number=num; name=nam; } bool less_number(const Employee & m1, const Employee & m2) { return m1.number<m2.number; } bool less_age(const EmployeeDetial & m1, const EmployeeDetial & m2) { return m1.age<m2.age; } using namespace std; static int counter=0; vector<EmployeeDetial> vED; vector<Employee> vE; void load_f_ED(){ int num,age; string name,sex; ifstream fin("EmployeeDetial.txt"); if(!fin){ cout<<"open file error!"<<endl; exit(1); } while(fin>>num>>name>>sex>>age){ // fin>>num>>name>>sex>>age; vED.push_back(EmployeeDetial(num,name,sex,age)); counter++; } fin.close(); } bool load_f_E(){ int num; string name; ifstream fin("Employee.txt"); if(!fin)return false; while(fin>>num>>name){ // fin>>num>>name>>sex>>age; vE.push_back(Employee(num,name)); } fin.close(); return true; } void display_E(){ for(int i=0;i<counter;i++)vE.at(i).display(); } void display_ED(){ for(int i=0;i<counter;i++){ vED.at(i).display(); } } void E_fout(){ ofstream fout("Employee.txt"); for(int i=0;i<counter;i++){ fout<<vE.at(i).getnumber()<<" "<<vE.at(i).getname()<<"\n"; } fout.close(); } void ED_fout(){ ofstream fout("EmployeeDetial.txt"); for(int i=0;i<counter;i++){ fout<<vED.at(i).getnumber()<<" "<<vED.at(i).getname()<<" "<< vED.at(i).getsex()<<" "<<vED.at(i).getage()<<"\n"; } fout.close(); } void E_ED(){ for(int i=0;i<counter;i++)vE.push_back(Employee(vED.at(i).getnumber(),vED.at(i).getname())); } void add(){ int num,age; string name,sex; cout<<"input the number:"<<endl; cin>>num; cout<<"input the name:"<<endl; cin>>name; cout<<"input the sex:"<<endl; cin>>sex; cout<<"input the age:"<<endl; cin>>age; vED.push_back(EmployeeDetial(num,name,sex,age)); vE.push_back(Employee(num,name)); counter++; cout<<"add success!"<<endl; } void delet(){ int a; cout<<"input the number which you want to delete:"<<endl; cin>>a; for(int i=0;i<counter;i++){ if(vED.at(i).getnumber()==a){ for(int n=i;n<counter-1;n++){ vED.at(n)=vED.at(n+1); vE.at(n)=vE.at(n+1); } } } counter--; } void screen(){ cout<<"1. 增加职工记录"<<endl; cout<<"2. 删除职工记录"<<endl; cout<<"3. 生成信息简表"<<endl; cout<<"4. 显示原始记录"<<endl; cout<<"5. 显示简表记录"<<endl; cout<<"6. 原始记录排序"<<endl; cout<<"7. 简表记录排序"<<endl; cout<<"8. 结束程序运行"<<endl; } int dd(){ int a; screen(); cin>>a; return a; } void ED_sort_age(){ sort(vED.begin(), vED.end(), less_age); } void ED_sort_number(){ sort(vED.begin(), vED.end(), less_number); } void E_sort_number(){ sort(vE.begin(), vE.end(), less_number); } int main(){ int a=dd(); while(a!=8){ load_f_ED(); if(!load_f_E())E_ED(); switch(a){ case 1: add();break; case 2:delet();break; case 3: E_fout();cout<<"success!"<<endl;break; case 4: display_ED();break; case 5:display_E();break; case 6:cout<<"1.按number排序"<<endl; cout<<"2.按age排序"<<endl; cin>>a; if(1==a){ED_sort_number();display_ED();break;} if(2==a){ED_sort_age();display_ED();break;} case 7:E_sort_number();display_E();break; default:cout<<"what are you doing?"<<endl;;break; } ED_fout(); E_fout(); vED.clear(); vE.clear(); counter=0; a=dd(); } return 0; }
系统功能如下: 1)系统以菜单方式工作 具有主控界面,用户按照主控界面提示选择相应的功能; 2)系统录入并保存功能 要求用户输入一条新的员工信息,这些信息保存在结构体类型数组中空的元素的各字段中,并写入到文件中进行保存; 3)系统修改功能 根据用户输入的待修改的员工编号,查找该员工的编号的记录,若找到该记录,则修改除员工编号外的字段的值,若未找到该记录,提示用户“未找到符合要求的记录”; 4)系统删除功能 根据用户输入的待删除的员工编号,查找该员工编号的记录,若找到该记录,则将此人的相关数据删除,若未找到该记录,提示用户“未找到符合要求的记录”; 5)系统查询功能(多种查询方式) 用户可以按照员工编号或姓名等字段在结构体数组中进行查找,若能找到该记录,则以打印输出此记录的信息,否则,打印出“未找到该记录”的提示信息; 用户可以输入一个工资段,如<3000,可查询该工资段的人数并在屏幕上显示输出,显示结果如下: 请输入查询的工资段:<3000 工资段 人数 员工编号 <3000 10 ............ 6)系统浏览记录功能 用户可以直接浏览所有员工信息,要求库中存在10条以上记录,用户可以设置每次显示记录的条数来显示系统中的所有记录情况; 7)系统其他功能模块 根据课题适当加入相应的扩展功能,自由发挥; 注:主要完成从磁盘文件中读出记录信息到数组中,供执行期间的各种操作,文件可以是顺序文件,数组长度可固定(如100); 员工信息包括员工编号、姓名、工资、学历、职务、电话等;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值