IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ 课设 高校人员信息管理系统 -> 正文阅读

[C++知识库]C++ 课设 高校人员信息管理系统

前言

🎬本文章是 【C++笔记】 专栏的文章,主要是C++黑马的笔记、自己的实验与课设
🔗C++笔记 传送门

问题描述

某高校有四类员工:教师、实验员、行政人员、教师兼行政人员

  1. 共有的信息:编号、姓名、性别、年龄
  2. 教师的信息:所在系部、专业、职称
  3. 实验员的信息:所在实验室、职务
  4. 行政人员的信息:政治面貌、职称

功能要求

  1. 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消
  2. 添加查询:功能可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息
  3. 显示功能:可显示当前系统中所有记录,每条记录占据一行
  4. 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性
  5. 删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存
  6. 统计功能:能根据多种参数进行人员的统计。例如:统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计某年龄段人员的数量等
  7. 保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意
  8. 读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用

分析

继承关系分析

C++课设17

全局函数说明

代码

可以从仓库地址下一份,或者自己新建项目把代码粘进去。

/*
@Author:张时贰
@Date:2022年05月16日
@CSDN:张时贰
@Blog:zhangshier.vip
*/
#include <iostream>
using namespace std;
#include<string>
#include <fstream>
#define MAX 200	//每一类人员上限200

//声明全局函数
void Statistics();//统计函数
void Statisticstotal();//统计总人数
void Statisticman();//统计男员工
void Statisticwomen();//统计女员工
void Statisticage();//统计年龄段
//人 类
class Person
{
public:
	char id[10];	//编号
	char name[5];//姓名
	char sex[10];//性别
	int age;  //年龄
};

//教师类
class Teacher :virtual public Person
{
	friend class Tea_Po; //声明友元,教师兼行政人员类访问教师私有变量
public:
	void Add();//添加
	void Seach();//查询
	void Show();//显示
	void Edit();//编辑
	void Delete();//删除
	void Save();//保存
	void Read();//读取
	void Seachid();//编号查询
	void Seachname();//姓名查询
	void Showone();
private:
	char t_dept[20];//所在系部
	char t_major[20];//专业
	char t_title[10];//职称
}; Teacher Tea[MAX]; int Teatop = 0;

void Teacher::Add()
{
	Teacher t_temp;//临时变量
	if (Teatop < MAX)
	{
		cout << "编号:"; cin >> t_temp.id;
		for (int i = 0; i < Teatop; i++)
		{
			if (!strcmp(Tea[i].id, t_temp.id))
			{
				cout << "id已存在" << endl;
				return;
			}
		}
		cout << "姓名:"; cin >> t_temp.name;
		cout << "性别:"; cin >> t_temp.sex;
		cout << "年龄:"; cin >> t_temp.age;
		cout << "系部:"; cin >> t_temp.t_dept;
		cout << "专业:"; cin >> t_temp.t_major;
		cout << "职称:"; cin >> t_temp.t_title;
		Tea[Teatop] = t_temp;
		Teatop++;
	}
	else
	{
		cout << "当前教师已招满" << endl;
	}
}
void Teacher::Seach()
{
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |      教师管理平台-查询       |" << endl;
		cout << "  |   1.编号查询                 |" << endl;
		cout << "  |   2.姓名查询                 |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		switch (c)
		{
		case 1:
			Seachid();
			break;
		case 2:
			Seachname();
			break;
		case 0:
			return;
			break;
		default:
			cout << "输入错误请重新输入" << endl;
			break;
		}
	}
}
void Teacher::Show()
{
	if (Teatop == 0)
	{
		cout << "当前教师系统内为空" << endl;
	}
	else
	{
		for (int i = 0; i < Teatop; i++)
		{
			Tea[i].Showone();
		}
	}
}
void Teacher::Edit()
{
	Teacher t_temp;
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |      教师管理平台-编辑       |" << endl;
		cout << "  |   1.根据编号查询并修改       |" << endl;
		cout << "  |   2.根据姓名查询并修改       |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		if (c == 1)
		{
			char sid[10];
			int i;
			cout << "请输入编号"; cin >> sid;
			for (i = 0; i < Teatop; i++)
			{
				if (!strcmp(Tea[i].id, sid))
					break;
			}
			if (i == Teatop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				cout << "编号:"; cin >> t_temp.id;
				cout << "姓名:"; cin >> t_temp.name;
				cout << "性别:"; cin >> t_temp.sex;
				cout << "年龄:"; cin >> t_temp.age;
				cout << "系部:"; cin >> t_temp.t_dept;
				cout << "专业:"; cin >> t_temp.t_major;
				cout << "职称:"; cin >> t_temp.t_title;
				Tea[i] = t_temp;
			}
			break;
		}
		else if (c == 2)
		{
			char sname[5];
			int i;
			cout << "请输入姓名"; cin >> sname;
			for (i = 0; i < Teatop; i++)
			{
				if (!strcmp(Tea[i].name, sname))
					break;
			}
			if (i == Teatop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				cout << "编号:"; cin >> t_temp.id;
				cout << "姓名:"; cin >> t_temp.name;
				cout << "性别:"; cin >> t_temp.sex;
				cout << "年龄:"; cin >> t_temp.age;
				cout << "系部:"; cin >> t_temp.t_dept;
				cout << "专业:"; cin >> t_temp.t_major;
				cout << "职称:"; cin >> t_temp.t_title;
				Tea[i] = t_temp;
			}
			break;
		}
		else if (c == 0)
		{
			break;
		}
		else
		{
			cout << "输入错误请重新选择" << endl;
		}
	}
}
void Teacher::Delete()
{
	if (Teatop == 0)
	{
		cout << "当前记录为空" << endl;
		return;
	}
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |      教师管理平台-删除       |" << endl;
		cout << "  |   1.根据编号查询并删除       |" << endl;
		cout << "  |   2.根据姓名查询并删除       |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		if (c == 1)
		{
			char sid[10];
			int i;
			cout << "请输入编号"; cin >> sid;
			for (i = 0; i < Teatop; i++)
			{
				if (!strcmp(Tea[i].id, sid))
					break;
			}
			if (i == Teatop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				for (i; i < Teatop; i++)
				{
					Tea[i] = Tea[i + 1];
				}
				cout << "删除成功" << endl;
				Teatop--;
			}
			break;
		}
		else if (c == 2)
		{
			char sname[5];
			int i;
			cout << "请输入姓名"; cin >> sname;
			for (i = 0; i < Teatop; i++)
			{
				if (!strcmp(Tea[i].name, sname))
					break;
			}
			if (i == Teatop)
				cout << "输入姓名无效,系统内不存在" << endl;
			else
			{
				for (i; i < Teatop; i++)
				{
					Tea[i] = Tea[i + 1];
				}
				cout << "删除成功" << endl;
				Teatop--;
			}
			break;
		}
		else if (c == 0)
		{
			break;
		}
		else
		{
			cout << "输入错误请重新选择" << endl;
		}
	}
}
void Teacher::Save()
{
	int i;
	ofstream outfile, outfile1;
	outfile1.open("Teatop.dat", ios::out);	//写文件Teatop.dat
	outfile1 << Teatop;
	outfile.open("Tea_data.dat", ios::binary);
	if (!outfile)
	{
		cerr << "open error!" << endl; return;
	}
	for (i = 0; i < Teatop; i++)
		outfile.write((char *)&Tea[i], sizeof(Tea[i]));
	outfile.close();
	cout << "保存成功!" << endl;
}
void Teacher::Read()
{
	int i;
	ifstream infile, infile1;
	infile1.open("Teatop.dat", ios::in);
	infile1 >> Teatop;
	infile.open("Tea_data.dat", ios::binary);
	if (!infile)
	{
		cerr << "open error!" << endl; return;
	}
	for (i = 0; i < Teatop; i++)
		infile.read((char *)&Tea[i], sizeof(Tea[i]));
	infile.close();
	cout << "读取成功!" << endl;
}

