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

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

 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

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

 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

leecheni

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

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

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

打赏作者

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

抵扣说明:

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

余额充值