通过班级名称查询班级的代码错在哪
package studentProj;
/*
* 学生类
*/
public class Student {
private String stuNum;// 学号
private String stuName;// 姓名
private double math;// 数学成绩
private double chinese;// 语文成绩
// 创建构造方法
public Student() {
super();
}
public Student(String stuNum, String stuName) {
super();
this.stuNum = stuNum;
this.stuName = stuName;
}
// 创建getter/setter
public String getStuNum() {
return stuNum;
}
public void setStuNum(String stuNum) {
this.stuNum = stuNum;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public double getMath() {
return math;
}
public void setMath(double math) {
this.math = math;
}
public double getChinese() {
return chinese;
}
public void setChinese(double chinese) {
this.chinese = chinese;
}
// hashcode()和equals()方法
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
long temp;
temp = Double.doubleToLongBits(chinese);
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(math);
result = prime * result + (int) (temp ^ (temp >>> 32));
result = prime * result + ((stuName == null) ? 0 : stuName.hashCode());
result = prime * result + ((stuNum == null) ? 0 : stuNum.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
} else if (this.getClass() == obj.getClass()) {
Student student = (Student) obj;
return (this.stuNum == student.stuNum) && (this.stuName == student.stuName);
}
return true;
}
// toString 方法
@Override
public String toString() {
return "[学号:" + stuNum + ", 姓名:" + stuName + "]";
}
}
package studentProj;
import java.util.ArrayList;
import java.util.List;
public class BanJi {
private String classId;// 班级编号
private String className;// 班级名称
private List<Student> stuList;// 存放学生的集合
// 1.构造方法
public BanJi(String classId, String className) {
super();
this.classId = classId;
this.className = className;
stuList = new ArrayList<Student>();
}
// 2.创建getter/setter方法
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public List<Student> getStuList() {
return stuList;
}
public void setStuList(List<Student> stuList) {
this.stuList = stuList;
}
// 3.将学生信息添加到班级列表中
public void addStudent(Student student) {
boolean flag = false;
for (Student stu : stuList) {
if (student.equals(stu)) {
flag = true;
}
}
if (flag) {
System.out.println("学生信息存在,请勿重复添加");
} else {
stuList.add(student);
System.out.println("学生信息添加成功");
}
}
// 4.通过学号查询学生在班级中是否存在
public Student searchStudentByNum(String stuNum) {
Student student = null;
for (Student stu : stuList) {
if (stu.getStuNum().equals(stuNum)) {
student = stu;
}
}
// if (student != null) {
// System.out.println("删除的学生信息为:" + student);
// } else {
// System.out.println("查找学生不存在");
// }
return student;
}
// 5.输入班级学生的语文成绩
public void insertChineseScore(String stuNum, float score) {
for (Student stu : stuList) {
if (stu.getStuNum().equals(stuNum)) {
stu.setChinese(score);
System.out.println(stu.getStuName() + "语文成绩添加成功");
} else {
System.out.println("该学生不存在");
}
}
// System.out.println("语文成绩添加完毕");
}
// 6.输入班级学生的数学成绩
public void insertMathScore(String stuNum, float score) {
for (Student stu : stuList) {
if (stu.getStuNum().equals(stuNum)) {
stu.setMath(score);
System.out.println(stu.getStuName() + "数学成绩添加成功");
} else {
System.out.println("该学生不存在");
}
}
// System.out.println("数学成绩添加完毕");
}
// 7.删除学生信息
public void deleteStudent(String stuNum) {
Student student = searchStudentByNum(stuNum);
if (student == null) {
System.out.println("要删除的学生信息不存在");
} else {
stuList.remove(student);
System.out.println("删除成功");
}
}
// 显示所有学生的信息(包括学号和姓名)
public void displayAllStudent() {
System.out.println(this.getClassName() + "所有学生信息如下:");
for (Student stu : stuList) {
System.out.println(stu.toString());
}
}
}
package studentProj;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class School {
Map<String, BanJi> schoolMap;
// 1.创建构造方法
public School() {
super();
schoolMap = new HashMap<String, BanJi>();
}
// 2.setter/getter方法
public Map<String, BanJi> getSchoolMap() {
return schoolMap;
}
public void setSchoolMap(Map<String, BanJi> schoolMap) {
this.schoolMap = schoolMap;
}
// 3.添加班级
public void addBanJi(BanJi banji) {
boolean flag = true;
Set<String> classSet = schoolMap.keySet();
for (String name : classSet) {
if (banji.getClassName().equals(name)) {
System.out.println("班级["+banji.getClassName()+"]已经存在,请勿重复添加");
flag=false;
break;
}
}
if (flag) {
schoolMap.put(banji.getClassName(), banji);
System.out.println(banji.getClassName() + "添加成功");
}
}
// 4.删除班级
public void deleteBanJi(BanJi banji) {
BanJi bj=null;
Set<String> classSet = schoolMap.keySet();
for(String name:classSet) {
if(banji.getClassName().equals(name)) {
bj=this.searchByName(name);
}
}
if(bj!=null) {
schoolMap.remove(banji.getClassId());
System.out.println("["+banji.getClassName()+"]" + "删除成功");
}else {
System.out.println("删除失败!未找到["+banji.getClassName()+"]");
}
}
// 5.通过班级名称查询班级
public BanJi searchByName(String className) {
BanJi bj = null;
// Set<String> classSet = schoolMap.keySet();
Set<String> classSet = schoolMap.keySet();
if (classSet != null) {// 判断集合里是否有值
for (String name : classSet) {
if (name.equals(className)) {
bj = schoolMap.get(name);
break;
}
}
} else {
System.out.println("集合里没有班级");
}
System.out.println(bj.getClassName());
return bj;
}
//6.对个班语文成绩平均分进行由大到小排序
public void sortChineseByAverage() {
List <BanJi>bjList=new ArrayList<BanJi>();//创建存储班级的数组
// double [] sumChinese=new double[100];//将各个班级的成绩存入到数组中
for(BanJi bj:schoolMap.values()) {
bjList.add(bj);//将班级集合中的班级存入到List数组中
}
// double [] sumChinese=new double[bjList.size()];//将各个班级的成绩存入到数组中
Map<String,Double> classChineseMap=new HashMap<String,Double>();
//求个个班的语文总成绩,并将其存入到sunChinese数组中
for(int i=0;i<bjList.size();i++) {
double sum=0;
List<Student>stuList=bjList.get(i).getStuList();
// System.out.println(stuList.size());
for(int j=0;j<stuList.size();j++) {
sum+=stuList.get(j).getChinese();
// if(stuList.get(j).getChinese()>stuList.get(j+1).getChinese()) {
// Student stu=stuList.get(j+1);
// stuList.add(j+1, stuList.get(j));
// stuList.add(j,stu);
// }
}
// sumChinese[i]=sum;
classChineseMap.put(bjList.get(i).getClassName(),sum/stuList.size());
System.out.println(bjList.get(i).getClassName()+"的语文总成绩为"+sum);
}
//输出排序后的语文成绩
//将map的entry存入到list数组中
List <Map.Entry<String, Double>> list=new ArrayList<Map.Entry<String, Double>>(classChineseMap.entrySet());
//按照map的value值进行排序
Collections.sort(list, new Comparator<Map.Entry<String, Double>>()
{
// 降序排序
@Override
public int compare(Entry<String, Double> o1, Entry<String, Double> o2) {
// return o1.getValue().compareTo(o2.getValue());
return o2.getValue().compareTo(o1.getValue());
}
});
for(Map.Entry<String, Double> mapping:list) {
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
//7.对每个班的数学平均成绩进行降序排列
public void sortMathByAverage() {
List <BanJi>bjList=new ArrayList<BanJi>();//创建存储班级的数组
// double [] sumChinese=new double[100];//将各个班级的成绩存入到数组中
for(BanJi bj:schoolMap.values()) {
bjList.add(bj);//将班级集合中的班级存入到List数组中
}
// double [] sumChinese=new double[bjList.size()];//将各个班级的成绩存入到数组中
Map<String,Double> classMathMap=new HashMap<String,Double>();
//求个个班的语文总成绩,并将其存入到sunChinese数组中
for(int i=0;i<bjList.size();i++) {
double sum=0;
List<Student>stuList=bjList.get(i).getStuList();
// System.out.println(stuList.size());
for(int j=0;j<stuList.size();j++) {
sum+=stuList.get(j).getMath();
// if(stuList.get(j).getChinese()>stuList.get(j+1).getChinese()) {
// Student stu=stuList.get(j+1);
// stuList.add(j+1, stuList.get(j));
// stuList.add(j,stu);
// }
}
// sumChinese[i]=sum;
classMathMap.put(bjList.get(i).getClassName(),sum/stuList.size());
}
//输出排序后的数学成绩
//将map的entry存入到list数组中
List <Map.Entry<String, Double>> list=new ArrayList<Map.Entry<String, Double>>(classMathMap.entrySet());
//按照map的value值进行排序
Collections.sort(list, new Comparator<Map.Entry<String, Double>>()
{
// 降序排序
@Override
public int compare(Entry<String, Double> o1, Entry<String, Double> o2) {
// return o1.getValue().compareTo(o2.getValue());
return o2.getValue().compareTo(o1.getValue());
}
});
for(Map.Entry<String, Double> mapping:list) {
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
}
package studentProj;
import java.util.Scanner;
public class TestDemo {
// 学生类测试
public void testStudent() {
Student student1 = new Student("S01", "小明");
Student student2 = new Student("S02", "小王");
Student student3 = new Student("S01", "小明");
System.out.println(student1);
System.out.println(student2);
System.out.println(student3);
System.out.println(student1.equals(student2));
System.out.println(student1.equals(student3));
System.out.println(student1 == student3);
}
// 班级类测试
public void testBanJi() {
BanJi banji = new BanJi("b01", "二班");
Student student1 = new Student("S01", "小明");
Student student2 = new Student("S02", "小王");
Student student3 = new Student("S01", "小明");
banji.addStudent(student1);
banji.addStudent(student2);
banji.addStudent(student3);
// 测试通过学号查询学生
banji.searchStudentByNum("S01");
banji.searchStudentByNum("S033");
}
// 插入语文/数学成绩测试
public void insertScore() {
BanJi banji = new BanJi("b01", "二班");
Student student1 = new Student("S01", "小明");
banji.addStudent(student1);
banji.insertChineseScore("S01", 55.6f);
banji.insertMathScore("S01", 15.6f);
banji.insertMathScore("S012", 15.6f);
}
public void deleteStudnet() {
BanJi banji = new BanJi("b01", "二班");
Student student1 = new Student("S01", "小明");
Student student2 = new Student("S02", "小明2");
banji.addStudent(student1);
banji.addStudent(student2);
banji.displayAllStudent();
banji.deleteStudent("S01");
banji.displayAllStudent();
}
// 学校类测试
public void schoolTest() {
// School school=new School();
// BanJi banji = new BanJi("b01", "二班");
// BanJi banji1 = new BanJi("b01", "二1班");
// school.addBanJi(banji);
// school.addBanJi(banji);
// school.searchByName("二班");
//// System.out.println(school.searchByName("二班")!=null);
// school.deleteBanJi(banji);
// school.deleteBanJi(banji1);
// 测试成绩排序
School school = new School();
BanJi banji1 = new BanJi("b01", "1班");
BanJi banji2 = new BanJi("b02", "2班");
BanJi banji3 = new BanJi("b03", "3班");
school.addBanJi(banji1);
school.addBanJi(banji2);
school.addBanJi(banji3);
Student student1 = new Student("S01", "小明");
student1.setChinese(10.0);
student1.setMath(10.0);
Student student2 = new Student("S02", "小明2");
student2.setChinese(22.0);
student2.setMath(10.0);
Student student3 = new Student("S03", "小明3");
student3.setChinese(33.0);
student3.setMath(10.0);
Student student4 = new Student("S04", "小明4");
student4.setChinese(40.0);
student4.setMath(10.0);
Student student5 = new Student("S05", "小明5");
student5.setChinese(50.0);
student5.setMath(10.0);
Student student6 = new Student("S06", "小明6");
student6.setChinese(60.0);
student6.setMath(10.0);
Student student7 = new Student("S07", "小明7");
student7.setChinese(80.0);
student7.setMath(10.0);
banji1.addStudent(student1);
banji1.addStudent(student2);
banji1.addStudent(student3);
banji2.addStudent(student4);
banji2.addStudent(student5);
banji3.addStudent(student6);
banji3.addStudent(student7);
// school.sortChineseByAverage();
school.sortMathByAverage();
school.searchByName("b01");
}
public void mainMenu() {
System.out.println("*********主菜单*********");
System.out.println("1--班级管理");
System.out.println("2--学校管理");
System.out.println("0--退出");
System.out.println("************************");
}
public void banJiMenu() {
System.out.println("*******班级管理*********");
System.out.println("1-添加学生信息到主学生列表");
System.out.println("2-添加学生信息到普通班级列表");
System.out.println("3-通过学号查询学生信息");
System.out.println("4-输入班级的语文成绩");
System.out.println("5-输入班级的数学成绩");
System.out.println("6-删除学生信息");
System.out.println("7-显示所有学生信息");
System.out.println("0-返回上一级");
System.out.println("************************");
}
public void schoolMenu() {
System.out.println("********学校管理********");
System.out.println("1-创建班级");
System.out.println("2-删除班级");
System.out.println("3-通过班级名称查询同班级信息");
System.out.println("4-对各个班级的语文成绩降序排列");
System.out.println("5-对各个班级的数学成绩降序排列");
System.out.println("6-显示所有班级名称");
System.out.println("0-返回上一级");
System.out.println("************************");
}
public void test() {
TestDemo test = new TestDemo();
// boolean flag=true;
while (true) {
// 主菜单
test.mainMenu();
BanJi mainStudent = new BanJi("S01", "主学生列表");// 创建主学生列表
BanJi commonStudent; // 创建普通学生列表
School school = new School();
school.addBanJi(mainStudent);
System.out.println("请输入相应的数字进行操作");
Scanner sc = new Scanner(System.in);
int n = 0;
try {
n = sc.nextInt();
} catch (java.util.InputMismatchException e) {
System.out.println("请输入数字格式进行操作");
// continue;
}
if (n == 0) {
System.out.println("退出程序成功");
break;
}
switch (n) {
case 1:
// 班级管理
// boolean flag = true;
while (true) {
test.banJiMenu();
sc = new Scanner(System.in);
try {
n = sc.nextInt();
} catch (java.util.InputMismatchException e) {
System.out.println("请输入数字格式进行操作");
continue;
}
if (n == 0) {
System.out.println("退出程序成功");
break;
}
// 班级管理的具体内容
switch (n) {
case 1:// 添加学生信息到主学生列表
boolean flag = true;
while (flag) {
boolean flag2 = true;
System.out.println("请输入学生学号");
String stuId = sc.next();
System.out.println("请输入学生姓名");
String stuName = sc.next();
Student stu = new Student(stuId, stuName);
if (mainStudent.searchStudentByNum(stuId) != null) {
System.out.println("该学生信息已存在请勿重复添加");
} else {
mainStudent.addStudent(stu);
}
while (flag2) {
System.out.println("请输入相应的数字(1/0)(继续添加/结束添加)");
try {
n = sc.nextInt();
} catch (java.util.InputMismatchException e) {
System.out.println("请输入数字格式进行操作");
sc.next();// 释放键盘值不然死循环
continue;
}
switch (n) {
case 0:
flag = false;
flag2 = false;
break;
case 1:
flag = true;
flag2 = false;
break;
default:
System.out.println("请输入0/1");
flag = true;
flag2 = true;
break;
}
}
}
break;
case 2://添加学生信息到普通班级列表
boolean flag3 = true;
while (flag3) {
boolean flag2 = true;
System.out.println("请输入要添加到的班级列表名称");
String className=sc.next();
commonStudent=school.searchByName(className);
if(commonStudent==null) {
System.out.println("班级列表不存在,请先添加");
break;
}else {
System.out.println("请输入学生学号");
String stuId = sc.next();
System.out.println("请输入学生姓名");
String stuName = sc.next();
Student stu = new Student(stuId, stuName);
if (commonStudent.searchStudentByNum(stuId) != null) {
System.out.println("该学生信息已存在请勿重复添加");
break;
} else {
if(mainStudent.searchStudentByNum(stuId) != null) {
commonStudent.addStudent(stu);
}else {
mainStudent.addStudent(stu);
commonStudent.addStudent(stu);
}
}
while (flag2) {
System.out.println("请输入相应的数字(1/0)(继续添加/结束添加)");
try {
n = sc.nextInt();
} catch (java.util.InputMismatchException e) {
System.out.println("请输入数字格式进行操作");
sc.next();// 释放键盘值不然死循环
continue;
}
switch (n) {
case 0:
flag3 = false;
flag2 = false;
break;
case 1:
flag3 = true;
flag2 = false;
break;
default:
System.out.println("请输入0/1");
flag3 = true;
flag2 = true;
break;
}
}
}
}
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
default:
flag = true;
System.out.println("------------------------");
System.out.println("请输入正确的数字进行操作!");
System.out.println("------------------------");
break;
}
}
break;
case 2:
// 学校管理
boolean flag2 = true;
while (true) {
test.schoolMenu();
sc = new Scanner(System.in);
try {
n = sc.nextInt();
} catch (java.util.InputMismatchException e) {
System.out.println("请输入数字格式进行操作");
continue;
}
if (n == 0) {
System.out.println("退出程序成功");
break;
}
switch (n) {
case 1:// 创建班级
System.out.println("请输入班级id");
String classId = sc.next();
System.out.println("请输入班级名称");
String className = sc.next();
BanJi banji = new BanJi(classId, className);
school.addBanJi(banji);
// flag = false;
break;
case 2:// 删除班级
System.out.println("请输入要删除的班级名称");
String deleteClassName = sc.next();
if (deleteClassName.equals(mainStudent.getClassName())) {
System.out.println("主学生列表不能删除");
break;
} else {
if (school.searchByName(deleteClassName) == null) {
System.out.println("要删除的班级不存在");
} else {
school.deleteBanJi(school.searchByName(deleteClassName));
}
}
break;
case 3:
System.out.println("输入要查询班级的名称");
String searchClassName = sc.next();
if (school.searchByName(searchClassName) == null) {
System.out.println("要查询的班级信息不存在");
} else {
BanJi bj = school.searchByName(searchClassName);
if (bj.getStuList().size() == 0) {
System.out.println("该班级没有学生信息");
} else {
bj.displayAllStudent();
}
}
break;
case 4:
school.sortChineseByAverage();
break;
case 5:
school.sortMathByAverage();
break;
case 6:// 展示所有班级名称
if (school.getSchoolMap().values().size() == 0) {
System.out.println("班级列表为空,请先添加班级");
break;
}
for (BanJi bj : school.schoolMap.values()) {
System.out.println("班级Id:" + bj.getClassId() + "班级名称:" + bj.getClassName());
}
break;
default:
// flag = true;
System.out.println("------------------------");
System.out.println("请输入正确的数字进行操作!");
System.out.println("------------------------");
break;
}
}
break;
default:
System.out.println("------------------------");
System.out.println("请输入正确的数字进行操作!");
System.out.println("------------------------");
break;
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestDemo test = new TestDemo();
// test.testStudent();//学生类测试
// test.testBanJi();//班级类测试
// test.insertScore();//插入成绩测试
// test.deleteStudnet();// 删除测试
// test.schoolTest();
// test.mainMenu();
test.test();
}
}
bj总是返回空正在回答 回答被采纳积分+1
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程




恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星