#Java笔记 #程序实现:数据表与简单Java

刚开始学JAVA,从笔记做起!

program 2 数据表与简单Java映射

目的

这实际上是我自己写的第一个Java程序,实现了比较简单的一个想法,还是特别开心的。

《第一行代码 JAVA》的 3.12 数据表与简单Java映射 提到了:“... 数据表与简单Java类的转换操作是开发中的一个基本设计思想 ...”。受此启发,我尝试做出了一个学校(小学)中年级、社团、教师、领导之间的映射关系及相关操作,具有这样的映射关系:

  1. 一个学校有多个年级、多个社团、多个老师;
  2. 每个年级、每个部门都有一个负责人;
  3. 每个老师属于一个领导(年级负责人 / 级长);
  4. 一个老师可以参加多个社团;

1. 年级类

/**
 * 年级情况:年级、级长、年段
 * @author Yuan_hang
 *
 */
public class Grand {
	//属性
	private int grand;
	private Teacher manager;
	private String range;
	public int numOfTeacher;
	public double averSalary;

	//构造方法
	public Grand(){}
	
	public Grand(int grand){
		this();
		this.grand = grand;
		if(grand<3){this.range = "低年段";}
			else if(grand>4){this.range = "高年段";}
			else if(grand==3 || grand==4){this.range = "中年段";}
			else{this.range = "!!错误";}
	}
	
	public Grand(int grand, Teacher manager){
		this(grand);
		this.manager = manager;
	}
	
	public Grand(int grand, Teacher manager,int numOfTeacher,double averSalary){
		this(grand, manager);
		this.numOfTeacher = numOfTeacher;		
		this.averSalary = averSalary;
	}
	
	//方法
	public void setGrand(int grand){this.grand = grand;}
	public int getGrand(){return this.grand;}
	
	public void setManager(Teacher manager){this.manager = manager;}
	public Teacher getManager(){return this.manager;}
	
	public void setRange(String range){this.range = range;}
	public String getRange(){return this.range;}
	
	public void setNumOfTeacher(int numOfTeacher){this.numOfTeacher = numOfTeacher;}
	public int getNumOfTeacher(){return this.numOfTeacher;}
	
	public void setAverSalary(double averSalary){this.averSalary = averSalary;}
	public double getAverSalary(){return this.averSalary / this.numOfTeacher;}
	
	public void getInfo(){
		System.out.print(this.grand + "年级(" + this.range + ")");
		System.out.print(", 级长是" + this.manager.getName());
		System.out.print(", 共" + this.numOfTeacher + "位老师");
		System.out.println(", 平均工资" + String.format("%.2f",this.averSalary / this.numOfTeacher) + "元。");
	}
}

2. 社团类

/**
 * 社团情况:编号、名称、简介、办公室、负责人
 * @author Yuan_hang
 *
 */
public class Club {
	//属性
	private int num;
	private String name;
	private String introdc;
	private int room;
	private Teacher manage;
	public int numOfTeacher;
	
	//构造方法
	public Club(){}
	
	public Club(int num,String name,String introdc,int room){
		this();
		this.num = num;
		this.name = name;
		this.room = room;
		this.introdc = introdc;

	}
	
	public Club(int num,String name,String introdc,int room,Teacher manage,int numOfTeacher){
		this(num,name,introdc,room);
		this.manage = manage;
		this.numOfTeacher = numOfTeacher;
	}
	
	//方法
	public void setNum(int num){this.num = num;}
	public int getNum(){return this.num;}
	
	public void setName(String name){this.name = name;}
	public String getName(){return this.name;}
	
	public void setIntrodc(String introdc){this.introdc = introdc;}
	public String getIntrodc(){return this.introdc;}
	
	public void setRoom(int room){this.room = room;}
	public int getRoom(){return this.room;}
	
	public void setManage(Teacher manage){this.manage = manage;}
	public Teacher getManage(){return this.manage;}
	
	public void setNumOfTeacher(int numOfTeacher){this.numOfTeacher = numOfTeacher;}
	public int getNumOfTeacher(){return this.numOfTeacher;}
	
	public void getInfo(){
		System.out.print("(" + this.num + ")" + this.name );
		System.out.print(", 主要活动是" + this.introdc);
		System.out.print(", 办公室在" + this.room);
		System.out.print(", 负责人是" + this.manage.getName());
		System.out.println(", 参加人数有" + this.numOfTeacher + "人。");
	}
}

3. 老师类

/**
 * each teacher belongs to 一个年级/级长、多个社团
 * each teacher with 工号、姓名、年龄、性别、科目、工资、是否入编、所属社团
 * @author Yuan_hang
 *
 */
public class Teacher {
	// 属性定义
	private int num;  //工号
	private String name;  //姓名
	private Grand grand;  //年级
	private String sex;  //性别
	private String course;  //科目
	private double salary;  //工资
	private boolean isStaff;  //在编
	private Club[] clubs;  //社团
	
	// 构造方法
	public Teacher(){}
	
