草庐IT

职工工资管理系统程序中新增临时员工的功能

Havery-bobo 2023-03-28 原文

职工工资管理系统程序中新增临时员工的功能

这个职工工资管理系统基本功能都十分完善,代码也都比较简洁,运行效率也很高,没有什么直接能改的功能,所以我基于现在许多大学生找兼职、临时工的现象,增添了临时员工的工资系统,可以方便公司、企业等更加完善公司的财务系统。也方便公司为临时员工发放工资。

代码段一是原来的工资程序系统

代码段二是增添临时员工后的工资系统

代码一、
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;

class Staff {
	protected:
		string number;
		string name;
		string sex;
		string address;
		int salary;
		static int sum_salary; //总工资
		static int sum_member; //总员工人数
	public:
		Staff();
		Staff(string number,string name,string sex,string address,int salary);

		void print() {};
		void setnumber(string num) {
			number=num;
		}
		void setname(string na) {
			name=na;
		}
		void setsex(string se) {
			sex=se;
		}
		void setaddress(string add) {
			address=add;
		}
		void setsalary(int sa) {
			salary=sa;
		}

		int getsalary();
		string getname() {
			return name;
		}
		string getnumber() {
			return number;
		}
		string getsex() {
			return sex;
		}
		string getaddress() {
			return address;
		}
};

Staff::Staff() {
	number="";
	name="";
	sex="";
	address="";
	salary=0;
}


Staff::Staff(string number,string name,string sex,string address,int salary) {
	this->number = number;
	this->name = name;
	this->sex = sex;
	this->address = address;
	this->salary = salary;
}
int Staff::getsalary() {
	return salary;
}




class Regular_staff:public Staff {
	protected:
		int allowance; //岗位津贴
		int old_age_pension; //养老金
		int Housing_Fund; //住房公积金
		int medical_insurance; //医疗保险
		int tax;
		int r_salary; //实际工资
	public:
		Regular_staff();
		Regular_staff(string num,string na,string sex,string add,int salary,int all ,int oap, int Hou, int med);
		void getr_salary();										//计算实发工资
		void gettax();
		int getreal() {
			return r_salary;
		}
		void setallowance(int all) {
			allowance=all;
		}
		void setold_age_pension(int oap) {
			old_age_pension=oap;
		}
		void setHousing_Fund(int Hou) {
			Housing_Fund=Hou;
		}
		void setmedical_insurance(int med) {
			medical_insurance=med;
		}
		void display() {
			cout<<"员工编号:"<<number<<"\t"<<"姓名:"<<name<<"\t"<<"性别:"<<sex<<endl;
			cout<<"地址:"<<address<<endl;
			cout<<"岗位津贴:"<<allowance<<"\t"<<"养老金:"<<old_age_pension<<endl;
			cout<<"住房公积金:"<<Housing_Fund<<"\t"<<"医疗保险:"<<medical_insurance<<endl;
			cout<<"本月税后实际工资:"<<r_salary<<endl;
		}

		int getallowance() {
			return allowance;
		}
		int getold_age_pension() {
			return old_age_pension;
		}
		int getHousing_Fund() {
			return Housing_Fund;
		}
		int getmedical_insurance() {
			return medical_insurance;
		}


} rs[10000];


Regular_staff::Regular_staff() {
	number="";
	name="";
	sex="";
	address="";
	salary=0;
	allowance=0;
	old_age_pension=0;
	Housing_Fund=0;
	medical_insurance=0;
}

void Regular_staff::gettax() {

	this->salary = getsalary();
	if (salary<5000) {
		tax=0;
	}
	if (salary>5000&&r_salary<41000) {
		tax=(salary-5000)*0.03;
	}
	if (salary>41000&&r_salary<149000) {
		tax=(salary-41000)*0.1+2520;
	}
	if (salary>149000&&r_salary<305000) {
		tax=(salary-149000)*0.2+16920;
	}
	if (salary>305000&&r_salary<425000) {
		tax=(salary-305000)*0.25+31920;
	}
	if (salary>425000&&r_salary<665000) {
		tax=(salary-425000)*0.3+52920;
	}
	if (salary>665000&&r_salary<965000) {
		tax=(salary-665000)*0.35+85920;
	}
	if (salary>965000) {
		tax=(salary-965000)*0.45+181920;
	}
}

Regular_staff::Regular_staff(string num,string na,string sex,string add,int salary,int all ,int oap, int Hou, int med) : Staff(num,na ,sex, add ,salary) {
	this->allowance = all;
	this->old_age_pension = oap;
	this->Housing_Fund = Hou;
	this->medical_insurance = med;
	gettax();
	r_salary = getsalary()+allowance-old_age_pension-Housing_Fund-medical_insurance-tax;

}
void Regular_staff::getr_salary() {
	r_salary = getsalary()+allowance-old_age_pension-Housing_Fund-medical_insurance-tax;
}





class Temporary_staff:public Staff {
	protected:
		int bonus; //奖金
		int tax;
		int r_salary; //实际工资
	public:
		Temporary_staff();
		Temporary_staff(string num,string na,string sex,string add,int salary,int bo );
		void gettax();
		int getr_salary();
		int getreal() {
			return r_salary;
		}
		void setbonus(int bo) {
			bonus=bo;
		}
		void display() {
			cout<<"员工编号:"<<number<<"\t"<<"姓名:"<<name<<"\t"<<"性别:"<<sex<<endl;
			cout<<"地址:"<<address<<endl;
			cout<<"奖金:"<<bonus<<endl;
			cout<<"本月税后实际工资:"<<r_salary<<endl;
		}

