汇总调教ai的过程

在建民老师的课上,老师让我们调教一下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)
);
mapper/UserMapper
点击查看代码
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);
}
pojo/Category
点击查看代码
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 + '\'' +
                '}';
    }
}
pojo/InventoryRecord
点击查看代码
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 +
                '}';
    }
}
pojo/Material
点击查看代码
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 + '\'' +
                '}';
    }
}
pojo/User
点击查看代码
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;
    }
}
pojo/Warehouse
点击查看代码
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 + '\'' +
                '}';
    }
}
web/AddMaterialServlet
点击查看代码
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");
        }
    }
}
web/AddWarehouseServlet
点击查看代码
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");
        }
    }
}
web/DeleteMaterialServlet
点击查看代码
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");
        }
    }
}
web/DeleteWarehouseServlet
点击查看代码
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");
        }
    }
}
web/InboundServlet
点击查看代码
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");
        }
    }
}
web/LoginServlet
点击查看代码
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);
            }
        }
    }
}
web/OutboundServlet
点击查看代码
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");
        }
    }
}
web/QueryInventoryServlet
点击查看代码
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>");
            }
        }
    }
}
resources/exam/mapper/UserMapper.xml
点击查看代码
<?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>
resource/mybatis-config.xml
点击查看代码
<?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&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="(我的密码)"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="exam/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
webapp/WEB-INF/web.xml
点击查看代码
<?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>
webapp/addMaterial.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"],
        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>
webapp/addWarehouse.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>
webapp/admin.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>
webapp/deleteMaterial.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>
webapp/deleteWarehouse.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>
webapp/inbound.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>
webapp/login.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>
webapp/outbound.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>
webapp/queryInventory.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>
webapp/staff.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>
pom.xml
点击查看代码
<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>

以上就是这次调教ai的所有代码
posted on 2025-03-05 17:01  睡觉时候不困  阅读(114)  评论(0)    收藏  举报