void Teacher::Seachid()
{
	char sid[10];
	cout << "请输入编号" << endl; cin >> sid;
	int i;
	for (i = 0; i < Teatop; i++)
	{
		if (!strcmp(Tea[i].id, sid))
		{
			Tea[i].Showone();
			break;
		}
	}
	if (i == Teatop)
	{
		cout << "该编号不存在" << endl;
	}
}
void Teacher::Seachname()
{
	char sname[5];
	cout << "请输入姓名" << endl; cin >> sname;
	int i;
	for (i = 0; i < Teatop; i++)
	{
		if (!strcmp(Tea[i].name, sname))
		{
			Tea[i].Showone();
			break;
		}
	}
	if (i == Teatop)
	{
		cout << "该姓名不存在" << endl;
	}
}
void Teacher::Showone()
{
	cout << "编号\t" << id << "\t姓名\t" << name << "\t性别\t" << sex << "\t年龄\t" << age << "\t系部\t" << t_dept << "\t专业\t" << t_major << "\t职称\t" << t_title << endl;
}

//实验人员类
class Experiment :public Person
{
public:
	Experiment() {}
	void Add();//添加
	void Seach();//查询
	void Show();//显示
	void Edit();//编辑
	void Delete();//删除
	void Save();//保存
	void Read();//读取
	void Seachid();//编号查询
	void Seachname();//姓名查询
	void Showone();
private:
	char e_location[20];//所在实验室
	char e_job[10];//职务
}; Experiment Exper[MAX]; int Expertop = 0;

