我是靠谱客的博主 追寻鞋子,最近开发中收集的这篇文章主要介绍Java 学生管理系统--------13一、学生管理系统分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、学生管理系统

分析

1.1学生类 

package com.qf.pojo;

public class Student {
	
	private String name;
	private char sex;
	private int age;
	private String classId;
	private String id;
	
	public Student() {
	}
	
	public Student(String classId, String id) {
		this.classId = classId;
		this.id = id;
	}

	public Student(String name, char sex, int age, String classId, String id) {
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.classId = classId;
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getClassId() {
		return classId;
	}

	public void setClassId(String classId) {
		this.classId = classId;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}
	
	
	//判断两个学生对象是否一致根据:班级号+学号
	@Override
	public boolean equals(Object obj) {
		if(this == obj){
			return true;
		}
		
		if(obj instanceof Student){
			Student stu = (Student) obj;
			if(this.classId.equals(stu.classId) && this.id.equals(stu.id)){
				return true;
			}
		}
		return false;
	}
	
	@Override
	public String toString() {
		return name + "t" + sex + "t" + age + "t" + classId + "t" + id;
	}
}

 1.2接口类

package com.qf.sms;

import com.qf.pojo.Student;

//学生管理系统的接口
public interface SMS {
	
	int NAME = 1;
	int SEX = 2;
	int AGE = 3;
	int CLASS_ID = 4;
	int ID = 5;

	/**
	 * 添加学生
	 * @param stu 目标学生
	 * @return 状态码
	 */
	public int add(Student stu);
	
	/**
	 * 学生容器的扩容
	 */
	public void expansion();
	
	/**
	 * 删除学生
	 * @param classId 班级号
	 * @param id 学号
	 * @return 状态码
	 */
	public int delete(String classId,String id);
	
	/**
	 * 修改学生信息
	 * @param classId 班级号
	 * @param id 学号
	 * @param type 修改的类型(1-姓名 2-性别 3-年龄 4-班级号 5-学号)
	 * @param val 要修改的值
	 * @return 修改是否成功
	 */
	public boolean update(String classId,String id,int type,Object val);
	
	/**
	 * 修改学生姓名
	 * @param classId 班级号
	 * @param id 学号
	 * @param name 要修改的值
	 * @return 修改是否成功
	 */
	public boolean updateName(String classId,String id,String name);
	
	/**
	 * 修改学生性别
	 * @param classId 班级号
	 * @param id 学号
	 * @param sex 要修改的值
	 * @return 修改是否成功
	 */
	public boolean updateSex(String classId,String id,char sex);
	
	/**
	 * 修改学生年龄
	 * @param classId 班级号
	 * @param id 学号
	 * @param age 要修改的值
	 * @return 修改是否成功
	 */
	public boolean updateAge(String classId,String id,int age);
	
	/**
	 * 修改学生班级号
	 * @param classId 班级号
	 * @param id 学号
	 * @param targetClassId 要修改的值
	 * @return 修改是否成功
	 */
	public boolean updateClassId(String classId,String id,String targetClassId);
	
	/**
	 * 修改学生学号
	 * @param classId 班级号
	 * @param id 学号
	 * @param targetId 要修改的值
	 * @return 修改是否成功
	 */
	public boolean updateId(String classId,String id,String targetId);
	
	/**
	 * 查询学生
	 * @param classId 班级号
	 * @param id 学号
	 * @return 在容器中的下标
	 */
	public int query(String classId,String id);
	
	/**
	 * 查询学生
	 * @param stu 目标学生
	 * @return 在容器中的下标
	 */
	public int query(Student stu);
	
	/**
	 * 查询学生
	 * @param name 姓名
	 * @return 学生数组
	 */
	public Student[] queryByName(String name);
	
	/**
	 * 查询学生
	 * @param sex 性别
	 * @return 学生数组
	 */
	public Student[] queryBySex(char sex);
	
	/**
	 * 查询学生
	 * @param startAge 开始年龄(包含)
	 * @param endAge 结束年龄(不包含)
	 * @return 学生数组
	 */
	public Student[] queryByAge(int startAge,int endAge);
	
	/**
	 * 查询学生
	 * @param classId 班级号
	 * @return 学生数组
	 */
	public Student[] queryByClassId(String classId);
	
	/**
	 * 查询学生
	 * @param classId 班级号
	 * @param id 学生号
	 * @return 学生对象
	 */
	public Student queryByClassIdAndId(String classId, String id);
	