		int getbonus() {
			return bonus;
		}


} ts[10000];

Temporary_staff::Temporary_staff() {
	number="";
	name="";
	sex="";
	address="";
	salary=0;
	bonus=0;
}

void Temporary_staff::gettax() {

	if (salary<5000) {
		tax=0;
	}
	if (salary>5000&&salary<41000) {
		tax=(salary-5000)*0.03;
	}
	if (salary>41000&&salary<149000) {
		tax=(salary-41000)*0.1+2520;
	}
	if (salary>149000&&salary<305000) {
		tax=(salary-149000)*0.2+16920;
	}
	if (salary>305000&&salary<425000) {
		tax=(salary-305000)*0.25+31920;
	}
	if (salary>425000&&salary<665000) {
		tax=(salary-425000)*0.3+52920;
	}
	if (salary>665000&&salary<965000) {
		tax=(salary-665000)*0.35+85920;
	}
	if (salary>965000) {
		tax=(salary-965000)*0.45+181920;
	}
}
Temporary_staff::Temporary_staff(string num,string na,string sex,string add,int salary,int bo ) : Staff(num ,na ,sex, add ,salary) {
	this->bonus = bo;
	gettax();
	r_salary =salary + bonus - tax;				//计算最终工资

}




void print_Begin() {
	printf("\n\t\t 职工工资管理系统\n\n");
	printf("**************************************************\n\n");
	printf("1 查找员工信息\n\n2 更新员工数据\n\n3 输出员工信息\n\n4 关闭程序\n\n");
	printf("**************************************************\n\n");
	printf("请选择:");
}

void loading() {
	printf("\n\n\t\tLoading......\n\n\n");
	printf(" ");
	for (int i = 1; i <= 40; ++i) {
		printf(".");
		Sleep(50); //延迟输出
	}
	printf(" ");
}

void cls() { //清屏加修改颜色
	system("cls");
	system("color 0B");
}

void refresh() {
	cls();
	print_Begin();
}

int x=0;


void get_rstxt() {										//读取员工的数据
	fstream f;
	f.open("Regular_staff.txt",ios::in);
	string num;
	string na;
	string sex;
	string add;
	int salary;
	int all ;
	int oap;
	int Hou;
	int med;
	int i;
	for(i=0; !f.eof(); i++) {
		f>>num>>na>>sex>>add>>salary>>all>>oap>>Hou>>med;
		rs[i].setnumber(num);
		rs[i].setname(na);
		rs[i].setsex(sex);
		rs[i].setaddress(add);
		rs[i].setsalary(salary);
		rs[i].setallowance(all);
		rs[i].setold_age_pension(oap);
		rs[i].setHousing_Fund(Hou);
		rs[i].setmedical_insurance(med);
		rs[i].gettax();
		rs[i].getr_salary();
	}
	x=i-1;
	f.close();
}

void find_name_r(string n) {							//通过员工姓名,查询正式员工的数据
	get_rstxt();
	for(int i=0; i<=x; i++) {
		if(rs[i].getname()==n) {
			rs[i].display();
			cout<<endl;
			break;
		}
		if(i==x) {
			cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
			break;
		}
	}

}


void find_number_r(string m) {							//通过编号查找员工
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getnumber()==m) {
			rs[i].display();
			cout<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
			break;
		}
	}
}


void find_salary_r(double a,double b) {					//工资范围 ,控制 a <= b  员工
	int num=0;
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getreal()>=a&&rs[i].getreal()<=b) {
			rs[i].display();
			cout<<endl;
			num++;
		}
		if(i==x-1&&num==0) {
			cout<<"抱歉,未查询到相应员工,请核实员工信息!"<<endl;
			break;
		}
	}
}


void modify_new_r() { 									//新增员工信息
	string num;
	string na;
	string sex;
	string add;
	int salary;
	int all ;
	int oap;
	int Hou;
	int med;
	cout<<"\n\n请输入新员工的编号、姓名、性别、家庭地址、基础工资、岗位津贴、养老金、住房公积金、医疗保险\n\n";
	cin>>num>>na>>sex>>add>>salary>>all>>oap>>Hou>>med;
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getnumber()==num) {
			cout<<"\n编号重复!请核实员工信息!";
			break;
		}
		if(i==x-1) {
			fstream f;
			f.open("Regular_staff.txt",ios::out|ios::app);
			f<<num<<" "<<na<<" "<<sex<<" "<<add<<" "<<salary<<" "<<all<<" "<<oap<<" "<<Hou<<" "<<med<<" ";
			f.close();
			cout<<"已将"<<na<<"加入系统名单!";
		}
	}

}


void modify_address_r(string num) { 					// 地址
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getnumber()==num) {
			cout<<"已找到该员工,请输入该员工新的家庭住址;"<<endl;
			string new_address;
			cin>>new_address;
			rs[i].setaddress(new_address);
			cout<<"修改成功!!"<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
			break;
		}
	}
	fstream  fc("Regular_staff.txt",ios::trunc);
	fc.close();
	fstream f;
	f.open("Regular_staff.txt",ios::out);
	for(int i=0; i<x; i++) {
		f<<rs[i].getnumber()<<" "<<rs[i].getname()<<" "<<rs[i].getsex()<<" "<<rs[i].getaddress()<<" "<<rs[i].getsalary()<<" "<<rs[i].getallowance()<<" "<<rs[i].getold_age_pension()<<" "<<rs[i].getHousing_Fund()<<" "<<rs[i].getmedical_insurance()<<" ";
	}
	f.close();
}