void Experiment::Add()
{
	Experiment e_temp;//临时变量
	if (Expertop < MAX)
	{
		cout << "编号:"; cin >> e_temp.id;
		for (int i = 0; i < Expertop; i++)
		{
			if (!strcmp(Exper[i].id, e_temp.id))
			{
				cout << "id已存在" << endl;
				return;
			}
		}
		cout << "姓名:"; cin >> e_temp.name;
		cout << "性别:"; cin >> e_temp.sex;
		cout << "年龄:"; cin >> e_temp.age;
		cout << "实验室:"; cin >> e_temp.e_location;
		cout << "职务:"; cin >> e_temp.e_job;
		Exper[Expertop] = e_temp;
		Expertop++;
	}
	else
	{
		cout << "当前实验人员已招满" << endl;
	}
}
void Experiment::Seach()
{
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |  实验人员管理平台-查询       |" << endl;
		cout << "  |   1.编号查询                 |" << endl;
		cout << "  |   2.姓名查询                 |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		switch (c)
		{
		case 1:
			Seachid();
			break;
		case 2:
			Seachname();
			break;
		case 0:
			return;
			break;
		default:
			cout << "输入错误请重新输入" << endl;
			break;
		}
	}
}
void Experiment::Show()
{
	if (Expertop == 0)
	{
		cout << "当前实验人员系统内为空" << endl;
	}
	else
	{
		for (int i = 0; i < Expertop; i++)
		{
			Exper[i].Showone();
		}
	}
}
void Experiment::Edit()
{
	Experiment e_temp;
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |  实验人员管理平台-编辑       |" << endl;
		cout << "  |   1.根据编号查询并修改       |" << endl;
		cout << "  |   2.根据姓名查询并修改       |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		if (c == 1)
		{
			char sid[10];
			int i;
			cout << "请输入编号"; cin >> sid;
			for (i = 0; i < Expertop; i++)
			{
				if (!strcmp(Exper[i].id, sid))
					break;
			}
			if (i == Expertop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				cout << "编号:"; cin >> e_temp.id;
				cout << "姓名:"; cin >> e_temp.name;
				cout << "性别:"; cin >> e_temp.sex;
				cout << "年龄:"; cin >> e_temp.age;
				cout << "实验室:"; cin >> e_temp.e_location;
				cout << "职务:"; cin >> e_temp.e_job;
				Exper[i] = e_temp;
			}
			break;
		}
		else if (c == 2)
		{
			char sname[5];
			int i;
			cout << "请输入姓名"; cin >> sname;
			for (i = 0; i < Expertop; i++)
			{
				if (!strcmp(Exper[i].name, sname))
					break;
			}
			if (i == Expertop)
				cout << "输入姓名无效,系统内不存在" << endl;
			else
			{
				cout << "编号:"; cin >> e_temp.id;
				cout << "姓名:"; cin >> e_temp.name;
				cout << "性别:"; cin >> e_temp.sex;
				cout << "年龄:"; cin >> e_temp.age;
				cout << "实验室:"; cin >> e_temp.e_location;
				cout << "职务:"; cin >> e_temp.e_job;
				Exper[i] = e_temp;
			}
			break;
		}
		else if (c == 0)
		{
			break;
		}
		else
		{
			cout << "输入错误请重新选择" << endl;
		}
	}
}
void Experiment::Delete()
{
	if (Expertop == 0)
	{
		cout << "当前记录为空" << endl;
		return;
	}
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |   实验人员管理平台-删除      |" << endl;
		cout << "  |   1.根据编号查询并删除       |" << endl;
		cout << "  |   2.根据姓名查询并删除       |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		if (c == 1)
		{
			char sid[10];
			int i;
			cout << "请输入编号"; cin >> sid;
			for (i = 0; i < Expertop; i++)
			{
				if (!strcmp(Exper[i].id, sid))
					break;
			}
			if (i == Expertop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				for (i; i < Expertop; i++)
				{
					Exper[i] = Exper[i + 1];
				}
				cout << "删除成功" << endl;
				Expertop--;
			}
			break;
		}
		else if (c == 2)
		{
			char sname[5];
			int i;
			cout << "请输入姓名"; cin >> sname;
			for (i = 0; i < Expertop; i++)
			{
				if (!strcmp(Exper[i].name, sname))
					break;
			}
			if (i == Expertop)
				cout << "输入姓名无效,系统内不存在" << endl;
			else
			{
				for (i; i < Expertop; i++)
				{
					Exper[i] = Exper[i + 1];
				}
				cout << "删除成功" << endl;
				Expertop--;
			}
			break;
		}
		else if (c == 0)
		{
			break;
		}
		else
		{
			cout << "输入错误请重新选择" << endl;
		}
	}
}

void Experiment::Save()
{
	int i;
	ofstream outfile, outfile1;
	outfile1.open("Expertop.dat", ios::out);	//写文件Expertop.dat
	outfile1 << Expertop;
	outfile.open("Exper_data.dat", ios::binary);
	if (!outfile)
	{
		cerr << "open error!" << endl; return;
	}
	for (i = 0; i < Expertop; i++)
		outfile.write((char *)&Exper[i], sizeof(Exper[i]));
	outfile.close();
	cout << "保存成功!" << endl;
}
void Experiment::Read()
{
	int i;
	ifstream infile, infile1;
	infile1.open("Expertop.dat", ios::in);
	infile1 >> Expertop;
	infile.open("Exper_data.dat", ios::binary);
	if (!infile)
	{
		cerr << "open error!" << endl; return;
	}
	for (i = 0; i < Expertop; i++)
		infile.read((char *)&Exper[i], sizeof(Exper[i]));
	infile.close();
	cout << "读取成功!" << endl;
}
void Experiment::Seachid()
{
	char sid[10];
	cout << "请输入编号" << endl; cin >> sid;
	int i;
	for (i = 0; i < Expertop; i++)
	{
		if (!strcmp(Exper[i].id, sid))
		{
			Exper[i].Showone();
			break;
		}
	}
	if (i == Expertop)
	{
		cout << "该编号不存在" << endl;
	}
}
void Experiment::Seachname()
{
	char sname[5];
	cout << "请输入姓名" << endl; cin >> sname;
	int i;
	for (i = 0; i < Expertop; i++)
	{
		if (!strcmp(Exper[i].name, sname))
		{
			Exper[i].Showone();
			break;
		}
	}
	if (i == Expertop)
	{
		cout << "该姓名不存在" << endl;
	}
}
void Experiment::Showone()
{
	cout << "编号\t" << id << "\t姓名\t" << name << "\t性别\t" << sex << "\t年龄\t" << age << "\t实验室\t" << e_location << "\t职务\t" << e_job << endl;
}

