逻辑结构:采用队列的逻辑结构,原因是队列可以实现先进先出的特性,符合短消息接收的需求。新接收的短消息会被添加到队列的末尾,而最早的短消息会被删除队列的头部。

物理结构:采用数组作为物理结构,原因是数组可以实现连续的存储空间,便于按照索引进行访问和删除元素。

解决问题的思路、方法和流程:

  1. 定义一个长度为20的数组作为消息队列,用于存储短消息。
  2. 定义一个变量来记录当前队列中的短消息数量。
  3. 实现短消息接收功能:判断当前队列中的短消息数量是否已达到上限,如果是,则删除队列头部的短消息;然后将新接收的短消息添加到队列尾部,并将短消息数量加1。
  4. 实现短列表显示功能:遍历队列中的短消息,将其逐条显示出来。
  5. 实现阅读短消息功能:根据用户输入的短消息索引,输出对应的短消息内容。
  6. 实现删除短消息功能:根据用户输入的短消息索引,删除对应的短消息,并将短消息数量减1。
  7. 实现清空短消息功能:将队列中的所有短消息清空,并将短消息数量设为0。
  8. 实现操作功能菜单:在程序运行时,根据用户的选择,执行相应的功能。

具体的代码实现可以参考以下示例:

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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录