文章目录
目录
前言
本文参考数据库课程设计:医院信息管理系统(pycharm+MySQL)_流光2021的博客-CSDN博客_数据库医院信息管理系统
修改了一些原文,也加入了自己的设计,简单分享介绍。想直接跑程序记得看 四、注意 ,里面都是自己犯的错和要修改的设置。
一、目的和背景
医院信息管理是一项琐碎、复杂而又十分细致的工作,这关系到医院体系能否运行起来这一关乎国民健康水平的重大问题。只有利用好了医院中每个医生、护士的各项资源,才能使得医院系统能够有序而条理的进行,更好的安排有限的医生和护士资源,安排患者就诊。医院信息管理实现对科室,医生,患者,护士等进行增、删、改、查操作。更好的安排有限的医生和护士资源,安排患者就诊。同时,在设计医院信息管理系统的同时也兼顾了药品的管理,使得我们在安排各项工作的时候能够更加清晰明了,也可以与药房管理系统和挂号管理系统相连接,更好的实现医院的管理功能。
二、数据库设置
1.概念结构设计
E-R图:
2.逻辑结构设计
表的详细结构如下所示:
管理员列表
字段名 |
字段类型 |
备注 |
是否为空 |
admin_id |
char(20) |
管理员账号(主键) |
否 |
admin_pass |
char(20) |
管理员密码 |
否 |
游客列表
字段名 |
字段类型 |
备注 |
是否为空 |
stu_id |
char(20) |
游客账号(主键) |
否 |
stu_pass |
char(20) |
游客密码 |
否 |
医院信息列表
字段名 |
字段类型 |
备注 |
是否为空 |
id |
char(20) |
编号(主键) |
否 |
hpname |
char(20) |
医院名称 |
否 |
hos |
char(20) |
院长 |
否 |
hadr |
char(20) |
地址 |
否 |
htel |
char(20) |
电话 |
否 |
部门信息表
字段名 |
字段类型 |
备注 |
是否为空 |
dpname |
char(10) |
科室名 |
否 |
dpno |
char(2) |
编号(主键) |
否 |
dpadr |
char(20) |
地址 |
否 |
dptel |
char(20) |
电话 |
否 |
护士信息表
字段名 |
字段类型 |
备注 |
是否为空 |
nno |
char(2) |
护士编号(主键) |
否 |
nnname |
char(10) |
护士名 |
否 |
nsex |
char(1) |
性别 |
否 |
nage |
int |
年龄 |
否 |
药品信息表
字段名 |
字段类型 |
备注 |
是否为空 |
dgno |
char(4) |
编号(主键) |
否 |
dgname |
char(20) |
药品名 |
否 |
dgpro |
char(20) |
厂家 |
否 |
dgnum |
int |
库存 |
否 |
dgprice |
int |
价格 |
否 |
医生资料表
字段名 |
字段类型 |
备注 |
是否为空 |
dno |
char(3) |
编号(主键) |
否 |
dname |
char(20) |
姓名 |
否 |
duty |
char(20) |
职称 |
否 |
dsex |
char(2) |
性别 |
否 |
dage |
int |
年龄 |
否 |
dpno |
char(2) |
科室(外键) |
否 |
病房信息表
字段名 |
字段类型 |
备注 |
是否为空 |
rno |
char(10) |
病房号(主键) |
否 |
radr |
char(20) |
地址 |
否 |
dpno |
char(5) |
科室号(外键) |
否 |
患者信息表
字段名 |
字段类型 |
备注 |
是否为空 |
pno |
char(20) |
编号(主键) |
否 |
pnome |
char(20) |
姓名 |
否 |
psex |
char(2) |
性别 |
否 |
page |
int |
年龄 |
否 |
dno |
char(3) |
医生编号(外键) |
否 |
rno |
char(10) |
科室(外键) |
否 |
illness |
char(20) |
病症 |
否 |
startdate |
date |
治疗时间 |
否 |
predictenddate |
date |
康复时间 |
否 |
护士护理记录表
字段名 |
字段类型 |
备注 |
是否为空 |
pno |
char(20) |
药品编号(外键) |
否 |
nno |
char(2) |
患者编号(外键) |
否 |
content |
char(20) |
用药次数 |
否 |
time |
datetime |
时间 |
否 |
病人用药记录表
字段名 |
字段类型 |
备注 |
是否为空 |
dgno |
char(4) |
药品编号(外键,主键) |
否 |
pno |
char(4) |
患者编号(外键,主键) |
否 |
num |
int |
用药次数 |
否 |
3.物理结构设计
触发器设计
触发器代码:
CREATE TRIGGER chufa
AFTER DELETE ON pd FOR EACH ROW
BEGIN
delete from drug where dgno=old.dgno;
END
三、系统概要设计
1.框架设计
系统框架设计图:
2.功能实现
(1)Python代码
# (◕‿◕✿) ♪ 必须成功!
# ヾ(≧O≦)〃一次性通过~嗷~
import pymysql
from tkinter import ttk
import tkinter as tk
import tkinter.font as tkFont
from tkinter import * # 图形界面库
import tkinter.messagebox as messagebox # 弹窗
# 开始页面类
class StartPage:
def __init__(self , parent_window):
parent_window.update()
parent_window.destroy() # 销毁子界面
self.window = tk.Tk() # 初始框的声明
self.window.title('医院信息管理系统')
self.window.geometry('600x700') # 这里的乘是小x
# 创建一个图片管理类
photo = tk.PhotoImage(file="img3.png") # file:t图片路径
label = tk.Label(self.window ,
text="医院信息管理系统" ,
justify=tk.LEFT ,
image=photo ,
compound=tk.CENTER , # 设置为背景图片
font=("Verdana" , 20) ,
fg="black")
label.pack(pady=0) # 界面的长度
# 管理员登录
Button(self.window , text="管理员登陆" , font=tkFont.Font(size=16) , command=lambda: AdminPage(self.window) ,
width=30 ,
height=2 , fg='white' , bg='cornflowerblue' , activebackground='black' , activeforeground='white').pack()
# 游客登录
Button(self.window , text="游客登陆" , font=tkFont.Font(size=16) , command=lambda: StudentPage(self.window) ,
width=30 ,
height=2 , fg='white' , bg='orange' , activebackground='black' , activeforeground='white').pack()
# about页面
Button(self.window , text="关于" , font=tkFont.Font(size=16) , command=lambda: AboutPage(self.window) ,
width=30 ,
height=2 , fg='white' , bg='pink' , activebackground='black' , activeforeground='white').pack()
# 退出系统
Button(self.window , text='退出系统' , font=tkFont.Font(size=16) , command=self.window.destroy ,
width=30 ,
height=2 , fg='white' , bg='gray' , activebackground='black' , activeforeground='white').pack()
self.window.mainloop() # 主消息循环
# 管理员登陆页面的初始化
class AdminPage:
def __init__(self , parent_window):
parent_window.destroy() # 销毁主界面
self.window = tk.Tk() # 初始框的声明
self.window.title('管理员登陆页面')
self.window.geometry('600x650') # 这里的乘是小x
# 创建一个图片管理类
photo1 = tk.PhotoImage(file="登录.png") # file:t图片路径
label = tk.Label(self.window,
image=photo1 ,
c