⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smy.cpp

📁 人员管理系统原代码很不错的哦
💻 CPP
字号:
//smy.cpp	管理系统类层次函数实现部分
//————————————————————————————————
#include<iostream.h>
#include<iomanip.h>
#include<fstream.h>
#include<string.h>
#include<process.h>
#include "smy.h"
char *workerduty[]={"教师","实验员","行政人员","教师兼职实验员","行政人员兼职教师"};


//——————————函数实现

//共同基类构造函数
 baseworker:: baseworker()
{
}
void baseworker::buildsystem(int idduty)
{
	ifstream maxread("data/max.mp3",ios::binary|ios::nocreate);

	if(maxread)
		{
			maxread.read((char *)&maxnum,sizeof maxnum);
		}
	else
	{
		maxnum=100;//职工编号基数初始化
	}
	maxread.close();
	ofstream maxdelete("data/max.mp3",ios::binary|ios::in|ios::trunc);
	maxdelete.close();
	ofstream maxwrite("data/max.mp3",ios::binary|ios::in);
	char namestr[40];
	char *makesex[2]={"男","女"};
	cout<<endl<<"请输入职员姓名:";
	cin>>namestr;//输入职员姓名
	strcpy(person.name,namestr);
	person.id=maxnum++;
	cout<<endl<<"性别:";
	cin>>person.sex;//输入职员性别
	while(strcmp(person.sex,makesex[1]) && strcmp(person.sex,makesex[0]))
		{
			cout<<endl<<setw(45)<<"你输入的性别不合法,请重新输入!";
			cout<<endl<<"性别:";
			cin>>person.sex;
		}	
	cout<<endl<<"年龄:";
	cin>>person.age;//输入职员年龄
	if(!cin.good())
	{
		cout<<"非法操作!请退出!"<<endl;
		exit(2);
	}
	while(person.age<=0 || person.age>100)
		{
			cout<<endl<<"你输入的年龄不合法,请重新输入!"<<endl;
			cout<<"年龄:";
			cin>>person.age;
		}
	person.duty=idduty;
	person.totalsalary=0.0;//职员总工资初始化
	person.payedsalary=0.0;//已付职员总工资初始化
	person.surplussalary=0.0;//拖欠职员工资数初始化
	maxwrite.write((char *)&maxnum,sizeof maxnum);
	maxwrite.close();
	write();
}
void baseworker::write()
{
	ofstream we("data/info.dat",ios::binary|ios::ate|ios::in);
	we.write((char *)&person,sizeof person);
	we.close();
}
void baseworker::read(int idnum)
{
	ifstream rd("data/info.dat",ios::binary|ios::nocreate);
	if(rd)
	{
		rd.read((char*)&person,sizeof person);
		while(!rd.eof())
		{
			if(idnum==person.id)
				break;
			rd.read((char*)&person,sizeof person);
		}
		if(idnum!=person.id)
			cout<<"对不起!不能找到你要找的记录!"<<endl;
		else
			{
			cout<<setw(6)<<"ID"<<setw(8)<<"名字"<<setw(8)<<"性别"<<setw(8)<<"年龄"<<setw(8)<<"职务"<<setw(15)<<"本月总工资"<<setw(11)<<"已发工资"<<setw(11)<<"拖欠工资"<<endl;
			displayinfo();
			}
	}
	else 
		cout<<"对不起!与数据库连接失败!请与管理员联系!"<<endl;
	rd.close();
}
void baseworker::read()
{
	ifstream rdw("data/info.dat",ios::binary|ios::nocreate);
	if(rdw)
	{
		cout<<setw(6)<<"ID"<<setw(8)<<"名字"<<setw(8)<<"性别"<<setw(8)<<"年龄"<<setw(8)<<"职务"<<setw(15)<<"本月总工资"<<setw(11)<<"已发工资"<<setw(11)<<"拖欠工资"<<endl;
		rdw.read((char*)&person,sizeof person);
		while(!rdw.eof())
			{
				displayinfo();
				rdw.read((char*)&person,sizeof person);
			}
	}
	else 
		cout<<"对不起!与数据库连接失败!请与管理员联系!"<<endl;
	rdw.close();
}
void baseworker::readinfo(int idnumin)
{
	ifstream rdin("data/info.dat",ios::binary|ios::nocreate);
	rdin.read((char*)&person,sizeof person);
	while(!rdin.eof())
		{
			if(idnumin==person.id)
				break;
			rdin.read((char*)&person,sizeof person);
		}
	rdin.close();
}
void baseworker::deleteinfo(int delnum)
{
	ifstream old("data/info.dat",ios::binary|ios::nocreate);
	ofstream file("data/info.rm",ios::binary|ios::ate|ios::trunc|ios::in);
	if(old)
		{
		old.read((char*)&person,sizeof person);
		while(!old.eof())
			{
			if(delnum==person.id)
				;
			else
				file.write((char *)&person,sizeof person);
				old.read((char*)&person,sizeof person);
			}				
		}
	else 
		{
			cout<<"对不起!与数据库连接失败!请与管理员联系!"<<endl;
			exit(2);
		}
		file.close();
		old.close();
	ofstream delold("data/info.dat",ios::binary|ios::ate|ios::trunc|ios::in);
	delold.close();
	ifstream refile("data/info.rm",ios::binary|ios::nocreate);
	refile.read((char*)&person,sizeof person);
	while(!refile.eof())
	{	
		write();
		refile.read((char*)&person,sizeof person);
	}
	refile.close();
	ofstream delrm("data/info.rm",ios::binary|ios::ate|ios::trunc|ios::in);
	delrm.close();
}
int baseworker::retuidnum(int reidnum)
{
	ifstream ru("data/info.dat",ios::binary|ios::nocreate);
	if(ru)
	{
		ru.read((char*)&person,sizeof person);
		while(!ru.eof())
		{
			if(reidnum==person.id)
				break;
			ru.read((char*)&person,sizeof person);
		}
		if(reidnum!=person.id)
			{
			cout<<endl<<"对不起!你输入的职员不存在,可能还没注册!"<<endl;
			return 100;
			}
		else
			{
				return person.duty;
			}
	}
	else 
		{
		cout<<endl<<"对不起!与数据库连接失败!请与管理员联系!"<<endl;
		return 100;
		}
	ru.close();	
}
void baseworker::modify(int paysa)
{
	ifstream myold("data/info.dat",ios::binary);
	ofstream mynew("data/info.rm",ios::binary|ios::ate|ios::trunc|ios::in);
	myold.read((char *)&persons,sizeof persons);
	while(!myold.eof())
		{
		if(persons.id==paysa)
				mynew.write((char *)&person,sizeof person);
		else mynew.write((char *)&persons,sizeof persons);
		myold.read((char *)&persons,sizeof persons);
		}
	myold.close();
	mynew.close();
	ofstream deldat("data/info.dat",ios::binary|ios::ate|ios::trunc|ios::in);
	deldat.close();
	ifstream refile("data/info.rm",ios::binary|ios::nocreate);
	refile.read((char*)&person,sizeof person);
	while(!refile.eof())
	{	
		write();
		refile.read((char*)&person,sizeof person);
	}
	refile.close();
	ofstream delrm("data/info.rm",ios::binary|ios::ate|ios::trunc|ios::in);
	delrm.close();
}
void baseworker::modifyworker(int idmdy,int idduty)
{
	char namestr[40];
	cout<<endl<<"姓名:";
	cin>>namestr;//输入职员姓名
	strcpy(person.name,namestr);
	person.id=idmdy;
	cout<<endl<<"性别:";
	cin>>person.sex;//输入职员性别
	cout<<endl<<"年龄:";
	cin>>person.age;//输入职员年龄
	if(!cin.good())
	{
		cout<<"非法操作!请退出!"<<endl;
		exit(2);
	}
	while(person.age<=0 || person.age>100)
		{
			cout<<endl<<"你输入的年龄不合法,请重新输入!"<<endl;
			cout<<"年龄:";
			cin>>person.age;
		}
	person.duty=idduty;
	person.totalsalary=0.0;//职员总工资初始化
	person.payedsalary=0.0;//已付职员总工资初始化
	person.surplussalary=0.0;//拖欠职员工资数初始化
	cout<<endl<<setw(45)<<"修改后职员信息"<<endl;
	cout<<setw(6)<<"ID"<<setw(8)<<"名字"<<setw(8)<<"性别"<<setw(8)<<"年龄"<<setw(8)<<"职务"<<setw(15)<<"本月总工资"<<setw(11)<<"已发工资"<<setw(11)<<"拖欠工资"<<endl<<endl;
	displayinfo();
	modifyinfo(idmdy);	
}
void baseworker::modifyinfo(int idmdy)
{
	ifstream mdyold("data/info.dat",ios::binary);
	ofstream mdynew("data/info.rm",ios::binary|ios::ate|ios::trunc|ios::in);
	mdyold.read((char *)&persons,sizeof persons);
	while(!mdyold.eof())
		{
		if(persons.id==idmdy)
				mdynew.write((char *)&person,sizeof person);
		else mdynew.write((char *)&persons,sizeof persons);
		mdyold.read((char *)&persons,sizeof persons);
		}
	mdyold.close();
	mdynew.close();
	ofstream mdeldat("data/info.dat",ios::binary|ios::ate|ios::trunc|ios::in);
	mdeldat.close();
	ifstream mdfile("data/info.rm",ios::binary|ios::nocreate);
	mdfile.read((char*)&person,sizeof person);
	while(!mdfile.eof())
	{	
		write();
		mdfile.read((char*)&person,sizeof person);
	}
	mdfile.close();
	ofstream mdelrm("data/info.rm",ios::binary|ios::ate|ios::trunc|ios::in);
	mdelrm.close();
}
void baseworker::displayinfo()
{
cout<<setw(6)<<person.id<<setw(9)<<person.name<<setw(6)<<person.sex<<setw(8)<<person.age<<setw(10)<<workerduty[person.duty]<<setw(10)<<person.totalsalary<<setw(12)<<person.payedsalary<<setw(13)<<person.surplussalary<<endl;
}
//共同基类析构函数实现
baseworker::~baseworker()
{
}


