学生管理系统项目【所有知识点整合】

1. 学生管理系统项目尝试完成以下功能 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的方法 1. 根据学生的ID,找到对应的学生对象【完成】 2. 完成方法,添加新学生 3. 完成方法,删除指定ID的学生 4. 完成方法,展示数组中所有的学生信息 5. 根据学生成绩,完成降序排序1.1 包结构划分包名规范: 1. 所有的单词全部小写 2. 不同的单词直接使用 . 隔开 3. 包结
摘要由CSDN通过智能技术生成
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;

/**
 * 学生实体类
 * 
 * @author Anonymous
 *
 */
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;
	}

	/**
	 * 使用System.out.println打印展示Student类对象时
	 * 是直接自动调用toString方法,展示该方法返回String字符串内容
	 */
	@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 {
   
	/**
	 * 私有化保存学生信息的数组,对外不能公开,有且只针对于当前管理类使用
	 * 初始化为null
	 */
	private Student[] allStus = null;
	
	/**
	 * DEFAULT_CAPACITY 默认容量,这里是一个带有名字的常量
	 */
	private static final int DEFAULT_CAPACITY = 10;
	
	/**
	 * 数组最大容量,是int类型最大值 - 8
	 * -8等我给你讲
	 */
	private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
	
	/**
	 * 无参数构造方法,但是需要创建底层保存学生数据的Student数组,因为当前数组
	 * 不存在,指向为null
	 * 
	 */
	public StudentManager() {
   
		allStus = new Student[DEFAULT_CAPACITY];
	}

	/**
	 * 用户指定初始化容量,但是要求初始化容量在合理范围以内,不能小于0 ,不能
	 * 大于数组的最大值,MAX_ARRAY_SIZE
	 * 
	 * @param initCapacity 用户指定的初始化容量
	 */
	public StudentManager(int initCapacity) {
   
		if (initCapacity < 0 || initCapacity > MAX_ARRAY_SIZE) {
   
			System.out.println("Input Parameter is Invalid!");
			/* 异常抛出!!! 补充该知识点 暂时留下一个 System.exit(0) 退出程序 */
			System.exit(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值