package com.test3;
import java.util.*;
import java.io.*;
/**
* @author qingfeng
* 重要思想:面向对象思想(添加员工管理类)
* 功能:公司职员薪水管理系统
*/
public class SalarySystem { public static void main(String[] args) throws IOException { ClerkManager cm = new ClerkManager();//创建员工管理类 InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr); while(true)
{
//简易菜单
System.out.println("公司职员薪水管理系统");
System.out.println("---------------------------------------");
System.out.println("1.添加新员工");
System.out.println("2.根据工号显示该员工的信息");
System.out.println("3.显示所有员工信息");
System.out.println("4.修改员工的薪水");
System.out.println("5.根据工号删除该员工的信息");
System.out.println("6.根据薪资由低到高排序");
System.out.println("7.统计员工的平均工资、最高工资和最低工资");
System.out.println("---------------------------------------");
System.out.println("请选择序号:"); String no = br.readLine(); if(no.equals("1")){
System.out.println("添加新员工:");
System.out.println("请输入姓名:");
String name = br.readLine(); System.out.println("请输入性别:");
String sex = br.readLine(); System.out.println("请输入年龄:");//如何用InputStreamReader来输入一个int型的数据
Scanner sc = new Scanner(System.in);
int age = sc.nextInt(); System.out.println("请输入工号:");
String clerkNo = br.readLine(); System.out.println("请输入薪资:");
float salary = Float.parseFloat(br.readLine()); Clerk clerk = new Clerk(name, sex, age, clerkNo, salary);//创建员工对象并且调用构造方法初始化
cm.addClerk(clerk);//调用“添加新员工”方法 }else if(no.equals("2")){
System.out.println("请输入员工号:");
String clerkNo = br.readLine();//接收输入的工号
cm.showInfo(clerkNo); }else if(no.equals("3")){
System.out.println("显示所有员工信息:");
cm.showAllInfo(); }else if(no.equals("4")){
System.out.println("修改员工的薪水:");
System.out.println("输入员工工号:");
String clerkNo = br.readLine();//接收输入的工号
System.out.println("修改员工薪资:");
String sal = br.readLine();
float salary = Float.parseFloat(sal);
cm.modifySal(clerkNo, salary); }else if(no.equals("5")){
System.out.println("根据工号删除该员工的信息:");
System.out.println("输入员工工号:");
String clerkNo = br.readLine();//接收输入的工号
cm.deleteInfo(clerkNo); }else if(no.equals("6")){
System.out.println("根据薪资由低到高排序");
cm.Qsort(0, cm.al.size()-1);
cm.showAllInfo();
}else if(no.equals("7")){
System.out.println("统计员工的平均工资、最高工资和最低工资:");
cm.calSalary();
}else if(no.equals("8")){
System.exit(0);
}else{
System.out.println("输入不合法!");
}
} }
}
//员工管理类(非常重要!面向对象)
class ClerkManager
{
//成员属性
ArrayList al = null; //构造方法:初始化 不断创造新对象
public ClerkManager()
{
al = new ArrayList();//注意写法!!
} //成员方法
//添加新员工!
public void addClerk(Clerk clerk) //注意用增加的对象的引用作为参数!
{
al.add(clerk); //ArrayList添加方法用add()方法!
} //根据工号显示该员工的信息
public void showInfo(String no)
{
int flag = 0;
for(int i=0; i<al.size(); i++)
{
Clerk clerk= (Clerk)al.get(i);
if(clerk.getNo().equals(no))
{
flag = 1;
System.out.println("clerk"+(i+1)+"的信息是:");
System.out.print("姓名:"+clerk.getName());
System.out.print(" 性别:"+clerk.getSex());
System.out.print(" 年龄:"+clerk.getAge());
System.out.print(" 工号:"+clerk.getNo());
System.out.println(" 薪资:"+clerk.getSalary());
}
}
if(flag == 0)
System.out.println("找不到所查工号!");
} //显示所有员工信息
public void showAllInfo()
{
for(int i=0; i<al.size(); i++)
{
Clerk clerk= (Clerk)al.get(i);
System.out.println("clerk"+(i+1)+"的信息是:"); System.out.print("姓名:"+clerk.getName());
System.out.print(" 性别:"+clerk.getSex());
System.out.print(" 年龄:"+clerk.getAge());
System.out.print(" 工号:"+clerk.getNo());
System.out.println(" 薪资:"+clerk.getSalary());
}
} //修改员工的薪水
public void modifySal(String no, float sal) //员工编号 最新的薪资
{
int flag = 0;
for(int i=0; i<al.size(); i++)
{
Clerk clerk= (Clerk)al.get(i);
if(clerk.getNo().equals(no))
{
flag = 1;
clerk.setSalary(sal);
}
}
if(flag == 0)
System.out.println("找不到所查工号!");
} //根据工号删除该员工的信息
public void deleteInfo(String no)
{
int flag = 0;
for(int i=0; i<al.size(); i++)
{
Clerk clerk= (Clerk)al.get(i);
if(clerk.getNo().equals(no))
{
flag = 1;
al.remove(i);
}
}
if(flag == 0)
System.out.println("找不到所查工号!");
} //根据薪资由低到高排序
public void Qsort(int left, int right)
{
int i = left;
int j = right; if(i < j)//递归结束条件
{
Clerk clerk = (Clerk)al.get(left);
float key = clerk.getSalary();
while(i<j)//一趟快速排序
{
while(i<j && ((Clerk)al.get(j)).getSalary() >= key)
{
j--;
}
if(i<j)
{
al.set(i,al.get(j));
i++;
}
while(i<j && ((Clerk)al.get(i)).getSalary() <= key)
{
i++;
}
if(i<j)
{
al.set(j, al.get(i));
}
}
al.set(i, clerk);
Qsort(left, i-1);
Qsort(i+1, right);
}
} //统计员工的平均工资、最高工资和最低工资
public void calSalary()
{
float totalSal = 0;
float minSal = ((Clerk)al.get(0)).getSalary();
float maxSal = ((Clerk)al.get(0)).getSalary(); for(int i=0; i<al.size(); i++)
{
Clerk clerk = (Clerk)al.get(i);
totalSal += clerk.getSalary();
if(minSal > clerk.getSalary())
{
minSal = clerk.getSalary();
}
if(maxSal < clerk.getSalary())
{
maxSal = clerk.getSalary();
}
}
System.out.println(al.size()+"个人的平均薪资为:" + totalSal/al.size());
System.out.println(al.size()+"个人的最低薪资为:"+minSal);
System.out.println(al.size()+"个人的最高薪资为:"+maxSal);
}
}
//员工类
class Clerk
{
private String name;
private String sex;
private int age;
private String no;
private float salary; public Clerk(String name, String sex, int age, String no, float salary)
{
this.name = name;
this.sex = sex;
this.age = age;
this.no = no;
this.salary = salary;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getNo() {
return no;
} public void setNo(String no) {
this.no = no;
} public float getSalary() {
return salary;
} public void setSalary(float salary) {
this.salary = salary;
}
}

薪资管理系统(Java面向对象思想)的更多相关文章