void modify_salary_r(string num) { 						//修改工资  清屏 重新输入  
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getnumber()==num) {
			cout<<"已找到该员工,请输入该员工新的基础工资;"<<endl;
			int new_salary;
			cin>>new_salary;
			rs[i].setsalary(new_salary);
			cout<<"修改成功!!"<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
			break;
		}
	}
	fstream  fc("Regular_staff.txt",ios::trunc);
	fc.close();
	fstream f;
	f.open("Regular_staff.txt",ios::out);
	for(int i=0; i<x; i++) {
		f<<rs[i].getnumber()<<" "<<rs[i].getname()<<" "<<rs[i].getsex()<<" "<<rs[i].getaddress()<<" "<<rs[i].getsalary()<<" "<<rs[i].getallowance()<<" "<<rs[i].getold_age_pension()<<" "<<rs[i].getHousing_Fund()<<" "<<rs[i].getmedical_insurance()<<" ";
	}
	f.close();
}

void print_num_r() {					//打印员工信息 
	get_rstxt();
	for(int i=0; i<x; i++) {
		cout<<endl<<"员工编号:"<<rs[i].getnumber()<<"  员工姓名:"<<rs[i].getname()<<endl<<endl;
		cout<<"员工地址:"<<rs[i].getaddress()<<endl<<endl;
		cout<<"员工性别:"<<rs[i].getsex()<<"  员工税后实际工资:"<<rs[i].getreal()<<endl<<endl;
		cout<<"--------------------------------------------------------------------"<<endl;
	}
}


void print_num(int type) {
	int i,j,o = type;
	get_rstxt();
	Regular_staff temp_r;
	Temporary_staff temp_t;
	cout<<"按编号由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
// 	cout<<"按编号顺序输出:1.员工 2."<<endl<<"请输入:"<<endl;
// 	cin>>o;
	switch(o) {
		case 1:

			for (j=0; j<x; j++) {
				for (i=0; i<x-j; i++) {
					if (rs[i].getnumber()>rs[i+1].getnumber()) {
						temp_r=rs[i];
						rs[i]=rs[i+1];
						rs[i+1]=temp_r;
					}
				}
			}
			print_num_r();
			break;
	}
}
void print_sequence(int type) {
	int i,j,o = type;
	get_rstxt();
	Regular_staff temp_r;
	Temporary_staff temp_t;
	cout<<"按工资由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
	switch(o) {
		case 1:

			for (j=0; j<x; j++) {
				for (i=0; i<x-j; i++) {
					if (rs[i].getreal()<rs[i+1].getreal()) {
						temp_r=rs[i];
						rs[i]=rs[i+1];
						rs[i+1]=temp_r;
					}
				}
			}
			print_num_r();
			break;
	}
}

void print_flashback(int type) {
	int i,j,o = type;
	get_rstxt();
	Regular_staff temp_r;
	Temporary_staff temp_t;
	cout<<"按工资由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
	switch(o) {
		case 1:

			for (j=0; j<x; j++) {
				for (i=0; i<x-j; i++) {
					if (rs[i].getreal()>rs[i+1].getreal()) {
						temp_r=rs[i];
						rs[i]=rs[i+1];
						rs[i+1]=temp_r;
					}
				}
			}
			print_num_r();
			break;
	}
}



int type=1;



void print_opt1() {
	printf("\n\t\t 1 查找员工信息\n\n");
	printf("**************************************************\n\n");
	printf("1 职工姓名\n\n2 职工编号\n\n3 工资介于a到b的职工\n\n");
	printf("**************************************************\n\n");
	printf("请选择:");
}

void opt1() {

	string num1;
	while(1) {
		cls();
		print_opt1();
        cin>>num1;
		if(num1 == "1") {
			
			cls();
			cout <<"请输入员工姓名:"<<endl;
			string n;
			cin >> n;
			cout<<endl;
			if(type == 1) {
				find_name_r(n);
			} 
			break;
		}
		if (num1 == "2") {
			
			cls();
			cout <<"请输入员工编号:"<<endl;
			string n;
			cin >> n;
			cout<<endl;
			if(type == 1) {
				find_number_r(n);
			} 
			}
			break;
		}
		if (num1 == "3") {
			
			cls();
			cout <<"请输入工资范围(最小值和最大值):"<<endl;
			double a,b;
			cin >> a >> b;
			cout<<endl;
			if(a>b) {
				double temp;
				temp = a;
				a = b;
				b = temp;
			}
			if(type == 1) {
				find_salary_r(a,b);
			} 
		} else {
			printf("\n员工信息输入错误!x_x\n请重试!");
			Sleep(1500);
		}
	}



void print_opt2() {
	printf("\n\t\t 2 更新员工数据\n\n");
	printf("**************************************************\n\n");
	printf("1 新增员工数据\n\n2 修改员工数据\n\n3 返回主界面\n\n");
	printf("**************************************************\n\n");
	printf("请选择:");
}

