该系统能够对信息学院的教师信息进行管理,主要功能如下:
设计要求:
(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 "\r\n" using namespace std; struct students{ 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(); } } 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 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; } 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(); } } 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 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; }
原文:https://www.cnblogs.com/NCLONG/p/11129401.html