//行政人员类
class Politician :virtual public Person
{
	friend class Tea_Po;//声明友元,教师兼行政人员类访问行政人员私有变量
public:
	void Add();//添加
	void Seach();//查询
	void Show();//显示
	void Edit();//编辑
	void Delete();//删除
	void Save();//保存
	void Read();//读取
	void Seachid();//编号查询
	void Seachname();//姓名查询
	void Showone();
private:
	char p_look[10];//政治面貌
	char p_post[10];//职称
}; Politician Po[MAX]; int Potop = 0;

void Politician::Add()
{
	Politician p_temp;//临时变量
	if (Potop < MAX)
	{
		cout << "编号:"; cin >> p_temp.id;
		for (int i = 0; i < Potop; i++)
		{
			if (!strcmp(Po[i].id, p_temp.id))
			{
				cout << "id已存在" << endl;
				return;
			}
		}
		cout << "姓名:"; cin >> p_temp.name;
		cout << "性别:"; cin >> p_temp.sex;
		cout << "年龄:"; cin >> p_temp.age;
		cout << "政治面貌:"; cin >> p_temp.p_look;
		cout << "职称:"; cin >> p_temp.p_post;
		Po[Potop] = p_temp;
		Potop++;
	}
	else
	{
		cout << "当前行政人员已招满" << endl;
	}
}
void Politician::Seach()
{
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |  行政人员管理平台-查询       |" << endl;
		cout << "  |   1.编号查询                 |" << endl;
		cout << "  |   2.姓名查询                 |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		switch (c)
		{
		case 1:
			Seachid();
			break;
		case 2:
			Seachname();
			break;
		case 0:
			return;
			break;
		default:
			cout << "输入错误请重新输入" << endl;
			break;
		}
	}
}
void Politician::Show()
{
	if (Potop == 0)
	{
		cout << "当前行政人员系统内为空" << endl;
	}
	else
	{
		for (int i = 0; i < Potop; i++)
		{
			Po[i].Showone();
		}
	}
}
void Politician::Edit()
{
	Politician p_temp;
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |  行政人员管理平台-编辑       |" << endl;
		cout << "  |   1.根据编号查询并修改       |" << endl;
		cout << "  |   2.根据姓名查询并修改       |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		if (c == 1)
		{
			char sid[10];
			int i;
			cout << "请输入编号"; cin >> sid;
			for (i = 0; i < Potop; i++)
			{
				if (!strcmp(Po[i].id, sid))
					break;
			}
			if (i == Potop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				cout << "编号:"; cin >> p_temp.id;
				cout << "姓名:"; cin >> p_temp.name;
				cout << "性别:"; cin >> p_temp.sex;
				cout << "年龄:"; cin >> p_temp.age;
				cout << "政治面貌:"; cin >> p_temp.p_look;
				cout << "职称:"; cin >> p_temp.p_post;
				Po[i] = p_temp;
			}
			break;
		}
		else if (c == 2)
		{
			char sname[5];
			int i;
			cout << "请输入姓名"; cin >> sname;
			for (i = 0; i < Potop; i++)
			{
				if (!strcmp(Po[i].name, sname))
					break;
			}
			if (i == Potop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				cout << "编号:"; cin >> p_temp.id;
				cout << "姓名:"; cin >> p_temp.name;
				cout << "性别:"; cin >> p_temp.sex;
				cout << "年龄:"; cin >> p_temp.age;
				cout << "政治面貌:"; cin >> p_temp.p_look;
				cout << "职称:"; cin >> p_temp.p_post;
				Po[i] = p_temp;
			}
			break;
		}
		else if (c == 0)
		{
			break;
		}
		else
		{
			cout << "输入错误请重新选择" << endl;
		}
	}
}
void Politician::Delete()
{
	if (Potop == 0)
	{
		cout << "当前记录为空" << endl;
		return;
	}
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |   行政人员管理平台-删除      |" << endl;
		cout << "  |   1.根据编号查询并删除       |" << endl;
		cout << "  |   2.根据姓名查询并删除       |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		if (c == 1)
		{
			char sid[10];
			int i;
			cout << "请输入编号"; cin >> sid;
			for (i = 0; i < Potop; i++)
			{
				if (!strcmp(Po[i].id, sid))
					break;
			}
			if (i == Potop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				for (i; i < Potop; i++)
				{
					Po[i] = Po[i + 1];
				}
				cout << "删除成功" << endl;
				Potop--;
			}
			break;
		}
		else if (c == 2)
		{
			char sname[5];
			int i;
			cout << "请输入姓名"; cin >> sname;
			for (i = 0; i < Potop; i++)
			{
				if (!strcmp(Po[i].name, sname))
					break;
			}
			if (i == Potop)
				cout << "输入姓名无效,系统内不存在" << endl;
			else
			{
				for (i; i < Potop; i++)
				{
					Po[i] = Po[i + 1];
				}
				cout << "删除成功" << endl;
				Potop--;
			}
			break;
		}
		else if (c == 0)
		{
			break;
		}
		else
		{
			cout << "输入错误请重新选择" << endl;
		}
	}
}

