jsp 按照学号查找学生_学生管理系统小项目

先看演示效果:

9cbc0cfc539cb60cc59b48e512278092.png
学生管理系统小项目https://www.zhihu.com/video/1187096643492544512

运用知识:

IO流中的对象流:将对象读取和写入本地硬盘

序列化与反序列化来实现对象的持久化

HahMap存储学生对象

枚举:限定学生性别变量

泛型:来避免向下转型

上代码:

创建学生类

import java.io.Serializable;

/**
 * 学生属性:学号,名字,年龄,性别。学号要求唯一。
 */
public class Student implements Serializable {

    private String name;
    private int sid;
    private int age;
    private Gender gender;

    public int getSid() {
        return sid;
    }
    @Override
    public String toString() {
        return "学生信息:{" +
                "姓名:" + name + ''' +
                ", 学号:" + sid +
                ", 年龄:" + age +
                ", 性别:" + gender +
                '}';
    }
    public void setSid(int sid) {
        this.sid = sid;
    }

    public Student(String name, int sid, int age, Gender gender) {
        this.name = name;
        this.sid = sid;
        this.age = age;
        this.gender = gender;
    }

    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 Gender getGender() {
        return gender;
    }

    public void setGender(Gender gender) {
        this.gender = gender;
    }

}

enum Gender {
    男, 女
}

定义接口来实现可扩展性

/**
 *实现的功能:
 *遍历所有学生信息
 *添加学生信息
 *根据学号查找学生
 *根据名字查找学生
 *根据学号删除学生
 *根据学号修改学生
 */
public interface StudentInterface {
    /**
     * 遍历所有学生信息
     */
    void showAll() throws Exception;

    /**
     * 添加学生信息
     * @return 添加成功,返回true,否则返回false
     */
    boolean addStudent() throws Exception;

    /**
     *根据学号查找学生
     * @param sid
     * @return 被找到的学生对象,如果不存在,返回null
     */
    Student findStuBySid(int sid) throws Exception;

    /**
     *根据学号查找学生
     * @param name
     * @return 返回所有名字为name的学生列表,如果不存在,返回null
     */
    List<Student> findStuByName(String name) throws Exception;

    /**
     *根据学号删除学生
     * @param sid
     * @return 如果成功,返回true,否则返回false
     */
    boolean removeStuBySid(int sid) throws Exception;

    /**
     *根据学号修改学生
     * @param sid
     * @return 如果成功,返回true,否则返回false
     */
    boolean modifyStuSid(int sid) throws Exception;

}

创建学生系统类来实现功能接口

import java.io.*;
import java.util.*;

public class StudentSystem implements StudentInterface {
     Map<Integer, Student> hashMap = new HashMap<>();

    Scanner scanner = new Scanner(System.in);

    public void welcome() {
        System.out.println("**********welcome to StudentAdminstrateSystem**************");
        System.out.println("系统初始化成功........");
    }

    public void end() {
        System.out.println("**********Thank you for usering the StudentAdminstrateSystem**************");
        System.out.println("系统退出成功........");
    }

    /**
     * 显示系统菜单
     */
    public void showMenu() {
        System.out.println("n菜单内容:");
        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("6-->根据学号修改学生信息:");
        System.out.println("7-->退出系统:");
    }

    @Override
    public void showAll() throws Exception {
        //反序列化
        ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("1.txt")));
        hashMap=(HashMap)ois.readObject();
        Set<Integer> set = hashMap.keySet();
        if (hashMap.size() == 0) {
            System.out.println("本系统暂未录入任何学生信息");
        } else {
            Iterator<Integer> iterator = set.iterator();
            while (iterator.hasNext()) {
                Integer key = iterator.next();
                Student student = hashMap.get(key);
                System.out.println(student);
            }

        }
        ois.close();
    }


    @Override
    public boolean addStudent() throws Exception {
        String name = MyUtil.getInputString("请输入学生的姓名:", scanner);
        int sid = MyUtil.getInputNumber("请输入学生的学号,要求是整数:", scanner);
        int age = MyUtil.getInputNumber("请输入学生的年龄:", scanner);
        Gender gender = MyUtil.getInputString("请输入学生的性别,男 or 女:", scanner).equals("男") ? Gender.男 : Gender.女;
        Student student = new Student(name, sid, age, gender);
        hashMap.put(sid, student);
        //序列化过程
        ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("1.txt")));
        oos.writeObject(hashMap);
        oos.close();
        System.out.println("添加信息成功");
        return true;
    }

    @Override
    public Student findStuBySid(int sid) throws Exception {
        //反序列化
        ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("1.txt")));
        hashMap=(HashMap)ois.readObject();
        ois.close();
        Student stu = hashMap.get(sid);
        if (stu != null) {
            System.out.println(stu);
        } else {
            System.out.println("该学生不存在!");
        }
        return stu;
    }

    @Override
    public List<Student> findStuByName(String name) throws Exception{
        //反序列化
        ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("1.txt")));
        hashMap=(HashMap)ois.readObject();
        ois.close();
        List<Student> list = new ArrayList<>();
        //遍历所有的学生,然后逐个和name比较
        Collection<Student> values = hashMap.values();
        Iterator<Student> iterator = values.iterator();
        while (iterator.hasNext()) {
            Student student = iterator.next();
            if (student.getName().equals(name)) {
                list.add(student);

            }
        }
        return list.size() == 0 ? null : list;
    }
    //打印学生信息
    public void findStuByName() throws Exception {
            String name=MyUtil.getInputString("请输入要查找的学生的姓名:",scanner);
            List<Student> list=findStuByName(name);
            if (list==null){
                System.out.println("该姓名的学生不存在!");
            }else {
                System.out.println("查找到的学生信息如下:");
                for (int i = 0; i < list.size(); i++) {
                    System.out.println(list.get(i));
                }
            }
    }

    @Override
    public boolean removeStuBySid(int sid) throws Exception{
        //反序列化
        ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("1.txt")));
        hashMap=(HashMap)ois.readObject();
        ois.close();
        Student stu = hashMap.remove(sid);
        if (stu != null) {
            System.out.println("学生信息:" + stu + "t已被删除!");
            //序列化过程
            ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("1.txt")));
            oos.writeObject(hashMap);
            oos.close();
            return true;
        } else {
            System.out.println("该学生不存在!");
            return false;
        }

    }

    @Override
    public boolean modifyStuSid(int sid) throws Exception {
        //反序列化
        ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("1.txt")));
        hashMap=(HashMap)ois.readObject();
        ois.close();
        Student student = hashMap.get(sid);

        if (hashMap.get(sid) != null) {
            String name = MyUtil.getInputString("请输入要修改的学生姓名:", scanner);
            sid = MyUtil.getInputNumber("请输入学生的学号,要求是整数:", scanner);
            int age = MyUtil.getInputNumber("请输入要修改学生年龄:", scanner);
            Gender gender = MyUtil.getInputString("请输入要修改学生性别,男 or 女:", scanner).equals("男") ? Gender.男 : Gender.女;
            student.setName(name);
            student.setAge(age);
            student.setGender(gender);
            student.setSid(sid);
            System.out.println("学生信息修改成功!");
            //序列化过程
            ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("1.txt")));
            oos.writeObject(hashMap);
            oos.close();
            return true;
        } else {
            System.out.println("该学生不存在!");
            return false;
        }
    }
}

测试类

import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws Exception {
        StudentSystem studentSystem = new StudentSystem();
        studentSystem.welcome();
        Scanner scanner = new Scanner(System.in);
        while (true) {
            studentSystem.showMenu();
            int input = MyUtil.getInputNumber("请选择您的操作:", scanner);
            switch (input) {
                case 1:
                    studentSystem.showAll();
                    break;
                case 2:
                    studentSystem.addStudent();
                    break;
                case 3:
                    studentSystem.findStuBySid(MyUtil.getInputNumber("请输入要查找的学生的学号:", scanner));
                    break;
                case 4:
                    studentSystem.findStuByName();
                    break;
                case 5:
                    studentSystem.removeStuBySid(MyUtil.getInputNumber("请输入要删除的学生的学号:", scanner));
                    break;
                case 6:
                    studentSystem.modifyStuSid(MyUtil.getInputNumber("请输入要修改的学生的学号:", scanner));
                    break;
                case 7:
                    studentSystem.end();
                    return;
            }
        }
    }
}

完毕!有问题欢迎讨论。


版权声明:本文为weixin_33640562原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。