学生管理系统(可做大作业)

编程入门 行业动态 更新时间:2024-10-25 12:28:45

学生<a href=https://www.elefans.com/category/jswz/34/1769858.html style=管理系统(可做大作业)"/>

学生管理系统(可做大作业)

编写学生管理系统实现对象的增,删,查,改。现在展现简单的一部分功能,很多功能实现大家可以自行研究(需要源码的关注私信我)

代码(实现类):

package main;import java.util.Scanner;import pojo.QueryCode;
import pojo.Student;
import sms.impl.StudentManagerSystemImpl;public class Mian {public static void main(String[] args) {Scanner scan = new Scanner(System.in);StudentManagerSystemImpl sms = new StudentManagerSystemImpl();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:updateMenu(scan, sms);break;case 4:queryMenu(scan, sms);break;case 5:sms.printAllStus();break;case 886:flag = false;System.out.println("正在退出学生管理系统,欢迎下次再来~~~");break;default:System.out.println("选择错误,请重新输入...");break;}System.out.println("--------------------");}scan.close();}private static void updateMenu(Scanner scan, StudentManagerSystemImpl sms) {System.out.println("请输入班级号:");String classId = scan.next();System.out.println("请输入学号:");String id = scan.next();System.out.println("请选择需要修改的类型:");System.out.println("1-姓名");System.out.println("2-性别");System.out.println("3-年龄");System.out.println("4-班级号");System.out.println("5-学号");int type = scan.nextInt();System.out.println("请输入需要修改的值:");Object val = null;switch (type) {case 1:case 4:case 5:val = scan.next();break;case 2:val = scan.next().toCharArray()[0];break;case 3:val = scan.nextInt();break;}int update = sms.update(classId, id, type, val);if(update == -1){System.out.println("修改失败 -- 学生信息不合法");}else if(update == -2){System.out.println("修改失败 -- 没有该学生");}else if(update == -3){System.out.println("修改失败 -- 修改类型不合法");}else if(update == -4){System.out.println("修改失败 -- 修改值的类型不合法");}else if(update == -5){System.out.println("修改失败 -- 修改值的信息不合法");}else if(update == -6){System.out.println("修改失败 -- 目标班级上已有学生");}else if(update == -7){System.out.println("修改失败 -- 目标学号上已有学生");}else if(update == 1){System.out.println("修改成功");}}private static void queryMenu(Scanner scan, StudentManagerSystemImpl sms) {System.out.println("请选择查询条件:");System.out.println("1-姓名");System.out.println("2-性别");System.out.println("3-年龄段");System.out.println("4-班级号");QueryCode code = null;int queryNum = scan.nextInt();switch (queryNum) {case 1:System.out.println("请输入姓名:");code = sms.getStusByName(scan.next());break;case 2:System.out.println("请输入性别:");code = sms.getStusBySex(scan.next().toCharArray()[0]);break;case 3:System.out.println("请输入开始年龄:");int start = scan.nextInt();System.out.println("请输入截止年龄:");int end = scan.nextInt();code = sms.getStusByAge(start, end);break;case 4:System.out.println("请输入班级号:");code = sms.getStusByClassId(scan.next());break;}if(code != null){if(code.getCode() == -1){System.out.println("学生信息不合法");}else if(code.getCode() == -2){System.out.println("没有查询到该学生");}else if(code.getCode() == 1){Student[] stus = code.getStus();sms.print(stus);}}else{System.out.println("查询条件有误");}}private static void deleteMenu(Scanner scan, StudentManagerSystemImpl 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, StudentManagerSystemImpl sms) {System.out.println("请输入姓名:");String name = scan.next();System.out.println("请输入性别:");char sex = scan.next().toCharArray()[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("添加成功");}}
}

状态码类:

package pojo;import java.util.Arrays;
//查询状态码类
public class QueryCode {private int code;private Student[] stus;public QueryCode() {}public QueryCode(int code) {this.code = code;}public QueryCode(int code, Student[] stus) {this.code = code;this.stus = stus;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public Student[] getStus() {return stus;}public void setStus(Student[] stus) {this.stus = stus;}@Overridepublic String toString() {return "QueryCode [code=" + code + ", stus=" + Arrays.toString(stus) + "]";}}

学生对象:

package 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;}@Overridepublic boolean equals(Object obj) {if(this == obj){return true;}if(obj instanceof Student){Student stu = (Student) obj;if(classId.equals(stu.classId) && id.equals(stu.id)){return true;}}return false;}@Overridepublic String toString() {return name + "\t" + sex + "\t" + age + "\t" + classId + "\t" + id;}
}

学生管理系统接口:

