上一个周,我们尊敬的王建明系主任让我们用deep seek编写代码,可我认为这是一件不是很容易的事情一下便是我的做法以及是如何询问滴:
首先我给deep seek提了如下要求:
- 需求分析与规划
• 理解需求:首先,仔细阅读并理解需求文档,明确系统需要支持的功能,包括仓库管理、物资台账管理、入库出库操作、自动生成单据编码、库存查询等。
• 功能划分:将系统功能划分为管理员功能和仓库管理人员功能。管理员负责仓库和物资类别的管理,仓库管理人员负责入库、出库和查询操作。
• 用户角色:确定系统有两类用户:管理员和仓库管理人员,他们登录后看到的功能菜单不同。
- 数据库设计
• 设计表结构:
o 仓库表:存储仓库的基本信息,如仓库编号(唯一)、仓库名称、地址等。
o 物资台账明细表:记录物资的入库和出库操作,包含台账编号(自动生成)、物资编码、物资名称、规格、材质、供应商、品牌、物资分类、操作类别(入库/出库)、数量、计量单位、存放地点(仓库号)等。
o 物资类别表:存储物资类别信息,确保不同的物资名称、规格、材质的物资不能设立相同的物资编码。
• 约束与验证:
o 确保物资编码唯一,且物资名称、规格、材质组合不能重复。
o 在删除或修改仓库、物资类别时,验证是否有相关物资存在,若有则不允许操作。
- 系统架构设计
• 技术选型:选择合适的技术栈,如前端使用HTML/CSS/JavaScript,后端使用Java/Python/PHP等,数据库使用MySQL/PostgreSQL等。
• 模块划分:
o 用户管理模块:处理用户登录、权限控制。
o 仓库管理模块:处理仓库的新增、删除、修改。
o 物资管理模块:处理物资类别的新增、删除、修改。
o 入库出库模块:处理物资的入库和出库操作。
o 查询模块:提供库存查询功能,支持按物资编码、物资分类等查询。
- 前端开发
• 页面设计:
o 使用统一的模板设计界面,确保所有页面的风格一致。
o 设计管理员和仓库管理人员的登录界面,登录后根据角色显示不同的菜单项。
• 功能页面:
o 管理员页面:提供仓库和物资类别的新增、删除、修改功能。
o 仓库管理人员页面:提供入库、出库操作和统计查询功能。
• 表单验证:
o 在新增、删除、修改操作时,前端进行初步验证,如仓库编号唯一、物资编码唯一等。
- 后端开发
• 用户登录与权限控制:
o 实现用户登录功能,根据用户角色返回不同的菜单项。
• 仓库管理功能:
o 实现仓库的新增、删除、修改功能,确保仓库编号唯一,且在删除或修改时验证仓库中是否有物资。
• 物资管理功能:
o 实现物资类别的新增、删除、修改功能,确保物资编码唯一,且在删除或修改时验证物资台账明细表中是否存在该类物资。
• 入库出库功能:
o 实现物资的入库和出库操作,生成唯一的台账编号(格式为年月日+流水号),并更新库存信息。
o 出库时,验证库存余额,若出库数量大于库存余额,提示用户无法出库。
• 查询功能:
o 实现按物资编码查询库存信息的功能,显示物资类别编码、库存余额、计量单位、存放仓库等基本信息。
o 支持查看详细的入库单和出库单信息。
- 数据库开发
• 创建表结构:根据设计好的表结构,在数据库中创建仓库表、物资台账明细表、物资类别表。
• 编写SQL语句:
o 实现新增、删除、修改操作的SQL语句。
o 实现查询操作的SQL语句,如按物资编码查询库存信息、按物资分类汇总库存信息等。
• 数据验证:
o 在数据库层面设置唯一约束,确保仓库编号、物资编码等字段的唯一性。
o 在删除或修改操作时,通过SQL查询验证是否有相关物资存在。
- 测试与调试
• 功能测试:
o 测试所有功能模块,确保新增、删除、修改、入库、出库、查询等功能正常运行。
• 边界测试:
o 测试仓库和物资类别的删除、修改时的边界条件,确保系统在异常情况下能正确提示用户。
• 性能测试:
o 测试系统在高并发情况下的性能表现,确保系统稳定运行。
- 部署与上线
• 系统部署:将系统部署到服务器上,确保用户可以正常访问和使用。
• 用户培训:对管理员和仓库管理人员进行培训,确保他们能够熟练使用系统。
• 上线运行:系统正式上线运行,开始处理实际的仓库管理业务。
- 维护与优化
• 日常维护:定期检查系统运行情况,修复bug,优化性能。
• 功能扩展:根据用户反馈和业务需求,逐步扩展系统功能,如增加报表生成、多语言支持等。
然后deep seek便帮我生成了我想要的代码,我乍一看诶跟我的功能大差不差代码生成如下: - 项目结构
复制
src/main/java/com/example/warehouse/
├── controller/
│ ├── WarehouseController.java
│ ├── MaterialController.java
│ └── TransactionController.java
├── model/
│ ├── Warehouse.java
│ ├── Material.java
│ └── Transaction.java
├── repository/
│ ├── WarehouseRepository.java
│ ├── MaterialRepository.java
│ └── TransactionRepository.java
├── service/
│ ├── WarehouseService.java
│ ├── MaterialService.java
│ └── TransactionService.java
└── WarehouseApplication.java
- 实体类(Model)
Warehouse.java
java
复制
package com.example.warehouse.model;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "warehouse")
public class Warehouse {
@Id
private String warehouseId; // 仓库编号
private String name; // 仓库名称
private String address; // 仓库地址
// Getters and Setters
}
Material.java
java
复制
package com.example.warehouse.model;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "material")
public class Material {
@Id
private String materialId; // 物资编码
private String name; // 物资名称
private String specification; // 规格
private String category; // 物资分类
// Getters and Setters
}
Transaction.java
java
复制
package com.example.warehouse.model;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.time.LocalDateTime;
@Entity
@Table(name = "transaction")
public class Transaction {
@Id
private String transactionId; // 台账编号
private String materialId; // 物资编码
private String warehouseId; // 仓库编号
private int quantity; // 数量
private String operationType; // 操作类型(入库/出库)
private LocalDateTime timestamp; // 操作时间
// Getters and Setters
}
- 仓库管理功能
WarehouseRepository.java
java
复制
package com.example.warehouse.repository;
import com.example.warehouse.model.Warehouse;
import org.springframework.data.jpa.repository.JpaRepository;
public interface WarehouseRepository extends JpaRepository<Warehouse, String> {
}
WarehouseService.java
java
复制
package com.example.warehouse.service;
import com.example.warehouse.model.Warehouse;
import com.example.warehouse.repository.WarehouseRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class WarehouseService {
@Autowired
private WarehouseRepository warehouseRepository;
public List<Warehouse> getAllWarehouses() {return warehouseRepository.findAll();
}public Warehouse addWarehouse(Warehouse warehouse) {return warehouseRepository.save(warehouse);
}public void deleteWarehouse(String warehouseId) {warehouseRepository.deleteById(warehouseId);
}
}
WarehouseController.java
java
复制
package com.example.warehouse.controller;
import com.example.warehouse.model.Warehouse;
import com.example.warehouse.service.WarehouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/warehouses")
public class WarehouseController {
@Autowired
private WarehouseService warehouseService;
@GetMapping
public List<Warehouse> getAllWarehouses() {return warehouseService.getAllWarehouses();
}@PostMapping
public Warehouse addWarehouse(@RequestBody Warehouse warehouse) {return warehouseService.addWarehouse(warehouse);
}@DeleteMapping("/{warehouseId}")
public void deleteWarehouse(@PathVariable String warehouseId) {warehouseService.deleteWarehouse(warehouseId);
}
}
- 物资管理功能
MaterialRepository.java
java
复制
package com.example.warehouse.repository;
import com.example.warehouse.model.Material;
import org.springframework.data.jpa.repository.JpaRepository;
public interface MaterialRepository extends JpaRepository<Material, String> {
}
MaterialService.java
java
复制
package com.example.warehouse.service;
import com.example.warehouse.model.Material;
import com.example.warehouse.repository.MaterialRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class MaterialService {
@Autowired
private MaterialRepository materialRepository;
public List<Material> getAllMaterials() {return materialRepository.findAll();
}public Material addMaterial(Material material) {return materialRepository.save(material);
}public void deleteMaterial(String materialId) {materialRepository.deleteById(materialId);
}
}
MaterialController.java
java
复制
package com.example.warehouse.controller;
import com.example.warehouse.model.Material;
import com.example.warehouse.service.MaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/materials")
public class MaterialController {
@Autowired
private MaterialService materialService;
@GetMapping
public List<Material> getAllMaterials() {return materialService.getAllMaterials();
}@PostMapping
public Material addMaterial(@RequestBody Material material) {return materialService.addMaterial(material);
}@DeleteMapping("/{materialId}")
public void deleteMaterial(@PathVariable String materialId) {materialService.deleteMaterial(materialId);
}
}
- 入库出库功能
TransactionRepository.java
java
复制
package com.example.warehouse.repository;
import com.example.warehouse.model.Transaction;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TransactionRepository extends JpaRepository<Transaction, String> {
}
TransactionService.java
java
复制
package com.example.warehouse.service;
import com.example.warehouse.model.Transaction;
import com.example.warehouse.repository.TransactionRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.UUID;
@Service
public class TransactionService {
@Autowired
private TransactionRepository transactionRepository;
public Transaction addTransaction(Transaction transaction) {transaction.setTransactionId(UUID.randomUUID().toString()); // 生成唯一台账编号transaction.setTimestamp(LocalDateTime.now()); // 设置操作时间return transactionRepository.save(transaction);
}
}
TransactionController.java
java
复制
package com.example.warehouse.controller;
import com.example.warehouse.model.Transaction;
import com.example.warehouse.service.TransactionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/transactions")
public class TransactionController {
@Autowired
private TransactionService transactionService;
@PostMapping
public Transaction addTransaction(@RequestBody Transaction transaction) {return transactionService.addTransaction(transaction);
}
}
- 主程序
WarehouseApplication.java
java
复制
package com.example.warehouse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class WarehouseApplication {
public static void main(String[] args) {
SpringApplication.run(WarehouseApplication.class, args);
}
}
- 配置文件
application.properties
properties
复制
spring.datasource.url=jdbc:mysql://localhost:3306/warehouse_db
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update
于是乎我便跟着他的步骤一步一步进行期间遇到了很多困难,但是最终还是没有成功下一篇博客我将给出我遇到的第一个问题/(ㄒoㄒ)/~~