まず、タスクの簡単な説明
1 、達成するためのJava クイックソートのバージョンを。
2 、学生と教師データ入力と表示プログラムを書き、生徒は教師はデータ番号、名前、役職や部署を持って、データ番号、名前、番号およびパフォーマンスのクラスを持っています。要求された数、カテゴリとして設計された名前の入力と表示人、操作クラスなどと生徒データの学生と操作の教師データのクラスの先生の基底クラス。
3 、設計してください3 クラス、各学生のクラスの学生、学部クラスUndergaduate、大学院のクラスの大学院、学生のクラスは抽象クラスであり、いくつかの基本的な学生の名前などの情報はもちろん、コースの成績や他の学びを含み、そして学部授業と大学院がある学生のクラスのサブクラスで、それらの間の主な違いは、コースの学年レベルを算出する方法で異なっている、より高い基準の大学院生よりも標準の学部。学部と大学院の両方の学生でクラスを仮定し、プログラム統計クラスの生徒の学力レベルを書き込み、表示してください。この問題の鍵は、学生の配列設計することで、両方の学部ストアオブジェクトを、だけでなく、保存された大学院オブジェクト。
第二に、問題と解決策
1は、アルゴリズムのアイデア:パーティションの考えに基づき、バブルソートが改善されています。(選択された基準点は、後で選択された方法を説明するために、クイックソートの効率に影響を与える可能性がある)、配列内の最初の基準点を選択し、それぞれ、その後、走査アレイからアレイの両端は、(二インジケータを提供 LOは、開始位置を指しHI 端を指し)基準点の要素の値未満である場合、交換、最初のスタートの後半は、LO とHI 位置の値を、第2掃引の前半が起動すると、見つかった値は、要素の基準点よりも大きい場合、交換LO 及びHI 位置の値を、等サイクルまでLO> = HI、及びに基準点のその値HI この位置。最初のソートは完了です。再帰的、それぞれ前方および後方半分はソート後ときに、両方の規則配列の電流と第2の半体が自然に命じました。
注文方法:
出力:
2、
Personクラス:
1 public class person { 2 String name; 3 String number; 4 5 person(){ } 6 person(String number, String name){ 7 this.number = number; 8 this.name = name; 9 } 10 public void setNumber(String n){ 11 number = n; 12 } 13 public String getNumber(){ 14 return number; 15 } 16 public void setName(String c){ 17 name = c; 18 } 19 public String getName(){ 20 return name; 21 } 22 public void input(){ 23 Scanner sc = new Scanner(System.in); 24 System.out.println("Please input the name:"); 25 name = sc.nextLine(); 26 System.out.println("Please input the number:"); 27 number = sc.nextLine(); 28 } 29 public void showInfo(){ 30 System.out.println("The number is:" + getNumber() + ", name is:" + getName()); 31 } 32 }
Teacher类:
1 class Teacher extends person{ 2 String title; //职称 3 String dept; //部门 4 Teacher(){ 5 super(); 6 } 7 Teacher(String number, String name, String title, String dept){ 8 super(number, name); 9 this.title = title; 10 this.dept = dept; 11 } 12 public void setTitle(String t){ 13 title = t; 14 } 15 public String getTitle(){ 16 return title; 17 } 18 public void setDept(String d){ 19 dept = d; 20 } 21 public String getDept() { 22 return dept; 23 } 24 //子类重载父类方法 25 public void input(){ 26 super.input(); 27 System.out.println("Please input the title:"); 28 Scanner sc = new Scanner(System.in); 29 setTitle(sc.nextLine()); 30 //title = sc.nextLine(); 31 System.out.println("Please input the dept:"); 32 dept = sc.nextLine(); 33 } 34 public void showInfo(){ 35 super.showInfo(); 36 System.out.println("The teacher's title is:" + getTitle() + ", department is:" + getDept()); 37 } 38 }
Student类:
1 class Student extends person{ 2 String classnumber; //班号 3 int grade; //成绩 4 Student(){ 5 super(); 6 } 7 Student(String number, String name, String classnumber, int grade){ 8 super(number, name); 9 this.classnumber = classnumber; 10 this.grade = grade; 11 } 12 public void setClassnumber(String c){ 13 classnumber = c; 14 } 15 public String getClassnumber(){ 16 return classnumber; 17 } 18 public void setGrade(int g){ 19 grade = g; 20 } 21 public int getGrade() { 22 return grade; 23 } 24 //子类重载父类方法 25 public void input(){ 26 super.input(); 27 System.out.println("Please input the classnumber:"); 28 Scanner sc = new Scanner(System.in); 29 setClassnumber(sc.nextLine()); 30 //classnumber = sc.nextLine(); 31 System.out.println("Please input the grade:"); 32 grade = sc.nextInt(); 33 } 34 public void showInfo(){ 35 super.showInfo(); 36 System.out.println("The student's classnumber is:" + getClassnumber() + ", grade is:" + getGrade()); 37 } 38 }
输出结果:
3、
对象数组:
1 Student[] students = new Student[5];
Student类:
1 public abstract class Student 2 { 3 String name; 4 String type; 5 int courseScore; 6 String courseGrade; 7 8 public Student(String name) 9 { 10 this.name = name; 11 courseGrade=""; 12 } 13 14 public abstract void calculateGrade(); 15 16 public String getName() 17 { 18 return name; 19 } 20 21 public String getType() 22 { 23 return type; 24 } 25 26 public String getCourseGrade() 27 { 28 return courseGrade; 29 } 30 31 public int getCourseScore() 32 { 33 return courseScore; 34 } 35 36 public void setName(String name) 37 { 38 this.name = name; 39 } 40 41 public void setType(String type) 42 { 43 this.type = type; 44 } 45 46 public void setCourseScore(int courseScore) 47 { 48 this.courseScore = courseScore; 49 } 50 51 }
本科生类:
1 class Undergraduate extends Student 2 { 3 public Undergraduate(String name, int courseScore) 4 { 5 super(name); 6 type = "本科生"; 7 this.courseScore = courseScore; 8 } 9 10 public void calculateGrade() 11 { 12 if (courseScore >= 80 && courseScore < 100) courseGrade = "优秀"; 13 else if (courseScore >= 70 && courseScore < 80) courseGrade = "良好"; 14 else if (courseScore >= 60 && courseScore < 70) courseGrade = "一般"; 15 else if (courseScore >= 50 && courseScore < 60) courseGrade = "及格"; 16 else courseGrade = "不及格"; 17 18 } 19 }
研究生类:
1 class Postgraduate extends Student 2 { 3 public Postgraduate(String name, int courseScore) 4 { 5 super(name); 6 type = "研究生" ; 7 this.courseScore = courseScore; 8 } 9 public void calculateGrade() 10 { 11 if (courseScore >= 90 && courseScore < 100) courseGrade = "优秀"; 12 else if (courseScore >= 80 && courseScore < 90) courseGrade = "良好"; 13 else if (courseScore >= 70 && courseScore < 80) courseGrade = "一般"; 14 else if (courseScore >= 60 && courseScore < 70) courseGrade = "及格"; 15 else courseGrade = "不及格"; 16 17 } 18 } 19
成绩计算类:
1 public class Polymorphism 2 { 3 int total = 0; 4 double average; 5 6 public void showInfo(){ 7 Student[] students = new Student[5]; 8 9 students[0] = new Undergraduate("ABC", 95); 10 students[1] = new Undergraduate("DEF", 85); 11 students[2] = new Postgraduate("GHI", 75); 12 students[3] = new Undergraduate("JKL", 65); 13 students[4] = new Postgraduate("MNO", 55); 14 for (int i=0; i<5; i++) 15 { 16 total += students[i].courseScore; 17 students[i].calculateGrade(); 18 } 19 average = total / 5; 20 System.out.println("姓名" + " 类型" +" 成绩"); 21 System.out.println("-----------------------"); 22 23 for (int i=0; i<5; i++) 24 { 25 System.out.println(students[i].getName( )+" "+students[i].getType( )+" "+students[i].getCourseGrade( )); 26 } 27 28 //Student st = new Student("李明"); 29 System.out.println("平均成绩:" + average); 30 System.out.println(); 31 for(int i=0; i<5; i++) 32 { 33 if(students[i] instanceof Undergraduate ) 34 { 35 System.out.println(students[i].getName()+"是本科生"); 36 } 37 else 38 { 39 System.out.println(students[i].getName()+"是研究生"); 40 } 41 } 42 } 43 public static void main(String[] args) 44 { 45 Polymorphism show = new Polymorphism(); 46 show.showInfo(); 47 48 } 49 }
输出结果:
总结:
练习使用了创建对象数组的方法,使用面向对象的思想,子类继承父类的属性和方法,并对父类的方法进行重写,在题目三中,我本来将计算成绩的内容全部写在main方法里,经过老师讲解,我重新修改了程序,将创建对象数组和成绩计算的相关程序单独写在一个类里面。