void Politician::Save()
{
	int i;
	ofstream outfile, outfile1;
	outfile1.open("Potop.dat", ios::out);	//写文件Potop.dat
	outfile1 << Potop;
	outfile.open("Po_data.dat", ios::binary);
	if (!outfile)
	{
		cerr << "open error!" << endl; return;
	}
	for (i = 0; i < Potop; i++)
		outfile.write((char *)&Po[i], sizeof(Po[i]));
	outfile.close();
	cout << "保存成功!" << endl;
}
void Politician::Read()
{
	int i;
	ifstream infile, infile1;
	infile1.open("Potop.dat", ios::in);
	infile1 >> Potop;
	infile.open("Po_data.dat", ios::binary);
	if (!infile)
	{
		cerr << "open error!" << endl; return;
	}
	for (i = 0; i < Potop; i++)
		infile.read((char *)&Po[i], sizeof(Po[i]));
	infile.close();
	cout << "读取成功!" << endl;
}
void Politician::Seachid()
{
	char sid[10];
	cout << "请输入编号" << endl; cin >> sid;
	int i;
	for (i = 0; i < Potop; i++)
	{
		if (!strcmp(Po[i].id, sid))
		{
			Po[i].Showone();
			break;
		}
	}
	if (i == Potop)
	{
		cout << "该编号不存在" << endl;
	}
}
void Politician::Seachname()
{
	char sname[5];
	cout << "请输入姓名" << endl; cin >> sname;
	int i;
	for (i = 0; i < Potop; i++)
	{
		if (!strcmp(Po[i].name, sname))
		{
			Po[i].Showone();
			break;
		}
	}
	if (i == Potop)
	{
		cout << "该姓名不存在" << endl;
	}
}
void Politician::Showone()
{
	cout << "编号\t" << id << "\t姓名\t" << name << "\t性别\t" << sex << "\t年龄\t" << age << "\t政治面貌\t" << p_look << "\t职称\t" << p_post << endl;
}


//教师兼行政人员类
class Tea_Po :public Teacher, Politician
{
public:
	void Add();//添加
	void Seach();//查询
	void Show();//显示
	void Edit();//编辑
	void Delete();//删除,调用
	void Save();//保存
	void Read();//读取
	void Seachid();//编号查询
	void Seachname();//姓名查询
	void Showone();
}; Tea_Po T_P[MAX]; int T_Ptop = 0;


void Tea_Po::Add()
{
	Tea_Po tp_temp;//临时变量
	if (T_Ptop < MAX)
	{
		cout << "编号:"; cin >> tp_temp.id;
		for (int i = 0; i < T_Ptop; i++)
		{
			if (!strcmp(T_P[i].id, tp_temp.id))
			{
				cout << "id已存在" << endl;
				return;
			}
		}
		cout << "姓名:"; cin >> tp_temp.name;
		cout << "性别:"; cin >> tp_temp.sex;
		cout << "年龄:"; cin >> tp_temp.age;
		cout << "系部:"; cin >> tp_temp.t_dept;
		cout << "专业:"; cin >> tp_temp.t_major;
		cout << "政治面貌:"; cin >> tp_temp.p_look;
		cout << "职称:"; cin >> tp_temp.p_post;
		T_P[T_Ptop] = tp_temp;
		T_Ptop++;
	}
	else
	{
		cout << "当前教师兼行政人员已招满" << endl;
	}
}
void Tea_Po::Seach()
{
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |  教师兼行政人员管理平台-查询       |" << endl;
		cout << "  |   1.编号查询                 |" << endl;
		cout << "  |   2.姓名查询                 |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		switch (c)
		{
		case 1:
			Seachid();
			break;
		case 2:
			Seachname();
			break;
		case 0:
			return;
			break;
		default:
			cout << "输入错误请重新输入" << endl;
			break;
		}
	}
}
void Tea_Po::Show()
{
	if (T_Ptop == 0)
	{
		cout << "当前教师兼行政人员系统内为空" << endl;
	}
	else
	{
		for (int i = 0; i < T_Ptop; i++)
		{
			T_P[i].Showone();
		}
	}
}
void Tea_Po::Edit()
{
	Tea_Po tp_temp;
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |  教师兼行政人员管理平台-编辑       |" << endl;
		cout << "  |   1.根据编号查询并修改       |" << endl;
		cout << "  |   2.根据姓名查询并修改       |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		if (c == 1)
		{
			char sid[10];
			int i;
			cout << "请输入编号"; cin >> sid;
			for (i = 0; i < T_Ptop; i++)
			{
				if (!strcmp(T_P[i].id, sid))
					break;
			}
			if (i == T_Ptop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				cout << "编号:"; cin >> tp_temp.id;
				cout << "姓名:"; cin >> tp_temp.name;
				cout << "性别:"; cin >> tp_temp.sex;
				cout << "年龄:"; cin >> tp_temp.age;
				cout << "系部:"; cin >> tp_temp.t_dept;
				cout << "专业"; cin >> tp_temp.t_major;
				cout << "政治面貌:"; cin >> tp_temp.p_look;
				cout << "职称:"; cin >> tp_temp.p_post;
				T_P[i] = tp_temp;
			}
			break;
		}
		else if (c == 2)
		{
			char sname[5];
			int i;
			cout << "请输入姓名"; cin >> sname;
			for (i = 0; i < T_Ptop; i++)
			{
				if (!strcmp(T_P[i].name, sname))
					break;
			}
			if (i == T_Ptop)
				cout << "输入姓名无效,系统内不存在" << endl;
			else
			{
				cout << "编号:"; cin >> tp_temp.id;
				cout << "姓名:"; cin >> tp_temp.name;
				cout << "性别:"; cin >> tp_temp.sex;
				cout << "年龄:"; cin >> tp_temp.age;
				cout << "系部:"; cin >> tp_temp.t_dept;
				cout << "专业"; cin >> tp_temp.t_major;
				cout << "政治面貌:"; cin >> tp_temp.p_look;
				cout << "职称:"; cin >> tp_temp.p_post;
				T_P[i] = tp_temp;
			}
			break;
		}
		else if (c == 0)
		{
			break;
		}
		else
		{
			cout << "输入错误请重新选择" << endl;
		}
	}
}
void Tea_Po::Delete()
{
	if (T_Ptop == 0)
	{
		cout << "当前记录为空" << endl;
		return;
	}
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |   教师兼行政人员管理平台-删除|" << endl;
		cout << "  |   1.根据编号查询并删除       |" << endl;
		cout << "  |   2.根据姓名查询并删除       |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		if (c == 1)
		{
			char sid[10];
			int i;
			cout << "请输入编号"; cin >> sid;
			for (i = 0; i < T_Ptop; i++)
			{
				if (!strcmp(T_P[i].id, sid))
					break;
			}
			if (i == T_Ptop)
				cout << "输入编号无效,系统内不存在" << endl;
			else
			{
				for (i; i < T_Ptop; i++)
				{
					T_P[i] = T_P[i + 1];
				}
				cout << "删除成功" << endl;
				T_Ptop--;
			}
			break;
		}
		else if (c == 2)
		{
			char sname[5];
			int i;
			cout << "请输入姓名"; cin >> sname;
			for (i = 0; i < T_Ptop; i++)
			{
				if (!strcmp(T_P[i].name, sname))
					break;
			}
			if (i == T_Ptop)
				cout << "输入姓名无效,系统内不存在" << endl;
			else
			{
				for (i; i < T_Ptop; i++)
				{
					T_P[i] = T_P[i + 1];
				}
				cout << "删除成功" << endl;
				T_Ptop--;
			}
			break;
		}
		else if (c == 0)
		{
			break;
		}
		else
		{
			cout << "输入错误请重新选择" << endl;
		}
	}
}

