关于deep seek帮我写代码这件事

news/2025/3/6 18:28:28/文章来源:https://www.cnblogs.com/-Xuxu/p/18756086

上一个周,我们尊敬的王建明系主任让我们用deep seek编写代码,可我认为这是一件不是很容易的事情一下便是我的做法以及是如何询问滴:
首先我给deep seek提了如下要求:

  1. 需求分析与规划
    • 理解需求:首先,仔细阅读并理解需求文档,明确系统需要支持的功能,包括仓库管理、物资台账管理、入库出库操作、自动生成单据编码、库存查询等。
    • 功能划分:将系统功能划分为管理员功能和仓库管理人员功能。管理员负责仓库和物资类别的管理,仓库管理人员负责入库、出库和查询操作。
    • 用户角色:确定系统有两类用户:管理员和仓库管理人员,他们登录后看到的功能菜单不同。

  1. 数据库设计
    • 设计表结构:
    o 仓库表:存储仓库的基本信息,如仓库编号(唯一)、仓库名称、地址等。
    o 物资台账明细表:记录物资的入库和出库操作,包含台账编号(自动生成)、物资编码、物资名称、规格、材质、供应商、品牌、物资分类、操作类别(入库/出库)、数量、计量单位、存放地点(仓库号)等。
    o 物资类别表:存储物资类别信息,确保不同的物资名称、规格、材质的物资不能设立相同的物资编码。
    • 约束与验证:
    o 确保物资编码唯一,且物资名称、规格、材质组合不能重复。
    o 在删除或修改仓库、物资类别时,验证是否有相关物资存在,若有则不允许操作。

  1. 系统架构设计
    • 技术选型:选择合适的技术栈,如前端使用HTML/CSS/JavaScript,后端使用Java/Python/PHP等,数据库使用MySQL/PostgreSQL等。
    • 模块划分:
    o 用户管理模块:处理用户登录、权限控制。
    o 仓库管理模块:处理仓库的新增、删除、修改。
    o 物资管理模块:处理物资类别的新增、删除、修改。
    o 入库出库模块:处理物资的入库和出库操作。
    o 查询模块:提供库存查询功能,支持按物资编码、物资分类等查询。

  1. 前端开发
    • 页面设计:
    o 使用统一的模板设计界面,确保所有页面的风格一致。
    o 设计管理员和仓库管理人员的登录界面,登录后根据角色显示不同的菜单项。
    • 功能页面:
    o 管理员页面:提供仓库和物资类别的新增、删除、修改功能。
    o 仓库管理人员页面:提供入库、出库操作和统计查询功能。
    • 表单验证:
    o 在新增、删除、修改操作时,前端进行初步验证,如仓库编号唯一、物资编码唯一等。

  1. 后端开发
    • 用户登录与权限控制:
    o 实现用户登录功能,根据用户角色返回不同的菜单项。
    • 仓库管理功能:
    o 实现仓库的新增、删除、修改功能,确保仓库编号唯一,且在删除或修改时验证仓库中是否有物资。
    • 物资管理功能:
    o 实现物资类别的新增、删除、修改功能,确保物资编码唯一,且在删除或修改时验证物资台账明细表中是否存在该类物资。
    • 入库出库功能:
    o 实现物资的入库和出库操作,生成唯一的台账编号(格式为年月日+流水号),并更新库存信息。
    o 出库时,验证库存余额,若出库数量大于库存余额,提示用户无法出库。
    • 查询功能:
    o 实现按物资编码查询库存信息的功能,显示物资类别编码、库存余额、计量单位、存放仓库等基本信息。
    o 支持查看详细的入库单和出库单信息。

  1. 数据库开发
    • 创建表结构:根据设计好的表结构,在数据库中创建仓库表、物资台账明细表、物资类别表。
    • 编写SQL语句:
    o 实现新增、删除、修改操作的SQL语句。
    o 实现查询操作的SQL语句,如按物资编码查询库存信息、按物资分类汇总库存信息等。
    • 数据验证:
    o 在数据库层面设置唯一约束,确保仓库编号、物资编码等字段的唯一性。
    o 在删除或修改操作时,通过SQL查询验证是否有相关物资存在。

  1. 测试与调试
    • 功能测试:
    o 测试所有功能模块,确保新增、删除、修改、入库、出库、查询等功能正常运行。
    • 边界测试:
    o 测试仓库和物资类别的删除、修改时的边界条件,确保系统在异常情况下能正确提示用户。
    • 性能测试:
    o 测试系统在高并发情况下的性能表现,确保系统稳定运行。

  1. 部署与上线
    • 系统部署:将系统部署到服务器上,确保用户可以正常访问和使用。
    • 用户培训:对管理员和仓库管理人员进行培训,确保他们能够熟练使用系统。
    • 上线运行:系统正式上线运行,开始处理实际的仓库管理业务。

  1. 维护与优化
    • 日常维护:定期检查系统运行情况,修复bug,优化性能。
    • 功能扩展:根据用户反馈和业务需求,逐步扩展系统功能,如增加报表生成、多语言支持等。
    然后deep seek便帮我生成了我想要的代码,我乍一看诶跟我的功能大差不差代码生成如下:
  2. 项目结构
    复制
    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

  1. 实体类(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

}


  1. 仓库管理功能
    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);
}

}


  1. 物资管理功能
    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);
}

}


  1. 入库出库功能
    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);
}

}


  1. 主程序
    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);
}
}


  1. 配置文件
    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ㄒ)/~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894740.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

