Yunyuzuiluo

2024.9.23作业

课后作业1
生成30道题
import java.util.Random;
class Scratch{
public static void main (String[] args){
Random random = new Random();
for(int i=0;i<30;i++){
int n1=random.nextInt(100);
int n2=random.nextInt(100);
int choose=random.nextInt(4);
String op;
int result;
switch(choose){
case 0:
op="+";
result=n1+n2;
break;
case 1:
op="-";
result=n1-n2;
break;
case 2:
op="/";
result=n1/n2;
break;
case 3:
op="";
result=n1
n2;
break;
default:
op="";
result=n1
n2;
break;
}
System.out.println(n1+op+n2+"="+result);
}
}
}

课后作业2
愚公移山代码
需求1.开出一条山路
沟通方式 :聚室而谋
目标:挖山,向豫南方向挖到汉阴
技术方案:叩石垦壤,运于渤海之尾
参与人员:三名技术人员,一名工程管理人员,一名外协
实现方案:if我死,儿子继续,循环起来

1.planinformation(数据类),planmanagement(主类,定义业务逻辑)
2.数据压平:dataflatten(); 判断工序:judgingprocess();统计数量:countplan();
3.主类下的分类,1 主界面方法mainframe();2 生成计划方法();3 提交日报方法submitreport();4 确认日报方法confirmreport(); 5 countschedule();
4.1 主界面
(1)绘制主界面
(2)获取输入
(3)判断选择功能界面(也可以提前定义为子方法,在此就不在重复了)

2 生成计划
(1)依次录入产品批次、产品名称、计划数量;
(2)显示生成计划子界面generateFrame( );
(3)选择“Y”将产品信息存储到到相应的数组中,并返回主界面。
(4)选择“N”,则忽略上述录入内容,调用(2) generateFrame( ) ,批次状态statement设置成为0 。

3 提交日报方法submitreport()
(1)判断该生产批次号是否存在judgeBatchno( ) 。
(2)如果存在,判断状态位是否为0;是则显示产品批次、产品名称、计划数量,并且依次填写下述信息。
(3)如果状态位为2,显示:产品批次、产品名称、计划数量,当前工序、下一工序、操作员、接收员、上一道工序转入数量,并且依次填写剩余信息。
(4)判断数据是否压平dataFlatten( );
(5)选择“Y”将修改信息保存提交,将批次状态statement设置成为1 。选择“N”,不保存修改信息返回系统主界面。

4确认日报方法confirmReport ( );
(1)判断该生产批次号是否存在judgeBatchno( ) 。
(2)如果库中存在该产品批次且该批次状态为1是,则显示:产品批次、产品名称、计划数量、转入数量、转出数量等基本信息,
(3)选择“Y”确认结果,并生成一条新的生产任务记录,将下一工序填充到当前工序为,并根据工艺流程表自动填充下一工序,将转出合格数量=转出总数-丢失数量-废品数量-待检验数量填充到转入数量字段,并将提示:将批次状态statement设置成为2

import java.util.Scanner;

// 定义计划信息类,用于存储单个计划的相关信息
class PlanInformation {
// 存储产品批次信息
private String batchNo;
// 存储产品名称
private String productName;
// 存储计划数量
private int planQuantity;
// 批次状态,0 表示未开始,1 表示进行中,2 表示已完成
private int statement;

// 构造函数,用于初始化计划信息对象
public PlanInformation(String batchNo, String productName, int planQuantity, int statement) {
    this.batchNo = batchNo;
    this.productName = productName;
    this.planQuantity = planQuantity;
    this.statement = statement;
}

// 获取批次号的方法
public String getBatchNo() {
    return batchNo;
}

// 设置批次号的方法
public void setBatchNo(String batchNo) {
    this.batchNo = batchNo;
}

// 获取产品名称的方法
public String getProductName() {
    return productName;
}

// 设置产品名称的方法
public void setProductName(String productName) {
    this.productName = productName;
}

// 获取计划数量的方法
public int getPlanQuantity() {
    return planQuantity;
}

// 设置计划数量的方法
public void setPlanQuantity(int planQuantity) {
    this.planQuantity = planQuantity;
}

// 获取批次状态的方法
public int getStatement() {
    return statement;
}

// 设置批次状态的方法
public void setStatement(int statement) {
    this.statement = statement;
}

}

// 定义计划管理类,用于管理多个计划信息
class PlanManagement {
// 存储多个计划信息的数组
private PlanInformation[] plans;
// 记录当前存储的计划数量
private int planCount;

// 构造函数,初始化计划管理对象
public PlanManagement() {
    // 创建长度为 100 的计划信息数组
    plans = new PlanInformation[100];//直接在构造函数里创建类数组
    // 初始计划数量为 0
    planCount = 0;
}

// 数据压平方法,这里可以实现数据压平的逻辑,目前仅输出提示信息
public void dataFlatten() {
    System.out.println("数据压平中...");
}

// 判断工序方法,这里可以实现判断工序的逻辑,目前仅返回 true
public boolean judgingProcess() {
    return true;
}

// 统计数量方法,返回当前存储的计划数量
public int countPlan() {
    return planCount;
}

// 主界面方法,显示系统主界面并处理用户选择
public void mainFrame() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("愚公移山工程管理系统");
    System.out.println("1. 生成计划");
    System.out.println("2. 提交日报");
    System.out.println("3. 确认日报");
    System.out.println("4. 退出程序");
    int choice = scanner.nextInt();
    switch (choice) {
        case 1:
            // 调用生成计划方法
            generatePlan();
            break;
        case 2:
            // 调用提交日报方法
            submitReport();
            break;
        case 3:
            // 调用确认日报方法
            confirmReport();
            break;
        case 4:
            System.out.println("程序退出。");
            return;
        default:
            System.out.println("无效选择,请重新输入。");
            // 递归调用主界面方法,让用户重新输入
            mainFrame();
    }
}

// 生成计划方法,用于创建新的计划信息
public void generatePlan() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入产品批次:");
    String batchNo = scanner.next();
    System.out.println("请输入产品名称:");
    String productName = scanner.next();
    System.out.println("请输入计划数量:");
    int planQuantity = scanner.nextInt();
    System.out.println("确认生成计划吗?(Y/N)");
    String confirm = scanner.next();
    if (confirm.equalsIgnoreCase("Y")) {
        // 将新的计划信息添加到数组中,并更新计划数量////
        plans[planCount++] = new PlanInformation(batchNo, productName, planQuantity, 0);
        System.out.println("计划生成成功,返回主界面。");
        // 调用主界面方法,返回主界面
        mainFrame();
    } else {
        // 如果用户不确认生成计划,将计划状态设置为 0
        plans[planCount].setStatement(0);
        // 递归调用生成计划方法,让用户重新输入
        generatePlan();
    }
}

// 提交日报方法,用于处理提交日报的操作
public void submitReport() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入生产批次号:");
    String batchNo = scanner.next();
    boolean batchExists = judgeBatchno(batchNo);
    if (batchExists) {
        // 根据批次号查找计划信息
        PlanInformation plan = findPlanByBatchNo(batchNo);
        if (plan.getStatement() == 0) {
            System.out.println("产品批次:" + plan.getBatchNo());
            System.out.println("产品名称:" + plan.getProductName());
            System.out.println("计划数量:" + plan.getPlanQuantity());
            // 这里可以添加其他信息的填写逻辑
        } else if (plan.getStatement() == 2) {
            System.out.println("产品批次:" + plan.getBatchNo());
            System.out.println("产品名称:" + plan.getProductName());
            System.out.println("计划数量:" + plan.getPlanQuantity());
            // 这里可以添加其他信息的填写逻辑
        }
        System.out.println("数据压平吗?(Y/N)");
        String flattenConfirm = scanner.next();
        if (flattenConfirm.equalsIgnoreCase("Y")) {
            // 如果用户确认数据压平,将计划状态设置为 1
            plan.setStatement(1);
            System.out.println("修改信息保存提交成功。");
            // 调用主界面方法,返回主界面
            mainFrame();
        } else {
            System.out.println("不保存修改信息,返回系统主界面。");
            // 调用主界面方法,返回主界面
            mainFrame();
        }
    } else {
        System.out.println("该生产批次号不存在。");
        // 调用主界面方法,返回主界面
        mainFrame();
    }
}

