使用Python實現(xiàn)管理系統(tǒng)附源碼
0. 前言
這幾天在寫軟件工程課設(shè),題目是:設(shè)計一款疫苗管理系統(tǒng),于是用PyQT5寫GUI,MySQL做數(shù)據(jù)庫寫了一個demo出來。
做完之后,給我的感覺是像這種管理系統(tǒng)類的東西本質(zhì)上就是對數(shù)據(jù)庫的增刪改查,界面是為了方便普通用戶操作而存在的。
其實一開始前端想過用web,但后來還是偷懶用了PyQT5寫GUI。下次有機會可能會嘗試一下web前端(之前從來沒用過)。
這次主要代碼量有1200多行(不帶UI界面代碼),整體寫的有些亂,代碼復(fù)用和代碼管理方面做得不太行,不過寫了詳細的注釋。寫這個博客主要為了記錄和總結(jié),同時可以互相學(xué)習(xí)交流。
1. 題目要求
先來看看課設(shè)的題目要求:
2. 要求分析
首先把題目直接說出的要求列出來,用戶和需求模塊如下:
接著做更進一步的分析,補充了一些功能,最終的大致流程如下:
確定了大致流程后,需要開始創(chuàng)建數(shù)據(jù)庫了。我的代碼中數(shù)據(jù)庫是需要手動創(chuàng)建的,很簡單,在第4部分“源碼及其使用”中我會具體介紹。先分析需要創(chuàng)建的數(shù)據(jù)庫(database)及表格(table):
創(chuàng)建的數(shù)據(jù)庫和表格如下:
3.效果展示
先來看看代碼的效果如何(所有在前端的操作都會同步到數(shù)據(jù)庫更新),這里只展示部分效果,還有些錯誤提示什么的細節(jié)就不展示了。
3.1 主界面
3.2 注冊界面
3.3 管理員
3.3.1 管理員登陸界面
3.3.2 管理員——疫苗信息管理界面
3.3.3 管理員——社區(qū)醫(yī)院管理界面
3.4 社區(qū)醫(yī)院
3.4.1 社區(qū)醫(yī)院登陸界面
3.4.2 社區(qū)醫(yī)院——醫(yī)院信息管理界面
3.4.3 社區(qū)醫(yī)院——用戶預(yù)約界面
3.4.5 社區(qū)醫(yī)院——接種信息管理界面
3.4.6 社區(qū)醫(yī)院——不良反應(yīng)反饋界面
3.5 普通用戶
3.5.1 普通用戶登陸界面
3.5.2 普通用戶——個人信息管理界面
3.5.3 普通用戶——家庭信息管理界面
3.5.4 普通用戶——接種預(yù)約界面
3.5.5 普通用戶——不良反應(yīng)反饋界面
4. 源碼及使用說明
源碼鏈接:鏈接: https://pan.baidu.com/s/1qQehJ8P_nouEIzGqqBkmNA
提取碼:v9d6
首先看下文件結(jié)構(gòu):
control.py是主代碼,UI文件夾里是UI文件的代碼,不用管,assets里是一些圖片,我本來想給界面加些背景和圖標(biāo)的,但后來發(fā)現(xiàn)一直有問題,就沒加。
理論上講只要配置好環(huán)境,按要求創(chuàng)建好數(shù)據(jù)庫就可以運行了。
4.1 需要的環(huán)境(第三方庫)
看一下我的運行環(huán)境
沒太多額外的庫,用anaconda創(chuàng)建虛擬環(huán)境,然后額外安裝好pyqt5和pymysql庫(為了和數(shù)據(jù)庫相連)就行了。如何安裝,百度就能解決。
4.2 創(chuàng)建數(shù)據(jù)庫
需要首先安裝好mysql數(shù)據(jù)庫,安裝教程有很多,不說了。
然后需要手動創(chuàng)建我之前說的數(shù)據(jù)庫和那幾個表格,具體代碼如下:
(數(shù)據(jù)庫和表的名字不能錯,因為代碼和數(shù)據(jù)庫和表的名字連接)
(1)登錄mysql
mysql -u root -p
(2)創(chuàng)建vaccine_info數(shù)據(jù)庫
create database vaccine_info;
(3)創(chuàng)建user_info表格
create table user_info( id varchar(20) primary key, password varchar(20), role varchar(1));
(4)在user_info表格中插入管理員
這么做是因為從安全的角度考慮,管理員這一權(quán)限最大的用戶由數(shù)據(jù)庫操作者手動添加最為合適。
insert into user_info (id, password, role) values ('admin1', '123456', 'A');
(5)創(chuàng)建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));
看看commonuser_info
長什么樣子:
(6)創(chuàng)建vaccines_info:
create table vaccines_info( type varchar(10), company varchar(20), user_type varchar(20), user_age varchar(20), price varchar(7));
(7)創(chuàng)建hospital_info表格:
create table hospital_info( id varchar(20) primary key, name varchar(20), num varchar(10), is_book varchar(1), time varchar(20));
(8)創(chuàng)建 inoculate_info表格:
create table inoculate_info( id varchar(20) primary key, vaccine_type varchar(200), time varchar(200));
至此,數(shù)據(jù)庫配置完成,總共有5個表格:
之后直接運行control.py就可以了。
5. 總結(jié)
這次課設(shè)還是學(xué)到了一些東西的,主要是數(shù)據(jù)庫的一些基本使用,以前一直不太清楚數(shù)據(jù)庫到底要怎么用。
不過說實話學(xué)到的東西和花費的時間不成正比,當(dāng)會用數(shù)據(jù)庫操作和寫界面時,之后的工作就是在重復(fù)了。當(dāng)然,我寫的也只是demo水平,僅供娛樂參考。
另外,部署環(huán)境和數(shù)據(jù)庫配置等我已經(jīng)說得比較詳細了,如果配置過程出了問題相信百度就可以解決。
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python判斷文件夾內(nèi)是否存在指定后綴文件的實例
今天小編就為大家分享一篇python判斷文件夾內(nèi)是否存在指定后綴文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06PyTorch梯度裁剪避免訓(xùn)練loss nan的操作
這篇文章主要介紹了PyTorch梯度裁剪避免訓(xùn)練loss nan的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05DjangoWeb使用Datatable進行后端分頁的實現(xiàn)
這篇文章主要介紹了DjangoWeb使用Datatable進行后端分頁的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python簡單實現(xiàn)socket信息發(fā)送與監(jiān)聽功能示例
這篇文章主要介紹了Python簡單實現(xiàn)socket信息發(fā)送與監(jiān)聽功能,結(jié)合實例形式分析了Python基于socket構(gòu)建客戶端與服務(wù)器端通信相關(guān)操作技巧,需要的朋友可以參考下2018-01-01