当前位置:   article > 正文

【数据库】数据库课程设计一一疫苗接种数据库

【数据库】数据库课程设计一一疫苗接种数据库



前言:此设计为小组合作项目,博主任组长,首先仍为感谢小组成员贡献,已征得各组员同意后创作发布此文。
博主参与负责:协调安排组员合作,记录过程,文档整理,编码《疫苗接种数据库》主体函数,运行调试各部分代码,加入主函数,e-r图设计,编写课程设计报告文档。(这也是博主第一次真正地贯穿整体参与设计,虽然我整的挺拉的……)

一、数据库题目

《疫苗接种数据库》

二、关键代码展示

1、疫苗接种数据库.py(主函数)

import Select   #导入查找功能包
import Add      #导入添加功能包
import Delete   #导入删除功能包
import Update   #导入修改功能包


if __name__ == '__main__':
    Background()#打印背景信息
    Team()      #打印小组成员信息
    us=input("请输入用户名:")
    pd=input("请输入密码:")
    db=input("请输入数据库名称:")#数据库名字
    
    Add.link(us,pd,db)
    Select.link(us,pd,db)
    Update.link(us,pd,db)
    Delete.link(us,pd,db)

    flag=True   #作为跳出数据库的标志
    while(flag):
        MainMenm()
        choice=int(input("请输入要执行操作:"))
        if choice==0:
            print("您已选择退出,感谢您的操作体验")
            break
        elif choice==1:#----------------------添加----------------------------
            Add.add()
            print('''您已操作完毕,即将为您打印MainMenu,请按任意字符以继续''')
            input()

        elif choice==2:#----------------------删除----------------------------
            Delete.delete()
            print('''您已操作完毕,即将为您打印MainMenu,请按任意字符以继续''')
            input()

        elif choice==3:#----------------------查找----------------------------
            Select.chose()
            print('''您已操作完毕,即将为您打印MainMenu,请按任意字符以继续''')
            input()

        elif choice==4:#----------------------修改----------------------------
            Update.update()
            print('''您已操作完毕,即将为您打印MainMenu,请按任意字符以继续''')
            input()
        else:
            print("操作选项输入错误,请重新输入")
    Add.closelink()
    Select.closelink()
    Update.closelink()
    Delete.closelink()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

2、Update.py(更新)

def update():
    UpdateMenu()
    a=int(input("请输入选择项目:"))
    while a!=1 and a!=2 and a!=3 and a!=4 and a!=0:
        a=int(input("您输入有误,请重新输入:"))
    if a==0:
        return
    if a==1:          #更新接种人员表
        UpdateMenu1()
        b = int(input("请输入选择项目:"))
        while b!=0 and b!=1 and b!=2 and b!=3:
            b = int(input("您输入有误,请重新输入:"))
        if b == 0:  # 1.1
            return
        shenfenzheng = input("请输入身份证号:")

        if b == 1:  # 1.2
            jiexing = input("请输入修改后的姓名:")
            c.execute("UPDATE 接种人员 set  姓名='%s' WHERE 身份证号='%s';" % (jiexing, shenfenzheng))  # 修改接种人员表的接种人姓名
            c.execute("UPDATE 接种信息 SET 姓名='%s' WHERE 身份证号='%s';" % (jiexing, shenfenzheng))  # 修改接种信息表的接种人姓名
            conn.commit()
        elif b == 2:  # 1.3
            pphone = input("请输入修改后的接种人联系电话:")
            c.execute("UPDATE 接种人员 SET 接种人联系电话='%s' WHERE 身份证号='%s';" % (pphone, shenfenzheng))  # 修改接种人员表的电话号码
            conn.commit()
        elif b == 3:  # 1.4
            zhuzhi = input("请输入修改后的家庭住址:")
            c.execute("UPDATE 接种人员 SET 家庭住址='%s' WHERE 身份证号='%s';" % (zhuzhi, shenfenzheng))  # 修改接种人员表的家庭住址
            conn.commit()

    if a==2:    #2.0
        UpdateMenu2()
        d = int(input("请输入选择项目:"))
        while d!=0 and d!=1 and d!=2 and d!=3:
            d = int(input("您输入有误,请重新输入:"))
        if d == 0:  # 2.1
            return
        jiebian = input("请输入接种编号:")
        if d == 1:  # 2.2
            yimiaobianhao = input("请输入修改后的疫苗编号:")
            c.execute("UPDATE 接种信息 SET 疫苗编号='%s' WHERE 接种编号='%s';" % (yimiaobianhao, jiebian))  # 修改疫苗编号
            conn.commit()
        elif d == 2:  # 2.3
            jici = input("请输入修改后的剂次:")
            c.execute("UPDATE 接种信息 SET 剂次='%s' WHERE 接种编号='%s';" % (jici, jiebian))  # 修改疫苗剂次
            conn.commit()
        elif d == 3:  # 2.4
            yipin = input("请输入修改后的疫苗品种:")
            c.execute("UPDATE 接种信息 SET 疫苗品种='%s' WHERE 接种编号='%s';" % (yipin, jiebian))  # 修改疫苗品种
            conn.commit()

    if a==3:   #3.0
        UpdateMenu3()
        e = int(input("请输入选择项目:"))
        while e!=0 and e!=1:
            e = int(input("您输入有误,请重新输入:"))
        if e == 0:  # 3.1
            return
        changbian = input("请输入厂家编号:")
        if e == 1:  # 3.2
            xingming2 = input("请输入修改后的疫苗厂家(名字):")
            c.execute("UPDATE 生产企业 SET 厂家名称='%s' WHERE 厂家编号='%s';" % (xingming2, changbian))  # 修改厂家名字
            c.execute("UPDATE 疫苗 SET 疫苗厂家='%s' WHERE 厂家编号='%s';" % (xingming2, changbian))
            conn.commit()

    if a==4:  #4.0
        UpdateMenu4()
        f = int(input("请输入选择项目:"))
        while f!=0 and f!=1:
            f = int(input("您输入有误,请重新输入:"))
        if f == 0:  # 4.1
            return
        yibian = input("请输入疫苗编号:")
        if f == 1:  # 4.2
            changbian2 = input("请输入修改后的厂家编号:")
            c.execute("UPDATE 疫苗 SET 厂家编号='%s' WHERE 疫苗编号='%s';" % (changbian2, yibian))  # 修改厂家编号
            c.execute("UPDATE 疫苗, 生产企业 SET 疫苗.疫苗厂家 = 生产企业.厂家名称 WHERE 疫苗.厂家编号 = '%s' and 生产企业.厂家编号 = '%s';"%(changbian2, changbian2))  # 修改厂家编号

            conn.commit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79

