java实现简单的学生管理系统

yizhihongxing

Java实现简单的学生管理系统

系统概述

本系统主要用于实现学生的增删查改功能,通过控制台输入进行操作,界面简单,操作方便。

系统架构

代码采用Java语言实现,采用MVC模式进行设计。其中,Model层主要负责数据存储与业务逻辑;View层主要负责展示数据和接受用户输入;Controller层主要负责控制Model和View的交互,实现对Model层数据的访问和UI层的控制。

数据模型

本系统中,学生类(Student)为核心的数据模型,包括学生的姓名、年龄、性别、学号等基本信息和其对应的课程成绩。

示例代码:

public class Student {
    private String name; // 学生姓名
    private int age; // 学生年龄
    private String gender; // 学生性别
    private String id; // 学号
    private Map<Course, Double> scores; // 课程成绩

    // 构造函数
    public Student(String name, int age, String gender, String id) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.id = id;
        this.scores = new HashMap<>();
    }

    // getter和setter方法
    ...
}

系统功能

添加学生信息

用户可以通过控制台输入学生的基本信息和对应的课程成绩,然后将学生信息保存在数据模型中。

示例代码:

public class StudentController {
    private StudentModel model;

    public StudentController(StudentModel model) {
        this.model = model;
    }

    // 添加学生信息
    public void addStudent() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入学生姓名:");
        String name = scanner.nextLine();
        System.out.print("请输入学生年龄:");
        int age = scanner.nextInt();
        scanner.nextLine();
        System.out.print("请输入学生性别:");
        String gender = scanner.nextLine();
        System.out.print("请输入学生学号:");
        String id = scanner.nextLine();

        Student student = new Student(name, age, gender, id);

        // 输入学生的课程成绩
        System.out.print("请输入课程名:");
        String courseName = scanner.nextLine();
        while (!courseName.equals("exit")) {
            System.out.print("请输入" + courseName + "的成绩:");
            double score = scanner.nextDouble();
            scanner.nextLine();
            student.setScore(courseName, score);
            System.out.print("请输入课程名(输入exit停止录入):");
            courseName = scanner.nextLine();
        }

        model.addStudent(student);
        System.out.println("添加成功!");
    }
}

删除学生信息

用户可以通过学号来删除相应的学生信息。

示例代码:

public class StudentController {
    private StudentModel model;

    public StudentController(StudentModel model) {
        this.model = model;
    }

    // 删除学生信息
    public void deleteStudent() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要删除的学生学号:");
        String id = scanner.nextLine();
        boolean result = model.deleteStudent(id);
        if (result) {
            System.out.println("删除成功!");
        } else {
            System.out.println("该学生不存在!");
        }
    }
}

查找学生信息

用户可以通过学号来查找相应的学生信息。

示例代码:

public class StudentController {
    private StudentModel model;

    public StudentController(StudentModel model) {
        this.model = model;
    }

    // 查找学生信息
    public void findStudent() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要查找的学生学号:");
        String id = scanner.nextLine();
        Student student = model.findStudent(id);
        if (student != null) {
            System.out.println(student);
        } else {
            System.out.println("该学生不存在!");
        }
    }
}

修改学生信息

用户可以通过学号来修改相应的学生信息,包括基本信息和课程成绩。

示例代码:

public class StudentController {
    private StudentModel model;

    public StudentController(StudentModel model) {
        this.model = model;
    }

    // 修改学生信息
    public void updateStudent() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要修改的学生学号:");
        String id = scanner.nextLine();
        Student student = model.findStudent(id);
        if (student == null) {
            System.out.println("该学生不存在!");
            return;
        }

        System.out.print("请输入学生姓名:");
        String name = scanner.nextLine();
        student.setName(name);
        System.out.print("请输入学生年龄:");
        int age = scanner.nextInt();
        scanner.nextLine();
        student.setAge(age);
        System.out.print("请输入学生性别:");
        String gender = scanner.nextLine();
        student.setGender(gender);

        // 修改学生的课程成绩
        System.out.print("请输入课程名:");
        String courseName = scanner.nextLine();
        while (!courseName.equals("exit")) {
            System.out.print("请输入" + courseName + "的成绩:");
            double score = scanner.nextDouble();
            scanner.nextLine();
            student.setScore(courseName, score);
            System.out.print("请输入课程名(输入exit停止修改):");
            courseName = scanner.nextLine();
        }

