目标:熟悉输入与输出流的定义及操作方式。

上机任务:

A、P268  第1题,第2题,第3题,第4题,第5题,第6题。

B、设计一个工资管理系统,计算某高校教师、行政员工、临时工、双肩挑员工的工资数额。要求有简单的界面管理。

实验步骤:

第一步:问题分析和功能定义。分析工资系统的数据组成和工资的计算方法。

第二步:设计类。

工资管理系统程序设计图:

#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
const char N=20;class Staff_Teacher;void WriteFile(int num,char name[],char sex,double salary);
void InterFace();
void Select();
class Person{public:Person(){num=-1;strcpy(name,"未知");sex='0';salary=-1;}Person(int a,char const b[],char c):num(a),sex(c){strcpy(name,b);}virtual void output() =0;virtual void pay()  =0;virtual void input() =0;protected:int num;char name[N];char sex;double salary;
};class Temporary_Workes:public Person
{public:Temporary_Workes(){hourlypay=-1;workinghours=-1;}Temporary_Workes(int a,char const b[],char c,double d, double e):Person(a,b,c),hourlypay(d),workinghours(e){}void output();void pay();void input();protected:double hourlypay;//时薪double workinghours;//工作时长
};
void Temporary_Workes::output()
{cout<<"\t工号\t姓名\t性别\t收入"<<endl;cout<<"\t"<<num<<"\t"<<name<<"\t"<<sex<<"\t"<<salary<<endl;WriteFile(num,name,sex,salary);}
void Temporary_Workes::input()
{cout<<"职工号:"<<endl;cin>>num;cout<<"姓名:"<<endl;cin>>name;cout<<"性别:"<<endl;cin>>sex;cout<<"时薪:"<<endl;cin>>hourlypay;cout<<"工作时长:"<<endl;cin>>workinghours;pay();
}
void Temporary_Workes::pay()
{salary=workinghours*hourlypay;
}class Teacher:virtual public Person
{public:Teacher(){teaching_hours=-1;strcpy(title,"不知道");}Teacher(int a,char const b[],char c,double d, char const e[]):Person(a,b,c),teaching_hours(d){strcpy(title ,e);}void output();void input();void pay();protected:double teaching_hours;//授课时长char title[N];//职称};
void Teacher::output()
{cout<<"\t工号\t姓名\t性别\t收入"<<endl;cout<<"\t"<<num<<"\t"<<name<<"\t"<<sex<<"\t"<<salary<<endl;WriteFile(num,name,sex,salary);
}
void Teacher::input()
{cout<<"职工号:"<<endl;cin>>num;cout<<"姓名:"<<endl;cin>>name;cout<<"性别:"<<endl;cin>>sex;   cout<<"授课时长:"<<endl;cin>>teaching_hours;int n;cout<<"1---------教授\n2---------副教授\n3---------讲师\n4---------助教\n请选择职称序号:";cin>>n;switch(n){case 1:{strcpy(title,"教授");break;}case 2:{strcpy(title,"副教授");break;}   case 3:{strcpy(title,"讲师");break;}    case 4:{strcpy(title,"助教");break;}default: cout<<"!!输入错误!!"<<endl;system("pause");exit(0);  }pay();
}
void Teacher::pay()
{if(strcmp(title,"教授")==0){salary=teaching_hours*80+6000;}else if(strcmp(title,"副教授")==0){salary=teaching_hours*70+5000;}else if(strcmp(title,"讲师")==0){salary=teaching_hours*60+4000;}else{salary=teaching_hours*50+3000;//可怜的助教的工资}}class Staff:virtual public Person
{public:Staff(){strcpy(position,"不知道");}Staff(int a,char const b[],char c, char const d[]):Person(a,b,c){strcpy(position ,d);}void output();void input();void pay();    protected:char position[N];//职位};
void Staff::output()
{cout<<"\t工号\t姓名\t性别\t收入"<<endl;cout<<"\t"<<num<<"\t"<<name<<"\t"<<sex<<"\t"<<salary<<endl;WriteFile(num,name,sex,salary);
}
void Staff::input()
{cout<<"职工号:"<<endl;cin>>num;cout<<"姓名:"<<endl;cin>>name;cout<<"性别:"<<endl;cin>>sex;    cout<<"1---------院级员工\n2---------处级员工\n3---------科级员工\n4---------一般员工\n请选择任职序号:";int n;cin>>n;switch(n){case 1:{strcpy(position,"院级员工");break;}case 2:{strcpy(position,"处级员工");break;}    case 3:{strcpy(position,"科级员工");break;}    case 4:{strcpy(position,"一般员工");break;}  default: {cout<<"!!输入错误!!"<<endl;system("pause");exit(0);}  }pay();
}
void Staff::pay()
{if(strcmp(position,"院级员工")==0){salary=6000;}else if(strcmp(position,"处级员工")==0){salary=5000;}else if(strcmp(position,"科级员工")==0){salary=4000;}else{salary=3000;//可怜的一般员工}}class Staff_Teacher:virtual public Teacher,virtual public Staff
{public:Staff_Teacher(){}Staff_Teacher(int a,char const b[],char c, char const d[],double e, char const f[]):Person(a,b,c),Teacher(a,b,c,e,f),Staff(a,b,c,d){}void output();void input();void pay();
};
void Staff_Teacher::output()
{cout<<"\t工号\t姓名\t性别\t收入"<<endl;cout<<"\t"<<num<<"\t"<<name<<"\t"<<sex<<"\t"<<salary<<endl;WriteFile(num,name,sex,salary);
}
void Staff_Teacher::input()
{cout<<"职工号:"<<endl;cin>>num;cout<<"姓名:"<<endl;cin>>name;cout<<"性别:"<<endl;cin>>sex;   cout<<"授课时长:"<<endl;cin>>teaching_hours;int n;cout<<"1---------教授\n2---------副教授\n3---------讲师\n4---------助教\n请选择职称序号:";cin>>n;switch(n){case 1:{strcpy(title,"教授");break;}case 2:{strcpy(title,"副教授");break;}    case 3:{strcpy(title,"讲师");break;}    case 4:{strcpy(title,"助教");break;}  default: {cout<<"!!输入错误!!"<<endl;system("pause");exit(0);}  }cout<<"1---------院级员工\n2---------处级员工\n3---------科级员工\n4---------一般员工\n请选择任职序号:";cin>>n;switch(n){case 1:{strcpy(position,"院级员工");break;}case 2:{strcpy(position,"处级员工");break;}    case 3:{strcpy(position,"科级员工");break;}    case 4:{strcpy(position,"一般员工");break;}  default: {cout<<"!!输入错误!!"<<endl;system("pause");exit(0);}  }pay();
}
void Staff_Teacher::pay()
{Staff::pay();if(strcmp(title,"教授")==0){salary=teaching_hours*80+6000+salary*0.5;}else if(strcmp(title,"副教授")==0){salary=teaching_hours*70+5000+salary*0.5;}else if(strcmp(title,"讲师")==0){salary=teaching_hours*60+4000+salary*0.5;}else{salary=teaching_hours*50+3000+salary*0.5;//可怜的助教的工资}}int main()
{ofstream outfile("教职工数据表.docx",ios::app);outfile<<"**********以下为工资管理系统每一次的运行的运行数据**********"<<endl;outfile<<"\t工号\t姓名\t性别\t收入"<<endl;InterFace();//显示选择的界面Select();//进行选择outfile.close();system("pause");return 0;
}void InterFace()
{cout<<"***************欢迎使用工资管理系统***************"<<endl;cout<<"***\t\t1.教师      \t\t***"<<endl;cout<<"***\t\t2.一般职工  \t\t***"<<endl;cout<<"***\t\t3.临时工    \t\t***"<<endl;cout<<"***\t\t4.双肩挑教师\t\t***"<<endl;cout<<"***\t\t0.退出      \t\t***"<<endl;cout<<"请选择:"<<endl;
}void Select()
{int n;while(true){cin>>n;switch(n){case 1:{Teacher t;t.input();t.output();break;}case 2:{Staff s;s.input();s.output();break;}case 3:{Temporary_Workes tw;tw.input();tw.output();break;}case 4:{Staff_Teacher st;st.input();st.output();break;}case 0:{break;}default:{cerr<<"!!输入错误!!"<<endl;system("pause");exit(0);}}if(n==0){break;}cout<<"还请老哥继续上述选择咯"<<endl;}
}void WriteFile(int num,char name[],char sex,double salary)
{ofstream outfile("教职工数据表.docx",ios::app);if(!outfile){cerr<<"open error!!"<<endl;exit(1);}outfile<<"\t"<<num<<"\t"<<name<<"\t"<<sex<<"\t\t"<<salary<<endl;outfile.close();
}

该程序同时运行的结果储存在文件中

萌新一枚,还请多多点赞收藏,谢谢大佬们。

C++上机实验,做一个工资管理系统相关推荐

  1. hive导数据到mysql 自增主键出错_python+mysql做一个图书管理系统?

    开发一个图书管理系统,首先需要对此项目进行一个简单的需求分析: 主要功能包括: 图书信息 图书分类 用户信息 用户借阅统计 管理员 管理员权限 接下来可以进行数据库的设计,在这里我提供一个简单的数据库 ...

  2. 名片管理系统python详解_详解Python做一个名片管理系统

    详解Python做一个名片管理系统 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  详解Python做一个名片管理系统.txt ] (友情提示:右键点上行txt文 ...

  3. python编写一个名片_详解Python做一个名片管理系统

    名片管理系统有两个模块组成:cards_main.py和 cards_tools.py一个是主程序,另一个是封装增删改查函数的被调用程序 代码如下 cards_main.py #! /usr/bin/ ...

  4. 简单用java做一个图书管理系统

    简单用java做一个图书管理系统 首先,我们创建一个View类当做它的视图页 package view;import service.BookService; import service.UserS ...

  5. 用C++做一个通讯录管理系统(手把手教学)

    项目目录 1.系统需求 2.创建项目 2.1 创建项目 2.2 添加文件 3.菜单功能 4.退出功能 5.添加联系人 5.1 设计联系人结构体 5.2 设计通讯录结构体 5.3 main函数中创建通讯 ...

  6. 实现一个工资管理系统

    一.内容 1.题目<小型公司工资管理系统>设计 2.设计说明与要求 (1) 公司主要有5类人员:文秘.技术经理.技术员.销售员.销售经理.要求存储这些人的职工号.姓名.月工资.年龄.性别等 ...

  7. python做数据库管理系统_python+mysql做一个图书管理系统?

    开发一个图书管理系统,首先需要对此项目进行一个简单的需求分析: 主要功能包括:图书信息 图书分类 用户信息 用户借阅统计 管理员 管理员权限 接下来可以进行数据库的设计,在这里我提供一个简单的数据库表 ...

  8. 如何做一个员工管理系统

    员工管理系统 1. 准备工作 先导入html和前端页面 建立两个实体类:Department和Employee Department: package com.dary.sweb.pojo; ​ im ...

  9. 【iot-manager】(1)IOT商业化和未来竞争、淘汰还在继续,需要折腾一个开源IOT系统,参考Rancher开源Octopus:IoT设备管理系统做一个物联网管理系统

    **@TOC 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/126915183 未经博主允许不得转载. 博主CSDN地址是 ...

最新文章

  1. CSS技巧和经验列表
  2. 【杂谈】从学员到参与书籍写作,我在有三AI学习与成长的故事
  3. tensorflow2调用huggingface transformer预训练模型
  4. 笔记本网络计算机和设备不可见,xp电脑不显示无线网络的七种原因和解决方法...
  5. linux安装mysql5.7.19
  6. SQL日常维护的语句
  7. java8 filter return_java8新特性Java 8 Streams filter示例 - Java教程
  8. shiro学习(10):servelet实现权限认证一
  9. 设计干货素材|使用纹理背景的技巧
  10. java cache组件_组件之Cache篇
  11. 【Android 安装包优化】Android 中使用 SVG 图片 ( 批量转换 SVG 格式图片为 Vector Asset 矢量图资源 )
  12. python棋类项目规划一——五子棋游戏策划书——项目一
  13. 笔记本cmd重启计算机的代码,怎么让电脑不断重启(用cmd实现)
  14. VMI - 供应商管理库存
  15. APS的定义是什么?高级计划与排程APS有哪些痛点?
  16. 2023浙江工业大学计算机考研经验贴
  17. veracrypt 创建文件型加密卷
  18. 使用Pr时输出设备没有声音问题
  19. 天阔服务器1620-G15如何装系统,曙光服务器和存储产品与技术介绍.pptx
  20. bootstrap文字,图片

热门文章

  1. IB网卡型号 速率
  2. 乐视超级会员推亲子3.0 Plus,IP驱动新生态?
  3. Maven项目怎样重新下载依赖
  4. 淘宝开放API菜鸟教程——根据卖家昵称获取卖家店铺ID
  5. SmarkClient 导出
  6. 总结:Python列表的切片
  7. 营销型的网站建设哪家做的比较好一点?
  8. 暑期结束为你的新学期立下Flag吧
  9. python+selenium实现京东秒杀脚本
  10. 如何打造一个安全的服务接口