Bootstrap

基于Python的简单企业维修管理系统的设计与实现

以下是一个基于Python的简单企业维修管理系统的设计与实现,这里我们会使用Flask作为Web框架,SQLite作为数据库来存储相关信息。
在这里插入图片描述

1. 需求分析

企业维修管理系统主要功能包括:

  • 维修工单的创建、查询、更新和删除。
  • 设备信息的管理。
  • 维修人员信息的管理。

2. 系统设计

数据库设计

我们使用SQLite数据库,包含三张表:devices(设备信息表)、technicians(维修人员信息表)和work_orders(维修工单表)。

表结构设计
  • devices表:

    • id:设备ID,主键,自增。
    • name:设备名称。
    • description:设备描述。
  • technicians表:

    • id:维修人员ID,主键,自增。
    • name:维修人员姓名。
    • contact:维修人员联系方式。
  • work_orders表:

    • id:工单ID,主键,自增。
    • device_id:关联设备ID,外键。
    • technician_id:关联维修人员ID,外键。
    • description:工单描述。
    • status:工单状态(如:待处理、处理中、已完成)。
    • created_at:工单创建时间。

3. 代码实现

3.1 环境搭建

首先,确保你已经安装了Python和Flask,可以使用以下命令安装Flask:

pip install flask
3.2 代码实现
from flask import Flask, request, jsonify
import sqlite3
import datetime

app = Flask(__name__)

# 初始化数据库
def init_db():
    conn = sqlite3.connect('repair_management.db')
    c = conn.cursor()
    # 创建设备表
    c.execute('''CREATE TABLE IF NOT EXISTS devices
                 (id INTEGER PRIMARY KEY AUTOINCREMENT,
                  name TEXT NOT NULL,
                  description TEXT)''')
    # 创建维修人员表
    c.execute('''CREATE TABLE IF NOT EXISTS technicians
                 (id INTEGER PRIMARY KEY AUTOINCREMENT,
                  name TEXT NOT NULL,
                  contact TEXT)''')
    # 创建维修工单表
    c.execute('''CREATE TABLE IF NOT EXISTS work_orders
                 (id INTEGER PRIMARY KEY AUTOINCREMENT,
                  device_id INTEGER,
                  technician_id INTEGER,
                  description TEXT,
                  status TEXT DEFAULT '待处理',
                  created_at TEXT,
                  FOREIGN KEY (device_id) REFERENCES devices(id),
                  FOREIGN KEY (technician_id) REFERENCES technicians(id))''')
    conn.commit()
    conn.close()

# 设备管理接口
@app.route('/devices', methods=['GET', 'POST'])
def manage_devices():
    if request.method == 'GET':
        conn = sqlite3.connect('repair_management.db')
        c = conn.cursor()
        c.execute('SELECT * FROM devices')
        devices = c.fetchall()
        conn.close()
        return jsonify(devices)
    elif request.method == 'POST':
        data = request.get_json()
        name = data.get('name')
        description = data.get('description')
        conn = sqlite3.connect('repair_management.db')
        c = conn.cursor()
        c.execute('INSERT INTO devices (name, description) VALUES (?,?)', (name, description))
        conn.commit()
        conn.close()
        return jsonify({'message': '设备添加成功'})

# 维修人员管理接口
@app.route('/technicians', methods=['GET', 'POST'])
def manage_technicians():
    if request.method == 'GET':
        conn = sqlite3.connect('repair_management.db')
        c = conn.cursor()
        c.execute('SELECT * FROM technicians')
        technicians = c.fetchall()
        conn.close()
        return jsonify(technicians)
    elif request.method == 'POST':
        data = request.get_json()
        name = data.get('name')
        contact = data.get('contact')
        conn = sqlite3.connect('repair_management.db')
        c = conn.cursor()
        c.execute('INSERT INTO technicians (name, contact) VALUES (?,?)', (name, contact))
        conn.commit()
        conn.close()
        return jsonify({'message': '维修人员添加成功'})

# 维修工单管理接口
@app.route('/work_orders', methods=['GET', 'POST'])
def manage_work_orders():
    if request.method == 'GET':
        conn = sqlite3.connect('repair_management.db')
        c = conn.cursor()
        c.execute('SELECT * FROM work_orders')
        work_orders = c.fetchall()
        conn.close()
        return jsonify(work_orders)
    elif request.method == 'POST':
        data = request.get_json()
        device_id = data.get('device_id')
        technician_id = data.get('technician_id')
        description = data.get('description')
        created_at = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        conn = sqlite3.connect('repair_management.db')
        c = conn.cursor()
        c.execute('INSERT INTO work_orders (device_id, technician_id, description, created_at) VALUES (?,?,?,?)',
                  (device_id, technician_id, description, created_at))
        conn.commit()
        conn.close()
        return jsonify({'message': '维修工单创建成功'})

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

4. 系统测试

  • 启动应用:

    • 在终端中运行上述Python脚本,Flask应用会在本地启动,监听http://127.0.0.1:5000
  • 测试设备管理接口:

    • 添加设备:
      curl -X POST http://127.0.0.1:5000/devices -H "Content-Type: application/json" -d '{"name": "打印机", "description": "办公室打印机"}'
      
    • 查询设备:
      curl http://127.0.0.1:5000/devices
      
  • 测试维修人员管理接口:

    • 添加维修人员:
      curl -X POST http://127.0.0.1:5000/technicians -H "Content-Type: application/json" -d '{"name": "张三", "contact": "13800138000"}'
      
    • 查询维修人员:
      curl http://127.0.0.1:5000/technicians
      
  • 测试维修工单管理接口:

    • 创建维修工单:
      curl -X POST http://127.0.0.1:5000/work_orders -H "Content-Type: application/json" -d '{"device_id": 1, "technician_id": 1, "description": "打印机卡纸"}'
      
    • 查询维修工单:
      curl http://127.0.0.1:5000/work_orders
      

5. 系统优化与扩展

  • 可以增加用户认证和权限管理功能,确保只有授权用户可以访问和操作系统。
  • 完善前端界面,使用HTML、CSS和JavaScript构建用户友好的界面,方便用户操作。
  • 增加更多的功能,如工单状态的更新、设备和维修人员信息的修改和删除等。
;