学生信息系统

学生信息管理系统

实体类

School类
public class School {
    Integer SchoolId;   //学院编号
    String SchoolName;  //学院名称
    String SchoolClass;  //专业

    @Override
    public String toString() {
        return "\t\t学院编号:" + SchoolId +
                "\t\t学院名称:" + SchoolName +
                "\t\t专业:" + SchoolClass;

    }

    public School(Integer schoolId, String schoolName, String schoolClass) {
        SchoolId = schoolId;
        SchoolName = schoolName;
        SchoolClass = schoolClass;
    }

    public Integer getSchoolId() {
        return SchoolId;
    }

    public void setSchoolId(Integer schoolId) {
        SchoolId = schoolId;
    }

    public String getSchoolName() {
        return SchoolName;
    }

    public void setSchoolName(String schoolName) {
        SchoolName = schoolName;
    }

    public String getSchoolClass() {
        return SchoolClass;
    }

    public void setSchoolClass(String schoolClass) {
        SchoolClass = schoolClass;
    }
}

Class类
public class Class {
    int ClassId;  //班级编号
    String ClassName;  //班级名
    School school;  //学院对象

    public Class(int ClassId, String className,  School school) {
        this.ClassId = ClassId;
        ClassName = className;

        this.school = school;
    }

    public int getId() {
        return ClassId;
    }

    public void setId(int id) {
        this.ClassId = id;
    }

    public String getClassName() {
        return ClassName;
    }

    public void setClassName(String className) {
        ClassName = className;
    }



    public School getSchool() {
        return school;
    }

    public void setSchool(School school) {
        this.school = school;
    }

    @Override
    public String toString() {
        return
                "\t\t班级编号:" + ClassId +
                "\t\t班级名:" + ClassName +
                "\t\t" + school ;
    }
}

Student类
public class Student {

    int StudentId;//学生id
    String name;//学生姓名

    int age;//年龄


    Class aClass;//所属班级

    public Student(int id, String name, int age, Class aClass) {
        this.StudentId = id;
        this.name = name;
        this.age = age;
        this.aClass = aClass;
    }

    public int getId() {
        return StudentId;
    }

    public void setId(int id) {
        this.StudentId = 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 Class getaClass() {
        return aClass;
    }

    public void setaClass(Class aClass) {
        this.aClass = aClass;
    }

    @Override
    public String toString() {
        return
                "学生id:" + StudentId +
                        "\t\t姓名:" + name +
                        "\t\t年龄:" + age +
                        "\t\t" + aClass;
    }
}

User类
public class User {

    private  String name;
    private  String password;

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }



    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

service

public class StudentService {
    //    用泛型定义一个list 保存User、school、class、students信息
    List<User> listUser = new ArrayList<>();
    List<School> ListSchools = new ArrayList<>();
    List<Class> ListClasses = new ArrayList<>();

    List<Student> ListStudents = new ArrayList<>();

    //保存姓名查找的学生信息

//    实例化三个类   用来存储每一个对象
    School school;
    Class aClass;
    Student student;
    //初始化列表信息
    User user;
    //定义整形数组保存下标



    //无参构造函数 初始化列表 及user 、school、class、student
    public StudentService() {
        user = new User("张三", "123456");
        school = new School(21, "数计", "计算机");
        aClass = new Class(221, "计算机2202", school);
        student = new Student(2201, "张三", 18, aClass);
        ListSchools.add(school);
        ListClasses.add(aClass);
        ListStudents.add(student);
        listUser.add(user);

    }


    //登录
    public User login(String name, String password) {
//        循环遍历存放user信息的集合 将每个user 赋给未初始化值的user
        for (User value : listUser) {
//            如果密码和用户名 相等 返回user
            user = value;
            if (name.equals(user.getName()) && password.equals(user.getPassword())) {
                return user;
            }
        }
//        如果没有返回空
        return null;
    }

    //注册
    public void register(User newUser) {
//        将返回的user对象加入到user集合中
        listUser.add(newUser);
    }

    //密码修改
    public void updatePassword(User newUser, String password) {
    //循环遍历存放user信息的集合 将每个user 赋给未初始化值的user
        for (User value : listUser) {
            user = value;
//            如果传过来的对象 和数组中对象想等 设置新密码
            if (user.equals(newUser)) {
                user.setPassword(password);
            }
        }
    }


    //根据id查找学院
    public School findBySchoolId(int id) {
//        for循环遍历school集合将集合中的对象依次赋给school对象
        for (School listSchool : ListSchools) {
            school = listSchool;
//            for循环遍历id 如果相等 返回school
            if (school.getSchoolId() == id) {
                return school;
            }
        }
        return null;
    }

    //根据id查找班级
    public Class findByClassId(int id) {
//        for循环遍历class集合 将数据赋给class 对象 并判断id是否相等
        for (Class listClass : ListClasses) {
            aClass = listClass;
            System.out.println("26752137"+aClass);
            if (aClass.getId() == id) {
//                相等返回class
                return aClass;
            }
        }
        return null;
    }

    //根据id查找学生
    public Student findByStudentId(int id) {
//        for 循环遍历集合 查找id对应的对象
        for (Student listStudent : ListStudents) {
            student = listStudent;
            if (student.getId() == id) {
                return student;
            }
        }
        return null;
    }