	/**
	 * 打印容器内的所有学生对象
	 */
	public void printStuInfo();
	
	/**
	 * 传入数组打印学生
	 * @param stus 学生数组
	 */
	default void printStuInfo(Student[] stus){
		for (Student stu : stus) {
			System.out.println(stu);
		}
	}
}

 1.3实现类

package com.qf.sms.impl;

import java.util.Arrays;

import com.qf.pojo.Student;
import com.qf.sms.SMS;
import com.qf.util.StuInfoUtils;

//学生管理系统的实现类
public class SMSImpl implements SMS{

	//学生容器
	private Student[] stus;
	//初始化容量
	private static final int INIT_CAPACITY = 3;
	//数据长度(指针,指针指到哪就从哪开始添加数据)
	private int size;

	public SMSImpl() {
		//初始化容器
		stus = new Student[INIT_CAPACITY];

		//做假数据
		add(new Student("麻生希", '女', 20, "2204", "001"));
		add(new Student("椎名空", '女', 21, "2204", "002"));
		add(new Student("樱井步", '女', 22, "2204", "003"));
		add(new Student("水菜丽", '女', 23, "2204", "004"));
		add(new Student("松岛枫", '女', 24, "2204", "005"));
		add(new Student("朝桐光", '女', 25, "2204", "006"));
		add(new Student("水野朝阳", '女', 26, "2204", "007"));
		add(new Student("爱田奈奈", '女', 27, "2204", "008"));
		add(new Student("三上悠亚", '女', 28, "2204", "009"));
		add(new Student("吉泽明步", '女', 28, "2204", "010"));

		add(new Student("明日花绮罗", '女', 28, "2205", "001"));
		add(new Student("邻原爱密莉", '女', 28, "2205", "002"));
		add(new Student("小西满里惠", '女', 28, "2205", "003"));
		add(new Student("桃谷绘里香", '女', 28, "2205", "004"));
		add(new Student("波多野结衣", '女', 28, "2205", "005"));
		add(new Student("小泽玛利亚", '女', 28, "2205", "006"));
	}

	@Override
	public int add(Student stu) {
		//1.判断学生信息是否合法
		if(!StuInfoUtils.isStu(stu)){
			return -1;
		}

		//2.判断是否有重复学生
		if(query(stu) != -1){
			return -2;
		}

		//3.判断是否扩容
		if(size == stus.length){
			expansion();
		}

		//4.添加学生
		stus[size] = stu;
		size++;
		return 1;
	}

	@Override
	public void expansion() {
		//扩容机制:原数组长度的1.5倍
		int oldCapacity = stus.length;
		int newCapacity = oldCapacity + (oldCapacity>>1);
		stus = Arrays.copyOf(stus, newCapacity);
	}

	@Override
	public int delete(String classId, String id) {
		//1.判断学生信息是否合法
		if(!StuInfoUtils.isClassId(classId) || !StuInfoUtils.isId(id)){
			return -1;
		}

		//2.判断是否有该学生
		int index = query(classId, id);
		if(index == -1){
			return -2;
		}

		//3.删除学生
		for (int i = index; i < size-1; i++) {
			stus[i] = stus[i+1];
		}
		size--;
		return 1;
	}

	@Override
	public boolean update(String classId, String id, int type, Object val) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean updateName(String classId, String id, String name) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean updateSex(String classId, String id, char sex) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean updateAge(String classId, String id, int age) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean updateClassId(String classId, String id, String targetClassId) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean updateId(String classId, String id, String targetId) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public int query(String classId, String id) {

		//创建临时学生对象
		Student stu = new Student(classId, id);

		int index = query(stu);
		return index;
	}

	@Override
	public int query(Student stu) {
		for (int i = 0; i < size; i++) {
			if(stus[i].equals(stu)){
				return i;
			}
		}
		return -1;
	}

	@Override
	public Student[] queryByName(String name) {
		//1.判断学生合法性
		if(!StuInfoUtils.isName(name)){
			return null;
		}

		//2.确定符合条件的学生人数
		int num = 0;
		for (int i = 0; i < size; i++) {
			if(stus[i].getName().equals(name)){
				num++;
			}
		}
		if(num == 0){
			return null;
		}

		//3.创建新数组
		Student[] newStus = new Student[num];

		//4.将符合条件的学生对象添加到新数组中
		int index = 0;
		for (int i = 0; i < size; i++) {
			if(stus[i].getName().equals(name)){
				newStus[index] = stus[i];
				index++;
			}
		}
		return newStus;
	}