3、Add.py(添加)

def add():
    AddMenu1()
    no = eval(input("请输入选择项目:"))
    if no==0:
        return
    tableDic = {1: "接种人员", 2: "接种信息", 3: "疫苗", 4: "生产企业"}
    while no not in tableDic:
        no = eval(input("您输入有误,请重新输入:"))
    table = tableDic[no]
    Col = getCol(table)

    data = []
    NumFlag = 0
    for i in Col:
        if i[0]=='生日':
            DataFlag=1
            a=input("请输入" + i[0] + ",例如2002-02-02:")
            while(DataFlag):
                if(isVaildDate(a)==0):
                    a = input("您输入日期不合法,请重新输入,例如2020-02-02:")
                elif(isVaildDate(a)==1):
                    break
        else:
            a = input("请输入" + i[0] + ":")
        if NumFlag==0:
            flag = 1
            while(flag ==1):#判断主关键字是否重复
                sql = '''select  %s FROM %s''' % (i[0],table)
                c.execute(sql)
                result = c.fetchall()
                for j in result:
                    for z in j:
                        if a == z:
                            flag = 0
                if flag ==1:
                    break
                elif flag == 0:
                    a = input("您输入与表中信息重复,请重新输入:")
                    flag=1
            NumFlag=NumFlag+1
        if i[1][1] == "v" or i[1][1] == "c":    #varchar ;char
            a = str(a)
        data.append(a)

    data = tuple(data)
    sql = '''
    insert into %s values %s;
    ''' % (table, data)
    # print(sql)
    c.execute(sql)

    conn.commit()
    print("已成功插入……")
    return 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

4、Delete.py(删除)

