10.28总结

import java.util.Scanner;

/**

  • 班级:[请填写班级]

  • 学号:[请填写学号]

  • 姓名:[请填写姓名]

  • 功能:在线投稿系统的管理类,实现核心业务逻辑
    */
    public class Main {
    // 用数组存储稿件,最多存储100条记录(可扩展)
    private ManuscriptInformation[] manuscripts;
    private int count; // 当前稿件数量
    private Scanner scanner; // 用于接收用户输入

    // 构造方法:初始化数组和扫描器
    public Main() {
    manuscripts = new ManuscriptInformation[100]; // 初始化数组容量
    count = 0; // 初始稿件数量为0
    scanner = new Scanner(System.in); // 初始化扫描器
    }

    // 主方法:程序入口
    public static void main(String[] args) {
    Main system = new Main();
    system.showMainMenu(); // 展示主界面
    }

    /**

    • 展示系统主界面
      */
      public void showMainMenu() {
      while (true) {
      // 打印主界面
      System.out.println("");
      System.out.println("石家庄铁道大学突破24软件开发有限公司");
      System.out.println("在线投稿系统V1.0");
      System.out.println("
      ");
      System.out.println("1、在线投稿");
      System.out.println("2、审核稿件");
      System.out.println("3、查询进度");
      System.out.println("4、统计汇总");
      System.out.println("***********************************************************");
      System.out.print("请输入功能编号(1-4):");

       // 接收用户输入
       int choice;
       try {
           choice = Integer.parseInt(scanner.nextLine());
       } catch (NumberFormatException e) {
           System.out.println("输入错误!请输入数字1-4");
           continue;
       }
      
       // 根据选择执行对应功能
       switch (choice) {
           case 1:
               submitManuscript(); // 在线投稿
               break;
           case 2:
               reviewManuscript(); // 审核稿件
               break;
           case 3:
               queryManuscript(); // 查询进度
               break;
           case 4:
               statisticsManuscript(); // 统计汇总
               break;
           default:
               System.out.println("该选项不存在!请重新输入");
       }
      

      }
      }

    /**

    • 1、在线投稿功能
      */
      public void submitManuscript() {
      while (true) {
      // 1. 生成稿件编号(数组中最大编号+1,初始为20090001)
      int newId = generateManuscriptId();
      if (newId == -1) {
      System.out.println("录入错误:稿件编号生成失败");
      continue;
      }

       // 2. 录入作者信息
       System.out.println("***********************************************************");
       System.out.println("石家庄铁道大学突破24软件开发有限公司");
       System.out.println("在线投稿系统V1.0");
       System.out.println("***********************************************************");
       System.out.print("请输入作者姓名:");
       String authorName = scanner.nextLine().trim();
      
       System.out.print("请输入作者单位:");
       String authorUnit = scanner.nextLine().trim();
      
       System.out.print("请输入稿件内容(不超过300字):");
       String content = scanner.nextLine().trim();
      
       // 3. 验证输入格式
       if (content.length() > 300) {
           System.out.println("录入错误:稿件内容超过300字,请重新录入");
           continue;
       }
      
       // 4. 显示录入信息并确认
       System.out.println("***********************************************************");
       System.out.println("石家庄铁道大学突破24软件开发有限公司");
       System.out.println("在线投稿系统V1.0");
       System.out.println("***********************************************************");
       System.out.println("稿件编号:" + newId);
       System.out.println("作者姓名:" + authorName);
       System.out.println("作者单位:" + authorUnit);
       System.out.println("稿件内容:" + content);
       System.out.print("该稿件已录入完成,是否提交(Y/N):");
       String confirm = scanner.nextLine().trim().toUpperCase();
      
       // 5. 处理提交确认
       if ("Y".equals(confirm)) {
           // 获取当前日期(格式:yyyyMMdd,简化处理)
           String currentDate = java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.BASIC_ISO_DATE);
           // 创建稿件对象并添加到数组
           ManuscriptInformation manuscript = new ManuscriptInformation(
                   newId, authorName, authorUnit, content,
                   0, "", currentDate // 初始状态为0(未审核),审核意见为空
           );
           manuscripts[count] = manuscript;
           count++;
           System.out.println("投稿成功!返回主界面");
           break;
       } else if ("N".equals(confirm)) {
           System.out.println("已取消提交,返回稿件录入界面");
           // 继续循环,重新录入
       } else {
           System.out.println("输入无效,请输入Y或N");
       }
      

      }
      }

    /**

    • 生成稿件编号(8位:前4位年月+后4位序号)

    • @return 新的稿件编号,生成失败返回-1
      */
      private int generateManuscriptId() {
      try {
      // 1. 获取当前年月(格式:yyyyMM中的后4位,如2024年9月为2409)
      String yearMonth = java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyyMM")).substring(2);
      int prefix = Integer.parseInt(yearMonth); // 前缀:2409

       // 2. 查找当前最大的序号
       int maxSeq = 0;
       for (int i = 0; i < count; i++) {
           ManuscriptInformation ms = manuscripts[i];
           if (ms != null) {
               int id = ms.getId();
               int msPrefix = id / 10000; // 提取前缀(前4位)
               int msSeq = id % 10000;   // 提取序号(后4位)
               // 如果是同年同月的稿件,更新最大序号
               if (msPrefix == prefix && msSeq > maxSeq) {
                   maxSeq = msSeq;
               }
           }
       }
      
       // 3. 生成新编号(前缀*10000 + 新序号)
       int newSeq = maxSeq + 1;
       if (newSeq > 9999) {
           System.out.println("当月稿件数量已达上限(9999篇)");
           return -1;
       }
       return prefix * 10000 + newSeq;
      

      } catch (Exception e) {
      return -1;
      }
      }

    /**

    • 2、审核稿件功能
      */
      public void reviewManuscript() {
      while (true) {
      // 1. 输入稿件编号
      System.out.println("");
      System.out.println("石家庄铁道大学突破24软件开发有限公司");
      System.out.println("在线投稿系统V1.0");
      System.out.println("
      ");
      System.out.print("请输入稿件编号(8位):");
      String idStr = scanner.nextLine().trim();

       // 验证编号格式
       if (idStr.length() != 8 || !idStr.matches("\\d+")) {
           System.out.println("稿件编号格式错误!请输入8位数字");
           continue;
       }
      
       int targetId = Integer.parseInt(idStr);
       ManuscriptInformation targetMs = findManuscriptById(targetId);
      
       // 2. 检查稿件是否存在
       if (targetMs == null) {
           System.out.println("库中没有该稿件,返回审核界面");
           continue;
       }
      
       // 3. 检查稿件状态(仅未审核可审核)
       if (targetMs.getStatement() != 0) {
           System.out.println("该稿件已审核,无需重复操作");
           continue;
       }
      
       // 4. 显示稿件信息并录入审核意见
       System.out.println("***********************************************************");
       System.out.println("石家庄铁道大学突破24软件开发有限公司");
       System.out.println("在线投稿系统V1.0");
       System.out.println("***********************************************************");
       System.out.println("稿件编号:" + targetMs.getId());
       System.out.println("作者姓名:" + targetMs.getName());
       System.out.println("作者单位:" + targetMs.getUnit());
       System.out.println("稿件内容:" + targetMs.getContent());
       System.out.print("请输入审核意见:");
       String opinion = scanner.nextLine().trim();
       System.out.print("是否通过(Y/N):");
       String passConfirm = scanner.nextLine().trim().toUpperCase();
       System.out.print("是否提交审核结果(Y/N):");
       String submitConfirm = scanner.nextLine().trim().toUpperCase();
      
       // 5. 处理审核结果
       if ("Y".equals(submitConfirm)) {
           // 更新审核状态
           if ("Y".equals(passConfirm)) {
               targetMs.setStatement(1); // 已通过
           } else if ("N".equals(passConfirm)) {
               targetMs.setStatement(2); // 已退回
           } else {
               System.out.println("是否通过输入无效,默认设置为已退回");
               targetMs.setStatement(2);
           }
      
           // 更新审核意见和日期
           targetMs.setOpinion(opinion);
           String reviewDate = java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.BASIC_ISO_DATE);
           targetMs.setDate(reviewDate);
      
           System.out.println("审核结果已提交!");
           // 返回审核界面
       } else if ("N".equals(submitConfirm)) {
           System.out.println("已取消审核,返回系统主界面");
           break; // 返回主界面
       } else {
           System.out.println("输入无效,请输入Y或N");
       }
      

      }
      }

    /**

    • 3、查询进度功能
      */
      public void queryManuscript() {
      while (true) {
      // 1. 输入稿件编号
      System.out.println("");
      System.out.println("石家庄铁道大学突破24软件开发有限公司");
      System.out.println("在线投稿系统V1.0");
      System.out.println("
      ");
      System.out.print("请输入稿件编号(8位):");
      String idStr = scanner.nextLine().trim();

       // 验证编号格式
       if (idStr.length() != 8 || !idStr.matches("\\d+")) {
           System.out.println("稿件编号格式错误!请输入8位数字");
           continue;
       }
      
       int targetId = Integer.parseInt(idStr);
       ManuscriptInformation targetMs = findManuscriptById(targetId);
      
       // 2. 检查稿件是否存在
       if (targetMs == null) {
           System.out.println("库中没有该稿件,返回查询界面");
           continue;
       }
      
       // 3. 显示稿件详情
       System.out.println("***********************************************************");
       System.out.println("石家庄铁道大学突破24软件开发有限公司");
       System.out.println("在线投稿系统V1.0");
       System.out.println("***********************************************************");
       System.out.println("稿件编号:" + targetMs.getId());
       System.out.println("作者姓名:" + targetMs.getName());
       System.out.println("作者单位:" + targetMs.getUnit());
       System.out.println("稿件内容:" + targetMs.getContent());
       System.out.println("审核意见:" + (targetMs.getOpinion() == null || targetMs.getOpinion().isEmpty() ? "无" : targetMs.getOpinion()));
       
       // 转换状态为文字描述
       String statusDesc;
       switch (targetMs.getStatement()) {
           case 1:
               statusDesc = "已通过";
               break;
           case 2:
               statusDesc = "已退回";
               break;
           default:
               statusDesc = "未审核";
       }
       System.out.println("是否通过:" + statusDesc);
      
       // 4. 确认是否继续查询
       System.out.print("是否进行新查询(Y/N):");
       String newQuery = scanner.nextLine().trim().toUpperCase();
       if ("N".equals(newQuery)) {
           System.out.println("返回主界面");
           break;
       } else if (!"Y".equals(newQuery)) {
           System.out.println("输入无效,默认继续查询");
       }
      

      }
      }

    /**

    • 4、统计汇总功能
      */
      public void statisticsManuscript() {
      // 统计各类稿件数量
      int total = count;
      int unReviewed = 0;
      int passed = 0;
      int rejected = 0;

      for (int i = 0; i < count; i++) {
      ManuscriptInformation ms = manuscripts[i];
      if (ms != null) {
      switch (ms.getStatement()) {
      case 0:
      unReviewed++;
      break;
      case 1:
      passed++;
      break;
      case 2:
      rejected++;
      break;
      }
      }
      }

      // 显示统计结果
      System.out.println("");
      System.out.println("2023版石家庄铁道大学突破24软件开发有限公司");
      System.out.println("在线投稿系统V1.0");
      System.out.println("
      ");
      System.out.println("总投稿数:" + total + "篇");
      System.out.println("未审核:" + unReviewed + "篇");
      System.out.println("已通过:" + passed + "篇");
      System.out.println("已退回:" + rejected + "篇");
      System.out.println("***********************************************************");
      System.out.print("按回车键返回主界面...");
      scanner.nextLine(); // 等待用户按键
      }

    /**

    • 根据稿件编号查找稿件
    • @param id 稿件编号
    • @return 找到的稿件对象,未找到返回null
      */
      private ManuscriptInformation findManuscriptById(int id) {
      for (int i = 0; i < count; i++) {
      ManuscriptInformation ms = manuscripts[i];
      if (ms != null && ms.getId() == id) {
      return ms;
      }
      }
      return null;
      }

    // 稿件信息类(内部类)
    static class ManuscriptInformation {
    private int id; // 稿件编号
    private String name; // 作者姓名
    private String unit; // 作者单位
    private String content; // 稿件内容
    private int statement; // 审核状态(0-未审核,1-已通过,2-已退回)
    private String opinion; // 审核意见
    private String date; // 提交/审核日期

     // 构造方法
     public ManuscriptInformation(int id, String name, String unit, String content, int statement, String opinion, String date) {
         this.id = id;
         this.name = name;
         this.unit = unit;
         this.content = content;
         this.statement = statement;
         this.opinion = opinion;
         this.date = date;
     }
    
     // Getter和Setter方法
     public int getId() {
         return id;
     }
    
     public String getName() {
         return name;
     }
    
     public String getUnit() {
         return unit;
     }
    
     public String getContent() {
         return content;
     }
    
     public int getStatement() {
         return statement;
     }
    
     public void setStatement(int statement) {
         this.statement = statement;
     }
    
     public String getOpinion() {
         return opinion;
     }
    
     public void setOpinion(String opinion) {
         this.opinion = opinion;
     }
    
     public String getDate() {
         return date;
     }
    
     public void setDate(String date) {
         this.date = date;
     }
    

    }
    }

posted @ 2025-10-29 23:56  Cx330。  阅读(1)  评论(0)    收藏  举报