package sms;import pojo.QueryCode;
import pojo.Student;public interface IStuManagarSystem {//学生管理系统的接口public interface IStudentManagerSystem {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 grow();/*** 删除学生* @param classId 班级号* @param id 学号* @return 删除状态码*/public int delete(String classId,String id);/*** 根据班级号+学号去修改学生的某个信息* @param classId 班级号* @param id 学号* @param type 修改类型(1-name 2-sex 3-age 4-classId 5-id)* @param val 修改的值* @return 修改状态码*/public int update(String classId,String id,int type,Object val);/*** 根据班级号+学号去查询学生对象在容器(数组)中的下标* @param classId 班级号* @param id 学号* @return 下标*/public int getStuOfIndex(String classId,String id);/*** 根据学生对象查询在容器(数组)中的下标* @param stu 目标学生* @return 下标*/public int getStuOfIndex(Student stu);/*** 根据班级号+学号去查询容器(数组)中的学生对象* @param classId 班级号* @param id 学号* @return 学生对象*/public Student getStu(String classId,String id);/*** 通过姓名查询学生数组* @param name 姓名* @return 状态码对象*/public QueryCode getStusByName(String name);/*** 通过性别查询学生数组* @param sex 性别* @return 状态码对象*/public QueryCode getStusBySex(char sex);/*** 通过年龄段查询学生数组* @param start 开始年龄 - 包含* @param end 结束年龄 - 包含* @return 状态码对象*/public QueryCode getStusByAge(int start,int end);/*** 通过班级号查询学生数组* @param classId 班级号* @return 状态码对象*/public QueryCode getStusByClassId(String classId);/*** 打印所有学生信息*/public void printAllStus();/*** 默认方法 -- 打印学生数组* @param stus 学生数组*/default void print(Student[] stus){for (Student stu : stus) {System.out.println(stu);}}}
}

管理系统接口的实现:

