医院信息管理系统(Python与MySQL数据库的连接与相关增删改查操作)

2023-05-16

 

    1. 题目意义

医院信息管理是一项琐碎、复杂而又十分细致的工作,这关系到医院体系能否运行起来这一关乎国民健康水平的重大问题。我们只有利用好了医院中每个医生、护士的各项资源,才能使得医院系统能够有序而条理的进行,更好的安排有限的医生和护士资源,安排患者就诊。同时,在设计医院信息管理系统的同时也兼顾了药品的管理,使得我们在安排各项工作的时候能够更加的清晰明了,其可以与药房管理系统和挂号管理系统相连接,更好的实现医院的管理功能

2.数据输入功能

1>科室实体。包括科室编号,科室名称,科室地址,科室电话…

2>医生实体。包括医生编号,医生姓名,职务,性别,年龄…

3>病房实体。包括房间号,房间地址…

4>患者实体,包括患者编号,患者名,性别,年龄…

5>护士实体。包括护士编号,护士姓名,性别,年龄…

6>药品实体。包括药品编号,药品名,供应商,库存,价格…

7>病房从属科室关系。

8>科室下属医生关系。

9>患者的主治医生关系。包括疾病…

10>护士护理患者关系。包括护理内容,时间…

11>患者入住病房关系。包括入住时间,预计出院时间…

12>患者使用药品关系。包括数量…

  1. 查询和统计功能:根据患者查询其主治医生和用药等,并对其花费进行统计。

2概念结构设计

根据需求分析结构,构建E-R图,如图2-1所示。

3逻辑结构设计

3.1关系模型设计

1.医生(医生编号,姓名,性别,年龄,职务,科室编号)

2.科室(科室编号,科室名称,科室地址,科室电话)

3.病房(病房编号,病房地址,所属部门号)

4.患者(患者编号,姓名,性别,年龄,疾病,主治医生编号,所住病号编号,住院时间,预计出院时间)

5.护士(护士编号,姓名,性别,年龄)

6.药品(药品编号,药品名称,药品厂家,药品库存,药品售价)

7.护理记录表(患者编号,护士编号,护理内容,护理时间)

8.用药记录表(患者编号,药品编号,用药数量)

4数据库的实现

4.1建表代码

1. 医生表的创建:

create table doctor
(
  dno char(3) primary key,
  dname char(20),
  duty char(20),
  dsex bit(1),
  dage int check (page>=0 and page <=150),
  dpno char(1),
  foreign key (dpno) references department(dpno)
);

插入数据:

insert into doctor values ("101","李小明","中级医师",1,18,"1");

2. 部门表的创建:

create table department
(
  dpname char(10) not null unique,
  dpno char(1) primary key,
  dpadr char(20),
  dptel char(20)
);

插入数据:

insert into department values("内科","1","一号楼514","04512340987");

3. 病房表的创建:

 create table room
 (
   rno char(10) primary key ,
   radr char(20) unique,
   dpno char(5),
  foreign key (dpno) references department(dpno)
 );

 插入数据:

insert into room values ("1101","一号楼101","1"),;

 

4. 患者表的创建:

create table patient
(
  pno char(20) primary key,
  pname char(20) not null,
  psex bit(1),
  page int check (page>=0 and page <=150),
  dno char(3),
  rno char(10),
  illness char(20),
  startdate date,
  predictenddate date,
  foreign key (dno) references doctor(dno),
  foreign key (rno) references room(rno)
);

插入数据:

insert into patient values 

 ("0001","赵一",1,20,"101","1101","左脚踝粉碎性骨折","2018-12-20","2019-01-28");

 

5. 护士表的创建:

create table nurse
(
  nno char(2) primary key ,
  nname char(10) unique ,
  nsex bit(1),
  nage int
);

插入数据:

insert into nurse values ("01","黎晓蓓",0,21);

 

6. 药品表的创建:

create table drug
(
  dgno char(4) primary key ,
  dgname char(20),
  dgpro char(20),
  dgnum int check(dgnum>=0),
  dgprice int check(dgprice>=0)
);

插入数据:

insert into drug values  ("0001","注射用苄星青霉素","哈尔滨制药厂",123,24);

 

7. 护理记录表的创建:

create table PN
(
  pno char(20),
  nno char(2),
  content char(20),
  time datetime,
  foreign key (pno) references patient(pno),
  foreign key (nno) references nurse(nno)
);

插入数据:

insert into PN values ("0001","01","康复治疗1","2018-12-22 13:12:11");

 

8. 用药记录表的创建:

create table PD
(
  dgno char(4),
  pno char(4),
  num int check(num>=0),
  foreign key (dgno) references drug(dgno),
  foreign key (pno)  references patient(pno),
  primary key (dgno,pno)
);

插入数据:

insert into PD values     ("0001","0001",1);

 

4.2数据操纵代码

数据控制部分采用Python连接MySQL数据库来操纵数据,其主要步骤为:

1. 增:

1>增加科室

sql = "INSERT INTO department (dpname, dpno, dpadr,dptel) VALUES ('%s','%s','%s','%s' )"

输入科室的编号,地址,科室名称,科室电话进行匹配SQL语句。

2>增加医生

sql = "INSERT INTO doctor (dno, dname, duty,dsex,dage,dpno) VALUES ('%s','%s','%s',%d,%d,'%s' )"

输入医生的编号,姓名,性别,职务,年龄和所属部门编号进行匹配SQL语句。

3>增加病房

sql = "INSERT INTO room (rno, radr, dpno) VALUES ('%s','%s','%s' )"

输入病房的编号,病房地址和所属部门编号进行匹配SQL语句。

4>增加患者

sql = "INSERT INTO patient(pno ,pname,psex, page, dno, rno,illness, startdate, predictenddate) VALUES ('%s','%s',%d,%d,'%s','%s','%s','%s','%s')"

输入患者的编号,姓名,性别,年龄疾病,主治医生编号,入住时间,预计出院时间和所属部门编号进行匹配SQL语句。

5>增加护士

sql = "INSERT INTO nurse (nno, nname,nsex,nage) VALUES ('%s','%s',%d,%d)"

输入护士的编号,姓名,性别和年龄进行匹配SQL语句。

6>增加药品

sql = "INSERT INTO drug (dgno, dgname,dgpro,dgnum,dgprice) VALUES ('%s','%s','%s',%d,%d)"

输入药品的编号,名称,产地,库存和价格进行匹配SQL语句。

7>增加用药记录

sql = "INSERT INTO PD (dgno, pno, num) VALUES ('%s','%s',%d)"

输入药品的编号,患者的编号和用药数目进行匹配SQL语句。

8>增加护理记录

sql = "INSERT INTO PN (pno, nno, content, time) VALUES ('%s','%s','%s','%s')"

输入患者编号,护士编号,护理内容,护理时间来进行匹配SQL语句。

 

2. 删:因为部门,医生及病房的删除过程比较复杂,故不予考虑。

1> 删除患者

输入患者编号,删除其护理记录,用药记录和患者记录。

sql = "DELETE FROM PN  WHERE pno = '%s'"

删除护理记录

sql = "DELETE FROM PD  WHERE pno = '%s' "

删除用药记录

sql = "DELETE FROM patient  WHERE pno = '%s'"