        model.updateStudent(student);
        System.out.println("修改成功!");
    }
}

总结

本系统实现了基本的学生管理功能,便于学生信息的录入、查询、修改和删除。其中,数据模型设计合理,利于扩展新的业务需求。控制器层的代码结构清晰,易于维护和修改。但是,界面简陋且灵活性不高,无法满足高级用户对于界面的个性化需求,需要进一步完善。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现简单的学生管理系统 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • mysql之动态增添字段实现方式

    当我们在MySQL中定义一个表时,可能会遇到后期需要增加字段的情况。一般来说,我们可以使用ALTER TABLE语句来实现在表中动态增添字段。以下是详细讲解“MySQL之动态增添字段实现方式”的完整攻略。 1. ALTER TABLE语句的介绍 ALTER TABLE语句是MySQL中用于修改已有表定义的关键字。通过使用ALTER TABLE语句,我们可以修…

    Java 2023年6月15日
    00
  • java如何将Object数组转换为指定类型数组

    将Object数组转换为指定类型数组的过程需要进行类型强转,下面是具体的步骤和示例。 创建指定类型数组 首先,需要确定要转换成哪种类型的数组,然后使用数组的静态方法创建一个指定类型的数组。例如创建一个字符串数组: String[] array = new String[objectArray.length]; 遍历Object数组 使用for循环或者for-…

    Java 2023年5月26日
    00
  • java的Hibernate框架报错“CallbackException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“CacheException”错误。这个错误通常是由于以下原因之一引起的: 缓存配置错误:如果您的缓存配置错误,则可能会出现此错误。在这种情况下,需要检查您的缓存配置以解决此问题。 缓存操作失败:如果您的缓存操作失败,则可能会出现此错误。在这种情况下,需要检查您的缓存操作以解决此问题。 以下是两个实例说明…

    Java 2023年5月4日
    00
  • Java经典面试题汇总:JVM

    Java经典面试题汇总:JVM JVM是什么? JVM(Java Virtual Machine,即Java虚拟机)是Java平台的一个重要组成部分,也是整个Java技术体系的核心所在。它是Java实现“一次编写,到处运行”的重要基石,同时也是Java能够拥有强大的跨平台能力的主要原因之一。 当我们运行Java程序时,JVM会解释并执行Java字节码,最终把…

    Java 2023年5月23日
    00
  • 详解Java线程池是如何重复利用空闲线程的

    下面我就给你详细讲解“详解Java线程池是如何重复利用空闲线程的”的完整攻略。 1. 什么是Java线程池 Java线程池实际上是一种管理多线程的机制,它可以控制多线程的创建和销毁,以便更好地管理系统资源。线程池可以避免系统频繁地创建和销毁线程,从而降低系统的负担。 2. Java线程池如何重复利用空闲线程 Java线程池中有一组空闲线程,它们被称为“工作线…

    Java 2023年5月26日
    00
  • 浅谈在Spring中如何使用数据源(DBCP、C3P0、JNDI)

    在Spring框架中,我们可以通过不同的数据源来操作数据库,包括DBCP、C3P0和JNDI等。下面将详细介绍在Spring中使用这些数据源的方法。 DBCP DBCP(DataBase Connection Pool)是Apache提供的数据库连接池技术。在Spring中,我们可以通过配置文件来使用DBCP数据源。具体步骤如下: 步骤1:添加依赖 在Mav…

    Java 2023年5月20日
    00
  • 深入理解JVM之Java对象的创建、内存布局、访问定位详解

    深入理解JVM之Java对象的创建、内存布局、访问定位详解 Java对象的创建 在Java中,创建对象最常见的方法就是使用关键字new,通过调用构造方法创建对象。在创建对象时,会先在堆内存中申请一块连续的内存空间,用于存储对象的属性。 Java对象的创建过程可以分为以下几个步骤: 加载类:在Java程序中使用到某个类时,JVM会首先查找并加载该类的类文件。 …

    Java 2023年5月26日
    00
  • 【深度思考】聊聊CGLIB动态代理原理

    1. 简介 CGLIB的全称是:Code Generation Library。 CGLIB是一个强大的、高性能、高质量的代码生成类库,它可以在运行期扩展Java类与实现Java接口, 底层使用的是字节码处理框架ASM。 Github地址:https://github.com/cglib/cglib。 CGLIB的Maven坐标如下所示: <depen…

    Java 2023年4月22日
    00
合作推广
合作推广
分享本页
返回顶部