赞
踩
嘻嘻!又来更新博客啦!我会在代码中做详细注释给大家。这里先说下这第一种方法的思路:主题思路,是创建一个二维数组用来存数。如:a[?][5],因为二维数组的第二维是固定的5个数,所以可以确定。第一维可以根据大家要存多少数来自行决定!然后根据这个二维数组对数据进行增删改查。
- package 员工管理系统;
-
- public abstract class Employee { //创建员工父类
- String ID;
- String name;
- String position;
- int holiday;
- int salary;
- abstract double sumSalary(int salary,int holiday);//因为每个不同岗位的员工的工资结算方法不同,所以定义为抽象方法,自然员工父类也变成抽象类
- //abstract double display();
- }
- package 员工管理系统;
-
- public class CommonEmployee extends Employee { //创建普通员工类,里面实现普通员工的工资结算方法
-
- @Override
- double sumSalary(int salary, int holiday) {
- // TODO Auto-generated method stub
- return (salary+salary*0.1+salary*0.5+200)-(salary+salary*0.1+salary*0.5+200)/30*holiday;
- }
-
- }
- package 员工管理系统;
-
- public class Director extends Employee {// <pre name="code" class="java">创建经理员工类,里面实现普通员工的工资结算方法
@Overridedouble sumSalary(int salary, int holiday) {// TODO Auto-generated method stubreturn (salary+salary*0.08+salary*0.3+2000+3000)-(salary+salary*0.08+salary*0.3+2000+3000)/30*holiday;}}
- package 员工管理系统;
-
- public class Manager extends Employee {//<pre name="code" class="java">创建董事长员工类,里面实现普通员工的工资结算方法
@Overridedouble sumSalary(int salary, int holiday) {// TODO Auto-generated method stubreturn (salary+salary*0.2+salary*0.5+500)-(salary+salary*0.2+salary*0.5+500)/30*holiday;}}
- package 员工管理系统;
-
- import java.util.Scanner;
-
- public class TestEmd {
-
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- CommonEmployee common=new CommonEmployee();//先得到各个员工类的对象,下面好进行操作
- Manager manager=new Manager();
- Director director=new Director();
- //Fun fun=new Fun();
- String a[][]=new String[10][5]; //这里就是我定义的二维数组,用来存放数值
- String b[][]=new String[10][5];
- int arr[]=new int[2];
- int k=-1;
- double o=0;
- String q[]={"编号:","姓名:","职务:","请假天数:","工资:"};
- d:for(int s=1;s>0;){
- p:while(true){
- int v=0;
- System.out.println("|---------------|");//进行业务的选择
- System.out.println("|-----1 增加-----|");
- System.out.println("|-----2 删除-----|");
- System.out.println("|-----3 修改-----|");
- System.out.println("|-----4 查询-----|");
- System.out.println("|-----0 退出-----|");
- System.out.println("|---------------|");
- System.out.println("|请选择业务!");
- Scanner sc=new Scanner(System.in);
- int s0=sc.nextInt();
- switch(s0){ //这里判断我用的是switch方法,不过本人还是喜欢用if判断,各人习惯不同吧。
- case 1:k++;
- arr=add(a,k);
- for(int i=0;i<=k;i++){
-
-
- // int x=(Integer.parseInt(b[i][4].trim()));
- // int x = Integer.valueOf(b[i][4]).intValue();
- //int x1=(Integer.parseInt(b[i][3]));
-
- if(a[i][2].equals("普通员工")){
- o=common.sumSalary(arr[0],arr[1]);
- o=Math.round(o);
- }
- if(a[i][2].equals("经理")){
- o=manager.sumSalary(arr[0],arr[1]);
- o=Math.round(o);
- }
- if(a[i][2].equals("董事长")){
- o=director.sumSalary(arr[0],arr[1]);
- o=Math.round(o);
- }
- a[i][4]=" "+o;
- }
- System.out.println("增加数据成功");
- //for(int i=0;i<=k;i++){
- for(int j=0;j<5;j++){
- System.out.print(q[j]+a[k][j]+" ");
- //}
-
- }
-
- break p;
- case 2: v=delete(q, a, k);
- if(v==0)
- System.out.println("无信息");
- else
- k--;
- break p;
- case 3: v=amend(q, a,k);
- /*arr=add(a,k);
- for(int i=0;i<=k;i++){
- if(a[i][2].equals("普通员工")){
- o=common.sumSalary(arr[0],arr[1]); 这里就是把输入的基本工资,通过调用各个对象特有的工资结算方法,来算出然后覆盖到原先基本工资suo
- o=Math.round(o);
- }
- if(a[i][2].equals("经理")){
- o=manager.sumSalary(arr[0],arr[1]);
- o=Math.round(o);
- }
- if(a[i][2].equals("董事长")){
- o=director.sumSalary(arr[0],arr[1]);
- o=Math.round(o);
- }
- a[i][4]=" "+o;
- }
- System.out.println("修改成功");*/
- if(v==0)
- System.out.println("没有找到匹配项");//这里也是设计一个变量的形式,来判断输出是否有信息
- break p;
-
- case 4:inquire(q, a, k);
- break p;
- case 0:System.out.println("退出系统");
- break d;
- }
- }
- System.out.println();
- }
- }
-
- public static int[] add(String a[][],int t){ //实现增加方法
- int arr[]=new int[2];
- System.out.println("请输入员工编号");
- Scanner sc1=new Scanner(System.in);
- String s1=sc1.next();
- System.out.println("请输入员工姓名");
- String s2=sc1.next();
- System.out.println("请输入员工职务(普通员工,经理,董事长)");
- String s3=sc1.next();
- System.out.println("请输入员工请假天数");
- int s4=sc1.nextInt();
- System.out.println("请输入员工基本工资");
- int s5=sc1.nextInt();
- String s6=""+s5;
- String s7=""+s4;
- arr[0]=s5;
- arr[1]=s4;
- {
- a[t][0]=s1; //我前面是把k传给了t,初值为-1,所以我在调用前k++了,大家可以翻上去看看哦。
- a[t][1]=s2; //这里就实现a[0][?]赋值
- a[t][2]=s3;
- a[t][3]=s7;
- a[t][4]=s6;
- }
- return arr;
-
-
- }
- public static int delete(String p[],String a[][],int t){
- int v=0;
- System.out.println("请输入要删除的员工姓名");
- Scanner sc1 = new Scanner(System.in);
- String name = sc1.next();
- int i; //因为我在函数中for循环太多次,不好判断是否满足if条件,所以这里设个变量,来记录,如果变量的值改变,说明是数组中是有我要删除的值,否则就可以待会在main中输出无要删除的信息。
- for(i=0;i<=t;i++){
- if(a[i][1].equals(name)){ /要删除的话,我要先查找里面是否有要删除的元素,所以这里做了个if判断
- for(int r=0;r<5;r++){
- System.out.print(p[r]+a[i][r]+" ");
- }
-
-
- for(int i1=0;i1<=t;i1++){
- for(int j=0;j<5;j++){
- if(i1==i&&i<t){
- v++;
-
- a[i1][j]=a[i1+1][j];//这里是删除的核心代码,数组删除就是要把该位删除,后面下标往前移一位。这里我先判断下,要删除的元素,是否是数组中的最后一个元素,如果是的话,就可以直接删除,不需要后面的进行移位,否则进行删除再移位。
- a[i1+1][j]=null;
- }
- if(i1==i&&i==t)
- v++;
- a[i][j]=null;
- }
- }
- System.out.println("删除成功");
- break;
- }
- //if(!(a[i][1].equals(name))){
-
- // break;
- //}
- }
- //System.out.println();
-
- return v;
- }
-
- public static int amend(String p[],String a[][],int t){ //这里是实现修改,我偷了下懒,修改直接调用的删除,增加方法,来达到修改的目的!这难道就是传说中的懒人的智慧吗?哈哈哈
- int m=0;
- CommonEmployee common=new CommonEmployee();
- Manager manager=new Manager();
- Director director=new Director();
- System.out.println("请输入要修改的姓名");
- Scanner sc2 = new Scanner(System.in);
- String name1 = sc2.next();
- int i;
- for(i=0;i<=t;i++){
- if(a[i][1].equals(name1)){
- for(int r=0;r<5;r++){
- System.out.print(p[r]+a[i][r]+" ");
- }
- for(int i1=0;i1<=t;i1++){
- for(int j=0;j<5;j++){
- if(i1==i&&i<t){
- /*for(int i2=0;i2<=i1;i2++){
- a[i2][]
- }*/
- m++;
- a[i1][j]=a[i1+1][j];
- a[i1+1][j]=null;
- }
- if(i1==i&&i==t)
- m++;
- a[i][j]=null;
- //b[i1][j]=a[i1][j];
- //System.out.println("删除成功");
- }
- }
- System.out.println();
- System.out.println("请重新输入信息");
- double o=0;
- int arr[]=new int[2];
- add(a,t);
- m++;
- for(int i1=0;i1<=t;i1++){
- if(a[i][2].equals("普通员工")){
- o=common.sumSalary(arr[0],arr[1]);
- o=Math.round(o);
- }
- if(a[i][2].equals("经理")){
- o=manager.sumSalary(arr[0],arr[1]);
- o=Math.round(o);
- }
- if(a[i][2].equals("董事长")){
- o=director.sumSalary(arr[0],arr[1]);
- o=Math.round(o);
- }
- a[i][4]=" "+o;
- }
- System.out.println("修改成功");
-
-
- }
-
-
-
- }
- //System.out.println("修改成功");
- return m;
- }
- public static void inquire(String p[],String a[][],int t){ //查询很简单,可以全部遍历一遍,全部输出查询,也可以像我这样,先取得要查询的name
- int y=0; // 然后和a[?][1]进行比较,因为第二维的下标1的位置就是存的保存后的各个数据的name
- System.out.println("请输入要查询的名字");
- Scanner sc3 = new Scanner(System.in);
- String name1 = sc3.next();
- for(int i=0;i<=t;i++){
- if(a[i][1].equals(name1)){
- for(int r=0;r<5;r++){
- y++;
- System.out.print(p[r]+a[i][r]+" ");
- }
- System.out.println();
- }
- }
- if(y==0){
- System.out.println("无信息");
- }
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。