21xrx.com
2025-04-15 18:10:20 Tuesday
文章检索 我的文章 写文章
实现一个简单的学生信息管理系统
2023-06-19 04:46:10 深夜i     11     0
Java 课程设计 学生信息 文件读写

解析及实现

在学习Java编程语言的过程中,课程设计是必不可少的一部分。设计一个简单的Java项目不仅有助于加深对Java语言特性的理解,还可以锻炼编程能力和解决问题的能力。本文将介绍一个Java课程设计题目的解析及实现,并且会提供相应的代码案例。

题目要求:

1.提供添加、查询、修改、删除学生信息的功能。

2.每一个学生具有学号、姓名、性别、年龄、出生日期等基本信息。

3.可以按学号、姓名、出生日期等关键字查询学生信息。

4.使用控制台交互方式。

5.数据保存使用文件存储。

分析:

本题可以分为4个部分完成,分别是添加、查询、修改和删除学生信息。因为每一个学生具有多个属性,所以可以新建一个对象类Student,用来保存学生信息。

添加学生信息的功能需要让用户输入多个信息,然后将它们封装到一个Student对象中,最后将对象的属性保存到文件中。

查询学生信息的功能可以通过读取文件中保存的学生信息,然后按照需要查找,最后将查询结果输出到控制台。

修改学生信息的功能可以根据学号先查询到对应学生信息,然后让用户输入需要修改的信息,再更新到保存学生信息的文件中。

删除学生信息的功能与修改类似,需要先查询到对应学生信息,然后从保存学生信息的文件中将该学生信息删除。

代码实现:

具体代码实现可以看下面的示例。为了简化代码,这里没有对用户的输入进行严格的数据验证和异常处理。

Student.java

public class Student
  public String id;
  public String name;
  public String gender;
  public int age;
  public String birthdate;

StudentManager.java

import java.io.*;
import java.util.*;
public class StudentManager {
  private List
  students;
 
  public StudentManager() {
    students = new ArrayList<>();
  }
  public void add(Student student) {
    students.add(student);
    saveToFile();
  }
  public List
  query(String keyword, String type) {
 
    List
  result = new ArrayList<>();
 
    for (Student s : students) {
      String value = "";
      switch (type.toLowerCase())
        case "id":
          value = s.id;
          break;
        case "name":
          value = s.name;
          break;
        case "birthdate":
          value = s.birthdate;
          break;
        default:
          // 不支持的查询类型
          break;
      
      if (value.toLowerCase().contains(keyword.toLowerCase())) {
        result.add(s);
      }
    }
    return result;
  }
  public void update(String id, Student newData) {
    for (Student s : students) {
      if (s.id.equals(id)) {
        s.name = newData.name;
        s.gender = newData.gender;
        s.age = newData.age;
        s.birthdate = newData.birthdate;
        saveToFile();
        break;
      }
    }
  }
  public void delete(String id) {
    Iterator
  iter = students.iterator();
 
    while (iter.hasNext()) {
      Student s = iter.next();
      if (s.id.equals(id)) {
        iter.remove();
        saveToFile();
        break;
      }
    }
  }
  private void saveToFile() {
    try (FileOutputStream fos = new FileOutputStream("students.dat");
       ObjectOutputStream oos = new ObjectOutputStream(fos)) {
      oos.writeObject(students);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  @SuppressWarnings("unchecked")
  private void loadFromFile() {
    try (FileInputStream fis = new FileInputStream("students.dat");
       ObjectInputStream ois = new ObjectInputStream(fis)) {
      students = (List
  ) ois.readObject();
 
    } catch (IOException | ClassNotFoundException e)
      // 如果文件不存在则忽略
    
  }
  {
    loadFromFile();
  }
}

Main.java

import java.util.*;
public class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    StudentManager manager = new StudentManager();
    while (true) {
      System.out.print("\n>>> ");
      String line = scanner.nextLine().trim();
      if ("exit".equalsIgnoreCase(line)) {
        System.out.println("Bye!");
        break;
      } else if (line.startsWith("add")) {
        String[] parts = line.split(" ");
        if (parts.length == 6) {
          Student student = new Student();
          student.id = parts[1];
          student.name = parts[2];
          student.gender = parts[3];
          student.age = Integer.parseInt(parts[4]);
          student.birthdate = parts[5];
          manager.add(student);
        } else {
          System.out.println("Invalid command format: " + line);
        }
      } else if (line.startsWith("query")) {
        String[] parts = line.split(" ");
        if (parts.length == 3) {
          List
  result = manager.query(parts[2], parts[1]);
 
          for (Student s : result) {
            System.out.printf("%s %s %s %d %s\n",
                s.id, s.name, s.gender, s.age, s.birthdate);
          }
        } else {
          System.out.println("Invalid command format: " + line);
        }
      } else if (line.startsWith("update")) {
        String[] parts = line.split(" ");
        if (parts.length == 6) {
          Student student = new Student();
          student.name = parts[2];
          student.gender = parts[3];
          student.age = Integer.parseInt(parts[4]);
          student.birthdate = parts[5];
          manager.update(parts[1], student);
        } else {
          System.out.println("Invalid command format: " + line);
        }
      } else if (line.startsWith("delete")) {
        String[] parts = line.split(" ");
        if (parts.length == 2) {
          manager.delete(parts[1]);
        } else {
          System.out.println("Invalid command format: " + line);
        }
      } else {
        System.out.println("Unknown command: " + line);
      }
    }
  }
}

总结:

这个简单的学生信息管理系统并不复杂,但涉及到了Java中一些比较基础的知识,例如对象类、集合类型、文件读写等。通过设计和实现这个题目,可以加深对这些知识点的理解和使用。

  
  

评论区