//接口--输出工资单实例
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();
}
}
输出工资单实例
最新推荐文章于 2024-04-30 14:26:47 发布