def delete():
    DeleteMenu()
    cin = int(input("请输入选择项目:"))
    while cin != 0 and cin != 1 and cin != 2 and cin != 3 and cin != 4:
        cin = int(input("您输入有误,请重新输入:"))
    if cin ==0:
        return
    elif cin ==1:
        DeleteMenu1()
        id1 = int(input("请输入选择项目:"))
        while id1!=0 and id1!=1 and id1!=2:
            id1 = int(input("您输入有误,请重新输入:"))
        if id1 == 0:
            return
        elif id1 == 1:
            ID = input("请输入接种人员身份证:")
            sql = "DELETE FROM 接种人员 WHERE 身份证号='%s'" % (ID)
            c.execute(sql)
            conn.commit()
        elif id1==2:
            Phone = input("请输入接种人联系电话:")
            sql = "DELETE FROM 接种人员 WHERE 接种人联系电话='%s'" % (Phone)
            c.execute(sql)
            conn.commit()

    elif cin == 2:
        DeleteMenu2()
        id2 = int(input("请输入选择项目:"))
        while id2 != 0 and id2 != 1 and id2 != 2:
            id2 = int(input("您输入有误,请重新输入:"))
        if id2 == 0:
            return
        elif id2 == 1:
            IID = input("请输入接种编号")
            sql = "DELETE FROM  接种信息 WHERE 接种编号='%s'" % (IID)
            c.execute(sql)
            conn.commit()
        elif id2==2:
            VID = input("请输入疫苗编号")
            sql = "DELETE FROM  接种信息 WHERE 疫苗编号='%s'" % (VID)
            c.execute(sql)
            conn.commit()

    elif cin == 3:
        DeleteMenu3()
        id3 = int(input("请输入选择项目:"))
        while id3 != 0 and id3 != 1:
            id3 = int(input("您输入有误,请重新输入:"))

        if id3 == 0:
            return
        else:
            x = input("请输入厂家编号:")
            sql1 = "DELETE FROM 生产企业 WHERE 厂家编号='%s'"%(x)
            sql2 = "DELETE FROM 疫苗 WHERE 厂家编号='%s'" %(x)
            c.execute(sql1)

            c.execute(sql2)
            conn.commit()
    else:
        DeleteMenu4()
        id4 = int(input("请输入选择项目:"))
        while id4 != 0 and id4 != 1:
            id4 = int(input("您输入有误,请重新输入:"))
        if id4 == 0:
            return
        else:
            y = input("请输入疫苗编号:")
            sql1 = "DELETE FROM 疫苗 WHERE 疫苗编号='%s'" % (y)
            sql2 = "DELETE FROM 接种信息 WHERE 疫苗编号='%s'" % (y)
            c.execute(sql1)
            c.execute(sql2)
            conn.commit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73

5、Select.py(查找)

def chose():
    SelectMenu1()
    cin=int(input("请输入选择项目:"))
    while True:
        if cin in range(0,5):
            break
        else:
            cin=int(input("您输入有误,请重新输入:"))

    if cin==0:
        return
    if cin==1:                    #------------------查找接种人员相关信息-----------------------
        SelectMenu2()
        cin1=int(input("请输入选择项目:"))
        while True:
            if cin1 in range(0, 5):
                break
            else:
                SelectMenu2()
                cin1 = int(input("您输入有误,请重新输入:"))
        if cin1==0:
            return
        for i in range(1,5):
            if  cin1!=i:
                continue
            else:
                cin2=input('请输入搜索数据:')
                if i==1:
                    return select_human(num=cin2)
                elif i==2:
                    return select_human(name=cin2)
                elif i==3:
                    cin2=int(cin2)
                    return select_human(AR=cin2)
                else:
                    cin2 = int(cin2)
                    return select_human(Dose=cin2)
    elif cin==2:                    #------------------查找接种信息相关信息-----------------------
        SelectMenu3()
        cin1=int(input("请输入选择项目:"))
        while True:
            if cin1 not in range(0,4):
                cin1=int(input("您输入有误,请重新输入:"))
            else:
                break
        if cin1==0:
            return
        for i in range(1,4):
            if cin1!=i:
                continue
            else:
                cin2=input("请输入搜索数据:")
                if i==1:
                    return select_inoculate(num=cin2)
                elif i==2:
                    return select_inoculate(humanid=cin2)
                elif i==3:
                    return select_inoculate(vid=cin2)

    elif cin==3:                    #------------------查找生产企业相关信息-----------------------
        SelectMenu4()
        cin1 = int(input("请输入选择项目:"))
        while True:
            if cin1 in range(0, 4):
                break
            else:
                cin1 = int(input("请输入选择项目:"))
        if cin1==0:
            return
        for i in range(1,4):
            if cin1 !=i:
                continue
            else:
                cin2=input("请输入搜索数据:")
                if i==1:
                    return select_factory(fid=cin2)
                elif i==2:
                    return select_factory(faddress=cin2)
                else:
                    return select_factory(vintype=cin2)

    elif cin==4:                    #------------------查找疫苗信息-----------------------
        Add.selectV()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85

三、需求分析

1、设计背景:

