題目、編寫一個Java應用程序。設計一個學生類Students,包括屬性有:序號,學號,姓名,性別,專業,三門課程成績(數學,計算機,英語);包括方法有:求成績總分,成績平均分,除序號外各個屬性的賦值方法,各個屬性值的獲取方法等等。說明:每創建一個Students對象,則序號值增1;第一個學生對象的序號值為1。
編寫一個主類StudentsDemo,在主方法中創建5個Students類的對象,按以下要求輸出相關信息:
(1)各課程最高/最低分同學的序號、學號、姓名和該門課程分數
(2)總分最高/最低同學的序號、學號、姓名和所有課程分數
(3)輸入一個學號或者姓名,若存在這樣的學號或姓名則輸出該學生的所有信息,否則輸出信息不存在。
package StudentsDemo; import java.util.Scanner; public class StudentsDemo { public static void main(String[] args) { //創建學生信息 Student[] a = new Student[5];//以數組的形式存儲5個學生類 int i = 0; for (i = 0; i < 5; i++) { a[i] = new Student(); a[i].math = (int) (Math.random() * 100);//產生一個0到1之間的隨機數*100 a[i].english = (int) (Math.random() * 100);//隨機數錄入成績 a[i].comp = (int) (Math.random() * 100); a[i].gender = "男"; a[i].major = "計算機類"; // System.out.println(a[i].nunber); 驗證編號 } a[0].stu_num = "125"; a[1].stu_num = "244"; a[2].stu_num = "334"; a[3].stu_num = "442"; a[4].stu_num = "542";//學號 a[0].name = "張三"; a[1].name = "里面"; a[2].name = "黎明"; a[3].name = "李華"; a[4].name = "麗華";//起名 int max1 = 0, min1 = 0; int max2 = 0, min2 = 0; int max3 = 0, min3 = 0; int MAX = 0; for (i = 0; i < 5; i++) { if (a[i].gettotal() > a[MAX].gettotal()) { MAX = i; } if (a[i].math > a[max1].math) { max1 = i; } if (a[i].math < a[min1].math) { min1 = i; } if (a[i].english > a[max2].english) { max2 = i; } if (a[i].english < a[max2].english) { min2 = i; } if (a[i].comp > a[max3].comp) { max3 = i;//尋找分高的人 } if (a[i].comp < a[min3].comp) { min3 = i; } } Put(a, "英語", max2); Put(a, "數學", max1); Put(a, "計算機", max3); //輸出學習信息 Put2(a, "英語", min2); Put2(a, "數學", min1); Put2(a, "計算機", min3); Put(a, "", MAX); System.out.println("英語分 " + a[MAX].getEnglish()); System.out.println("數學分為 " + a[MAX].getMath()); System.out.println("計算機分數為 " + a[MAX].getComp()); //輸出總分最高 //查找學生 int cont = -1; Scanner in = new Scanner(System.in); System.out.println("請輸入學號或姓名"); String search = in.nextLine(); for (i = 0; i < 5; i++) {//equals比較字符串是否相等 if (a[i].name.equals(search) || a[i].stu_num.equals(search)) { cont = i; break; } } if (cont == -1) { System.out.println("信息不存在"); } else { System.out.println("姓名是" + a[cont].name); System.out.println("序號是" + a[cont].nunber); System.out.println("學號是" + a[cont].stu_num); System.out.println("性別是" + a[cont].gender); System.out.println("專業是" + a[cont].major); System.out.println("英語成績是" + a[cont].getEnglish()); System.out.println("數學成績是" + a[cont].math); System.out.println("計算機成績是" + a[cont].comp); System.out.println("總分是" + a[cont].gettotal()); System.out.println("平均分是" + a[cont].getaver()); } } static void Put(Student[] ss, String course, int num) { System.out.println(course + "成績最高的是" + ss[num].nunber + "號學生"); System.out.println("學號是" + ss[num].stu_num); System.out.println("姓名是" + ss[num].name); if (course.equals("english")) {//分號不能少 System.out.println(course + "成績是" + ss[num].english); } else if (course.equals("comp")) { System.out.println(course + "成績是" + ss[num].comp); } else if (course.equals("math")) { System.out.println(course + "成績是" + ss[num].math); } } static void Put2(Student[] ss, String course, int num) { System.out.println(course + "成績最低的是" + ss[num].nunber + "號學生"); System.out.println("學號是" + ss[num].stu_num); System.out.println("姓名是" + ss[num].name); if (course.equals("english")) { System.out.println(course + "成績是" + ss[num].english); } else if (course.equals("comp")) { System.out.println(course + "成績是" + ss[num].comp); } else if (course.equals("math")) { System.out.println(course + "成績是" + ss[num].math); } } }
package StudentsDemo; public class Student { static int NUM = 1; int nunber; String stu_num; String name; String gender; double math; double comp; double english; String major; Student() {//構造方法 nunber = NUM++; } public double gettotal() {//獲取總分 return this.math + this.english + this.comp; } public double getaver() { return ((this.comp + this.english + this.math) * 1.0) / 3; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getComp() { return comp; } public void setComp(double comp) { this.comp = comp; } public double getEnglish() { return english; } public void setEnglish(double english) { this.english = english; } public double getMath() { return math; } public void setMath(double math) { this.math = math; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getStu_num() { return stu_num; } public void setStu_num(String stu_num) { this.stu_num = stu_num; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } }
//另一種方法 public class Student { static int id=0;//學生序號 //用類變量保留相應科目最高(低)分的ID,便於對象共享 static int mathScoreMaxID=0; static int mathScoreMinID=0; static int englishScoreMaxID=0; static int englishScoreMinID=0; static int computerScoreMaxID=0; static int computerScoreMinID=0; static int totalScoreMaxID=0; static int totalScoreMinID=0; //用類變量保留相應科目最高(低)分,便於對象共享 private static float mathScoreMax=0;//數學科目最高分 private static float englishScoreMax=0; private static float computerScoreMax=0; private static float mathScoreMin=100; private static float englishScoreMin=100; private static float computerScoreMin=100; private static float totalScoreMax=0; private static float totalScoreMin=0; //將成員變量定義為私有的,體現面向對象的封裝性 private String studentNumber;//學生學號 private String studentName; private String studentSex; private String studentMajor; private float mathScore; private float englishScore; private float computerScore; private float totalScore; private float averageScore; //構造方法,創建對象時調用 Student(String number,String name,String sex,String major){ id++;//每創建一個Students對象,則序號值增1; studentNumber=number; studentName=name; studentSex=sex; studentMajor=major; } //給每個成員變量(各個科目成績)賦值 void setAllScore(int id,float math,float english,float computer){ setMathScore(id,math); setEnglishScore(id,english); setComputerScore(id,computer); setTotalScore(); setAverageScore(); } //給數學成績賦值,用類變量保存最大(小)值以及相應序號 void setMathScore(int id,float math){ mathScore=math; if(math>mathScoreMax){//獲得數學分最高的學生序號 mathScoreMax=math; mathScoreMaxID=id; } if(math<mathScoreMin){//獲得數學分最低的學生序號 mathScoreMin=math; mathScoreMinID=id; } } void setEnglishScore(int id ,float english ){ englishScore=english; if(english>englishScoreMax){//獲得英語分最高的學生序號 englishScoreMax=english; englishScoreMaxID=id; } if(english<englishScoreMin){//獲得英語分最低的學生序號 englishScoreMin=english; englishScoreMinID=id; } } void setComputerScore(int id,float computer){ computerScore=computer; if(computer>computerScoreMax){//獲得計算機分最高的學生序號 computerScoreMax=computer; computerScoreMaxID=id; } if(computer<computerScoreMin){//獲得計算機分最低的學生序號 computerScoreMin=computer; computerScoreMinID=id; } } void setTotalScore(){ totalScore=mathScore+englishScore+computerScore; if(totalScore>totalScoreMax){ totalScoreMax=totalScore; totalScoreMaxID=id; } if(totalScore<totalScoreMin){ totalScoreMin=totalScore; totalScoreMinID=id; } } void setAverageScore(){ averageScore=totalScore/3; } //學號、姓名查找方法 boolean findStudentNumber(String number){ return studentNumber.equals(number); } boolean findStudentName(String name){ return studentName.equals(name); } //以下方法主要由於外部訪問內部私有變量 float getMathScore(){ return mathScore; } float getEnglishScore(){ return englishScore; } float getComputerScore(){ return computerScore; } String getStudentNumber(){ return studentNumber; } String getStudentName(){ return studentName; } String getStudentSex(){ return studentSex; } String getStudentMajor(){ return studentMajor; } }