	@Override
	public Student[] queryBySex(char sex) {
		//1.判断学生合法性
		if(!StuInfoUtils.isSex(sex)){
			return null;
		}

		//2.确定符合条件的学生人数
		int num = 0;
		for (int i = 0; i < size; i++) {
			if(stus[i].getSex() == sex){
				num++;
			}
		}
		if(num == 0){
			return null;
		}

		//3.创建新数组
		Student[] newStus = new Student[num];

		//4.将符合条件的学生对象添加到新数组中
		int index = 0;
		for (int i = 0; i < size; i++) {
			if(stus[i].getSex() == sex){
				newStus[index] = stus[i];
				index++;
			}
		}
		return newStus;
	}

	@Override
	public Student[] queryByAge(int startAge, int endAge) {
		//1.判断学生合法性
		if(startAge > endAge || !StuInfoUtils.isAge(startAge) || !StuInfoUtils.isAge(endAge)){
			return null;
		}

		//2.确定符合条件的学生人数
		int num = 0;
		for (int i = 0; i < size; i++) {
			int age = stus[i].getAge();
			if(age >= startAge && age <= endAge){
				num++;
			}
		}
		if(num == 0){
			return null;
		}

		//3.创建新数组
		Student[] newStus = new Student[num];

		//4.将符合条件的学生对象添加到新数组中
		int index = 0;
		for (int i = 0; i < size; i++) {
			int age = stus[i].getAge();
			if(age >= startAge && age <= endAge){
				newStus[index] = stus[i];
				index++;
			}
		}
		return newStus;
	}

	@Override
	public Student[] queryByClassId(String classId) {
		//1.判断学生合法性
		if(!StuInfoUtils.isClassId(classId)){
			return null;
		}

		//2.确定符合条件的学生人数
		int num = 0;
		for (int i = 0; i < size; i++) {
			if(stus[i].getClassId().equals(classId)){
				num++;
			}
		}
		if(num == 0){
			return null;
		}

		//3.创建新数组
		Student[] newStus = new Student[num];

		//4.将符合条件的学生对象添加到新数组中
		int index = 0;
		for (int i = 0; i < size; i++) {
			if(stus[i].getClassId().equals(classId)){
				newStus[index] = stus[i];
				index++;
			}
		}
		return newStus;
	}

	@Override
	public Student queryByClassIdAndId(String classId, String id) {
		//1.判断学生信息合法性
		if(!StuInfoUtils.isClassId(classId) || !StuInfoUtils.isId(id)){
			return null;
		}
		
		//2.查询是否有该学生
		int index = query(classId, id);
		if(index == -1){
			return null;
		}
		
		//3.获取容器中的学生对象
		Student stu = stus[index];
		return stu;
	}

	@Override
	public void printStuInfo() {
		for (int i = 0; i < size; i++) {
			System.out.println(stus[i]);
		}
	}

}

 14工具类

package com.qf.util;

import com.qf.pojo.Student;

//验证学生信息合法性的工具类
public class StuInfoUtils {

	//验证学生信息合法性(姓名、性别、年龄、班级号、学号)
	public static boolean isStu(Student stu){
		String name = stu.getName();
		char sex = stu.getSex();
		int age = stu.getAge();
		String classId = stu.getClassId();
		String id = stu.getId();
		
		if(isName(name) && isSex(sex) && isAge(age) && isClassId(classId) && isId(id)){
			return true;
		}
		return false;
	}

	//姓名合法性:2~8位
	public static boolean isName(String name) {
		//获取字符串的字符长度
		int len = name.length();
		if(len >= 2 && len <= 8){
			return true;
		}
		return false;
	}

	//性别合法性:男和女
	public static boolean isSex(char sex) {
		if(sex == '男' || sex == '女'){
			return true;
		}
		return false;
	}

	//年龄合法性:18~60
	public static boolean isAge(int age) {
		if(age >= 18 && age <= 60){
			return true;
		}
		return false;
	}

	//班级号合法性:4位
	public static boolean isClassId(String classId) {
		//获取字符串的字符长度
		int len = classId.length();
		if(len == 4){
			return true;
		}
		return false;
	}

	//学号合法性:3位
	public static boolean isId(String id) {
		//获取字符串的字符长度
		int len = id.length();
		if(len == 3){
			return true;
		}
		return false;
	}
}

 1.5测试类

package com.qf.main;

import java.util.Scanner;
import com.qf.pojo.Student;
import com.qf.sms.impl.SMSImpl;

public class Test {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		SMSImpl sms = new SMSImpl();