void Tea_Po::Save()
{
	int i;
	ofstream outfile, outfile1;
	outfile1.open("T_Ptop.dat", ios::out);	//写文件T_Ptop.dat
	outfile1 << T_Ptop;
	outfile.open("T_P_data.dat", ios::binary);
	if (!outfile)
	{
		cerr << "open error!" << endl; return;
	}
	for (i = 0; i < T_Ptop; i++)
		outfile.write((char *)&T_P[i], sizeof(T_P[i]));
	outfile.close();
	cout << "保存成功!" << endl;
}
void Tea_Po::Read()
{
	int i;
	ifstream infile, infile1;
	infile1.open("T_Ptop.dat", ios::in);
	infile1 >> T_Ptop;
	infile.open("T_P_data.dat", ios::binary);
	if (!infile)
	{
		cerr << "open error!" << endl; return;
	}
	for (i = 0; i < T_Ptop; i++)
		infile.read((char *)&T_P[i], sizeof(T_P[i]));
	infile.close();
	cout << "读取成功!" << endl;
}
void Tea_Po::Seachid()
{
	char sid[10];
	cout << "请输入编号" << endl; cin >> sid;
	int i;
	for (i = 0; i < T_Ptop; i++)
	{
		if (!strcmp(T_P[i].id, sid))
		{
			T_P[i].Showone();
			break;
		}
	}
	if (i == T_Ptop)
	{
		cout << "该编号不存在" << endl;
	}
}
void Tea_Po::Seachname()
{
	char sname[5];
	cout << "请输入姓名" << endl; cin >> sname;
	int i;
	for (i = 0; i < T_Ptop; i++)
	{
		if (!strcmp(T_P[i].name, sname))
		{
			T_P[i].Showone();
			break;
		}
	}
	if (i == T_Ptop)
	{
		cout << "该姓名不存在" << endl;
	}
}
void Tea_Po::Showone()
{
	cout << "编号\t" << id << "\t姓名\t" << name << "\t性别\t" << sex << "\t年龄\t" << age << "\t系部\t" << t_dept << "\t专业" << t_major << "\t政治面貌\t" << p_look << "\t职称\t" << p_look << endl;
}

/*分别设计四类人员的菜单
教师菜单	void Tea_menu(Teacher tea)
实验人员菜单void Exper_menu(Experiment exper)
行政人员菜单void P_menu(Politician po)
老师兼行政人员菜单void TeaPo_menu(Tea_Po t_p)
*/

