危险品管理系统说明文档
一、系统概述
危险品管理系统是一个用于管理船舶危险货物信息的多用户应用程序。系统采用Python语言开发,使用Tkinter构建图形界面,同时支持本地SQLite数据库和远程MySQL数据库进行数据存储和同步。系统主要用于记录和跟踪船舶危险品的到港情况,并提供按预计到港日期的自动排序和提醒功能。
二、系统特点
- 多用户支持:支持多个操作人员使用,每个用户只能修改和删除自己创建的记录
- 双数据库架构:采用本地SQLite和远程MySQL相结合的架构,确保数据可靠性
- 自动同步:系统会定期将远程数据库同步到本地,确保数据一致性
- 自动清理:系统会自动清理过期的记录(预计到港日期已过的记录)
- 日期提醒:根据预计到港日期自动用不同颜色标记紧急程度
- 数据导出:支持将数据导出为Excel文件
- 可配置性:提供数据库连接配置功能
三、系统架构
系统主要由以下组件构成:
- GUI界面:使用Tkinter构建的用户界面
- 本地数据库:SQLite数据库,文件名为
local_data.db - 远程数据库:MySQL数据库,连接参数存储在
config.ini配置文件中 - 同步机制:自动将远程数据库同步到本地
- 配置文件:存储数据库连接参数和最后登录用户信息
四、主要功能
1. 用户登录
系统启动时会要求用户输入操作人名称,该名称将用于记录数据的创建者和修改者。系统会记住最后登录的用户名,便于下次使用。
2. 数据录入
系统提供以下字段用于数据录入:
- 船名
- 航次
- 预计到港(日期选择器)
- 类型(下拉选择:本港、过境、本港和过境)
系统会自动检查输入的船名和航次是否已存在,避免重复录入。
3. 数据显示
数据以表格形式显示,包含以下字段:
- ID
- 船名
- 航次
- 预计到港
- 类型
- 记录时间
- 操作人
系统根据预计到港日期自动标记记录的紧急程度:
- 红色(紧急):预计到港日期在3天内
- 黄色(警告):预计到港日期在4-7天内
- 白色(正常):预计到港日期在7天以上
4. 数据管理
系统提供以下数据管理功能:
- 编辑记录:通过右键菜单可以编辑选中的记录
- 删除记录:用户只能删除自己创建的记录
- 导出Excel:将数据导出为Excel文件
5. 系统设置
用户可以配置MySQL数据库的连接参数:
- Host
- User
- Password
- Database
6. 自动同步和清理
系统后台会自动执行以下任务:
- 定期将远程数据库同步到本地(默认每10秒一次)
- 定期清理过期记录(默认每60秒检查一次)
- 根据预计到港日期重新排序ID号
五、数据库结构
危险品信息表(dangerous_goods)包含以下字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| ID | INTEGER | 主键,自动增长 |
| 船名 | TEXT | 船只名称 |
| 航次 | TEXT | 船只航次信息 |
| 预计到港 | TEXT/DATE | 预计到达港口的日期 |
| 类型 | TEXT | 货物类型(本港/过境/两者) |
| 原始类型 | TEXT | 记录原始类型(用于记录类型变更) |
| 记录时间 | TEXT/DATETIME | 记录创建时间 |
| 操作人 | TEXT | 记录创建者名称 |
六、系统配置
系统使用config.ini配置文件存储以下信息:
- 最后登录的用户名
- MySQL数据库连接参数(host、user、password、database)
七、运行环境要求
- Python环境:Python 3.6或以上版本
- 依赖库:
- tkinter:GUI界面
- sqlite3:本地数据库
- pymysql:MySQL数据库连接
- pandas:数据处理和Excel导出
- tkcalendar:日期选择控件
八、使用说明
- 启动系统后,输入操作人名称进行登录
- 在数据录入区域填写船舶和货物信息,点击保存
- 使用表格查看所有记录,红色和黄色标记表示需要特别关注的记录
- 右键点击记录可以编辑或删除(仅限自己创建的记录)
- 通过系统设置配置数据库连接参数
- 使用导出Excel功能可以将数据导出为Excel文件
九、系统结构图
类图
+----------------------------------+
| DangerousGoodsSystem |
+----------------------------------+
| - root: tk.Tk |
| - current_user: str |
| - entries: dict |
| - tree: ttk.Treeview |
| - config: ConfigParser |
| - sync_interval: int |
| - cleanup_interval: int |
+----------------------------------+
| + __init__(root) |
| + load_config() |
| + init_local_database() |
| + init_remote_database() |
| + get_local_db_connection() |
| + get_remote_db_connection() |
| + show_login() |
| + do_login() |
| + create_main_ui() |
| + get_next_id() |
| + save_data() |
| + validate_input() |
| + refresh_table() |
| + start_sync_thread() |
| + show_context_menu() |
| + edit_record() |
| + save_edit() |
| + delete_record() |
| + export_excel() |
| + logout() |
| + show_settings() |
| + save_settings() |
| + reorder_ids() |
| + sync_to_local() |
| + cleanup_expired_records() |
+----------------------------------+
系统流程图
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| 系统启动/应用初始化 +----> 用户登录界面 +----> 主界面显示 |
| | | | | |
+-------------------+ +-------------------+ +--------+----------+
|
v
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| 数据库同步线程启动 <----+ 配置数据库连接 <----+ 读取配置文件 |
| | | | | |
+--------+----------+ +-------------------+ +-------------------+
|
v
+-----------------------+
| |
| 用户操作(CRUD) |
| - 添加记录 |
| - 查看记录 |
| - 编辑记录 |
| - 删除记录 |
| - 导出Excel |
| - 系统设置 |
| |
+-----------------------+
十、工作原理
-
初始化流程:
- 系统启动时加载配置文件(config.ini)
- 显示登录窗口,要求用户输入操作人名称
- 登录成功后初始化本地和远程数据库连接
- 创建主界面并显示数据表格
- 启动后台同步线程
-
数据同步机制:
- 系统默认每10秒从远程MySQL数据库同步数据到本地SQLite数据库
- 每次用户添加、编辑或删除记录时,同时更新本地和远程数据库
- 如果远程数据库连接失败,系统仍可使用本地数据库工作
-
过期记录处理:
- 系统默认每60秒检查一次过期记录(预计到港日期已过的记录)
- 自动从本地和远程数据库中删除过期记录
- 删除过期记录后自动重新排序ID
-
数据排序原则:
- 系统根据预计到港日期对记录进行排序,预计到港日期越近的记录ID越小
- 每次删除记录或清理过期记录后,系统会自动重新排序所有记录的ID
-
权限控制:
- 用户只能编辑和删除自己创建的记录
- 所有用户可以查看全部记录