//——————————教师类函数实现
jiaoshi::jiaoshi()
{
	basesalary1=800.0;//每月基本工资初始化
         basehour=0;//基本工作量
	 lasthour=120;//上学期工作量
}
void jiaoshi::pay(int paysa)
{
	//在此添加从文件中取得的职员信息
	readinfo(paysa);
	countsalary();//计算工资函数
	cout<<"职员"<<person.name<<"职务"<<workerduty[person.duty]<<"编号:"<<person.id<<"本月工资"<<person.totalsalary<<"本次发放工资数"<<person.payedsalary<<endl;
	displayinfo();
	modify(paysa);
}
void jiaoshi::countsalary()
{
	person.totalsalary=basesalary1+(lasthour-basehour)*20;//计算本月总工资数
	cout<<endl<<setw(20)<<person.name<<"本月总工资为:"<<person.totalsalary;
	cout<<endl<<"请输入本次发放工资数:";
	cin>>person.payedsalary;//输入本次发放的工资数	
	person.surplussalary=person.totalsalary-person.payedsalary;//计算剩余工资数
	//在此添加修改职员工资发放信息	
}


//——————————实验员类函数实现
shiyianyuan::shiyianyuan()
{
	basesalary2=650.0;//每月基本工资初始化
    monthlypay=150.0;//实验室补助初始化
}
void shiyianyuan::pay(int paysa)
{
	//在此添加从文件中取得的职员信息
	readinfo(paysa);
	countsalary();//计算工资函数
	cout<<"职员"<<person.name<<"职务"<<workerduty[person.duty]<<"编号:"<<person.id<<"本月工资"<<person.totalsalary<<"本次发放工资数"<<person.payedsalary<<endl;
	displayinfo();
	modify(paysa);
}
void shiyianyuan::countsalary()
{
	person.totalsalary=basesalary2+monthlypay;//计算本月总工资数
	cout<<endl<<setw(20)<<person.name<<"本月总工资为:"<<person.totalsalary;
	cout<<endl<<"请输入本次发放工资数:";
	cin>>person.payedsalary;//输入本次发放的工资数	
	person.surplussalary=person.totalsalary-person.payedsalary;//计算剩余工资数
	//在此添加修改职员工资发放信息	
}


