版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解目錄引言一、數(shù)據(jù)庫信息主要階段二、關(guān)鍵代碼展示1、app.py(主函數(shù))2、mgr_update.py(更新)3、mgr_add.py(添加)4、mgr_delete.py(刪除)5、mgr_selector.py(查找)三、數(shù)據(jù)庫數(shù)據(jù)字典1、接種人員(person)2、生產(chǎn)廠家(manufacturer)3、疫苗信息(vaccine)4、接種信息(inject_info)四、運(yùn)行效果
引言
那一年過年前,疫情開始爆發(fā),對全國人民的生活和工作造成了嚴(yán)重的影響。但憑借著國家強(qiáng)盛的實(shí)力,新冠疫苗也很快的被技術(shù)人員研發(fā)出來,人們通過接種新冠疫苗來抵御新冠病毒的危害。本次通過接種新冠疫苗的這個數(shù)據(jù)統(tǒng)計(jì),來設(shè)計(jì)疫苗接種數(shù)據(jù)庫,存儲人們接種疫苗的相關(guān)信息,并實(shí)現(xiàn)增刪改查等基本操作以及其他的拓展功能。
國內(nèi)新冠疫苗人員接種后,如果不通過數(shù)據(jù)統(tǒng)計(jì)到數(shù)據(jù)庫,數(shù)據(jù)量之大,數(shù)據(jù)查詢,數(shù)據(jù)核實(shí),數(shù)據(jù)更改等工作會非常不方便,通過編程語言,設(shè)計(jì)疫苗接種數(shù)據(jù)庫,來存儲接種疫苗相關(guān)數(shù)據(jù),能使得工作人員和接種人員的工作量大大減少,從而減少工作負(fù)擔(dān),節(jié)省時間,減少更多的財(cái)力損失,實(shí)現(xiàn)更好的數(shù)據(jù)管理,是一種非常高效、精確、快捷、方便的方式。
一、數(shù)據(jù)庫信息
本次數(shù)據(jù)庫設(shè)計(jì)一共四張表,分別為《接種人員(person)》、《生產(chǎn)廠家(manufacturer)》、《疫苗信息(vaccine)》、《接種信息(inject_info)》。
《接種人員》表的數(shù)據(jù)項(xiàng):姓名,身份證號,生日,性別,家庭住址,聯(lián)系電話,不良反應(yīng)?!渡a(chǎn)廠家》表的數(shù)據(jù)項(xiàng):廠家名稱,廠家編號,廠家地址,聯(lián)系人,聯(lián)系人電話?!兑呙缧畔ⅰ繁淼臄?shù)據(jù)項(xiàng):疫苗名稱,疫苗編號,疫苗品種,疫苗廠家編號,生產(chǎn)日期,過期時間?!督臃N信息》表的數(shù)據(jù)項(xiàng):接種編號,接種疫苗編號,疫苗品種,接種劑次,接種人姓名,接種人身份證號,接種時間,接種單位。
主要階段
確定選題:《課程設(shè)計(jì)-疫苗接種數(shù)據(jù)庫》。需求分析:《數(shù)據(jù)庫數(shù)據(jù)字典》,編程語言為:python+mysql
二、關(guān)鍵代碼展示
1、app.py(主函數(shù))
if__name__=='__main__':
#全局變量初始化
gol._init()
##課題背景信息
#menu.course_background()
##打印小組成員信息
#menu.team_info()
#連接數(shù)據(jù)庫信息
db.connect_to_db(config.db_host,config.db_user,config.db_password,config.db_name)
#跳出數(shù)據(jù)庫的標(biāo)志
flag=True
while(flag):
menu.main_menu()
cin=input("請輸入要執(zhí)行操作:")
choice=int(cin)ifcin.isdigit()elseconfig.DEFAULT_INPUT
ifchoice==0:
print("您已選擇退出,感謝您的操作體驗(yàn)")
break
elifchoice==config.OP_TYPE_ADD:
#----------------------添加----------------------------
mgr_add.add_data()
print(config.END_OP_TEXT)
input()
elifchoice==config.OP_TYPE_DELETE:
#----------------------刪除----------------------------
mgr_delete.do_delete()
print(config.END_OP_TEXT)
input()
elifchoice==config.OP_TYPE_SELECT:
#----------------------查找----------------------------
mgr_selector.do_select()
print(config.END_OP_TEXT)
input()
elifchoice==config.OP_TYPE_UPDATE:
#----------------------修改----------------------------
mgr_update.do_update()
print(config.END_OP_TEXT)
input()
else:
print("操作選項(xiàng)輸入錯誤,請重新輸入")
db.close_db_link()
2、mgr_update.py(更新)
defdo_update():
menu.update_menu_total()
cin=util.get_user_input(5)
ifcin==0:
return
ifcin==config.TYPE_1:
do_update_person()
ifcin==config.TYPE_2:
do_update_inject_info()
ifcin==config.TYPE_3:
do_update_vaccine()
ifcin==config.TYPE_4:
do_update_manufacturer()
defdo_update_person():
#更新接種人員表
menu.update_menu_1()
cin_update=util.get_user_input(4)
ifcin_update==0:
return
#根據(jù)身份證號更新
cert_no=input("請輸入身份證號:")
table=config.table_dict[config.TYPE_1]
table_inject_info=config.table_dict[config.TYPE_2]
ifcin_update==1:
#更新姓名
new_name=input("請輸入修改后的姓名:")
sql1="UPDATE%sSETname='%s'WHEREcert_no='%s';"%(table,new_name,cert_no)
sql2="UPDATE%sSETperson_name='%s'WHEREperson_cert_no='%s';"%(table_inject_info,new_name,cert_no)
db.execute_sql(sql1)
db.execute_sql(sql2)
elifcin_update==2:
#更新電話
new_phone=input("請輸入修改后的接種人聯(lián)系電話:")
sql1="UPDATE%sSETphone='%s'WHEREcert_no='%s';"%(table,new_phone,cert_no)
db.execute_sql(sql1)
elifcin_update==3:
#更新住址
new_address=input("請輸入修改后的家庭住址:")
sql1="UPDATE%sSETaddress='%s'WHEREcert_no='%s';"%(table,new_address,cert_no)
db.execute_sql(sql1)
3、mgr_add.py(添加)
defadd_data():
#添加操作
add_menu_1()
#獲取用戶輸入
cin=util.get_user_input(5)
ifcin==0:
return
#獲取數(shù)據(jù)表列
table=config.table_dict[cin]
columns=get_table_col(table)
util.print_log("表的列信息:",columns)
field_list=[]
data_list=[]
foriincolumns:
col_name=i[0]#列名
col_type=i[1]#列類型
col_index_type=i[4]#列索引類型
col_desc=i[8]#列值
#如果是不需要錄入則跳過,比如id,person_id等
if(col_nameinconfig.SKIP_FIELD_SET):
continue
util.print_log("當(dāng)前列信息",i)
#輸入值
ifcol_type==config.FIELD_TYPE_DATETIME:
#日期檢查
a=input("請輸入【%s】,例如2025-05-02:"%col_desc)
input_data_invalid=True
while(input_data_invalid):
if(util.is_valid_date(a)==True):
break
a=input("您輸入日期不合法,請重新輸入,例如2025-05-02:")
else:
a=input("請輸入【%s】:"%col_desc)
#判斷唯一關(guān)鍵字是否重復(fù)
ifcol_index_type=='UNI':
sql='''
SELECT1FROM%s
WHERE%s=%s
'''%(table,col_name,a)
util.print_log("查重sql:",sql)
cursor=gol.get_value('cursor')
exist_in_table=1
whileexist_in_table==1:
dup_result=cursor.execute(sql)
ifdup_result==0:
break
#如果重復(fù)則重新輸入
a=input("您輸入與表中信息重復(fù),請重新輸入【%s】"%col_name)
field_list.append(col_name)
data_list.append(a)
#輸入完成,組裝數(shù)據(jù)
field_str=",".join(field_list)
data_tuple=tuple(data_list)
#拼接數(shù)據(jù)
sql='''
INSERTINTO%s(%s)VALUES%s;
'''%(table,field_str,data_tuple)
util.print_log(sql)
cursor=gol.get_value('cursor')
cursor.execute(sql)
#提交數(shù)據(jù)
conn=gol.get_value('conn')
mit()
util.print_log("%s表成功插入數(shù)據(jù)%s"%(table,data_tuple))
return0
4、mgr_delete.py(刪除)
defdo_delete():
#刪除操作
menu.delete_menu_total()
#獲取輸入
cin=util.get_user_input(5)
ifcin==0:
return
ifcin==config.TYPE_1:
do_delete_person()
ifcin==config.TYPE_2:
do_delete_inject_info()
ifcin==config.TYPE_3:
do_delete_vaccine()
ifcin==config.TYPE_4:
do_delete_manufacturer()
defdo_delete_vaccine():
#刪除疫苗信息
#打印菜單
menu.delete_menu_3()
#獲取用戶輸入
cin=util.get_user_input(2)
ifcin==0:
return
delete_value=input("請輸入具體信息:")
#獲取相關(guān)表
table=config.table_dict[config.TYPE_3]
table2=config.table_dict[config.TYPE_2]
#接種編號
ifcin==1:
sql1='''
DELETEFROM%sWHEREvaccine_no='%s'
'''%(table,delete_value)
sql2='''
DELETEFROM%sWHEREvaccine_no='%s'
'''%(table2,delete_value)
db.execute_sql(sql1)
db.execute_sql(sql2)
5、mgr_selector.py(查找)
defdo_select():
#執(zhí)行查詢
menu.select_menu_total()
#獲取輸入
cin=util.get_user_input(5)
ifcin==0:
return
ifcin==config.TYPE_1:
#------------------查找接種人員相關(guān)信息----------------
do_select_person()
elifcin==config.TYPE_2:
#------------------查找接種信息-----------------------
do_select_inject_info()
elifcin==config.TYPE_3:
#------------------查找疫苗信息-----------------------
do_select_vaccine()
elifcin==config.TYPE_4:
#------------------查找生產(chǎn)企業(yè)相關(guān)信息-----------------------
do_select_manufacturer()
defdo_select_vaccine():
#查找疫苗信息
menu.select_menu_3()
cin=util.get_user_input(5)
ifcin==0:
return
#獲取搜索數(shù)據(jù)
cin2=input("請輸入搜索數(shù)據(jù):")
table=config.table_dict[config.TYPE_3]
query_value=cin2
#結(jié)果集合
result=[]
#疫苗編號
ifcin==1:
result=db.query_by_table_field(table,'vaccine_no',query_value)
#廠家編號
ifcin==2:
result=db.query_by_table_field(table,'company_no',query_value)
#生產(chǎn)日期
ifcin==3:
sql='''
SELECT*FROM%sWHERE%s='%s'
'''%(table,'production_at',query_value)
cursor=gol.get_value('cursor')
cursor.execute(sql)
result=cursor.fetchall()
#過期時間
ifcin==4:
sql='''
SELECT*FROM%sWHERE%s='%s'
'''%(table,'expired_at',query_value)
cursor=gol.get_value('cursor')
cursor.execute(sql)
result=cursor.fetchall()
show_select_vaccine_result(result)
三、數(shù)據(jù)庫數(shù)據(jù)字典
1、接種人員(person)
字段名字段標(biāo)題字段類型默認(rèn)字段備注idIDint無IDname姓名varchar(32)無姓名cert_no身份證號varchar(32)無身份證號birthday生日datetime無生日gender性別vtinyint(1)無性別address家庭住址varchar(128)無家庭住址phone電話varchar(16)無電話adverse_effect不良反應(yīng)varchar(64)無不良反應(yīng)
2、生產(chǎn)廠家(manufacturer)
字段名字段標(biāo)題字段類型默認(rèn)字段備注idIDint無IDname廠家名稱varchar(255)無廠家名稱company_no廠家編號varchar(32)無廠家編號address廠家地址varchar(255)無廠家地址
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二項(xiàng)式定理知識點(diǎn)課件
- 2026年鐘山縣清塘鎮(zhèn)人民政府公開招聘備考題庫員備考題庫及一套參考答案詳解
- 醫(yī)院法律法規(guī)培訓(xùn)課件
- 2025至2030中國土壤修復(fù)技術(shù)比較與項(xiàng)目實(shí)施案例研究報(bào)告
- 2025至2030中國腦機(jī)接口醫(yī)療應(yīng)用倫理審查與臨床試驗(yàn)規(guī)范研究
- 2025至2030中國人工智能芯片行業(yè)市場現(xiàn)狀技術(shù)突破及商業(yè)化應(yīng)用前景分析研究報(bào)告
- iso質(zhì)量環(huán)境安全貫標(biāo)課件
- 2026年雄安未來產(chǎn)業(yè)技術(shù)研究院(事業(yè)單位)招聘44人備考題庫有答案詳解
- 2025至2030鈉離子電池產(chǎn)業(yè)化進(jìn)程評估及儲能系統(tǒng)替代機(jī)會研究報(bào)告
- 2025至2030文化娛樂市場發(fā)展分析及前景趨勢與消費(fèi)行為研究報(bào)告
- 2025年高中語文必修上冊《登泰山記》文言文對比閱讀訓(xùn)練(含答案)
- 2025年金蝶AI蒼穹平臺新一代企業(yè)級AI平臺報(bào)告-
- 2025中國機(jī)械工業(yè)集團(tuán)有限公司(國機(jī)集團(tuán))社會招聘19人筆試參考題庫附答案
- 淺析煤礦巷道快速掘進(jìn)技術(shù)
- 成人留置導(dǎo)尿標(biāo)準(zhǔn)化護(hù)理與并發(fā)癥防控指南
- 2025年勞動關(guān)系協(xié)調(diào)師綜合評審試卷及答案
- CIM城市信息模型技術(shù)創(chuàng)新中心建設(shè)實(shí)施方案
- 班級互動小游戲-課件共30張課件-小學(xué)生主題班會版
- 2025至2030全球及中國智慧機(jī)場建設(shè)行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025年二級造價師《土建工程實(shí)務(wù)》真題卷(附解析)
- 智慧農(nóng)業(yè)管理中的信息安全對策
評論
0/150
提交評論