void opt2() {

	string num2;
	while(1) {
		cls();
		print_opt2();
		cin >> num2;

		if(num2=="1") {
			cls();
			
			cls();
			if(type == 1) {
				modify_new_r();
			}
			break; 
		}

		if (num2 == "2") {
			cls();
		
			cls();
			printf("\n\n1 修改员工地址\n\n2 修改员工工资\n\n请选择:");
			int n;
			cin >> n;
			cls();
			string m;
			printf("\n\n请输入员工编号:");
			cin>>m;
			if(type ==1) {
				cls();
				if(n ==1) modify_address_r(m);
				if(n ==2) modify_salary_r(m);
			}

			break;
		}
		if(num2=="3") {
			cls();
			break;
		} else {
			cls();
			printf("\n输入错误!x_x\n\n请重试\n\n");
			Sleep(1500);
			continue;
		}

	}
	
}



	void print_opt3() {
		printf("\n\t\t 3 输出员工信息\n\n");
		printf("**************************************************\n\n");
		printf("1 按工资由高到低输出 \n\n2 按工资由低到高输出\n\n3 按编号输出(低到高)\n\n4 返回主界面\n\n");
		printf("**************************************************\n\n");
		printf("请选择:");
	}

	void opt3() {
		string num3;
		while(1) {
			cls();
			print_opt3();
			cin >> num3;
			if(num3 == "1") {
				cls();
				
				cls();
				print_sequence(type);
				break;
			}
			if(num3 == "2") {
				cls();
				
				cls();
				print_flashback(type);
				break;
			}
			if(num3 == "3") {
				cls();
				
				cls();
				print_num(type);
				break;
			}
			if(num3 == "4") {
				cls();
				break;
			} else {
				cls();
				cout<<"请输入正确的选项!"<<endl;
				Sleep(1500);
				continue;
			}
		}

	}


	void opt4() {
		cls();
		printf("\n欢迎下次使用!再见^_^\n\n");
	}

	void opt_error() {
		printf("\n\n输入错误!x_x\n\n请输入正确选项!\n\n");
	}

	int main() {
		system("color 0B");
		loading();
		cls();
		print_Begin();
		string opt;
		int o;

		while(1) {
			cin >> opt;
			o=atoi(opt.c_str());
			switch(o) {
				case 1:
					opt1();
					system("pause");
					refresh();
					break;

				case 2:
					opt2();
					system("pause");
					refresh();
					break;

				case 3:
					opt3();
					system("pause");
					refresh();
					break;

				case 4:
					opt4();
					Sleep(500) ;
					return 0;

				default:
					cls();
					opt_error();
					system("pause");
					refresh();
					break;

			}
		}
	}
代码二、
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;

class Staff {
	protected:
		string number;
		string name;
		string sex;
		string address;
		int salary;
		static int sum_salary; //总工资
		static int sum_member; //总员工人数
	public:
		Staff();
		Staff(string number,string name,string sex,string address,int salary);

		void print() {};
		void setnumber(string num) {
			number=num;
		}
		void setname(string na) {
			name=na;
		}
		void setsex(string se) {
			sex=se;
		}
		void setaddress(string add) {
			address=add;
		}
		void setsalary(int sa) {
			salary=sa;
		}

		int getsalary();
		string getname() {
			return name;
		}
		string getnumber() {
			return number;
		}
		string getsex() {
			return sex;
		}
		string getaddress() {
			return address;
		}
};

Staff::Staff() {
	number="";
	name="";
	sex="";
	address="";
	salary=0;
}


Staff::Staff(string number,string name,string sex,string address,int salary) {
	this->number = number;
	this->name = name;
	this->sex = sex;
	this->address = address;
	this->salary = salary;
}
int Staff::getsalary() {
	return salary;
}




class Regular_staff:public Staff {
	protected:
		int allowance; //岗位津贴
		int old_age_pension; //养老金
		int Housing_Fund; //住房公积金
		int medical_insurance; //医疗保险
		int tax;
		int r_salary; //实际工资
	public:
		Regular_staff();
		Regular_staff(string num,string na,string sex,string add,int salary,int all ,int oap, int Hou, int med);
		void getr_salary();										//计算实发工资
		void gettax();
		int getreal() {
			return r_salary;
		}
		void setallowance(int all) {
			allowance=all;
		}
		void setold_age_pension(int oap) {
			old_age_pension=oap;
		}
		void setHousing_Fund(int Hou) {
			Housing_Fund=Hou;
		}
		void setmedical_insurance(int med) {
			medical_insurance=med;
		}
		void display() {
			cout<<"员工编号:"<<number<<"\t"<<"姓名:"<<name<<"\t"<<"性别:"<<sex<<endl;
			cout<<"地址:"<<address<<endl;
			cout<<"岗位津贴:"<<allowance<<"\t"<<"养老金:"<<old_age_pension<<endl;
			cout<<"住房公积金:"<<Housing_Fund<<"\t"<<"医疗保险:"<<medical_insurance<<endl;
			cout<<"本月税后实际工资:"<<r_salary<<endl;
		}

		int getallowance() {
			return allowance;
		}
		int getold_age_pension() {
			return old_age_pension;
		}
		int getHousing_Fund() {
			return Housing_Fund;
		}
		int getmedical_insurance() {
			return medical_insurance;
		}


} rs[10000];


Regular_staff::Regular_staff() {
	number="";
	name="";
	sex="";
	address="";
	salary=0;
	allowance=0;
	old_age_pension=0;
	Housing_Fund=0;
	medical_insurance=0;
}

void Regular_staff::gettax() {

	this->salary = getsalary();
	if (salary<5000) {
		tax=0;
	}
	if (salary>5000&&r_salary<41000) {
		tax=(salary-5000)*0.03;
	}
	if (salary>41000&&r_salary<149000) {
		tax=(salary-41000)*0.1+2520;
	}
	if (salary>149000&&r_salary<305000) {
		tax=(salary-149000)*0.2+16920;
	}
	if (salary>305000&&r_salary<425000) {
		tax=(salary-305000)*0.25+31920;
	}
	if (salary>425000&&r_salary<665000) {
		tax=(salary-425000)*0.3+52920;
	}
	if (salary>665000&&r_salary<965000) {
		tax=(salary-665000)*0.35+85920;
	}
	if (salary>965000) {
		tax=(salary-965000)*0.45+181920;
	}
}

