首页 > 其他分享 >考试改进代码

考试改进代码

时间:2024-09-28 10:00:40浏览次数:8  
标签:String int 代码 System item 改进 println 考试 out

import java.util.Scanner;
import java.util.regex.Pattern;

class PlanInformation {
private static int idCounter = 1; // 用于生成唯一的id
private int id; // 日报流水号
private String planid; // 产品生产批次号
private String planname; // 产品名称
private String process; // 当前工序名称
private String nextprocess; // 下一工序名称
private String operator; // 当前工序操作者
private String recipient; // 下一道工序的接受者
private int plannumber; // 要求产品数量
private int innumber; // 上一道工序接收的合格产品总数
private int outnumber; // 当前工序的产品转出总数
private int missnumber; // 当前工序的产品丢失数量
private int badnumber; // 当前工序的产品废品数量
private int inspectednumber; // 当前工序的产品待检验数量
private int statement; // 日报记录状态

public PlanInformation(String planid, String planname, int plannumber) {
    this.id = idCounter++;
    this.planid = planid;
    this.planname = planname;
    this.plannumber = plannumber;
    this.statement = 0; // 初始状态
}

// Getters and Setters
public int getId() { return id; }
public String getPlanid() { return planid; }
public String getPlanname() { return planname; }
public int getPlannumber() { return plannumber; }
public int getInnnumber() { return innumber; }
public int getOutnumber() { return outnumber; }
public int getMissnumber() { return missnumber; }
public int getBadnumber() { return badnumber; }
public int getInspectednumber() { return inspectednumber; }
public int getStatement() { return statement; }

public void setInnnumber(int innumber) { this.innumber = innumber; }
public void setOutnumber(int outnumber) { this.outnumber = outnumber; }
public void setMissnumber(int missnumber) { this.missnumber = missnumber; }
public void setBadnumber(int badnumber) { this.badnumber = badnumber; }
public void setInspectednumber(int inspectednumber) { this.inspectednumber = inspectednumber; }
public void setStatement(int statement) { this.statement = statement; }
public void setProcess(String process) { this.process = process; }
public void setNextprocess(String nextprocess) { this.nextprocess = nextprocess; }
public void setOperator(String operator) { this.operator = operator; }
public void setRecipient(String recipient) { this.recipient = recipient; }

}

public class PlanManagement {
private PlanInformation[] items = new PlanInformation[5];
private int itemCount = 0; // 实际存储的商品数量
private Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    PlanManagement manager = new PlanManagement();
    manager.showMainMenu();
}

public void showMainMenu() {
    while (true) {
        printHeader();
        System.out.println("1、生成计划");
        System.out.println("2、提交日报");
        System.out.println("3、确认日报");
        System.out.println("4、统计进度");
        System.out.print("请输入操作选项:");
        int choice = scanner.nextInt();
        scanner.nextLine(); // Consume newline

        switch (choice) {
            case 1:
                generatePlan();
                break;
            case 2:
                submitReport();
                break;
            case 3:
                confirmReport();
                break;
            case 4:
                displayProgress();
                break;
            default:
                System.out.println("错误:该选项不存在。");
        }
    }
}

private void printHeader() {
    System.out.println("***********************************************************");
    System.out.println("石家庄铁道大学无限23软件开发有限公司");
    System.out.println("Mes系统2023版");
    System.out.println("***********************************************************");
}

private void generatePlan() {
    printHeader();
    System.out.print("产品批次:");
    String planid = scanner.nextLine();
    while (!isValidPlanId(planid)) {
        System.out.println("录入错误");
        System.out.print("产品批次:");
        planid = scanner.nextLine();
    }

    System.out.print("产品名称:");
    String planname = scanner.nextLine();

    System.out.print("计划数量:");
    int plannumber = scanner.nextInt();
    scanner.nextLine(); // Consume newline

    if (itemCount < items.length) {
        items[itemCount++] = new PlanInformation(planid, planname, plannumber);
        System.out.println("该产品入库操作已完成,是否提交(Y/N)");
        char choice = scanner.nextLine().charAt(0);
        if (choice == 'Y' || choice == 'y') {
            System.out.println("产品信息已保存。");
        } else {
            itemCount--; // 取消入库
            System.out.println("入库操作已取消。");
        }
    } else {
        System.out.println("仓库已满,无法存放更多商品。");
    }
}

