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. 8天入门wpf—— 第四天 模板

    今天说下wpf中的模板,前面一篇中我们讲到了style,但是style所能做的仅仅是在现有控件的基础上进行修修补补,但是如果我们想彻底颠覆控件样式,那么我们就必须使用这一篇所说的模板. 老外写书都喜欢 ...

  2. php解决高并发(文件锁)

    文件锁分为两种方式: [一].阻塞模式:(如果其他进程已经加锁文件,当前进程会一直等其他进程解锁文件后继续执行) <?php //连接数据库 $con=mysqli_connect(" ...

  3. cvc-elt.1: 找不到元素 'beans' 的声明。springmvc netbeans maven

    搭建最基本的框架,出现问题,提示cvc-elt.1: 找不到元素 'beans' 的声明. HTTP Status 500 - Servlet.init() for servlet spring th ...

  4. jS生成二叉树,二叉树的遍历,查找以及插入

    js递归,二叉树的操作 //递归算法n次幂 function foo(n) { if (n == 1) { return 1; } else { return n * foo(n - 1); } } ...

  5. Oracle时间一串数字转为日期格式

    一.前台处理 js中接收到后台返回的json字符串中的日期类型的字段都变成了一串数字,例如:1500341149000.所以我们需要将这个串格式化形如:2017-07-18 09:25:49. 1.首 ...

  6. UvaLive1347

    Programming contests became so popular in the year 2397 that the governor of New Earck — the largest ...

  7. 洛谷P1147 连续自然数和 [2017年6月计划 数论01]

    P1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以 ...

  8. git pull 总提示让输入merge 信息

    在生产环境拉去代码的时候,总是出现了 .git/MERGE_MSG,很烦. 虽然每次可以通过输入 :q 命令,取消,然后完成拉取.但是这样就很影响效率.解决办法一: 欺骗自己法只要我没看见这个问题,这 ...

  9. ubuntu上用源码进行一键安装mysql

      首先卸载原有的mysql: 首先查看自己的mysql有哪些依赖 #dpkg --list|grep mysql 先卸载 #sudo apt-get remove mysql-common #sud ...

  10. Chrome进行多分辨率测试

    在Web开发中,经常需要在不同的浏览器分辨率下进行测试,以确认页面是否可以适应不同的分辨率. 下载Resolution Test扩展程序 下载地址:http://pan.baidu.com/s/1gf ...