ToB企服应用市场:ToB评测及商务社交产业平台
标题:
毕业设计经典案例:Python实现疫苗接种数据库管理
[打印本页]
作者:
科技颠覆者
时间:
2022-8-31 00:41
标题:
毕业设计经典案例:Python实现疫苗接种数据库管理
那一年过年前,疫情开始爆发,对全国人民的生活和工作造成了严重的影响。但凭借着国家强盛的实力,新冠疫苗也很快的被技术人员研发出来,人们通过接种新冠疫苗来抵御新冠病毒的危害。本次通过接种新冠疫苗的这个数据统计,来设计“疫苗接种数据库”,存储人们接种疫苗的相关信息,并实现“增删改查”等基本操作以及其他的拓展功能。
国内新冠疫苗人员接种后,如果不通过数据统计到数据库,数据量之大,数据查询,数据核实,数据更改等工作会非常不方便,通过编程语言,设计疫苗接种数据库,来存储接种疫苗相关数据,能使得工作人员和接种人员的工作量大大减少,从而减少工作负担,节省时间,减少更多的财力损失,实现更好的数据管理,是一种非常高效、精确、快捷、方便的方式。
数据库信息
本次数据库设计一共四张表,分别为《接种人员(person)》、《生产厂家(manufacturer)》、《疫苗信息(vaccine)》、《接种信息(inject_info)》。
《接种人员》表的数据项:姓名,身份证号,生日,性别,家庭住址,联系电话,不良反应。
《生产厂家》表的数据项:厂家名称,厂家编号,厂家地址,联系人,联系人电话。
《疫苗信息》表的数据项:疫苗名称,疫苗编号,疫苗品种,疫苗厂家编号,生产日期,过期时间。
《接种信息》表的数据项:接种编号,接种疫苗编号,疫苗品种,接种剂次,接种人姓名,接种人身份证号,接种时间,接种单位。
主要阶段
确定选题:《课程设计-疫苗接种数据库》。
需求分析:《数据库数据字典》,编程语言为:python + mysql
关键代码展示
1、app.py(主函数)
if __name__ == '__main__':
# 全局变量初始化
gol._init()
# # 课题背景信息
# menu.course_background()
#
# # 打印小组成员信息
# menu.team_info()
# 连接数据库信息
db.connect_to_db(config.db_host, config.db_user, config.db_password, config.db_name)
# 跳出数据库的标志
flag = True
while (flag):
menu.main_menu()
cin = input("请输入要执行操作:")
choice = int(cin) if cin.isdigit() else config.DEFAULT_INPUT
if choice == 0:
print("您已选择退出,感谢您的操作体验")
break
elif choice == config.OP_TYPE_ADD:
# ----------------------添加----------------------------
mgr_add.add_data()
print(config.END_OP_TEXT)
input()
elif choice == config.OP_TYPE_DELETE:
# ----------------------删除----------------------------
mgr_delete.do_delete()
print(config.END_OP_TEXT)
input()
elif choice == config.OP_TYPE_SELECT:
# ----------------------查找----------------------------
mgr_selector.do_select()
print(config.END_OP_TEXT)
input()
elif choice == config.OP_TYPE_UPDATE:
# ----------------------修改----------------------------
mgr_update.do_update()
print(config.END_OP_TEXT)
input()
else:
print("操作选项输入错误,请重新输入")
db.close_db_link()
复制代码
# 我给大家准备了这些资料:Python视频教程、100本Python电子书、基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题、Python学习路线图、问题解答!
# 都放在这个扣群啦 : 279199867
复制代码
2、mgr_update.py(更新)
def do_update():
menu.update_menu_total()
cin = util.get_user_input(5)
if cin == 0:
return
if cin == config.TYPE_1:
do_update_person()
if cin == config.TYPE_2:
do_update_inject_info()
if cin == config.TYPE_3:
do_update_vaccine()
if cin == config.TYPE_4:
do_update_manufacturer()
def do_update_person():
# 更新接种人员表
menu.update_menu_1()
cin_update = util.get_user_input(4)
if cin_update == 0:
return
# 根据身份证号更新
cert_no = input("请输入身份证号:")
table = config.table_dict[config.TYPE_1]
table_inject_info = config.table_dict[config.TYPE_2]
if cin_update == 1:
# 更新姓名
new_name = input("请输入修改后的姓名:")
sql1 = "UPDATE %s SET name='%s' WHERE cert_no='%s';" % (table, new_name, cert_no)
sql2 = "UPDATE %s SET person_name='%s' WHERE person_cert_no='%s';" % (table_inject_info, new_name, cert_no)
db.execute_sql(sql1)
db.execute_sql(sql2)
elif cin_update == 2:
# 更新电话
new_phone = input("请输入修改后的接种人联系电话:")
sql1 = "UPDATE %s SET phone='%s' WHERE cert_no='%s';" % (table, new_phone, cert_no)
db.execute_sql(sql1)
elif cin_update == 3:
# 更新住址
new_address = input("请输入修改后的家庭住址:")
sql1 = "UPDATE %s SET address='%s' WHERE cert_no='%s';" % (table, new_address, cert_no)
db.execute_sql(sql1)
复制代码
3、mgr_add.py(添加)
def add_data():
# 添加操作
add_menu_1()
# 获取用户输入
cin = util.get_user_input(5)
if cin == 0:
return
# 获取数据表列
table = config.table_dict[cin]
columns = get_table_col(table)
util.print_log("表的列信息: ", columns)
field_list = []
data_list = []
for i in columns:
col_name = i[0] # 列名
col_type = i[1] # 列类型
col_index_type = i[4] # 列索引类型
col_desc = i[8] # 列值
# 如果是不需要录入则跳过, 比如 id,person_id 等
if(col_name in config.SKIP_FIELD_SET):
continue
util.print_log("当前列信息", i)
# 输入值
if col_type == config.FIELD_TYPE_DATETIME:
# 日期检查
a = input("请输入【%s】, 例如 2022-05-02 : " % col_desc)
input_data_invalid = True
while(input_data_invalid):
if(util.is_valid_date(a) == True):
break
a = input("您输入日期不合法,请重新输入,例如 2022-05-02 : ")
else:
a = input("请输入【%s】: " % col_desc)
# 判断唯一关键字是否重复
if col_index_type == 'UNI':
sql = '''
SELECT 1 FROM %s
WHERE %s = %s
''' % (table, col_name, a)
util.print_log("查重 sql: ", sql)
cursor = gol.get_value('cursor')
exist_in_table = 1
while exist_in_table == 1:
dup_result = cursor.execute(sql)
if dup_result == 0:
break
# 如果重复则重新输入
a = input("您输入与表中信息重复,请重新输入【%s】" % col_name)
field_list.append(col_name)
data_list.append(a)
# 输入完成,组装数据
field_str = ",".join(field_list)
data_tuple = tuple(data_list)
# 拼接数据
sql = '''
INSERT INTO %s(%s) VALUES %s;
''' % (table, field_str, data_tuple)
util.print_log(sql)
cursor = gol.get_value('cursor')
cursor.execute(sql)
# 提交数据
conn = gol.get_value('conn')
conn.commit()
util.print_log("%s 表成功插入数据 %s" % (table, data_tuple))
return 0
复制代码
4、mgr_delete.py(删除)
def do_delete():
# 删除操作
menu.delete_menu_total()
# 获取输入
cin = util.get_user_input(5)
if cin == 0:
return
if cin == config.TYPE_1:
do_delete_person()
if cin == config.TYPE_2:
do_delete_inject_info()
if cin == config.TYPE_3:
do_delete_vaccine()
if cin == config.TYPE_4:
do_delete_manufacturer()
def do_delete_vaccine():
# 删除疫苗信息
# 打印菜单
menu.delete_menu_3()
# 获取用户输入
cin = util.get_user_input(2)
if cin == 0:
return
delete_value = input("请输入具体信息:")
# 获取相关表
table = config.table_dict[config.TYPE_3]
table2 = config.table_dict[config.TYPE_2]
# 接种编号
if cin == 1:
sql1 = '''
DELETE FROM %s WHERE vaccine_no='%s'
''' % (table, delete_value)
sql2 = '''
DELETE FROM %s WHERE vaccine_no='%s'
''' % (table2, delete_value)
db.execute_sql(sql1)
db.execute_sql(sql2)
复制代码
5、mgr_selector.py(查找)
[code]def do_select(): # 执行查询 menu.select_menu_total() # 获取输入 cin = util.get_user_input(5) if cin == 0: return if cin == config.TYPE_1: # ------------------查找接种人员相关信息---------------- do_select_person() elif cin == config.TYPE_2: # ------------------查找接种信息----------------------- do_select_inject_info() elif cin == config.TYPE_3: # ------------------查找疫苗信息----------------------- do_select_vaccine() elif cin == config.TYPE_4: # ------------------查找生产企业相关信息----------------------- do_select_manufacturer() def do_select_vaccine(): # 查找疫苗信息 menu.select_menu_3() cin = util.get_user_input(5) if cin == 0: return # 获取搜索数据 cin2 = input("请输入搜索数据:") table = config.table_dict[config.TYPE_3] query_value = cin2 # 结果集合 result = [] # 疫苗编号 if cin == 1: result = db.query_by_table_field(table, 'vaccine_no', query_value) # 厂家编号 if cin == 2: result = db.query_by_table_field(table, 'company_no', query_value) # 生产日期 if cin == 3: sql = ''' SELECT * FROM %s WHERE %s >= '%s' ''' % (table, 'production_at', query_value) cursor = gol.get_value('cursor') cursor.execute(sql) result = cursor.fetchall() # 过期时间 if cin == 4: sql = ''' SELECT * FROM %s WHERE %s
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4