    //根据姓名查找学生
    public List<Student> findByStudentName(String name) {
        List<Student> findByName = new ArrayList<>();
        //清空集合
		findByName=new ArrayList<>();
        //        for 循环遍历集合 查找name对应的对象
        for (Student listStudent : ListStudents) {
            student = listStudent;
            if (student.getName().equals(name)) {
                findByName.add(student);
            }
        }
        return findByName;
    }

    //根据班级查找学生
    public List<Student> findByClass(Class aClasss) {
        //保存用班级查找的学生信息
        List<Student> findByClass = new ArrayList<>();
		findByClass=new ArrayList<>();
        //        for 循环遍历集合 查找class 对象对应的对象
        for (Student listStudent : ListStudents) {
            //将学生集合的每一个得到的班级对象 赋给aclass
            aClass = listStudent.getaClass();
            //如果aclass对象相等
            if (aClass == aClasss) {
                //将集合当前的数据添加到列表中
                findByClass.add(listStudent);
            }
        }
        return findByClass;
    }

    //根据学院查找学生
    public List<Student> findBySchool(School newSchool) {
        //保存学院查找的学生信息
        List<Student> findBySchool = new ArrayList<>();
		findBySchool=new ArrayList<>();
        for (Student listStudent : ListStudents) {
//            for 循环遍历集合 查找school 对象对应的对象
            school = listStudent.getaClass().getSchool();
            if (school == newSchool) {
                findBySchool.add(listStudent);
            }
        }
        return findBySchool;
    }

    //学院删除
    public void schoolDelete(int id) {
//        for 循环遍历集合 查找id对应的对象
        for (int i = 0; i < ListSchools.size(); i++) {
            school = ListSchools.get(i);
//            如果存在调用remove方法 删除 school内容
            if (school.getSchoolId() == id) {
                ListSchools.remove(i);
                i--;
            }
        }
        for (int i = 0; i < ListClasses.size(); i++) {
            aClass = ListClasses.get(i);
//            for 循环遍历集合 查找id对应的对象
            if (aClass.getSchool().getSchoolId() == id) {
                //            如果存在调用remove方法 删除class 内容
                ListClasses.remove(i);
                i--;
            }
        }

        for (int i = 0; i < ListStudents.size(); i++) {
            student = ListStudents.get(i);
            //            for 循环遍历集合 查找id对应的对象
            if (student.getaClass().getSchool().getSchoolId() == id) {
                //            如果存在调用remove方法 删除student 内容
                ListStudents.remove(i);
                i--;
            }
        }

    }

    //班级删除
    public void classDelete(int id) {
//        for 循环遍历集合 查找id对应的对象
        for (int i = 0; i < ListClasses.size(); i++) {
            aClass = ListClasses.get(i);
            if (aClass.getId() == id) {
                //            如果存在调用remove方法 删除class 内容
                ListClasses.remove(i);
                i--;
            }
        }

        for (int i = 0; i < ListStudents.size(); i++) {
            //            for 循环遍历集合 查找id对应的对象
            student = ListStudents.get(i);
            if (student.getaClass().getId() == id) {
                //            如果存在调用remove方法 删除student 内容
                ListStudents.remove(i);
                i--;
            }
        }

    }

    //学生删除
    public void deleteStudent(int id) {
        for (int i = 0; i < ListStudents.size(); i++) {
            //            for 循环遍历集合 查找id对应的对象
            student = ListStudents.get(i);
            if (student.getId() == id) {
                //            如果存在调用remove方法 删除student 内容
                ListStudents.remove(i);
                i--;
            }
        }
    }


    //添加学院方法
    public void addSchool(School school) {
//        调用集合add 添加对象
        ListSchools.add(school);
    }

    //添加班级方法
    public void addClass(Class aClass) {
        //        调用集合add 添加对象
        ListClasses.add(aClass);
    }


    //添加学生方法
    public void addStudent(Student student) {
        //        调用集合add 添加对象
        ListStudents.add(student);
    }


    //全查询学生
    public List<Student> findAllStudent() {
//        当调用方法时返回集合所有元素
        return ListStudents;
    }

    //全查询学院
    public List<School> findAllSchool() {
        //        当调用方法时返回集合所有元素
        return ListSchools;
    }

    //全查询班级
    public List<Class> findAllClass() {
        //        当调用方法时返回集合所有元素
        return ListClasses;
    }
}

view试图 主菜单栏

public class StudentView {
    //    用来控制while循环
    boolean loop = true;


    //学校id
    int SchoolId = 22;
    //班级编号
    int ClassId = 222;
    //学生id
    int StudentId = 2202;

    StudentService studentService = new StudentService();

    //定义用户对象 用来保存登录后的信息
    User LoginUser;

    //登录
    public void login() {
        System.out.println("请输入用户名");
        String name = Utility.readString(20);
        System.out.println("请输入密码");
        String password = Utility.readString(20);
//        调用login方法 得到返回值
        User user = studentService.login(name, password);
//        如果返回值为空 提示密码或用户名错误
        if (user == null) {
            System.out.println("用户名或密码错误");
            return;
        }
        //如果登录成功 获取用户名密码 方便后续密码修改
        LoginUser = user;
        //调用登录成功后的主菜单栏
        mainEu2();
    }

