Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解_第1頁
Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解_第2頁
Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解_第3頁
Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解_第4頁
Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論