我们专业大二下学期C++综合训练的作业是资助选题做一个简单的管理系统,我选了第一个,完成后心想着还是发一篇博客吧,毕竟自己还是研究了很久。
话不多说,我们先看一下题目吧:
课题名称:工资管理
说明:一个员工工资管理程序,有新建、存储、显示、修改和删除的功能。
要求:
1) 利用工号区别员工身份,工号用字符数组的形式,从000001开始编号,该工号不能人工修改,是由计算机自动根据录入的先后复制的,录入数据时不必输入工号。
2) 可以选择现实的多种排序形式,如按姓名的顺序、工资总额的顺序、职务工资或奖金的顺序。
3) 每次显示时,将所有要显示数据的工资总额、职务工资总额、奖金总额一起计算显示。
4) 可以根据工号或姓名修改、删除数据,在修改、删除时现要求用户确认,确认后再进行操作。
题目要求必须使用到文件流或者数据库,并且如果使用字符界面的话还要自己用符号堆砌一个界面出来。
接下来就说一下我的整体思路:
建立结构体-->因为我们要从文本文件中读出数据,为了使读出的数据能够规范显示在字符界面上,我们也需要定义规范输出数据的函数-->建立字符界面(提示用户输入数据)-->使用if...else...对输入进行处理(就是调用不同函数)-->逐个实现函数,实现的函数主要包括:插入员工,删除员工,查找员工(查找所有,根据工号查找,修改职工信息,根据名字查找,按照工资对员工进行排序)
为避免出错,我们先include:
#pragma once
#include<iostream>
#include<iomanip>
#include<string>
#include<fstream>
#include<sstream>
建立结构体:
建立的结构体内部包括:员工的ID,员工姓名,员工工资,奖金,总工资,后面对文件的操作都会用到,
员工的id我使用的是int型,只不过输出的时候我们可以通过前面补0的方式来实现工号的规范性
//=================================================结构体=========================================
struct workerInfo {
int workerID;
string workerName;
int totoalSalary;
int jobSalary;
int bonus;
};
设计规范输出的函数:
//将查询到的对象转化为可输出形式
void txttoString(int id,string name, int salary, int bonus, int total) {
cout << setw(8) << " 工号: " << setw(6) << setfill('0') << id
<< setw(8) << setfill(' ') << " 姓名: " << setw(6) << setfill(' ') << name
<< setw(8) << setfill(' ') << " 工资总额: " << setw(6) << setfill(' ') << salary
<< setw(8) << setfill(' ') << " 奖金: " << setw(6) << setfill(' ') << bonus
<< setw(8) << setfill(' ') << " 职务工资: " << setw(6) << setfill(' ') << total << endl;
}
设计字符界面:
提示用户输入按什么键就可以执行什么操作,例如增删查改,如下:
//===========================================================窗口化界面=======================================================&