    //注册
    public void register() {
        System.out.println("请输入用户名");
        String name = Utility.readString(20);
        String password = "";
//        循环判断两次密码是否一致
        while (true) {
            System.out.println("请输入密码");
            password = Utility.readString(20);
            System.out.println("请确认密码");
            String password1 = Utility.readString(20);
            if (password1.equals(password)) {
                break;
            }
            System.out.println("两次输入的密码不一致!请重新输入");
        }
//        将输入的数据赋给user
        User user = new User(name, password);
//        调用Service的注册
        studentService.register(user);
    }

    //修改密码
    public void updatePassword() {
        System.out.println("请输入新的密码");
        String password = Utility.readString(20);
//        调用方法
        studentService.updatePassword(LoginUser, password);
    }

    //查看学院
    public void findAllSchool() {
        //调用方法 获得集合
        List<School> list = studentService.findAllSchool();
//        循环遍历列表元素
        list.forEach(System.out::println);
    }

    //删除学院
    public void deleteSchool() {

        System.out.println("请输入你要删除的学院编号");
        int id = Utility.readInt();
//        调用iD查询方法 并赋给school对象
        School school = studentService.findBySchoolId(id);
        System.out.println(school);
//        调用删除方法
        studentService.schoolDelete(id);

    }

    //添加学院
    public void addSchool() {
        System.out.println("请输入学院名称");
        String name = Utility.readString(20);
        System.out.println("请输入学院专业");
        String classname = Utility.readString(20);
//        将输入的信息用全参构造器添加进去
        School school = new School(SchoolId, name, classname);
//        设置学校id自增长,无需手动输入
        SchoolId++;
        studentService.addSchool(school);
        System.out.println("********恭喜您 ,添加成功!********");
    }

    //修改学院
    public void updateSchool() {
        System.out.println("请输入要修改的学院编号");
        int id = Utility.readInt();
//        调用单查询获得学院信息
        School school = studentService.findBySchoolId(id);
        if (school == null) {
            System.out.println("很遗憾!目前还没有该学院");
            return;
        }
        System.out.println("请输入学院名称");
        String name = Utility.readString(20);
        school.setSchoolName(name);
        System.out.println("请输入学院专业");
        String className = Utility.readString(20);
//        调用类 的set方法 设置name 值
        school.setSchoolName(name);
        school.setSchoolClass(className);
        System.out.println("********修改成功********");


    }

    //查看班级
    public void findAllClass() {
//        调用全查询方法 将数据赋给集合
        List<Class> list = studentService.findAllClass();
        //输出
        for (Class list1 : list) {
            System.out.println(list1);
        }
//        list.forEach(System.out::println);
    }

    //添加班级
    public void addClass() {

        System.out.println("请输入你要将班级加入的学院编号");
        int id = Utility.readInt();
//        调用id查询 将返回的数据赋给school对象
        School school = studentService.findBySchoolId(id);
//        如果school为空 输出提示信息 结束方法
        if (school == null) {
            //        如果school为空 输出提示信息 结束方法
            System.out.println("很遗憾!还没有该学院");
            return;
        }
        System.out.println("请输入班级名");
        String name = Utility.readString(20);
        Class aclass = new Class(ClassId, name, school);
//        调用添加方法加进去
        studentService.addClass(aclass);
//        编号自增1
        ClassId++;
        System.out.println("********班级加入学院成功********");

    }

    //修改班级
    public void updateClass() {
        System.out.println("请输入你要修改的班级编号");
        int id = Utility.readInt();
//        调用id查询方法 将数据赋给class对象
        Class aClass = studentService.findByClassId(id);
        System.out.println(aClass);
        //        如果school为空 输出提示信息 结束方法
        if (aClass == null) {
            System.out.println("班级不存在");
            return;
        }
        System.out.println("请输入要修改的班级名");
        String name = Utility.readString(20);
//        调用Set方法 设置name
        aClass.setClassName(name);
        System.out.println("********修改班级成功********");
    }

    //删除班级
    public void deleteClass() {
        System.out.println("请输入要删除的班级编号");
        int id = Utility.readInt();
//        调用查询方法 显示出要删除的信息
        Class aclass = studentService.findByClassId(id);
        if (aclass == null) {
            System.out.println("班级不存在!");
            return;
        }
        System.out.println(aclass);
//        调用删除方法
        studentService.classDelete(id);
        System.out.println("********修改成功********");

    }

    //查看学生
    public void findAllStudent() {
//        调用全查询 获得数据并赋给集合
        List<Student> list = studentService.findAllStudent();

        for (Student student : list) {
            System.out.println(student);
        }
//        list.forEach(System.out::println);
    }

