在建民老师的课上,老师让我们调教一下ai,用它来尝试写一下代码。
首先,我用的deepseek,但是经常服务器繁忙,不好用,就换了kimi来当这次测试的ai。
我输入了建民老师的文档和以下信息:
要用web相关知识(html,mybits,mysql等等),要罗列出我应该建的文件等等,进行数据库中数据的编写,数据库配置,应用框架的思维,用java语言写一个程序代码,要求如上的doc文件,要足够细化,我的数据库账户是:root,密码是:(我的密码,就不展示了),要把所有需要操作的内容写出来,用idea来实现,并且对每一个上面文件中的要求都实现
ai给我的回应是:

以及其他的代码的内容,包括mysql语句等等
都生成之后我问它:
文件中所有的功能都实现了吗,如果你用idea编译器进行运行,可以实现所有文件中的功能吗,如果不能,请改进一下
之后我又发现有的内容它是省略了的,所以我就输入:
根据以上所有内容,将所有的代码进行细化并且生成出来,要将文件的路径写明,已经所有的代码写清楚,并且要把注释都写明白
以及script.js style.css 以及model中的内容完善一下,要和以上代码相匹配
于是它又给我生成了所有代码的一个总和,按理说到这里就可以去idea上调试了,可是这个框架我是不太熟悉的,所以我就从头开始,并且加上了我平常在用的那个框架,如下:
要用web相关知识(html,mybits,mysql等等),要罗列出我应该建的文件等等,进行数据库中数据的编写,数据库配置,应用框架的思维,用java语言写一个程序代码,不用springboot,并且用如下这种框架。要求如上的doc文件,要足够细化,我的数据库账户是:root,密码是:(我的密码),要把所有需要操作的内容写出来,用idea来实现,并且对每一个上面文件中的要求都实现
exam-demo/
│
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── exam/
│ │ │ ├── mapper/
│ │ │ │ └── UserMapper.java
│ │ │ ├── pojo/
│ │ │ │ ├── material.java
│ │ │ │ ├── pass.java
│ │ │ │ ├── taizhang.java
│ │ │ │ └── warehouse.java
│ │ │ └── web/
│ │ │ ├── login.java
│ │ │ ├── materialadd.java
│ │ │ ├── materialdelete.java
│ │ │ ├── materialedit.java
│ │ │ ├── ruku.java
│ │ │ ├── warehouseadd.java
│ │ │ └── warehousedelete.java
│ │ ├── resources/
│ │ │ ├── exam/
│ │ │ │ └── mapper/
│ │ │ │ └── UserMapper.xml
│ │ │ ├── logback.xml
│ │ │ └── mybatis-config.xml
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ ├── chuku.html
│ │ ├── index.jsp
│ │ ├── login.html
│ │ ├── managerscreen.html
│ │ ├── materialadd.html
│ │ ├── materialdelete.html
│ │ ├── materialedit.html
│ │ ├── ruku.html
│ │ ├── staffscreen.html
│ │ ├── warehouseadd.html
│ │ ├── warehousedelete.html
│ │ └── warehouseedit.html
│ └── target/
└── pom.xml
然后还是基本流程:
把所有代码写出来,并且要细化
继续写,把所有功能都实现
这里发现html页面较为原始,没加入css和js所以就要继续生成有美化的,并且我担心它给我自作主张换框架所以我就给它说:
将上面这个代码优化,不用springboot,并且要用上面这个框架,要实现文件中的所有功能,并且将html美化,使得风格相同exam-demo/
│
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── exam/
│ │ │ ├── mapper/
│ │ │ │ └── UserMapper.java
│ │ │ ├── pojo/
│ │ │ │ ├── Material.java
│ │ │ │ ├── Warehouse.java
│ │ │ │ ├── Category.java
│ │ │ │ └── InventoryRecord.java
│ │ │ └── web/
│ │ │ ├── LoginServlet.java
│ │ │ ├── AddWarehouseServlet.java
│ │ │ ├── DeleteWarehouseServlet.java
│ │ │ ├── AddMaterialServlet.java
│ │ │ ├── DeleteMaterialServlet.java
│ │ │ ├── InboundServlet.java
│ │ │ ├── OutboundServlet.java
│ │ │ ├── QueryInventoryServlet.java
│ │ ├── resources/
│ │ │ ├── exam/
│ │ │ │ └── mapper/
│ │ │ │ └── UserMapper.xml
│ │ │ ├── logback.xml
│ │ │ └── mybatis-config.xml
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ ├── login.html
│ │ ├── admin.html
│ │ ├── staff.html
│ │ ├── addWarehouse.html
│ │ ├── deleteWarehouse.html
│ │ ├── addMaterial.html
│ │ ├── deleteMaterial.html
│ │ ├── inbound.html
│ │ ├── outbound.html
│ │ └── queryInventory.html
│ └── test/
└── pom.xml
之后再说:
文件中的所有功能都实现了吗,要把所有功能都实现
检查一下所有功能都实现了吗,包括框架进行汇总,将所有代码罗列出来
细化所有的功能内容
写出上面这些代码的文件路径框架
写出所有的html页面
至此,代码就都写出来了,我就创建项目,配置环境等等
都搞好后我开始按照上面的文件路径来创建java,xml,html等等空文件(完全按照ai的框架格式创建)
再一个一个把每个文件的内容复制进去,有的爆红的就可以导入包解决,有的再复制问ai,因为都是它生成的,所以ai会查看它写的之前的代码,解决起来比较方便
就这样解决完所以的爆红就会发现已经可以运行了
总结:
总体来讲,用ai生成代码是不需要我们来费心,但是环境配置的工作,已经查漏补缺的工作等等都需要我们来完成,用ai来写花费的时间短了一些,但是我们有时候都看不懂ai写的代码,只能利用ai来解决它自己写的代码中出现的问题,维护性上不太方便。要是有一款ai可以在编译软件中给我们直接配置环境,编写代码,来个小学生都能够完成,到那时候我们就真得下班了
我的ai生成代码如下:
框架:
exam-demo/
│
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── exam/
│ │ │ ├── mapper/
│ │ │ │ └── UserMapper.java
│ │ │ ├── pojo/
│ │ │ │ ├── material.java
│ │ │ │ ├── pass.java
│ │ │ │ ├── taizhang.java
│ │ │ │ └── warehouse.java
│ │ │ └── web/
│ │ │ ├── login.java
│ │ │ ├── materialadd.java
│ │ │ ├── materialdelete.java
│ │ │ ├── materialedit.java
│ │ │ ├── ruku.java
│ │ │ ├── warehouseadd.java
│ │ │ └── warehousedelete.java
│ │ ├── resources/
│ │ │ ├── exam/
│ │ │ │ └── mapper/
│ │ │ │ └── UserMapper.xml
│ │ │ ├── logback.xml
│ │ │ └── mybatis-config.xml
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ ├── chuku.html
│ │ ├── index.jsp
│ │ ├── login.html
│ │ ├── managerscreen.html
│ │ ├── materialadd.html
│ │ ├── materialdelete.html
│ │ ├── materialedit.html
│ │ ├── ruku.html
│ │ ├── staffscreen.html
│ │ ├── warehouseadd.html
│ │ ├── warehousedelete.html
│ │ └── warehouseedit.html
│ └── target/
└── pom.xml
然后还是基本流程:
把所有代码写出来,并且要细化
继续写,把所有功能都实现
这里发现html页面较为原始,没加入css和js所以就要继续生成有美化的,并且我担心它给我自作主张换框架所以我就给它说:
将上面这个代码优化,不用springboot,并且要用上面这个框架,要实现文件中的所有功能,并且将html美化,使得风格相同exam-demo/
│
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── exam/
│ │ │ ├── mapper/
│ │ │ │ └── UserMapper.java
│ │ │ ├── pojo/
│ │ │ │ ├── Material.java
│ │ │ │ ├── Warehouse.java
│ │ │ │ ├── Category.java
│ │ │ │ └── InventoryRecord.java
│ │ │ └── web/
│ │ │ ├── LoginServlet.java
│ │ │ ├── AddWarehouseServlet.java
│ │ │ ├── DeleteWarehouseServlet.java
│ │ │ ├── AddMaterialServlet.java
│ │ │ ├── DeleteMaterialServlet.java
│ │ │ ├── InboundServlet.java
│ │ │ ├── OutboundServlet.java
│ │ │ ├── QueryInventoryServlet.java
│ │ ├── resources/
│ │ │ ├── exam/
│ │ │ │ └── mapper/
│ │ │ │ └── UserMapper.xml
│ │ │ ├── logback.xml
│ │ │ └── mybatis-config.xml
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ ├── login.html
│ │ ├── admin.html
│ │ ├── staff.html
│ │ ├── addWarehouse.html
│ │ ├── deleteWarehouse.html
│ │ ├── addMaterial.html
│ │ ├── deleteMaterial.html
│ │ ├── inbound.html
│ │ ├── outbound.html
│ │ └── queryInventory.html
│ └── test/
└── pom.xml
mysql语句:
点击查看代码
CREATE DATABASE IF NOT EXISTS warehouse_management;
USE warehouse_management;
CREATE TABLE warehouse (
warehouse_id INT AUTO_INCREMENT PRIMARY KEY,
warehouse_code VARCHAR(20) NOT NULL UNIQUE,
warehouse_name VARCHAR(100) NOT NULL,
location VARCHAR(200)
);
CREATE TABLE category (
category_id INT AUTO_INCREMENT PRIMARY KEY,
category_code VARCHAR(20) NOT NULL UNIQUE,
category_name VARCHAR(100) NOT NULL
);
CREATE TABLE material (
material_id INT AUTO_INCREMENT PRIMARY KEY,
material_code VARCHAR(20) NOT NULL UNIQUE,
material_name VARCHAR(100) NOT NULL,
specification VARCHAR(50),
material_type VARCHAR(50),
supplier VARCHAR(100),
brand VARCHAR(50),
category_id INT,
warehouse_id INT,
quantity DECIMAL(10, 2) DEFAULT 0,
unit VARCHAR(20),
storage_location VARCHAR(100),
FOREIGN KEY (category_id) REFERENCES category(category_id),
FOREIGN KEY (warehouse_id) REFERENCES warehouse(warehouse_id)
);
CREATE TABLE inventory_record (
record_id INT AUTO_INCREMENT PRIMARY KEY,
material_code VARCHAR(20),
operation ENUM('IN', 'OUT') NOT NULL,
quantity DECIMAL(10, 2) NOT NULL,
operation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
warehouse_id INT,
FOREIGN KEY (material_code) REFERENCES material(material_code),
FOREIGN KEY (warehouse_id) REFERENCES warehouse(warehouse_id)
);
点击查看代码
package exam.mapper;
import exam.pojo.Material;
import exam.pojo.User;
import exam.pojo.Warehouse;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
List<Warehouse> getAllWarehouses();
void addWarehouse(Warehouse warehouse);
void deleteWarehouse(String warehouseCode);
Warehouse getWarehouseByCode(String warehouseCode);
List<Material> getAllMaterials();
void addMaterial(Material material);
void deleteMaterial(String materialCode);
Material getMaterialByCode(String materialCode);
boolean checkMaterialCodeExists(String materialCode);
void addInventoryRecord(String materialCode, String operation, double quantity, String warehouseCode);
void updateMaterial(Material material); // 添加这一行
User getUserByUsername(String username);
}
点击查看代码
package exam.pojo;
public class Category {
private int categoryId;
private String categoryCode;
private String categoryName;
public Category() {
}
public Category(String categoryCode, String categoryName) {
this.categoryCode = categoryCode;
this.categoryName = categoryName;
}
public int getCategoryId() {
return categoryId;
}
public void setCategoryId(int categoryId) {
this.categoryId = categoryId;
}
public String getCategoryCode() {
return categoryCode;
}
public void setCategoryCode(String categoryCode) {
this.categoryCode = categoryCode;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
@Override
public String toString() {
return "Category{" +
"categoryId=" + categoryId +
", categoryCode='" + categoryCode + '\'' +
", categoryName='" + categoryName + '\'' +
'}';
}
}
点击查看代码
package exam.pojo;
public class InventoryRecord {
private int recordId;
private String materialCode;
private String operation;
private double quantity;
private String operationDate;
private int warehouseId;
public InventoryRecord() {
}
public InventoryRecord(String materialCode, String operation, double quantity, String operationDate, int warehouseId) {
this.materialCode = materialCode;
this.operation = operation;
this.quantity = quantity;
this.operationDate = operationDate;
this.warehouseId = warehouseId;
}
public int getRecordId() {
return recordId;
}
public void setRecordId(int recordId) {
this.recordId = recordId;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public double getQuantity() {
return quantity;
}
public void setQuantity(double quantity) {
this.quantity = quantity;
}
public String getOperationDate() {
return operationDate;
}
public void setOperationDate(String operationDate) {
this.operationDate = operationDate;
}
public int getWarehouseId() {
return warehouseId;
}
public void setWarehouseId(int warehouseId) {
this.warehouseId = warehouseId;
}
@Override
public String toString() {
return "InventoryRecord{" +
"recordId=" + recordId +
", materialCode='" + materialCode + '\'' +
", operation='" + operation + '\'' +
", quantity=" + quantity +
", operationDate='" + operationDate + '\'' +
", warehouseId=" + warehouseId +
'}';
}
}
点击查看代码
package exam.pojo;
public class Material {
private int materialId;
private String materialCode;
private String materialName;
private String specification;
private String materialType;
private String supplier;
private String brand;
private int categoryId;
private int warehouseId;
private double quantity;
private String unit;
private String storageLocation;
public Material() {
}
public Material(String materialCode, String materialName, String specification, String materialType, String supplier, String brand, int categoryId, int warehouseId, double quantity, String unit, String storageLocation) {
this.materialCode = materialCode;
this.materialName = materialName;
this.specification = specification;
this.materialType = materialType;
this.supplier = supplier;
this.brand = brand;
this.categoryId = categoryId;
this.warehouseId = warehouseId;
this.quantity = quantity;
this.unit = unit;
this.storageLocation = storageLocation;
}
public int getMaterialId() {
return materialId;
}
public void setMaterialId(int materialId) {
this.materialId = materialId;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getMaterialName() {
return materialName;
}
public void setMaterialName(String materialName) {
this.materialName = materialName;
}
public String getSpecification() {
return specification;
}
public void setSpecification(String specification) {
this.specification = specification;
}
public String getMaterialType() {
return materialType;
}
public void setMaterialType(String materialType) {
this.materialType = materialType;
}
public String getSupplier() {
return supplier;
}
public void setSupplier(String supplier) {
this.supplier = supplier;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getCategoryId() {
return categoryId;
}
public void setCategoryId(int categoryId) {
this.categoryId = categoryId;
}
public int getWarehouseId() {
return warehouseId;
}
public void setWarehouseId(int warehouseId) {
this.warehouseId = warehouseId;
}
public double getQuantity() {
return quantity;
}
public void setQuantity(double quantity) {
this.quantity = quantity;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getStorageLocation() {
return storageLocation;
}
public void setStorageLocation(String storageLocation) {
this.storageLocation = storageLocation;
}
@Override
public String toString() {
return "Material{" +
"materialId=" + materialId +
", materialCode='" + materialCode + '\'' +
", materialName='" + materialName + '\'' +
", specification='" + specification + '\'' +
", materialType='" + materialType + '\'' +
", supplier='" + supplier + '\'' +
", brand='" + brand + '\'' +
", categoryId=" + categoryId +
", warehouseId=" + warehouseId +
", quantity=" + quantity +
", unit='" + unit + '\'' +
", storageLocation='" + storageLocation + '\'' +
'}';
}
}
点击查看代码
package exam.pojo;
public class User {
private int userId;
private String username;
private String password;
private String role;
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", username='" + username + '\'' +
", password='" + password + '\'' +
", role='" + role + '\'' +
'}';
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}
点击查看代码
package exam.pojo;
public class Warehouse {
private int warehouseId;
private String warehouseCode;
private String warehouseName;
private String location;
public Warehouse() {
}
public Warehouse(String warehouseCode, String warehouseName, String location) {
this.warehouseCode = warehouseCode;
this.warehouseName = warehouseName;
this.location = location;
}
public int getWarehouseId() {
return warehouseId;
}
public void setWarehouseId(int warehouseId) {
this.warehouseId = warehouseId;
}
public String getWarehouseCode() {
return warehouseCode;
}
public void setWarehouseCode(String warehouseCode) {
this.warehouseCode = warehouseCode;
}
public String getWarehouseName() {
return warehouseName;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
@Override
public String toString() {
return "Warehouse{" +
"warehouseId=" + warehouseId +
", warehouseCode='" + warehouseCode + '\'' +
", warehouseName='" + warehouseName + '\'' +
", location='" + location + '\'' +
'}';
}
}
点击查看代码
package exam.web;
import exam.mapper.UserMapper;
import exam.pojo.Material;
import exam.pojo.Warehouse;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AddMaterialServlet extends HttpServlet {
private static SqlSessionFactory sqlSessionFactory = LoginServlet.sqlSessionFactory;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String materialCode = request.getParameter("materialCode");
String materialName = request.getParameter("materialName");
String specification = request.getParameter("specification");
String materialType = request.getParameter("materialType");
String supplier = request.getParameter("supplier");
String brand = request.getParameter("brand");
String categoryCode = request.getParameter("categoryCode");
String warehouseCode = request.getParameter("warehouseCode");
String quantity = request.getParameter("quantity");
String unit = request.getParameter("unit");
String storageLocation = request.getParameter("storageLocation");
Material material = new Material();
material.setMaterialCode(materialCode);
material.setMaterialName(materialName);
material.setSpecification(specification);
material.setMaterialType(materialType);
material.setSupplier(supplier);
material.setBrand(brand);
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// Get category ID by category code
// Assuming there's a method to get category by code, otherwise implement it
// For example:
// Category category = userMapper.getCategoryByCode(categoryCode);
// material.setCategoryId(category.getCategoryId());
// Get warehouse ID by warehouse code
Warehouse warehouse = userMapper.getWarehouseByCode(warehouseCode);
material.setWarehouseId(warehouse.getWarehouseId());
material.setQuantity(Double.parseDouble(quantity));
material.setUnit(unit);
material.setStorageLocation(storageLocation);
userMapper.addMaterial(material);
sqlSession.commit();
response.sendRedirect("admin.html");
}
}
}
点击查看代码
package exam.web;
import exam.mapper.UserMapper;
import exam.pojo.Warehouse;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AddWarehouseServlet extends HttpServlet {
private static SqlSessionFactory sqlSessionFactory = LoginServlet.sqlSessionFactory;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String warehouseCode = request.getParameter("warehouseCode");
String warehouseName = request.getParameter("warehouseName");
String location = request.getParameter("location");
Warehouse warehouse = new Warehouse(warehouseCode, warehouseName, location);
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.addWarehouse(warehouse);
sqlSession.commit();
response.sendRedirect("admin.html");
}
}
}
点击查看代码
package exam.web;
import exam.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DeleteMaterialServlet extends HttpServlet {
private static SqlSessionFactory sqlSessionFactory = LoginServlet.sqlSessionFactory;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String materialCode = request.getParameter("materialCode");
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.deleteMaterial(materialCode);
sqlSession.commit();
response.sendRedirect("admin.html");
}
}
}
点击查看代码
package exam.web;
import exam.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DeleteWarehouseServlet extends HttpServlet {
private static SqlSessionFactory sqlSessionFactory = LoginServlet.sqlSessionFactory;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String warehouseCode = request.getParameter("warehouseCode");
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.deleteWarehouse(warehouseCode);
sqlSession.commit();
response.sendRedirect("admin.html");
}
}
}
点击查看代码
package exam.web;
import exam.mapper.UserMapper;
import exam.pojo.Material;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class InboundServlet extends HttpServlet {
private static SqlSessionFactory sqlSessionFactory = LoginServlet.sqlSessionFactory;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String materialCode = request.getParameter("materialCode");
Double quantity = Double.parseDouble(request.getParameter("quantity"));
String warehouseCode = request.getParameter("warehouseCode");
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Material material = userMapper.getMaterialByCode(materialCode);
if (material != null) {
// Update quantity
material.setQuantity(material.getQuantity() + quantity);
userMapper.updateMaterial(material);
// Add inventory record
userMapper.addInventoryRecord(materialCode, "IN", quantity, warehouseCode);
sqlSession.commit();
}
response.sendRedirect("staff.html");
}
}
}
点击查看代码
package exam.web;
import exam.mapper.UserMapper;
import exam.pojo.User;
import exam.pojo.Warehouse;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.Reader;
public class LoginServlet extends HttpServlet {
static SqlSessionFactory sqlSessionFactory;
static {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/login.html").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession();
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserByUsername(username);
if (user != null && user.getPassword().equals(password)) {
session.setAttribute("role", user.getRole());
if ("admin".equals(user.getRole())) {
response.sendRedirect("admin.html");
} else if ("staff".equals(user.getRole())) {
response.sendRedirect("staff.html");
}
} else {
request.setAttribute("error", "Invalid username or password");
request.getRequestDispatcher("/WEB-INF/login.html").forward(request, response);
}
}
}
}
点击查看代码
package exam.web;
import exam.mapper.UserMapper;
import exam.pojo.Material;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class OutboundServlet extends HttpServlet {
private static SqlSessionFactory sqlSessionFactory = LoginServlet.sqlSessionFactory;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String materialCode = request.getParameter("materialCode");
Double quantity = Double.parseDouble(request.getParameter("quantity"));
String warehouseCode = request.getParameter("warehouseCode");
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Material material = userMapper.getMaterialByCode(materialCode);
if (material != null) {
if (material.getQuantity() >= quantity) {
// Update quantity
material.setQuantity(material.getQuantity() - quantity);
userMapper.updateMaterial(material);
// Add inventory record
userMapper.addInventoryRecord(materialCode, "OUT", quantity, warehouseCode);
sqlSession.commit();
} else {
// Handle insufficient stock
}
}
response.sendRedirect("staff.html");
}
}
}
点击查看代码
package exam.web;
import exam.mapper.UserMapper;
import exam.pojo.Material;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
public class QueryInventoryServlet extends HttpServlet {
private static SqlSessionFactory sqlSessionFactory = LoginServlet.sqlSessionFactory;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String materialCode = request.getParameter("materialCode");
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Material material = userMapper.getMaterialByCode(materialCode);
if (material != null) {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Inventory</title></head><body>");
out.println("<h2>Inventory for Material: " + material.getMaterialCode() + "</h2>");
out.println("<p>Quantity: " + material.getQuantity() + " " + material.getUnit() + "</p>");
out.println("</body></html>");
}
}
}
}
点击查看代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="exam.mapper.UserMapper">
<select id="getAllWarehouses" resultType="exam.pojo.Warehouse">
SELECT * FROM warehouse
</select>
<insert id="addWarehouse" parameterType="exam.pojo.Warehouse">
INSERT INTO warehouse (warehouse_code, warehouse_name, location) VALUES (#{warehouseCode}, #{warehouseName}, #{location})
</insert>
<delete id="deleteWarehouse" parameterType="String">
DELETE FROM warehouse WHERE warehouse_code = #{warehouseCode}
</delete>
<select id="getWarehouseByCode" parameterType="String" resultType="exam.pojo.Warehouse">
SELECT * FROM warehouse WHERE warehouse_code = #{warehouseCode}
</select>
<select id="getAllMaterials" resultType="exam.pojo.Material">
SELECT * FROM material
</select>
<insert id="addMaterial" parameterType="exam.pojo.Material">
INSERT INTO material (material_code, material_name, specification, material_type, supplier, brand, category_id, warehouse_id, quantity, unit, storage_location)
VALUES (#{materialCode}, #{materialName}, #{specification}, #{materialType}, #{supplier}, #{brand}, #{categoryId}, #{warehouseId}, #{quantity}, #{unit}, #{storageLocation})
</insert>
<delete id="deleteMaterial" parameterType="String">
DELETE FROM material WHERE material_code = #{materialCode}
</delete>
<select id="getMaterialByCode" parameterType="String" resultType="exam.pojo.Material">
SELECT * FROM material WHERE material_code = #{materialCode}
</select>
<select id="checkMaterialCodeExists" parameterType="String" resultType="boolean">
SELECT COUNT(*) > 0 FROM material WHERE material_code = #{materialCode}
</select>
<select id="getUserByUsername" parameterType="String" resultType="exam.pojo.User">
SELECT * FROM user WHERE username = #{username}
</select>
<insert id="addInventoryRecord" parameterType="map">
INSERT INTO inventory_record (material_code, operation, quantity, warehouse_id)
SELECT #{materialCode}, #{operation}, #{quantity}, (SELECT warehouse_id FROM material WHERE material_code = #{materialCode})
FROM dual
WHERE EXISTS (SELECT 1 FROM material m INNER JOIN warehouse w ON m.warehouse_id = w.warehouse_id WHERE m.material_code = #{materialCode})
</insert>
<!-- 添加 updateMaterial 方法的映射 -->
<update id="updateMaterial" parameterType="exam.pojo.Material">
UPDATE material
SET material_code = #{materialCode},
material_name = #{materialName},
specification = #{specification},
material_type = #{materialType},
supplier = #{supplier},
brand = #{brand},
category_id = #{categoryId},
warehouse_id = #{warehouseId},
quantity = #{quantity},
unit = #{unit},
storage_location = #{storageLocation}
WHERE material_id = #{materialId}
</update>
</mapper>
点击查看代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/warehouse_management?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="(我的密码)"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="exam/mapper/UserMapper.xml"/>
</mappers>
</configuration>
点击查看代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 配置 LoginServlet -->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>exam.web.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<!-- 配置 AddWarehouseServlet -->
<servlet>
<servlet-name>AddWarehouseServlet</servlet-name>
<servlet-class>exam.web.AddWarehouseServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddWarehouseServlet</servlet-name>
<url-pattern>/addWarehouse</url-pattern>
</servlet-mapping>
<!-- 配置 DeleteWarehouseServlet -->
<servlet>
<servlet-name>DeleteWarehouseServlet</servlet-name>
<servlet-class>exam.web.DeleteWarehouseServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DeleteWarehouseServlet</servlet-name>
<url-pattern>/deleteWarehouse</url-pattern>
</servlet-mapping>
<!-- 配置 AddMaterialServlet -->
<servlet>
<servlet-name>AddMaterialServlet</servlet-name>
<servlet-class>exam.web.AddMaterialServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddMaterialServlet</servlet-name>
<url-pattern>/addMaterial</url-pattern>
</servlet-mapping>
<!-- 配置 DeleteMaterialServlet -->
<servlet>
<servlet-name>DeleteMaterialServlet</servlet-name>
<servlet-class>exam.web.DeleteMaterialServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DeleteMaterialServlet</servlet-name>
<url-pattern>/deleteMaterial</url-pattern>
</servlet-mapping>
<!-- 配置 InboundServlet -->
<servlet>
<servlet-name>InboundServlet</servlet-name>
<servlet-class>exam.web.InboundServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>InboundServlet</servlet-name>
<url-pattern>/inbound</url-pattern>
</servlet-mapping>
<!-- 配置 OutboundServlet -->
<servlet>
<servlet-name>OutboundServlet</servlet-name>
<servlet-class>exam.web.OutboundServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>OutboundServlet</servlet-name>
<url-pattern>/outbound</url-pattern>
</servlet-mapping>
<!-- 配置 QueryInventoryServlet -->
<servlet>
<servlet-name>QueryInventoryServlet</servlet-name>
<servlet-class>exam.web.QueryInventoryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>QueryInventoryServlet</servlet-name>
<url-pattern>/queryInventory</url-pattern>
</servlet-mapping>
</web-app>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加物资</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 50px;
}
h2 {
text-align: center;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"],
input[type="number"],
select {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h2>添加物资</h2>
<form action="addMaterial" method="post">
<div class="form-group">
<label for="materialCode">物资编码:</label>
<input type="text" id="materialCode" name="materialCode" required>
</div>
<div class="form-group">
<label for="materialName">物资名称:</label>
<input type="text" id="materialName" name="materialName" required>
</div>
<div class="form-group">
<label for="specification">规格:</label>
<input type="text" id="specification" name="specification">
</div>
<div class="form-group">
<label for="materialType">类型:</label>
<input type="text" id="materialType" name="materialType">
</div>
<div class="form-group">
<label for="supplier">供应商:</label>
<input type="text" id="supplier" name="supplier">
</div>
<div class="form-group">
<label for="brand">品牌:</label>
<input type="text" id="brand" name="brand">
</div>
<div class="form-group">
<label for="categoryCode">物资类别编码:</label>
<input type="text" id="categoryCode" name="categoryCode" required>
</div>
<div class="form-group">
<label for="warehouseCode">仓库编码:</label>
<input type="text" id="warehouseCode" name="warehouseCode" required>
</div>
<div class="form-group">
<label for="quantity">数量:</label>
<input type="number" id="quantity" name="quantity" required>
</div>
<div class="form-group">
<label for="unit">单位:</label>
<input type="text" id="unit" name="unit" required>
</div>
<div class="form-group">
<label for="storageLocation">存储位置:</label>
<input type="text" id="storageLocation" name="storageLocation" required>
</div>
<button type="submit">添加物资</button>
</form>
</div>
</body>
</html>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加仓库</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 50px;
}
h2 {
text-align: center;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"] {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h2>添加仓库</h2>
<form action="addWarehouse" method="post">
<div class="form-group">
<label for="warehouseCode">仓库编码:</label>
<input type="text" id="warehouseCode" name="warehouseCode" required>
</div>
<div class="form-group">
<label for="warehouseName">仓库名称:</label>
<input type="text" id="warehouseName" name="warehouseName" required>
</div>
<div class="form-group">
<label for="location">仓库位置:</label>
<input type="text" id="location" name="location" required>
</div>
<button type="submit">添加仓库</button>
</form>
</div>
</body>
</html>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理员面板</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 50px;
}
h1 {
text-align: center;
}
.menu {
display: flex;
justify-content: center;
gap: 20px;
margin-top: 30px;
}
.menu a {
padding: 10px 20px;
background-color: #007bff;
color: white;
text-decoration: none;
border-radius: 4px;
}
.menu a:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h1>管理员面板</h1>
<div class="menu">
<a href="addWarehouse.html">添加仓库</a>
<a href="deleteWarehouse.html">删除仓库</a>
<a href="addMaterial.html">添加物资</a>
<a href="deleteMaterial.html">删除物资</a>
</div>
</div>
</body>
</html>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>删除物资</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 50px;
}
h2 {
text-align: center;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"] {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h2>删除物资</h2>
<form action="deleteMaterial" method="post">
<div class="form-group">
<label for="materialCode">物资编码:</label>
<input type="text" id="materialCode" name="materialCode" required>
</div>
<button type="submit">删除物资</button>
</form>
</div>
</body>
</html>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>删除仓库</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 50px;
}
h2 {
text-align: center;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"] {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h2>删除仓库</h2>
<form action="deleteWarehouse" method="post">
<div class="form-group">
<label for="warehouseCode">仓库编码:</label>
<input type="text" id="warehouseCode" name="warehouseCode" required>
</div>
<button type="submit">删除仓库</button>
</form>
</div>
</body>
</html>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>入库操作</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 50px;
}
h2 {
text-align: center;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"],
input[type="number"] {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h2>入库操作</h2>
<form action="inbound" method="post">
<div class="form-group">
<label for="materialCode">物资编码:</label>
<input type="text" id="materialCode" name="materialCode" required>
</div>
<div class="form-group">
<label for="quantity">入库数量:</label>
<input type="number" id="quantity" name="quantity" required>
</div>
<div class="form-group">
<label for="warehouseCode">仓库编码:</label>
<input type="text" id="warehouseCode" name="warehouseCode" required>
</div>
<button type="submit">入库</button>
</form>
</div>
</body>
</html>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 300px;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 100px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"],
input[type="password"] {
width: 95%;
padding: 8px;
margin-bottom: 15px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
width: 100%;
padding: 10px;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
.error {
color: red;
text-align: center;
margin-bottom: 15px;
}
</style>
</head>
<body>
<div class="container">
<h2>仓储管理系统</h2>
<form action="login" method="post">
<div>
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
</div>
<div>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
</div>
<button type="submit">登录</button>
</form>
</div>
</body>
</html>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>出库操作</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 50px;
}
h2 {
text-align: center;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"],
input[type="number"] {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h2>出库操作</h2>
<form action="outbound" method="post">
<div class="form-group">
<label for="materialCode">物资编码:</label>
<input type="text" id="materialCode" name="materialCode" required>
</div>
<div class="form-group">
<label for="quantity">出库数量:</label>
<input type="number" id="quantity" name="quantity" required>
</div>
<div class="form-group">
<label for="warehouseCode">仓库编码:</label>
<input type="text" id="warehouseCode" name="warehouseCode" required>
</div>
<button type="submit">出库</button>
</form>
</div>
</body>
</html>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>库存查询</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 50px;
}
h2 {
text-align: center;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"] {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<div class="container">
<h2>库存查询</h2>
<form action="queryInventory" method="get">
<div class="form-group">
<label for="materialCode">物资编码:</label>
<input type="text" id="materialCode" name="materialCode" required>
</div>
<button type="submit">查询</button>
</form>
<table>
<thead>
<tr>
<th>物资编码</th>
<th>物资名称</th>
<th>类别编码</th>
<th>库存数量</th>
<th>单位</th>
<th>存储位置</th>
</tr>
</thead>
<tbody>
<!-- 数据将在这里动态显示 -->
</tbody>
</table>
</div>
</body>
</html>
点击查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>工作人员面板</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f9;
}
.container {
width: 80%;
margin: 0 auto;
padding: 20px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
margin-top: 50px;
}
h1 {
text-align: center;
}
.menu {
display: flex;
justify-content: center;
gap: 20px;
margin-top: 30px;
}
.menu a {
padding: 10px 20px;
background-color: #007bff;
color: white;
text-decoration: none;
border-radius: 4px;
}
.menu a:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="container">
<h1>工作人员面板</h1>
<div class="menu">
<a href="inbound.html">入库操作</a>
<a href="outbound.html">出库操作</a>
<a href="queryInventory.html">库存查询</a>
</div>
</div>
</body>
</html>
点击查看代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>exam-demo</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>exam-demo Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
<build>
<finalName>exam-demo</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
</project>
浙公网安备 33010602011771号