Java基础 小demo 慕课

功能描述:
简单学生管理系统,包括班级管理和学校管理两大部分。

包含一个主学生列表,存放学生的所有信息,这个主列表是一个包含所有学生的特殊班级,其他班级的学生需要从主学生列表添加。

1、班级管理 功能如下:

l 添加学生信息到主学生列表

l 添加学生信息到普通班级

l 通过学号查询学生信息

l 输入班级的语文成绩

l 输入班级的数学成绩

l 删除学生信息

l 显示所有学生信息

2、学校管理 功能如下:

l 创建班级

l 删除班级

l 通过班级名称查询班级信息

l 对各班语文成绩按平均分进行由大到小排序

l 对各班数学成绩按平均分进行由大到小排序

l 显示所有班级名称

代码
Student.java

/**
 *     学生类
 * @author zhj
 * 2019年5月5日-下午8:27:35
 *
 */
public class Student {
	private String stuNum;
	private String stuName;
	private float math;
	private float chinese;
	
	/**
	 * 构造方法 对学号和姓名赋值
	 * @param stuNum
	 * @param stuName
	 */
	public Student(String stuNum, String stuName) {
		this.stuNum = stuNum;
		this.stuName = stuName;
	}
	
	/**
	 * 构造方法 全属性赋值
	 * @param stuNum
	 * @param stuName
	 * @param math
	 * @param chinese
	 */
	public Student(String stuNum, String stuName, float math, float chinese) {
		this.stuNum = stuNum;
		this.stuName = stuName;
		this.math = math;
		this.chinese = chinese;
	}

	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;
		//this!=obj
		if(obj.getClass()==Student.class) {
			Student student=(Student)obj;
			return (student.getStuNum()).equals(stuNum)&&(student.getStuName()).equals(stuName)&&(student.getMath())==math&&(student.getChinese())==chinese;
		}
		return false;
	}

	@Override
	public String toString() {
		return " [ 学号:" + stuNum + ", 姓名:" + stuName + ", 数学成绩:" + math + ", 语文成绩 :" + chinese + "]";
	}
}

BanJi.java

import java.util.ArrayList;
import java.util.List;

/**
 * 班级类
 * 
 * @author zhj 2019年5月6日-上午8:57:37
 *
 */
public class BanJi {
	private String classId;
	private String className;
	private List stuList;

	public BanJi(String classId, String className) {
		this.classId = classId;
		this.className = className;
		stuList = new ArrayList();
	}

	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 getStuList() {
		return stuList;
	}

	public void setStuList(List stuList) {
		this.stuList = stuList;
	}

	/**
	 * 	将学生添加到班级
	 * @param stu 学生
	 */
	public void addStudent(Student stu) {
		// 排除重复添加的情况
		boolean flag = false;
		for (Student student : stuList) {
			if (student.equals(stu)) {
				flag = true;
				break;
			}
		}
		if (flag) {
			System.out.println("该学生已经在班级中!");
		} else {
			stuList.add(stu);
			System.out.println("添加成功!");
		}
	}

	/**
	 * 通过学号查询学生在班级中是否存在
	 * 
	 * @param stuNum 学号
	 * @return student
	 */
	public Student searchStudentByNum(String stuNum) {
		Student student = null;
		// stuNum是唯一的
		for (Student student1 : stuList) {
			if (student1.getStuNum().equals(stuNum)) {
				student = student1;
				break;
			}
		}
		if (student == null) {
			System.out.println("该学生不存在!");
		} else {
			System.out.println("查找成功!");
		}
		return student;
	}

	/**
	 *     输入班级学生的语文成绩 
	 * @param stuNum 学号
	 * @param chinese 语文成绩
	 */
	public void insertChineseScore(String stuNum, float chinese) {
		// 确认学生是否存在
		Student student = searchStudentByNum(stuNum);
		if (student == null) {
			System.out.println("该学生不存在!");
		} else {
			student.setChinese(chinese);
			System.out.println("修改成功");
		}
	}

	/**
	 *     输入班级学生的数学成绩 
	 * @param stuNum  学号
	 * @param math    数学成绩
	 */
	public void insertMathScore(String stuNum, float math) {
		// 确认学生是否存在
		Student student = searchStudentByNum(stuNum);
		if (student == null) {
			System.out.println("该学生不存在!");
		} else {
			student.setMath(math);
			System.out.println("修改成功");
		}
	}