package sms.impl;import java.util.Arrays;import pojo.QueryCode;
import pojo.Student;
import sms.IStuManagarSystem.IStudentManagerSystem;
import utils.StuInfoUtil;public class StudentManagerSystemImpl implements IStudentManagerSystem{//默认容量private static final int DEFAULT_CAPACITY = 10;//学生容器private Student[] stus;//学生个数/指针private int size;public StudentManagerSystemImpl() {stus = new Student[DEFAULT_CAPACITY];//做假数据add(new Student("麻生希", '女', 21, "2301", "001"));add(new Student("椎名空", '女', 21, "2301", "002"));add(new Student("水菜丽", '女', 28, "2301", "003"));add(new Student("朝桐光", '女', 32, "2301", "004"));add(new Student("北岛玲", '女', 38, "2301", "005"));add(new Student("爱田奈奈", '女', 25, "2302", "001"));add(new Student("水野朝阳", '女', 29, "2302", "002"));add(new Student("古川伊织", '女', 20, "2302", "003"));add(new Student("濑亚美莉", '女', 23, "2302", "004"));add(new Student("吉泽明步", '女', 25, "2302", "005"));}public StudentManagerSystemImpl(int capacity){if(capacity <= 0){capacity = DEFAULT_CAPACITY;}stus = new Student[capacity];}@Overridepublic int add(Student stu) {//1.判断学生合法性if(!StuInfoUtil.isStu(stu)){return -1;}//2.判断是否有重复学生if(getStuOfIndex(stu) != -1){return -2;}//3.判断是否扩容if(size == stus.length){grow();}//4.添加学生stus[size++] = stu;return 1;}@Overridepublic void grow() {int oldCapacity = stus.length;int newCapacity = oldCapacity + (oldCapacity>>1);stus = Arrays.copyOf(stus, newCapacity);}@Overridepublic int delete(String classId, String id) {//1.判断学生合法性if(!StuInfoUtil.isClassId(classId) || !StuInfoUtil.isId(id)){return -1;}//2.判断是否有该学生int index = getStuOfIndex(classId, id);if(index == -1){return -2;}//3.删除学生for (int i = index; i < size-1; i++) {stus[i] = stus[i+1];}stus[size--] = null;return 1;}@Overridepublic int update(String classId, String id, int type, Object val) {//1.判断学生信息合法性if(!StuInfoUtil.isClassId(classId) || !StuInfoUtil.isId(id)){return -1;}//2.判断是否有该学生Student stu = getStu(classId, id);if(stu == null){return -2;}//3.判断修改类型switch (type) {case NAME:if(val instanceof String){String value = (String) val;//判断修改值信息是否合法if(!StuInfoUtil.isName(value)){return -5;}stu.setName(value);}else{return -4;}break;case SEX:if(val instanceof Character){char value = (Character) val;//判断修改值信息是否合法if(!StuInfoUtil.isSex(value)){return -5;}stu.setSex(value);}else{return -4;}break;case AGE:if(val instanceof Integer){int value = (Integer) val;//判断修改值信息是否合法if(!StuInfoUtil.isAge(value)){return -5;}stu.setAge(value);}else{return -4;}break;case CLASS_ID:if(val instanceof String){String value = (String) val;//判断修改值信息是否合法if(!StuInfoUtil.isClassId(value)){return -5;}//判断目标班级上是否有学生if(getStuOfIndex(value, id) != -1){return -6;}stu.setClassId(value);}else{return -4;}break;case ID:if(val instanceof String){String value = (String) val;//判断修改值信息是否合法if(!StuInfoUtil.isId(value)){return -5;}//判断目标学号上是否有学生if(getStuOfIndex(classId, value) != -1){return -7;}stu.setId(value);}else{return -4;}break;default:return -3;}return 1;}@Overridepublic int getStuOfIndex(String classId, String id) {//创建临时学生对象Student stu = new Student(classId, id);int index = getStuOfIndex(stu);return index;}@Overridepublic Student getStu(String classId, String id) {int index = getStuOfIndex(classId, id);if(index != -1){return stus[index];}return null;}@Overridepublic QueryCode getStusByName(String name) {//1.判断学生信息合法性if(!StuInfoUtil.isName(name)){return new QueryCode(-1);}//2.确定符合条件的学生人数int count = 0;for (int i = 0; i < size; i++) {if(stus[i].getName().equals(name)){count++;}}if(count == 0){//说明没有学生return new QueryCode(-2);}//3.创建新数组Student[] newStus = new Student[count];//4.把符合条件的学生对象赋值到新数组中int index = 0;for (int i = 0; i < size; i++) {if(stus[i].getName().equals(name)){newStus[index++] = stus[i];}}return new QueryCode(1,newStus);}@Overridepublic QueryCode getStusBySex(char sex) {//1.判断学生信息合法性if(!StuInfoUtil.isSex(sex)){return new QueryCode(-1);}//2.确定符合条件的学生人数int count = 0;for (int i = 0; i < size; i++) {if(stus[i].getSex() == sex){count++;}}if(count == 0){//说明没有学生return new QueryCode(-2);}//3.创建新数组Student[] newStus = new Student[count];//4.把符合条件的学生对象赋值到新数组中int index = 0;for (int i = 0; i < size; i++) {if(stus[i].getSex() == sex){newStus[index++] = stus[i];}}return new QueryCode(1,newStus);}@Overridepublic QueryCode getStusByAge(int start, int end) {//1.判断学生信息合法性if(!StuInfoUtil.isAge(start) || !StuInfoUtil.isAge(end)){return new QueryCode(-1);}//2.确定符合条件的学生人数int count = 0;for (int i = 0; i < size; i++) {int age = stus[i].getAge();if(age >= start && age <= end){count++;}}if(count == 0){//说明没有学生return new QueryCode(-2);}//3.创建新数组Student[] newStus = new Student[count];//4.把符合条件的学生对象赋值到新数组中int index = 0;for (int i = 0; i < size; i++) {int age = stus[i].getAge();if(age >= start && age <= end){newStus[index++] = stus[i];}}return new QueryCode(1,newStus);}@Overridepublic QueryCode getStusByClassId(String classId) {//1.判断学生信息合法性if(!StuInfoUtil.isClassId(classId)){return new QueryCode(-1);}//2.确定符合条件的学生人数int count = 0;for (int i = 0; i < size; i++) {if(stus[i].getClassId().equals(classId)){count++;}}if(count == 0){//说明没有学生return new QueryCode(-2);}//3.创建新数组Student[] newStus = new Student[count];//4.把符合条件的学生对象赋值到新数组中int index = 0;for (int i = 0; i < size; i++) {if(stus[i].getClassId().equals(classId)){newStus[index++] = stus[i];}}return new QueryCode(1,newStus);}@Overridepublic void printAllStus() {for (int i = 0; i < size; i++) {System.out.println(stus[i]);}}@Overridepublic int getStuOfIndex(Student stu) {for (int i = 0; i < size; i++) {if(stu.equals(stus[i])){return i;}}return -1;}}

验证学生合法性的工具类:

package utils;import pojo.Student;//验证学生信息合法性的工具类
public class StuInfoUtil {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;}public static boolean isName(String name){int len = name.length();if(len >= 2 && len<=16){return true;}return false;}public static boolean isSex(char sex){if(sex=='男' || sex =='女'){return true;}return false;}public static boolean isAge(int age){if(age>16 && age<40){return true;}return false;}public static boolean isClassId(String classId){int len = classId.length();if(len == 4){return true;}return false;}public static boolean isId(String id){int len = id.length();if(len == 3){return true;}return false;}
}

下面就是代码的实现过程:

1.实现接口时做的假数据

 

 2.添加学生

3.添加另一位学生 

 4.添加后的数据

 5.删除学生

6.删除后的数据

7.修改学生

8.修改后数据

9.查询学生

10.退出系统

求求关注加点赞!!!     需要源码关注私信喔!!!!!!!

更多推荐

学生管理系统(可做大作业)

本文发布于:2024-02-12 18:52:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1688974.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:管理系统   作业   可做   学生

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!