用C++编写一个人事管理系统

用C++编写一个人事管理系统

1.问题描述

用C++编写一个简单的人事管理系统,具有建立、插入、删除、查询和打印功能,可以从文件输入,输出到文件。
管理的人员有:
本科生:姓名、性别、年龄、身份证号码、高考总分
脱产研究生:姓名、性别、年龄、身份证号码、专业
在职研究生:姓名、性别、年龄、身份证号码、学号、专业、工资
职工:姓名、性别、年龄、身份证号码、工资、岗位
教师:姓名、性别、年龄、身份证号码、工资、专业

2.实现思路

构建基类person,具体包含“姓名”、“性别”、“年龄”、“身份证号码”这四个属性。从基类派生出5个派生类,即本科生、脱产研究生、在职研究生、职工和教师。

通过建立异质链表,对不同的对象实现建立、插入、删除等操作。

异质链表:定义链表指针时,将其定义为基类指针,可用该指针指向派生类对象。

3.部分代码

基类

class person{   //定义共同基类
    friend class list;
protected:
    char name[20];
    int sex;    //0-男; 1-女
    int age;
    char ID[20];
    person *next;
public:
    person(){}//无参构造函数
    person(char *name, int sex, int age, char *ID);//构造函数
    virtual void display();//输出到屏幕
    virtual void fdisplay();//输出到文件
    virtual void create();//从屏幕输入创建对象结点
    virtual void fcreat();//从文件输入创建对象结点
};

派生类

class student:public person{//派生类  本科生
    friend class list;
    int score;  //高考总分
public:
    student(){}
    student(char *name, int sex, int age, char *ID, int score);
    void display();
    void fdisplay();
    void create();
    void fcreat();
};
class offstudent:public person{//派生类  脱产研究生
    friend class list;
    char major[20];
public:
    offstudent(){}
    offstudent(char *name, int sex, int age, char *ID, char *major);
    void display();
    void fdisplay();
    void create();
    void fcreat();
};
class onstudent:public person{//派生类  在职研究生
    friend class list;
    char stuID[20];
    char major[20];
    float salary;
public:
    onstudent(){}
    onstudent(char *name, int sex, int age, char *ID, char *stuID,
              char *major, float salary);
    void display();
    void fdisplay();
    void create();
    void fcreat();
};
class staff:public person{//派生类  职工
    friend class list;
    float salary;
    char job[20];
public:
    staff(){}
    staff(char *name, int sex, int age, char *ID, float salary, char *job);
    void display();
    void fdisplay();
    void create();
    void fcreat();
};
class teacher:public person{//派生类  教师
    friend class list;
    float salary;
    char major[20];
public:
    teacher(){}
    teacher(char *name, int sex, int age, char *ID, float salary, char *major);
    void display();
    void fdisplay();
    void create();
    void fcreat();
};

链表类

class list{
    person *root;//链表头指针
public:
    list(){root = 0;}
    ~list();
    void insert_person(person *node);//插入对象结点
    void remove();//移除对象结点
    void display_list();//输出链表到屏幕
    void fdisplay_list();//输出链表到文件
    void create();//从键盘创建一个对象结点
    void fcreat();//从文件读入,建立链表
    void search();//查找
};

4.运行截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击下载链接下载完整源代码。

  • 6
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值