deepseek 对话编写 【使用python编写一个物料编码申请的erp系统】

 1.效果如下

实现了增删改查,数据保存

2.操作方法

使用 csdn一直推荐的 trace cn,通过选择deepseek进行对话操作

 把终端配置成git bash

从这边配置

 

3.配置好后就直接提问题就好

 

 主要就是点击运行和应用

这个就是想改一下编码方式,直接说,按他提示应用就好

其他的也是这样

4.命令行方式运行

运行起来就是这种效果

5.让他直接搞成网页

 

就是这么地运行应用

像这种的有问题的也是直接添加到对话,他也是会修改,直接应用就好。

搞完就是开篇的效果

6.代码及文件结构

这个就是搞了两个小时的最后的文件结构 

app.py

from flask import Flask, render_template, request, redirect, url_for
from models import Material
from utils import MaterialManager

app = Flask(__name__)
manager = MaterialManager()

@app.route('/')
def index():
    materials = manager.list_materials()
    return render_template('index.html', materials=materials)

@app.route('/apply', methods=['GET', 'POST'])
def apply_material():
    if request.method == 'POST':
        name = request.form['name']
        description = request.form['description']
        quantity = float(request.form['quantity'])
        unit = request.form['unit']
        applicant = request.form['applicant']
        image_url = request.form['image_url']
        reference_url = request.form['reference_url']
        
        material = Material(name, description, quantity, unit, applicant)
        material.image_url = image_url
        material.reference_url = reference_url
        manager.create_material(material)
        return redirect(url_for('index'))
    return render_template('apply.html')

@app.route('/approve/<material_id>', methods=['POST'])
def approve_material(material_id):
    material = manager.get_material(material_id)
    if material:
        action = request.form['action']
        if action == 'approve':
            material.approve()
        elif action == 'reject':
            material.reject()
    return redirect(url_for('index'))

@app.route('/update/<material_id>', methods=['GET', 'POST'])
def update_material(material_id):
    material = manager.get_material(material_id)
    if request.method == 'POST':
        material.name = request.form['name']
        material.description = request.form['description']
        material.quantity = float(request.form['quantity'])
        material.unit = request.form['unit']
        material.applicant = request.form['applicant']
        material.image_url = request.form['image_url']
        material.reference_url = request.form['reference_url']
        return redirect(url_for('index'))
    return render_template('update.html', material=material)

@app.route('/delete/<material_id>')
def delete_material(material_id):
    manager.delete_material(material_id)
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)

data.json的内容,这个是根据你实际情况生成的。不必拘泥具体数据。 

{"counter": 100005, "materials": {"100001": {"id": "100001", "name": "\u624b\u673a", "description": "\u5c0f\u7c73 14", "quantity": 2.0, "unit": "pcs", "applicant": "lee", "status": "rejected", "image_url": "", "reference_url": ""}, "100002": {"id": "100002", "name": "\u9f20\u6807", "description": "\u65b0\u79d1", "quantity": 2.0, "unit": "pcs", "applicant": "lee", "status": "pending", "image_url": "2344", "reference_url": "1234"}, "100003": {"id": "100003", "name": "\u7535\u8111", "description": "i7", "quantity": 2.0, "unit": "\u4e2a", "applicant": "cheni", "status": "pending", "image_url": "", "reference_url": ""}, "100004": {"id": "100004", "name": "\u952e\u76d8", "description": "\u800c\u4e14", "quantity": 2.0, "unit": "34", "applicant": "67", "status": "pending", "image_url": "", "reference_url": ""}}}

 main.py

from models import Material
from utils import MaterialManager

def main_menu():
    print("\n物料编码申请系统")
    print("1. 申请新物料")
    print("2. 查看物料列表")
    print("3. 审批物料")
    print("4. 变更物料信息")
    print("5. 删除物料")  # 新增选项
    print("6. 退出")

def delete_material(manager):
    material_id = input("请输入要删除的物料ID: ")
    if manager.delete_material(material_id):
        print("物料删除成功")
    else:
        print("物料删除失败,可能ID不存在")

def list_materials(manager):
    print("\n物料列表:")
    # 打印表头
    print(f"{'ID':<10} {'名称':<20} {'描述':<30} {'数量':<10} {'单位':<10} {'申请人':<15} {'状态':<10}")
    print("-" * 105)
    # 打印物料信息
    for material in manager.list_materials():
        print(f"{material.id:<10} {material.name:<20} {material.description:<30} "
              f"{material.quantity:<10} {material.unit:<10} {material.applicant:<15} {material.status:<10}")
        print("------")