// 确认日报方法,用于处理确认日报的操作
public void confirmReport() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入生产批次号:");
    String batchNo = scanner.next();
    boolean batchExists = judgeBatchno(batchNo);
    if (batchExists) {
        // 根据批次号查找计划信息
        PlanInformation plan = findPlanByBatchNo(batchNo);
        if (plan.getStatement() == 1) {
            System.out.println("产品批次:" + plan.getBatchNo());
            System.out.println("产品名称:" + plan.getProductName());
            System.out.println("计划数量:" + plan.getPlanQuantity());
            // 这里可以添加其他信息的显示逻辑
            System.out.println("确认结果吗?(Y/N)");
            String confirm = scanner.next();
            if (confirm.equalsIgnoreCase("Y")) {
                // 如果用户确认结果,将计划状态设置为 2
                plan.setStatement(2);
                System.out.println("确认成功,批次状态设置为 2。");
                // 调用主界面方法,返回主界面
                mainFrame();
            } else {
                System.out.println("不确认结果,返回系统主界面。");
                // 调用主界面方法,返回主界面
                mainFrame();
            }
        } else {
            System.out.println("该批次状态不为 1,无法确认日报。");
            // 调用主界面方法,返回主界面
            mainFrame();
        }
    } else {
        System.out.println("该生产批次号不存在。");
        // 调用主界面方法,返回主界面
        mainFrame();
    }
}

// 判断生产批次号是否存在方法
public boolean judgeBatchno(String batchNo) {
    for (int i = 0; i < planCount; i++) {
        if (plans[i].getBatchNo().equals(batchNo)) {
            return true;
        }
    }
    return false;
}

// 根据批次号查找计划方法
public PlanInformation findPlanByBatchNo(String batchNo) {
    for (int i = 0; i < planCount; i++) {
        if (plans[i].getBatchNo().equals(batchNo)) {
            return plans[i];
        }
    }
    return null;
}

}

// 主类,包含程序入口方法
public class Main {
public static void main(String[] args) {
// 创建计划管理对象
PlanManagement planManagement = new PlanManagement();
// 调用计划管理对象的主界面方法,启动程序
planManagement.mainFrame();
}
}

课后作业3
验证码
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

public class Main {
// 生成验证码的方法
public static String genVC() {
Random random = new Random();//定义一个Random类型的random,赋值给它一个随机数
//StringBuilder是可变的,可以对其进行诸如追加、插入、删除字符等操作,而不需要创建新的对象。
StringBuilder code = new StringBuilder();
// 循环生成六位验证码
for (int i = 0; i < 6; i++) {
if (random.nextBoolean()) {//nextBoolean,随机生成一个布尔值
// 生成数字
code.append(random.nextInt(10));//
} else {
// 生成大写字母
code.append((char) (random.nextInt(26) + 65));//生成阿斯克码值强转字母
}
}
/StringBuilder的toString()方法用于将StringBuilder中构建的字符序列转换为一个String对象。因为在 Java 中,
String和StringBuilder是不同的类型,而在后续的验证码验证过程中(将生成的验证码与用户输入的验证码进行比较),
需要将StringBuilder对象转换为String类型,所以调用code.toString()来得到最终的验证码字符串。
/
return code.toString();
}

public static void main(String[] args) {
    JFrame frame = new JFrame("验证码验证");
    frame.setSize(300, 200);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel(new FlowLayout());

    String verificationCode = genVC();
    JLabel codeLabel = new JLabel("生成的验证码是:");
    JLabel verificationCodeLabel = new JLabel(verificationCode);
    JLabel inputLabel = new JLabel("请输入验证码:");
    JTextField inputField = new JTextField(10);
    JButton verifyButton = new JButton("验证");

    panel.add(codeLabel);
    panel.add(verificationCodeLabel);
    panel.add(inputLabel);
    panel.add(inputField);
    panel.add(verifyButton);

    verifyButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String inputCode = inputField.getText();
            if (inputCode.equalsIgnoreCase(verificationCode)) {
                System.out.println("验证成功!");
            } else {
                System.out.println("验证失败!请重新输入。");
            }
        }
    });

    frame.add(panel);
    frame.setVisible(true);
}

}

posted on 2024-09-28 17:42  刘晋宇  阅读(25)  评论(0)    收藏  举报

导航