[关闭]
@aymax 2016-09-25T10:16:29.000000Z 字数 2948 阅读 1372

第一次 java 作业

java作业


班级:计算机科学与技术 5 班
学号:3115005061
姓名:李文杰


题目

  1. 定义一个Employee(雇员)类
    1) 三个属性:雇员姓名(name,String),薪水(salary,double),开始雇佣时间(hireDay,Date)
    2) 一个构造方法: 带参数,初始化各个属性,特别要求带有年月日的参数,并利用GregorianCalendar日历类生成日期并转化成对应的Date类的日期.
    对于每个属性添加一个set和get方法(建议使用Eclipse的Refactor中的Encapsultion Fields);
    3) 一个实现增长薪水的的方法raiseSalary,传递一个double类型的薪水增长率;
    4)一个Employee类的数组:生成三个雇员类的对象填充到数组中.
    --------------------------
  2. 设计3个类,分别是学生类Student,本科生类Undergraduate,研究生类Postgraduate。
    1) 其中Student类是一个抽象类,它包含一个学生的基本信息如姓名、平均成绩等,及一个计算课程成绩等级的抽象方法。
    2) 类Undergraduate和Postgraduate是其子类,它们计算课程成绩等级的方法有所不同(自己设计)。
    3) 设计一个学生数组,既能放本科生对象又能放研究生对象。编写测试类测试以上功能。

程序代码

( 三个java文件在同一包内 )

Main.java

  1. import java.util.Date;
  2. public class Main {
  3. public static void main(String[] args) {
  4. // 学生测试
  5. Student[] stuArr = new Student[5];
  6. stuArr[0] = new Undergraduate("花花", 88.5);
  7. stuArr[1] = new Undergraduate("木子", 99.8);
  8. stuArr[2] = new Undergraduate("聪神", 59.98);
  9. stuArr[3] = new Postgraduate("白白", 75);
  10. stuArr[4] = new Postgraduate("诗诗", 100);
  11. for (Student stu : stuArr) {
  12. System.out.println(stu.getName() + "的评级为 " + stu.sortMarkLevel());
  13. }
  14. // 雇员测试
  15. Employee shishi = new Employee("shishi", 8800, new Date());
  16. Employee muzi = new Employee("muzi", 8000, new Date());
  17. Employee haha = new Employee("haha", 2000, new Date());
  18. Employee[] emps = new Employee[3];
  19. emps[0] = shishi;
  20. emps[1] = muzi;
  21. emps[2] = haha;
  22. for (Employee emp : emps) {
  23. System.out.println(emp);
  24. }
  25. }
  26. }

Student.java

  1. //定义抽象类 -- 学生
  2. abstract class Student {
  3. private String name;
  4. private double avgMark;
  5. public abstract String sortMarkLevel();
  6. public String getName() {
  7. return name;
  8. }
  9. public void setName(String name) {
  10. this.name = name;
  11. }
  12. public double getAvgMark() {
  13. return avgMark;
  14. }
  15. public void setAvgMark(double avgMark) {
  16. this.avgMark = avgMark;
  17. }
  18. }
  19. //定义本科生
  20. class Undergraduate extends Student {
  21. Undergraduate(String name, double avgMark) {
  22. this.setName(name);
  23. this.setAvgMark(avgMark);
  24. }
  25. public String sortMarkLevel() {
  26. String level;
  27. if(this.getAvgMark() > 90) {
  28. level = "A";
  29. } else if(this.getAvgMark() > 80) {
  30. level = "B";
  31. } else if(this.getAvgMark() > 70) {
  32. level = "C";
  33. } else {
  34. level = "D";
  35. }
  36. return level;
  37. }
  38. }
  39. //定义研究生
  40. class Postgraduate extends Student {
  41. Postgraduate(String name, double avgMark) {
  42. this.setName(name);
  43. this.setAvgMark(avgMark);
  44. }
  45. public String sortMarkLevel() {
  46. String level;
  47. if (this.getAvgMark() > 85) {
  48. level = "A";
  49. } else if(this.getAvgMark() > 60) {
  50. level = "B";
  51. } else {
  52. level = "C";
  53. }
  54. return level;
  55. }
  56. }

Employee.java

  1. import java.util.Date;
  2. public class Employee {
  3. private String name;
  4. private double salary;
  5. private Date hireDay;
  6. Employee(String name, double salary, Date hireDay) {
  7. this.setName(name);
  8. this.setSalary(salary);
  9. this.setHireDay(hireDay);
  10. }
  11. public void raiseSalary(double rate) {
  12. this.setSalary(this.getSalary() * (1 + rate));
  13. }
  14. public String toString() {
  15. return "姓名:" + this.getName() + " 工资:" + this.getSalary() +
  16. " 雇佣日期:" + this.getHireDay().toLocaleString();
  17. }
  18. double getSalary() {
  19. return salary;
  20. }
  21. void setSalary(double salary) {
  22. this.salary = salary;
  23. }
  24. String getName() {
  25. return name;
  26. }
  27. void setName(String name) {
  28. this.name = name;
  29. }
  30. Date getHireDay() {
  31. return hireDay;
  32. }
  33. void setHireDay(Date hireDay) {
  34. this.hireDay = hireDay;
  35. }
  36. }

程序结果

  1. 花花的评级为 B
  2. 木子的评级为 A
  3. 聪神的评级为 D
  4. 白白的评级为 B
  5. 诗诗的评级为 A
  6. 姓名:shishi 工资:8800.0 雇佣日期:2016-9-21 18:27:15
  7. 姓名:muzi 工资:8000.0 雇佣日期:2016-9-21 18:27:15
  8. 姓名:haha 工资:2000.0 雇佣日期:2016-9-21 18:27:15
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注