一、学生管理系统
分析

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("添加成功"); } } }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/121530.html