	/**
	 *      删除学生信息
	 * @param stuNum 学号
	 */
	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() {
		if (this.getStuList().isEmpty()) { // 拦截List中无元素
			System.out.println("该班级中没有学生,请先添加!");
		} else {
			System.out.println("班级中的所有学生信息为:");
			for (Student student : stuList) {
				System.out.println(student);
			}
		}
	}
}

School.java

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 *     学校类
 * @author zhj
 * 2019年5月7日-上午11:19:29
 *
 */
public class School {
	private Map schoolMap;

	public School() {
		schoolMap = new HashMap();
	}

	public Map getSchoolMap() {
		return schoolMap;
	}

	public void setSchoolMap(Map schoolMap) {
		this.schoolMap = schoolMap;
	}

	/**
	 * 添加班级
	 * 
	 * @param banji
	 */
	public void addBanji(BanJi banji) {
		// 班级编号作为key值
		schoolMap.put(banji.getClassId(), banji);
		System.out.println("添加成功");
	}

	/**
	 * 删除班级
	 * 
	 * @param banji
	 */
	public void deleteBanji(BanJi banji) {
		schoolMap.remove(banji.getClassId());
		System.out.println("删除成功");
	}

	/**
	 * 通过班级名查找
	 * 
	 * @param className
	 * @return bj
	 */
	public BanJi searchByName(String className) {
		BanJi bj = null;
		Set banjiSet = schoolMap.keySet();
		for (String id : banjiSet) { // s取到的是key值(classId)
			String name = schoolMap.get(id).getClassName(); // 取出value的name属性
			if (name.equals(className)) {
				bj = schoolMap.get(id);
				break;
			}
		}
		return bj;
	}

	/**
	 * 通过班号查找
	 * 
	 * @param classId
	 * @return
	 */
	public BanJi searchById(String classId) { // 有额外需要时(设置classId为key但需要className)
		BanJi bj = null; // 面向对象这种抽离功能、独立重复使用的特性非常令人舒服
		Set banjiSet = schoolMap.keySet();
		for (String id : banjiSet) {
			if (id.equals(classId)) {
				bj = schoolMap.get(classId);
				break;
			}
		}
		return bj;
	}

	/**
	 * 按语文平均成绩对班级排序
	 * 
	 */
	public void sortChineseByAverage() {
		BanJi bj = null; // 班级接收者
		Map scoreMap = new HashMap(); // 班级平均分接收者
		Set scoreSet = schoolMap.keySet(); // 取出classId集合
		boolean flag=false; 					//指示有班级中没有学生
		for (String s : scoreSet) { // s代表classId
			bj = this.searchById(s); // 每次抽取一个班级
			if (bj.getStuList().isEmpty()) { // 班级中没有学生
				flag=true;
				System.out.println(bj.getClassName()+"中没有学生,请先添加!!");
			} else {
				float sum = 0.0f;
				int i = 0;
				List listStudent = bj.getStuList(); // 获取班级对应学生列表
				Iterator it = listStudent.iterator(); // 迭代求平均
				while (it.hasNext()) {
					i++;
					sum = sum + it.next().getChinese();
				}
				float ave = sum / i;
				scoreMap.put(bj.getClassName(), ave); // 班级名-平均分 存入map
			}
		}
		// scoreMap.remove("主学生列表"); // 排序中不出现主学生列表
		if (!flag) {  // 所有班级中都有学生时,执行输出操作
			List> lm = new ArrayList>(scoreMap.entrySet());
			// 要输出Map中的key 和 value 是先得到key的集合keySet(),然后再迭代(循环)由每个key得到每个value。
			// .values()方法是获取集合中的所有值,不包含键,没有对应关系。而Entry可以一次性获得这两个值。
			// Map.entrySet迭代器会生成EntryIterator,其返回的实例是一个包含key/value键值对的对象。
			// 而keySet中迭代器返回的只是key对象,还需要到map中二次取值。故entrySet要比keySet快一倍左右。
			// 找不到错误时按逻辑顺序写注释对发现错误很有用
			Collections.sort(lm, new Comparator>() { // 没有新建类直接写
				@Override
				public int compare(Entry o1, Entry o2) {
					return o2.getValue().compareTo(o1.getValue()); // 从大到小排列
				}
			});
			System.out.println("排序后的数据为:");
			for (Map.Entry msf : lm) {
				System.out.println(msf.getKey() + "的语文平均分为:" + msf.getValue());
			}
		}
	}

