21xrx.com
2024-11-05 20:35:41 Tuesday
登录
文章检索 我的文章 写文章
如何实现一个简易的Java编程课程设计日志系统
2023-06-16 12:31:09 深夜i     --     --
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()`方法从文件中读取所有日志记录,并打印到屏幕上。

  
  

评论区

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