输出工资单实例

//接口--输出工资单实例
public class Employee5 {
	/*
	 * 接口和类的区别如下:
		●接口中的方法都是公开的抽象方法(public abstract),并且不需要提供public和abstract关键字。
		●无论编程时是否加上"public static final",接口中的属性都是公开静态常量。
		●接口中没有构造方法。
		●类与接口之间的代码复用关系叫实现而不叫继承。实现的是implements
*/
	/**
	 * 要求把若干员工的数据按照表格的方式输出。但员工数据存储在不同的结构中:
	 * 一种是二维字符串数组,每一行代表一个学生的数据;
	 * 另一种是一维Employee类型的数组,每个元素代表一个学生。
             要求为表格写一个适配接口。在该接口中定义输出一个二维表格所需要的所有方法。
             然后给出这个接口的两个不同实现类,分别将这两种不同数据输出在表格中。
	 */
	public String name;//员工姓名
	public int age;//员工年龄
	public String gender;//员性别
	public double salary;//员工薪资
	
	public Employee5(String name, String gender, int age, double salary) {
		this.name=name;
		this.age=age;
		this.gender=gender;
		this.salary=salary;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}
}
interface TableModel{
	public int getRowNumber();//表单的行数
	public int getColNumber();//表单的列数
	public String getValue(int row,int col);//指定的某行某列的值
	public String getColName(int col);//指定列的列名
}

class TableModelA implements TableModel{
	 String [][]data;//定义传入数组data
	 public TableModelA(String[][] data){//定义构造方法
		 this.data=data;
	 }
	 public int getRowNumber(){
		 return data.length-1;
	 }
	public int getColNumber(){
		return data[0].length;
	}
	public String getValue(int row,int col){
		return data[row+1][col];
	}
	public String getColName(int col){
		return data[0][col];
	}
}
class TableModelB implements TableModel{
	private Employee5[] data;//定义员工数组data
	public TableModelB(Employee5[] data){
		this.data=data;
	}
	@Override
	public int getRowNumber() {
		return data.length;
	}
	@Override
	public int getColNumber() {
		return 4;
	}
	@Override
	public String getValue(int row, int col) {
		switch(col){
		case 0:return data[row].getName();
		case 1:return data[row].getGender();
		case 2:return data[row].getAge()+"";
		case 3:return data[row].getSalary()+"";
		default:return null;
		}
	}
	@Override
	public String getColName(int col) {
		switch(col){
		case 0:return "姓名";
		case 1:return "性别";
		case 2:return "年龄";
		case 3:return "薪资";
		default: return null;
		}
	}
}

class Table{//实现了表单类,该类可以根据传入的表单模式生成表单,并输出表单的格式和数据。
	private TableModel model;//定义表格模式
	public Table(TableModel model){
		this.model=model;
	}
	public void print(){
		for(int i=0;i<model.getColNumber();i++)
			System.out.print(model.getColName(i)+"\t|");
		System.out.println();
		for(int i=0;i<model.getRowNumber();i++){
			for(int j=0;j<model.getColNumber();j++)
				System.out.print(model.getValue(i,j)+"\t|");
			System.out.println();
		}
	}
}

class TableTest{
public static void main(String[] args) {
	//创建Employee对象并用一维数组存储
	System.out.println("一维数组输出如下:");
	Employee5 e1=new Employee5("张三","男",24,2500);
	Employee5 e2=new Employee5("李四","男",26,5500);
	Employee5 e3=new Employee5("王五","男",27,5500);
	Employee5 e4=new Employee5("赵六","男",24,3500);
	Employee5 e5=new Employee5("冰冰","女",24,6500);
	Employee5 e6=new Employee5("王七","男",30,9500);
	
	Employee5 []data1={e1,e2,e3,e4,e5,e6};
	
	TableModel model1=new TableModelB(data1);
	Table table1=new Table(model1);
	table1.print();
	System.out.println("\n二维数组输出如下:");
	String[][] data2={{"姓名","性别","年龄","薪资"},
			          {"冰冰","女","27","10000"},
			          {"晴晴","女","28","12000"},
			          {"继科","男","29","15000"},
			          {"成龙","男","30","200000"},
			          {"耀明","男","31","200000"}};
	TableModel model2=new TableModelA(data2);
	Table table2=new Table(model2);
	table2.print();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值