//——————————行政人员类函数实现
xinzhengyuan::xinzhengyuan()
{
	basesalary=750.0;//每月基本工资初始化
        monthlypay=250.0;//行政补贴初始化
}
void xinzhengyuan::pay(int paysa)
{
	//在此添加从文件中取得的职员信息
	readinfo(paysa);
	countsalary();//计算工资函数
	cout<<"职员"<<person.name<<"职务"<<workerduty[person.duty]<<"编号:"<<person.id<<"本月工资"<<person.totalsalary<<"本次发放工资数"<<person.payedsalary<<endl;
	displayinfo();
	modify(paysa);
}
void xinzhengyuan::countsalary()
{
	person.totalsalary=basesalary+monthlypay;//计算本月总工资数
	cout<<endl<<setw(20)<<person.name<<"本月总工资为:"<<person.totalsalary;
	cout<<endl<<"请输入本次发放工资数:";
	cin>>person.payedsalary;//输入本次发放的工资数	
	person.surplussalary=person.totalsalary-person.payedsalary;//计算剩余工资数
	//在此添加修改职员工资发放信息	
}


//——————————教师兼职实验员类函数实现
shiyianjiao::shiyianjiao()
{
	basesalary1=800.0;//每月基本工资初始化

 //       monthlypay=150.0;//实验室补助初始化
}
void shiyianjiao::pay(int paysa)
{
	//在此添加从文件中取得的职员信息
	readinfo(paysa);
	countsalary();//计算工资函数
	cout<<"职员"<<person.name<<"职务"<<workerduty[person.duty]<<"编号:"<<person.id<<"本月工资"<<person.totalsalary<<"本次发放工资数"<<person.payedsalary<<endl;
	displayinfo();
	modify(paysa);
}
void shiyianjiao::countsalary()
{
	person.totalsalary=basesalary1+(lasthour-basehour)*20+monthlypay;//计算本月总工资数
	cout<<endl<<setw(20)<<person.name<<"本月总工资为:"<<person.totalsalary;
	cout<<endl<<"请输入本次发放工资数:";
	cin>>person.payedsalary;//输入本次发放的工资数	
	person.surplussalary=person.totalsalary-person.payedsalary;//计算剩余工资数
	//在此添加修改职员工资发放信息	
}


//——————————行政人员兼职教师类函数实现
xinzhengjiao::xinzhengjiao()
{
	basesalary=750.0;//每月基本工资初始化
    monthlypay=250.0;//行政补贴初始化
}
void xinzhengjiao::pay(int paysa)
{
	//在此添加从文件中取得的职员信息
	readinfo(paysa);
	countsalary();//计算工资函数
	cout<<"职员"<<person.name<<"职务"<<workerduty[person.duty]<<"编号:"<<person.id<<"本月工资"<<person.totalsalary<<"本次发放工资数"<<person.payedsalary<<endl;
	displayinfo();
	modify(paysa);
}
void xinzhengjiao::countsalary()
{
	person.totalsalary=basesalary+(lasthour-basehour)*20+monthlypay;//计算本月总工资数
	cout<<endl<<setw(20)<<person.name<<"本月总工资为:"<<person.totalsalary;
	cout<<endl<<"请输入本次发放工资数:";
	cin>>person.payedsalary;//输入本次发放的工资数	
	person.surplussalary=person.totalsalary-person.payedsalary;//计算剩余工资数
	//在此添加修改职员工资发放信息	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -