IT技术之家

首页 > Java

Java

java面向对象思路实现学生管理系统_冯小猿

发布时间:2022-10-24 18:31:20 Java 0次 标签:java 开发语言 java-ee 学生管理系统 面向对象
学生管理系统的实现前期准备:项目实现思路:代码实现:运行效果项目总结大家好,今天给大家带来的是一个基于java面向对象思想,使用数组存储数据的java的信息管理系统。前期准备:1.需要实现的功能添加学生:键盘录入学生信息(id,name, age, birthday)使用数组存储学生信息,要求学生的id不能重复删除学生:键盘录入要删除学生的id值,将该学生从数组中移除,如果录入的id在数组中不存在,需要重新录入修改学生:键盘录入要修改学生的id值和修改后的学生信息将数组中该学生的信息修改,如...

学生管理系统的实现

前期准备:项目实现思路:代码实现:运行效果项目总结
大家好,今天给大家带来的是一个基于java面向对象思想,使用数组存储数据的java的信息管理系统。

前期准备:

1.需要实现的功能

添加学生:键盘录入学生信息(id,name, age, birthday)
使用数组存储学生信息,要求学生的id不能重复删除学生:键盘录入要删除学生的id值,将该学生从数组中移除,如果录入的id在数组中不存在,需要重新录入修改学生:键盘录入要修改学生的id值和修改后的学生信息将数组中该学生的信息修改,如果录入的id不存在,需要重新录入查询学生:将数组中存储的所有学生的信息输出到控制台
通过id查询学生:用户输入学生id查看学生的信息

2.首先创建项目需要的包存放不同的类

作用本项目存放类
domain封装学生信息Student.java
dao(Date Access Object) 用于访问存储数据的数组或集合StudentDao.java
service用来进行业务逻辑的处理(例如:判断录入的id是否存在)StudentService.java
controller用于和用户打交道(接收用户需求,采集用户信息等)StudentController.java
entry程序的入口类提供一个main方法InfoManagerEntry.java

项目实现思路:

    项目的入口菜单搭建
展示欢迎页面,用输出语句完成主界面的编写获取用户的选择,用Scanner实现键盘录入数据根据用户的选择执行对应的操作,用switch语句完成操作的选择
    添加功能实现思路

    添加功能的优化:判断id是否存在
    查询功能的实现
    删除功能的实现
    修改功能实现

代码实现:

    程序的主入口:InfoManagerEntry.java
package com.heima.first.entry;

import com.heima.first.controller.StudentController;

import java.util.Scanner;

public class InfoMangerEntry {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StudentController s_ct = new StudentController();
        while (true){
            //        编写程序的主界面
            System.out.println("--------欢迎来到信息管理系统--------");
            System.out.println("请输入您的选择: 1.学生管理  2.老师管理  3.退出");
            String num_choice = sc.next();

            switch (num_choice){
                case "1":
                    System.out.println("学生管理");
                    s_ct.start();
                    break;
                case "2":
                    System.out.println("老师管理");
                    break;
                case "3":
                    System.out.println("退出");
//                  用于退出整个程序 jvm虚拟机
                    System.exit(0);
                    break;
                default:
                    System.out.println("输入错误请重新输入!");
        }



        }


    }
}

    客服接待类的书写(StudentContruller.java)
package com.heima.first.controller;

//相当于客服的作用 用于和客户打交道

import com.heima.first.domain.Student;
import com.heima.first.service.Studentservice;

import java.util.Scanner;

public class StudentController {
    private Scanner sc = new Scanner(System.in);
    private Studentservice s_ct = new Studentservice();
    public void start() {
        lo:while (true){
            System.out.println("--------欢迎来到 <学生> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生  5.查看所有学生  6.退出");
            String num_choice = sc.next();

            switch (num_choice) {
                case "1":
//                    System.out.println("添加学生");
//                    调用添加学生的方法
                    addStudent();
                    break;
                case "2":
                    System.out.println("删除学生");
                    delStudent();
                    break;
                case "3":
                    System.out.println("修改学生");
                    updateStudent();
                    break;
                case "4":
                    System.out.println("查看学生");
                    catStudent();
                    break;

                case "5":
                    System.out.println("查看所有学生");
                    findAllStudent();
                    break;
                case "6":
                    System.out.println("退出");
                    break lo;

                default:
                    System.out.println("输入错误请重新输入!");
        }

        }

    }

    public void findAllStudent() {
        Student[] all_student=s_ct.findAllStudent();
        if(all_student==null){
            System.out.println("目前没有学生信息请先进行添加!");
        }else {
            System.out.println("学号\t\t姓名\t年龄\t生日");
            for (int i = 0; i < all_student.length; i++) {
                Student stu = all_student[i];
                if(stu!=null) {

                    System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t\t" + stu.getBirthday());
                }


            }
        }
    }
//更新学生信息
    public void updateStudent() {

        String sid=inputStudentid();
        if(!sid.equals("")) {
        System.out.println("请输入学生的姓名");
        String name = sc.next();

        System.out.println("请输入学生的年龄");
        String age = sc.next();

        System.out.println("请输入学生的生日");
        String birthday = sc.next();
        Student student = new Student(sid,name,age,birthday);
        String up_message=s_ct.updateStudent(student,sid);
        System.out.println(up_message+"学生的信息已经更新!");}




    }

    // 删除学生信息
    private void delStudent() {

        String sid=inputStudentid();
        if(!sid.equals("")) {
        String del_is=s_ct.delStudent(sid);
        System.out.println(del_is+"学生的信息已经删除!");}
    }

    // 通过id查看学生信息
    public void catStudent() {
        String sid=inputStudentid();
        if(!sid.equals("")) {

            System.out.println("学号\t\t姓名\t年龄\t生日");
            Student stu = s_ct.findStudent(sid);
            System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t\t" + stu.getBirthday());
        }

    }

    public void addStudent() {
        String sid;
        while (true){
            System.out.println("请输入学生的id");
            sid = sc.next();
            boolean is_have=s_ct.isExists(sid);
            if(!is_have){
                System.out.println("您输入的id已经被占用,请重新输入!");
            }else {
                break;
            }

        }

        System.out.println("请输入学生的姓名");
        String name = sc.next();

        System.out.println("请输入学生的年龄");
        String age = sc.next();

        System.out.println("请输入学生的生日");
        String birthday = sc.next();
        Student student = new Student(sid,name,age,birthday);

//      将创建好的学生对象 传送给 业务员 进行添加


        boolean is_success=s_ct.addStudent(student);

        if(is_success){
            System.out.println("添加成功");
        }else {
            System.out.println("添加失败");
        }


    }

    public String inputStudentid(){
        String sid;
        System.out.println("请输入学生的id");
        sid = sc.next();
        boolean is_have=s_ct.isExists(sid);
        if(is_have){
            System.out.println("您输入的id不存在,请查看后在输入!");
            sid="";
            return sid;
        }else {
            return sid;
        }
    }
}

    业务员类的书写(StudentServicejava)
package com.heima.first.service;


//相当于业务员 用于处理 客服的下来的问题 处理业务的逻辑

import com.heima.first.dao.StudentDao;
import com.heima.first.domain.Student;

import javax.swing.plaf.synth.SynthUI;

public class Studentservice {
//    创建一个库管对象
    StudentDao sd = new StudentDao();


    public boolean addStudent(Student student) {
//        将学生的信息返回给仓库管理 实现添加学生
//        库管返回数据
        return sd.addStudent(student);
    }

    public boolean isExists(String sid) {
//        调用库管的获取学生索引的方法获取id对应的索引
        int student_index = sd.getStudent_index(sid);
//        如果返回来-1 说明目前不存在这个id的学生 我们返回true 反之false
        return student_index == -1;

    }

