JAVA——学生管理系统

387 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,[点击查看活动详情]

学生管理系统

逻辑代码

需求

1,管理员:账户,密码.
2,学生:学号,姓名,班级,成绩。
3,功能:管理员需要登录才能管理学生信息。
4,管理学生的信息:查询,添加,删除,修改。

流程

Admin:管理员类。Student:学生类。
Datas类:用于存储数据。里面有admins容器和student容器。(Arraylist)
StudentDao:负责学生的增删查改,操作Datas里的数据,从Datas读取数据再StudentDao给数据进行操作,数据层业务逻辑。
AdminDao:query()查询。
StudentManagement:放主函数,负责页面展示,上层业务逻辑,操控的是StudentDao,AdminDao。直接对StudentDao进行操作。
1,先创建管理员类。(实体类)
2,创建学生类。(实体类)
3,封装数据。(模拟数据库,预先存入一些数据)通过主函数中输出Datas.admins.size(),Datas.students.size()来检测数据是否传入。通过主函数.
4,StudentDao.
检查toString,返回:创建对象,studentDao.queryAll();//排序。
增加一个学生:主函数中:studentDao.addStydent(new Student("111","22",12,"34"));
修改:studentDao.modifyByStydent("111",new Student("112","22",12,"34"));
5,AdminDao。 6,StudentManagement。

管理员类

属性:account账号,password密码。
账号和密码不需要用get和set,没有必要设置修改和访问器。
当传入的账户和密码都相同用equals比较。