//教师菜单
void Tea_menu(Teacher tea)
{
	while (true)
	{
		system("pause");
		system("cls");//清除主菜单
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |      教师管理平台            |" << endl;
		cout << "  |   1.添加                     |" << endl;
		cout << "  |   2.查询                     |" << endl;
		cout << "  |   3.显示                     |" << endl;
		cout << "  |   4.编辑                     |" << endl;
		cout << "  |   5.删除                     |" << endl;
		cout << "  |   6.统计                     |" << endl;
		cout << "  |   7.保存                     |" << endl;
		cout << "  |   8.读取                     |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		switch (c)
		{
		case 1:
			tea.Add();
			break;
		case 2:
			tea.Seach();
			break;
		case 3:
			tea.Show();
			break;
		case 4:
			tea.Edit();
			break;
		case 5:
			tea.Delete();
			break;
		case 6:
			Statistics();
			break;
		case 7:
			tea.Save();
			break;
		case 8:
			tea.Read();
			break;
		case 0:
			break;
		default:
			cout << "输入错误请重新输入" << endl;
			break;
		}
		if (c == 0)
			break;
	}
}

//实验人员菜单
void Exper_menu(Experiment exper)
{
	while (true)
	{
		system("pause");
		system("cls");//清除主菜单
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |      实验人员管理平台        |" << endl;
		cout << "  |   1.添加                     |" << endl;
		cout << "  |   2.查询                     |" << endl;
		cout << "  |   3.显示                     |" << endl;
		cout << "  |   4.编辑                     |" << endl;
		cout << "  |   5.删除                     |" << endl;
		cout << "  |   6.统计                     |" << endl;
		cout << "  |   7.保存                     |" << endl;
		cout << "  |   8.读取                     |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		switch (c)
		{
		case 1:
			exper.Add();
			break;
		case 2:
			exper.Seach();
			break;
		case 3:
			exper.Show();
			break;
		case 4:
			exper.Edit();
			break;
		case 5:
			exper.Delete();
			break;
		case 6:
			Statistics();
			break;
		case 7:
			exper.Save();
			break;
		case 8:
			exper.Read();
			break;
		case 0:
			break;
		default:
			cout << "输入错误请重新输入" << endl;
			break;
		}
		if (c == 0)
			break;
	}
}

//行政人员类菜单
void P_menu(Politician po)
{
	while (true)
	{
		system("pause");
		system("cls");//清除主菜单
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |      行政人员管理平台        |" << endl;
		cout << "  |   1.添加                     |" << endl;
		cout << "  |   2.查询                     |" << endl;
		cout << "  |   3.显示                     |" << endl;
		cout << "  |   4.编辑                     |" << endl;
		cout << "  |   5.删除                     |" << endl;
		cout << "  |   6.统计                     |" << endl;
		cout << "  |   7.保存                     |" << endl;
		cout << "  |   8.读取                     |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		switch (c)
		{
		case 1:
			po.Add();
			break;
		case 2:
			po.Seach();
			break;
		case 3:
			po.Show();
			break;
		case 4:
			po.Edit();
			break;
		case 5:
			po.Delete();
			break;
		case 6:
			Statistics();
			break;
		case 7:
			po.Save();
			break;
		case 8:
			po.Read();
			break;
		case 0:
			break;
		default:
			cout << "输入错误请重新输入" << endl;
			break;
		}
		if (c == 0)
			break;
	}
}


//教师兼行政人员菜单
void TeaPo_menu(Tea_Po t_p)
{
	while (true)
	{
		system("pause");
		system("cls");//清除主菜单
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |  教师兼行政人员人员管理平台  |" << endl;
		cout << "  |   1.添加                     |" << endl;
		cout << "  |   2.查询                     |" << endl;
		cout << "  |   3.显示                     |" << endl;
		cout << "  |   4.编辑                     |" << endl;
		cout << "  |   5.删除                     |" << endl;
		cout << "  |   6.统计                     |" << endl;
		cout << "  |   7.保存                     |" << endl;
		cout << "  |   8.读取                     |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		switch (c)
		{
		case 1:
			t_p.Add();
			break;
		case 2:
			t_p.Seach();
			break;
		case 3:
			t_p.Show();
			break;
		case 4:
			t_p.Edit();
			break;
		case 5:
			t_p.Delete();
			break;
		case 6:
			Statistics();
			break;
		case 7:
			t_p.Save();
			break;
		case 8:
			t_p.Read();
			break;
		case 0:
			break;
		default:
			cout << "输入错误请重新输入" << endl;
			break;
		}
		if (c == 0)
			break;
	}
}