删除患者记录

2> 删除护士

输入护士编号,删除其护理记录,和护士记录。

sql = "DELETE FROM PN  WHERE nno = '%s'" 

删除护理记录

sql = "DELETE FROM nurse  WHERE nno = '%s' "

删除护士记录

3> 删除药品

输入药品编号,删除其用药记录和药品记录。

sql = "DELETE FROM PD  WHERE dgno = '%s'"

删除用药记录

sql = "DELETE FROM drug  WHERE dgno = '%s' "

删除药品记录

4> 删除护理记录

输入护士编号和患者编号,删除护理记录。

sql = "DELETE FROM PN  WHERE pno = '%s' and nno = '%s'"

5> 删除用药记录

输入药品编号和患者编号,删除用药记录。

sql = "DELETE FROM PD  WHERE pno = '%s' and dgno = '%s'"

 

3. 改:

1> 修改药品库存

输入药品编号来修改药品库存。

sql = "UPDATE drug SET  dgnum = %d WHERE dgno = '%s' "

  1. 修改药品售价

输入药品编号来修改药品售价。

sql = "UPDATE drug SET  dgprice = %d WHERE dgno = '%s' "

  1. 修改患者使用药品数量

输入药品编号和患者编号来修改患者使用药品数量。

sql = "UPDATE PD SET  num = %d WHERE dgno = '%s' and pno = '%s' "

  1. 修改患者预计出院时间

输入患者编号来修改预计出院时间。

sql = "UPDATE patient SET predictenddate = '%s' WHERE pno = '%s' "

  1. 修改患者房间号码

输入患者编号来修改患者房间号码。

sql = "UPDATE patient SET rno = '%s' WHERE pno = '%s' "

 

4. 查:这里的查询都是用的存储过程写的,故在这里直接写存储过程及在MySQL环境下的call调用过程。

1> 查询医生姓名及部门

create  procedure sl_department(in ddno char(4))
begin
  select dname 医生姓名,dpname 科室名
    from department,doctor
      where department.dpno = doctor.dpno
        and doctor.dno = ddno;
end;
call sl_department("302");

2> 查询科室的每个患者及其主治医师

create procedure sl_department_patientname(in ddpno char(1))
  begin
    select pname 患者名,patient.pno 患者编号,dname 主治医师姓名,doctor.dno 主治医师编号
      from patient,doctor,department
        where patient.dno = doctor.dno
          and department.dpno = doctor.dpno
            and ddpno = department.dpno ;
  end;
call sl_department_patientname("1");

3> 查询科室就诊人数

create procedure sl_department_patientnum(in ddpno char(1))
  begin
    select count(*) 科室患者数from patient,doctor,department
        where patient.dno = doctor.dno
          and department.dpno = doctor.dpno
            and ddpno = department.dpno ;
  end;
call sl_department_patientnum("2");

4> 查询患者的主治医生及其职务科室

create procedure sl_doctor(in ppno char(4))
  begin
    select doctor.dname 医生姓名,doctor.duty 职务,dpname 科室名from doctor,department
        where department.dpno = doctor.dpno
          and dno in
              (select dno from patient
               where ppno = pno);
  end;
call sl_doctor("0001");

5> 查询医生主治的患者数量 

create procedure sl_doctor_patientnum(in ddno char(4))
  begin
    select count(*) 医生主治的患者数量from patient
      where patient.dno = ddno;
  end;
call sl_doctor_patientnum("102");

6> 查询患者用药情况

create procedure sl_drug_patient(in ppno char(4))
  begin
    select pname 患者姓名,illness 病症,dgname 药物名,num 数量
      from patient,drug,PD
        where patient.pno = pd.pno
          and drug.dgno = pd.dgno
            and pd.pno = ppno;
  end;
call sl_drug_patient("0001");

7> 查询患者应缴金额

create procedure sl_money(in ppno char(4))
  begin
    select sum(num * dgprice) 应缴金额
      from pd,patient,drug
        where pd.pno = patient.pno
          and drug.dgno = pd.dgno
            and patient.pno = ppno;
  end;
call sl_money("0023");

8> 查询科室的病房

create procedure sl_room(in ddpno char(1))
  begin
   select dpname 科室名,rno 病房编号,radr 病房地址
    from room,department
      where ddpno = room.dpno
       and room.dpno = department.dpno;
  end;
call sl_room("1");

9> 根据护士编号查询护士姓名

create procedure sl_nurse(in nnno char(2))
  begin
    select nno 护士编号,nname 护士姓名from nurse
        where nno = nnno;
  end;
call sl_nurse("05");

10> 查询患者进行护理的时间,内容及负责护士

create procedure sl_patient_nurse(in ppno char(4))
  begin
    select pname,illness,content,time,nname
    from nurse,patient,pn
        where nurse.nno = pn.nno
        and patient.pno = pn.pno
        and patient.pno = ppno;
  end;
call sl_patient_nurse("0002");

11> 以患者编号查询室友 

create procedure sl_patient_one_room(in ppno char(4))
  begin
    select A.pname,A.pno from patient A
        where rno in
              (select B.rno from patient B
              where B.pno=ppno);
  end;
call sl_patient_one_room("0002");

12> 查询同一病房的患者

create procedure sl_room_patient(in rrno char(4))
  begin
    select pno,pname from patient
        where rno = rrno;
  end;
call sl_room_patient("1407");

4.3用Python对数据进行操纵

1.增

向医生表中加入一个工号为104,姓名为李来文的医生,再查询是否增加了该条记录。

图4.13:增加界面

2.改

先查询1号患者所要支付的钱,再将药品价格上调后,查询1号患者所需支付的钱,不同则为修改了。

图4.14:修改界面

如上图:修改前为1883,修改后为1889,说明数据发生了修改。

 

3.删

先查询8号护士是否存在,看到存在后将其删了,再次查询看8号护士是否存在。

结果如下:

图4.15:删除界面

4.查

图4.16:查询界面

 

 

 

 

完整的python代码如下:

 

# coding=utf-8
"""
***********************help document****************************************
Usage:
    this is a simple hospital system,now is simple
    when start the programming,you can do following operations
    enter 'a' is to insert data into database
    enter 'b' is to display all data in database
    enter 'c' is to query the specify info in database
    enter 'h' is to see this help dacument
    enter 'd' is to delete someone info
    enter nothing is to do nothing,you can enter again
    simple help document is: "a--insert/b--display/c--query/h--help/d--delete/''--default"
    Also, you can use [enter] to end this program
Example:
    please enter the OPcode: a  then [enter]
*****************************************************************************

"""

#打印帮助文档
def help_document():
    print(__doc__)

import pymysql.cursors
import datetime
# 连接数据库

connect = pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='12345678',
db='hospital',
charset='utf8'
)
# 获取游标
cursor = connect.cursor()

# 实现switch-case语句
class switch(object):
    def __init__(self, value):
        self.value = value
        self.fall = False

    def __iter__(self):
        """Return the match method once, then stop"""
        yield self.match
        raise StopIteration

    def match(self, *args):
        """Indicate whether or not to enter a case suite"""
        if self.fall or not args:
            return True
        elif self.value in args:  # changed for v1.5, see below
            self.fall = True
            return True
        else:
            return False

