/**
* 我写了一个 希望 有用
*
* 如果 哪位高手 有兴趣
* 帮忙 实现 一下 Teacher 类中的 private void checkClassRepeat() 方法 感谢!!
*/
==================================第一个类 TypeValue
package org.wood.teacher;
* 创建 各种系数常量
* @author Administrator
public interface TypeValue {
* 班级系数
* 职称系数
* 助教 系数1
double LEVEL_TYPE_ASISITANT_VALUE = 1.0;
* 理论课重复系数
* 重复课系数
* 非重复课 系数
double UNREPEAT_COURSE_VALUE = 1;
}
==================================第二个类 Class类
* 班级类 包含
* 班级号 classId
* 班级课程类别(courseName):如java,c++,.net或其他
* 班级人数(studentNumber)
* 班级理论课时间(theoryTime)
* 班级实训(实践)课时间(practiseTime)
* 班级是不是重复的 repeat(如果是重复的,计算该班级的工作量时,使用的系数与重复的不一样)
* repeat属性,比较特殊,需要在统计该班的工作量之前,确定该班是否是重复了.
* repeat=true; 重复的
* repeat=false; 班级非重复的
* 核心方法 calculateClassWorkload
* 该方法 用来计算 带此班的老师的工作量,有一个参数,就是老师的职称系数.
public class Class {
private int classId;
// 班级课程类别
private String courseName;
// 班级人数
private int studentNumber;
// 班级理论课时间
private int theoryTime;
// 班级实训(实践)课时间
private int practiseTime;
private boolean repeat;
public Class() {
super();
public Class(int classId, String courseName, int studentNumber,
int theoryTime, int practiseTime) {
this.classId = classId;
this.courseName = courseName;
this.studentNumber = studentNumber;
this.theoryTime = theoryTime;
this.practiseTime = practiseTime;
* 计算班级工作量 参数 为 老师的 职称系数
* @param teacherLevlValue(参数为 该老师的 职称的系数)
* @return
public double calculateClassWorkload(double teacherLevelValue) {
* 判断是否是重复的课程
if (this.repeat) {
System.out.println(this.courseName+" "+this.classId+"班,重复了!");
System.out.println(
this.theoryTime+" * "
+ TypeValue.COURSE_TYPE_THEORY_VALUE+" * "
+getClassTypeStudentNumberValue()+" * "
+teacherLevelValue+" * "
+TypeValue.REPEAT_COURSE_VALUE +"(重复系数) + "
+this.practiseTime+" * "
+ TypeValue.COURSE_TYPE_PRACTISE_VALUE+" * "
+teacherLevelValue);
* 重复的班级 工作量算法
return this.theoryTime
* TypeValue.COURSE_TYPE_THEORY_VALUE
* getClassTypeStudentNumberValue()
* teacherLevelValue
* TypeValue.REPEAT_COURSE_VALUE
+ this.practiseTime
* TypeValue.COURSE_TYPE_PRACTISE_VALUE
* teacherLevelValue;
} else {
// System.out.println(this.classId+"班,非重复!");
+TypeValue.UNREPEAT_COURSE_VALUE +"(非重复系数) + "
* 非重复的班级的 工作量的算法
* TypeValue.UNREPEAT_COURSE_VALUE
* 获取班级 人数系数
private double getClassTypeStudentNumberValue() {
} else if (this.studentNumber = 100) {
return TypeValue.CLASS_TYPE_STUDENT_NUMBER_ABOVE_100_VALUE;
return -1;
public int getClassId() {
return classId;
public void setClassId(int classId) {
public String getCourseName() {
return courseName;
public void setCourseName(String courseName) {
public int getStudentNumber() {
return studentNumber;
public void setStudentNumber(int studentNumber) {
public int getTheoryTime() {
return theoryTime;
public void setTheoryTime(int theoryTime) {
public int getPractiseTime() {
return practiseTime;
public void setPractiseTime(int practiseTime) {
public boolean isRepeat() {
return repeat;
public void setRepeat(boolean repeat) {
this.repeat = repeat;
@Override
public int hashCode() {
int result = 1;
result = prime * result
+ ((courseName == null) ? 0 : courseName.hashCode());
return result;
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
final Class other = (Class) obj;
if (courseName == null) {
if (other.courseName != null)
} else if (!courseName.equals(other.courseName))
==================================第三个类 Teacher类
import java.util.ArrayList;
import java.util.List;
* 教师类 包含教室的 姓名,职称(级别)信息
* 核心方法 计算该教师的工作量(多个班级的工作量的和) calculateWorkload();
public class Teacher {
* 姓名
private String name;
* 职称/级别 助教、讲师、副教授、正教授
private String level;
* 老师 所带领的班级的集合
private ListClass classes = new ArrayListClass();
public Teacher() {
public Teacher(String name, String level) {
this.name = name;
this.level = level;
* addClass(Class clas) 添加 老师带的班级 到 老师带班集合
* @param clas
public void addClass(Class clas) {
this.classes.add(clas);
* 计算教师的工作量(workload)
public double calculateWorkload() {
* 获取教师的级别系数
double levlValue = getTeacherLevlValue();
System.out.println("职称系数:"+levlValue);
* 检测 教师 所带领的 班级
* 如果 有班级是 重复的,将人数最少的班级 的重复属性 赋值为 true
checkClassRepeat();
* 计算 工作量
* 结合 教师的 职称
double sum=getSum(levlValue);
return sum;
private double getSum(double levlValue) {
double sum=0.0;
for(Class c:this.classes){
sum+=c.calculateClassWorkload(levlValue);
System.out.println("SUM:----"+sum);
private void checkClassRepeat() {
* 此方法 没有实现,请高手 实现
* 我的想法是遍历 ListClass classes 集合,比较集合中的对象,
* 如果有对象是相同的(我重写了Class的equals()方法,只要课程名相同,就表示两个班相同)
* 则将 班级人数少的班级的重复 属性 赋值为true(默认为false)----计算班级的工作量是用到 该属性 做判断
* 请高手帮忙!!
* 现在只能 手动地设置 某个班级 为重复的,从而进行计算
* 获取教师的 职称系数方法
* 通过 教师的 职称 确定的 教师的 职称系数
private double getTeacherLevlValue() {
// 助教、讲师、副教授、正教授
if ("助教".equals(this.level)) {
return TypeValue.LEVEL_TYPE_ASISITANT_VALUE;
} else if ("讲师".equals(this.level)) {
return TypeValue.LEVEL_TYPE_DOCENT_VALUE;
} else if ("副教授".equals(this.level)) {
return TypeValue.LEVEL_TYPE_ASSOCIATE_PROFESSOR_VALUE;
} else if ("正教授".equals(this.level)) {
return TypeValue.LEVEL_TYPE_PROFESSOR_VALUE;
* 计算教师的收入
* @param perWorkloadPrice(单价)
public double calculateIncome(double perWorkloadPrice) {
return calculateWorkload()*perWorkloadPrice;
public String getName() {
return name;
public void setName(String name) {
public String getLevel() {
return level;
public void setLevel(String level) {
public ListClass getClasses() {
return classes;
public void setClasses(ListClass classes) {
this.classes = classes;
==================================第四个类 测试类 TestCal类
public class TestCal {
public static void main(String[] args) {
Teacher teacher=new Teacher("张三","讲师");
* 构建 班级1 对象
class01.setRepeat(true);
teacher.addClass(class01);
* 计算工作量
double result=teacher.calculateWorkload();
System.out.println("R:"+result);
* java 1班,重复了!
*实现了Teacher 类中的 private void checkClassRepeat() 方法 就可以
*自动判断 哪一个 班级是重复的
* 但是 现在 我未能实现此方法
* 只能 像测试类中的 那样, 手动地 设置 该班级 是否是重复班级
package com.demo;
private double classNo=0.0;//课时数量
public Teacher(){
public Teacher(double classNo){//构造函数
this.classNo=classNo;
public double courseCompute( ){
return xishu*classNo;
public static void main(String[] string){
System.out.println(teacherOne.courseCompute());//输出结果
System.out.println(teacherTwo.courseCompute());
teacherOne.xishu=1;//修改系数
System.out.println(teacherOne.courseCompute());//重新输出结果
运行结果:
可以借助Baidu Hi示意我
有时间可能完成你所面临的任务
差不多的要求也可能示意我
交易提醒:预付定金是诈骗
以上就是土嘎嘎小编为大家整理的java教师工作量代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!