座椅控制器SCM

智能座椅控制器SCM是经纬恒润设计研发的车身舒适性控制模块,实现电动座椅14向位姿调节及通风、加热、腰托、按摩等控制功能。其基于人机交互和整车中央控制,匹配多种应用场景,实现迎宾、一键零重力、二排方便上下车等座舱内前后排座椅联动的姿态和空间自动调整。 智能…

React18 函数组件的底层渲染机制与形参props的使用细节

前言: Vue中的组件开发: 1.全局组件和局部组件 2.函数组件和类组件(vue3不具备functional函数组件) React中的组件化开发: 没有明确全局和局部的概念,可以理解为都是局部组件,不过可以把组件注册到React上,这样每个组件只要导入React中即可使用 1.函数组件 2.类组件 3.…

c# 托管堆和垃圾回收的clr的控制

前言 简单讲述一下垃圾回收,我们能做的一些控制。 正文 强制回收 class Program {static void Main(){var str = new StringBuilder();var x = "";for (int i = 0; i < 500; i++){x += "xxxxxxxxsadasdasdsadsaewqeqczxcxzgsfaswqeqwrqwewqeasdasqweqwrqsda…

PHP调用redis消息队列案例

一、代码实例://需要成功引入并使用redis$redis = RedisManager::$redis;// 生产者:将订单加入队列(右端插入)function producer($orderId,$redis) { $redis->rPush(task_queue, $orderId); print_r("<br/>追加入列<br/>"); print_r($or…

redis消息队列案例

一、代码实例://需要成功引入并使用redis$redis = RedisManager::$redis;// 生产者:将订单加入队列(右端插入)function producer($orderId,$redis) { $redis->rPush(task_queue, $orderId); print_r("<br/>追加入列<br/>"); print_r($or…

conda创建虚拟环境并安装tensorflow-gpu

conda创建虚拟环境并安装tensorflow-gpu 命令行查看自己可支持的cuda版本 nvidia-smi如图,CUDA Version后面的就是电脑显卡可支持的cuda版本,所以我们要装的cuda版本需要<=12.7(可向下兼容)。不需要在意其提供的版本号,该版本是最高可支持的cuda 1.安装下载cuda,cudnn…

Echarts如何分别设置PC端图表标题显示和移动端显示?

Echarts绘制图表的时候,PC端界面较大,可以很好的展示,但是移动端界面较窄,需要调整,所以分开设置就要用到 media方法: 实例: 移动端: 源码设置: 注意:media需要设置在series同级; 源码:media: [{query: {maxWidth: 767 // 假设移动设备的最大宽度是767px},option: …

【Webshell不出网】reGeorg和Pystinger的使用

reGeorg+Proxifier: 在实战情况下有时会遇到外网Getshell准备内网渗透的时候发现目标机器不出网,所以就会用映射,代理..等等方式进行上线。 reGeorg项目地址为: https://gitcode.net/mirrors/sensepost/reGeorg?utm_source=csdn_github_acceleratorProxifier地址: https:…

【测试】钩子测试

图片钩子测试 仅收集了访问数据,未使用任何js信息,未窃取任何cookie 只用于匿名数据收集,以及,好玩。

什么!GIS地形与数字孪生结合,竟然能做出如此有趣的效果!

山海鲸可视化支持添加ArcGIS和Cesium地形,并且添加后的GIS地形能够完美与整个数字孪生系统进行融合。同时,我们也可以对GIS地形进行编辑,通过鼠标点击圈选编辑区域,可以将区域内的地形压平、抬升或下沉,结合数字孪生能够实现许多有趣的效果。下面我们就来看看,如何在山海…