	/**
	 * 按数学成绩对班级排序
	 */
	public void sortMathByAverage() {
		BanJi bj = null;
		Map scoreMap = new HashMap();
		Set scoreSet = schoolMap.keySet();
		boolean flag=false; 					//指示有班级中没有学生
		for (String s : scoreSet) {
			bj = this.searchById(s);
			if (bj.getStuList().isEmpty()) { // 班级中没有学生
				System.out.println("该班级中没有学生,请先添加!!");
			} else {
				float sum = 0.0f;
				int i = 0;
				List listStudent = bj.getStuList();
				Iterator it = listStudent.iterator();
				while (it.hasNext()) {
					i++;
					sum = sum + it.next().getMath();
				}
				float ave = sum / i;
				scoreMap.put(bj.getClassName(), ave); // 班级名-平均分 存入map
			}
		}
		// scoreMap.remove("主学生列表"); // 排序中不出现主学生列表
		if (!flag) {  // 所有班级中都有学生时
			List> lm = new ArrayList>(scoreMap.entrySet());
			Collections.sort(lm, new Comparator>() {
				@Override
				public int compare(Entry o1, Entry o2) {
					return o2.getValue().compareTo(o1.getValue());
				}
			});
			System.out.println("排序后的数据为:");
			for (Map.Entry msf : lm) {
				System.out.println(msf.getKey() + "的数学平均分为:" + msf.getValue());
			}
		}
	}

	/**
	 *   显示所有班级的名称
	 */
	public void displayBanjiName() {
		Set banjiSet = schoolMap.keySet();
		if (banjiSet.size() == 1) { // 只有主学生列表时 实际上不存在班级
			System.out.println("学校中没有班级,请先添加!!");
		} else {
			for (String s : banjiSet) {
				System.out.println(schoolMap.get(s).getClassName());
			}
		}
	}
}

TestDemo.java

import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

/**
 *     主流程测试类
 * @author zhj
 * 2019年5月7日-上午11:18:41
 *
 */
public class TestDemo {
	// 对学生类Student进行测试
	public void testStudent() {
		Student student1 = new Student("s001", "张三", 44f, 89f);
		Student student2 = new Student("s002", "李四", 66f, 56f);
		Student student3 = new Student("s003", "张三", 44f, 89f);
		Student student4 = new Student("s003", "张三", 44f, 89f);
		System.out.println(student1);
		System.out.println(student2.equals(student1));
		System.out.println(student4.equals(student3));
	}

	// 对班级类进行测试
	public void testBanJi() {
		Student student1 = new Student("s001", "张三", 44f, 89f);
		Student student2 = new Student("s002", "李四", 66f, 56f);
		Student student3 = new Student("s003", "王五", 89f, 78f);
		Student student4 = new Student("s001", "张三", 44f, 89f);
		// 创建一个班级对象
		BanJi banji = new BanJi("b101", "一年1班");
		banji.addStudent(student1);
		banji.addStudent(student2);
		banji.addStudent(student3);
		// banji.addStudent(student4);
		// 测试查找学生
		System.out.println(banji.searchStudentByNum("s001"));
		System.out.println(banji.searchStudentByNum("s004"));
		// 测试显示
		System.out.println();
		banji.displayAllStudent();
		// 测试输入成绩
		System.out.println();
		banji.insertChineseScore("s001", 77f);
		banji.insertMathScore("s002", 34f);
		banji.displayAllStudent();
		System.out.println();
		banji.insertMathScore("s006", 34f);
		// 测试删除
		System.out.println();
		banji.deleteStudent("s004");
		banji.deleteStudent("s003");
		banji.displayAllStudent();
	}

	// 对学校类进行测试
	public void testSchool() {
		Student student1 = new Student("s001", "张三", 44f, 89f);
		Student student2 = new Student("s002", "李四", 66f, 56f);
		Student student3 = new Student("s003", "王五", 89f, 78f);
		Student student4 = new Student("s004", "赵六", 92f, 88f);
		Student student5 = new Student("s005", "宋七", 59f, 68f);
		Student student6 = new Student("s005", "吴八", 73f, 76f);
		// 创建两个班级
		BanJi bj101 = new BanJi("b101", "一年1班");
		BanJi bj102 = new BanJi("b102", "一年2班");
		bj101.addStudent(student1);
		bj101.addStudent(student2);
		bj101.addStudent(student3);
		bj102.addStudent(student4);
		bj102.addStudent(student5);
		bj102.addStudent(student6);
		System.out.println();
		// 添加到学校里
		School school = new School();
		school.addBanji(bj101);
		school.addBanji(bj102);
		System.out.println();
		// 显示
		school.displayBanjiName();
		System.out.println();
		// 添加
		BanJi bj3 = new BanJi("b103", "一年3班");
		school.addBanji(bj3);
		System.out.println();
		// 删除
		school.deleteBanji(bj3);
		System.out.println();
		// 班级名查找
		System.out.println(school.searchByName("一年1班").getClassName());
		System.out.println();
		// 班号查找
		System.out.println(school.searchById("b101").getClassName());
		System.out.println();
		// 语文平均分排序
		school.sortChineseByAverage();
		System.out.println();
		// 数学平均分排序
		school.sortMathByAverage();
		System.out.println();
	}

