毕业设计案例:Python实现疫苗接种数据库管理系统
创始人
2024-03-07 14:42:31

一、序言

那一年过年前,疫情开始爆发,对全国人民的生活和工作造成了严重的影响。但凭借着国家强盛的实力,新冠疫苗也很快的被技术人员研发出来,人们通过接种新冠疫苗来抵御新冠病毒的危害。本次通过接种新冠疫苗的这个数据统计,来设计“疫苗接种数据库”,存储人们接种疫苗的相关信息,并实现“增删改查”等基本操作以及其他的拓展功能。

国内新冠疫苗人员接种后,如果不通过数据统计到数据库,数据量之大,数据查询,数据核实,数据更改等工作会非常不方便,通过编程语言,设计疫苗接种数据库,来存储接种疫苗相关数据,能使得工作人员和接种人员的工作量大大减少,从而减少工作负担,节省时间,减少更多的财力损失,实现更好的数据管理,是一种非常高效、精确、快捷、方便的方式。

python 200集教学合集视频

【整整800集】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 = Truewhile (flag):menu.main_menu()cin = input("请输入要执行操作:")choice = int(cin) if cin.isdigit() else config.DEFAULT_INPUTif choice == 0:print("您已选择退出,感谢您的操作体验")breakelif 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()

2、mgr_update.py(更新)

def do_update():menu.update_menu_total()cin = util.get_user_input(5)if cin == 0:returnif 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):continueutil.print_log("当前列信息", i)# 输入值if col_type == config.FIELD_TYPE_DATETIME:# 日期检查a = input("请输入【%s】, 例如 2022-05-02 : " % col_desc)input_data_invalid = Truewhile(input_data_invalid):if(util.is_valid_date(a) == True):breaka = 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 = 1while 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:returnif 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:returndelete_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(查找)

def do_select():# 执行查询menu.select_menu_total()# 获取输入cin = util.get_user_input(5)if cin == 0:returnif 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 <= '%s' ''' % (table, 'expired_at', query_value)cursor = gol.get_value('cursor')cursor.execute(sql)result = cursor.fetchall()show_select_vaccine_result(result)

三、数据库数据字典

1、接种人员(person)

在这里插入图片描述

2、生产厂家(manufacturer)

在这里插入图片描述

3、疫苗信息(vaccine)

在这里插入图片描述

4、接种信息(inject_info)

在这里插入图片描述

四、运行效果

1、设计背景

在这里插入图片描述

2、小组信息

在这里插入图片描述

3、主界面

在这里插入图片描述

4、新增操作

在这里插入图片描述
结果:可见新加的“张三”信息已成功插入。
在这里插入图片描述

5、删除操作

在这里插入图片描述
结果:可见新加的“张三”信息已成功删除。

6、查询操作

在这里插入图片描述

7、修改操作

在这里插入图片描述
结果:邓阳华的家庭住址已经被修改。
在这里插入图片描述

兄弟们,今天的分享就到这!下次再见!

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...