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=n1n2;
break;
default:
op="";
result=n1n2;
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);
}
}
浙公网安备 33010602011771号