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

📄 main.cpp

📁 C++课程设计
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////
////////////main.cpp////////////////
#include<cstdlib>///////////////清屏函数
#include<iostream>
#include<string.h>
#include<ctype.h>
#include<vector>
#include<iomanip>
#include<fstream>
#define DELETE 0
#define NOTDELETE 1
#include"employee.h"
using namespace std;
int input(void);//输入员工信息
int index(void);//信息查询
void reset(void);//信息修改
void displayall();
int main()
{
	/////////////////////////设置密码保护
	/*char name[20];
	int code;
	cout<<"//////////////////////////////////////////////////"
	<<endl<<"请输入人员信息管理系统帐号:";
	cin>>name;
	cout<<endl<<"输入密码:";
	cin>>code;
	cout<<endl;
	while(strcmp(name,"zhanglin") || (code!=20054994))
	{
		cout<<"密码或者帐号错误!";
	cout<<"//////////////////////////////////////////////////"
		<<endl<<"请输入人员信息管理系统帐号:";
	cin>>name;
	cout<<endl<<"输入密码:";
	cin>>code;
	cout<<endl;
	}////////////////////////////////////////////////////////////*/
	cout<<"///////////////////欢迎来到人员信息管理系统!/////////////////////"<<endl;
	char mission;
	/////////////////////////////////////////////////////////////选择任务
	while(1)
	{
		cout<<resetiosflags(ios_base::left)<<setw(38)<<"请选择操作类型"<<endl<<setw(34)
			<<	"1.输入信息"<<endl<<setw(35)<<"2.信息查询 "<<endl
			<<setw(36)<<"3、修改信息 "<<endl
			<<setw(39)<<"4、显示全部信息"<<endl
			<<setw(42)<<"0.退出信息管理系统"<<endl
			<<"///////////////////////////////////////////////////////////////////"<<endl;
		cin>>mission;
		if(!isdigit(mission))
		{
			cout<<"输入错误!请从新输入!"<<endl;continue;
		}
		switch(mission-'0')
		{
		case 1:input();break;
		case 2:index();break;
		case 3:reset();break;
		case 4:displayall();break;
		case 0:	system("cls");
			cout<<endl
				<<"--------------------------------谢谢使用!-----------------------------------"
				<<endl
				<<"--------------------------------退出系统!-----------------------------------"
				<<endl<<endl;exit(0);
		default:
			cout<<"输入错误!请从新输入!"<<endl;break;
		}
	}
	//////////////////////////////////////////////////////////////////
	return 0;
}
/////////////////////////////////信息修改及删除
void reset(void)
{
	void resetbyname();//按姓名查找
	void resetbyno();//按编号查找
	char resettype;
	cout<<"请输入修改记录"<<endl<<"1、按姓名"<<endl<<"2、按编号"<<endl<<"0、退出"<<endl;
	cin>>resettype;
	while(!isdigit(resettype))
	{
		cout<<"输入错误!请从新输入!"<<endl;
	}
	switch(resettype-'0')
	{
	case 1:	resetbyname();
			break;
	case 2:resetbyno();
		break;
	case 0:return ;
	default:cout<<"输入错误请从新输入!";break;
	}
}
////////////////////////////////////////////////输入信息
int input(void)
{
	vector<empstu*>vchar;
	char name[20];
	technician t1;
	manager m1;
	salesmanager sm1;
	salesman s1;
	employee *emp;
	empstu employee1[100];
	int i=0;

	char employeetype;
	ofstream ofile("employee.txt",ios_base::app);
	while(1)
	{
		cout<<setiosflags(ios_base::left)<<setw(38)<<"请输入员工职称:"<<endl<<setw(34)
			<<	"1、销售人员 "<<endl<<setw(35)<<"2、技术工人 "<<endl
			<<setw(36)<<"3、销售经理 "<<endl<<setw(42)<<"4、经理"<<endl<<
			setw(40)<<"0、退出输入信息"<<endl
			<<"///////////////////////////////"<<endl;
	cin>>employeetype;
		if(!isdigit(employeetype))
		{
			cout<<"输入错误!请从新输入!"<<endl;continue;
		}
			bool rightinput=true;//////判断是否正确输入
	switch(employeetype-'0')
	{
	case 1:emp=&s1;
		cout<<"请依次输入销售人员的:名字、销售额、编号"<<endl;///////////销售人员资料输入
		float sale;//销售金额
		cin>>name>>sale;s1.Setsales(sale);s1.promote(0);
		break;	
	case 2:		
		emp=&t1;
		cout<<"请依次输入技术工人的:名字、工作时数、编号:"<<endl;////////技术工人资料输入
		int ww;
		cin>>name>>ww;t1.SetworkHours(ww);t1.promote(0);
		break;
	case 4:	emp=&m1;
		cout<<"请输入经理的:  名字"<<endl;
		cin>>name;m1.promote(0);
		break;
	case 3:	emp=&sm1;
		cout<<"请输入销售经理的:名字、管辖部门的销售总额"<<endl;
		float sl;
		cin>>name>>sl;sm1.Setsales(sl);sm1.promote(0);
		break;
	case 0:
		while(!vchar.empty())
		{
			ofile.write((char*)vchar.back(),sizeof(empstu));
			vchar.pop_back();
		}
		ofile.close();return 0;
	default:	bool rightinput=false;cout<<"输入错误,请从新输入员工职称!"<<endl;break;
	}
	if(rightinput)
	{
		employee1[i].individualno=emp->GetindividualEmpNo();
		employee1[i].state=NOTDELETE;
		emp->SetName(name);emp->pay();
		strcpy(employee1[i].name,emp->GetName());
		employee1[i].grade=emp->Getgrade();
		employee1[i].salary=emp->GetaccumPay();
		vchar.push_back(&employee1[i++]);
		//ofile.write((char*)&employee1,sizeof(empstu));
	}
	}
}
/////////////////////////////////////////////
/////////////查找信息///////////////////////////
int index()
{
	char indextype;
	int num;
	bool found;
	char name[20];
	struct empstu employee1;
	while(1)
	{
		ifstream ifile("employee.txt",ios_base::binary);
		ifile.seekg(ios::beg);
		found=false;
		cout<<"1、按名字查找"<<endl<<"2、按编号查找"<<endl<<"0、退出"<<endl;
		cin>>indextype;
		if(!isdigit(indextype))
		{
			cout<<"输入错误,请从新输入!";
			continue;
		}
		else////////////////////////////容错处理
		switch(indextype-'0')
		{
		case 1:
			cout<<"请输入查找人的名字:"<<endl;
			cin>>name;
			ifile.read((char*)&employee1,sizeof(empstu));
			while(!ifile.eof())//从头开始查找直到文件结束
			{	if(employee1.state==NOTDELETE)
				if(!strcmp(employee1.name,name))//找到信息并输出
				{
					cout<<name<<endl<<"编号为:"<<employee1.individualno<<endl
					<<"级别为"<<employee1.grade<<"级"<<endl
					<<"工资为"<<employee1.salary<<endl
					<<"///////////////////////////////"<<endl;
					found=true;
				//	break;
				}
				ifile.read((char*)&employee1,sizeof(empstu));
			}//while
				break;
		case 2:cout<<"请输入查找人的编号:"<<endl;
			cin>>num;
			ifile.read((char*)&employee1,sizeof(empstu));
			while(!ifile.eof())//从头开始查找直到文件结束
			{
				if(employee1.state==NOTDELETE)
				if(employee1.individualno==num)//找到信息并输出
				{
					cout<<employee1.name<<endl<<"编号为:"<<employee1.individualno<<endl
					<<"级别为"<<employee1.grade<<"级"<<endl
					<<"工资为"<<employee1.salary<<endl
					<<"///////////////////////////////"<<endl;
					found=true;
				}
				ifile.read((char*)&employee1,sizeof(empstu));
			}//while
		case 0:ifile.close();
			return 0;
		}//switch
		if(!found)
			cout<<"没有这个记录!"<<endl;
		ifile.close();
	}//while
}
void displayall()
{
	empstu employee1;
	ifstream ifile("employee.txt",ios_base::in);
	if(ifile.fail())
	{
		cout<<"没有记录!"<<endl;
		return;
	}
	ifile.read((char*)&employee1,sizeof(empstu));
	while(!ifile.eof())//从头开始查找直到文件结束
	{
		if(employee1.state==NOTDELETE)
		{
			cout<<employee1.name<<endl<<"编号为:"<<employee1.individualno<<endl
			<<"级别为"<<employee1.grade<<"级"<<endl
			<<"工资为"<<employee1.salary<<endl
			<<"///////////////////////////////"<<endl;
		}
		ifile.read((char*)&employee1,sizeof(empstu));
	}//while
	ifile.close();
}
void resetbyname()
{
	char name[20];
	empstu employee1;
	int reoromit;
	bool found=false;
	fstream file("employee.txt",ios::out|ios::in);
	file.seekg(ios::beg);
	cout<<"请选择1:修改2:删除"<<endl;
	cin>>reoromit;
	cout<<"请输入修改人的名字:"<<endl;
	cin>>name;
	file.read((char*)&employee1,sizeof(empstu));
	while(!file.eof())//从头开始查找直到文件结束
	{
		
			if(!strcmp(employee1.name,name))//找到信息并输出
			{
				found=true;
				if(reoromit==1)
				{
				cout<<"请从新输入员工信息(姓名、编号、级别、月薪)"<<endl;
				cin>>employee1.name>>employee1.individualno>>employee1.grade
				>>employee1.salary;	
				file.seekg(-sizeof(empstu),ios::cur);
				file.write((char*)&employee1,sizeof(employee1));
				cout<<"修改成功!"<<endl;
				return;
				}
				else if(reoromit==2)
				{
					cout<<"删除成功!"<<endl;
					employee1.state=DELETE;
					file.seekg(-sizeof(empstu),ios::cur);
					file.write((char*)&employee1,sizeof(empstu));
					return;
				}
			}
			file.read((char*)&employee1,sizeof(empstu));
	}
	file.close();
}
void resetbyno()
{
	///////////////////////////////////////
//char name[20];
//	manager m1;
//	technician t1;
//	salesmanager sm1;
//	salesman s1;
//	employee *emp;
	empstu employee1;
	//////////////////////////////////////////
	int reoromit;
	int individualno;
	bool found=false;
	fstream file("employee.txt",ios::out|ios::in);
	file.seekg(ios::beg);
	cout<<"请选择1:修改"<<endl<<setw(13)<<"2:删除"<<endl;
	cin>>reoromit;
	cout<<"请输入修改人的编号:"<<endl;
	cin>>individualno;
	file.read((char*)&employee1,sizeof(empstu));
	while(!file.eof())//从头开始查找直到文件结束
	{
		if(employee1.state==NOTDELETE)
		{
			if(individualno==employee1.individualno)//找到信息并输出
			{
				found=true;
				if(reoromit==1)
				{
			/*	switch(employee1.grade)
				{
					case 1:emp=&s1;
						cout<<"请依次输入销售人员的:名字、销售额"<<endl;///////////销售人员资料输入
						float sale;//销售金额
						cin>>name>>sale;s1.Setsales(sale);s1.promote(0);
						break;	
					case 2:emp=&t1;
						cout<<"请依次输入技术工人的:名字、工作时数:"<<endl;////////技术工人资料输入
						int ww;
						cin>>name>>ww;t1.SetworkHours(ww);t1.promote(0);
						break;
					case 4:emp=&m1;
						cout<<"请输入经理的:  名字"<<endl;
						cin>>name;m1.promote(0);
						break;
					case 3:emp=&sm1;
						cout<<"请输入销售经理的:名字、管辖部门的销售总额"<<endl;
						float sl;
						cin>>name>>sl;sm1.Setsales(sl);sm1.promote(0);
						break;
				}//switch
				employee1.state=NOTDELETE;
				emp->SetName(name);emp->pay();
				strcpy(employee1.name,emp->GetName());
				employee1.grade=emp->Getgrade();
				employee1.salary=emp->GetaccumPay();
				file.seekg(-sizeof(empstu),ios::cur);
				file.write((char*)&employee1,sizeof(employee1));
				break;*/
		cout<<"请从新输入员工信息(姓名、编号、级别、月薪)"<<endl;
				cin>>employee1.name>>employee1.individualno>>employee1.grade
				>>employee1.salary;	
				file.seekg(-sizeof(empstu),ios::cur);
				file.write((char*)&employee1,sizeof(employee1));
				break;
				}//if
				else if(reoromit==2)
				{
					employee1.state=DELETE;
					cout<<"删除成功!"<<endl;
					file.seekg(-sizeof(empstu),ios::cur);
					file.write((char*)&employee1,sizeof(empstu));
					break;
				}
			}
		}
			file.read((char*)&employee1,sizeof(empstu));
	}
	if(!found)
		cout<<"没有该员工!"<<endl;
	file.close();
}

⌨️ 快捷键说明

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