这几天在写软件工程课设,题目是:设计一款疫苗管理系统,于是用PyQT5写GUI,MySQL做数据库写了一个demo出来。
做完之后,给我的感觉是像这种管理系统类的东西本质上就是对数据库的增删改查,界面是为了方便普通用户操作而存在的。
其实一开始前端想过用web,但后来还是偷懒用了PyQT5写GUI。下次有机会可能会尝试一下web前端(之前从来没用过)。
这次主要代码量有1200多行(不带UI界面代码),整体写的有些乱,代码复用和代码管理方面做得不太行,不过写了详细的注释。写这个博客主要为了记录和总结,同时可以互相学习交流。
首先把题目直接说出的要求列出来,用户和需求模块如下:
接着做更进一步的分析,补充了一些功能,最终的大致流程如下:
确定了大致流程后,需要开始创建数据库了。我的代码中数据库是需要手动创建的,很简单,在第4部分“源码及其使用”中我会具体介绍。先分析需要创建的数据库(database)及表格(table):
先来看看代码的效果如何(所有在前端的操作都会同步到数据库更新),这里只展示部分效果,还有些错误提示什么的细节就不展示了。
链接:https://pan.baidu.com/s/1tRxmb6pfVRrI0JdCEDlCUg
提取码:syh1
首先看下文件结构:
control.py是主代码,UI文件夹里是UI文件的代码,不用管,assets里是一些图片,我本来想给界面加些背景和图标的,但后来发现一直有问题,就没加。
理论上讲只要配置好环境,按要求创建好数据库就可以运行了。
看一下我的运行环境
没太多额外的库,用anaconda创建虚拟环境,然后额外安装好pyqt5和pymysql库(为了和数据库相连)就行了。如何安装,百度就能解决。
需要首先安装好mysql数据库,安装教程有很多,不说了。
然后需要手动创建我之前说的数据库和那几个表格,具体代码如下:
(数据库和表的名字不能错,因为代码和数据库和表的名字连接)
(1)登录mysql
mysql -u root -p
(2)创建vaccine_info数据库
create database vaccine_info;
(3)创建user_info表格
create table user_info(
id varchar(20) primary key,
password varchar(20),
role varchar(1));
这么做是因为从安全的角度考虑,管理员这一权限最大的用户由数据库操作者手动添加最为合适。
insert into user_info (id, password, role) values ('admin1', '123456', 'A');
(5)创建commonuser_info表格
create table commonuser_info(
id varchar(20) primary key,
name varchar(20),
family_code varchar(8),
age int(3),
sex varchar(1),
phone varchar(20),
IDCard varchar(30),
is_book varchar(1),
book_time varchar(11),
is_bad_reaction varchar(1),
what_bad_reaction varchar(60));
(6)创建vaccines_info:
create table vaccines_info(
type varchar(10),
company varchar(20),
user_type varchar(20),
user_age varchar(20),
price varchar(7));
create table hospital_info(
id varchar(20) primary key,
name varchar(20),
num varchar(10),
is_book varchar(1),
time varchar(20));
create table inoculate_info(
id varchar(20) primary key,
vaccine_type varchar(200),
time varchar(200));
至此,数据库配置完成,总共有5个表格:
之后直接运行control.py就可以了。
这次课设还是学到了一些东西的,主要是数据库的一些基本使用,以前一直不太清楚数据库到底要怎么用。
不过说实话学到的东西和花费的时间不成正比,当会用数据库操作和写界面时,之后的工作就是在重复了。当然,我写的也只是demo水平,仅供娱乐参考。
另外,部署环境和数据库配置等我已经说得比较详细了,如果配置过程出了问题相信百度就可以解决。
最后,寒假快乐!!