	public Teacher(int num,String name,Grand grand,String sex,String course,double salary,boolean isStaff,Club[] clubs){
		this();
		this.num = num;  this.name = name; this.grand = grand;
		this.sex = sex; this.course = course; this.salary = salary;
		this.isStaff = isStaff; this.clubs = clubs;
		this.grand.numOfTeacher ++;
		this.grand.averSalary += this.salary;
		for(int x=0; x<this.clubs.length; x++){
			this.clubs[x].numOfTeacher ++;
		}
		
	}
	
	// 方法
	public void setNum(int num){this.num = num;}
	public int getNum(){return this.num;}

	public void setName(String name){this.name = name;}
	public String getName(){return this.name;}
	
	public void setGrand(Grand grand){this.grand = grand;}
	public Grand getGrand(){return this.grand;}
	
	public void setSex(String sex){this.sex = sex;}
	public String getSex(){return this.sex;}
	
	public void setCourse(String course){this.course = course;}
	public String getCourse(){return this.course;}
	
	public void setSalary(double salary){this.salary = salary;}
	public double getSalary(){return this.salary;}
	
	public void setIsStaff(boolean isStaff){this.isStaff = isStaff;}
	public boolean getIsStaff(){return this.isStaff;}
	
	public void setClubs(Club[] clubs){this.clubs = clubs;}
	public Club[] getClubs(){return this.clubs;}
	
	public void getInfo(){
		System.out.print("工号:" + this.num + ", ");
		System.out.print("姓名:" + this.name + ", ");
		System.out.print("年级:" + this.grand.getGrand() + "年级, ");
		System.out.print("性别:" + this.sex + ", ");
		System.out.print("科目:" + this.course + ", ");
		System.out.print("工资:" + String.format("%.2f",this.salary) + ", ");
		
		String isTrue = this.isStaff == true? "是":"否";
		System.out.print("在编:" + isTrue + ", ");
		
		String clubsNames = "";
		for(int x=0; x<clubs.length; x++){
			String temp = this.clubs[x].getName() + "、";
			clubsNames += temp; 
		}
		System.out.println("社团:" + clubsNames.substring(0, clubsNames.length()-2) + "。");
	}
}

4. 学校类以及信息查询、设置

/**
 * a school with teachers/ grands/ clubs
 * @author Yuan_hang
 *
 */
public class School {
	public static void main(String[] args){
		/**
		 * 年级设置
		 */
		Grand g1 = new Grand(1);	Grand g2 = new Grand(2);
		Grand g3 = new Grand(3);	Grand g4 = new Grand(4);
		Grand g5 = new Grand(5);	Grand g6 = new Grand(6);
		
		/**
		 * 社团设置
		 */
		Club c1 = new Club(1,"羽毛球社","打羽毛球",101);
		Club c2 = new Club(2,"合唱社","合唱、高音练习",233);
		Club c3 = new Club(3,"育儿社","交流育儿经验",345);
		Club c4 = new Club(4,"工会","收工会费、发福利",666);
		
		/**
		 * 员工信息
		 */
		Teacher xiaoHong = new Teacher(1234,"小红",g1,"女","语文",5000.0,false,new Club[]{c1,c2});
		Teacher chengLong = new Teacher(4562,"成龙",g4,"男","数学",10000.0,true,new Club[]{c2,c4});
		Teacher chenDaoming = new Teacher(7821,"陈道明",g6,"男","体育",8000.0,true,new Club[]{c2,c3});
		Teacher daMangguo = new Teacher(4532,"大芒果",g4,"女","体育",6000.0,false,new Club[]{c1,c2,c4});
		Teacher xieNa = new Teacher(8135,"谢娜",g5,"女","英语",2500.0,true,new Club[]{c3,c2,c4});
		Teacher wangYuan = new Teacher(7742,"王源",g4,"男","语文",9000.0,false,new Club[]{c1,c4});
		Teacher haoJian = new Teacher(9635,"郝建",g3,"男","数学",7700.0,true,new Club[]{c1,c2,c3,c4});
		Teacher aYa = new Teacher(9314,"阿雅",g2,"女","语文",5600.0,true,new Club[]{c1,c3,c4});
		
		/**
		 * 领导层
		 */
		g1.setManager(xiaoHong);	g2.setManager(aYa);
		g3.setManager(haoJian);	g4.setManager(daMangguo);
		g5.setManager(xieNa);	g6.setManager(chenDaoming);
		c1.setManage(xieNa);	c2.setManage(chengLong);
		c3.setManage(daMangguo);	c4.setManage(wangYuan);
		
		/**
		 * 查看
		 */
		xiaoHong.getInfo();
		System.out.print("\n");
		g4.getInfo();
		System.out.print("\n");
		c4.getInfo();
		System.out.print("\n");
	}
}

5. 输出结果

工号:1234, 姓名:小红, 年级:1年级, 性别:女, 科目:语文, 工资:5000.00, 在编:否, 社团:羽毛球社、合唱。

4年级(中年段), 级长是大芒果, 共3位老师, 平均工资8333.33元。

(4)工会, 主要活动是收工会费、发福利, 办公室在666, 负责人是王源, 参加人数有6人。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值