题目、编写一个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; } }