21xrx.com
2025-06-26 06:11:53 Thursday
登录
文章检索 我的文章 写文章
如何实现一个简易的Java编程课程设计日志系统
2023-06-16 12:31:09 深夜i     20     0
Java编程 课程设计 日志系统

在Java编程课程设计中,日志系统是一个必要的组件,它可以记录学生的提交记录、代码修改以及项目进度等重要信息。在本文中,我们将介绍如何使用Java编写一个简易的日志系统。

首先我们需要确定日志的信息结构。在本示例中,我们将日志分为三个部分:时间、事件以及详细信息。时间和事件可用字符串表示,而详细信息使用文本字符串表示。

接下来,我们需要创建一个Java类,来存储日志信息并支持写入和读取日志。以下是示例的日志类:

import java.io.*;
import java.util.*;
public class Log {
  private String date;
  private String event;
  private String message;
  public Log(String date, String event, String message)
    this.date = date;
    this.event = event;
    this.message = message;
  
  public String getDate()
    return date;
  
  public String getEvent()
    return event;
  
  public String getMessage()
    return message;
  
  @Override
  public String toString() {
    return date + " " + event + " " + message;
  }
  public static void writeLog(Log log, String fileName) {
    try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fileName, true)))) {
      out.println(log);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public static List
  readLogs(String fileName) {
 
    List
  logs = new ArrayList<>();
 
    try (BufferedReader in = new BufferedReader(new FileReader(fileName))) {
      String line;
      while ((line = in.readLine()) != null) {
        String[] parts = line.split(" ");
        String date = parts[0];
        String event = parts[1];
        String message = line.substring(date.length() + event.length() + 2);
        logs.add(new Log(date, event, message));
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return logs;
  }
}

此类包含三个私有变量`date`,`event` 和 `message`,它们被用于记录日志信息的日期、事件和详细信息。同时,它还提供了方法来获取和设置这些变量,并提供了一个构造函数来初始化它们。

日志类还提供了两种方法:`writeLog()`和`readLogs()`。`writeLog()`方法接受一个 `Log` 对象和一个文件名,将该对象的信息写入到指定的文件中。而`readLogs()`方法则接受文件名作为参数,并返回从文件中读取的所有日志对象的列表。

在日志系统的实际使用中,通常还需要添加一些其他功能,例如按照日期或事件类型检索日志等。但是,在本教程中,我们将专注于基本的读写操作。

接下来,我们可以使用该日志类来实现我们的简易Java编程课程设计日志系统。我们需要创建一个导师类和学生类,并在编程课程设计中记录学生的日志,包括每一次提交,每次代码修改以及项目进度等。以下是示例的学生类:

public class Student {
  private String name;
  public Student(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }
  public void submitProject() {
    Log.writeLog(new Log(getCurrentTime(), "submit", name + " submitted project."), "log.txt");
  }
  public void modifyCode(String modificationDetails) {
    Log.writeLog(new Log(getCurrentTime(), "modify", name + " modified code. Details: " + modificationDetails), "log.txt");
  }
  public void updateProgress(String progressDetails) {
    Log.writeLog(new Log(getCurrentTime(), "update", name + " updated progress. Details: " + progressDetails), "log.txt");
  }
  private String getCurrentTime() {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return sdf.format(new Date());
  }
}

该学生类包含一个`name`变量,并包含三个方法来记录三种类型的事件:`submitProject()`,`modifyCode()`和`updateProgress()`。这些方法将日志信息写入到指定的文件中,使用了`Log`类中的`writeLog()`方法。

最后,我们可以编写一个测试类来模拟多个学生的使用情况,记录学生的提交和更新记录。以下是示例的测试类:

public class Test {
  public static void main(String[] args) {
    List
  students = new ArrayList<>();
 
    students.add(new Student("Alice"));
    students.add(new Student("Bob"));
    students.add(new Student("Charlie"));
    students.add(new Student("David"));
    for (int i = 0; i < 10; i++) {
      for (Student student : students) {
        student.submitProject();
      }
    }
    students.get(0).modifyCode("Added feature X");
    students.get(1).modifyCode("Fixed bug Y");
    students.get(2).modifyCode("Refactored class");
    students.get(3).updateProgress("50% complete");
    List
  logs = Log.readLogs("log.txt");
 
    for (Log log : logs) {
      System.out.println(log);
    }
  }
}

以上代码向日志文件中写入了40个提交记录,并随后添加了三个代码修改记录和一个项目更新记录。最后,测试类使用`Log`类的`readLogs()`方法从文件中读取所有日志记录,并打印到屏幕上。

  
  

评论区