Java 实现短消息管理系统:接收、显示、阅读、删除和清空
逻辑结构:采用队列的逻辑结构,原因是队列可以实现先进先出的特性,符合短消息接收的需求。新接收的短消息会被添加到队列的末尾,而最早的短消息会被删除队列的头部。
物理结构:采用数组作为物理结构,原因是数组可以实现连续的存储空间,便于按照索引进行访问和删除元素。
解决问题的思路、方法和流程:
- 定义一个长度为20的数组作为消息队列,用于存储短消息。
- 定义一个变量来记录当前队列中的短消息数量。
- 实现短消息接收功能:判断当前队列中的短消息数量是否已达到上限,如果是,则删除队列头部的短消息;然后将新接收的短消息添加到队列尾部,并将短消息数量加1。
- 实现短列表显示功能:遍历队列中的短消息,将其逐条显示出来。
- 实现阅读短消息功能:根据用户输入的短消息索引,输出对应的短消息内容。
- 实现删除短消息功能:根据用户输入的短消息索引,删除对应的短消息,并将短消息数量减1。
- 实现清空短消息功能:将队列中的所有短消息清空,并将短消息数量设为0。
- 实现操作功能菜单:在程序运行时,根据用户的选择,执行相应的功能。
具体的代码实现可以参考以下示例:
import java.util.Arrays;
import java.util.Scanner;
public class MessageManager {
private static final int MAX_MESSAGES = 20;
private static String[] messageQueue = new String[MAX_MESSAGES];
private static int messageCount = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int choice;
do {
System.out.println('1. 接收短消息');
System.out.println('2. 显示短消息列表');
System.out.println('3. 阅读短消息');
System.out.println('4. 删除短消息');
System.out.println('5. 清空短消息');
System.out.println('0. 退出');
System.out.print('请输入操作选择:');
choice = scanner.nextInt();
switch (choice) {
case 1:
receiveMessage(scanner);
break;
case 2:
displayMessages();
break;
case 3:
readMessage(scanner);
break;
case 4:
deleteMessage(scanner);
break;
case 5:
clearMessages();
break;
case 0:
System.out.println('程序已退出。');
break;
default:
System.out.println('无效的选择,请重新输入。');
break;
}
} while (choice != 0);
scanner.close();
}
private static void receiveMessage(Scanner scanner) {
scanner.nextLine(); // 清空输入缓冲
if (messageCount == MAX_MESSAGES) {
System.out.println('短消息数量已达到上限,删除最早的短消息。');
deleteMessage(0);
}
System.out.print('请输入短消息内容:');
String message = scanner.nextLine();
messageQueue[messageCount] = message;
messageCount++;
System.out.println('短消息接收成功。');
}
private static void displayMessages() {
System.out.println('短消息列表:');
for (int i = 0; i < messageCount; i++) {
System.out.println((i + 1) + '. ' + messageQueue[i]);
}
}
private static void readMessage(Scanner scanner) {
System.out.print('请输入要阅读的短消息索引:');
int index = scanner.nextInt();
if (index < 1 || index > messageCount) {
System.out.println('无效的短消息索引。');
return;
}
System.out.println('短消息内容:' + messageQueue[index - 1]);
}
private static void deleteMessage(Scanner scanner) {
System.out.print('请输入要删除的短消息索引:');
int index = scanner.nextInt();
deleteMessage(index);
System.out.println('短消息删除成功。');
}
private static void deleteMessage(int index) {
if (index < 1 || index > messageCount) {
System.out.println('无效的短消息索引。');
return;
}
for (int i = index - 1; i < messageCount - 1; i++) {
messageQueue[i] = messageQueue[i + 1];
}
messageQueue[messageCount - 1] = null;
messageCount--;
}
private static void clearMessages() {
Arrays.fill(messageQueue, null);
messageCount = 0;
System.out.println('短消息已清空。');
}
}
原文地址: https://www.cveoy.top/t/topic/pvp1 著作权归作者所有。请勿转载和采集!