模拟短消息接收和有关操作,最多存储20条短消息,所编写的程序应包含且不限于如下功能:①短消息接收,如果短消息总数超出20条,则删除最早的短消息。②短列表显示所有短消息。③阅读任意一条短消息。④删除任意一条短消息。⑤消除所有短消息。⑥具有操作功能菜单。
解决方案说明此处应该说明:
①采用何种逻辑结构及其理由;
②采用何种物理结构及其理由;
③解决该问题的思路、方法和流程。
用队列实现
参考
https://blog.csdn.net/qq_45767547/article/details/123961134
我将根据您的需求,提供一个基于Java的短消息模拟程序的解决方案。以下是代码示例和详细的解决方案说明。
首先,我们需要创建一个Message
类,用于表示短消息的数据结构。每个短消息包含一个唯一的ID和内容。
public class Message {
private int id;
private String content;
public Message(int id, String content) {
this.id = id;
this.content = content;
}
public int getId() {
return id;
}
public String getContent() {
return content;
}
}
接下来,我们创建一个MessageSimulator
类,用于实现短消息模拟功能。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class MessageSimulator {
private static final int MAX_MESSAGES = 20;
private List<Message> messages;
private int messageIdCounter;
public MessageSimulator() {
messages = new ArrayList<>();
messageIdCounter = 1;
}
public void receiveMessage(String messageContent) {
if (messages.size() >= MAX_MESSAGES) {
// 当短消息总数超出20条时,删除最早的短消息
messages.remove(0);
}
Message newMessage = new Message(messageIdCounter, messageContent);
messages.add(newMessage);
messageIdCounter++;
}
public void displayMessages() {
for (Message message : messages) {
System.out.println("ID: " + message.getId());
System.out.println("Content: " + message.getContent());
System.out.println();
}
}
public void readMessage(int messageId) {
for (Message message : messages) {
if (message.getId() == messageId) {
System.out.println("ID: " + message.getId());
System.out.println("Content: " + message.getContent());
return;
}
}
System.out.println("Message not found.");
}
public void deleteMessage(int messageId) {
for (int i = 0; i < messages.size(); i++) {
if (messages.get(i).getId() == messageId) {
messages.remove(i);
System.out.println("Message deleted.");
return;
}
}
System.out.println("Message not found.");
}
public void clearAllMessages() {
messages.clear();
System.out.println("All messages cleared.");
}
public void displayMenu() {
System.out.println("======== Message Simulator ========");
System.out.println("1. Receive a message");
System.out.println("2. Display message list");
System.out.println("3. Read a message");
System.out.println("4. Delete a message");
System.out.println("5. Clear all messages");
System.out.println("0. Exit");
}
public static void main(String[] args) {
MessageSimulator sim = new MessageSimulator();
Scanner scanner = new Scanner(System.in);
int choice;
do {
sim.displayMenu();
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("Enter the message content:");
scanner.nextLine(); // Consume the newline character
String messageContent = scanner.nextLine();
sim.receiveMessage(messageContent);
System.out.println("Message received.");
break;
case 2:
sim.displayMessages();
break;
case 3:
System.out.println("Enter the message ID:");
int messageId = scanner.nextInt();
sim.readMessage(messageId);
break;
case 4:
System.out.println("Enter the message ID:");
messageId = scanner.nextInt();
sim.deleteMessage(messageId);
break;
case 5:
sim.clearAllMessages();
break;
case 0:
break;
default:
System.out.println("Invalid choice.");
break;
}
} while (choice != 0);
}
}
在上述代码中,MessageSimulator
类实现了接收短消息、显示短消息列表、阅读一条短消息、删除一条短消息和清空所有短消息的功能。通过displayMenu
方法,我们提供了一个操作功能菜单供用户选择。
在main
方法中,我们使用Scanner类来获取