1. 学生管理系统项目
尝试完成以下功能
实体类:
学生类:
id, 姓名,年龄,性别,成绩
需要使用数组保存学生信息
Student[] allStu
需要完成的方法
1. 根据学生的ID,找到对应的学生对象【完成】
2. 完成方法,添加新学生
3. 完成方法,删除指定ID的学生
4. 完成方法,展示数组中所有的学生信息
5. 根据学生成绩,完成降序排序
1.1 包结构划分
包名规范:
1. 所有的单词全部小写
2. 不同的单词直接使用 . 隔开
3. 包结构其实对应的就是一个真实的目录结构
包结构的使用是为了在开发中让代码结构更加明确,更好管理,会慢慢接触到MVC设计模式。
MVC ==> Model Viewer Controller
目前学生管理系统需要的包【目前功能所需】
实体类 : 所有的实体类都会在一个包下
管理类 : 需要一个管理类来管理学生操作【核心】,需要一个包
主方法类 : 主方法
测试类: 测试功能,养成习惯,对于代码中的功能,写一个测试一个,今天会到用@Test
包名:
com.qfedu.student.system
--| entity 实体类包
--| manager 管理类包
--| mainproject 主方法所在包
--| testsystem 测试类
1.2 学生实体类
package com.qfedu.student.system.entity;
public class Student {
private int id;
private String name;
private int age;
private char gender;
private int score;
public Student() {
}
public Student(int id, String name, int age, char gender, int score) {
super();
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.score = score;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + ", score=" + score
+ "]";
}
}
1.3 管理类功能分析
管理类:
1. 数据的保存
2. 数据处理
CRUD 增删改查
数据的保存
明确使用的是一个Student类型的数据
Student[] allStus;
问题:
成员变量
使用一个成员变量数组来保存对应的数据,所有的内容都依赖于类对象的操作
来完成,而且每一个管理类对象中保存的数据都是不一样的。
目前的不一样,是为了更好的复用性,后来的数据一样,是为了数据的统一性
静态成员变量
不关有多少个类对象,当前数据有且只有一份!!!
复用问题!!!
当前管理类
功能后期是考虑复用的!!!
不管是数据的存储方式,数据的处理方式,都要需要考虑满足多种情况,多种方式。
1.4 管理类构造方法
因为当前管理类内的成员变量是一个数组,当前构造方法需要对于保存学生信息的数组进行初始化操作。
1. 传入参数是一个学生数组 【不行】
2. 传入参数是一个数组容量 √
传入一个数组,操作性,包括安全性都是存在一定的隐患。操作性较差,用户需要提供真实管理数据的空间,繁琐,引用指向有可能导致数据丢失。
传入一个数组容量,用户操作自由度更高!!!方便!!!快捷!!!省心省事!!!
要求传入的参数是一个数组容量,有没有要求???
1. int
2. 非负
3. int类型的最大值
【补充】Java中数组容量范围是在int范围以内,要求数组容量不得超出int范围
Integer.MAX_VALUE - 8 为什么-8后面解释!!!
构造方法这里提供两种
1. 无参数构造方法
用户不用指定容量,我们给予用户一个初始化容量使用
2. 有参数构造方法
用户指定底层数组容量,要求数据在合理范围以内
1.5 构造方法完成和成员变量补充
package com.qfedu.student.system.manager;
import com.qfedu.student.system.entity.Student;
public class StudentManager {
private Student[] allStus = null;
private static final int DEFAULT_CAPACITY = 10;
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
public StudentManager() {
allStus = new Student[DEFAULT_CAPACITY];
}
public StudentManager(int initCapacity) {
if (initCapacity < 0 || initCapacity > MAX_ARRAY_SIZE) {
System.out.println("Input Parameter is Invalid!");
System.exit(