zoukankan      html  css  js  c++  java
  • 职工管理系统---读文件

    一、文件不存在时

    //判断文件是否为空的标志
        bool m_FileIsempty;

    修改workermanager.cpp

        //文件不存在
        ifstream ifs;
        ifs.open(FILENAME, ios::in);//读文件
        if (!ifs.is_open()) {
            cout << "文件不存在" << endl;
            //初始化属性
            //初始化人数为零
            this->m_EmpNum = 0;
            //初始化数组指针
            this->m_EmpArray = NULL;
            //初始化文件是否为空
            this->m_FileIsempty = true;
            ifs.close();
            return;
        }

    二、文件存在且数据为空

    在workermanager.cpp中构造函数追加代码

        //2.文件存在并且数据没有记录
        char ch;
        ifs >> ch;//读一个字符
        if (ifs.eof()) {
            //文件为空
            cout << "文件为空" << endl;
            //初始化属性
            //初始化人数为零
            this->m_EmpNum = 0;
            //初始化数组指针
            this->m_EmpArray = NULL;
            //初始化文件是否为空
            this->m_FileIsempty = true;
            ifs.close();
            return;
        }
        

    三、文件存在数据存在

    在.h中增加函数

        //统计人数
        int get_EmpNum();

    。cpp中实现

    int workManager::get_EmpNum() {
        ifstream ifs;
        ifs.open(FILENAME, ios::in);//打开文件
        int id;
        string name;
        int dId;
        int num = 0;
        while (ifs >> id && ifs >> name && ifs >> dId) {
            //统计人数变量
            num++;
        }
        return num;
    
    }
        //三、文件存在且有数据
        int num = this->get_EmpNum();
        cout << "职工人数为:" << num << endl;
        this->m_EmpNum = num;

    初始化

    //初始化员工函数
    void workManager::init_Emp() {
        ifstream ifs;
        ifs.open(FILENAME, ios::in);
        int id;
        string name;
        int dId;
        int index=0;
        while (ifs>>id&&ifs>>name&&ifs>>dId)
        {
            worker *worker = NULL;
            if (dId == 1)//普通职工
            {
                worker = new Employee(id, name, dId);
            }
            else if (dId == 2)//经理
            {
                worker = new Manager(id, name, dId);
            }
            else//老板
            {
                worker = new Boos(id, name, dId);
            }
            this->m_EmpArray[index]=worker;
            index++;
        }
        ifs.close();//关闭文件
    }
        //三、文件存在且有数据
        int num = this->get_EmpNum(){
        cout<<"职工人数为:" << num << endl;
        this->m_EmpNum = num;
        void workManager::init_Emp() 
    
        }
        
        //开辟空间
        this->m_EmpArray = new worker*[this->m_EmpNum];
        for (int i = 0; i<this->m_EmpNum; i++) {
            cout << "职工编号:" << this->m_EmpArray[i]->m_id << "姓名:"
                << this->m_EmpArray[i]->m_name <<
                "部门编号:" << this->m_EmpArray[i]->m_DeptId << endl;
        }
    昨夜西风凋碧树,独上高楼,望尽天涯路 衣带渐宽终不悔,为伊消得人憔悴 众里寻他千百度。蓦然回首,那人却在,灯火阑珊处
  • 相关阅读:
    排序算法之——冒泡排序优化
    Linux程序在预处理、编译、汇编、链接、运行步骤的作用
    理解可变参数的原理
    对虚函数、虚表的认识
    成员函数的重载、覆盖、隐藏
    centOS7-mariadb的安装
    centOS7-本地源配置
    vmware中桥接、NET、仅主机模式详解
    XXX系统项目目标文档课堂讨论
    做生活的有心人——xxx系统第一阶段总结
  • 原文地址:https://www.cnblogs.com/X404/p/14623914.html
Copyright © 2011-2022 走看看