自2019年至今,新冠肺炎肆虐,其具有大流行特征,对我们的日常生活带来了严重的影响。幸运的是,新冠疫苗很快被研究出来。如今,疫苗需要接种三次,本小组以此为出发点构思,目标设计“疫苗接种数据库”,存储相关人员接种第1/2/3剂疫苗的相关信息以基于增、删、改、查基本功能下的适当延伸拓展。更便利疫情管控工作,共筑安全社会。

2、设计目的:

自上世纪90年代国家开展免疫计划以来,越来越多的疫苗被纳入国家免费计划中,主要目的在于提高居民免疫力,防止居民感染传染病。疫苗接种工作量、接种信息量巨大,若通过传统的人工管理方式来记录相关信息,会出现出错率高、查询困难、更新迟缓等相关操作不便的情况,且会耗费大量的人力、物力与财力。因此我们结合所学编程与数据库课程,以此出发,设计疫苗接种数据库,更有效、便捷的协助疫苗接种的工作开展。

3、数据库相关信息

共四张表。《接种人员》、《生产厂家》、《疫苗》、《接种信息》四张表。
(1)、《接种人员》表的数据项:身份证号,姓名,生日,性别,接种人联系电话,家庭住址,不良反应。
(2)、《生产企业表》表的数据项:厂家编号,疫苗厂家,厂家地址,厂家联系电话。
(3)、《疫苗》表的数据项:疫苗编号,疫苗品种,疫苗厂家,厂家编号,生产日期,过期时间。
(4)、《接种信息》表的数据项:接种编号,疫苗编号,剂次,疫苗品种,姓名,身份证号,接种时间,接种单位。

4、三次主要的阶段

(1)、确定选题:成果有《疫苗接种数据库课程设计》、《疫苗接种课程设计-数据表》、《疫苗接种课程设计-收集资料》。
(2)、需求分析:成果有《数据项清单》、《数据结构清单》、《局部数据清单》、《文档清单》、E-R图以及确定编程实现数据库所选语言为:Python+MySql。
(3)、编码分工:明确了各小组成员的编码分工。

四、概念结构设计

请添加图片描述

五、逻辑结构设计

请添加图片描述

六、物理结构设计

请添加图片描述

七、数据库实施

1、数据库设计语言选择

Python,MySQL。
Python连接数据库教程:python连接数据库(保姆式服务,一口一口喂啊歪)

2、创建数据库以及导入数据

四张表的csv文件直接导入

八、数据库备份(直接在建立的数据库运行如下代码,表会直接导入)

-- MySQL dump 10.13  Distrib 8.0.24, for Win64 (x86_64)
--
-- Host: localhost    Database: 疫苗接种数据库
-- ------------------------------------------------------
-- Server version	8.0.24
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
 
--
-- Table structure for table `接种人员`
--
 