		System.out.println("欢迎进入**学生管理系统...");

		boolean flag = true;
		while(flag){
			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("886 - 退出系统");
			int num = scan.nextInt();

			switch (num) {
			case 1:
				addMenu(scan, sms);
				break;
			case 2:
				deleteMenu(scan, sms);
				break;
			case 3:

				break;
			case 4:

				queryMenu(scan, sms);

				break;
			case 5:
				sms.printStuInfo();
				break;
			case 886:
				flag = false;
				System.out.println("正在退出**学生管理系统,欢迎下次再来...");
				break;
			default:
				System.out.println("输入错误,请重新输入...");
				break;
			}
			System.out.println("----------------------");
		}

		scan.close();
	}

	private static void queryMenu(Scanner scan, SMSImpl sms) {
		System.out.println("选择以下信息查询:");
		System.out.println("1-姓名:");
		System.out.println("2-性别:");
		System.out.println("3-年龄段:");
		System.out.println("4-班级:");
		System.out.println("5-班级号和学号:");
		int num = scan.nextInt();
		
		String classId = null;
		switch (num) {
		case 1:
			System.out.println("请输入姓名:");
			String name = scan.next();
			Student[] queryByName = sms.queryByName(name);
			if(queryByName != null){
				sms.printStuInfo(queryByName);
			}else{
				System.out.println("没有查询到该学生信息");
			}
			break;
		case 2:
			System.out.println("请输入性别:");
			char sex = scan.next().charAt(0);
			Student[] queryBySex = sms.queryBySex(sex);
			if(queryBySex != null){
				sms.printStuInfo(queryBySex);
			}else{
				System.out.println("没有查询到该学生信息");
			}
			break;
		case 3:
			System.out.println("请输入开始年龄:");
			int startAge = scan.nextInt();
			System.out.println("请输入结束年龄:");
			int endAge = scan.nextInt();
			Student[] queryByAge = sms.queryByAge(startAge, endAge);
			if(queryByAge != null){
				sms.printStuInfo(queryByAge);
			}else{
				System.out.println("没有查询到该学生信息");
			}
			break;
		case 4:
			System.out.println("请输入班级号:");
			classId = scan.next();
			Student[] queryByClassId = sms.queryByClassId(classId);
			if(queryByClassId != null){
				sms.printStuInfo(queryByClassId);
			}else{
				System.out.println("没有查询到该学生信息");
			}
			break;
		case 5:
			System.out.println("请输入班级号:");
			classId = scan.next();
			System.out.println("请输入学号:");
			String id = scan.next();
			Student queryByClassIdAndId = sms.queryByClassIdAndId(classId, id);
			if(queryByClassIdAndId != null){
				System.out.println(queryByClassIdAndId);
			}else{
				System.out.println("没有查询到该学生信息");
			}
			break;
		default:
			System.out.println("输入错误...");
			break;
		}
	}

	private static void deleteMenu(Scanner scan, SMSImpl sms) {
		System.out.println("请输入班级号:");
		String classId = scan.next();
		System.out.println("请输入学号:");
		String id = scan.next();

		int delete = sms.delete(classId, id);
		if(delete == -1){
			System.out.println("删除失败 -- 学生信息不合法");
		}else if(delete == -2){
			System.out.println("删除失败 -- 没有该学生");
		}else if(delete == 1){
			System.out.println("删除成功");
		}
	}

	//添加功能的菜单
	private static void addMenu(Scanner scan, SMSImpl sms) {
		System.out.println("请输入姓名:");
		String name = scan.next();
		System.out.println("请输入性别:");
		String str = scan.next();//"男"
		char sex = str.charAt(0);//获取下标为0上的字符 -- '男'
		System.out.println("请输入年龄:");
		int age = scan.nextInt();
		System.out.println("请输入班级号:");
		String classId = scan.next();
		System.out.println("请输入学号");
		String id = scan.next();

		Student stu = new Student(name, sex, age, classId, id);

		int add = sms.add(stu);
		if(add == -1){
			System.out.println("添加失败 -- 学生信息不合法");
		}else if(add == -2){
			System.out.println("添加失败 -- 有重复学生");
		}else if(add == 1){
			System.out.println("添加成功");
		}
	}
}

最后

以上就是追寻鞋子为你收集整理的Java 学生管理系统--------13一、学生管理系统分析的全部内容,希望文章能够帮你解决Java 学生管理系统--------13一、学生管理系统分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部