以下是一个基于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
。
- 在终端中运行上述Python脚本,Flask应用会在本地启动,监听
-
测试设备管理接口:
- 添加设备:
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构建用户友好的界面,方便用户操作。
- 增加更多的功能,如工单状态的更新、设备和维修人员信息的修改和删除等。