  1. 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图

    面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...

  2. JAVA面向对象思想理解分析

    1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...

  3. java面向对象思想2

    1.主函数是一类特殊的函数,作为程序入口,可被虚拟机调用.主函数格式是固定的.public:函数访问权限最大.static:代表函数随着类的加载已经存在.void:主函数没有具体返回值.main:不是 ...

  4. java面向对象思想1

    1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...

  5. Java面向对象思想解决猜拳问题

    第一个面向对象的程序: 一个控制台猜拳小游戏: 第一步选择角色: 第二部选择剪刀,石头,布,与电脑进行PK: 第三部选择继续或者选择结束; 结束显示比赛的局数,以及各自赢得的分数: 设计思路 分析问题 ...

  6. java面向对象思想之封装

    一.什么是封装 菜鸟教程对封装的解释是"在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装.隐藏起来的方法.".简单来说就 ...

  7. 《Head First Java》读书笔记(2) - Java面向对象思想

    1.了解继承 对象继承实际上就是一种"is - a"的关系,如上图的"PantherMan is a SuperHero?",是,那么便属于继承的理解. 继承能 ...

  8. JAVA面向对象思想

    1.面向对象的基本特征     面向对象具有三个基本特征:封装.多态.继承.      1)封装             封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能. ...

  9. 浅谈Java面向对象思想

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

随机推荐

  1. java -cp ../../DESUtil/ Hello,用-cp指定classpath

    运行hello.class 文件 怎么用 java +路径 就是不在class目录下运行 怎么做??? 我想要的是 java 直接去运行某个路径下的class文件 不想到它的目录那里再java hel ...

  2. Android中Activity的android:windowSoftInputMode属性

    转载 https://blog.csdn.net/qiutiandepaomo/article/details/84028558 windowSoftInputMode属性主要是用来设置窗口软键盘的交 ...

  3. netbeans性能分析文件保存位置

    C:\Users\Administrator\AppData\Roaming\NetBeans\8.2\config\HTTPMonitor 分析完,记得把文件删除,不然系统盘要满了

  4. SpringCloud-微服务的注册与发现Eureka

    一.SpringCloud简介 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均 ...

  5. DLedger —基于 raft 协议的 commitlog 存储库

    “点击获取上云帮助文档” 尊敬的阿里云用户: 您好!为方便您试用开源 RocketMQ 客户端访问阿里云MQ,我们申请了专门的优惠券,优惠券可以直接抵扣金额.请填写下您公司账号信息,点击上图,了解更多 ...

  6. Django静态文件以及模板文件的配置 jQuery v1.12.4

    1.配置模板的路径 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os. ...

  7. toString方法和valueof()方法的区别

    JavaScript引用类型之Array数组的toString()和valueof()方法的区别   一.转换方法 1.在JavaScript中几乎所有对象都具有toLocaleString().to ...

  8. SVN failed: 405 Method Not Allowed

    SVN update 时,错误:PROPFIND request on '/svn/xxxx' failed: 405 Method Not Allowed. 解决办法如下: 第一步:查看SVN服务器 ...

  9. C++ int与string的互转

    int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释.缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释.8进制 ...

  10. 使用帝国备份王软件提示 Parse error: syntax error, unexpected end of file

    使用帝国备份王软件提示 Parse error: syntax error, unexpected end of file时, 可以尝试一下方法: 1.php.ini要把short_open_tag ...