    //添加学生
    public void addStudent() {
        System.out.println("请输入你要将学生加入的班级号");
        int classId = Utility.readInt();
        //        调用id查询 将返回的数据赋给aClass对象
        Class aClass = studentService.findByClassId(classId);
        if (aClass == null) {
            //        如果aClass为空 输出提示信息 结束方法
            System.out.println("班级信息不存在");
            return;
        }

        System.out.println("请输入学生姓名");
        String name = Utility.readString(20);
        System.out.println("请输入学生年龄");
        int age = Utility.readInt();
        Student student = new Student(StudentId, name, age, aClass);
        //        调用添加方法加进去
        studentService.addStudent(student);
        //        编号自增1
        SchoolId++;
        System.out.println("*******添加成功********");
    }

    //删除学生
    public void deleteStudent() {
        System.out.println("请输入要删除的学生编号");
        int id = Utility.readInt();
        //        调用查询方法 显示出要删除的信息
        //        调用删除方法
        studentService.deleteStudent(id);
        System.out.println("********删除成功!********");
    }

    //修改学生
    public void updateStudent() {
        System.out.println("请输入你要修改的学生编号");
        int id = Utility.readInt();
        //        调用单查询获得学生信息
        Student student = studentService.findByStudentId(id);
//        Class aClass=studentService.findClassById(id);
        if (student == null) {
//            如果为空 输出提示信息
            System.out.println("没有对应的学生信息");
            return;
        }
        System.out.println("请输入学生姓名");
        String name = Utility.readString(20);
        System.out.println("请输入学生年龄");
        int age = Utility.readInt();
//        调用set设置信息
        student.setName(name);
        student.setAge(age);
        System.out.println("********修改成功********");
    }

    //根据姓名查看学生信息
    public void findByName() {
        System.out.println("请输入要查找的学生姓名");
        String name = Utility.readString(20);
        List<Student> list = studentService.findByStudentName(name);
        for (Student student : list) {
            System.out.println(student);
        }
    }

    //根据班级查看学生信息
    public void findByClass() {
        System.out.println("请输入要查找的学生的班级编号");
        int id = Utility.readInt();
//        调用单查询 获的班级信息
        Class aclass = studentService.findByClassId(id);
        if (aclass == null) {
            System.out.println("没有对应的信息");
            return;
        }
//        将班级对象 赋给查询方法 返回list 集合
        List<Student> list = studentService.findByClass(aclass);
        for (Student student : list) {
            System.out.println(student);
        }
    }

    //根据学院查看学生信息
    public void findBySchool() {
        System.out.println("请输入要查看的学生的学院id");
        int id = Utility.readInt();
//        调用单查询获得school对象
        School school = studentService.findBySchoolId(id);
//        将school对象赋给方法 并调用返回
        List<Student> list = studentService.findBySchool(school);
        for (Student student : list) {
            System.out.println(student);
        }
    }

    public void mainEu1() {
//        do while 循环执行菜单栏
        do {
            System.out.println("**************学生信息管理系统**************");
            System.out.println("\t\t\t1、登录");
            System.out.println("\t\t\t2、注册");
            System.out.println("\t\t\t3、退出系统");
            System.out.println("请输入你的选择(1、2、3)");
//            调用Utility来获取键盘输入  想当于Scanner语句
            int key = Utility.readInt();
            //switch进行输入判断 执行不同的方法
            switch (key) {
                case 1:
                    login();
                    break;
                case 2:
                    register();
                    break;
                case 3:
//                    设置控制变量loop为false
                    loop = false;
                    break;
                default:
                    System.out.println("输入有误 请重新输入");
                    break;
            }
        } while (loop);
        System.out.println("您退出了整个系统");
    }

    public void mainEu2() {
        boolean loop1 = true;
//        do while 循环执行菜单栏
        do {
            System.out.println("**************学生信息管理系统**************");
            System.out.println("\t\t\t1、学院管理");
            System.out.println("\t\t\t2、班级管理");
            System.out.println("\t\t\t3、学生管理");
            System.out.println("\t\t\t4、修改密码");
            System.out.println("\t\t\t5、退出系统");
            System.out.println("请输入你的选择(1、2、3、4、5)");
//            调用Utility来获取键盘输入  想当于Scanner语句
            int key = Utility.readInt();
            //switch进行输入判断 执行不同的方法
            switch (key) {
                case 1:
                    mainSchool();
                    break;
                case 2:
                    mainClass();
                    break;
                case 3:
                    mainStudent();
                    break;
                case 4:
                    updatePassword();
                    break;
                case 5:
//                    设置控制变量loop为false
                    loop1 = false;
                    break;
                default:
                    System.out.println("输入有误 请重新输入");
                    break;
            }
        } while (loop1);
        System.out.println("您退出了系统");
    }


    //学院管理
    public void mainSchool() {
        boolean loop2 = true;
        do {
            System.out.println("**************学生信息管理系统**************");
            System.out.println("\t\t\t1、查看学院信息");
            System.out.println("\t\t\t2、添加学院信息");
            System.out.println("\t\t\t3、删除学院信息");
            System.out.println("\t\t\t4、修改学院信息");
            System.out.println("\t\t\t5、退出学院管理");
            System.out.println("请输入你的选择(1、2、3、4、5)");
//            调用Utility来获取键盘输入  想当于Scanner语句
            int key = Utility.readInt();
            //switch进行输入判断 执行不同的方法
            switch (key) {
                case 1:
                    findAllSchool();
                    break;
                case 2:
                    addSchool();
                    break;
                case 3:
                    deleteSchool();
                    break;
                case 4:
                    updateSchool();
                    break;
                case 5:
//                    设置控制变量loop为false
                    loop2 = false;
                    break;
                default:
                    System.out.println("输入有误 请重新输入");
                    break;
            }
        } while (loop2);
        System.out.println("您退出了学院管理");
    }
    //班级管理