void Statistics()
{
	while (true)
	{
		int c;
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |      人数统计                |" << endl;
		cout << "  |   1.四类人员数量             |" << endl;
		cout << "  |   2.男员工数量               |" << endl;
		cout << "  |   3.女员工数量               |" << endl;
		cout << "  |   4.某年龄段数量             |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择"; cin >> c;
		switch (c)
		{
		case 1:
			Statisticstotal();
			break;
		case 2:
			Statisticman();
			break;
		case 3:
			Statisticwomen();
			break;
		case 4:
			Statisticage();
			break;
		case 0:
			return;
			break;
		default:
			cout << "输入错误请重新输入" << endl;
			break;
		}
	}
}
//四类员工数量
void Statisticstotal()
{
	cout << "四类员工总数量" << Teatop + Expertop + Potop + T_Ptop << endl;
	cout << "教师总数量" << Teatop << endl;
	cout << "实验员总数量" << Expertop << endl;
	cout << "行政人员总数量" << Potop << endl;
	cout << "教师兼行政人员总数量" << T_Ptop << endl;
}
//男员工数量
void Statisticman()
{
	int man = 0;
	for (int i = 0; i < Teatop; i++)
	{
		if (!strcmp(Tea[i].sex, "男"))
			man++;
	}
	for (int i = 0; i < Expertop; i++)
	{
		if (!strcmp(Exper[i].sex, "男"))
			man++;
	}
	for (int i = 0; i < Potop; i++)
	{
		if (!strcmp(Po[i].sex, "男"))
			man++;
	}
	for (int i = 0; i < T_Ptop; i++)
	{
		if (!strcmp(T_P[i].sex, "男"))
			man++;
	}
	cout << "男员工的数量为" << man << endl;
}
//女员工数量
void Statisticwomen()
{
	int women = 0;
	for (int i = 0; i < Teatop; i++)
	{
		if (!strcmp(Tea[i].sex, "女"))
			women++;
	}
	for (int i = 0; i < Expertop; i++)
	{
		if (!strcmp(Exper[i].sex, "女"))
			women++;
	}
	for (int i = 0; i < Potop; i++)
	{
		if (!strcmp(Po[i].sex, "女"))
			women++;
	}
	for (int i = 0; i < T_Ptop; i++)
	{
		if (!strcmp(T_P[i].sex, "女"))
			women++;
	}
	cout << "女员工的数量为" << women << endl;
}
//年龄段统计
void Statisticage()
{
	int age1, age2;
	cout << "年龄区间:age1="; cin >> age1;
	cout << "年龄区间:age2="; cin >> age2;
	int num = 0;
	for (int i = 0; i < Teatop; i++)
	{
		if (Tea[i].age > age1&& Tea[i].age < age2)
			num++;
	}
	for (int i = 0; i < Expertop; i++)
	{
		if (Exper[i].age > age1&&Exper[i].age < age2)
			num++;
	}
	for (int i = 0; i < Potop; i++)
	{
		if (Po[i].age > age1&&Po[i].age < age2)
			num++;
	}
	for (int i = 0; i < T_Ptop; i++)
	{
		if (T_P[i].age > age1&&T_P[i].age < age2)
			num++;
	}
	cout << age1 << "~" << age2 << "的数量为" << num << endl;
}
int main()
{
	string password = "192062116";	//初始密码
	string inputpass;	//输入密码
	int f = 3;			//输入次数
	int c;		//主菜单选择

	//定义四类人员,调用菜单
	Teacher mt;
	Experiment me;
	Politician mp;
	Tea_Po mtp;
	/*读取系统内文件*/
	mt.Read();
	me.Read();
	mp.Read();
	mtp.Read();
	system("cls");

	cout << endl;
	cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
	cout << "  |      高校人员信息管理系统    |" << endl;
	cout << "  |______________________________|" << endl << endl;

	while (true)
	{
		cout << "请输入密码(192062116)" << endl; cin >> inputpass;
		if (inputpass == password)
		{
			cout << "密码正确" << endl;
			break;
		}
		else
		{
			cout << "密码错误" << endl;
			if (f > 1)
			{
				cout << "你还有" << f - 1 << "次机会" << endl;
				f--;
			}
			else
				exit(0);
		}
	}
	system("pause");
	while (true)
	{
		system("cls");
		cout << endl;
		cout << "  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|" << endl;
		cout << "  |      高校人员信息管理系统    |" << endl;
		cout << "  |   1.教师管理                 |" << endl;
		cout << "  |   2.实验员管理               |" << endl;
		cout << "  |   3.行政人员管理             |" << endl;
		cout << "  |   4.教师兼行政人员管理管理   |" << endl;
		cout << "  |   0.退出                     |" << endl;
		cout << "  |______________________________|" << endl << endl;
		cout << "请选择" << endl;
		cin >> c;
		switch (c)
		{
		case 1:
			Tea_menu(mt);
			break;
		case 2:
			Exper_menu(me);
			break;
		case 3:
			P_menu(mp);
			break;
		case 4:
			TeaPo_menu(mtp);
			break;
		case 0:break;
		default:
			cout << "输入错误请重新输入" << endl;
			system("pause");
			break;
		}
		if (c == 0)
			break;
	}

	return 0;
}

测试数据

基本功能均已实现,东西挺多的就不附测试结果了。因为编写数据也挺麻烦的,仓库中每类人员各编写了五个,直接把txt中的数据粘贴到运行窗口

问题总结

上面代码放的是正确的,在此之前有另外一个版本,在每次读取完文件退出主程序时,跳转xutility发生读写权限冲突,因为string对象维护的是一段内存,而读入二进制文件保存的是内存地址,在下一次读取时这段内存地址发生变化,所以出现错误。解决办法,将四个人员类中的变量定义为char类型的数组。仓库也保存了一份string编写的源码,想看错误可以直接下上跑一下

参考:C++类对象进行文件读取后出现的xutility错误

C++课设19

解决string类型读写问题后,代码没有报错但是一旦运行检索类的功能,出现变量堆栈损坏,首先考虑的是数组中输入的字符超过了定义的长度,所以各个char类型长度要合理定义,查了一下果然是这个问题

参考:有关Run-Time Check Failure #2 - Stack around the variable ‘XXX’ was corrupted.错误的解决方法

C++课设20

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:37:15  更:2022-07-04 22:38:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/11 18:40:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码