def apply_material(manager):
    print("\n新物料申请")
    name = input("物料名称: ")
    description = input("物料描述: ")
    quantity = float(input("数量: "))
    unit = input("单位: ")
    applicant = input("申请人: ")
    
    material = Material(name, description, quantity, unit, applicant)
    material_id = manager.create_material(material)
    print(f"物料申请已提交,ID: {material_id}")

def approve_material(manager):
    material_id = input("请输入要审批的物料ID: ")
    material = manager.get_material(material_id)
    if material:
        print(f"物料信息: {material.name}")
        action = input("审批操作 (1. 通过 2. 拒绝): ")
        if action == "1":
            material.approve()
            print("物料已通过")
        elif action == "2":
            material.reject()
            print("物料已拒绝")
    else:
        print("未找到该物料")

def update_material(manager):
    material_id = input("请输入要变更的物料ID: ")
    material = manager.get_material(material_id)
    if material:
        print("\n当前物料信息:")
        print(f"1. 名称: {material.name}")
        print(f"2. 描述: {material.description}")
        print(f"3. 数量: {material.quantity}")
        print(f"4. 单位: {material.unit}")
        print(f"5. 申请人: {material.applicant}")
        
        choice = input("请选择要变更的项目 (1-5): ")
        if choice == "1":
            new_value = input("请输入新的物料名称: ")
        elif choice == "2":
            new_value = input("请输入新的物料描述: ")
        elif choice == "3":
            new_value = float(input("请输入新的数量: "))
        elif choice == "4":
            new_value = input("请输入新的单位: ")
        elif choice == "5":
            new_value = input("请输入新的申请人: ")
        else:
            print("无效选择")
            return
            
        field_map = {
            "1": "name",
            "2": "description",
            "3": "quantity",
            "4": "unit",
            "5": "applicant"
        }
        
        if manager.update_material(material_id, **{field_map[choice]: new_value}):
            print("物料信息更新成功")
        else:
            print("物料信息更新失败")
    else:
        print("未找到该物料")

def main():
    manager = MaterialManager()
    while True:
        main_menu()
        choice = input("请选择操作: ")
        
        if choice == "1":
            apply_material(manager)
        elif choice == "2":
            list_materials(manager)
        elif choice == "3":
            approve_material(manager)
        elif choice == "4":
            update_material(manager)
        elif choice == "5":  # 新增操作
            delete_material(manager)
        elif choice == "6":
            print("退出系统")
            break
        else:
            print("无效选择,请重试")

if __name__ == "__main__":
    main()

models.py

class Material:
    def __init__(self, name, description, quantity, unit, applicant):
        self.id = None
        self.name = name
        self.description = description
        self.quantity = quantity
        self.unit = unit
        self.applicant = applicant
        self.status = "pending"
        self.image_url = ""
        self.reference_url = ""
        
    def approve(self):
        from utils import MaterialManager  # 将导入移到方法内部
        self.status = "approved"
        MaterialManager().save_data()
        
    def reject(self):
        from utils import MaterialManager  # 将导入移到方法内部
        self.status = "rejected"
        MaterialManager().save_data()

utils.py

import uuid
import json
from models import Material  # 添加这行导入语句

class MaterialManager:
    def __init__(self):
        self.materials = {}
        self.counter = 100000
        self.load_data()  # 加载保存的数据
        
    def create_material(self, material):
        material.id = str(self.counter)
        self.counter += 1
        self.materials[material.id] = material
        self.save_data()  # 保存数据
        return material.id
        
    def get_material(self, material_id):
        return self.materials.get(material_id)
        
    def list_materials(self):
        return list(self.materials.values())
        
    def save_data(self):
        with open("c:\\Users\\leech\\erp_system\\data.json", "w") as f:
            data = {
                "counter": self.counter,
                "materials": {k: v.__dict__ for k, v in self.materials.items()}
            }
            json.dump(data, f)
            
    def load_data(self):
        try:
            with open("c:\\Users\\leech\\erp_system\\data.json", "r") as f:
                data = json.load(f)
                self.counter = data["counter"]
                for k, v in data["materials"].items():
                    material = Material("", "", 0, "", "")
                    material.__dict__.update(v)
                    self.materials[k] = material
        except FileNotFoundError:
            pass  # 第一次运行时文件不存在是正常的
    
    def update_material(self, material_id, **kwargs):
        material = self.get_material(material_id)
        if material:
            for key, value in kwargs.items():
                if hasattr(material, key):
                    setattr(material, key, value)
            self.save_data()
            return True
        return False
    
    def delete_material(self, material_id):
        if material_id in self.materials:
            del self.materials[material_id]
            self.save_data()
            return True
        return False

 网页的代码就不粘贴了,可以自己试一下。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leecheni

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值