21xrx.com
2024-12-22 23:12:35 Sunday
登录
文章检索 我的文章 写文章
实现一个简单的学生信息管理系统
2023-06-19 04:46:10 深夜i     --     --
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中一些比较基础的知识,例如对象类、集合类型、文件读写等。通过设计和实现这个题目,可以加深对这些知识点的理解和使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复