DROP TABLE IF EXISTS `接种人员`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `接种人员` (
  `身份证号` char(18) NOT NULL,
  `姓名` varchar(20) DEFAULT NULL,
  `生日` date DEFAULT NULL,
  `性别` char(2) DEFAULT NULL,
  `接种人联系电话` varchar(11) DEFAULT NULL,
  `家庭住址` varchar(80) DEFAULT NULL,
  `不良反应` tinyint DEFAULT NULL,
  PRIMARY KEY (`身份证号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `接种人员`
--
 
LOCK TABLES `接种人员` WRITE;
/*!40000 ALTER TABLE `接种人员` DISABLE KEYS */;
INSERT INTO `接种人员` VALUES ('100001','张亮','2000-02-01','男','1234567','幸福路一号',0),('100002','王五','2000-02-25','女','1234568','花园路二号',0),('100003','干将','2002-03-04','女','1234569','开心路四号',1),('100004','源氏','1960-05-03','男','1234570','快乐路三号',0),('100005','亚瑟','1962-01-01','男','1234571','开心路六号',0),('100006','王泽泽','1949-10-01','女','1234572','快乐路五号',0),('100007','李坤坤','1980-10-02','男','1234573','开心路七号',0),('100008','冯明明','1990-02-01','女','1234574','幸福路十一号',1),('100009','熊晨晨','1991-03-05','男','1234575','快乐路二十五号',0),('100010','干成成','2001-02-03','女','1234576','开心路三号',0);
/*!40000 ALTER TABLE `接种人员` ENABLE KEYS */;
UNLOCK TABLES;
 
--
-- Table structure for table `接种信息`
--
 
DROP TABLE IF EXISTS `接种信息`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `接种信息` (
  `接种编号` char(20) NOT NULL,
  `疫苗编号` varchar(10) DEFAULT NULL,
  `剂次` int DEFAULT NULL,
  `疫苗品种` varchar(40) DEFAULT NULL,
  `姓名` varchar(20) DEFAULT NULL,
  `身份证号` char(18) DEFAULT NULL,
  `接种时间` datetime DEFAULT NULL,
  `接种单位` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`接种编号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `接种信息`
--
 
LOCK TABLES `接种信息` WRITE;
/*!40000 ALTER TABLE `接种信息` DISABLE KEYS */;
INSERT INTO `接种信息` VALUES ('400001','200001',1,'HZAU','王泽泽','100006','2021-01-01 00:00:00','华农校医院'),('400002','200002',1,'HZAU','李坤坤','100007','2021-01-05 00:00:00','华农校医院'),('400003','200003',1,'HZAU','冯明明','100008','2021-03-07 00:00:00','华农校医院'),('400004','200004',1,'Tsinghua','熊晨晨','100009','2021-07-20 00:00:00','华农校医院'),('400005','200005',1,'Tsinghua','干成成','100010','2021-05-21 00:00:00','华农校医院'),('400006','200006',2,'Tsinghua','王泽泽','100006','2021-02-01 00:00:00','华农校医院'),('400007','200007',2,'Tsinghua','李坤坤','100007','2021-02-07 00:00:00','华农校医院'),('400008','200008',2,'WHU','熊晨晨','100009','2021-08-20 00:00:00','华农校医院'),('400009','200009',3,'WHU','李坤坤','100007','2021-03-14 00:00:00','华农校医院'),('400010','200010',3,'WHU','王泽泽','100006','2021-03-01 00:00:00','华农校医院');
/*!40000 ALTER TABLE `接种信息` ENABLE KEYS */;
UNLOCK TABLES;
 
--
-- Table structure for table `生产企业`
--
 
DROP TABLE IF EXISTS `生产企业`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `生产企业` (
  `厂家编号` varchar(10) NOT NULL,
  `厂家名称` varchar(40) DEFAULT NULL,
  `厂家地址` varchar(80) DEFAULT NULL,
  `厂家联系电话` varchar(11) DEFAULT NULL,
  PRIMARY KEY (`厂家编号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `生产企业`
--
 
LOCK TABLES `生产企业` WRITE;
/*!40000 ALTER TABLE `生产企业` DISABLE KEYS */;
INSERT INTO `生产企业` VALUES ('300001','一教有限公司','华农荟园','987654321'),('300002','二教有限公司','华农桃园','987654322'),('300003','三教有限公司','华农桃园','987654323');
/*!40000 ALTER TABLE `生产企业` ENABLE KEYS */;
UNLOCK TABLES;
 
--
-- Table structure for table `疫苗`
--
 
DROP TABLE IF EXISTS `疫苗`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `疫苗` (
  `疫苗编号` varchar(10) NOT NULL,
  `疫苗品种` varchar(40) DEFAULT NULL,
  `疫苗厂家` varchar(40) DEFAULT NULL,
  `厂家编号` varchar(10) DEFAULT NULL,
  `生产日期` date DEFAULT NULL,
  `过期时间` date DEFAULT NULL,
  PRIMARY KEY (`疫苗编号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `疫苗`
--
 
LOCK TABLES `疫苗` WRITE;
/*!40000 ALTER TABLE `疫苗` DISABLE KEYS */;
INSERT INTO `疫苗` VALUES ('200001','HZAU','三教有限公司','300003','2020-01-01','2023-01-01'),('200002','HZAU','一教有限公司','300001','2020-02-02','2023-02-02'),('200003','HZAU','二教有限公司','300002','2020-03-05','2023-03-06'),('200004','Tsinghua','一教有限公司','300001','2020-04-06','2023-04-07'),('200005','Tsinghua','二教有限公司','300002','2020-05-08','2023-05-09'),('200006','Tsinghua','一教有限公司','300001','2020-06-09','2023-06-10'),('200007','Tsinghua','二教有限公司','300002','2020-07-11','2023-07-12'),('200008','WHU','三教有限公司','300003','2020-08-12','2023-08-13'),('200009','WHU','二教有限公司','300002','2020-09-13','2023-09-14'),('200010','WHU','一教有限公司','300001','2020-10-15','2023-10-16');
/*!40000 ALTER TABLE `疫苗` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
-- Dump completed on 2021-12-07 17:19:08
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140

九、运行示例

1、四张表导入结果

(1)、《接种人员》

请添加图片描述

(2)、《接种信息》

请添加图片描述

(3)、《生产企业》

请添加图片描述

(4)、《疫苗》

请添加图片描述

2、使用实例

(1)、打开五个Python文件:

请添加图片描述

(2)、运行“疫苗接种数据库.py”文件

请添加图片描述
注:此数据库为自己新建,账户密码为个人搭环境时所设

(3)运行实例之“增”

含对主关键字“身份证号”重复的判断和“生日”日期的格式合理判断。请添加图片描述
结果:可见新加的“大大怪”信息已成功插入。
请添加图片描述

(4)运行实例之“删”

请添加图片描述
结果:编号为400001的记录被成功删掉
请添加图片描述

(5)运行实例之“查”

请添加图片描述

(5)运行实例之“改”

请添加图片描述
请添加图片描述
结果:疫苗编号为20001的厂家编号和厂家名称都已随之改变。

十、总结

  • 此次疫苗数据库课程设计,我们通过小组讨论与合作,实现了预期的对于四张表的增、删、查、改的具体功能以及适当延伸。
  • 我们经过了不止十次的线上线下讨论,其中的三次重要阶段为确定选题、需求分析、编码分工。我们分别实现了确定所选题目;明确表的个数,表中数据个数,表间联系,E-R图设计等;编码实现,运行与完善。由于对各表的功能操作较多,含32个SQL语句功能,经过我们上百次的试运行与调试,发现bug与修复优化后,经历了六个版本的更迭,我们终于有了较为完善的最终版本。
  • 在此次疫苗数据库课程设计中,我们再次复习了课堂上所学习的理论知识,在实验课程外再次实际操作,对数据库有了更深入的理解,同时亲身贯穿数据库的设计,让我们对课本第七章《数据库设计》章节有了亲身操作的体会以及明确数据库该如何设计,数据库设计的基本步骤,数据库设计可能会出现的问题等。
  • 另外,此次数据库课程设计是以小组讨论形式展开。在讨论中,我们彼此交流看法,发现了许多不同与自己所想新的逻辑与看法,在交流讨论中,我们得到了更为客观,更贴合实际的结论与决策。此次课程设计,更进一步锻炼了我们的小组合作解决问题的能力。
  • 其次,最初我们课程设计的立意就是在此次设计中,我们能够更直观、真切的理解数据库,将在课堂、课本所学理论知识应用于实践,以及更熟练对于增、删、查、改等SQL语句的编码,整个数据库设计较为基础。相对与此,我们的结合实际与上层拓展延伸还需完善,在我们已实现此次基础的课程设计前提下,其他高层应用以及结合实际的功能设计与实现都会容易许多。
  • 最后,在此次疫苗数据库课程设置中,我们对数据库有了更为清晰的认识,尤其是需求分析阶段对于“数据”与“数据的处理”。我们通过编程实现了预期的基本功能及适当延伸,再次提高了编码能力。另外,此次疫苗数据库课程设计是以小组合作形式展开,在小组讨论中,我们求同存异,在讨论交流中选出更为客观、实际的结论与决策,再进一步的锻炼了我们的合作解决问题的能力。我们体会到了发现问题,解决问题的乐趣,在之后的计算机科学与技术之路上,我们会更加认真积极,“ 码 ”出属于自己的一片天地。

十一、结束语(补充与完善,建议观看)

页面补充一、

此课程设计仅在终端中运行,以在每次输出结果后调用ChangePrintColor()来改变分块颜色使结果更好呈现,无高档的前端后端页面,有学过HTML、CSS、JavaScript及前后端知识可结合设计使用。

内容补充二、

设计体系中“实体完整性”、“参照完整性”还需完善,即改变一个信息与之对应的信息也会改变(此代码中是写了两个SQL语句)。

内容补充三、

此课程设计立意为:更深入的理解“数据库该如何设计,数据库设计的基本步骤,数据库设计可能会出现的问题,SQL语句的掌握练习”,为基础的底层设计学习,未结合生活实际。(32个SQL语句功能多有冗余)
在此提出可结合生活实际的功能:
(1)、查询已接种n次疫苗的人员名单。
(2)、查询第n次仍未接种的人员名单等。

使用补充四、

此博文与>Python连接数据库教程:python连接数据库(保姆式服务,一口一口喂啊歪)结合使用更佳。

感谢您的浏览支持,一起加油!
请添加图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/173079
推荐阅读
相关标签
  

闽ICP备14008679号