private void submitReport() {
    printHeader();
    System.out.print("请输入产品批次号:");
    String planid = scanner.nextLine();

    PlanInformation item = findItemByPlanId(planid);
    if (item == null) {
        System.out.println("库中没有该产品计划。");
        return;
    }

    if (item.getStatement() == 0) {
        System.out.println("产品批次:" + item.getPlanid());
        System.out.println("产品名称:" + item.getPlanname());
        System.out.println("计划数量:" + item.getPlannumber());

        // 录入其他信息
        System.out.print("当前工序:");
        String process = scanner.nextLine();
        item.setProcess(process);

        System.out.print("下一工序:");
        String nextprocess = scanner.nextLine();
        item.setNextprocess(nextprocess);

        System.out.print("操作员:");
        String operator = scanner.nextLine();
        item.setOperator(operator);

        System.out.print("接收员:");
        String recipient = scanner.nextLine();
        item.setRecipient(recipient);

        // 录入数量信息
        System.out.print("上一道工序转入数量:");
        int innumber = scanner.nextInt();
        item.setInnnumber(innumber);

        System.out.print("转出总数:");
        int outnumber = scanner.nextInt();
        item.setOutnumber(outnumber);

        System.out.print("丢失数量:");
        int missnumber = scanner.nextInt();
        item.setMissnumber(missnumber);

        System.out.print("废品数量:");
        int badnumber = scanner.nextInt();
        item.setBadnumber(badnumber);

        System.out.print("待检验数量:");
        int inspectednumber = scanner.nextInt();
        item.setInspectednumber(inspectednumber);

        // 计算上一道工序转入数量
        if (innumber != (outnumber + missnumber + badnumber + inspectednumber)) {
            System.out.println("录入错误,上一道工序转入数量不符合规则。");
            return;
        }

        item.setStatement(1); // 设置状态为1
        System.out.println("日报提交成功。");
    } else {
        System.out.println("该日报已提交,无法再次提交。");
    }
}

private void confirmReport() {
    printHeader();
    System.out.print("请输入产品批次:");
    String planid = scanner.nextLine();

    PlanInformation item = findItemByPlanId(planid);
    if (item == null) {
        System.out.println("库中没有该产品批次。");
        return;
    }

    if (item.getStatement() == 1) {
        System.out.println("产品批次:" + item.getPlanid());
        System.out.println("产品名称:" + item.getPlanname());
        System.out.println("计划数量:" + item.getPlannumber());
        System.out.println("当前工序:" + item.getProcess());
        System.out.println("下一工序:" + item.getNextprocess());
        System.out.println("操作员:" + item.getOperator());
        System.out.println("接收员:" + item.getRecipient());
        System.out.println("上一道工序转入数量:" + item.getInnnumber());
        System.out.println("转出总数:" + item.getOutnumber());
        System.out.println("丢失数量:" + item.getMissnumber());
        System.out.println("废品数量:" + item.getBadnumber());
        System.out.println("待检验数量:" + item.getInspectednumber());

        System.out.print("确认结果(Y/N):");
        char choice = scanner.nextLine().charAt(0);
        if (choice == 'Y' || choice == 'y') {
            item.setStatement(2); // 设置为确认状态
            System.out.println("日报确认成功。");
        } else {
            System.out.println("确认操作已取消。");
        }
    } else {
        System.out.println("该日报未提交,无法确认。");
    }
}

private void displayProgress() {
    printHeader();
    System.out.println("进度统计:");
    for (int i = 0; i < itemCount; i++) {
        PlanInformation item = items[i];
        int completedQuantity = item.getOutnumber(); // 以最后一道工序转出数量为准
        int remainingQuantity = item.getPlannumber() - completedQuantity;

        System.out.println("产品批次:" + item.getPlanid());
        System.out.println("产品名称:" + item.getPlanname());
        System.out.println("计划数量:" + item.getPlannumber());
        System.out.println("完成数量:" + completedQuantity);
        System.out.println("剩余数量:" + remainingQuantity);
        System.out.println("**********************************************************");
    }
}