    public void mainClass() {
        boolean loop3 = true;

        do {
            System.out.println("**************学生信息管理系统**************");
            System.out.println("\t\t\t1、查看班级信息");
            System.out.println("\t\t\t2、添加班级信息");
            System.out.println("\t\t\t3、删除班级信息");
            System.out.println("\t\t\t4、修改班级信息");
            System.out.println("\t\t\t5、退出班级管理");
            System.out.println("请输入你的选择(1、2、3、4、5)");
//            调用Utility来获取键盘输入  想当于Scanner语句
            int key = Utility.readInt();
            //switch进行输入判断 执行不同的方法
            switch (key) {
                case 1:
                    findAllClass();
                    break;
                case 2:
                    addClass();
                    break;
                case 3:
                    deleteClass();
                    break;
                case 4:
                    updateClass();
                    break;
                case 5:
//                    设置控制变量loop为false
                    loop3 = false;
                    break;
                default:
                    System.out.println("输入有误 请重新输入");
                    break;
            }
        } while (loop3);
        System.out.println("您退出了班级管理");
    }

    public void mainStudent() {
        boolean loop4 = true;
        do {
            System.out.println("**************学生信息管理系统**************");
            System.out.println("\t\t\t1、查看学生信息");
            System.out.println("\t\t\t2、添加学生信息");
            System.out.println("\t\t\t3、删除学生信息");
            System.out.println("\t\t\t4、修改学生信息");
            System.out.println("\t\t\t5、根据姓名查找学生");
            System.out.println("\t\t\t6、查看班级的学生");
            System.out.println("\t\t\t7、查看学院的学生");
            System.out.println("\t\t\t8、退出学生管理");
            System.out.println("请输入你的选择(1、2、3、4、5、6、7、8)");
//            调用Utility来获取键盘输入  想当于Scanner语句
            int key = Utility.readInt();
            //switch进行输入判断 执行不同的方法
            switch (key) {
                case 1:
                    findAllStudent();
                    break;
                case 2:
                    addStudent();
                    break;
                case 3:
                    deleteStudent();
                    break;
                case 4:
                    updateStudent();
                    break;
                case 5:
                    findByName();
                    break;
                case 6:
                    findByClass();
                    break;
                case 7:
                    findBySchool();
                    break;
                case 8:
//                    设置控制变量loop为false
                    loop4 = false;
                    break;
                default:
                    System.out.println("输入有误 请重新输入");
                    break;
            }
        } while (loop4);
        System.out.println("您退出了学生管理");
    }
}

接收键盘输入类

package 学生信息管理系统.Util;

import java.util.Scanner;

/**
 工具类的作用:
 处理各种情况的用户输入,并且能够按照程序员的需求,得到用户的控制台输入。
 */
public class Utility {
    //静态属性
    private static Scanner scanner = new Scanner(System.in);
    /**
     * 功能:读取键盘输入的一个菜单选项,值:1——5的范围
     * @return 1——5
     */
    public static char readMenuSelection(){
        char c ;
        for (; ;){
            String str = readKeyBoard(1,false);//包含一个字符的字符串
            c = str.charAt(0);
            if (c!='1'&&c!='2'&&c!='3'&c!='4'&c!='5'){
                System.out.println("选择错误,请重新输入:");
            }
            else break;
        }
        return c;
    }
    /**
     * 功能:读取键盘输入的一个字符
     * @return 一个字符
     */
    public static char readChar(){
        String str =  readKeyBoard(1,false);//读取字符
        return  str.charAt(0);
    }
    /**
     * 功能:读取键盘输入的一个字符,如果直接按回车,则返回指定的默认值;否则返回输入的那个字符
     * @param defaultValue 指定的默认值
     * @return 默认值或输入的字符
     */
    public static  char readChar(char defaultValue){
        String str = readKeyBoard(1,true);//读取结果不是字符就是一个空的字符串
        return (str.length()==0)?defaultValue:str.charAt(0);
    }
    /**
     * 功能:读取键盘输入的整型,长度小于2位
     * @return 整数
     */
    public static int readInt(){
        int n;
        for(; ;){
            String str = readKeyBoard(10,true);//读取一个整数,长度<=10位
            try {
                n=Integer.parseInt(str);//进行转型,字符转换成整数
                break;
            }catch (NumberFormatException e){
                System.out.println("数字输入的有错误,请重新输入!");
            }
        }return n;
    }
    /**
     * 功能:读取键盘输入的 整数或默认值,如果直接回车,则返回默认值,否则返回输入的整数
     *
     * @param defaultValue 指定的默认值
     * @return 整数或默认值
     *
     */
    public static int readInt(int defaultValue){
        int n;
        for(; ;){
            String str = readKeyBoard(10,true);
            if (str.equals("")){
                return defaultValue;
            }
            //异常处理
            try {
                n = Integer.parseInt(str);
                break;
            }catch (NumberFormatException e){
                System.out.println("数字输入的有错误,请重新输入!");
            }
        }
        return n;
    }
    /**
     * 功能:读取键盘输入的指定长度的字符串
     * @param limit 限制的长度
     * @return 指定长度的字符串
     */
    public  static  String readString(int limit){
        return readKeyBoard(limit,false);
    }
    /**
     * 功能:读取键盘输入的指定长度的字符串或默认值,如果直接回车,返回默认值,否则返回字符串
     * @param limit 限制的长度
     * @param defaultValue 指定的默认值
     * @return 指定长度的字符串
     */
    public static String readString(int limit,String defaultValue){
        String str = readKeyBoard(limit, true);
        return str.equals("")? defaultValue : str;
    }
    /**
     * 功能:读取键盘输入的确认选项,Y或N
     * 将小的功能,封装到一个方法中.
     * @return Y或N
     */
    public static char readConfirmSelection(){
        System.out.println("请输入你的选择(Y/N)");
        char c ;
        for(; ; ){
            //将接受的字符转换成大写字母
            String str = readKeyBoard(1,false).toUpperCase();
            c = str.charAt(0);
            if (c=='Y'||c=='N'){
                break;
            }else {
                System.out.println("选择有错误,请重新输入!");
            }
        }
        return c;
    }
    /**
     * 功能: 读取一个字符串
     * @param limit 读取的长度
     * @param blankReturn 如果为true ,表示 可以读空字符串。
     * 					  如果为false表示 不能读空字符串。
     *
     *	如果输入为空,或者输入大于limit的长度,就会提示重新输入。
     * @return
     */
    public static  String readKeyBoard(int limit,boolean blankReturn){
        //定义一个字符串
        String line = "";
        while (scanner.hasNextLine()){//判断是否有下一行
            line = scanner.nextLine();
            //如果line.length=0, 即用户没有输入任何内容,直接回车
            if (line.length()==0){
                if (blankReturn)return line;//如果blankReturn=true,可以返回空串
                else continue; //如果blankReturn=false,不接受空串,必须输入内容
            }
            //如果用户输入的内容大于了 limit,就提示重写输入
            //如果用户如的内容 >0 <= limit ,我就接受
            if (line.length()<1||line.length()>limit){
                System.out.print("输入长度(不能大于" + limit + ")错误,请重新输入:");
                continue;
            }
            break;
        }
        return line;
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        StudentView studentView=new StudentView();
//        studentView.mainEu1();
        studentView.mainEu2();
    }
}

####运行截图
在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/f159045bfeda4d10aee82d9d891687e7.png在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用户描述 1.引言 随着信息技术高速发展,信息化程度的不断提高,计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作的不方便而继续沿用传统的手工劳动。 为了适应现代社会的高效率,提高当前在教学领域的管理水平,我们特开发一套学籍管理系统。 该系统由目前主流的程序设计开发工具实现,其功能在系统内部由源代码直接完成。通过操作手册,用户可以了解本软件的基本工作原理。操作人员只需输入一些简单的汉字、数字,即可达到自己的目标,从而为教学办公自动化带来了极大的方便。 1.1编写目的 此文档作为用户对即将开发的软件的功能要求,是软件设计和开发者的主要依据。 1.2项目背景 项目名称:学生学籍管理信息系统 项目委托单位:XXX 软件开发单位:hustwh_xj 2.任务描述 2.1目标 使得学籍管理更为完善; 对学生档案的管理更为方便; 减轻教学管理人员的工作量。 2.2运行环境 本系统是基于C/S模式的采用vb实现的学生管理信息系统(Students Management Information System),以后简称SMIS。数据库服务器由access实现。操作系统:WINDOWS xp;数据库服务器端软件Microsoft Access2000 + SQL查询语句。 3.数据描述 1. 数据流程图: 用 户 系统登录 初始化 新生报到 信息录入 分班开始学习 结束 退出登录 录入成绩 考试 信息修改及打印 2.针对这个处理流程,现具体描述如下: ① 用户登录:对系统进行初始化设置,包括对专业、课程和班级的设置 ② 新生报到:按专业分班进行教学,并为每位新生分配学号,然后对学生基本信息进行录入, ③ 学生分配到班级、领教材开始新的大学学习生活 ④ 用户对学生在校期间个人基本信息发生变化的,在系统中进行修改 ⑤ 期末考试结束,把每个学生的成绩进行录入、修改、查询和打印 3.功能 3.1功能划分 学生档案管理系统必须完成以下功能: 系统管理模块学籍管理模块,班级管理模块,专业课程管理模块,成绩管理模块,用户帮助模块。 3.2描述 系统管理模块:包括用户管理,重新登录,退出系统子功能 学籍管理模块:包括学生添加学生查询学生注销学生打印子功能。 班级管理模块:包括添加,查询,注销班级子功能。 专业课程管理模块:包括设置专业,设置课程,查询修改子功能。 成绩管理模块:添加成绩。 用户帮助模块:对各个病人的生理信号的安全范围进行输入、修改、查询。 二、可行性分析 1.可行性研究的前提 学生档案管理系统必须完成以下功能: ① 数据添加功能:对于新生报到,系统必须具有班级的建立,课程的设置,如果新增专业,则能添加新专业,期末学生的考试成绩信息必须能够录入; ② 数据修改功能: 当上述资料发生变化或有错误信息输入时,应能够及时对数据进行修改和补充; ③ 数据查询功能:该系统的主要功能之一即根据用户提供的相关信息,能够及时查找出对应的学生信息系统应该提供多种查询方法,以便满足用户的不同需求; ④ 数据打印功能: 学生基本信息和成绩录入后应可以打印出来形成文字档案,装入学生档案,这也是学生档案管理系统必须具备的功能。 2.技术可行性 a. 经费、投资方面的来源和限制:各种硬件和工作人员工资需至少1万元 b. 硬件、软件、运行环境和开发环境方面的条件和限制:软件需求:操作系统WINDOWS 2000 Advance Server以上;数据库服务器端软件access。硬件需求:10M以上的LAN接入网络带宽,P4 3.0G Xeon CPU /1G内存/360G(10K) SCSI硬盘的服务器,P3以上微机(带网卡)的客户机,P4 3.0G Xeon CPU /1G内存/36G(10K) RAID硬盘的数据库服务器 本系统采用vb实现,依靠其强大的控件系统,access数据库管理系统和用c语音编制的传感器驱动相结合,能在2个月内开发出系统。 3.经济可行性 学校如果要采用完全人工的方式处理,现在看来基本上是不太可能的。首先是一个存放的问题,必需要有一个足够大的档案室来存放这些档案,而且随着年数的增加,这个规模几乎是成几何式的增长。其次是存取,查阅的问题,随着档案的不断增加,要从如此复杂的档案库中调阅某学生的档案所消耗的人力物力是无法估量的,而且学生档案本身就很复杂,要查阅或者修改其中的某一项值,其修改的冗余度太大。最后是 一个保存和管理的问题,纸质媒介存放时间短,体积大,需要的人力物力过大。虽然制作一个数据管理系统的前期投资相对较大,但后期除了系统的维护升级和少量人力的投入以外几乎无其他投资,随着时间的推移,就会逐步显现经济上的巨大优势。 4.法律可行性 法律可行性是考虑要开发系统是否存在任何侵犯、妨碍和责任问题,用户操作可行性考虑待开发软件的运行方式在用户组织内是否行得通,现行管理制度、人员素质、操作知识是否可行。 由于在本系统中是有合同作为双方合作的基础,所以不会存在任何侵犯、妨碍和责任问题。即使存在了,也可以根据合同进行分析,一定有人会负责任,所以此系统完全可以进行开发。 由以上经济、技术、操作和法律四方面的分析可以看出,本系统的开发时机成熟,从多种角度考虑,都是可行的。 5结论 本系统投资势在必行。 三、需求分析 用户需求分析 根据系统分析得到的现行业务处理流程,在反复研究后,首先得到目标系统学生档案管理系统的业务流程,其处理流程如图所示 用 户 系统登录 初始化 新生报到 信息录入 分班开始学习 结束 退出登录 录入成绩 考试 信息修改及打印 针对新的处理流程,现具体描述如下: ① 用户登录:对系统进行初始化设置,包括对专业、课程和班级的设置 ② 新生报到:按专业分班进行教学,并为每位新生分配学号,然后对学生基本信息进行录入, ③ 学生分配到班级、领教材开始新的大学学习生活 ④ 用户对学生在校期间个人基本信息发生变化的,在系统中进行修改 ⑤ 期末考试结束,把每个学生的成绩进行录入、修改、查询和打印 3.1 用户调查 经过详细的调研,并多次与学生档案管理的老师进行研讨后,首先加深了对学生信息管理系统业务的深刻了解,其次在充分熟悉学生档案管理业务的同时,将整个学生档案管理的业务流程描述如下: ○1 新生入校,首先报到并进行登记注册,然后到财务部门缴费。根据学生被录取的专业,持缴费单到所在系部报到注册。 ○2 到系或部注册后,根据选报专业分配到班级 ○3 进入正常大学生活,参加各种教学活动,学期期末要求每位同学参加各科的期末考试。 ○4 考试结束,由各系或部将每位学生的考试成绩及其他一些相关信息记录到每个同学的档案中。 根据以上总结,得出可行的业务流程图 办理登记手续 系部 安排课程 档案信息 开始学习活动 3.2 构造系统的逻辑模型 根据现行学生信息管理的业务流程,确定数据流图中的源点和终点都选定为学生,如此就得到了学生档案管理系统的基本系统模型。 学生基本信息 学生成绩信息 根据基本系统模型,逐步细化,得到描绘逻辑系统细化后的数据流图。 D1 学生信息表 D3 课程信息学生基 本信息 课程信息 新生报到 1.2 1.3 成绩信息 注册 建档分班 课程确定 班级 信息 D2 班级信息表 D4 成绩信息学生 毕业分档 1.4 成绩信息 处理档案 系统的主要数据元素的数据字典卡片,以具体说明数据字段卡片中相关数据的含义 3.3 数据分析——概念模型设计 分析用户对数据的要求。 3.4.1 数据库建模 实体:学生、课程、专业、班级等。它们的实体图分别如图所示 学生实体 学号 姓名 政治面貌 性别 出生日期 家庭住址 课程实体 课程名称 课 程 所属专业 专业实体 专业名称 专 业 所属院系 班级实体 班级名称 人 数 所属院系 班 级 所在教室 辅导员 根据两两实体之间的联系,然后进行合并,给出所有实体的联系图即E-R图,如图1所示 课程 学 学生 成绩 属于 班级 属于 专业 图1.9 学生信息管理的E-R图 3.4.2 关系描述的设计 学生(学号、姓名、性别、政治面貌、出生日期、专业、班级、家庭住址、联系方式、备注) key为学号, 课程(课程名称、所属专业)key为课程名称, 专业(专业名称、所属院系)key为专业名称 班级(班级名称、所属院系、辅导员、教室、人数)key为班级名称 成绩(学号、姓名、专业、课程名称、成绩)key为学号与课程名称 在考虑系统安全的前提下,需要增加用户关系,其关系模式如下: 用户(用户名称、密码、用户ID)key为用户名称 得出以上关系后,根据关系数据库的理论要求,需要对所有关系进行关系规范化。 系统设计 系统设计一般分为总体设计和详细设计,进过需求分析阶段的工作,已经清楚系统必须完成的工作,下面的工作就是决定“如何做”的问题。总体设计的基本目的就是“概括地说系统应该如何实现?”。通过该阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、文档等,另一方面的主要工作就是设计软件的结构,即确定系统都由哪些模块组成及模块之间的相互关系。 3.5 软件系统结构的设计 3.5.1得到新的业务流程 目标系统学生档案管理系统的业务流程 用 户 系统登录 初始化 新生报到 信息录入 分班开始学习 结束 退出登录 录入成绩 考试 信息修改及打印 具体描述如下: ① 用户登录:对系统进行初始化设置,包括对专业、课程和班级的设置 ② 新生报到:按专业分班进行教学,并为每位新生分配学号,然后对学生基本信息进行录入, ③ 学生分配到班级、领教材开始新的大学学习生活 ④ 用户对学生在校期间个人基本信息发生变化的,在系统中进行修改 ⑤ 期末考试结束,把每个学生的成绩进行录入、修改、查询和打印 3.5.2 系统功能结构图 学生信息管理系统系统功能结构图。 学生档案管理系统 系统 学籍管理 添加用户 修改密码 退出系统 添加学籍 修改学籍 删除学籍 打印信息卡 班级管理 专业与课程 添加班级 修改班级 专业信息 课程信息 设置专业课程 添加专业信息 设置课程 添加课程 修改课程 成绩管理 添加成绩 查询修改成绩 打印成绩单 3.6 数据库的设计 3.6.1 数据库的逻辑设计 根据前面得到的各个关系,现把它们转化为数据表。 ① 学生信息表 ② 课程信息表 ③ 专业信息表 ④ 班级信息表 ⑤ 成绩信息表 ⑥ 用户表 3.6.2 数据库的物理设计 考虑程序设计的简易性及通用性,本学生管理信息系统采用Microsoft的Access2000数据库,并在其下创建6个数据表,结构分别如下: ① 学生信息表(student),共有10个字段,分别为:学号、姓名、性别、政治面貌、出生日期、专业、班级、联系电话、家庭住址、备注。 表1 学生信息表的结构 字段名 数据类型 字段长度与格式 关 键 字 学号 文本 15 是 姓名 文本 8 否 性别 文本 2 否 政治面貌 文本 10 否 出生日期 日期型 YYYY-MM-DD 否 专业 文本 20 否 班级 文本 10 否 家庭住址 文本 30 否 联系电话 文本 15 否 备注 文本 50 否 ② 课程信息表(kc),本表有2个字段:课程名称、所属专业,见表2 表2 课程信息表的解放 字段名 数据类型 字段长度与格式 关键字 课程名称 文本 20 是 所属专业 文本 20 否 ③ 班级信息表(class),共有5个字段分别为:班级名称、所属院系、辅导员、教室、人数,见表3 表3 班级信息表结构 字段名 数据类型 字段长度与格式 关键字 班级名称 文本 10 是 所属院系 文本 20 否 辅导员 文本 8 否 教室 文本 15 否 人数 文本 3 否 ④ 专业信息表(zy),有2个字段分别为:专业名称、所属院系 表4 专业信息表结构 字段名 数据类型 字段长度与格式 关键字 专业名称 文本 20 是 所属院系 文本 20 否 ⑤ 成绩信息表(score),有5个字段分别为:学号、姓名、专业、课程名称、成绩, 表5 成绩信息表结构 字段名 数据类型 字段长度与格式 关键字 学号 文本 15 是 姓名 文本 8 否 成绩专业 文本 20 否 课程名称 文本 10 是 成绩 整型 否 ⑥ 用户表(yonghu),有2个字段为:用户名称、密码 表6 用户表结构 字段名 数据类型 字段长度与格式 关键字 用户名称 文本 8 是 密码 文本 8 否 以上为本系统的6个表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值