返回主菜单的运行有点问题,还有能给一下主流程的参考代码吗?

来源: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回答

好帮手慕阿满

2019-09-03

同学你好,同学是指在【班级管理】中输入9返回主菜单的问题吗?建议同学再case1后的while循环结束后,添加break;如:

http://img.mukewang.com/climg/5d6ddb000001c27205490204.jpg

case 2结束后同样需要添加break;表示该case结束。

关于主流程的参考,可以参考如下:

http://img.mukewang.com/climg/5d6ddc7c0001833404250479.jpg

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

0

0 学习 · 11489 问题

查看课程