Regular_staff::Regular_staff(string num,string na,string sex,string add,int salary,int all ,int oap, int Hou, int med) : Staff(num,na ,sex, add ,salary) {
	this->allowance = all;
	this->old_age_pension = oap;
	this->Housing_Fund = Hou;
	this->medical_insurance = med;
	gettax();
	r_salary = getsalary()+allowance-old_age_pension-Housing_Fund-medical_insurance-tax;

}
void Regular_staff::getr_salary() {
	r_salary = getsalary()+allowance-old_age_pension-Housing_Fund-medical_insurance-tax;
}





class Temporary_staff:public Staff {
	protected:
		int bonus; //奖金
		int tax;
		int r_salary; //实际工资
	public:
		Temporary_staff();
		Temporary_staff(string num,string na,string sex,string add,int salary,int bo );
		void gettax();
		int getr_salary();
		int getreal() {
			return r_salary;
		}
		void setbonus(int bo) {
			bonus=bo;
		}
		void display() {
			cout<<"员工编号:"<<number<<"\t"<<"姓名:"<<name<<"\t"<<"性别:"<<sex<<endl;
			cout<<"地址:"<<address<<endl;
			cout<<"奖金:"<<bonus<<endl;
			cout<<"本月税后实际工资:"<<r_salary<<endl;
		}

		int getbonus() {
			return bonus;
		}


} ts[10000];

Temporary_staff::Temporary_staff() {
	number="";
	name="";
	sex="";
	address="";
	salary=0;
	bonus=0;
}

void Temporary_staff::gettax() {

	if (salary<5000) {
		tax=0;
	}
	if (salary>5000&&salary<41000) {
		tax=(salary-5000)*0.03;
	}
	if (salary>41000&&salary<149000) {
		tax=(salary-41000)*0.1+2520;
	}
	if (salary>149000&&salary<305000) {
		tax=(salary-149000)*0.2+16920;
	}
	if (salary>305000&&salary<425000) {
		tax=(salary-305000)*0.25+31920;
	}
	if (salary>425000&&salary<665000) {
		tax=(salary-425000)*0.3+52920;
	}
	if (salary>665000&&salary<965000) {
		tax=(salary-665000)*0.35+85920;
	}
	if (salary>965000) {
		tax=(salary-965000)*0.45+181920;
	}
}
Temporary_staff::Temporary_staff(string num,string na,string sex,string add,int salary,int bo ) : Staff(num ,na ,sex, add ,salary) {
	this->bonus = bo;
	gettax();
	r_salary =salary + bonus - tax;				//计算最终工资

}




void print_Begin() {
	printf("\n\t\t 职工工资管理系统\n\n");
	printf("**************************************************\n\n");
	printf("1 查找员工信息\n\n2 更新员工数据\n\n3 输出员工信息\n\n4 关闭程序\n\n");
	printf("**************************************************\n\n");
	printf("请选择:");
}

void loading() {
	printf("\n\n\t\tLoading......\n\n\n");
	printf(" ");
	for (int i = 1; i <= 40; ++i) {
		printf(".");
		Sleep(50); //延迟输出
	}
	printf(" ");
}

void cls() { //清屏加修改颜色
	system("cls");
	system("color 0B");
}

void refresh() {
	cls();
	print_Begin();
}

int x=0;


void get_rstxt() {										//读取正式员工的数据
	fstream f;
	f.open("Regular_staff.txt",ios::in);
	string num;
	string na;
	string sex;
	string add;
	int salary;
	int all ;
	int oap;
	int Hou;
	int med;
	int i;
	for(i=0; !f.eof(); i++) {
		f>>num>>na>>sex>>add>>salary>>all>>oap>>Hou>>med;
		rs[i].setnumber(num);
		rs[i].setname(na);
		rs[i].setsex(sex);
		rs[i].setaddress(add);
		rs[i].setsalary(salary);
		rs[i].setallowance(all);
		rs[i].setold_age_pension(oap);
		rs[i].setHousing_Fund(Hou);
		rs[i].setmedical_insurance(med);
		rs[i].gettax();
		rs[i].getr_salary();
	}
	x=i-1;
	f.close();
}
void get_tstxt() {										//读取临时员工的数据
	fstream f;
	f.open("Temporary_staff.txt",ios::in);
	string num;
	string na;
	string sex;
	string add;
	int salary;
	int bo;
	int i;
	for(i=0; f.eof(); i++) {
		f>>num>>na>>sex>>add>>salary>>bo;
		ts[i].setnumber(num);
		ts[i].setname(na);
		ts[i].setsex(sex);
		ts[i].setaddress(add);
		ts[i].setsalary(salary);
		ts[i].setbonus(bo);
	}
	x=i-1;
	f.close();
}

void find_name_r(string n) {							//通过员工姓名,查询正式员工的数据
	get_rstxt();
	for(int i=0; i<=x; i++) {
		if(rs[i].getname()==n) {
			rs[i].display();
			cout<<endl;
			break;
		}
		if(i==x) {
			cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
			break;
		}
	}

}

void find_name_t(string n) {							//通过员工姓名,查询临时员工的数据
	get_tstxt();
	for(int i=0; i<x; i++) {
		if(ts[i].getname()==n) {
			ts[i].display();
			cout<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
			break;
		}
	}
}

