使用Python實(shí)現(xiàn)管理系統(tǒng)附源碼
0. 前言
這幾天在寫軟件工程課設(shè),題目是:設(shè)計(jì)一款疫苗管理系統(tǒng),于是用PyQT5寫GUI,MySQL做數(shù)據(jù)庫(kù)寫了一個(gè)demo出來。
做完之后,給我的感覺是像這種管理系統(tǒng)類的東西本質(zhì)上就是對(duì)數(shù)據(jù)庫(kù)的增刪改查,界面是為了方便普通用戶操作而存在的。
其實(shí)一開始前端想過用web,但后來還是偷懶用了PyQT5寫GUI。下次有機(jī)會(huì)可能會(huì)嘗試一下web前端(之前從來沒用過)。
這次主要代碼量有1200多行(不帶UI界面代碼),整體寫的有些亂,代碼復(fù)用和代碼管理方面做得不太行,不過寫了詳細(xì)的注釋。寫這個(gè)博客主要為了記錄和總結(jié),同時(shí)可以互相學(xué)習(xí)交流。
1. 題目要求
先來看看課設(shè)的題目要求:
2. 要求分析
首先把題目直接說出的要求列出來,用戶和需求模塊如下:
接著做更進(jìn)一步的分析,補(bǔ)充了一些功能,最終的大致流程如下:
確定了大致流程后,需要開始創(chuàng)建數(shù)據(jù)庫(kù)了。我的代碼中數(shù)據(jù)庫(kù)是需要手動(dòng)創(chuàng)建的,很簡(jiǎn)單,在第4部分“源碼及其使用”中我會(huì)具體介紹。先分析需要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)(database)及表格(table):
創(chuàng)建的數(shù)據(jù)庫(kù)和表格如下:
3.效果展示
先來看看代碼的效果如何(所有在前端的操作都會(huì)同步到數(shù)據(jù)庫(kù)更新),這里只展示部分效果,還有些錯(cuò)誤提示什么的細(xì)節(jié)就不展示了。
3.1 主界面
3.2 注冊(cè)界面
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 普通用戶——個(gè)人信息管理界面
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ù)庫(kù)就可以運(yùn)行了。
4.1 需要的環(huán)境(第三方庫(kù))
看一下我的運(yùn)行環(huán)境
沒太多額外的庫(kù),用anaconda創(chuàng)建虛擬環(huán)境,然后額外安裝好pyqt5和pymysql庫(kù)(為了和數(shù)據(jù)庫(kù)相連)就行了。如何安裝,百度就能解決。
4.2 創(chuàng)建數(shù)據(jù)庫(kù)
需要首先安裝好mysql數(shù)據(jù)庫(kù),安裝教程有很多,不說了。
然后需要手動(dòng)創(chuàng)建我之前說的數(shù)據(jù)庫(kù)和那幾個(gè)表格,具體代碼如下:
(數(shù)據(jù)庫(kù)和表的名字不能錯(cuò),因?yàn)榇a和數(shù)據(jù)庫(kù)和表的名字連接)
(1)登錄mysql
mysql -u root -p
(2)創(chuàng)建vaccine_info數(shù)據(jù)庫(kù)
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表格中插入管理員
這么做是因?yàn)閺陌踩慕嵌瓤紤],管理員這一權(quán)限最大的用戶由數(shù)據(jù)庫(kù)操作者手動(dòng)添加最為合適。
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
長(zhǎng)什么樣子:
(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ù)庫(kù)配置完成,總共有5個(gè)表格:
之后直接運(yùn)行control.py就可以了。
5. 總結(jié)
這次課設(shè)還是學(xué)到了一些東西的,主要是數(shù)據(jù)庫(kù)的一些基本使用,以前一直不太清楚數(shù)據(jù)庫(kù)到底要怎么用。
不過說實(shí)話學(xué)到的東西和花費(fèi)的時(shí)間不成正比,當(dāng)會(huì)用數(shù)據(jù)庫(kù)操作和寫界面時(shí),之后的工作就是在重復(fù)了。當(dāng)然,我寫的也只是demo水平,僅供娛樂參考。
另外,部署環(huán)境和數(shù)據(jù)庫(kù)配置等我已經(jīng)說得比較詳細(xì)了,如果配置過程出了問題相信百度就可以解決。
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python判斷文件夾內(nèi)是否存在指定后綴文件的實(shí)例
今天小編就為大家分享一篇python判斷文件夾內(nèi)是否存在指定后綴文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06在Python中處理日期和時(shí)間的基本知識(shí)點(diǎn)整理匯總
這篇文章主要介紹了在Python中處理日期和時(shí)間的基本知識(shí)點(diǎn)整理匯總,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05PyTorch梯度裁剪避免訓(xùn)練loss nan的操作
這篇文章主要介紹了PyTorch梯度裁剪避免訓(xùn)練loss nan的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05DjangoWeb使用Datatable進(jìn)行后端分頁的實(shí)現(xiàn)
這篇文章主要介紹了DjangoWeb使用Datatable進(jìn)行后端分頁的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05對(duì)pandas中Series的map函數(shù)詳解
今天小編就為大家分享一篇對(duì)pandas中Series的map函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07分享8點(diǎn)超級(jí)有用的Python編程建議(推薦)
這篇文章主要介紹了分享8點(diǎn)超級(jí)有用的Python編程建議(推薦),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-10-10Python?Matplotlib繪制動(dòng)圖平滑曲線
這篇文章主要介紹了Python?Matplotlib繪制動(dòng)圖平滑曲線,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考一下,需要的小伙伴可以參考一下2022-08-08Python簡(jiǎn)單實(shí)現(xiàn)socket信息發(fā)送與監(jiān)聽功能示例
這篇文章主要介紹了Python簡(jiǎn)單實(shí)現(xiàn)socket信息發(fā)送與監(jiān)聽功能,結(jié)合實(shí)例形式分析了Python基于socket構(gòu)建客戶端與服務(wù)器端通信相關(guān)操作技巧,需要的朋友可以參考下2018-01-01