public class Admin{
    private String account;
    private String password;
    public Admin(){//无参的构造函数
        super();
    }
    public Admin(String account,String password)//自动生成构造函数(SAS)
    {
        this.account=account;
        this.password=password;
    }
    //重写equals
    @Override
    public boolean equals(Object obj){
        ifthis==obj)
            return true;
        ifthis==nullreturn false;
        if(getClass()!=obj.getClass())
            return false;
        Admin other=(Admin)obj;
        if(account==null){
            if(other.account!=nullreturn false;
           }else if(!account.equals(other.account))
               return false;
         if( password==null){
            if(other.password!=nullreturn false;
           }else if(! password.equals(other. password))
               return false;
          return true;
    }
}

学生类

属性:studentID学号,name姓名,age年龄,classType班级。
需要对这四个属性进行get和set.
需要重写equals.只需要对studentID进行重写
重写toString,没有的话打印出的是他的类名和对象地址

public class Student{
    private String studentID;
    private String name;
    private int age;
    private String classType;
    public Student(){
        super();
    }
    public Student(String studentID,String name,int age,String classType){
    super();
    this.studentID=studentID;
    this.name=name;
    this.age=age;
    this.classType=classType;
    }
    //所有属性的get和set。
    //重写equlas。
    //重写toString,4个类   }

Datas类

变量是静态类型,要写静态代码块

public class Datas{
    public static ArraryList<Admin> admins = new  ArraryList<Admin>();//管理员数据容器
   public static ArraryList<student> students = new  ArraryList<student>();//学生数据容器
   //初始化
static{
    admins.add(new Admin("admin123","123"));
    student.add(new Student("123","12","1","1"));
}
}

StudentDao

对数据的操作。主要对学生数据进行的增删查改。
Student student :students: student遍历students。student表示的是students集合当中每一个学生的对象。
student.getStudentID().equals(studentID):把每一个对象的id和当前所传入的id比较。
add:不带角标添加元素,默认是尾插的。
students.get(i):集合里的某一个学生

public class StudentDao{
    private static ArraryList<Student> student = Datas.students;
    pulic void queryAll(){
    //查询并打印所有的学生
        if(student.isEmpty()){
            System.out.println("无学生信息");
        }else{//按照学号大小排序
            student.sort(new Comparator<Student>(){
                @Override//重写被实现的方法
                public int compare(Student o1,Student o2){
                    return o1.getStudentID.compareTo(o2.getStudentID());//字符串比大小
                }
            });
            for(Student student :students){
                 System.out.println(student);
            }
        }
    }
    //按照学号查找学生
    public bolean queryByStudentID(String studentID){
        if(students.isEmpty()){return false;}
        for(Student student :students){
           if( student.getStudentID().equals(studentID)){
               return true;
           }
        }
        return false;
    }
    //增加一个学生
    public boolean addStudent(Student student)//传的是学生对象{
        students.add(student);
    }
    //根据学号删除一个元素
    public boolean deleteByStudentID(String studentID){
        for(int i=0;i<student.size();i++){
            if(students.get(i).getStudentID().equals(studentID)){
                students.remove(i);
                return true;
            }
        }
        return false;
    }
    //根据学号修改一个学生
    public boolean modifyByStudentID(String oriStudentID,Student newStudent){
        int index=-1;
        for(int i=0;i< students.size();i++){
            if(students.get(i).getStudentID().equals(oriStudentID)){
                index=i;
            }
        }
        if(index==-1){
            return false;
        }
        students.get(index).setStudentID(newStudent.getStudentID());
        students.get(index).setName(newStudent.getName());
        students.get(index).setAge(newStudent.getAge());
        students.get(index).setClassType(newStudent.getClassType());
        return true;
    }
}

AdminDao

主要对管理员数据进行的一些查操作.
AdminDao adminDao=new AdminDao();
adminDao.query("123","111");

public class AdminDao{
    private static ArrayList<Admin> damins =Datas.admins;
    public boolean query(String account,String password){
        return query(new Admin(account,password));
    }
    public boolean query(Admin loginadmin)
    {
        if(admins.isEmpty()){
            return false;
        }
        for(Admin admin:admins){
            if(admin.equals(loginadmin)){
                return true;
            }
        }
        return false;
    }
}

StudentManagement

主函数
Scanner scanner=new Scanner(System.in)
scanner:输入用空格隔开。
int number = scanner.nextInt();
String number = scanner.next();//不能有空格
String number = scanner.nextLine();//最好用这个
类型转化:Integer.parseInt();
判断学号唯一:studentDao.queryByStudentID(studentID);
new一个对象的时候快捷键“a+/”

public class StudentManagement{
    private static StudentDao= new StudentDao();
    private static AdminDao adminDao=new AdminDao();
    private static Scanner scanner=new Scanner(System.in)
    public static void main(String[] args){
       System.out.print("输入管理员账号");
       String account = Scanner.nextLine();
       System.out.print("输入管理员密码");
       String password = Scanner.nextLine();
       
       if(adminDao.query(account,password)){
           System.out.print("登录成功");
           showStudentManagementMenu();//打印学生管理目录的函数
       }else{
       System.out.print("登录失败");}
    }
    private static void showStudentManagementMenu(){
        while(true)
        {
            System.out.print("学生管理界面");
            System.out.print("1查询学生");
            System.out.print("2添加学生");
            System.out.print("3删除学生");
            System.out.print("4修改学生");
            System.out.print("5退出");
            System.out.print("选择操作");
            int choice = Integer.parseInt(scanner.nextLine());
            if(choice==1){
                studentDao.queryAll();
            }else if(choice==5){
             break;
            }else if(choice==3){
                 System.out.print("输入学号");
                 String studentID=scanner.nextLine();
                 if(studentDao.deleteByStudentID(studentID)){
                      System.out.print("删除成功");
                 }else{
                      System.out.print("删除失败");
                 }
            }else if(choice==4){
                 System.out.print("输入学号");
                 String originalID=scanner.nextLine();
                 if(!studentDao.deleteByStudentID(originalID)){
                      System.out.print("学生学号不存在");
                      continue;
                 }
                 System.out.print("输入修改后的学号");
                 String studentID=scanner.nextLine();
                 if(studentDao.modifyByStudentID(originalID,new Student(studentID))){
                     System.out.print("修改成功");
                 }else{
                     System.out.print("修改失败");
                 }
            }
        }
    }
}

22.下