9月4日开学测试
一、题目要求
1、定义WarehouseInformation类,其中包括九个私有变量(itemnumber,itemname,suppliername,warehousingtime,shipmenttime,warehousenumber,warehouseplace,itemnumber,outnumber)。
各成员的含义如下:
变量itemnumber 为字符串类型 String,表示商品编号(有8 位数字组成)。
变量itemname 为字符串类型 String,表示商品名称。
变量suppliername为String 类型,表示供货商名称。
变量warehousingtime为String 类型,表示入库时间,长度八位例如:20230904。
变量shipmenttime为String类型,表示出库时间,长度八位例如:20230904,如果该商品未出库,则出库时间为空,如果该商品已出库,则要求出库时间必须晚于入库时间。
变量warehousenumber为String类型,表示仓库编号。长度三位。
变量warehouseplace为String类型,表示存放商品的具体位置,长度八位数字XXXXYYZZ,其中XXXX表示货架号,YY表示货架的层号,ZZ表示存放在该货架该层的商品顺序号。
变量itemnumber为整型,表示入库商品的数量。
变量outnumber为整型,表示出库商品的数量。
对每个变量定义 get()(读取变量信息)和 set()(设置变量信息)的方法。
2、赋初值方法包括就个参数,用于为变量(sitemnumber,itemname,suppliername,warehousingtime,shipmenttime,warehousenumber,warehouseplace,itemnumber,outnumber)赋值。
二、 功能要求:(10分)
该功能完成仓库管理的基本功能功能,定义WarehouseManagement类完成下列功能。
1、利用数组实现至少存储五个商品入库的基本信息;(1分)
2、仓库管理系统的主界面如下图所示:(1分)
①界面要求;(0.5分)
***********************************************************石家庄铁道大学前进22软件开发有限公司
仓库管理系统2022版
***********************************************************
1、商品入库管理
2、商品信息修改
3、商品出库管理
4、仓库盘点管理
**********************************************************
②功能说明
输入数字1-4执行相应的功能,输入其他数字提示错误信息(该选项不存在),并返回主界面。(0.5分)
2、商品入库管理功能操作流程:(2分)
①在主界面选择“商品入库管理”功能后,进入“商品入库管理”界面,如下图所示:(0.5分)
依次录入商品编码、商品名称、供货商信息、入库时间、存放仓库号、存放位置信息,录入完成后的界面如下所示:
***********************************************************石家庄铁道大学前进22软件开发有限公司
仓库管理系统2022版***********************************************************
商品编号:20203982
商品名称:华为笔记本电脑
供货商信息:河北省正大光明有限公司
入库时间:20230904
存放仓库号:003
存放位置信息:0180350
入库商品数量:100
**********************************************************
如果商品编码、入库时间、存放仓库号、存放位置信息录入格式错误,则提示“录入错误”,要求用户重新录入正确信息。(1分)
全部正确信息录入完毕后,显示如下界面。
***********************************************************石家庄铁道大学前进22软件开发有限公司
仓库管理系统2022版***********************************************************
商品编号:20203982
商品名称:华为笔记本电脑
供货商信息:河北省正大光明有限公司
入库时间:20230904
存放仓库号:003
存放位置信息:0180350
入库商品数量:100
该商品入库操作已完成,是否提交(Y/N)
**********************************************************
选择“Y”将商品信息存储到到相应的数组中,并返回主界面。选择“N”,则忽略上述录入内容,并返回商品入库界面。(0.5分)
3、商品信息修改(2分)
①在主界面选择“商品信息修改”功能后,进入“商品信息修改”界面,如下图所示:
***********************************************************石家庄铁道大学前进22软件开发有限公司
仓库管理系统2022版***********************************************************
请输入商品编号:XXXXXXXX
**********************************************************
提示用户输入八位的商品编号。
②如果库中不存在该商品信息,则提示库中没有该商品,返回到商品修改界面。如果库中存在该商品,则显示:商品编码、商品名称、供货商信息、入库时间、存放仓库号、存放位置信息。如下图所示。(1分)
***********************************************************石家庄铁道大学前进22软件开发有限公司
仓库管理系统2022版***********************************************************
1、商品编号:20203982
2、商品名称:华为笔记本电脑
3、供货商信息:河北省正大光明有限公司
4、入库时间:20230904
5、存放仓库号:003
6、存放位置信息:0180350
7、入库商品数量:100
请选择需要修改的信息编号(1-7):
**********************************************************
输入数字1-7显示出需要修改的信息录入界面,如下图所示,输入其他数字提示错误信息(该选项不存在),并返回主界面(0.5分)***********************************************************石家庄铁道大学前进22软件开发有限公司
仓库管理系统2022版***********************************************************
1、商品编号:20203982
2、商品名称:华为笔记本电脑
3、供货商信息:河北省正大光明有限公司
4、入库时间:20230904
5、存放仓库号:003
6、存放位置信息:0180350
7、商品数量:100
请选择需要修改的信息编号(1-7):2
请输入修改后的商品名称:XXXXXXXX
**********************************************************
③选择“Y”将修改信息保存提交。选择“N”,不保存修改信息返回系统主界面。(0.5分)
4、商品出库管理(2分)
①在主界面选择“商品出库管理”功能后,进入“商品出库管理”界面,如下图所示:(0.5分)
***********************************************************石家庄铁道大学前进22软件开发有限公司
仓库管理系统2022版***********************************************************
请输入商品编号:XXXXXXXX
**********************************************************
提示用户输入八位的商品编号。
②如果库中不存在该商品信息,则提示库中没有该商品,返回到商品修改界面。如果库中存在该商品,则显示:商品编码、商品名称、供货商信息、入库时间、存放仓库号、存放位置信息。如下图所示。(1分)
***********************************************************石家庄铁道大学前进22软件开发有限公司
仓库管理系统2022版***********************************************************
1、商品编号:20203982
2、商品名称:华为笔记本电脑
3、供货商信息:河北省正大光明有限公司
4、入库时间:20230904
5、存放仓库号:003
6、存放位置信息:0180350
7、入库商品数量:100
出库时间:XXXXXXXXX
出库数量:xxx
**********************************************************
③,填写出库时间和出库数量,出库数量要小于该商品在数据库中所有入库数量之和,选择“Y”保存结果,返回系统主界面。选择“N”, 返回当前界面。(0.5分)
5、用户选择数字“4”,进入仓库盘点功能,显示如下界面。(2分)
***********************************************************石家庄铁道大学前进22软件开发有限公司
仓库管理系统2022版***********************************************************
1、 商品编号:XXXXXXX、商品名称:XXXXX、库存数量:xxx
2、 商品编号:XXXXXXX、商品名称:XXXXX、库存数量:xxx
3、 商品编号:XXXXXXX、商品名称:XXXXX、库存数量:xxx
4、 商品编号:XXXXXXX、商品名称:XXXXX、库存数量:xxx
5、 商品编号:XXXXXXX、商品名称:XXXXX、库存数量:xxx
………………………………………………….
**********************************************************
显示全部商品数量,期中库存数量=入库数量之和 -- 出库数量之和
二、程序实现
package com.example;
import java.util.*;
class WarehouseInformation {
// 定义私有变量
private String itemno; // 商品编号
private String itemname; // 商品名称
private String suppliername; // 供货商名称
private String warehousingtime; // 入库时间
private String shipmenttime; // 出库时间
private String warehousenumber; // 仓库编号
private String warehouseplace; // 存放商品的具体位置
private int innumber; // 入库商品数量
private int outnumber; // 出库商品数量
// 构造函数,用于赋初值
public WarehouseInformation(String sitemno, String itemname, String suppliername,
String warehousingtime, String shipmenttime,
String warehousenumber, String warehouseplace,
int innumber, int outnumber) {
this.itemno = sitemno;
this.itemname = itemname;
this.suppliername = suppliername;
this.warehousingtime = warehousingtime;
this.shipmenttime = shipmenttime;
this.warehousenumber = warehousenumber;
this.warehouseplace = warehouseplace;
this.innumber = innumber;
this.outnumber = outnumber;
}
// Getters and Setters
public String getItemno() {
return itemno;
}
public void setItemno(String itemno) {
this.itemno = itemno;
}
public String getItemname() {
return itemname;
}
public void setItemname(String itemname) {
this.itemname = itemname;
}
public String getSuppliername() {
return suppliername;
}
public void setSuppliername(String suppliername) {
this.suppliername = suppliername;
}
public String getWarehousingtime() {
return warehousingtime;
}
public void setWarehousingtime(String warehousingtime) {
this.warehousingtime = warehousingtime;
}
public String getShipmenttime() {
return shipmenttime;
}
public void setShipmenttime(String shipmenttime) {
this.shipmenttime = shipmenttime;
}
public String getWarehousenumber() {
return warehousenumber;
}
public void setWarehousenumber(String warehousenumber) {
this.warehousenumber = warehousenumber;
}
public String getWarehouseplace() {
return warehouseplace;
}
public void setWarehouseplace(String warehouseplace) {
this.warehouseplace = warehouseplace;
}
public int getInnumber() {
return innumber;
}
public void setInnumber(int innumber) {
this.innumber = innumber;
}
public int getOutnumber() {
return outnumber;
}
public String getItemnumber() {
return getItemno();
}
public void setOutnumber(int outnumber) {
this.outnumber = outnumber;
}
}
public class WarehouseManagement {
// 存储商品的数组
private WarehouseInformation[] items = new WarehouseInformation[5];
private int itemCount = 0; // 记录实际存储的商品数量
private Scanner scanner = new Scanner(System.in); // 将scanner移动到类级别,使其可以在整个类中使用
public static void main(String[] args) {
WarehouseManagement manager = new WarehouseManagement();
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.println("**********************************************************");
System.out.print("请输入操作选项:");
int choice = scanner.nextInt();
scanner.nextLine(); // Consume newline
switch (choice) {
case 1:
productInboundManagement();
break;
case 2:
productInfoUpdate();
break;
case 3:
productOutboundManagement();
break;
case 4:
displayInventory();
break;
default:
System.out.println("错误:该选项不存在。");
}
}
}
private void displayInventory() {
printHeader();
for (int i = 0; i < itemCount; i++) {
WarehouseInformation item = items[i];
System.out.println((i + 1) + "、商品编号:" + item.getItemno() +
"、商品名称:" + item.getItemname() +
"、库存数量:" + (item.getInnumber() - item.getOutnumber()));
}
System.out.println("**********************************************************");
}
private void productOutboundManagement() {
printHeader();
System.out.print("请输入商品编号:");
String itemNo = scanner.nextLine();
WarehouseInformation item = findItemByItemNo(itemNo);
if (item == null) {
System.out.println("库中没有该商品。");
return;
}
// 显示商品信息
printHeader();
System.out.println("1、商品编号:" + item.getItemno());
System.out.println("2、商品名称:" + item.getItemname());
System.out.println("3、供货商信息:" + item.getSuppliername());
System.out.println("4、入库时间:" + item.getWarehousingtime());
System.out.println("5、存放仓库号:" + item.getWarehousenumber());
System.out.println("6、存放位置信息:" + item.getWarehouseplace());
System.out.println("7、入库商品数量:" + item.getInnumber());
System.out.print("出库时间:");
String shipmenttime = scanner.nextLine();
while (!isValidDate(shipmenttime)) {
System.out.println("录入错误");
System.out.print("出库时间:");
shipmenttime = scanner.nextLine();
}
item.setShipmenttime(shipmenttime);
System.out.print("出库数量:");
int outboundQty = scanner.nextInt();
scanner.nextLine(); // clear newline
while (outboundQty <= 0 || outboundQty > item.getInnumber()) {
System.out.println("出库数量错误,请重新输入:");
outboundQty = scanner.nextInt();
scanner.nextLine(); // clear newline
}
item.setOutnumber(outboundQty);
item.setInnumber(item.getInnumber() - outboundQty);
System.out.println("是否保存修改?(Y/N)");
char saveChoice = scanner.nextLine().charAt(0);
if (saveChoice == 'Y' || saveChoice == 'y') {
System.out.println("出库信息已保存。");
} else if (saveChoice == 'N' || saveChoice == 'n') {
System.out.println("修改未保存。");
productOutboundManagement();
}
}
private void productInfoUpdate() {
printHeader();
System.out.print("请输入商品编号:");
String itemNo = scanner.nextLine();
WarehouseInformation item = findItemByItemNo(itemNo);
if (item == null) {
System.out.println("库中没有该商品。");
return;
}
while (true) {
printHeader();
System.out.println("1、商品编号:" + item.getItemno());
System.out.println("2、商品名称:" + item.getItemname());
System.out.println("3、供货商信息:" + item.getSuppliername());
System.out.println("4、入库时间:" + item.getWarehousingtime());
System.out.println("5、存放仓库号:" + item.getWarehousenumber());
System.out.println("6、存放位置信息:" + item.getWarehouseplace());
System.out.println("7、商品数量:" + item.getItemnumber());
System.out.print("请选择需要修改的信息编号(1-7):");
int choice = scanner.nextInt();
scanner.nextLine(); // clear newline
if (choice < 1 || choice > 7) {
System.out.println("错误:该选项不存在。");
break;
}
System.out.print("请输入修改后的信息:");
String newValue = scanner.nextLine();
if (!isValidUpdate(choice, newValue)) {
System.out.println("录入错误。");
continue;
}
updateItemInfo(item, choice, newValue);
System.out.println("是否保存修改?(Y/N)");
char saveChoice = scanner.nextLine().charAt(0);
if (saveChoice == 'Y' || saveChoice == 'y') {
System.out.println("信息已保存。");
break;
} else if (saveChoice == 'N' || saveChoice == 'n') {
System.out.println("修改未保存。");
break;
}
}
}
private WarehouseInformation findItemByItemNo(String itemNo) {
for (WarehouseInformation item : items) {
if (item != null && item.getItemno().equals(itemNo)) {
return item;
}
}
return null;
}
private boolean isValidUpdate(int choice, String newValue) {
switch (choice) {
case 1:
return isValidItemNo(newValue);
case 4:
return isValidDate(newValue);
case 5:
return isValidWarehouseNumber(newValue);
default:
return true;
}
}
private void updateItemInfo(WarehouseInformation item, int choice, String newValue) {
switch (choice) {
case 1:
item.setItemno(newValue);
break;
case 2:
item.setItemname(newValue);
break;
case 3:
item.setSuppliername(newValue);
break;
case 4:
item.setWarehousingtime(newValue);
break;
case 5:
item.setWarehousenumber(newValue);
break;
case 6:
item.setWarehouseplace(newValue);
break;
case 7:
item.setInnumber(Integer.parseInt(newValue));
break;
}
}
private void printHeader() {
System.out.println("***********************************************************");
System.out.println("石家庄铁道大学前进22软件开发有限公司");
System.out.println("仓库管理系统2022版");
System.out.println("***********************************************************");
}
private void productInboundManagement() {
printHeader();
System.out.print("商品编号:");
String itemno = scanner.nextLine();
while (!isValidItemNo(itemno)) {
System.out.println("录入错误");
System.out.print("商品编号:");
itemno = scanner.nextLine();
}
System.out.print("商品名称:");
String itemname = scanner.nextLine();
System.out.print("供货商信息:");
String suppliername = scanner.nextLine();
System.out.print("入库时间:");
String warehousingtime = scanner.nextLine();
while (!isValidDate(warehousingtime)) {
System.out.println("录入错误");
System.out.print("入库时间:");
warehousingtime = scanner.nextLine();
}
System.out.print("存放仓库号:");
String warehousenumber = scanner.nextLine();
while (!isValidWarehouseNumber(warehousenumber)) {
System.out.println("录入错误");
System.out.print("存放仓库号:");
warehousenumber = scanner.nextLine();
}
System.out.print("存放位置信息:");
String warehouseplace = scanner.nextLine();
System.out.print("入库商品数量:");
int innumber = scanner.nextInt();
scanner.nextLine(); // clear newline
printHeader();
System.out.println("商品编号:" + itemno);
System.out.println("商品名称:" + itemname);
System.out.println("供货商信息:" + suppliername);
System.out.println("入库时间:" + warehousingtime);
System.out.println("存放仓库号:" + warehousenumber);
System.out.println("存放位置信息:" + warehouseplace);
System.out.println("入库商品数量:" + innumber);
System.out.println("该商品入库操作已完成,是否提交(Y/N)");
char choice = scanner.nextLine().charAt(0);
if (choice == 'Y' || choice == 'y') {
if (itemCount < items.length) {
items[itemCount++] = new WarehouseInformation(itemno, itemname, suppliername,
warehousingtime, "", warehousenumber, warehouseplace,
innumber, 0);
} else {
System.out.println("仓库已满,无法存放更多商品。");
}
}
}
private boolean isValidItemNo(String itemno) {
return Pattern.matches("^\\d{8}$", itemno);
}
private boolean isValidDate(String date) {
return Pattern.matches("^\\d{8}$", date);
}
private boolean isValidWarehouseNumber(String warehousenumber) {
return Pattern.matches("^\\d{3}$", warehousenumber);
}
}