void find_number_r(string m) {							//通过编号查找 正式 员工
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getnumber()==m) {
			rs[i].display();
			cout<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
			break;
		}
	}
}

void find_number_t(string m) {							//通过编号查找 临时 员工
	get_tstxt();
	for(int i=0; i<x; i++) {
		if(ts[i].getnumber()==m) {
			ts[i].display();
			cout<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核实员工信息!"<<endl;
			break;
		}
	}
}

void find_salary_r(double a,double b) {					//工资范围 ,控制 a <= b  正式员工
	int num=0;
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getreal()>=a&&rs[i].getreal()<=b) {
			rs[i].display();
			cout<<endl;
			num++;
		}
		if(i==x-1&&num==0) {
			cout<<"抱歉,未查询到相应员工,请核实员工信息!"<<endl;
			break;
		}
	}
}

void find_salary_t(double a,double b) {					//工资范围 , 同上
	int num=0;
	get_tstxt();
	for(int i=0; i<x; i++) {
		if(ts[i].getreal()>=a&&ts[i].getreal()<=b) {
			ts[i].display();
			cout<<endl;
			num++;
		}
		if(i==x-1&&num==0) {
			cout<<"抱歉,未查询到相应员工,请核实员工信息!"<<endl;
			break;
		}
	}
}

void modify_new_r() { 									//新增员工信息
	string num;
	string na;
	string sex;
	string add;
	int salary;
	int all ;
	int oap;
	int Hou;
	int med;
	cout<<"\n\n请输入新正式员工的编号、姓名、性别、家庭地址、基础工资、岗位津贴、养老金、住房公积金、医疗保险\n\n";
	cin>>num>>na>>sex>>add>>salary>>all>>oap>>Hou>>med;
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getnumber()==num) {
			cout<<"\n编号重复!请核实员工信息!";
			break;
		}
		if(i==x-1) {
			fstream f;
			f.open("Regular_staff.txt",ios::out|ios::app);
			f<<num<<" "<<na<<" "<<sex<<" "<<add<<" "<<salary<<" "<<all<<" "<<oap<<" "<<Hou<<" "<<med<<" ";
			f.close();
			cout<<"已将"<<na<<"加入系统名单!";
		}
	}

}

void modify_new_t() {
	string num;
	string na;
	string sex;
	string add;
	int salary;
	int bo;
	cout<<"请输入新临时员工的编号、姓名、性别、家庭地址、基础工资、奖金";
	cin>>num>>na>>sex>>add>>salary>>bo;
	get_tstxt();
	for(int i=0; i<x; i++) {
		if(ts[i].getnumber()==num) {
			cout<<"\n编号重复!请核实员工信息!";
			break;
		}
		if(i==x-1) {
			fstream f;
			f.open("Temporary_staff.txt",ios::out|ios::app) ;
			f<<num<<" "<<na<<" "<<sex<<" "<<add<<" "<<salary<<" "<<bo<<" ";
			f.close();
			cout<<"已将"<<na<<"加入系统名单!";
		}
	}

}

void modify_address_r(string num) { 					//正式 地址
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getnumber()==num) {
			cout<<"已找到该员工,请输入该员工新的家庭住址;"<<endl;
			string new_address;
			cin>>new_address;
			rs[i].setaddress(new_address);
			cout<<"修改成功!!"<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
			break;
		}
	}
	fstream  fc("Regular_staff.txt",ios::trunc);
	fc.close();
	fstream f;
	f.open("Regular_staff.txt",ios::out);
	for(int i=0; i<x; i++) {
		f<<rs[i].getnumber()<<" "<<rs[i].getname()<<" "<<rs[i].getsex()<<" "<<rs[i].getaddress()<<" "<<rs[i].getsalary()<<" "<<rs[i].getallowance()<<" "<<rs[i].getold_age_pension()<<" "<<rs[i].getHousing_Fund()<<" "<<rs[i].getmedical_insurance()<<" ";
	}
	f.close();
}


void modify_address_t(string num) {
	get_tstxt();
	for(int i=0; i<x; i++) {
		if(ts[i].getnumber()==num) {
			cout<<"已找到该员工,请输入该员工新的家庭住址;"<<endl;
			string new_address;
			cin>>new_address;
			ts[i].setaddress(new_address);
			cout<<"修改成功!!"<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
			break;
		}
	}
	fstream  fc("Temporary_staff.txt",ios::trunc);
	fc.close();
	fstream f;
	f.open("Temporary_staff.txt",ios::out);
	for(int i=0; i<x; i++) {
		f<<ts[i].getnumber()<<" "<<ts[i].getname()<<" "<<ts[i].getsex()<<" "<<ts[i].getaddress()<<" "<<ts[i].getsalary()<<" "<<ts[i].getbonus()<<" ";
	}
	f.close();
}

void modify_salary_r(string num) { 						//修改工资  清屏 重新输入  正式
	get_rstxt();
	for(int i=0; i<x; i++) {
		if(rs[i].getnumber()==num) {
			cout<<"已找到该员工,请输入该员工新的基础工资;"<<endl;
			int new_salary;
			cin>>new_salary;
			rs[i].setsalary(new_salary);
			cout<<"修改成功!!"<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
			break;
		}
	}
	fstream  fc("Regular_staff.txt",ios::trunc);
	fc.close();
	fstream f;
	f.open("Regular_staff.txt",ios::out);
	for(int i=0; i<x; i++) {
		f<<rs[i].getnumber()<<" "<<rs[i].getname()<<" "<<rs[i].getsex()<<" "<<rs[i].getaddress()<<" "<<rs[i].getsalary()<<" "<<rs[i].getallowance()<<" "<<rs[i].getold_age_pension()<<" "<<rs[i].getHousing_Fund()<<" "<<rs[i].getmedical_insurance()<<" ";
	}
	f.close();
}