def insert():
    # 插入数据
    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
    temp = input("输入你要插入的表格")
    while temp:
        for case in switch(temp):
            if case('1'):
                try:
                    sql = "INSERT INTO department (dpname, dpno, dpadr,dptel) VALUES ('%s','%s','%s','%s' )"
                    dpname = input("部门名称")
                    dpno   = input("部门编号")
                    dpno = (1-len(dpno))*'0'+dpno;
                    dpadr  = input("部门地址")
                    dptel  = input("部门电话")
                    data = (dpname, dpno, dpadr,dptel)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件,不能插入该数据!")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('2'):
                try:
                    sql = "INSERT INTO doctor (dno, dname, duty,dsex,dage,dpno) VALUES ('%s','%s','%s',%d,%d,'%s' )"
                    dno = input("医生工号:")
                    dno = (3 - len(dno)) * '0' + dno;
                    dname = input("医生姓名:")
                    duty = input("职务:")
                    dsex = int(input("性别:"))
                    dage = int(input("年龄:"))
                    dpno = input("部门编号:")
                    data = (dno, dname, duty, dsex, dage, dpno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件,不能插入该数据!")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('3'):
                try:
                    sql = "INSERT INTO room (rno, radr, dpno) VALUES ('%s','%s','%s' )"
                    rno = input("病房编号:")
                    rno = (4 - len(rno)) * '0' + rno;
                    radr   = input("病房地址")
                    dpno  = input("所属部门编号:")
                    dpno = (1 - len(dpno)) * '0' + dpno;
                    data = (rno, radr, dpno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件,不能插入该数据!")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('4'):
                try:
                    sql = "INSERT INTO patient(pno ,pname,psex, page, dno, rno,illness, startdate, predictenddate) VALUES ('%s','%s',%d,%d,'%s','%s','%s','%s','%s')"
                    pno = input("患者编号:")
                    pno = (4 - len(pno)) * '0' + pno;
                    pname = input("患者姓名:")
                    psex = int(input("性别:"))
                    page = int(input("年龄:"))
                    illness = input("疾病种类:")
                    dno = input("主治医师编号:")
                    dno = (4 - len(dno)) * '0' + dno;
                    rno = input("所住房间号:")
                    startdate = datetime.datetime.now().strftime("%Y-%m-%d")
                    print("输入预计出院时间")
                    nian = input("年:")
                    yue = input("月:")
                    ri = input("日:")
                    predictenddate = nian + "-" + yue + "-" + ri
                    data = (pno, pname, psex, page, dno, rno, illness, startdate, predictenddate)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件,不能插入该数据!")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('5'):
                try:
                    sql = "INSERT INTO nurse (nno, nname,nsex,nage) VALUES ('%s','%s',%d,%d)"
                    nno = input("护士工号:")
                    nno = (2 - len(nno)) * '0' + nno;
                    nname = input("护士姓名:")
                    nsex = int(input("性别:"))
                    nage = int(input("年龄:"))
                    data = (nno, nname,nsex,nage)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件,不能插入该数据!")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('6'):
                try:
                    sql = "INSERT INTO drug (dgno, dgname,dgpro,dgnum,dgprice) VALUES ('%s','%s','%s',%d,%d)"
                    dgno = input("药品编号:")
                    dgno = (4-len(dgno))*'0'+dgno;
                    dgname = input("药品名称:")
                    dgpro = input("厂家:")
                    dgnum  = int(input("库存量:"))
                    dgprice = int(input("价格:"))
                    data = (dgno, dgname,dgpro,dgnum,dgprice)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件,不能插入该数据!")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('7'):
                try:
                    sql = "INSERT INTO PD (dgno, pno, num) VALUES ('%s','%s',%d)"
                    dgno = input("药品编号:")
                    dgno = (4 - len(dgno)) * '0' + dgno;
                    pno = input("患者编号:")
                    pno = (4 - len(pno)) * '0' + pno;
                    print(pno)
                    print(dgno)
                    num  = int(input("用药数量:"))
                    data = (dgno, pno, num)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件,不能插入该数据!")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('8'):
                try:
                    sql = "INSERT INTO PN (pno, nno, content, time) VALUES ('%s','%s','%s','%s')"
                    pno = input("患者编号:")
                    nno = input("护士工号:")
                    pno = (4 - len(pno)) * '0' + pno;
                    nno = (2 - len(nno)) * '0' + nno;
                    content = input("护理内容:")
                    time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                    data = (pno, nno, content, time)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件,不能插入该数据!")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case():
                print('无法识别操作码')
                print()
                print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                temp = input("输入你要插入的表格")
                break

def update():
    # 修改数据
    print("1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
    temp = input("输入你要修改的内容:")
    while temp:
        for case in switch(temp):
            if case('1'):
                try:
                    sql = "UPDATE drug SET  dgnum = %d WHERE dgno = '%s' "
                    dgno = input("欲修改的药品编码:")
                    dgno = (4 - len(dgno)) * '0' + dgno
                    dgnum = int(input("修改后的库存:"))
                    data = (dgnum, dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print("1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                except:
                    print("存在约束条件,不能修改该数据!")
                    print()
                    print("1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                break
            if case('2'):
                try:
                    sql = "UPDATE drug SET  dgprice = %d WHERE dgno = '%s' "
                    dgno = input("欲修改的药品编码:")
                    dgno = (4-len(dgno))*'0'+dgno
                    dgprice = int(input("修改后的药品价格:"))
                    data = (dgprice, dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                except:
                    print("存在约束条件,不能修改该数据!")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                break
            if case('3'):
                try:
                    sql = "UPDATE PD SET  num = %d WHERE dgno = '%s' and pno = '%s' "
                    dgno = input("欲修改的药品编码:")
                    dgno = (4 - len(dgno)) * '0' + dgno
                    pno = input("欲修改的患者编码:")
                    pno = (4 - len(pno)) * '0' + pno
                    num = int(input("修改后的用药数量:"))
                    data = (num, dgno, pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                except:
                    print("存在约束条件,不能修改该数据!")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                break
            if case('4'):
                try:
                    sql = "UPDATE patient SET predictenddate = '%s'  WHERE pno = '%s' "
                    pno = input("欲修改的患者编码:")
                    pno = (4 - len(pno)) * '0' + pno
                    print("输入预计出院时间")
                    nian = input("年:")
                    yue = input("月:")
                    ri = input("日:")
                    predictenddate = nian + "-" + yue + "-" + ri
                    data = (predictenddate, pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                except:
                    print("存在约束条件,不能修改该数据!")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                break
            if case('5'):
                try:
                    sql = "UPDATE patient SET rno = '%s'  WHERE pno = '%s' "
                    pno = input("欲修改的患者编码:")
                    pno = (4 - len(pno)) * '0' + pno
                    rno = input("输入修改后的房间编号:")
                    rno = (4 - len(rno)) * '0' + rno
                    data = (rno, pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                except:
                    print("存在约束条件,不能修改该数据!")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                break
            if case('6'):
                try:
                    sql = "UPDATE doctor SET duty = '%s'  WHERE pno = '%s' "
                    pno = input("欲修改的医生编码:")
                    pno = (3 - len(pno)) * '0' + pno
                    duty = input("修改后的医生职务:")
                    data = (duty, pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                except:
                    print("存在约束条件,不能修改该数据!")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容:")
                break
            if case():
                print('无法识别操作码')
                print()
                print("1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                temp = input("输入你要修改的内容:")
                break

def select():
    # 查询数据
    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
    print("不输入直接回车enter结束查询///--default")
    temp = input("输入你要查询的内容:")
    while temp:
        for case in switch(temp):
            if case('1'):
                try:
                    sql = "call sl_department('%s')"
                    dno = input("医生编号:")
                    dno = (3 - len(dno))*'0'+dno
                    data = (dno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("医生姓名:%s\t科室名:%s" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('2'):
                try:
                    sql = "call sl_department_patientname('%c')"
                    dpno = input("科室编号:")
                    data = (dpno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("患者名:%s\t患者编号:%s\t主治医生姓名:%s\t主治医生编号:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('3'):
                try:
                    sql = "call sl_department_patientnum('%c')"
                    dpno = input("科室编号:")
                    data = (dpno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("科室患者数:%d\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('4'):
                try:
                    sql = "call sl_doctor('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("医生姓名:%s\t职务:%s\t科室名:%s" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('5'):
                try:
                    sql = "call sl_doctor_patientnum('%s')"
                    dno = input("医生编号:")
                    dno = (3 - len(dno))*'0'+dno
                    data = (dno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("医生主治的患者数量:%d\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('6'):
                try:
                    sql = "call sl_drug_patient('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("患者姓名:%s\t疾病:%s\t药名:%s\t数量:%d" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('7'):
                try:
                    sql = "call sl_money('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print(" 应缴金额:%d" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('8'):
                try:
                    sql = "call sl_room('%c')"
                    dpno = input("科室编号:")
                    data = (dpno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("科室名:%s\t病房编号:%s\t病房地址:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('9'):
                try:
                    sql = "call sl_nurse('%s')"
                    nno = input("护士编号:")
                    nno = (2-len(nno))*'0'+nno
                    data = (nno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("护士编号:%s\t护士姓名:%s" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('10'):
                try:
                    sql = "call sl_patient_nurse('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print(" 患者名:%s\t病症:%s\t护理内容:%s\t护理时间:%s\t护士姓名:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('11'):
                try:
                    sql = "call sl_patient_one_room('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print(" 室友名:%s\t编号:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break

            if case('12'):
                try:
                    sql = "call sl_room_patient('%s')"
                    rno = input("房间编号:")
                    rno = (4-len(rno))*'0'+rno
                    data = (rno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("患者编号:%s\t 姓名:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                except:
                    print("存在约束条件,不能查询该数据!")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容:")
                break
            if case():  # default
                print('please enter the OPcode...')
                print()
                print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                print("10--查询患者进行护理的时间,内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                print("不输入直接回车enter结束查询///--default")
                temp = input("输入你要查询的内容:")
                break

def delete():
    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
    temp = input("输入你要删除的内容:")
    while temp:
        for case in switch(temp):
            if case('1'):
                try:
                    #删除数据
                    sql = "DELETE FROM PN  WHERE pno = '%s'"
                    pno = input("输入欲删除病人编号:")
                    print("删除护理记录!")
                    pno = (4 - len(pno)) * '0' + pno
                    data = (pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')

                    print("删除用药记录!")
                    sql = "DELETE FROM PD  WHERE pno = '%s' "
                    data = (pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')

                    print("删除患者记录!")
                    sql = "DELETE FROM patient  WHERE pno = '%s'"
                    data = (pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                except:
                    print("存在约束条件,不能删除该数据!")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                break

            if case('2'):
                try:
                    #删除数据
                    sql = "DELETE FROM PN  WHERE nno = '%s'"
                    nno = input("输入欲删除护士编号:")
                    print("删除护理记录!")
                    nno = (2 - len(nno)) * '0' + nno
                    data = (nno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')

                    print("删除护士记录!")
                    sql = "DELETE FROM nurse  WHERE nno = '%s' "
                    data = (nno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                except:
                    print("存在约束条件,不能删除该数据!")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                break

            if case('3'):
                try:
                    #删除数据
                    sql = "DELETE FROM PD  WHERE dgno = '%s'"
                    dgno = input("输入欲删除药品编号:")
                    print("删除用药记录!")
                    dgno = (4 - len(dgno)) * '0' + dgno
                    data = (dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')

                    print("删除药品记录!")
                    sql = "DELETE FROM drug  WHERE dgno = '%s' "
                    data = (dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                except:
                    print("存在约束条件,不能删除该数据!")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                break
            if case('4'):
                try:
                    #删除数据
                    sql = "DELETE FROM PN  WHERE pno = '%s' and nno = '%s'"
                    pno = input("欲删除患者编号:")
                    pno = (4 - len(pno)) * '0' + pno
                    nno = input("欲删除护士编号:")
                    nno = (2 - len(nno)) * '0' + nno
                    data = (pno, nno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                except:
                    print("存在约束条件,不能删除该数据!")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                break
            if case('5'):
                try:
                    #删除数据
                    sql = "DELETE FROM PD  WHERE pno = '%s' and dgno = '%s'"
                    pno = input("欲删除患者编号:")
                    pno = (4 - len(pno)) * '0' + pno
                    dgno = input("欲删除药品编号:")
                    dgno = (4 - len(dgno)) * '0' + dgno
                    data = (pno, dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                except:
                    print("存在约束条件,不能删除该数据!")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容:")
                break

def close():
    # 关闭连接
    cursor.close()
    connect.close()

def main():
    print("a--insert/b--display/c--query/h--help/d--delete/''--default")
    user_input = input('please enter the OPcode:')
    while user_input:
        for case in switch(user_input):
            if case('a'):  # 按下'a'键
                insert()
                print("a--insert/b--display/c--query/h--help/d--delete/''--default")
                user_input = input('please enter the OPcode:')
                break
            if case('b'):  # 按下'b'键
                select()
                print("a--insert/b--display/c--query/h--help/d--delete/''--default")
                user_input = input('please enter the OPcode:')
                break
            if case("c"):  # 按下'c'键
                update()
                print("a--insert/b--display/c--query/h--help/d--delete/''--default")
                user_input = input('please enter the OPcode:')
                break
            if case("d"):  # 按下'd'键
                delete()
                print("a--insert/b--display/c--query/h--help/d--delete/''--default")
                user_input = input('please enter the OPcode:')
                break
            if case('h'):  # 按下'h'键
                help_document()
                print()
                print("a--insert/b--display/c--query/h--help/d--delete/''--default")
                user_input = input('please enter your OPcode:')
                break
            if case():  # default
                print('please enter the OPcode...')
                print("a--insert/b--display/c--query/h--help/d--delete/''--default")
                user_input = input('please enter the OPcode:')
                break
    close()

if __name__ == "__main__":
    main()

完整的SQL语句如下:

create schema hospital;
use hospital;

create table department
(
  dpname char(10) not null unique,
  dpno char(1) primary key,
  dpadr char(20),
  dptel char(20)
);
create table doctor
(
  dno char(3) primary key,
  dname char(20),
  duty char(20),
  dsex bit(1),
  dage int check (page>=0 and page <=150),
  dpno char(1),
  foreign key (dpno) references department(dpno)
);
create table room
(
  rno char(10) primary key ,
  radr char(20) unique,
  dpno char(5),
  foreign key (dpno) references department(dpno)
);
create table patient
(
  pno char(20) primary key,
  pname char(20) not null,
  psex bit(1),
  page int check (page>=0 and page <=150),
  dno char(3),
  rno char(10),
  illness char(20),
  startdate date,
  predictenddate date,
  foreign key (dno) references doctor(dno),
  foreign key (rno) references room(rno)
);
create table nurse
(
  nno char(2) primary key ,
  nname char(10) unique ,
  nsex bit(1),
  nage int
);
create table PN
(
  pno char(20),
  nno char(2),
  content char(20),
  time datetime,
  foreign key (pno) references patient(pno),
  foreign key (nno) references nurse(nno)
);
create table drug
(
  dgno char(4) primary key ,
  dgname char(20),
  dgpro char(20),
  dgnum int check(dgnum>=0),
  dgprice int check(dgprice>=0)
);
create table PD
(
  dgno char(4),
  pno char(4),
  num int check(num>=0),
  foreign key (dgno) references drug(dgno),
  foreign key (pno)  references patient(pno),
  primary key (dgno,pno)
);

insert into department values("内科","1","一号楼514","04512340987"),
                             ("外科","2","二号楼202","04514521234"),
                             ("妇科","3","一号楼421","04510987654"),
                             ("儿科","4","三号楼628","04511234567"),
                             ("神经科","5","一号楼555","04519283746"),
                             ("精神科","6","隔离所一栋01","04510987890"),
                             ("五官科","7","三号楼101","04511029281"),
                             ("放射线科","8","隔离所二栋11","04518888888"),
                             ("检验科","9","二号楼456","04518787878");
insert into doctor values ("101","李小明","中级医师",1,18,"1"),
                          ("102","赵二猫","正高级医师",1,56,"1"),
                          ("103","陈仁义","初级医师",0,20,"1"),
                          ("201","陈省","初级医师",0,21,"2"),
                          ("202","王雪清","副高级医师",0,32,"2"),
                          ("203","赵彩结","正高级医师",0,50,"2"),
                          ("301","王鹤男","中级医师",0,20,"3"),
                          ("302","王风","初级医师",0,31,"3"),
                          ("303","李文革","正高级医师",0,51,"3"),
                          ("401","钱求和","初级医师",0,24,"4"),
                          ("402","陈少杰","中级医师",1,26,"4"),
                          ("403","拉普拉斯","正高级医师",1,59,"4"),
                          ("501","赵意识","初级医师",0,31,"5"),
                          ("502","陈打野","中级医师",1,29,"5"),
                          ("503","欧上路","初级医师",1,31,"5"),
                          ("601","陈小希","初级医师",0,51,"6"),
                          ("602","陈欧皇","中级医师",1,29,"6"),
                          ("603","傅杰","副高级医师",0,46,"6"),
                          ("701","赵梦啥","初级医师",1,59,"7"),
                          ("702","王来文","正高级医师",1,32,"7"),
                          ("703","傅出","副高级医师",0,42,"7"),
                          ("801","王疯子","初级医师",0,21,"8"),
                          ("802","武曌","中级医师",1,25,"8"),
                          ("803","蔡子杰","初级医师",0,21,"8"),
                          ("901","谢好看","初级医师",0,21,"9"),
                          ("902","陈真帅","中级医师",1,20,"9"),
                          ("903","王猛","初级医师",1,21,"9");
insert into room values ("1101","一号楼101","1"),
                        ("1102","一号楼102","1"),
                        ("1103","一号楼103","1"),
                        ("2101","二号楼101","2"),
                        ("2102","二号楼102","2"),
                        ("2103","二号楼103","2"),
                        ("1401","一号楼401","3"),
                        ("1402","一号楼402","3"),
                        ("1403","一号楼403","3"),
                        ("1104","一号楼104","4"),
                        ("1105","一号楼105","5"),
                        ("1106","一号楼106","6"),
                        ("1407","一号楼407","7"),
                        ("1408","一号楼408","8"),
                        ("1409","一号楼409","9");
insert into patient values ("0001","赵一",1,20,"101","1101","左脚踝粉碎性骨折","2018-12-20","2019-01-28"),
                           ("0002","钱二",0,23,"201","2102","内出血","2018-11-22","2018-12-29"),
                           ("0003","竹三",0,19,"301","1401","妇科炎症","2018-12-22","2018-12-23"),
                           ("0004","李来武",1,6,"401","1104","多种抽动综合征","2018-11-10","2019-01-01"),
                           ("0005","王系民",1,52,"501","1105","帕金森综合征","2018-11-24","2018-12-25"),
                           ("0006","陈来文",0,54,"601","1106","强迫症","2018-12-15","2018-12-23"),
                           ("0007","代乘一",1,22,"701","1407","额骨骨髓炎","2018-12-24","2018-12-25"),
                           ("0008","高来基",0,34,"801","1408","核磁共振检测","2018-12-23","2018-12-26"),
                           ("0009","吴总会",0,43,"901","1409","艾滋病检测","2018-12-22","2018-12-27"),
                           ("0010","曹文龙",1,32,"102","1102","锁骨粉碎性骨折","2018-12-21","2019-01-25"),
                           ("0011","陈高轶",1,26,"202","2102","呼吸不畅","2018-12-19","2019-01-26"),
                           ("0012","陈温暖",1,29,"302","1401","子宫内膜炎","2018-12-18","2019-01-24"),
                           ("0013","牛群",0,3,"402","1104","结节性硬化","2018-12-17","2019-01-27"),
                           ("0014","李晶晶",0,61,"502","1105","老年性痴呆","2018-12-16","2019-01-28"),
                           ("0015","李沁颍",1,23,"602","1106","抑郁症","2018-12-15","2019-01-26"),
                           ("0016","刘馨雨",0,21,"702","1407","海绵窦血栓性静脉炎","2018-12-14","2019-01-25"),
                           ("0017","方子健",1,34,"802","1408","数字减影血管造影检测","2018-12-13","2019-01-26"),
                           ("0018","林威良",1,43,"902","1409","血液白细胞检测","2018-12-12","2019-01-24"),
                           ("0019","王恩琦",0,27,"103","1101","手指粉碎性骨折","2018-12-12","2019-01-26"),
                           ("0020","臧庆良",1,26,"203","2102","消化不良","2018-12-21","2019-01-29"),
                           ("0021","李欢欢",0,18,"303","1401","盆腔炎","2018-12-22","2019-01-31"),
                           ("0022","欧俊",1,6,"403","1104","小儿高热","2018-12-21","2019-01-30"),
                           ("0023","全淑敏",1,43,"503","1105","孤独症","2018-12-22","2019-01-01"),
                           ("0024","龚敬博",1,51,"603","1106","抑郁性神经症","2018-12-24","2019-01-22"),
                           ("0025","代除一",0,21,"703","1407","球后视神经炎","2018-12-23","2019-01-23"),
                           ("0026","郝凡",0,22,"803","1408","计算机X光检测","2018-12-22","2018-12-28"),
                           ("0027","黎小蓓",0,21,"903","1409","血液常规检查","2018-12-21","2018-12-22");
insert into nurse values ("01","黎晓蓓",0,21),
                         ("02","闫春竹",0,22),
                         ("03","马琳",0,23),
                         ("04","苏诗文",0,34),
                         ("05","刘颖",0,23),
                         ("06","卿菲雨",0,31),
                         ("07","徐龙",1,20),
                         ("08","曲芊羽",0,19);
insert into PN values ("0001","01","康复治疗1","2018-12-22 13:12:11"),
                      ("0002","02","康复治疗2","2018-12-23 15:12:22"),
                      ("0003","03","康复治疗3","2018-12-22 13:34:02"),
                      ("0004","04","康复治疗4","2018-12-23 14:32:23"),
                      ("0005","05","康复治疗1","2018-12-22 15:14:11"),
                      ("0006","06","康复治疗2","2018-12-23 16:14:11"),
                      ("0007","07","康复治疗3","2018-12-24 17:13:11"),
                      ("0008","08","康复治疗4","2018-12-24 18:14:11"),
                      ("0009","01","换药1","2018-12-22 19:27:21"),
                      ("0001","02","换药2","2018-12-23 12:16:14"),
                      ("0002","03","换药1","2018-12-26 13:15:15"),
                      ("0003","04","换药1","2018-12-23 14:11:15"),
                      ("0001","05","换药3","2018-12-24 15:42:16"),
                      ("0002","06","换药2","2018-12-22 16:24:17"),
                      ("0003","07","换药2","2018-12-23 17:14:18"),
                      ("0004","08","康复治疗1","2018-12-26 18:25:43"),
                      ("0005","01","康复治疗2","2018-12-24 19:52:12"),
                      ("0006","02","康复治疗3","2018-12-22 20:15:45"),
                      ("0007","03","康复治疗4","2018-12-24 21:43:34"),
                      ("0008","04","康复治疗5","2018-12-24 22:32:42"),
                      ("0009","05","康复治疗6","2018-12-22 23:23:24"),
                      ("0001","06","康复治疗7","2018-12-24 00:12:31"),
                      ("0005","07","康复治疗8","2018-12-25 01:53:41"),
                      ("0004","08","康复治疗9","2018-12-23 02:32:42");
insert into drug values("0001","注射用苄星青霉素","哈尔滨制药厂",123,24),
                       ("0002","三磷酸腺苷二钠","长春制药厂",213,34),
                       ("0003","复方氨林巴比妥注射液","沈阳制药厂",121,25),
                       ("0004","精蛋白生物合成人胰岛素注射液","北京制药厂",123,214),
                       ("0005","胞磷胆碱钠","上海制药厂",1010,28),
                       ("0006","艾司唑仑","广州制药厂",132,124),
                       ("0007","头孢氨苄","哈尔滨制药厂",12,43),
                       ("0008","异烟肼","长春制药厂",153,34),
                       ("0009","去乙酰毛花苷","北京制药厂",53,123),
                       ("0010","盐酸氟桂利嗪","广州制药厂",12,342),
                       ("0011","甲氰咪呱","哈尔滨制药厂",32,102),
                       ("0012","甲硫咪唑","广州制药厂",32,34),
                       ("0013","丁胺卡那霉素","广州制药厂",12,240),
                       ("0014","硝酸异山梨酯","哈尔滨制药厂",123,234),
                       ("0015","多潘立酮","长春制药厂",143,535),
                       ("0016","硫酸沙丁胺醇","北京制药厂",354,23),
                       ("0017","喷托维林","广州制药厂",3242,534),
                       ("0018","枸橼酸氯米芬","哈尔滨制药厂",544,53),
                       ("0019","枸橼酸他莫昔芬","广州制药厂",233,465),
                       ("0020","血塞通注射液","广州制药厂",532,42),
                       ("0021","注射用头孢替唑钠","哈尔滨制药厂",1232,23),
                       ("0022","注射用盐酸头孢替安","长春制药厂",124,27),
                       ("0023","复方愈创木酚磺酸钾口服溶液","北京制药厂",1344,23),
                       ("0024","克林霉素","广州制药厂",113,223),
                       ("0025","盐酸胺碘酮","哈尔滨制药厂",132,26),
                       ("0026","拉米夫定","广州制药厂",1030,23),
                       ("0027","头孢克肟颗粒","广州制药厂",1040,16),
                       ("0028","氟哌噻吨美利曲辛片","哈尔滨制药厂",123,53),
                       ("0029","盐酸克林霉素棕榈酸酯分散片","广州制药厂",135,53);
insert into PD values ("0001","0001",1),
                      ("0002","0001",2),
                      ("0001","0002",3),
                      ("0003","0001",1),
                      ("0004","0002",2),
                      ("0005","0001",3),
                      ("0004","0003",1),
                      ("0011","0003",2),
                      ("0005","0004",3),
                      ("0011","0022",1),
                      ("0012","0022",2),
                      ("0023","0013",3),
                      ("0023","0024",1),
                      ("0014","0022",2),
                      ("0015","0001",3),
                      ("0014","0002",1),
                      ("0021","0003",2),
                      ("0025","0004",3),
                      ("0021","0001",1),
                      ("0022","0001",2),
                      ("0021","0002",3),
                      ("0023","0003",1),
                      ("0024","0004",2),
                      ("0025","0005",3),
                      ("0024","0011",1),
                      ("0021","0021",2),
                      ("0025","0020",3),
                      ("0011","0019",1),
                      ("0022","0018",2),
                      ("0001","0017",3),
                      ("0003","0016",1),
                      ("0024","0015",2),
                      ("0015","0014",3),
                      ("0014","0013",1),
                      ("0021","0012",2),
                      ("0015","0011",3),
                      ("0006","0005",1),
                      ("0007","0005",2),
                      ("0008","0005",3),
                      ("0009","0005",1),
                      ("0010","0006",2),
                      ("0016","0006",3),
                      ("0017","0006",1),
                      ("0018","0006",2),
                      ("0019","0007",3),
                      ("0005","0007",1),
                      ("0025","0007",2),
                      ("0023","0007",3),
                      ("0024","0007",1),
                      ("0021","0008",2),
                      ("0028","0008",3),
                      ("0002","0008",1),
                      ("0001","0008",2),
                      ("0025","0009",3),
                      ("0011","0009",1),
                      ("0022","0010",2),
                      ("0001","0010",3),
                      ("0003","0010",1),
                      ("0024","0023",2),
                      ("0015","0025",3),
                      ("0014","0026",1),
                      ("0021","0027",2),
                      ("0013","0027",3),
                      ("0020","0021",1),
                      ("0007","0018",2),
                      ("0020","0018",3);

create procedure sl_drug_patient(in ppno char(4))
  begin
    select pname 患者姓名,illness 病症,dgname 药物名,num 数量
      from patient,drug,PD
        where patient.pno = pd.pno
          and drug.dgno = pd.dgno
            and pd.pno = ppno;
  end;
call sl_drug_patient("0001");

create procedure sl_doctor(in ppno char(4))
  begin
    select doctor.dname 医生姓名,doctor.duty 职务,dpname 科室名 from doctor,department
        where department.dpno = doctor.dpno
          and dno in
              (select dno from patient
               where ppno = pno);
  end;
call sl_doctor("0001");

create  procedure  sl_department(in ddno char(4))
begin
  select dname 医生姓名,dpname 科室名
    from department,doctor
      where department.dpno = doctor.dpno
        and doctor.dno = ddno;
end;
call sl_department("302");

create procedure sl_room(in ddpno char(1))
  begin
   select dpname 科室名,rno 病房编号,radr 病房地址
    from room,department
      where ddpno = room.dpno
       and room.dpno = department.dpno;
  end;
call sl_room("1");

create procedure sl_money(in ppno char(4))
  begin
    select sum(num * dgprice) 应缴金额
      from pd,patient,drug
        where pd.pno = patient.pno
          and drug.dgno = pd.dgno
            and patient.pno = ppno;
  end;
call sl_money("0023");

create procedure sl_doctor_patientnum(in ddno char(4))
  begin
    select count(*) 医生主治的患者数量 from patient
      where patient.dno = ddno;
  end;
call sl_doctor_patientnum("102");

create procedure sl_department_patientnum(in ddpno char(1))
  begin
    select count(*) 科室患者数 from patient,doctor,department
        where patient.dno = doctor.dno
          and department.dpno = doctor.dpno
            and ddpno = department.dpno ;
  end;
call sl_department_patientnum("2");

create procedure sl_department_patientname(in ddpno char(1))
  begin
    select pname 患者名,patient.pno 患者编号,dname 主治医师姓名,doctor.dno 主治医师编号
      from patient,doctor,department
        where patient.dno = doctor.dno
          and department.dpno = doctor.dpno
            and ddpno = department.dpno ;
  end;
call sl_department_patientname("1");

create procedure sl_nurse(in nnno char(2))
  begin
    select nno 护士编号,nname 护士姓名 from nurse
        where nno = nnno;
  end;
call sl_nurse("05");

create procedure sl_patient_nurse(in ppno char(4))
  begin
    select pname,illness,content,time,nname
    from nurse,patient,pn
        where nurse.nno = pn.nno
        and patient.pno = pn.pno
        and patient.pno = ppno;
  end;
call sl_patient_nurse("0002");

create procedure sl_patient_one_room(in ppno char(4))
  begin
    select A.pname,A.pno from patient A
        where rno in
              (select B.rno from patient B
              where B.pno=ppno);
  end;
call sl_patient_one_room("0002");

create procedure sl_room_patient(in rrno char(4))
  begin
    select pno,pname from patient
        where rno = rrno;
  end;
call sl_room_patient("1407");

create procedure del_patient(in ppno char(4))
  begin
    delete from PD where ppno = PD.pno;
    delete from patient where ppno = patient.pno;
  end;
call del_patient("0027");

create procedure del_drug(in ddgno char(4))
  begin
    delete from PD where ddgno = PD.dgno;
    delete from drug where ddgno = drug.dgno;
  end;
call del_drug("0029");

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

医院信息管理系统(Python与MySQL数据库的连接与相关增删改查操作) 的相关文章

  • C++的string类型中关于append函数、push_back函数和+=运算符的区别

    append 43 61 push back全字符串 xff08 string xff09 部分字符串 xff08 substring xff09 字符数组 xff08 char array xff09 单个字符 xff08 char xf
  • 深度学习中查看显卡使用情况

    命令 xff1a nvidia smi 功能 xff1a 显示服务器上的GPU的情况 命令 xff1a nvidia smi l 功能 xff1a 定时更新显示服务器上的GPU的情况 命令 xff1a watch n 3 nvidia sm
  • Shell脚本入门(一)--- 变量赋值、调取、echo$计算

    Shell脚本入门 xff08 一 xff09 文章目录 Shell脚本入门 xff08 一 xff09 64 toc shell 脚本变量赋值echo 计算 作业 xff1a 获取主机基本信息及分区使用率 shell 脚本 shell 变
  • C和C++中 struct的区别

    1 xff1a C 43 43 中不需要加struct就可以定义变量 xff0c 而c需要加struct 2 xff1a C 43 43 结构体内部可以使用函数
  • C和C++的const

    1 C语言的const修饰的变量都有空间 xff0c 全局的在常量区 xff0c 局部的在栈区 xff1b 2 C语言的const修饰的全局变量具有外部链接属性 xff0c extern const int a xff1b 即可使用 xff
  • 连接SSH失败的原因以及方法

    一 检查用户名密码 连接失败时可以先检查验证信息 xff0c 步骤如下 xff1a 1 运行软件 xff0c 在会话管理中找到连接失败的会话 右键单击会话名 xff0c 点击属性 图1 xff1a 查看属性 2 在弹出的对话框点击用户身份验
  • 虚地址空间

  • tensorflow2.0 学习笔记-利用tf.data.Dataset API读取numpy array文件

    tensorflow2 0 学习笔记 数据读取1 利用tf data Dataset API读取numpy array文件读取numpy array数据 利用tf data Dataset API读取numpy array文件 读取nump
  • matplotlib绘图中文乱码问题--解决方案(Windows)

    最近使用python绘图时 xff0c 出现中文乱码问题 xff0c 结合在网上搜索理解后 xff0c 按照如下步骤 xff0c 成功解决 解决方案 xff1a 步骤一 xff1a 找到Mircosoft YaHei UI字体文件 一般 在
  • Python数据分析之--运动员数据揭秘(一)

    在网易云课堂看了城市数据团的课程 xff0c 对理解利用pytthon进行数据分析的基本流程很有帮助 xff0c 因此进行复盘总结 xff0c 加深自己的理解 xff0c 巩固相关操作 分析资料及工具 xff1a Spyder Python
  • 缓慢变化维

    一 什么是缓慢变化维 xff1f 缓慢变化维 xff08 Slowly Changing Dimensions SCD xff09 它的提出是因为在现实世界中 xff0c 维度的属性并不是静态的 xff0c 它会随着时间的流失发生缓慢的变化
  • 一个小例子带你入门-Tableau

    声明 xff1a 本文是学习W3Cschool教程整理所得 xff0c 非原创 xff0c 原文链接 xff1a W3Cschool 创建任何Tableau数据分析报告涉及三个基本步骤 连接到数据源 它涉及定位数据并使用适当类型的连接来读取
  • SQL 必知必会--函数篇

    对SQL的基础函数做复习回顾 xff0c 本篇涉及的函数知识如下 xff1a 好了 xff0c 下面开始复习 xff1a SQL Aggregate 函数计算从列中取得的值 xff0c 返回一个单一的 值 Max 函数 作用 xff1a 返
  • WPS的Linux Mint版(Ubuntu)提示“系统缺失字体”的解决方法

    wps的Linux Mint版 Ubuntu 版安装成功后 xff0c 可能每次启动的时候都会提示 xff1a 系统缺失字体 xff0c 如图 xff1a 解决方法 1 首先下载字体包并解压 链接 https pan baidu com s
  • SQL必知必会--中级篇(二)

    接上一篇SQL必知必会 中级篇 xff08 一 xff09 xff0c 继续对sql知识进行整理复习 本篇包含知识点如图 xff1a 一 SQL 约束 用于规定表中的数据规 则 xff1b 如果存在违反约束的数据行为 xff0c 行为会被约
  • 静态网页个人简历

    程序员的简历是不用随身带的 首先 xff0c 作为程序员自己的简历是比别人特别的 xff1b 程序员应该是有思想 xff0c 有高情商的手工艺人 作为程序员简历是随身带的代码 xff0c 用代码书写的简历就像是一份随身携带着的简历 xff0
  • CMake之CMakeLists.txt编写入门

    自定义变量 主要有隐式定义和显式定义两种 隐式定义的一个例子是PROJECT指令 xff0c 它会隐式的定义 lt projectname gt BINARY DIR和 lt projectname gt SOURCE DIR两个变量 xf
  • 照相机成像原理 数码相机的成像原理

    照相机成像原理 数码相机的成像原理 1 1 数码相机 的成像原理 当打开相机的电源开关后 xff0c 主控程序芯片开始检查整个相机 xff0c 确定各个部件是否处于可工作状态 如果一切正常 xff0c 相机将处于待命状态 xff1b 若某一
  • MySQL 单表查询

    创建数据库并插入数据 创建表 xff0c 数据类型请自行查询 CREATE TABLE fruits id INT NOT NULL sid INT NOT NULL NAME CHAR 255 NOT NULL price DECIMAL
  • react ant Design pro Umi 项目左上角icon不显示

    今天本地运行项目没有问题 xff0c 打包发到远端发现logo icon不显示了 然后找了找资料说 LayoutSettings 哪里logo用链接图片可以本地图片有时候会加载异常 解决方法 xff1a 找到 app tsx 加个logo

随机推荐

  • ZeroMQ发布-订阅模式的应用(C++)

    我使用的ZeroMQ版本是4 2 0 xff0c 应用的是其发布 订阅模式 应该知道的细节 xff1a PUB SUB套接字是慢连接 xff0c 你无法得知SUB是何时开始接收消息的 就算你先打开了SUB套接字 xff0c 后打开PUB发送
  • Ubuntu 问题记录(1)| 关于卸载以源码方式安装的库

    Ubuntu 使用源码安装 lib 后 xff0c 如果要卸载 xff0c 则在 lib build 路径下使用 sudo make uninstall 之后再用 sudo updatedb 更新一下 lib 库 xff0c 再使用 loc
  • 注意字符数组最后会自动加\0

    今天做了一道考研题 规定数组大小为200 但是我没注意到后尾需要加 0 后来果断没有A过去 很伤心 反复不断地尝试怎么都不行 后来经一位仁兄点拨 瞬间豁然 include lt iostream gt include lt cstdio g
  • 在TypeScript中使用parseInt()

    在使用angular写一些东西的时候 xff0c 需要用到parseInt 方法来将时间戳转换成时分秒 xx时 xx分 xx秒 的格式 xff0c 但是因为angular所使用的是Typescript xff0c 而 parseInt st
  • CAS6.2.x ~ 准备(1)

    前言 CAS 企业单点登录 xff0c 目前最新版本是6 2 x Apereo 的 Central Authentication Service xff0c 通常称为CAS CAS是用于web的企业多语言单点登录解决方案 xff0c 并试图
  • MySql 安装,root初始化密码设置

    MySQL下载地址 xff1a https dev mysql com downloads mysql 2 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下 我的解压目录是 C mysql 8 0 12 winx64 34
  • Python游戏项目--外星人入侵(一)

    一 安装Pygame 在终端输入 xff1a pip install user pygame 二 开始游戏项目 xff08 1 xff09 创建Pygame窗口及响应用户输入 创建一个名为alien invasion py 的文件 xff0
  • SpringSecurity OAuth2 获取Token端点TokenEndpoint、Token授权TokenGranter接口 详解

    1 前言 在 授权服务器是如何实现授权的呢 xff1f 中 xff0c 我们可以了解到服务端实现授权的流程 xff0c 同时知道 xff0c 当授权端点AuthorizationEndpoint生成授权码时 xff0c 就会重定向到客户端的
  • Make文件中赋值等号的几种类型(:=,?=,=)

    今天有一位以前仅做过Android APP开发的同学突然间问我 xff0c 说Makefile中经常可以看见 xff1a 冒号等号 61 问号等号 61 和直接等号 61 这究竟有什么区别呢 xff1f 欢迎转载 xff0c 但是请注明原出
  • 支持nvidia GPU 的硬件编解码的ffmpeg编译记要

    支持nvidia GPU 的硬件编解码的ffmpeg编译记要 中间目录 xff1a out 1 x264 下载x264 stable zip unzip x264 stable zip cd x264 stable configure en
  • 软件工程学习笔记——第三周:结构化分析方法-1

    结构化分析方法的概念 结构化分析模型 结构化分析过程
  • GBK编码表

    说明 xff1a 比如第一个 34 顿号 34 的编码就是A1A2 GBK 汉字内码扩展规范 编码表 二 全国信息技术标准化技术委员会 汉字内码扩展规范 GBK Chinese Internal Code Specification 1 0
  • SSH 使用过程中,出现的问题以及解决办法

    1 ssh登陆提示 server unexpectedly closed network connection 在使用ssh登入Linux時 xff0c 卻發生了serverunexpectedly closed network conne
  • CentOS7安装vncserver

    1 关闭防火墙和selinux systemctl stop firewalld service setenforce 0 2 安装图形支持 yum groups install 34 GNOME Desktop 34 或yum group
  • Echarts tooltip加上单位并带着图例颜色

    模仿腾讯疫情地图 xff0c Y轴有个百分比 xff0c 也就是Y轴有单位 xff0c 使用JS代码如下 xff1a tooltip trigger 39 axis 39 formatter function params var relV
  • xv6调试

    窗口1作为xv6的运行窗口 make CPUS 61 1 qemu gdb 窗口2作为gdb调试窗口 gdb multiarch kernel kernel 进入gdb后执行 set confirm off set architecture
  • mit6.s081-21-Lab1/ Xv6 and Unix utilities

    sleep Implement the UNIX program sleep for xv6 your sleep should pause for a user specified number of ticks A tick is a
  • Python+scrcpy+pyminitouch实现自动化(四)——实现语音识别自动打卡机器人

    首先要去网上下载一个想要实现自动化的软件 xff0c 下载对应的apk后拖拉到虚拟器的页面即可实现自动下载 以上是对于AS打开的模拟器进行的下载安装 xff0c 由于我找不到关于x86的企业微信 xff0c 所以我就换了逍遥模拟器 xff0
  • CMU15445 lab1 - BUFFER POOL

    本文为本人完成15445 2020fall B 43 树版本 时的一些记录 xff0c 仅作为备忘录使用 TASK 1 LRU REPLACEMENT POLICY 本任务为实现一个LRU页面置换策略 xff0c 建立一个关于面向磁盘的数据
  • 医院信息管理系统(Python与MySQL数据库的连接与相关增删改查操作)

    题目意义 医院信息管理是一项琐碎 复杂而又十分细致的工作 xff0c 这关系到医院体系能否运行起来这一关乎国民健康水平的重大问题 我们只有利用好了医院中每个医生 护士的各项资源 xff0c 才能使得医院系统能够有序而条理的进行 xff0c