详细设计:项目包括四个类的设计
学生类(Student)
班级类(BanJi)
学校类(School)
主流程类(TestDemo)
1)Student类:
属性: 学号(stuNum)、姓名(stuName) 这两个属性为String类型
数学成绩(math)、语文成绩(chinese) 这两个属性为float类型
方法: 构造方法
setter和getter方法
hashCode()和equals()方法
toString()方法
2)Banji类:
属性:班级编号(classId)、班级名称(className) 这两个属性均为String类型
存放学生的集合(stuList) 这个属性为List类型
方法:构造方法
getter和setter方法
将学生添加到班级:public void addStudent(Student stu){}
通过学号查询学生在班级中是否存在: public Student searchStudentByNum(String stuNum){}
输入班级学生的语文成绩:public void insertChineseScore(String stuNum,float score){}
输入班级学生的数学成绩:public void insertMathScore(String stuNum,float score){}
删除学习信息:public void deleteStudent(String stuNum){}
显示所有学生的信息(包括学号和姓名):public void displayAllStudent(){}
3)School类
属性:存放班级的集合(schoolMap) ,类型为Map
方法: 构造方法
getter和setter方法
添加班级:public void addBanji(Banji banji){}
删除班级 : public void deleteBanji(Banji banji){}
通过班级名称查询班级:public BanJi searchByName(String className) {}
对各班语文成绩按平均分进行由大到小排序:public void sortChineseByAverage() {}
对各班数学成绩按平均分进行由大到小排序:public void sortMathByAverage() {}
显示所有班级名称:public void displayBanJiName() {}
4)TestDemo类
方法:
班级的测试方法:public void testBanJi(){}
学校的测试方法:public void testSchool(){}
主菜单: public void mainMenu(){}
学校管理菜单:public void schoolMenu(){}
班级管理菜单:public void banJiMenu(){}
主流程:public void test(){}
本项目的收获:
-
排序问题。数组排序使用Arrays.sort(int[] arr)即可完成,对于list集合则可以采用Collections类中 sort()方法:sort(List list)根据元素的自然顺序对指定列表按升序进行排序,如果是字符串或者字符数据按照assic码值进行排序;自定义类则需要实现接口。
① Comparator接口强行对某个对象(自定义类对象)进行整体排序,可将comparator传递给Collections.sort或Arrays.sort方法。int compare(T o1, T o2) 用来比较排序的两个参数:a. 如果 o1 < o2,返回负整数;b. 如果 o1 == o2,返回0;c. 如果 o1 > o2,返回正整数。Comparator接口还包含一个方法boolean equals(Object obj),用于指示某个对象obj是否等于This对象。另外这个方法会被Object类中的equals()方法重写,所以自定义类实现Comparator接口是不必被强制重写equals的,但是必须重写compare()方法用于实现特定参数的比较。
②Comparable接口强行对实现它的每个类的对象进行整体排序;这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法;对于集合,通过调用Collections.sort方法进行排序;对于数组,通过调用Arrays.sort方法进行排序;int compareTo(T o) 方法,该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。 -
重复对象判断问题。例如学生类,如果两个学生对象学号和姓名都相同,那么它们就是一个重复对象,但是对于默认equals方法来说仍是两个对象,好比两只年龄和名字都相同的猫,所以需要重写HashCode()和equals()方法。
-
集合。ArrayList:1.底层由数组实现;2.元素有序且可以重复;3.元素值可以为null。HashSet:1.元素无序且不可以重复2.只允许一个null元素;HashMap:1.键不能重复;2.允许使用null值和null键;3.HashMap中的Entry对象是无序排列。
-
迭代器。对于HashSet与HashMap可以用Iterator(迭代器)以统一的方式对各种元素进行遍历。代码为Iterator it = set.Iterator();while(it.hasNext()){System.out.println(it.next())}。
代码:
学生类
/**
* 学生类,用于存储学生信息
* @author hblack
*/
public class Student {
//成员属性:学号,姓名,数学成绩,语文成绩
private String stuNum;
private String stuName;
private float math;
private float chinese;
public String getStuNum() {
return stuNum;
}
public void setStuNum(String stuNum) {
this.stuNum = stuNum;
}
public String getStuName() {
return stuName;
}
public void setStuName(String