	// 主菜单
	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("            **班级管理**");
		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 - 返回上一级菜单");
		System.out.println("**************************************");
	}

	// 主流程
	public void test() {
		TestDemo td = new TestDemo();
		Scanner sc = new Scanner(System.in);
		int input0 = 0, input1 = 0, input2 = 0;
		// 创建学校容器
		School school = new School();
		// 创建主学生列表
		BanJi mainStudentList = new BanJi("b000", "主学生列表");
		// 将主学生列表添加到学校中
		school.addBanji(mainStudentList);
		// 创建普通班级容器
		BanJi averageStudentList = null;
		while (true) {
			td.mainMenu();
			System.out.println("请输入对应数字进行操作:");
			try {
				input0 = sc.nextInt();
			} catch (InputMismatchException e) {
				System.out.println("请输入正确类型的数据!");
				String s = sc.next();
				continue;
			}
			if (input0 == 0) {
				break;
			}
			switch (input0) {
			case 1:
				// 班级管理
				td.banJiMenu();
				System.out.println("请输入对应的数字进行班级管理:");
				try {
					input1 = sc.nextInt();
				} catch (InputMismatchException e) {
					System.out.println("请输入正确类型的数据!");
					String s = sc.next();
					break;
				}
				if (input1 == 9) {
					break;
				}
				switch (input1) {
				case 1:
					System.out.println("添加学生到主学生列表");
					System.out.println("请输入要添加的学生人数:");
					try {
						int count1 = sc.nextInt();
						if (count1 <= 0) { // 输入不合逻辑
							System.out.println("您输入了不合逻辑的数字,将被强制转成1 !");
							count1 = 1;
						}
						for (int i = 1; i <= count1; i++) {
							System.out.println("请输入第" + i + "名学生");
							System.out.println("请输入学生学号:");
							String stuId = sc.next();
							System.out.println("请输入学生姓名:");
							String stuName = sc.next();
							System.out.println("请输入学生数学成绩::");
							float stuMath = sc.nextFloat();
							System.out.println("请输入学生语文成绩::");
							float stuChinese = sc.nextFloat();
							// 创建学生类对象
							Student stu = new Student(stuId, stuName, stuMath, stuChinese);
							mainStudentList.addStudent(stu);
						}
					} catch (InputMismatchException e) {
						System.out.println("请输入正确类型的数据!");
						String s = sc.next();
					}
					break;
				case 2:
					System.out.println("添加学生到普通班级");
					System.out.println("请输入要添加班级名称:");
					String cName = sc.next();
					// 判断该班级是否在学校中存在
					averageStudentList = school.searchByName(cName);
					if (averageStudentList == null) {
						System.out.println("该班级不存在,请先添加!");
					} else {
						System.out.println("请输入要添加的学生人数:");
						try {
							int count2 = sc.nextInt();
							if (count2 <= 0) { // 输入不合逻辑
								System.out.println("您输入了不合逻辑的数字,将被强制转成1 !");
								count2 = 1;
							}
							for (int i = 1; i <= count2; i++) {
								System.out.println("请输入第" + i + "名学生");
								System.out.println("请输入学生学号:");
								String stuId = sc.next();
								// 首先判断该学号学生是否在主学生列表存在
								Student stu = mainStudentList.searchStudentByNum(stuId);
								if (stu == null) {
									// 不存在继续输入其他信息
									System.out.println("该学生信息不完全,请继续输入::");
									System.out.println("请输入学生姓名:");
									String stuName = sc.next();
									System.out.println("请输入学生数学成绩::");
									float stuMath = sc.nextFloat();
									System.out.println("请输入学生语文成绩::");
									float stuChinese = sc.nextFloat();
									stu = new Student(stuId, stuName, stuMath, stuChinese);
									mainStudentList.addStudent(stu);
									averageStudentList.addStudent(stu);
								} else {
									// 存在则直接添加
									averageStudentList.addStudent(stu);
								}
							}
						} catch (InputMismatchException e) {
							System.out.println("请输入正确类型的数据!");
							String s = sc.next();
						}
						// 显示学生信息(仅用于测试)
						System.out.println("主学生列表:");
						mainStudentList.displayAllStudent();
						System.out.println(cName + "学生信息:");
						averageStudentList.displayAllStudent();
					}
					break;
				case 3:
					System.out.println("通过学号查询学生信息");
					System.out.println("请输入要查询的班级名称:");
					String cName3 = sc.next();
					// 查询班级是否存在
					BanJi bj3 = school.searchByName(cName3);
					if (bj3 == null) {
						System.out.println("该班级不存在!");
					} else {
						System.out.println("请输入要查询的学号:");
						String stuId = sc.next();
						Student stu = bj3.searchStudentByNum(stuId);
						if (stu == null) {
							System.out.println("该学生在" + cName3 + "中不存在!");
						} else {
							System.out.println(stu);
						}
					}
					break;
				case 4:
					System.out.println("输入班级学生的语文成绩");
					System.out.println("请输入该学生所在班级名称:");
					String cName4 = sc.next();
					BanJi bj4 = school.searchByName(cName4);
					if (bj4 == null) {
						System.out.println("该班级不存在!");
					} else {
						System.out.println("请输入要修改学生的人数:");
						try {
							int count4 = sc.nextInt();
							if (count4 <= 0) { // 输入不合逻辑
								System.out.println("您输入了不合逻辑的数字,将被强制转成1 !");
								count4 = 1;
							}
							for (int i = 1; i <= count4; i++) {
								System.out.println("请输入第" + i + "名学生");
								System.out.println("请输入学生学号:");
								String stuId = sc.next();
								// 首先判断该学号学生是否在对应列表中存在
								Student stu = bj4.searchStudentByNum(stuId);
								if (stu == null) {
									System.out.println("该学生不存在,请先添加到对应班级中!");
								} else {
									System.out.println("请输入该学生语文成绩:");
									Float sChinese = sc.nextFloat();
									bj4.insertChineseScore(stuId, sChinese); // 对应列表修改
									if (!cName4.equals("mainStudentList")) { // 如果该班级不是主学生列表
										mainStudentList.insertChineseScore(stuId, sChinese); // 主列表中该学生也得修改
									}
								}
							}
						} catch (InputMismatchException e) {
							System.out.println("请输入正确类型的数据!");
							String s = sc.next();
						}
					}
					break;
				case 5:
					System.out.println("输入班级学生的数学成绩");
					System.out.println("请输入该学生所在班级名称:");
					String cName5 = sc.next();
					BanJi bj5 = school.searchByName(cName5);
					if (bj5 == null) {
						System.out.println("该班级不存在!");
					} else {
						System.out.println("请输入要修改学生的人数:");
						try {
							int count5 = sc.nextInt();
							if (count5 <= 0) { // 输入不合逻辑
								System.out.println("您输入了不合逻辑的数字,将被强制转成1 !");
								count5 = 1;
							}
							for (int i = 1; i <= count5; i++) {
								System.out.println("请输入第" + i + "名学生");
								System.out.println("请输入学生学号:");
								String stuId = sc.next();
								// 首先判断该学号学生是否在对应列表中存在
								Student stu = bj5.searchStudentByNum(stuId);
								if (stu == null) {
									System.out.println("该学生不存在,请先添加到对应班级中!");
								} else {
									System.out.println("请输入该学生数学成绩:");
									Float sMath = sc.nextFloat();
									bj5.insertMathScore(stuId, sMath);
									if (!cName5.equals("mainStudentList")) { // 如果该班级不是主学生列表
										mainStudentList.insertMathScore(stuId, sMath); // 主列表中该学生也得修改
									}
								}
							}
						} catch (InputMismatchException e) {
							System.out.println("请输入正确类型的数据!");
							String s = sc.next();
						}
					}
					break;
				case 6:
					System.out.println("删除学生信息");
					System.out.println("请输入该学生所在班级名称:");
					String cName6 = sc.next();
					BanJi bj6 = school.searchByName(cName6);
					if (bj6 == null) {
						System.out.println("该班级不存在!");
					} else {
						System.out.println("请输入要删除学生的人数:");
						int count6 = 0;
						try { // 异常
							count6 = sc.nextInt();
						} catch (InputMismatchException e) {
							System.out.println("请输入正确类型的数据!");
							String s = sc.next();
						}
						if (count6 <= 0) { // 输入不合逻辑
							System.out.println("您输入了不合逻辑的数字,将被强制转成1 !");
							count6 = 1;
						}
						for (int i = 1; i <= count6; i++) {
							System.out.println("请输入第" + i + "名学生");
							System.out.println("请输入学生学号:");
							String stuId = sc.next();
							// 首先判断该学号学生是否在对应列表中存在
							Student stu = bj6.searchStudentByNum(stuId);
							if (stu == null) {
								System.out.println("该学生不存在!");
							} else {
								bj6.deleteStudent(stuId);
								if (!cName6.equals("mainStudentList")) {
									mainStudentList.deleteStudent(stuId);
								}
							}
						}
					}
					break;
				case 7:
					System.out.println("显示所有学生信息");
					System.out.println("请输入班级名称:");
					String cName7 = sc.next();
					BanJi bj7 = school.searchByName(cName7);
					if (bj7 == null) { // 该班级不存在
						System.out.println("该班级不存在!");
					}
					bj7.displayAllStudent();
					break;
				default: // 班级管理的default
					System.out.println("该数字没有对应的操作");
					break;
				}
				break;
			case 2:
				// 学校管理
				td.schoolMenu();
				System.out.println("请输入对应的数字进行学校管理:");
				try {
					input2 = sc.nextInt();
				} catch (InputMismatchException e) {
					System.out.println("请输入正确类型的数据!");
					String s = sc.next();
					break;
				}
				if (input2 == 9) {
					break;
				}
				switch (input2) {
				case 1:
					System.out.println("创建班级");
					System.out.println("请输入要创建班级的个数:");
					int count1 = 1;
					try {
						count1 = sc.nextInt();
					} catch (InputMismatchException e) {
						System.out.println("请输入正确类型的数据!");
						String s = sc.next();
						break;
					}
					if (count1 <= 0) { // 输入不合逻辑
						System.out.println("您输入了不合逻辑的数字,将被强制转成1 !");
						count1 = 1;
					}
					for (int i = 1; i <= count1; i++) {
						System.out.println("请输入班级id:");
						String cId1 = sc.next();
						BanJi bj1 = school.searchById(cId1);
						if (bj1 != null) {
							System.out.println("该班级已经存在!");
						} else {
							System.out.println("请输入班级名称:");
							String cName1 = sc.next();
							bj1 = new BanJi(cId1, cName1);
							school.addBanji(bj1);
						}
					}
					break;
				case 2:
					System.out.println("删除班级");
					System.out.println("请输入班级id:");
					String cId2 = sc.next();
					if (cId2.equals("b000")) { // 判断是否主表
						System.out.println("主学生列表不能删除!");
						break;
					}
					BanJi bj2 = school.searchById(cId2);
					if (bj2 == null) {
						System.out.println("该班级不存在!");
					} else {
						school.deleteBanji(bj2);
					}
					break;
				case 3:
					System.out.println("通过班级名称查询班级信息");
					System.out.println("请输入班级名称:");
					String cName3 = sc.next();
					if (cName3.equals("主学生列表")) { // 主学生列表不是实际上的班级,视作无效处理
						System.out.println("不是可以查看的班级,请返回!");
						break;
					}
					BanJi bj3 = school.searchByName(cName3);
					if (bj3 == null) {
						System.out.println("该班级不存在!");
					} else {
						System.out.println("该班级存在");
						System.out.println("该班级班号为:" + bj3.getClassId());
						System.out.println("该班级班名为:" + bj3.getClassName());
					}
					break;
				case 4:
					System.out.println("对各班语文成绩按平均分进行由大到小排序:");
					school.sortChineseByAverage();
					break;
				case 5:
					System.out.println("对各班数学成绩按平均分进行由大到小排序:");
					school.sortMathByAverage();
					break;
				case 6:
					System.out.println("显示所有班级名称:");
					school.displayBanjiName();
					break;
				default: // 学校管理的default
					System.out.println("该数字没有对应的操作");
					break;
				}
				break;
			default: // mainMenu的default
				System.out.println("该数字没有对应的操作");
				break;
			}
		}
	}

	public static void main(String[] args) {
		TestDemo td = new TestDemo();
		// td.testStudent();
		// td.testBanJi();
		// td.testSchool();
		td.test();
	}
}

你可能感兴趣的:(练习,javaSE)