返回主菜单的运行有点问题,还有能给一下主流程的参考代码吗?
来源:4-8 项目作业
weixin_慕设计1308382
2019-09-02 19:18:15
package com.imooc.assignment4;
public class Student {
private String stuNum;
private String stuName;
private float math;
private float chinese;
public Student(String stuNum, String stuName, float math, float chinese) {
super();
this.stuNum = stuNum;
this.stuName = stuName;
this.math = math;
this.chinese = chinese;
}
public Student(String stuNum, String stuName) {
this.stuNum = stuNum;
this.stuName = stuName;
}
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 float getMath() {
return math;
}
public void setMath(float math) {
this.math = math;
}
public float getChinese() {
return chinese;
}
public void setChinese(float chinese) {
this.chinese = chinese;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + Float.floatToIntBits(chinese);
result = prime * result + Float.floatToIntBits(math);
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;
if(obj.getClass()==Student.class) {
Student student=(Student)obj;
return student.getStuNum().equals(stuNum);
}
return false;
}
@Override
public String toString() {
return "学生信息 [学号:" + stuNum + ", 姓名:" + stuName + "]";
}
}package com.imooc.assignment4;
import java.util.ArrayList;
import java.util.List;
public class Banji {
// 属性:班级编号(classId)、班级名称(className) 这两个属性均为String类型,存放学生的集合(stuList) 这个属性为List类型
private String classId;
private String className;
private List<Student> stuList;//存放学生的集合
/**
* 构造方法
*/
public Banji(String classId,String className) {
this.classId=classId;
this.className=className;
stuList=new ArrayList<Student>();
}
public Banji() {
stuList=new ArrayList<Student>();
}
//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;
}
/**
* 将学生添加到班级
* @param stu 要添加的学生
*/
public void addStudent(Student stu) {
boolean flag=false;//判断学生是否已经被添加
for(Student stu1:stuList) {
if(stu1.equals(stu)) {
flag=true;
break;
}
}
if(flag) {
System.out.println("该学生已经添加到班级");
}else {
stuList.add(stu);
}
}
/**
* 通过学号查询学生在班级中是否存在
* @param stuNum 学号
* @return
*/
public Student searchStudentByNum(String stuNum) {
Student student1=null;
for(Student s:stuList) {
if(s.getStuNum().equals(stuNum)) {
student1=s;
break;
}
}
return student1;
}
/**
* 输入班级学生的语文成绩
* @param stuNum 学号
* @param score 语文成绩
*/
public void insertChineseScore(String stuNum,float score) {
//通过学号查询学生的信息
Student stu=searchStudentByNum(stuNum);
//当stu不为null时,表示学生存在
if(stu!=null) {
//修改该学生的语文成绩
stu.setChinese(score);
}else {
System.out.println("该学生不存在");
}
}
/**
* 输入班级学生的数学成绩
* @param stuNum 学号
* @param score 数学成绩
*/
public void insertMathScore(String stuNum,float score) {
Student stu=searchStudentByNum(stuNum);
if(stu!=null) {
stu.setMath(score);
}else {
System.out.println("该学生不存在");
}
}
/**
* 删除学生信息
* @param stuNum 学号
*/
public void deleteStudent(String stuNum) {
Student stu=searchStudentByNum(stuNum);
if(stu!=null) {
stuList.remove(stu);
System.out.println("删除成功!");
}else {
System.out.println("未找到学号对应的学生");
}
}
/**
* 显示所有学生的信息
*/
public void displayAllStudent() {
System.out.println("所有学生的信息为:");
for(Student s:stuList) {
System.out.println(s);
}
}
}
package com.imooc.assignment4;
import java.util.ArrayList;
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 {
// 班级集合
private Map<String, Banji> schoolMap;
// 构造方法
public School() {
this.schoolMap = new HashMap<String, Banji>();
}
// getter和setter方法
public Map<String, Banji> getSchoolMap() {
return schoolMap;
}
public void setSchoolMap(Map<String, Banji> schoolMap) {
this.schoolMap = schoolMap;
}
/**
* 添加班级
*
* @param banji
*/
public void addBanji(Banji banji) {
if (!schoolMap.containsKey(banji.getClassName())) {
schoolMap.put(banji.getClassName(), banji);
System.out.println("添加成功");
} else {
System.out.println("该班级已存在!");
}
}
/**
* 删除班级
*
* @param banji
*/
public void deleteBanji(Banji banji) {
if (schoolMap.containsKey(banji.getClassName())) {
schoolMap.remove(banji.getClassName());
System.out.println("删除成功");
} else {
System.out.println("要删除的班级不存在");
}
}
/**
* 通过班级名称查询班级
*
* @param className
* @return
*/
public Banji searchByName(String className) {
Banji bj = null;
for (String str : schoolMap.keySet()) {
if (str.equals(className)) {
bj = schoolMap.get(className);
break;
}
}
return bj;
}
/**
* 对各班语文成绩平均分按由大到小排序
*/
public void sortChineseByAverage() {
Map<String, Float> score = new HashMap<String, Float>();
Banji banji = null;
List<Student> stuList = null;
float sum = 0.0f;
float average = 0.0f;
Set<String> nameSet = schoolMap.keySet();
if (nameSet != null) {
for (String s : nameSet) {
if (s.equals("主学生列表")) {
continue;
}
sum = 0.0f;
banji = schoolMap.get(s);
stuList = banji.getStuList();
if (stuList != null) {
for (Student stu : stuList) {
sum = sum + stu.getChinese();
}
// 求平均分
average = sum / stuList.size();
// 将每个班级的平均分添加到score中
score.put(banji.getClassName(), average);
} else {
System.out.println("该班级没有学生");
}
}
} else {
System.out.println("还未添加班级");
}
List<Map.Entry<String, Float>> list = new ArrayList<Map.Entry<String, Float>>(score.entrySet());
score.entrySet();
//降序排序
Collections.sort(list, new Comparator<Map.Entry<String, Float>>(){
@Override
public int compare(Entry<String, Float> o1, Entry<String, Float> o2) {
// TODO Auto-generated method stub
return o2.getValue().compareTo(o1.getValue());
}
});
for(Map.Entry<String, Float>mapping:list) {
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
/**
* 对数学成绩按由大到小排序
*/
public void sortMathByAverage() {
Map<String, Float> score = new HashMap<String, Float>();
Banji banji = null;
List<Student> stuList = null;
float sum = 0.0f;
float average = 0.0f;
Set<String> nameSet = schoolMap.keySet();
if (nameSet != null) {
for (String s : nameSet) {
if (s.equals("主学生列表")) {
continue;
}
sum = 0.0f;
banji = schoolMap.get(s);
stuList = banji.getStuList();
if (stuList != null) {
for (Student stu : stuList) {
sum = sum + stu.getMath();
}
// 求平均分
average = sum / stuList.size();
// 将每个班级的平均分添加到score中
score.put(banji.getClassName(), average);
} else {
System.out.println("该班级没有学生");
}
}
} else {
System.out.println("还未添加班级");
}
List<Map.Entry<String, Float>> list = new ArrayList<Map.Entry<String, Float>>(score.entrySet());
score.entrySet();
//降序排序
Collections.sort(list, new Comparator<Map.Entry<String, Float>>(){
@Override
public int compare(Entry<String, Float> o1, Entry<String, Float> o2) {
// TODO Auto-generated method stub
return o2.getValue().compareTo(o1.getValue());
}
});
for(Map.Entry<String, Float>mapping:list) {
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
/**
* 显示所有班级名称
*/
public void displayBanjiName() {
System.out.println("班级名称为:");
for(String bj:schoolMap.keySet()) {
System.out.println(bj);
}
}
}
package com.imooc.assignment4;
import java.util.InputMismatchException;
import java.util.Scanner;
public class TestDemo {
//主菜单
public void mainMenu() {
System.out.println("**********************************************");
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(" **班级管理** ");
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(" 9--返回上一级菜单");
System.out.println("******************************************************************");
}
//学校管理菜单
public void schoolMenu() {
System.out.println("******************************************************************");
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(" 9--返回上一级菜单");
}
//班级的测试类
public void testBanji() {
School school=new School();
Banji bj1=new Banji("01","一班");
Banji bj2=new Banji("02","二班");
Banji bj3=new Banji("03","三班");
school.addBanji(bj1);
school.addBanji(bj2);
school.addBanji(bj3);
//显示班级名称
System.out.println("删除前:");
school.displayBanjiName();
//通过名称查找班级
Banji bj=school.searchByName("四班");
if(bj==null) {
System.out.println("找不到班级");
}else {
System.out.println(bj);
}
//删除班级
school.deleteBanji(bj1);
school.deleteBanji(bj2);
school.deleteBanji(bj1);
System.out.println("删除后:");
school.displayBanjiName();
//各班级语文平均分由大到小排序
Student stu1=new Student("001","小明",87,92);
Student stu2=new Student("002","小红",69,72);
Student stu3=new Student("003","小兰",58,89);
//添加三名学生到一班
bj1.addStudent(stu1);
bj1.addStudent(stu2);
bj1.addStudent(stu3);
//添加一班到学校管理类
school.addBanji(bj1);
Student stu4=new Student("001","小明",87,100);
Student stu5=new Student("002","小红",69,95);
Student stu6=new Student("003","小兰",58,98);
//添加三名学生到二班
bj2.addStudent(stu4);
bj2.addStudent(stu5);
bj2.addStudent(stu6);
//添加二班到学校管理类
school.addBanji(bj2);
//添加三名学生到三班
Student stu7=new Student("001","小明",100,100);
Student stu8=new Student("002","小红",100,99);
Student stu9=new Student("003","小兰",99,98);
bj3.addStudent(stu7);
bj3.addStudent(stu8);
bj3.addStudent(stu9);
//添加三班到学校管理类
school.addBanji(bj3);
System.out.println("按班级语文平均分排序前");
school.displayBanjiName();
System.out.println("按班级语文平均分排序后");
school.sortChineseByAverage();
school.displayBanjiName();
}
/**
* 主流程
*/
public void test() {
TestDemo td = new TestDemo();
Banji banji=new Banji();
Banji bj=null;//普通班级列表
School school=new School();
Scanner sc = new Scanner(System.in);
int input = 0, input1 = 0, input2 = 0;
while(true) {
td.mainMenu();
try{
input=sc.nextInt();
}catch(InputMismatchException e) {
System.out.println("输入格式错误");
sc.next();
continue;
}
if(input==0) {
break;
}
switch(input) {
case 1:
while(true) {
td.banjiMenu();
System.out.println("请输入对应的数字进行操作:");
try{
input1=sc.nextInt();
}catch(InputMismatchException e) {
System.out.println("输入格式错误");
sc.next();
continue;
}
if(input1==9) {
break;
}
switch(input1) {
case 1:
System.out.println("将学生添加到主学生列表");
System.out.println("请输入要添加学生的数量");
int count=sc.nextInt();
for(int i=1;i<=count;i++) {
System.out.println("请输入第"+i+"个学生的信息");
System.out.println("请输入学号:");
String stuNum=sc.next();
System.out.println("请输入学生的姓名:");
String stuName=sc.next();
Student stu=new Student(stuNum,stuName);
banji.addStudent(stu);
}
banji.displayAllStudent();
break;
case 2:
System.out.println("从主学生列表选取学生分配班级");
System.out.println("请输入要分配的班级名称:");
String banjiName=sc.next();//要分配的班级名称
bj=school.searchByName(banjiName);
if(bj==null) {
System.out.println("该班级不存在,请现在学校中添加!");
}else {
System.out.println("请输入要添加学生的数量:");
int count1=sc.nextInt();
for(int i=1;i<=count1;i++) {
System.out.println("请输入第"+i+"个学生的信息");
System.out.println("请输入学号:");
String stuNum=sc.next();
Student stu=banji.searchStudentByNum(stuNum);
if(stu==null) {
System.out.println("查找的学生不存在");
}else {
bj.addStudent(stu);
}
}
System.out.println(banjiName+"的学生信息为:");
bj.displayAllStudent();
}
break;
case 3:
System.out.println("通过学号查询学生信息");
System.out.println("请输入要查询的学生的id: ");
String stuNum=sc.next();
Student s=banji.searchStudentByNum(stuNum);
if(s==null) {
System.out.println("查找的学生不存在");
}else {
System.out.println("该学生的信息为:");
System.out.println(s);
}
}
}
case 2:
while(true) {
td.schoolMenu();
System.out.println("请输入对应的数字对学校进行管理");
input2=sc.nextInt();
if(input2==9) {
break;
}
switch(input2) {
case 1:
System.out.println("创建班级");
System.out.println("请输入要创建的班级id");
String banjiid=sc.next();
System.out.println("请输入要创建的班级名称:");
String banjiName=sc.next();
Banji bj2=new Banji(banjiid,banjiName);//添加创建班级的对象
school.addBanji(bj2);
break;
case 2:
System.out.println("请输入要删除的班级id");
String banjiid2=sc.next();//要删除的班级id
Student banji2=bj.searchStudentByNum(banjiid2);
if(banjiid2==null) {
System.out.println("该班级不存在");
}else {
banji.deleteStudent(banjiid2);
}
}
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestDemo td=new TestDemo();
td.test();
}
}
1回答
同学你好,同学是指在【班级管理】中输入9返回主菜单的问题吗?建议同学再case1后的while循环结束后,添加break;如:

case 2结束后同样需要添加break;表示该case结束。
关于主流程的参考,可以参考如下:

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题