c++ 工资管理系统 文件操作.doc_第1页
c++ 工资管理系统 文件操作.doc_第2页
c++ 工资管理系统 文件操作.doc_第3页
c++ 工资管理系统 文件操作.doc_第4页
c++ 工资管理系统 文件操作.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#ifndef MASSAGE_H_#define MASSAGE_H_#include #include using namespace std;const int LEN = 10;class Allowancepublic:double subsidy;/补贴double allowance;/津贴double wallowance;/岗贴double tax;/个人所得税double must;/应发数double deduct;/扣除double shi;/实发数public:Allowance()double subsidy = 0.0; /补贴double allowance = 0;/津贴double wallowance = 0;/岗贴double tax = 0;/个人所得税double deduct = 0; /扣除double must = 0;/应发数double shi = 0;/实发数;class Passwordpublic:string name;string password;string number;class User / 用户private:string name; /用户或者是管理者的姓名string number; / 用户的编号或是管理者的编号double salary; /用户的工资Allowance allow;public:User(string na = NULL, string nu = 00000, double sa = 1100.0):name(na),number(nu),salary(sa)int Insert();/输入信息string Regect(string &);virtual int NameQuary(string);/按姓名查询virtual int NumberQuary(string nu);/按编号查询int SalaryQuary();/按工资查询int Print();/输出工资信息virtual void Alter_Salary();virtual void Delete_User();/删除用户virtual User();class Staff:public Userprotected:string password;public:Staff(string na = NULL, string nu = 00000, double sa = 0.0,string pd = NULL):User(na,nu,sa),password(pd)virtual int NameQuary(string na);virtual int NumberQuary(string nu);class Massager:public Userprotected:string mpassword;public:Massager(string na = NULL, string nu = 00000, double sa = 0.0,string pd2 = NULL):User(na,nu,sa),mpassword(pd2)virtual Massager();virtual int NameQuary(string);/按姓名查询virtual int NumberQuary(string nu);/按编号查询int SalaryQuary();/按工资查询int Print();void Add_User(); /新建用户void Delete_User();/删除用户void Alter_Salary();/修改工资信息;bool Pass_word(string ,string ,int i = 0);/默认职工登录int Check(int & i,int m, int n); /检查选择是否正确double Tax(double a);/个人所得税double Cout_allowance(int time);/津贴计算double Cout_Hillock_posted(int time);/岗贴计算inline void eatline()while(cin.get() != n)continue;/void Staff_menu(string na,string nu);/用户不需要查询其他人的信息,void menu();void show1();void menu2();void menu24();void show();void show1();void show2();#endif#include #include #include #include #include #include library_massage.husing namespace std;const char * finf = salary_massager.txt;/存储用户和管理员的信息const char *PASS = password.txt; /普通用户的用户密码const char *MASSAGER = mpassword.txt;/管理员的密码const char * EXTRA = extra.txt;/各种补贴 津贴 岗贴 扣除/const char * TAXTXT = tax.txt;/个人所得税/=基类 用户=int User:Insert() /-用户的信息输入=int con = 0;int users = 0;string password;double subsidy = 0.0; /补贴int time;/津贴工时int time2;/岗贴工时double allowance = 0;/津贴double wallowance = 0;/岗贴double tax = 0;/个人所得税double deduct = 0; /扣除double must = 0;/应发数double shi;/实发数ofstream fout(finf,ios_base:app|ios_base:out);/ 输入新建职工信息ofstream fout1(PASS,ios_base:out|ios_base:app); /输入新建职工密码ofstream fout2(EXTRA,ios_base:out|ios_base:app); /输入新建职工补贴 津贴 等/ofstream fout3(EXTRA,ios_base:out|ios_base:app); /if (!fout3.is_open()/cout 密码存储文件打开失败!n;/exit(1);/if (!fout2.is_open()cout 密码存储文件打开失败!n;exit(1);if (!fout1.is_open()cout 密码存储文件打开失败!n;exit(1);if (!fout.is_open()cout 存储文件打开失败!n;exit(1);cout users;for (int i = 0 ; i users ; i+)cout 输入第 i+1 信息:n name; cout t name password;/对应的用户设置密码cout number;/number = Regect(number);cout salary;tax = Tax(salary);/个人所得税计算cout setw(8) time;allowance = Cout_allowance(time);cout setw(8) time2;wallowance = Cout_Hillock_posted(time2);/岗贴计算函数cout setw(8) subsidy;must = salary - tax ;deduct = tax ;cout setw(8) shi;fout setw(8) name ; / -输入姓名fout1 setw(8) name ;/占16个字节fout1 setw(8) password;/-输入密码fout setw(8) number;/占16个字节fout1 setw(8) number;fout2 setw(8) number;/fout3 setw(16) number;/-输入编号fout setw(8) salary;/占8个字节/-输入实发数工资fout2 setw(8) allowance;fout2 setw(8) wallowance;fout2 setw(8) subsidy;fout2 setw(8) tax;fout2 setw(8) must;fout2 setw(8) deduct;fout2 setw(8) shi;eatline();fout2.close();fout1.close();fout.close();/查看数据的长度cout sizeof *this sizeof *this name: sizeof name number: sizeof number salary: sizeof salary;cout sizeof allow sizeof allow endl ;return 0;double Cout_allowance(int time) /时间(单位小时)double multip = 20;/每小时20元double allowance;allowance = multip * time;return allowance;double Cout_Hillock_posted(int time) /时间(单位小时)double multip = 15;/每小时15元double allowance;allowance = multip * time;return allowance;double Tax(double a)/ -计算个人所得税 ,a 为工资double b = a;if(1100 = b) b = (a-1100) * 5.0 / 100);if(1600 = b) b = (500 * 5.0 / 100 + (b - 1600)*10.0/100);if(2600 = b) b = (25 + 1000 * 10.0 / 100.0 + (b - 2600) * 15.0 /100);if(b 3600) b = (25 + 100 + 150 + (b - 3600) * 20.0 / 100);return b;string User:Regect(string &nu)/-防止输入重复的职工信息string nu1;ifstream fin(finf);if(fin.is_open()cout Regect error1,cannot open the finf name number salary;if(nu = number)cout nu1;return nu1;con+;return nu;User:NameQuary(string na) /-按姓名查找int con = 0;/计数,查找的文件距离string num ;ifstream fin(finf,ios_base:app|ios_base:out);/ 关联salary_massager.txtifstream fin1(EXTRA,ios_base:app|ios_base:out); /关联extra.txtif (!fin.is_open()cout 存储salary_massager.txt文件打开失败!n;exit(1);if (!fin1.is_open()cout 存储extra.txt文件打开失败!n;exit(1);fin.seekg(0,ios_base:beg);if(!fin.eof() cout setw(8) 姓名 setw(8) 编号 setw(8) 工资 setw(8) 津贴 setw(8) 岗贴 setw(8) 补贴 setw(8) 所得税 setw(8) 应发数 setw(8) 应扣数 setw(8) 实发数; cout name number salary;if (name = na)cout setw(8) name setw(8) number setw(8) num / 编号 allow.allowance /津贴 allow.wallowance /岗贴 allow.subsidy /补贴 allow.tax /个人所得税 allow.must/应发数 allow.deduct /扣除 allow.shi ; /实发数if(name = na & number = num)cout setw(8) allow.allowance/津贴 setw(8) allow.wallowance/岗贴 setw(8) allow.subsidy/补贴 setw(8) allow.tax /个人所得税 setw(8) allow.must/应发数 setw(8) allow.deduct/ 应扣数 setw(8) allow.shi/ 实发数nendl;con+;elsecout 不存在用户,文件为空!n;cout 查找结束! n;fin.close();fin1.close();system(pause);system(cls);return 0;int User:NumberQuary(string nu)/-按编号查询int con = 0;/计数,查找的文件距离string num;ifstream fin(finf,ios_base:app|ios_base:out);/ifstream fin1(EXTRA,ios_base:app|ios_base:out);if (!fin.is_open()cout 存储文件打开失败!n;exit(1);fin.seekg(0,ios_base:beg);if(!fin.eof()cout setw(8) 姓名 setw(8) 编号 setw(8) 工资 setw(8) 津贴 setw(8) 岗贴 setw(8) 补贴 setw(8) 所得税 setw(8) 应发数 setw(8) 应扣数 setw(8) 实发数;cout name number salary;if (number = nu)cout setw(8) name setw(8) number setw(8) num / 编号 allow.allowance /津贴 allow.wallowance /岗贴 allow.subsidy /补贴 allow.tax /个人所得税 allow.must/应发数 allow.deduct /扣除 allow.shi ; /实发数if(nu = num)cout setw(8) allow.allowance/津贴 setw(8) allow.wallowance/岗贴 setw(8) allow.subsidy/补贴 setw(8) allow.tax /个人所得税 setw(8) allow.must/应发数 setw(8) allow.deduct/ 应扣数 setw(8) allow.shi;/ 实发数ncout endl;con+;elsecout 不存在该用户!n;fin.close();fin1.close();system(pause);system(cls);return 0;int User:SalaryQuary()/-按总工资查询-double sa1,sa2;int con = 0;/计数,查找的文件距离string num;cout 输入要查找的总工资范围(sa1=salary sa1 sa2 ;ifstream fin(finf,ios_base:app|ios_base:out);ifstream fin1(finf,ios_base:app|ios_base:out);if (!fin1.is_open()cout 存储文件打开失败!n;exit(1);if (!fin.is_open()cout 存储文件打开失败!n;exit(1);fin.seekg(0,ios_base:beg);if(!fin.eof()/cout setw(20) 姓名 setw(12) 编号 setw(16) 工资(元) endl;cout setw(8) 姓名 setw(8) 编号 setw(8) 工资 setw(8) 津贴 setw(8) 岗贴 setw(8) 补贴 setw(8) 所得税 setw(8) 应发数 setw(8) 应扣数 setw(8) 实发数;cout name number salary;if (salary = sa1 & salary = sa2)cout setw(8) name setw(8) number setw(8) num / 编号 allow.allowance /津贴 allow.wallowance /岗贴 allow.subsidy /补贴 allow.tax /个人所得税 allow.must/应发数 allow.deduct /扣除 allow.shi ; /实发数if(number = num)cout setw(8) allow.allowance/津贴 setw(8) allow.wallowance/岗贴 setw(8) allow.subsidy/补贴 setw(8) allow.tax /个人所得税 setw(8) allow.must/应发数 setw(8) allow.deduct/ 应扣数 setw(8) allow.shi;/ 实发数ncout endl;con+;elsecout 不存在该用户!n;fin.close();fin1.close();system(pause);system(cls);return 0;int User:Print()/-显示所有职工信息-string num;cout 全部用户的工资情况:nn;ifstream fin(finf);ifstream fin1(EXTRA);if (!fin1.is_open()cout 存储文件打开失败!n;exit(1);if (!fin.is_open()cout 存储文件打开失败!n;exit(1);fin.seekg(0);cout setw(8) 姓名 setw(8) 编号 setw(8) 工资 setw(8) 津贴 setw(8) 岗贴 setw(8) 补贴 setw(8) 所得税 setw(8) 应发数 setw(8) 应扣数 setw(8) 实发数 name;fin number;fin salary;fin1 num / 编号 allow.allowance /津贴 allow.wallowance /岗贴 allow.subsidy /补贴 allow.tax /个人所得税 allow.must/应发数 allow.deduct /扣除 allow.shi ; /实发数cout setw(8) name setw(8) number setw(8) salary setw(8) allow.allowance/津贴 setw(8) allow.wallowance/岗贴 setw(8) allow.subsidy/补贴 setw(8) allow.tax /个人所得税 setw(8) allow.must/应发数 setw(8) allow.deduct/ 应扣数 setw(8) allow.shi/ 实发数nendl;fin.close();system(pause);system(cls);return 0; void User:Alter_Salary()/修改工资信息 string na,password,num; char choice; int con = 0, time1,time2; ifstream fin(finf,ios_base:out|ios_base:app);/ ifstream fin1(EXTRA,ios_base:out|ios_base:app);/ ofstream fout(finf,ios_base:in);/|ios_base:app ofstream fout2(EXTRA,ios_base:in|ios_base:out);/|ios_base:app ofstream fout1(PASS,ios_base:in);/|ios_base:app cout na;while (!fin.eof()fin.seekg(con*24,ios_base:beg);fin name number salary;fin1 num / 编号 allow.allowance /津贴 allow.wallowance /岗贴 allow.subsidy /补贴 allow.tax /个人所得税 allow.must/应发数 allow.deduct /扣除 allow.shi ; /实发数if (na = name|number = na)break;con +;NumberQuary(number);cout choice;eatline();if(y= choice|Y= choice)cout name;cout choice;eatline();if(y= choice|Y= choice)cout password;cout choice;eatline();if(y= choice|Y= choice)cout number;cout choice;eatline();if(y= choice|Y= choice)cout salary;allow.tax = Tax(salary);/个人所得税计算cout choice;eatline();if(y= choice|Y= choice)cout time1;allow.allowance = Cout_allowance(time1);cout choice;eatline();if(y= choice|Y= choice)cout time2;allow.wallowance = Cout_Hillock_posted(time2);/岗贴计算函数cout choice;eatline();if(y= choice|Y= choice)cout allow.subsidy;allow.must = salary - allow.tax ;allow.deduct = allow.tax ;cout choice;eatline();if(y= choice|Y= choice)cout allow.shi;fout.seekp(con*24,ios_base:beg);fout1.seekp(con*24,ios_base:beg);fout2.seekp(con*64,ios_base:beg);fout setw(8) name ; / -输入姓名fout setw(8) number;/占16个字节fout setw(8) salary;/占8个字节/-输入实发数工资fout1 setw(8) name ;/占16个字节fout1 setw(8) password;/-输入密码fout1 setw(8) number;fout2 setw(8) number;/fout3 setw(16) number;/-输入编号fout2 setw(8) allow.allowance;fout2 setw(8) allow.wallowance;fout2 setw(8) allow.subsidy;fout2 setw(8) allow.tax;fout2 setw(8) allow.must;fout2 setw(8) allow.deduct;fout2 setw(8) allow.shi;cout endl;NumberQuary(number); void User:Delete_User()/删除用户 int con = 0, n = 0;/计数,查找的文件距离int i,j = 0;/计算有几个要删除的string nu, nu1;string nam, nam1 , passw;ifstream fin(finf,ios_base:app|ios_base:out);ifstream fin1(EXTRA,ios_base:app|ios_base:out);ifstream fin2(PASS,ios_base:app|ios_base:out);ifstream fin3(finf,ios_base:app|ios_base:out);ofstream fout(finf,ios_base:app|ios_base:out);/ofstream fout1(EXTRA,ios_base:app|ios_base:out);/ofstream fout2(PASS,ios_base:app|ios_base:out);/if (!fin.is_open()cout 存储文件打开失败!n;exit(1);if (!fin1.is_open()cout 存储文件打开失败!n;exit(1);if (!fout.is_open()cout 存储文件打开失败!n;exit(1);if (!fout1.is_open()cout name number salary;con+;n+;User *user = new Usern - 1;/建立n-1个空间转移文件中的内容Password *p = new Passwordn - 1;cout i;Check(i,1,2);con = 0;fin.clear();switch(i)case 1:cout nam;while(!fin.eof()fin.seekg(con*24,ios_base:beg);fin1.seekg(con*64,ios_base:beg);fin2.seekg(con*24,ios_base:beg);fin3 name number salary;if (name != nam)fin userj.number userj.salary ;/将非删除的文件数据存入内存fin1 userj.number userj.allow.allowance userj.allow.wallowance userj.allow.subsidy userj.allow.tax userj.allow.must userj.allow.deduct userj.allow.shi ;fin2 pj.password pj.number;j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论