void modify_salary_t(string num) {
	get_tstxt();
	for(int i=0; i<x; i++) {
		if(ts[i].getnumber()==num) {
			cout<<"已找到该员工,请输入该员工新的基础工资;"<<endl;
			int new_salary;
			cin>>new_salary;
			ts[i].setsalary(new_salary);
			cout<<"修改成功!!"<<endl;
			break;
		}
		if(i==x-1) {
			cout<<"抱歉,未查询到该员工,请核对员工信息!"<<endl;
			break;
		}
	}
	fstream  fc("Temporary_staff.txt",ios::trunc);
	fc.close();
	fstream f;
	f.open("Temporary_staff.txt",ios::out);
	for(int i=0; i<x; i++) {
		f<<ts[i].getnumber()<<" "<<ts[i].getname()<<" "<<ts[i].getsex()<<" "<<ts[i].getaddress()<<" "<<ts[i].getsalary()<<" "<<ts[i].getbonus()<<" ";
	}
	f.close();
}

void print_num_r() {					//打印员工信息 正式
	get_rstxt();
	for(int i=0; i<x; i++) {
		cout<<endl<<"员工编号:"<<rs[i].getnumber()<<"  员工姓名:"<<rs[i].getname()<<endl<<endl;
		cout<<"员工地址:"<<rs[i].getaddress()<<endl<<endl;
		cout<<"员工性别:"<<rs[i].getsex()<<"  员工税后实际工资:"<<rs[i].getreal()<<endl<<endl;
		cout<<"--------------------------------------------------------------------"<<endl;
	}
}

void print_num_t() {
	get_tstxt();
	for(int i=0; i<x; i++) {
		cout<<endl<<"员工编号:"<<ts[i].getnumber()<<"  员工姓名:"<<ts[i].getname()<<endl<<endl;
		cout<<"员工地址:"<<ts[i].getaddress()<<endl<<endl;
		cout<<"员工性别:"<<ts[i].getsex()<<"  员工税后实际工资:"<<ts[i].getreal()<<endl<<endl;
		cout<<"--------------------------------------------------------------------"<<endl;
	}
}

void print_num(int type) {
	int i,j,o = type;
	get_rstxt();
	get_tstxt();
	Regular_staff temp_r;
	Temporary_staff temp_t;
	cout<<"按编号由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
// 	cout<<"按编号顺序输出:1.正式员工 2.临时员工"<<endl<<"请输入:"<<endl;
// 	cin>>o;
	switch(o) {
		case 1:

			for (j=0; j<x; j++) {
				for (i=0; i<x-j; i++) {
					if (rs[i].getnumber()>rs[i+1].getnumber()) {
						temp_r=rs[i];
						rs[i]=rs[i+1];
						rs[i+1]=temp_r;
					}
				}
			}
			print_num_r();
			break;
		case 2:

			for (j=0; j<x; j++) {
				for (i=0; i<x-j; i++) {
					if (ts[i].getnumber()>ts[i+1].getnumber()) {
						temp_t=ts[i];
						ts[i]=ts[i+1];
						ts[i+1]=temp_t;
					}
				}
			}
			print_num_t();
			break;
	}
}
void print_sequence(int type) {
	int i,j,o = type;
	get_rstxt();
	get_tstxt();
	Regular_staff temp_r;
	Temporary_staff temp_t;
	cout<<"按工资由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
//	cout<<"按工资由高到低输出:1.固定员工 2.临时员工"<<endl<<"请输入:"<<endl;
//	cin>>o;
	switch(o) {
		case 1:

			for (j=0; j<x; j++) {
				for (i=0; i<x-j; i++) {
					if (rs[i].getreal()<rs[i+1].getreal()) {
						temp_r=rs[i];
						rs[i]=rs[i+1];
						rs[i+1]=temp_r;
					}
				}
			}
			print_num_r();
			break;
		case 2:

			for (j=0; j<x; j++) {
				for (i=0; i<x-j; i++) {
					if (ts[i].getreal()<ts[i+1].getreal()) {
						temp_t=ts[i];
						ts[i]=ts[i+1];
						ts[i+1]=temp_t;
					}
				}
			}
			print_num_t();
			break;
	}
}

void print_flashback(int type) {
	int i,j,o = type;
	get_rstxt();
	get_tstxt();
	Regular_staff temp_r;
	Temporary_staff temp_t;
	cout<<"按工资由低到高输出:"<<endl<<"--------------------------------------------------------------------"<<endl;
//	cout<<"按工资由低到高输出:1.固定员工 2.临时员工"<<endl<<"请输入:"<<endl;
//	cin>>o;
	switch(o) {
		case 1:

			for (j=0; j<x; j++) {
				for (i=0; i<x-j; i++) {
					if (rs[i].getreal()>rs[i+1].getreal()) {
						temp_r=rs[i];
						rs[i]=rs[i+1];
						rs[i+1]=temp_r;
					}
				}
			}
			print_num_r();
			break;
		case 2:

			for (j=0; j<x; j++) {
				for (i=0; i<x-j; i++) {
					if (ts[i].getreal()>ts[i+1].getreal()) {
						temp_t=ts[i];
						ts[i]=ts[i+1];
						ts[i+1]=temp_t;
					}
				}
			}
			print_num_t();
			break;
	}
}