private PlanInformation findItemByPlanId(String planid) {
    for (PlanInformation item : items) {
        if (item != null && item.getPlanid().equals(planid)) {
            return item;
        }
    }
    return null;
}

private boolean isValidPlanId(String planid) {
    return Pattern.matches("^\\d{4}-\\d{3}$", planid);
}

}

标签:String,int,代码,System,item,改进,println,考试,out
From: https://www.cnblogs.com/jackson12138/p/18437054

相关文章

  • 代码生成器实践总结
    最近,又用我的脚本管理,写了一个代码生成器。用在一个.netcoreWeb MVC项目中,想要把原来的一些Area,拷贝替换表名。业务上来说是:把推广模块,单独复制出一个推广-外部渠道的模块。专门给公司外部的推广人员用,但是不影响原来的功能。本质结构代码生成器= 模板+ 替换结论先......
  • java入学考试修改版
    以下是java入学测试经过模块化修改的源代码。packagemes;publicclassMesmain{publicstaticvoidmain(String[]args){PlanManagementa=newPlanManagement();a.menu();}}packagemes;publicclassPlanInformation{privateintid;//日报流水表privateString......
  • 要优化和配置Windows蓝牙设备的注册表设置,可以创建一个.reg文件,帮助修改相关的注册表
    要优化和配置Windows蓝牙设备的注册表设置,可以创建一个.reg文件,帮助修改相关的注册表项。以下是详细说明及示例代码。1.创建 .reg 文件您可以使用文本编辑器(如记事本)来创建一个.reg文件。下面是一些常见的蓝牙相关注册表路径和设置。2.常用蓝牙注册表路径蓝牙服务设置:......
  • 如何使用大模型高效生产数据[含完整代码]
    大模型出现之前我们的训练数据大都依赖人工标注、开源数据以及从线上数据中构造合适的监督数据,如果开源数据不太符合我们的业务需求(大部分情况下无法直接满足要求),且已有的线上数据也没办法抽取出符合要求的监督数据,这个时候恐怕只能依赖于人工标注了,但是人工标注又非常的耗费人......
  • 三篇文章速通JavaSE到SpringBoot框架 (中) IO 进程线程 网络编程 XML MySQL JDBC相关
    文章目录IOfile类的作用I/O的作用将上篇文章综合项目使用IO流升级所需知识点进程线程创建线程的三种方式网络编程网络编程介绍IP地址端口号网络通信协议网络通信协议的分层演示代码XMLXML的作用是什么?xml特点注解什么是注解?注解的使用注解的重要性注解的使用实例M......
  • Spring Ioc底层原理代码详细解释
    文章目录概要根据需求编写XML文件,配置需要创建的bean编写程序读取XML文件,获取bean相关信息,类,属性,id前提知识点Dom4j根据第二步获取到的信息,结合反射机制动态创建对象,同时完成属性赋值将创建好的bean存入到Map集合,设置key-value映射提供方法从Map中通过id获取到对象的valu......
  • 代码随想录训练营第44天|最长公共子序列
    1143.最长公共子序列classSolution{public:intlongestCommonSubsequence(stringtext1,stringtext2){text1.insert(text1.begin(),'');text2.insert(text2.begin(),'');intn1=text1.length(),n2=text2.length(),m......
  • 类中静态代码块、静态属性加载顺序
     1、如果静态属性在静态代码块前面classFoo{publicFoo(){System.out.println("我是Example的静态属性foo");System.out.println("未修改的静态属性值为====>"+Example.staticVariable);Example.staticVariable=2;......
  • STL05——手写一个简单版本的红黑树(500+行代码)
    STL05——手写一个简单版本的红黑树题目描述在STL中,红黑树是一个重要的底层数据结构,本题需要设计一个RedBlackTree类,实现如下功能:1、基础功能构造函数:初始化RedBlackTree实例析构函数:清理资源,确保无内存泄露2、核心功能在RedBlackTree中插入一个节点在RedBlack......
  • RabbitMQ五种工作模式的代码具体实现(代码简单易懂)(一)
    一、简单队列模式:直接把消息发送给队列,且队列只有一个消费者。使用的是Rabbitmq默认的交换机。生产者部分:<!--amqp依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</art......