该系统能够对信息学院的教师信息进行管理,主要功能如下:
设计要求:
(1) 实现人事资料输入、修改、删除等:
(2) 输入教师信息,如姓名、身份证号、地址、电话、部门、工资、参加工作时间、专业、职务、备注等。
(3) 实现信息查询:可根据教师编号、教师姓名、出生年月范围、工资范围、参加工作时间范围等条件查询等。
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <iomanip>
#include <windows.h>
#define WIDTH 20
#define space setw(WIDTH)
#define NEWLINE " "
using namespace std;
#include <fstream>
#include <sstream>
#include <string>
#include <iomanip>
#include <windows.h>
#define WIDTH 20
#define space setw(WIDTH)
#define NEWLINE " "
using namespace std;
struct students{
int IDNumber ,wage, time,birthday;
string name, address, phone, department,spe, zhiwu, remarks;
};
int IDNumber ,wage, time,birthday;
string name, address, phone, department,spe, zhiwu, remarks;
};
void write(const char *filename)
{
students stu;
ofstream out;
out.open(filename, ios::app);
if (!out.is_open())
{
cout << "open error" << endl;
return;
}
else
{
cout << "请输入身份证号、姓名、地址、电话、部门、工资、参加工作的时间、专业、职务、备注:" << endl;
cin >> stu.IDNumber >> stu.name>> stu.address >> stu.phone >> stu.department >> stu.wage >> stu.time >> stu.spe >> stu.zhiwu >> stu.remarks;
out.fill(' ');
out.setf(ios::left);
out << space << stu.IDNumber << space << stu.name <<space << stu.address << space << stu.phone << space << stu.department << space << stu.wage << space << stu.time << space << stu.spe << space << stu.zhiwu << space << stu.remarks << NEWLINE;
out.close();
cout << "添加成功!!" << endl;
}
}
void read(const char *filename)
{
students stu;
ifstream in;
in.open(filename, ios::in);
if (!in.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
stringstream ss;
char line[100000];
cout.setf(ios::left);
cout.fill(' ');
cout << space << "身份证号" << space << "姓名" << space << "地址" << space << "电话" << space << "部门" << space << "工资" << space << "参加工作时间" << space << "专业" << space << "职务" << space << "备注" << endl;
while (in.peek() != EOF)
{
in.getline(line,100000);
ss << line;
ss >> stu.IDNumber >> stu.name>> stu.address >> stu.phone >> stu.department >> stu.wage >> stu.time >> stu.spe >> stu.zhiwu >> stu.remarks;
cout << space << stu.IDNumber << space << stu.name << space << stu.address << space << stu.phone << space << stu.department << space << stu.wage << space << stu.time << space << stu.spe << space << stu.zhiwu << space << stu.remarks << NEWLINE;
ss.str("");
ss.clear();
}
in.close();
}
}
{
students stu;
ifstream in;
in.open(filename, ios::in);
if (!in.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
stringstream ss;
char line[100000];
cout.setf(ios::left);
cout.fill(' ');
cout << space << "身份证号" << space << "姓名" << space << "地址" << space << "电话" << space << "部门" << space << "工资" << space << "参加工作时间" << space << "专业" << space << "职务" << space << "备注" << endl;
while (in.peek() != EOF)
{
in.getline(line,100000);
ss << line;
ss >> stu.IDNumber >> stu.name>> stu.address >> stu.phone >> stu.department >> stu.wage >> stu.time >> stu.spe >> stu.zhiwu >> stu.remarks;
cout << space << stu.IDNumber << space << stu.name << space << stu.address << space << stu.phone << space << stu.department << space << stu.wage << space << stu.time << space << stu.spe << space << stu.zhiwu << space << stu.remarks << NEWLINE;
ss.str("");
ss.clear();
}
in.close();
}
}
void del(const char *filename)
{
int IDNumber;
cout << "请输入您要删除教师的身份证号" << endl;
cin >> IDNumber;
ifstream in;
in.open(filename, ios::in);
if (!in.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
string temp;
stringstream ss;
int curId;;
while (in.peek() != EOF)
{
string line;
getline(in, line);
ss << line;
ss >> curId;
if (curId != IDNumber)
{
temp += line + NEWLINE;
}
ss.str("");
ss.clear();
}
in.close();
ofstream out;
out.open("D:\teachermanage.txt", ios::out);
if (!out.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
out << temp;
out.close();
cout << "删除成功!!" << endl;
}
}
{
int IDNumber;
cout << "请输入您要删除教师的身份证号" << endl;
cin >> IDNumber;
ifstream in;
in.open(filename, ios::in);
if (!in.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
string temp;
stringstream ss;
int curId;;
while (in.peek() != EOF)
{
string line;
getline(in, line);
ss << line;
ss >> curId;
if (curId != IDNumber)
{
temp += line + NEWLINE;
}
ss.str("");
ss.clear();
}
in.close();
ofstream out;
out.open("D:\teachermanage.txt", ios::out);
if (!out.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
out << temp;
out.close();
cout << "删除成功!!" << endl;
}
}
}
int search_pos(const char *filename, int id)
{
ifstream in;
in.open(filename, ios::in | ios::binary);
if (!in.is_open())
{
cout << "file open error" << endl;
return -1;
}
else
{
stringstream ss;
while (in.peek() != EOF)
{
int start = in.tellg();
string line;
getline(in, line);
ss << line;
int curID;
ss >> curID;
if (curID == id)
{
in.close();
return start;
}
ss.str("");
}
cout << "对不起您查找的同学信息不存在!" << endl;
in.close();
}
return -1;
}
{
ifstream in;
in.open(filename, ios::in | ios::binary);
if (!in.is_open())
{
cout << "file open error" << endl;
return -1;
}
else
{
stringstream ss;
while (in.peek() != EOF)
{
int start = in.tellg();
string line;
getline(in, line);
ss << line;
int curID;
ss >> curID;
if (curID == id)
{
in.close();
return start;
}
ss.str("");
}
cout << "对不起您查找的同学信息不存在!" << endl;
in.close();
}
return -1;
}
int search_name(const char *filename, string name)
{
students stu;
ifstream in;
in.open(filename, ios::in | ios::binary);
if (!in.is_open())
{
cout << "file open error" << endl;
return -1;
}
else
{
stringstream ss;
while (in.peek() != EOF)
{
int start = in.tellg();
string line;
getline(in, line);
ss << line;
ss >> stu.IDNumber >> stu.name >> stu.address >> stu.phone >> stu.department >> stu.wage >> stu.time >> stu.spe >> stu.zhiwu >> stu.remarks;
if (stu.name == name)
{
in.close();
return start;
}
ss.str("");
}
cout << "对不起您查找的教师信息不存在!" << endl;
in.close();
}
return -1;
}
void searchName(const char *filename)
{
cout << "请输入您要查找的教师姓名:" << endl;
string name;
cin >> name;
int pos = search_name(filename, name);
string line;
fstream in;
in.open(filename, ios::in | ios::binary);
in.seekg(pos, ios::beg);
getline(in, line);
cout.setf(ios::left);
cout << space << "身份证号" << space << "姓名" << space << "地址" << space << "电话" << space << "部门" << space << "工资" << space << "参加工作时间" << space << "专业" << space << "职务" << space << "备注" << endl;
cout << line << endl;
}
void searchID(const char *filename)
{
cout << "请输入您要查找的教师id:" << endl;
int id;
cin >> id;
int pos = search_pos(filename, id);
string line;
fstream in;
in.open(filename, ios::in | ios::binary);
in.seekg(pos, ios::beg);
getline(in, line);
cout.setf(ios::left);
cout << space << "身份证号" << space << "姓名" << space << "地址" << space << "电话" << space << "部门" << space << "工资" << space << "参加工作时间" << space << "专业" << space << "职务" << space << "备注" << endl;
cout << line << endl;
}
void edit(const char *filename)
{
int id, age;
string name,address, phone, department, wage, time, spe, zhiwu, remarks;
cout << "请输入您要修改的教师身份证号:" << endl;
cin >> id;
cout << "请输入该教师新的姓名、地址、电话、部门、工资、参加工作的时间、专业、职务、备注:" << endl;
cin >> name >> address >> phone >> department >> wage >> time >> spe >> zhiwu >> remarks;
stringstream infoTemp;
infoTemp.fill(' ');
infoTemp.setf(ios::left);
infoTemp << space << id << space << name << space << address << space << phone << space << department << space << wage << space << time << space << spe << space << zhiwu << space << remarks;
string newInfo;
getline(infoTemp, newInfo);
fstream file;
file.open(filename, ios::in | ios::out | ios::binary);
if (!file.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
int pos = search_pos(filename, id);
file.seekg(pos, ios::beg);
file << newInfo;
cout << "修改后信息为:" << endl;
cout << newInfo << endl;
file.close();
}
}
{
int id, age;
string name,address, phone, department, wage, time, spe, zhiwu, remarks;
cout << "请输入您要修改的教师身份证号:" << endl;
cin >> id;
cout << "请输入该教师新的姓名、地址、电话、部门、工资、参加工作的时间、专业、职务、备注:" << endl;
cin >> name >> address >> phone >> department >> wage >> time >> spe >> zhiwu >> remarks;
stringstream infoTemp;
infoTemp.fill(' ');
infoTemp.setf(ios::left);
infoTemp << space << id << space << name << space << address << space << phone << space << department << space << wage << space << time << space << spe << space << zhiwu << space << remarks;
string newInfo;
getline(infoTemp, newInfo);
fstream file;
file.open(filename, ios::in | ios::out | ios::binary);
if (!file.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
int pos = search_pos(filename, id);
file.seekg(pos, ios::beg);
file << newInfo;
cout << "修改后信息为:" << endl;
cout << newInfo << endl;
file.close();
}
}
void searchwage(const char *filename)
{
int max1, min1;
cout << "请输入教师公资范围(最大、最小)"<<endl;
cin >> max1>>min1;
students stu;
ifstream in;
in.open(filename, ios::in);
if (!in.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
stringstream ss;
char line[100000];
cout.setf(ios::left);
cout.fill(' ');
cout << space << "身份证号" << space << "姓名" << space << "地址" << space << "电话" << space << "部门" << space << "工资" << space << "参加工作时间" << space << "专业" << space << "职务" << space << "备注" << endl;
while (in.peek() != EOF)
{
in.getline(line, 100000);
ss << line;
ss >> stu.IDNumber >> stu.name >> stu.address >> stu.phone >> stu.department >> stu.wage >> stu.time >> stu.spe >> stu.zhiwu >> stu.remarks;
if (stu.wage<max(max1,min1)&&stu.wage>min(max1,min1))
cout << space << stu.IDNumber << space << stu.name << space << stu.address << space << stu.phone << space << stu.department << space << stu.wage << space << stu.time << space << stu.spe << space << stu.zhiwu << space << stu.remarks << NEWLINE;
ss.str("");
ss.clear();
}
in.close();
}
}
void searchtime(const char *filename)
{
int max1, min1;
cout << "请输入教师参加工作时间范围(最大、最小)" << endl;
cin >> max1 >> min1;
students stu;
ifstream in;
in.open(filename, ios::in);
if (!in.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
stringstream ss;
char line[100000];
cout.setf(ios::left);
cout.fill(' ');
cout << space << "身份证号" << space << "姓名" << space << "地址" << space << "电话" << space << "部门" << space << "工资" << space << "参加工作时间" << space << "专业" << space << "职务" << space << "备注" << endl;
while (in.peek() != EOF)
{
in.getline(line, 100000);
ss << line;
ss >> stu.IDNumber >> stu.name >> stu.address >> stu.phone >> stu.department >> stu.wage >> stu.time >> stu.spe >> stu.zhiwu >> stu.remarks;
if (stu.time<max(max1, min1) && stu.time>min(max1, min1))
cout << space << stu.IDNumber << space << stu.name << space << stu.address << space << stu.phone << space << stu.department << space << stu.wage << space << stu.time << space << stu.spe << space << stu.zhiwu << space << stu.remarks << NEWLINE;
ss.str("");
ss.clear();
}
in.close();
}
}
{
int max1, min1;
cout << "请输入教师参加工作时间范围(最大、最小)" << endl;
cin >> max1 >> min1;
students stu;
ifstream in;
in.open(filename, ios::in);
if (!in.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
stringstream ss;
char line[100000];
cout.setf(ios::left);
cout.fill(' ');
cout << space << "身份证号" << space << "姓名" << space << "地址" << space << "电话" << space << "部门" << space << "工资" << space << "参加工作时间" << space << "专业" << space << "职务" << space << "备注" << endl;
while (in.peek() != EOF)
{
in.getline(line, 100000);
ss << line;
ss >> stu.IDNumber >> stu.name >> stu.address >> stu.phone >> stu.department >> stu.wage >> stu.time >> stu.spe >> stu.zhiwu >> stu.remarks;
if (stu.time<max(max1, min1) && stu.time>min(max1, min1))
cout << space << stu.IDNumber << space << stu.name << space << stu.address << space << stu.phone << space << stu.department << space << stu.wage << space << stu.time << space << stu.spe << space << stu.zhiwu << space << stu.remarks << NEWLINE;
ss.str("");
ss.clear();
}
in.close();
}
}
int main()
{
{
const char *filename = "D:\teachermanage.txt";
while (true)
{
cout << "--------------------------" << endl;
cout << "0、查看全部信息" << endl;
cout << "1、新增教师信息" << endl;
cout << "2、删除教师信息" << endl;
cout << "3、修改教师信息" << endl;
cout << "4、查找教师信息(身份证号)" << endl;
cout << "5、查找教师信息(姓名)" << endl;
cout << "6、查找教师信息(工资)" << endl;
cout << "7、查找教师信息(工作时间)" << endl;
int cmd;
cin >> cmd;
system("cls");
switch (cmd)
{
case 0:read(filename); break;
case 1:write(filename); break;
case 2:del(filename); break;
case 3:edit(filename); break;
case 4:searchID(filename); break;
case 5:searchName(filename); break;
case 6:searchwage(filename); break;
case 7:searchtime(filename); break;
}
}
return 0;
}
//新增出生年月查询 未增加出生年月属性,而是通过身份证号进行教师身份的查询
void searchbirth(const char *filename)
{
int max1, min1;
cout << "请输入教师出生年月范围(最大、最小)" << endl;
cin >> max1 >> min1;
students stu;
ifstream in;
in.open(filename, ios::in);
if (!in.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
stringstream ss;
char line[100000];
cout.setf(ios::left);
cout.fill(' ');
cout << space << "身份证号" << space << "姓名" << space << "地址" << space << "电话" << space << "部门" << space << "工资" << space << "参加工作时间" << space << "专业" << space << "职务" << space << "备注" << endl;
while (in.peek() != EOF)
{
in.getline(line, 100000);
ss << line;
ss >> stu.IDNumber >> stu.name >> stu.address >> stu.phone >> stu.department >> stu.wage >> stu.time >> stu.spe >> stu.zhiwu >> stu.remarks;
string t(stu.IDNumber.substr(6, 8));
int b = atoi(t.c_str());
if (b<max(max1, min1) && b>min(max1, min1))
cout << space << stu.IDNumber << space << stu.name << space << stu.address << space << stu.phone << space << stu.department << space << stu.wage << space << stu.time << space << stu.spe << space << stu.zhiwu << space << stu.remarks << NEWLINE;
ss.str("");
ss.clear();
}
in.close();
}
}
{
int max1, min1;
cout << "请输入教师出生年月范围(最大、最小)" << endl;
cin >> max1 >> min1;
students stu;
ifstream in;
in.open(filename, ios::in);
if (!in.is_open())
{
cout << "file open error" << endl;
return;
}
else
{
stringstream ss;
char line[100000];
cout.setf(ios::left);
cout.fill(' ');
cout << space << "身份证号" << space << "姓名" << space << "地址" << space << "电话" << space << "部门" << space << "工资" << space << "参加工作时间" << space << "专业" << space << "职务" << space << "备注" << endl;
while (in.peek() != EOF)
{
in.getline(line, 100000);
ss << line;
ss >> stu.IDNumber >> stu.name >> stu.address >> stu.phone >> stu.department >> stu.wage >> stu.time >> stu.spe >> stu.zhiwu >> stu.remarks;
string t(stu.IDNumber.substr(6, 8));
int b = atoi(t.c_str());
if (b<max(max1, min1) && b>min(max1, min1))
cout << space << stu.IDNumber << space << stu.name << space << stu.address << space << stu.phone << space << stu.department << space << stu.wage << space << stu.time << space << stu.spe << space << stu.zhiwu << space << stu.remarks << NEWLINE;
ss.str("");
ss.clear();
}
in.close();
}
}