毕业设计经典案例:Python实现疫苗接种数据库管理

Python65

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

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

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(查找)

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 ''' % (table, 'expired_at', query_value)

        cursor = gol.get_value('cursor')
        cursor.execute(sql)
        result = cursor.fetchall()

    show_select_vaccine_result(result)

1、接种人员(person)

字段名字段标题字段类型默认字段备注 id ID int 无 ID name 姓名 varchar(32) 无 姓名 cert_no 身份证号 varchar(32) 无 身份证号 birthday 生日 datetime 无 生日 gender 性别 vtinyint(1) 无 性别 address 家庭住址 varchar(128) 无 家庭住址 phone 电话 varchar(16) 无 电话 adverse_effect 不良反应 varchar(64) 无 不良反应

2、生产厂家(manufacturer)

字段名字段标题字段类型默认字段备注 id ID int 无 ID name 厂家名称 varchar(255) 无 厂家名称 company_no 厂家编号 varchar(32) 无 厂家编号 address 厂家地址 varchar(255) 无 厂家地址 contact_person 联系人 varchar(255) 无 联系人 contact_phone 联系人电话 int 无 联系人电话

3、疫苗信息(vaccine)

字段名字段标题字段类型默认字段备注 id ID int 无 ID name 疫苗名称 varchar(64) 无 ID vaccine_no 疫苗编号 varchar(64) 无 疫苗名称 vaccine_type 疫苗品种 datetime(32) 无 疫苗品种 company_no 疫苗厂家编号 vtinyint(32) 无 疫苗厂家编号 production_at 生产日期 datetime 无 生产日期 expired_at 过期时间 datetime 无 过期时间

4、接种信息(inject_info)

字段名字段标题字段类型默认字段备注 id ID int 无 ID inject_no 接种编号 varchar(32) 无 接种编号 vaccine_no 接种疫苗编号 varchar(32) 无 接种疫苗编号 vaccine_type 疫苗品种 varchar(32) 无 疫苗品种 inject_does 接种剂次 varchar(16) 无 接种剂次 person_name 接种人姓名 varchar(32) 无 接种人姓名 person_cert_no 接种人身份证号 varchar(32) 无 接种人身份证号 inject_at 接种时间 datetime 无 接种时间 inject_company 接种单位 varchar(128) 无 接种单位

Original: https://www.cnblogs.com/hahaa/p/16506292.html
Author: 轻松学Python
Title: 毕业设计经典案例:Python实现疫苗接种数据库管理



相关阅读

Title: 购物车的测试点【杭州多测师-申sir】

1.基本功能
1、购物车页面的所有连接是否正常。
2、从商品信息页面添加的商品能显示在购物车中。
3、若未登录,点击购物车中的商品直接进行结算,则提示用户输入用户名和密码,或者提示用户进行注册。
4、若没有选择任何商品,点击结算,则提示用户"请添加要结算的商品"。
5、勾选商品后,已选商品的总价(和优惠满减活动)会显示。
6、勾选商品,点击结算按钮后,进去确认订单信息页面。
7、购物车页面中,可以对添加商品信息做信息的修改,并自动保存成功。
8、可以在购物车中重新修改商品规格。
9、购物车能添加的商品种类是有数量上限的。
10、结算的时候商品可以全选,选择底部的全选按钮。
11、可以在购物车页面对宝贝进行管理。

12、假如库存有99件,选择100件是否可以加入

13、在购物车界面是否可以删减操作

14、点击其中商品是否可以进行分享

2.界面测试
1、打开淘宝购物车页面后,页面的布局是否合理,是否完整。
2、不同卖家的商品在不同的table区域显示,区分明显。
3、页面的功能按钮可以正常显示。
4、商品的最下方显示失效宝贝。
5、页面的最低端显示"你可能喜欢"
6、向下滑动页面,在购物车顶端展示"购物车"。
7、购物车中如果存在有商品降价、库存不足、限购件数等,在商品详情的下面,会有对应的字体展示。

3.性能测试
1、打开购物车时间是否在已定的用户可以棘手的时间范围内。
2、编辑购物车:删除、添加商品需要的时间。
3、在购物车页面选择需要购买的商品进行结算的时候,结算金额可不可以实时显示。
4、清空失效商品需要的时间。

4.兼容性测试
1、iOS:不同型号,不同的iOS系统。
2、安卓:不同品牌,不同型号,不同的安卓系统。

5.异常测试
1、没有内存时,APP是否能够正常相应。
2、横竖屏切换展示。
3、APP运行时网络中断。
4、反复操作某一个功能,不断点击和刷新,是否出现闪退。
5、APP运行时接入电话、短信、社交软件的信息提示时,是否能够正常运行。

6.网络环境
1、3G、4G、WiFi网络环境下应用的各功能可正常运行。
2、网络异常时,数据交换是否会有提醒。
3、中途断网再很快连网,数据是否可以自动恢复,正常加载。
4、只允许内网访问的APP,在连接到外网时是否会有提醒。

7.性能功能易用安全界面
1、是否能一件批量付款
2、是否有全选、全不选的功能
3、是否能删除商品
4、能否把购物车了的商品移入收藏夹
5、是否有商品件数的总计
6、是否有商品规格、购买数量的显示
7、是否有商品名称的显示
8、是否有店铺活动、满减优惠、降价显示
9、每个商品是否有店铺名称的提示
10、点击商品店铺能否进入店铺查看商品
11、点击商品名称能否进入商品详情页
12、是否有领券的文字提示
13、是否会显示领取优惠券之后的优惠价格
14、失效的商品是否还会出现在购物车的历史记录中
15、每件商品是否有对应商品图片的展示
16、是否有凑单提示
17、在购物车页面能否再次选择商品的种类
18、划到购物车页面的底部,有没有推荐商品展示
19、不支持发货的地区是否会有提示,商品前面的全选、全不选多选框是否会变灰色
20、当没有全选、全不选的多选框,没有选择任何商品时,点击 结算 按钮是否会跳转页面
21、是否有删除商品、批量删除的功能
22、是否有寻找相似商品的功能

Original: https://www.cnblogs.com/shensir/p/16036512.html
Author: 多测师_申sir
Title: 购物车的测试点【杭州多测师-申sir】