    public Student findStudent(String sid) {
        return sd.findStudent(sid);
    }

    public String delStudent(String sid) {

        return sd.delStudent(sid);
    }

    public String updateStudent(Student student, String sid) {
        return sd.updateStudent(student,sid);
    }

    public Student[] findAllStudent() {
//        对数组进行判断 只要数组中又一个不为null 返回地址 反之返回null
        Student[] stu=sd.findAllStudent();
//       默认数组为空
        boolean flag=false;
        for (int i = 0; i < stu.length; i++) {
            if(stu[i]!=null){
                flag=true;
                break;

            }

        }
        if(flag){
            return stu;
        }else {
            return null;
        }
    }
}

    仓库管路员类书写(StudentDao)
package com.heima.first.dao;

// 相当于仓库管理员 用来实现仓库数据的增删改查

import com.heima.first.domain.Student;

public class StudentDao {
//   解决每次创建都会创建新的数组问题 加上static 之后就会不管创建几个对象 都会共享一个数组
    static Student[] studnet_arr = new Student[10];


    //    实行添加学生的操作
    public boolean addStudent(Student student) {
//        找到一个数组空的索引 存储数据
        int index_null=-1;
        for (int i = 0; i < studnet_arr.length; i++) {
            if (studnet_arr[i]==null){
                index_null=i;
                break;
            }

        }
        if (index_null==-1){
            return false;
        }else {
            studnet_arr[index_null]=student;
            return true;
        }

    }
//  查看学生对应的数组索引位置
    public int getStudent_index(String id){
//        首先默认他的id不存在
        int index_exists=-1;
        for (int i = 0; i < studnet_arr.length; i++) {
            if(studnet_arr[i]!=null && studnet_arr[i].getId().equals(id)){
                index_exists=i;
                break;
            }
        }
        return index_exists;
    }
//  返回学生的对象
    public Student findStudent(String sid) {
//       调用获取学生索引位置
        int student_index = getStudent_index(sid);
//       返回给该学生的对象位置
        return studnet_arr[student_index];
    }


//    实现从数组中删除学生数据
    public String delStudent(String sid) {
//        创建一个string 存储学生姓名
        String st_name;
//        调取getstudent 获取学生的索引位置
        int student_index = getStudent_index(sid);
        st_name=studnet_arr[student_index].getName();
//      将学生信息用null填充
        studnet_arr[student_index]=null;
        return st_name;

    }
//更新学生的信息
    public String updateStudent(Student student, String sid) {
        String st_name;
//        调取getstudent 获取学生的索引位置
        int student_index = getStudent_index(sid);
        st_name=studnet_arr[student_index].getName();

        studnet_arr[student_index]=student;
        return st_name;


    }
    public Student[] findAllStudent() {
//        将学生数组进行返回
        return studnet_arr;
    }
}

    学生类的书写(Student.java)
package com.heima.first.domain;


// 存放学生类 存放学生信息
public class Student {
    private String id;
    private String name;
    private String age;
    private String birthday;

    public Student() {
    }

    public Student(String id, String name, String age, String birthday) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
}

运行效果

项目总结

本项目主要是练习面向对象的应用和java数组的使用练习,使用了正式项目开发的思路,

解决重复代码过多的冗余,提高代码的复用性解决业务逻辑聚集紧密导致的可读性差,提高代码的可读性解决代码可维护性差,提高代码的维护性
使用了分类的思想:分人协作,专人干专事
分包的思想:对于不同功能的类文件,可以放在不同的包下进行管理,方便代码的查找,管理和后期的维护拓展。

目前项目之实现了学生管理的书写,老师管理的书写大同小异实现思路都是一样的有兴趣的同学可以自己进行尝试。
好了本次项目的分享到这里就结束了,如有写的不好的地方欢迎指出讨论,如果您喜欢的话可以点赞加关注,您的点赞就是我最大前进的动力。