int type;

void charge_type() {
	while(1) {
		cls();
		printf("请选择职工类型\n\n1 正式职工\n\n2 临时职工\n\n");		//输入职工类型
		cin >>type;
		if(type != 1 && type !=2) {				//判断类型是否输入合法
			cls();
			printf("\n职工类型输入错误!x_x\n请重试!");
			Sleep(1500);
			continue;
		} else break;
	}
}


void print_opt1() {
	printf("\n\t\t 1 查找员工信息\n\n");
	printf("**************************************************\n\n");
	printf("1 职工姓名\n\n2 职工编号\n\n3 工资介于a到b的职工\n\n");
	printf("**************************************************\n\n");
	printf("请选择:");
}

void opt1() {

	string num1;
	while(1) {
		cls();
		print_opt1();
        cin>>num1;
		if(num1 == "1") {
			charge_type();
			cls();
			cout <<"请输入员工姓名:"<<endl;
			string n;
			cin >> n;
			cout<<endl;
			if(type == 1) {
				find_name_r(n);
			} else if(type == 2) {
				find_name_t(n);
			}
			break;
		}
		if (num1 == "2") {
			charge_type();
			cls();
			cout <<"请输入员工编号:"<<endl;
			string n;
			cin >> n;
			cout<<endl;
			if(type == 1) {
				find_number_r(n);
			} else if(type == 2) {
				find_number_t(n);
			}
			break;
		}
		if (num1 == "3") {
			charge_type();
			cls();
			cout <<"请输入工资范围(最小值和最大值):"<<endl;
			double a,b;
			cin >> a >> b;
			cout<<endl;
			if(a>b) {
				double temp;
				temp = a;
				a = b;
				b = temp;
			}
			if(type == 1) {
				find_salary_r(a,b);
			} else if(type == 2) {
				find_salary_t(a,b);
			}
			break;
		} else {
			printf("\n员工信息输入错误!x_x\n请重试!");
			Sleep(1500);
			continue;
		}
	}

}


void print_opt2() {
	printf("\n\t\t 2 更新员工数据\n\n");
	printf("**************************************************\n\n");
	printf("1 新增员工数据\n\n2 修改员工数据\n\n3 返回主界面\n\n");
	printf("**************************************************\n\n");
	printf("请选择:");
}

void opt2() {

	string num2;
	while(1) {
		cls();
		print_opt2();
		cin >> num2;

		if(num2=="1") {
			cls();
			charge_type();
			cls();
			if(type == 1) {
				modify_new_r();
			}
			if(type == 2) {
				modify_new_t();
			}
			break;
		}

		if (num2 == "2") {
			cls();
			charge_type();
			cls();
			printf("\n\n1 修改员工地址\n\n2 修改员工工资\n\n请选择:");
			int n;
			cin >> n;
			cls();
			string m;
			printf("\n\n请输入员工编号:");
			cin>>m;
			if(type ==1) {
				cls();
				if(n ==1) modify_address_r(m);
				if(n ==2) modify_salary_r(m);
			}
			if(type ==2) {
				cls();
				if(n ==1) modify_address_t(m);
				if(n ==2) modify_salary_t(m);
			}
			break;
		}
		if(num2=="3") {
			cls();
			break;
		} else {
			cls();
			printf("\n输入错误!x_x\n\n请重试\n\n");
			Sleep(1500);
			continue;
		}

	}
	
}



	void print_opt3() {
		printf("\n\t\t 3 输出员工信息\n\n");
		printf("**************************************************\n\n");
		printf("1 按工资由高到低输出 \n\n2 按工资由低到高输出\n\n3 按编号输出(低到高)\n\n4 返回主界面\n\n");
		printf("**************************************************\n\n");
		printf("请选择:");
	}

	void opt3() {
		string num3;
		while(1) {
			cls();
			print_opt3();
			cin >> num3;
			if(num3 == "1") {
				cls();
				charge_type();
				cls();
				print_sequence(type);
				break;
			}
			if(num3 == "2") {
				cls();
				charge_type();
				cls();
				print_flashback(type);
				break;
			}
			if(num3 == "3") {
				cls();
				charge_type();
				cls();
				print_num(type);
				break;
			}
			if(num3 == "4") {
				cls();
				break;
			} else {
				cls();
				cout<<"请输入正确的选项!"<<endl;
				Sleep(1500);
				continue;
			}
		}

	}


	void opt4() {
		cls();
		printf("\n欢迎下次使用!再见^_^\n\n");
	}

	void opt_error() {
		printf("\n\n输入错误!x_x\n\n请输入正确选项!\n\n");
	}

	int main() {
		system("color 0B");
		loading();
		cls();
		print_Begin();
		string opt;
		int o;

		while(1) {
			cin >> opt;
			o=atoi(opt.c_str());
			switch(o) {
				case 1:
					opt1();
					system("pause");
					refresh();
					break;

				case 2:
					opt2();
					system("pause");
					refresh();
					break;

				case 3:
					opt3();
					system("pause");
					refresh();
					break;

				case 4:
					opt4();
					Sleep(500) ;
					return 0;

				default:
					cls();
					opt_error();
					system("pause");
					refresh();
					break;

			}
		}
	}

有关职工工资管理系统程序中新增临时员工的功能的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  3. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  4. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  5. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  6. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  7. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  8. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  9. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  10. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

随机推荐