电脑桌面
添加蜗牛文库到电脑桌面
安装后可以在桌面快捷访问

医院门诊管理系统数据库课程设计论文

栏目:合同范文发布:2025-02-07浏览:1收藏

医院门诊管理系统数据库课程设计论文

第一篇:医院门诊管理系统数据库课程设计论文

12级软件工程专业1班数据库应用系统课程设计课程论文

.信息工程学院

《数据库课程设计》论文

题 目:医院门诊管理系统数据库设计

学 号: 专业班级: 姓 名: 指导老师: 完成日期:

2012013324 软件工程121班 张桐 蔚继承

2014年06月20日

12级软件工程专业1班数据库应用系统课程设计课程论文

医院门诊管理系统数据库设计

张桐

(信息工程学院软件工程12级1班)

摘 要:随着社会的进步和人类生产生活水平的提高,国内现有的医院不论从规模上还是服务质量上都实现了显著增长。显然,如果医院门诊仍采用人工管理的方式显然无法应对庞大的病患需求。如今,科学与发展已成为时代的主题。在中国软件行业日益进步的今天,我们可以利用这些资源来帮助减轻医生和病人的负担,让病人能够尽快就医。一个高质量的医院门诊管理系统,能提高医院的社会效益与经济效益。本文采用结构化分析和设计方法,运用数据流程图和E-R图等工具对小型医院门诊管理系统数据库进行分析和设计,实现登记挂号、诊断治疗、收费挂号等医院门诊的基本业务。

关键字:医院门诊管理;数据库设计;医院

12级软件工程专业1班数据库应用系统课程设计课程论文

目 录

1. 需求分析....................................................................................................................................1

1.1数据流程图..........................................................................................................................1 1.2数据字典..............................................................................................................................4

1.2.1数据项.......................................................................................................................4 1.2.2数据结构...................................................................................................................5 1.2.3数据流.......................................................................................................................6 1.2.4.处理逻辑...................................................................................................................6 1.2.5.数据存储...................................................................................................................7

2.数据库结构设计..........................................................................................................................7

2.1 概念设计.............................................................................................................................7

2.1.1 分E-R图建立..........................................................................................................7 2.1.2 全局/整体E-R图.....................................................................................................8 2.2 逻辑设计.............................................................................................................................9

2.2.1 建立关系模式.........................................................................................................10 2.2.2 关系模式规范化处理.............................................................................................10 2.2.3 用户子模式建立.....................................................................................................11 2.2.4 关系模式逻辑结构定义.........................................................................................11 3.数据库物理设计........................................................................................................................13 4.数据库实施与测试....................................................................................................................13 4.1 SQL Server 2008数据库实施与测试................................................................................13 4.1.1 数据库及数据库对象建立.....................................................................................13 4.1.2 数据入库................................................................................................................21 4.1.3 数据库测试............................................................................................................23 4.2 Oracle数据库实施与测试.................................................................................................30 4.2.1 数据库及数据库对象建立.....................................................................................30 4.2.2 数据入库................................................................................................................41 4.2.3 数据库测试............................................................................................................43 5. 总结.........................................................................................................................................49

12级软件工程专业1班数据库应用系统课程设计课程论文

随着社会不断的进步,医院等基础服务机构,早已成为了人们生活必不可少的一部分,在很大程度上方便了人们的生活。为了在更大程度上满足病患的需求,许多医院的规模进一步扩大,管理也进一步改善。逐步走向医疗服务和管理的成熟化。而方便有效的管理手段已经成为了所有管理部门管理的有力工具。

传统的人工管理手段在高速发展的今天,已经不再体现其优势,繁复和大量的手工记录和计算给管理带来了更多的重复工作,如果能将复杂的各类管理过程封装在一个操作中,执行每个管理步骤时使用相对应的功能,那就能给管理者带来更大的便捷。数据库设计的目标就是为用户和各种应用系统提供一个信息基础设施和高效的运行环境。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已经进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对医院门诊信息进行管理,具有比手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大等。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理的重要条件。

针对典型的管理系统,以医院门诊管理为载体,设计医院门诊管理系统。以满足门诊管理者对各类数据的管理,以现代化的思维模式去经营维护。

1. 需求分析

需求分析阶段就是分析用户的需求,是数据库设计的起点。医院门诊管理的主要目标是通过医院门诊的整个服务流程的管理和控制及对库存数据有效的统计和分析,以保证管理的畅通,使决策人员及早发现问题,采取相应措施,调整管理方式。同时,通过数据分析,可以获得当前社会的病患需求,也便于管理人员不断进行管理的优化和提高管理水平。通过查询资料和分析当前的医院门诊部服务状况,明确病患的需求而进行设计。并完成业务流程图和数据流程图。进一步创建数据字典,完成数据结构和数据处理功能模块。

1.1数据流程图

数据流程图反映的是医院门诊管理工作过程的数据去向和流向。通过数据流程图,抽象现实世界的数据到医院门诊管理的物理模型。再根据这个物理模型要抽象出信息流,将物理模型转化成逻辑模型,反映信息在系统中的流动、处理和存储情况,在整个过程中,所得到的数据流程图可如下图1-1至图1-5所示,分为顶层数据流图、第一层数据流图和第二层数据流图。

112级软件工程专业1班数据库应用系统课程设计课程论文

图1-2 第一层数据流程图

图1-1 顶层数据流程图 12级软件工程专业1班数据库应用系统课程设计课程论文

图1-4 第二层数据流程图(诊断)

图1-3 第二层数据流程图(挂号收费)12级软件工程专业1班数据库应用系统课程设计课程论文

图1-5 第二层数据流程图(取药)

1.2数据字典

数据字典是体统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。数据字典在数据库设计中占有很重要的地位。数据字典通常包括数据项、数据结构、数据流、数据存储、处理逻辑5个部分。

数据项是不可再分的数据单位。数据结构反映了数据之间的组合关系。数据流是数据结构在系统内传输的路径。数据存储是数据结构停留或保存的地方也是数据流的来源和去向之一。处理逻辑一般用判定表或判定树来描述。数据字典是需要描述处理过程的说明性信息。

本文中包括35个数据项,8个数据结构,11个数据流,6个处理逻辑,8个数据存储。1.2.1数据项

数据项编号 DI01-1 DI01-2 DI01-3 DI01-4 DI01-5 DI02-1 DI02-2 DI02-3 数据项名 数据项含义 Pno Pname Psex Page Dno Dno Dname Dtitle

病人编号 病人姓名 性别 年龄 医生号 医生号 医生姓名 职称

与其他数据项关系 主键

外键 主键

类型 varchar varchar varchar int varchar varchar varchar varchar

长度 20 20 20 20 20 20 20

取值范围

not null 0-150

not null 12级软件工程专业1班数据库应用系统课程设计课程论文

DI02-4 DI02-5 DI03-1 DI03-2 DI03-3 DI04-1 DI04-2 DI04-3 DI04-4 DI05-1 DI05-2 DI05-3 DI05-4 DI05-5 DI05-6 DI06-1 DI06-2 DI06-3 DI06-4 DI07-1 DI07-2 DI07-3 DI07-4 DI08-1 DI08-2 DI08-3 DI08-4 Dtel Dp_no Dp_no Dp_name Dp_tell Mno Mname Mprice Rno Rdate Bno Pno Dno Rway Bno Bdate Bmoney Bway Pr_no Pr_date Mno Bno Dno Pno Iname Pr_no

电话 科室编号 科室编号 科室名称 联系方式 药品编号 药品名称 药品价格 挂号单号 挂号日期 收费单号 病人编号 医生编号 挂号方式 收费单号 日期 金额 收费方式 处方号 日期 药品编号 收费单号 医生号 病人编号 病名 处方号

外键 主键

主键

主键

外键 外键 外键

主键

主键

外键 外键

varchar varchar varchar varchar varchar varchar varchar float int varchar date varchar varchar varchar varchar varchar date float varchar varchar date varchar varchar 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

not null

not null

Mquantity 药品库存余量

主键、外键 varchar 主键、外键 varchar 外键

varchar varchar 1.2.2数据结构

数据结构编号 数据结构名 DS-1 DS-2 DS-3 DS-4 DS-5 DS-6 DS-7 DS-8 Doctor Patient Medicine Department Register Bill Diagnose

数据结构含义 医生 病人 药品 科室 挂号单 收费单 诊断结果

组成

Dno,Dname,Dtitle,Ddept,Dtel Pno,Pname,Psex,Page,Dno Mno,Mname,Mprice,Mquantity Dp_no,Dp_name,Dp_tel Rno,Rway,Rdate,Pno,Bno Bno,Bdate,Bmoney,Bway Pr_no,Pr_date,Mno,Bno Dno,Pno,Iname,Pr_no Prescription 处方

12级软件工程专业1班数据库应用系统课程设计课程论文

1.2.3数据流

数据流数据流编号 F1 名称 挂号请求 简述

病人来到医院对所需的治疗或者看病项目的挂号

病人

挂号处理

数据流来源

数据流去向

数据流组成

数据流量

高峰流量 每日

病人信息、每日

分配医师 1000人 5000人 病人、医生、挂号单编号

每日

每日F2 处理病人的挂号,由病人挂号单 挂号处理 病人

信息生成挂号单 缴费 对于各项医疗必须费用进行缴费 证以备后续使用 病人到相关科室进行初诊

病人

1000次 5000次 每日

每日每日每日F3 F4 F5

收费处理 收费信息

1000次 5000次

收费凭病人缴费后获取收费凭证 看病

收费处理 病人 病人

初诊处理

收费信息、每日病人信息、每日病人、处方

详细记录 1000次 5000次 初诊信息 1000人 5000人 信息、病例信息

每日

每日F6 处方、医师对病人开处方、填写病例 病例 取药 药物 病人到药房领取相关药品

药房工作人员依照处方把相关药品交给病人

确诊处理 病人

1000次 5000次

每日F7 F8

病人 取药处理

病人、药品每日信息

1000次 5000次

取药处理 病人

分配医师处理

每日每日

病人、药品

1000次 5000次 病人信息、分配医师、科室

每日

每日F9 挂号项挂号系统针对病人的挂目 号项目为其分配医师

挂号处理 分配医师处理

1000次 5000次 每日

每日每日F10 F11 医师信系统调用相关医师信息息 息 返回 后确诊 诊断信将诊断信息整理汇总,最

挂号处理 医生

1000次 5000次 1000次 5000次

诊断处理 确诊

病人、治疗每日记录

1.2.4.处理逻辑

处理逻辑处理逻辑 简述

名称 P1.1 P1.2 P1.3 P2.1 P2.2 P3.1 挂号 收费 诊断 确诊 取药 收费内容和标准 医生对病情进行诊断 完成诊断,确诊 取药

输入的数据流 收费内容 诊断请求 诊断信息 处方 6

处理

输出的数据流

处理频率 每人1次 每人1次 每人1次 每人1次 每人1次 每人1次 对病人挂号请求的处理 病人信息 分配医师 挂号单 收取费用 收费记录 分配医师 医生信息 初步诊断 初诊信息 确诊 取药

诊断结果 药物信息 分配医师 根据挂号记录分配医师 医生记录 12级软件工程专业1班数据库应用系统课程设计课程论文

1.2.5.数据存储

数据存储数据存储名编号 S1 S2 S3 S4 S5 S6 S7 S8 称 简述

数据存储组成 病人信息、医生 收费信息 医生值班安排 诊断过程 收费信息 收费款项标准 处方

相关的处理 P1.1,P2.1,P3.1 P1.2,P2.2,P3.2,P3.3 P3.1 P2.3,P3.1 P3.2 P1.2 P1.2 P3.2 挂号记录 用于记录病人的挂号信息 收费记录 用于记录收费信息 值班医生记录 记录医生的值班安排

诊断记录 记录病人的诊断过程 收费款项 用于记录收费情况 收费标准 用于统一收费的标准 处方 用于记录医生对病人开出的处方 药物记录 用于记录药物价格剩余量等 药物信息

2.数据库结构设计

数据库的结构设计主要包括概念设计和逻辑设计两个部分。

2.1 概念设计

概念设计阶段的任务是将需求分析得到的用户需求抽象为信息结构(概念模型)的过程。要能充分的反应事物与事物之间的联系,是对现实世界的一个真实模型。在需求分析阶段得到的应用需求首先抽象为信息世界的结构才能更好的用某一DBMS实现这些需求。E-R模型是概念模型的有力工具。逐一设计分E-R图,再将所有的分E-R图综合成系统的总E-R图。2.1.1 分E-R图建立

分E-R图的建立依据于数据流图的建立。以下可从第二层数据流图分别建立分E-R图。详见图2-1至2-3。

2.诊断分ER图

图2-1 分ER图

图2-2 分ER图 12级软件工程专业1班数据库应用系统课程设计课程论文

2.1.2 全局/整体E-R图

根据上述列出的分E-R图,消除其中存在的冲突、冗余,建立全局E-R图(详见图2-4),并列出所有实体和联系属性的属性E-R图(详见图2-5)

图2-4 总ER图 图2-3 分ER图 12级软件工程专业1班数据库应用系统课程设计课程论文

图2-5 属性ER图

2.2 逻辑设计

逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。根据DBMS产品以及不同系统的限制,设计逻辑结构时一般有以下三个步骤:首先将概念结构转换为一般的

关系、网状、层次模型;将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;最后对数据模型进行优化。

医院门诊管理系统的设计采用关系模型。E-R图转化为关系模型实际上就是要将实体型、实体的属性和实体型之间的联系转换为关系模式。

一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体型间的联系有以下不同的情况:

(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的 12级软件工程专业1班数据库应用系统课程设计课程论文

码以及联系本身的属性均转换为关系的属性。

(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系没模式,则与联系向连的各实体的码以及联系本身的属性均转换为关系的属性。

(3)一个m:n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系的码的一部分。

2.2.1 建立关系模式

医院门诊管理系统涉及到的关系主要有:

病人和医生为n:1(多对一)的关系,将其之间的联系与n端实体合并。病人和挂号单的关系为1:1(一对一),将其之间的联系与任意一端实体合并。科室和医生为1:n(一对多)的关系,将其之间的联系与n端实体合并。医生和诊断结果的关系为1:n(一对多)的关系,也将其之间的联系与n端实体合并。诊断结果和处方单的关系为1:1(一对一),将其之间的联系与任意一端实体合并。处方单、收费单和药品之间的联系为三元的关系,将它们之间的联系转换为独立的关系模式。

具体的转换如下所示(主键加下划线,外键斜体加粗): 病人(病人编号,病人姓名,性别,年龄,医生号)医生(医生号,医生姓名,职称,电话,科室号)药品(药品编号,药品名称,单价,数量)处方(处方号,日期,药品编号,收费单号)收费单(收费单号,日期,金额,收费方式)诊断结果(医生号,病人编号,病名,处方号)

挂号单(挂号单号,挂号方式,日期,病人编号,收费单号)科室(科室号,科室名称,联系方式)2.2.2 关系模式规范化处理

关系数据库中的关系必须满足一定的规范化要求,对于不同的规范化程度可用范式来衡量。范式是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,达到的关系才是规范化的。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合。在本系统中,所有建立的关系模式都符合三范式。12级软件工程专业1班数据库应用系统课程设计课程论文

2.2.3 用户子模式建立

根据需求分析,研究建立满足不同需求的用户子模式,各个子模式的建立在更大程度上方便数据操作。用户子模式的定义如下: 收费细则视图(病人号,收费单号,日期,金额,收费方式)病人-药品视图(病人号,药品编号)诊断结果视图(病人号,病人姓名,病名)医生病人视图(医生号,医生姓名,病人姓名)科室医生视图(医生号,医生姓名,科室名称)

病人挂号视图(病人号,病人姓名,挂号单号,挂号日期,挂号方式)2.2.4 关系模式逻辑结构定义

表2-6 病人关系模式

属性名 Pno Pname Psex Page Dno 含义 病人编号 病人姓名 性别 年龄 医生号 数据类型 varchar varchar varchar int varchar

长度 20 20 20 20

是否为主属性 是

是否为外键

约束条件

not null 0-150

表2-7 医生关系模式

属性名 Dno Dname Dtitle Ddept Dtel 含义 医生号 医生姓名 职称 科室号 电话 数据类型 varchar varchar varchar varchar varchar

长度 20 20 20 20 20

是否为主属性 是

是否为外键

约束条件

not null

表2-8 药品关系模式

属性名 Mno Mname Mprice Mquantity 含义 药品编号 药品名称 单价 数量

数据类型 varchar varchar float int

长度 20 20

是否为主属性 是

是否为外键

约束条件

not null

12级软件工程专业1班数据库应用系统课程设计课程论文

表2-9 处方单关系模式

属性名 Pr_no Pr_date Mno Bno 含义 处方号 日期 药品编号 收费单号 数据类型 varchar date varchar varchar

长度 20 20 20

是否为主属性 是

是否为外键

是 是

约束条件

表2-10 收费单关系模式

属性名 Bno Bdate Bmoney Bway 含义 收费单号 日期 金额 收费方式 数据类型 varchar date float varchar

长度 20 20 20

是否为主属性 是

是否为外键

约束条件

表2-11 诊断结果关系模式

属性名 Dno Pname Iname Pr_no 含义 医生号 病人姓名 病名 处方号 数据类型 varchar varchar varchar

长度

是否为主属性

是否为外键 是 是

约束条件是 20 是

表2-12 挂号单关系模式

属性名 Rno Rway Rdate Pname Bno 含义 挂号单号 挂号方式 日期 病人姓名 收费单号 数据类型 varchar varchar date varchar varchar

长度

是否为主属性

是否为外键

是 是

约束条件是 20

20

表2-13 科室关系模式

属性名 Dp_no Dp_name Dp_tel 含义 科室号 科室名称 联系方式 数据类型 varchar varchar varchar

长度

是否为主属性

是否为外键

约束条件

not null 是 20 20

12级软件工程专业1班数据库应用系统课程设计课程论文

3.数据库物理设计

主要包括数据库在物理设备上的存储结构与存取方法就是数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最合适的应用环境的物理结构的过程,就是数据库的物理设计。这一阶段主要的任务是确定数据库的物理结构,并不断的进行优化处理,主要建立索引、触发器、存储过程。

索引名称 idx_bno unique_pname unique_mname

索引类型 唯

一、非聚集 唯

一、非聚集 唯

一、非聚集

用途

按bno属性列升序排列 实现唯一性约束 实现唯一性约束

4.数据库实施与测试

主要包括数据库实施和测试两个部分。(下面分别写出SQL Server 2008和Oracle的实施测试过程)

4.1 SQL Server 2008数据库实施与测试

4.1.1 数据库及数据库对象建立

本系统建立名为Hospital的数据库。数据库对象分为基本表、视图、索引、触发器、存储过程等。下面分别列出相关代码。1.基本表

create table Department(Dp_no varchar(20)primary key, Dp_name varchar(20)not null, Dp_tel varchar(20))

create table Doctor(Dno varchar(20)primary key, Dname varchar(20)not null, Dtitle varchar(20), 12级软件工程专业1班数据库应用系统课程设计课程论文

Dp_no varchar(20)references Department(Dp_no), Dtel varchar(20))

create table Patient(Pno varchar(20)primary key, Pname varchar(20), Psex varchar(20), Page int check(Page>=0 and Page<=150), Dno varchar(20)references Doctor(Dno))

create table Medicine(Mno varchar(20)primary key, Mname varchar(20)not null, Mprice float, Mquantity int)

create table Bill(Bno varchar(20)primary key, Bdate date, Bmoney float, Bway varchar(20))

create table Prescription(Pr_no varchar(20)primary key, Pr_date date, Mno varchar(20)references Medicine(Mno), Bno varchar(20)references Bill(Bno)14 12级软件工程专业1班数据库应用系统课程设计课程论文)

create table Diagnose(Dno varchar(20)references Doctor(Dno), Pno varchar(20)references Patient(Pno), Iname varchar(20), Pr_no varchar(20)references Prescription(Pr_no), primary key(Dno,Pno))

create table Register(Rno varchar(20)primary key, Rway varchar(20), Rdate date, Pno varchar(20)references Patient(Pno), Bno varchar(20)references Bill(Bno))2.视图

(1)收费细则视图(BillDetail)create view BillDetail as select distinct Diagnose.pno,Bill.Bno,Bdate,Bmoney,Bway from Prescription,Bill,Diagnose,Register where Register.pno=Diagnose.pno and(Diagnose.Pr_no=Prescription.Pr_no and Prescription.bno=Bill.bno or Register.bno=Bill.bno)(2)病人-药品视图(Patient_Med)create view Patient_Med as select Pno,Mname from Medicine,Prescription,Diagnose 15 12级软件工程专业1班数据库应用系统课程设计课程论文

where Medicine.Mno=Prescription.mno and Diagnose.Pr_no=Prescription.Pr_no(3)诊断结果视图(Patient_Diag)create view Patient_Diag as select Patient.pno,pname,iname from Patient,Diagnose where Diagnose.Pno=Patient.pno(4)医生病人视图(Docter_Patient)create view Docter_Patient as select Doctor.dno,dname,pname from Patient,Doctor where Patient.dno=Doctor.dno(5)科室医生视图(Dept_Doctor)create view Dept_Doctor as select dno,dname,Dp_name from Doctor,Department where Department.Dp_no=Doctor.Dp_no(6)病人挂号视图(Patient_Register)create view Patient_Register as select Patient.pno,pname,rno,rway,rdate from Patient,Register where Register.pno=Patient.pno 3.索引

create unique index unique_mname on Medicine(Mname)create unique index unique_pname on Patient(pname)create index idx_bno on Bill(bno asc)16 12级软件工程专业1班数据库应用系统课程设计课程论文

4.存储过程

(1)当有患者通过不同的方式挂号时,要在Register新增一条挂号信息,同时在Patient表添加一个病人记录,在Bill表中添加一条挂号收费记录 create proc addpatient @Rno varchar(20), @Rway varchar(20), @Pno varchar(20), @Bno varchar(20), @Pname varchar(20), @Psex varchar(20), @Page int, @Dno varchar(20), @Bmoney float as insert into Patient values(@Pno,@Pname,@Psex,@Page,@Dno)insert into Bill values(@Bno,GETDATE(),@Bmoney,'挂号收费')insert into Register values(@Rno,@Rway,GETDATE(),@Pno,@Bno)(2)一个患者确诊完毕,向Diagnose新增一条诊断结果记录,Prescription表添加一条处方记录,并更新Bill表中相应收费信息 create proc addDiagnose @Dno varchar(20), @Pno varchar(20), @Iname varchar(20), @Pr_no varchar(20), @Mno varchar(20), @Bno varchar(20), @Bmoney float as 17

时在同12级软件工程专业1班数据库应用系统课程设计课程论文

insert into Bill values(@Bno,GETDATE(),@Bmoney,'药品收费')insert into Prescription values(@Pr_no,GETDATE(),@Mno,@Bno)insert into Diagnose values(@Dno,@Pno,@Iname,@Pr_no)(4)插入一条药品信息 create proc MedicineInsert @mno varchar(20), @mname varchar(20), @mprice float, @mquantity int as insert into Medicine values(@Mno,@Mname,@Mprice,@Mquantity)(4)修改某一科室的电话 create proc change_tel @dp_no varchar(20), @Dp_tel varchar(20)as update Department set dp_tel=@Dp_tel where Dp_no=@dp_no(5)修改某一药品剩余量 create proc change_med @mno varchar(20), @mquantity int as update Medicine set mquantity=@mquantity where mno=@mno 18 12级软件工程专业1班数据库应用系统课程设计课程论文

(6)在Dept_Doctor查询医院门诊部各个科室的医生人数 create proc Dept_Doc as select Dp_name,COUNT(dno)as rs from Dept_Doctor group by Dp_name(7)在Docter_Patient查询某一病人的主治医生信息 create proc p_doctor @pname varchar(20)as select * from Doctor where Dno =(select Dno from Docter_Patient where pname=@pname)(8)在Docter_Patient查询某一医生主治的全部病人信息 create proc D_Patient @dno varchar(20)as select pno,pname,psex,page from Patient where pname in(select pname from Docter_Patient where dno=@dno)(9)在Patient_Diag查询患感冒的病人姓名 create proc Diag_p as select pname from Patient_Diag where iname='感冒'(10)在Patient_Diag查询某一病人的诊断结果 create proc p_Diag @pno varchar(20)as select iname 19 12级软件工程专业1班数据库应用系统课程设计课程论文

from Patient_Diag where pno=@pno(11)在Patient_Med查询某病人购买的药品 create proc p_Med @pno varchar(20)as select mname from Patient_Med where pno=@pno(12)在BillDetail查询某病人购买的药品总价 create proc medpay @pno varchar(20)as select Bway,bmoney from BillDetail where pno=@pno and Bway='药品收费'(13)在BillDetail查询某一病人的收费总和(=挂号+取药)create proc pay @pno varchar(20)as select sum(bmoney)as total from BillDetail where pno=@pno group by pno(14)在Patient_Register查询某病人的挂号方式 create proc reg_way @pno varchar(20)as select rway from Patient_Register where pno=@pno 20 12级软件工程专业1班数据库应用系统课程设计课程论文

5.触发器

当向处方表(Prescription)中添加元组时,同步对表Medicine的级联更新。(药品数量-1)

create trigger t1 on Prescription after insert,update as declare @pr_no varchar(20),@mno varchar(20)declare c2 cursor for select pr_no,mno from inserted open c2 fetch next from c2 into @pr_no,@mno while(@@fetch_status=0)begin

update Medicine set mquantity=mquantity-1 where mno=@mno fetch next from c2 into @pr_no,@mno end close c2 deallocate c2 4.1.2 数据入库

Patient表

Register表 12级软件工程专业1班数据库应用系统课程设计课程论文

Department表

Doctor表

Medicine表

Prescription表

Diagnose表 12级软件工程专业1班数据库应用系统课程设计课程论文

Bill表

4.1.3 数据库测试 1.视图

病人-药品视图(Patient_Med)

收费细则视图(BillDetail)12级软件工程专业1班数据库应用系统课程设计课程论文

诊断结果视图(Patient_Diag)

医生病人视图(Docter_Patient)

科室医生视图(Dept_Doctor)

病人挂号视图(Patient_Register)

12级软件工程专业1班数据库应用系统课程设计课程论文

2.验证存储过程

(1)当有患者通过不同的方式挂号时,要在Register新增一条挂号信息,同时在Patient表添加一个病人记录,在Bill表中添加一条挂号收费记录

(2)一个患者确诊完毕,向Diagnose新增一条诊断结果记录,同时在Prescription表添加一条处方记录,并更新Bill表中相应收费信息

12级软件工程专业1班数据库应用系统课程设计课程论文

(3)插入一条药品信息

(4)修改某一科室的电话

12级软件工程专业1班数据库应用系统课程设计课程论文

(5)修改某一药品剩余量

(6)在Dept_Doctor查询医院门诊部各个科室的医生人数

12级软件工程专业1班数据库应用系统课程设计课程论文

(7)在Docter_Patient查询某一病人的主治医生信息

(8)在Docter_Patient查询某一医生主治的全部病人信息

(9)在Patient_Diag查询患感冒的病人姓名 12级软件工程专业1班数据库应用系统课程设计课程论文

(10)在Patient_Diag查询某一病人的诊断结果

(11)在Patient_Med查询某病人购买的药品

(12)在BillDetail查询某病人购买的药品总价

12级软件工程专业1班数据库应用系统课程设计课程论文

(13)在BillDetail查询某一病人的收费总和(=挂号+取药)

(14)在Patient_Register查询某病人的挂号方式

3.验证触发器

(见存储过程2的验证)

4.2 Oracle数据库实施与测试

4.2.1 数据库及数据库对象建立

本系统建立名为Hospital的数据库。数据库对象分为基本表、视图、存储过 12级软件工程专业1班数据库应用系统课程设计课程论文

程等。下面分别列出相关代码。

1.基本表

create table Department(Dp_no varchar(20)primary key, Dp_name varchar(20)not null, Dp_tel varchar(20))

create table Doctor(Dno varchar(20)primary key, Dname varchar(20)not null, Dtitle varchar(20), Dp_no varchar(20)references Department(Dp_no), Dtel varchar(20))

create table Patient(Pno varchar(20)primary key, Pname varchar(20), Psex varchar(20), Page int check(Page>=0 and Page<=150), Dno varchar(20)references Doctor(Dno))

create table Medicine(Mno varchar(20)primary key, Mname varchar(20)not null, Mprice float, Mquantity int)

create table Bill(Bno varchar(20)primary key, Bdate date, Bmoney float, Bway varchar(20))

create table Prescription

12级软件工程专业1班数据库应用系统课程设计课程论文

(Pr_no varchar(20)primary key, Pr_date date, Mno varchar(20)references Medicine(Mno), Bno varchar(20)references Bill(Bno))

create table Diagnose(Dno varchar(20)references Doctor(Dno), Pno varchar(20)references Patient(Pno), Iname varchar(20), Pr_no varchar(20)references Prescription(Pr_no), primary key(Dno,Pno))

create table Register(Rno varchar(20)primary key, Rway varchar(20), Rdate date, Pno varchar(20)references Patient(Pno), Bno varchar(20)references Bill(Bno))2.视图

(1)收费细则视图(BillDetail)create view BillDetail as select distinct Diagnose.pno,Bill.Bno,Bdate,Bmoney,Bway from Prescription,Bill,Diagnose,Register where Register.pno=Diagnose.pno and(Diagnose.Pr_no=Prescription.Pr_no and Prescription.bno=Bill.bno or Register.bno=Bill.bno)(2)病人-药品视图(Patient_Med)create view Patient_Med as select Pno,Mname from Medicine,Prescription,Diagnose 32 12级软件工程专业1班数据库应用系统课程设计课程论文

where Medicine.Mno=Prescription.mno and Diagnose.Pr_no=Prescription.Pr_no(3)诊断结果视图(Patient_Diag)create view Patient_Diag as select Patient.pno,pname,iname from Patient,Diagnose where Diagnose.Pno=Patient.pno(4)医生病人视图(Docter_Patient)create view Docter_Patient as select Doctor.dno,dname,pname from Patient,Doctor where Patient.dno=Doctor.dno(5)科室医生视图(Dept_Doctor)create view Dept_Doctor as select dno,dname,Dp_name from Doctor,Department where Department.Dp_no=Doctor.Dp_no(6)病人挂号视图(Patient_Register)create view Patient_Register as select Patient.pno,pname,rno,rway,rdate from Patient,Register where Register.pno=Patient.pno 3.存储过程

(1)当有患者通过不同的方式挂号时,要在Register新增一条挂号信息,同时在Patient表添加一个病人记录,在Bill表中添加一条挂号收费记录

create or replace procedure addpatient(v_Rno varchar,v_Rway varchar,v_Pno varchar,v_Bno varchar,v_Pname 33 12级软件工程专业1班数据库应用系统课程设计课程论文

varchar,v_Psex varchar,v_Page int,v_Dno varchar,v_Bmoney float)is begin insert into Patient values(v_Pno,v_Pname,v_Psex,v_Page,v_Dno);insert into Bill values(v_Bno,sysdate(),v_Bmoney,'挂号收费');insert into Register values(v_Rno,v_Rway,sysdate(),v_Pno,v_Bno);end addpatient;begin addpatient('R021','电话预约','P021','B042','张三','男',18,'D014',21);end;(2)插入一条药品信息

create or replace procedure MedicineInsert(mno varchar,mname varchar,mprice float,mquantity int)is begin insert into Medicine values(Mno,Mname,Mprice,Mquantity);end MedicineInsert;begin MedicineInsert('M043','克拉霉素胶囊(桑美)',9.8,200);end;(3)修改某一科室的电话

create or replace procedure change_tel(v_dp_no varchar,v_Dp_tel varchar)is 34 12级软件工程专业1班数据库应用系统课程设计课程论文

begin update Department set dp_tel=v_Dp_tel where Dp_no=v_dp_no;commit;end change_tel;begin change_tel('Dp011','87051621');end;(4)修改某一药品剩余量

create or replace procedure change_med(v_mno varchar, v_mquantity int)is begin update Medicine set mquantity=v_mquantity where mno=v_mno;commit;end change_med;begin change_med('M024',150);end;(5)在Dept_Doctor查询医院门诊部各个科室的医生人数

create or replace procedure Dept_Doc(Dp_name out varchar,rs out number)is cursor c1 is select Dp_name,COUNT(dno)as rs from Dept_Doctor group by Dp_name;begin open c1;35 12级软件工程专业1班数据库应用系统课程设计课程论文

loop fetch c1 into Dp_name,rs;exit when c1%notfound;dbms_output.put_line(Dp_name||' '||rs);end loop;close c1;end Dept_Doc;declare a varchar(20);b number;begin Dept_Doc(a,b);end;(6)在Docter_Patient查询某一病人的主治医生信息

create or replace procedure p_doctor(v_pname varchar,v_dno out varchar,v_dname out

varchar,v_dtitle

out

varchar,v_dp_no

out varchar,v_dtel out varchar)is begin select dno,dname,dtitle,dp_no,dtel into v_dno,v_dname,v_dtitle,v_dp_no,v_dtel from Doctor where Dno =(select Dno from Docter_Patient where pname=v_pname);dbms_output.put_line(v_dno||' '||v_dname||' '||v_dtitle||' '||v_dp_no||' '||v_dtel);end p_doctor;declare f varchar(20):='张三';a varchar(20);36 12级软件工程专业1班数据库应用系统课程设计课程论文

b varchar(20);c varchar(20);d varchar(20);e varchar(20);begin p_doctor(f,a,b,c,d,e);end;(7)在Docter_Patient查询某一医生主治的全部病人信息

create or replace procedure D_Patient(v_dno varchar,pno out varchar,pname out varchar,psex out varchar,page out varchar)is cursor c1 is select pno,pname,psex,page from Patient where pname in(select pname from Docter_Patient where dno=v_dno);begin open c1;loop fetch c1 into pno,pname,psex,page;exit when c1%notfound;dbms_output.put_line(pno||'

'||pname||'

'||psex||' '||page);end loop;close c1;end D_Patient;declare f varchar(20):='D017';a varchar(20);b varchar(20);c varchar(20);d varchar(20);begin 37 12级软件工程专业1班数据库应用系统课程设计课程论文

D_Patient(f,a,b,c,d);end;(8)在Patient_Diag查询患感冒的病人姓名

create or replace procedure Diag_p(pname out varchar)is cursor c1 is select pname from Patient_Diag where iname='感冒';begin open c1;loop fetch c1 into pname;exit when c1%notfound;dbms_output.put_line(pname);end loop;close c1;end Diag_p;declare a varchar(20);begin Diag_p(a);end;(9)在Patient_Diag查询某一病人的诊断结果

create or replace procedure p_Diag(v_pno varchar,v_iname out varchar)is begin select iname into v_iname from Patient_Diag where pno=v_pno;dbms_output.put_line(v_iname);end p_Diag;38 12级软件工程专业1班数据库应用系统课程设计课程论文

declare a varchar(20);begin p_Diag('P019',a);end;(10)在Patient_Med查询某病人购买的药品

create or replace procedure p_Med(v_pno varchar,v_mname out varchar)is begin select mname into v_mname from Patient_Med where pno=v_pno;dbms_output.put_line(v_mname);end p_Med;declare a varchar(20);begin p_Med('P020',a);end;(11)在BillDetail查询某病人购买的药品总价

create or replace procedure medpay(v_pno varchar,v_Bway out varchar,v_bmoney out varchar)is begin select Bway,bmoney into v_bway,v_bmoney from BillDetail where pno=v_pno and Bway='药品收费';39 12级软件工程专业1班数据库应用系统课程设计课程论文

dbms_output.put_line(v_bway||' '||v_bmoney);end medpay;declare a varchar(20);b varchar(20);begin medpay('P002',a,b);end;(12)在BillDetail查询某一病人的收费总和(=挂号+取药)

create or replace procedure pay(v_pno varchar,v_total out number)is begin select sum(bmoney)as total into v_total from BillDetail where pno=v_pno group by pno;dbms_output.put_line(v_total);end pay;declare a number;begin pay('P005',a);end;(13)在Patient_Register查询某病人的挂号方式

create or replace procedure reg_way(v_pno varchar,v_rway out varchar)is begin select rway 40 12级软件工程专业1班数据库应用系统课程设计课程论文

into v_rway from Patient_Register where pno=v_pno;dbms_output.put_line(v_rway);end reg_way;declare a varchar(20);begin reg_way('P011',a);end;4.2.2 数据入库 Bill表

Department表

Patient表

12级软件工程专业1班数据库应用系统课程设计课程论文

Doctor表

Medicine表

Diagnose表

Prescription表

12级软件工程专业1班数据库应用系统课程设计课程论文

Register表

4.2.3 数据库测试

1.视图

收费细则视图(BillDetail)

诊断结果视图(Patient_Diag)

医生病人视图(Docter_Patient)

12级软件工程专业1班数据库应用系统课程设计课程论文

科室医生视图(Dept_Doctor)

病人挂号视图(Patient_Register)

2.验证存储过程

(1)当有患者通过不同的方式挂号时,要在Register新增一条挂号信息,同时在Patient表添加一个病人记录,在Bill表中添加一条挂号收费记录

12级软件工程专业1班数据库应用系统课程设计课程论文

(2)一个患者确诊完毕,向Diagnose新增一条诊断结果记录,同时在表添加一条处方记录,并更新Bill表中相应收费信息

Prescription12级软件工程专业1班数据库应用系统课程设计课程论文

(3)插入一条药品信息

(4)修改某一科室的电话

(5)修改某一药品剩余量

12级软件工程专业1班数据库应用系统课程设计课程论文

(6)在Dept_Doctor查询医院门诊部各个科室的医生人数

(7)在Docter_Patient查询某一病人的主治医生信息

(8)在Docter_Patient查询某一医生主治的全部病人信息

第二篇:酒店管理系统 (数据库课程设计)

数据库 酒店管理系统 课程设计(基于 SQL server 2000)

实现过程

1.1 通过查询分析器实现建立数据库、数据表

------------------------------创建数据库和数据表---(1)创建酒店管理系统数据库

CREATE DATABASE 酒店管理系统(2)创建客房信息表

CREATE TABLE 客房

(客房编号 CHAR(8)PRIMARY KEY,客房类型 CHAR(8)NOT NULL,价格 SMALLMONEY NOT NULL,床位数 INT NOT NULL,使用状态 CHAR(8)NOT NULL)

INSERT INTO 客房 VALUES('101','一',100,1,'在使用')INSERT INTO 客房 VALUES('102','二',200,2,'在使用')INSERT INTO 客房 VALUES('103','二',200,1,'在使用')INSERT INTO 客房 VALUES('104','三',300,2,'在使用')INSERT INTO 客房 VALUES('105','三',300,1,'未使用')

(3)创建客户信息表

CREATE TABLE 客户

(客户编号 CHAR(8)PRIMARY KEY, 客户名称 CHAR(10)NOT NULL,身份证号 CHAR(18)NOT NULL,联系地址 CHAR(25),联系电话 CHAR(10))INSERT INTO 客户 VALUES('1001','王一',12234,'江西','3245354')INSERT INTO 客户 VALUES('1002','张三',34234,'江西','2442442')INSERT INTO 客户 VALUES('1003','李四',56465,'江西','5654645')INSERT INTO 客户 VALUES('1004','王钱',65435,'江西','5676577')INSERT INTO 客户 VALUES('1005','孙志',11464,'江西','4234343')

(4)创建入住登记表

CREATE TABLE 入住登记

(客房编号 CHAR(8)FOREIGN KEY REFERENCES 客房(客房编号),客户编号 CHAR(8)FOREIGN KEY REFERENCES 客户(客户编号),预定日期 DATETIME,预定数量 INT, PRIMARY KEY(客房编号,客户编号))

INSERT INTO 入住登记 VALUES('101','1001',2010-10-10,1)INSERT INTO 入住登记 VALUES('102','1002',2010-12-10,1)INSERT INTO 入住登记 VALUES('103','1003',2010-12-26,1)INSERT INTO 入住登记 VALUES('104','1004',2010-12-9,1)--------创建查询视图---------1.2系统功能相应的查询视图:

(1)客户信息查询视图

CREATE VIEW 客户信息查询

AS SELECT * FROM 客户

(2)客房信息查询

CREATE VIEW 客房信息查询

AS SELECT

* FROM 客房

(3)入住信息查询

CREATE VIEW 入住登记信息查询 AS SELECT

* FROM 入住登记

(4)入住信息查询

CREATE VIEW 入住信息查询

AS SELECT入住登记.客房编号,客户名称,入住登记.客户编号,客房.客房类型,价格,使用状态

FROM 客房,客户,入住登记

WHERE 客房.客房编号=入住登记.客房编号 AND 入住登记.客户编号=客户.客户编号

---------------建立索引-----------------------1.3建立索引及数据入库

1.建立客房编号,价格,客户编号,客户名称的索引 创建客房表索引:

CREATE UNIQUE INDEX UKF ON 客房(客房编号,价格)

创建客户表索引:

CREATE UNIQUE INDEX UKH ON 客户(客户编号,客户名称)

创建入住表索引:

CREATE UNIQUE INDEX URZ ON 入住登记(客户编号,客房编号)2.数据入库

方法一 酒店管理系统包括客房信息表,客户信息表,入住登记信息表。采用Excel中录入数据,然后使用SQL Server 2000数据导入、导出功能直接将数据导入到相应的基本表。

方法二 在查询分析器中插入相关数据,用SQL语句插入。

----------创建存储过程----------------------1.4建立存储过程

1.4.1客房信息存储过程

插入客房信息存储过程:

CREATE PROCEDURE 插入客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS INSERT INTO 客房 VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)

修改客房信息存储过程:

CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房

SET 客房类型=@KFL,价格=@JG,床位数=@CWS,使用状态=@SYZT WHERE 客房编号=@KFB 删除客房信息存储过程:

CREATE PROCEDURE 删除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房编号=@KFB

1.4.2客户信息存储过程

插入客户信息

CREATE PROCEDURE 插入客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS INSERT INTO 客户 VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)修改客户信息

CREATE PROCEDURE 修改客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS UPDATE 客户

SET 客户名称=@KFM,身份证号=@SFZ,联系地址=@LXDZ,联系电话=@LXDH WHERE 客户编号=@KHB

删除客户信息

CREATE PROCEDURE 删除客户信息(@KHB CHAR(8))AS DELETE FROM 客户

WHERE 客户编号=@KHB

EXEC 删除客户信息 @KHB='10009'

3.4.3创建入住信息存储过程 插入入住信息

CREATE PROCEDURE 插入入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS INSERT INTO 入住登记 VALUES(@KFB,@KHB,@YDRQ,@YDSL)

修改入住信息

CREATE PROCEDURE 修改入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS UPDATE 入住登记

SET 客房编号=@KFB,预定日期=@YDRQ ,预定数量=@YDSL WHERE 客户编号=@KHB

删除入住信息

CREATE PROCEDURE 删除入住信息(@KHB CHAR(8))AS DELETE

FROM 入住登记

WHERE 客户编号=@KHB

1.5查询存储过程的创建

客房编号查询

CREATE PROCEDURE 客房编号查询(@KFB CHAR(8), @KFL CHAR(8)OUTPUT, @JG SMALLMONEY OUTPUT, @CWS INT OUTPUT, @SYZT CHAR(8)OUTPUT)AS SELECT @KFL=客房类型,@JG=价格,@CWS=床位数,@SYZT=使用状态 FROM 客房

WHERE 客房编号=@KFB

客户编号查询

CREATE PROCEDURE 客户编号查询(@KHB CHAR(8), @KFM CHAR(10)OUTPUT , @SFZ CHAR(18)OUTPUT, @LXDZ CHAR(25)OUTPUT, @LXDH CHAR(10)OUTPUT)AS SELECT @KFM=客户名称,@SFZ=身份证号,@LXDZ=联系地址,@LXDH=联系电话 FROM 客户

WHERE 客户编号=@KHB

入住客户编号查询

CREATE PROCEDURE 入住客户编号查询(@KFB CHAR(8)OUTPUT, @KHB CHAR(8), @YDRQ DATETIME OUTPUT, @YDSL INT OUTPUT)AS SELECT @KFB=客房编号,@YDRQ=预定日期,@YDSL=预定数量 FROM 入住登记

WHERE 客户编号=@KHB

--------建立触发器--------------1.6、建立触发器保证数据的一致性

客房使用状态的控制

CREATE TRIGGER 控制触发器

ON 入住登记 FOR INSERT AS

UPDATE 客房

SET 使用状态='使用中' WHERE 客房编号=ANY(SELECT 客房编号 FROM INSERTED)

控制入住信息删除的触发器

CREATE TRIGGER 入住删除触发器

ON 入住登记 FOR DELETE AS BEGIN DELETE FROM 客户 WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)

UPDATE 客房

SET 使用状态='未使用' WHERE 客房编号=ANY(SELECT 客房编号 FROM DELETED)END 客户信息删除的控制

CREATE TRIGGER 客户删除触发器

ON 客户

FOR DELETE AS BEGIN DELETE FROM 入住

WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)

UPDATE 客房

SET 使用状态='未使用' WHERE 客房编号=ANY(SELECT 客房编号 FROM DELETED)END

客房删除触发器

CREATE TRIGGER 客房删除触发器

ON 客房

FOR DELETE AS

DELETE FROM 入住

WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)

酒店管理系统数据库脚本

------------------------数据库初始化------set nocount on set dateformat mdy go

use master

go if exists(select * from sysdatabases where name='酒店管理系统')

/*删除在master中已存*/ /*在的名为酒店管理系统的数据库*/ drop database 酒店管理系统 go--------------------------酒店管理系统的建立-create database 酒店管理系统 on primary /*设定系统主文件*/(name='酒店管理系统_data', filename='d:酒店管理系统.mdf', size=10, maxsize=50, filegrowth=5)

log on

/*创建事务日志文件*/(name='酒店管理系统_log', filename='d:酒店管理系统.ldf', size=5, maxsize=25, filegrowth=5)go

---------(注:删除查询分析器中的以上代码后,运行以下代码)-----------------建立信息表----------use 酒店管理系统

if exists(select * from sysobjects where name='客户')drop table 客户 go print 'drop table 客户' print 'create table 客户' go /*客户信息表*/ CREATE TABLE 客户

/*创建客户信息表*/(客户编号 CHAR(8)PRIMARY KEY, 客户名称 CHAR(10)NOT NULL, 身份证号 CHAR(18)NOT NULL, 联系地址 CHAR(25), 联系电话 CHAR(10))go--------------------------插入客户数据-----------------------INSERT INTO 客户 VALUES('1001','王一',12234,'江西','3245354')INSERT INTO 客户 VALUES('1002','张三',34234,'江西','2442442')INSERT INTO 客户 VALUES('1003','李四',56465,'江西','5654645')INSERT INTO 客户 VALUES('1004','王钱',65435,'江西','5676577')INSERT INTO 客户 VALUES('1005','孙志',11464,'江西','4234343')if exists(select * from sysobjects where name='客房')drop table 客房 go print 'drop table 客房' print 'create table 客房' go /*客房信息表*/ CREATE TABLE 客房

/*创建客房信息表*/(客房编号 CHAR(8)PRIMARY KEY, 客房类型 CHAR(8)NOT NULL, 价格 SMALLMONEY NOT NULL, 床位数 INT NOT NULL, 使用状态 CHAR(8)NOT NULL)go-----------------------插入客房数据----------------------INSERT INTO 客房 VALUES('101','一',100,1,'使用中')INSERT INTO 客房 VALUES('102','二',200,2,'使用中')INSERT INTO 客房 VALUES('103','二',200,1,'使用中')INSERT INTO 客房 VALUES('104','三',300,2,'使用中')INSERT INTO 客房 VALUES('105','三',300,1,'使用中')if exists(select * from sysobjects where name='入住登记')drop table 入住登记 go print 'drop table 入住登记' print 'create table 入住登记' go /*入住登记信息表*/ CREATE TABLE 入住登记

/*创建入住登记信息表*/(客房编号 CHAR(8)FOREIGN KEY REFERENCES 客房(客房编号),客户编号 CHAR(8)FOREIGN KEY REFERENCES 客户(客户编号),预定日期 DATETIME,预定数量 INT, PRIMARY KEY(客房编号,客户编号))go

---------------插入入住登记信息数据----------------------INSERT INTO 入住登记 VALUES('101','1001',2010-10-10,1)INSERT INTO 入住登记 VALUES('102','1002',2010-12-10,1)INSERT INTO 入住登记 VALUES('103','1003',2010-12-26,1)INSERT INTO 入住登记 VALUES('104','1004',2010-12-9,1)go

-----建立索引-------------------

CREATE UNIQUE INDEX UKF ON 客房(客房编号,价格)go CREATE UNIQUE INDEX UKH ON 客户(客户编号,客户名称)go CREATE UNIQUE INDEX URZ ON 入住登记(客户编号,客房编号)go

----建立触发器-------------------------建立控制触发器(保证在客房使用状态的一致性)------if exists(select * from sysobjects where name='控制触发器')drop trigger 控制触发器 GO CREATE TRIGGER 控制触发器

ON 入住登记 FOR INSERT AS

UPDATE 客房

SET 使用状态='使用中' WHERE 客房编号=ANY(SELECT 客房编号 FROM INSERTED)go

--------建立入住删除触发器(保证信息删除的一致性)----------if exists(select * from sysobjects where name='入住删除触发器')drop trigger 入住删除触发器 GO CREATE TRIGGER 入住删除触发器

ON 入住登记 FOR DELETE AS BEGIN DELETE FROM 客户

WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)

UPDATE 客房

SET 使用状态='未使用' WHERE 客房编号=ANY(SELECT 客房编号 FROM DELETED)END go-------建立客房删除触发器(保证删除的一致性)---------if exists(select * from sysobjects where name='客房删除触发器')drop trigger 客房删除触发器 GO CREATE TRIGGER 客房删除触发器

ON 客房

FOR DELETE AS

DELETE FROM 入住

WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)go---------创建查询视图----------------

CREATE VIEW 入住信息查询

AS SELECT 入住登记.客房编号,客户名称,入住登记.客户编号,客房.客房类型,价格,使用状态

FROM 客房,客户,入住登记

WHERE 客房.客房编号=入住登记.客房编号 AND 入住登记.客户编号=客户.客户编号 go

---------建立存储过程------------------------------客房信息插入存储过程--------------------------CREATE PROCEDURE 插入客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS INSERT INTO 客房 VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)GO

--------------------客房信息修改的存储过程---------------------CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房

SET 客房类型=@KFL,价格=@JG,床位数=@CWS,使用状态=@SYZT WHERE 客房编号=@KFB go--------------------客房信息删除的存储过程---------------------CREATE PROCEDURE 删除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房编号=@KFB GO--------------------客户信息插入的存储过程---------------------CREATE PROCEDURE 插入客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS INSERT INTO 客户 VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)go--------------------客户信息修改的存储过程---------------------CREATE PROCEDURE 修改客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS UPDATE 客户

SET 客户名称=@KFM,身份证号=@SFZ,联系地址=@LXDZ,联系电话=@LXDH WHERE 客户编号=@KHB GO--------------------客户信息删除的存储过程---------------------CREATE PROCEDURE 删除客户信息(@KHB CHAR(8))AS DELETE FROM 客户

WHERE 客户编号=@KHB go--------------------入住信息插入的存储过程---------------------CREATE PROCEDURE 插入入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS INSERT INTO 入住登记 VALUES(@KFB,@KHB,@YDRQ,@YDSL)go--------------------入住信息修改的存储过程---------------------CREATE PROCEDURE 修改入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS UPDATE 入住登记

SET 客房编号=@KFB,预定日期=@YDRQ ,预定数量=@YDSL WHERE 客户编号=@KHB go--------------------入住信息删除的存储过程---------------------CREATE PROCEDURE 删除入住信息(@KHB CHAR(8))AS DELETE

FROM 入住登记

WHERE 客户编号=@KHB go--------------------客房编号查询的存储过程-----------------------if exists(select * from sysobjects where name='客房编号查询')drop procedure 客房编号查询 GO CREATE PROCEDURE 客房编号查询(@KFB CHAR(8))AS SELECT 客房类型,价格,床位数,使用状态 FROM 客房

WHERE 客房编号=@KFB go--------------------客户编号查询的存储过程-----------------------if exists(select * from sysobjects where name='客户编号查询')drop procedure 客户编号查询 GO CREATE PROCEDURE 客户编号查询(@KHB CHAR(8))AS SELECT 客户编号,客户名称,身份证号,联系地址,联系电话 FROM 客户

WHERE 客户编号=@KHB go--------------------入住信息查询的存储过程-----------------------if exists(select * from sysobjects where name='入住客户编号查询')drop procedure 入住客户编号查询 GO CREATE PROCEDURE 入住客户编号查询(@KHB CHAR(8))AS SELECT 客户编号,客房编号,预定日期,预定数量 FROM 入住登记

WHERE 客户编号=@KHB

第三篇:数据库课程设计学籍管理系统

学籍管理系统

本次数据库课程设计是以Access数据库作为后台以VB作为前台的应用型设计课程。

综合我们所学的两大课程创建应用型的数据库系统,大大的提高了我们学生的动手能力,作到了理论与实践相结合。一.题目说明:

学生学藉管理系统是典型的学藉管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。

本系统主要完成对学生情况和学生成绩的管理,包括数据库中表的添加、删除等。系统还可以完成对各类信息的浏览、添加、删除、等功能。

系统的核心是数据库中各个表联系,每一个表的修改都将联动的影响其它的表,当完成对数据的操作时系统会自动地完成数据库的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。关键字:窗体、数据库、vb6.0、access2000。

学生学籍管理系统被广泛应用于各类学校的学生学籍管理工作中,要求其具有实用性强、使用方便、效率高和安全可靠等特点。本管理系统正是围绕以上几个方面进行开发的,在开发过程中充分考虑到本系统的应用特点,并进行了大量的检验,证明其的确达到了设计的要求,是一个已具备了实际应用能力的软件。本文主要论述学生学籍管理系统的开发过程,在涉及到VB及Access中的部分知识以举例的方式进行讲解 二.总体设计:

我的总体设计如下:

(1).利用Access建立数据库,并在该数据库下创建五张表格,分别是学生表、课程表、选课表、学生选课表以及口令表。

(2)利用VB来建立界面并对它进行设计和修改,大体框架如下: FORM1 用于首界面

FORM2 用于登陆此系统的登录界面

FORM3 是主窗体,在这上面建立相应的菜单 如:文件——退出、添加用户(FORM4)数据信息——管理使用(FORM5)

基本操作——学生操作、选课操作、课程操作(FORM6、FORM7、FORM8)(3)对以上的界面进行设计以及对所要操作的部件进行编程。

三.常用控件的说明: 所有的Windows应用程序窗口或对话框,都是由诸如文本框、列表框、命令按扭、滚动条、命令菜单等组成的。VB通过控件工具箱提供了它们与用户进行交

互的可视化部件,即控件。程序开发人员只需要通过简单的操作,在窗体上安排所需要的控件,完成应用程序的用户界面设计即可。序号

名称

功能 Label标签

用于说明 Textbox文本框

用于文本输入或显示 3 Frame框架

用于组合控件 Commandbutton命令按扭

单击执行命令 5 Timer计时期

用于定时 Data数据控件

用于访问数据库

三.详细说明:

1.数据库的建立与设计:

数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一串文字或数字流。数据库中的数据可以是文字、图象、声音等。

Access数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。

(1).表(Table)——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。

(2).查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。

(3).窗体(Form)——窗体提供了一种

医院门诊管理系统数据库课程设计论文

第一篇:医院门诊管理系统数据库课程设计论文 12级软件工程专业1班数据库应用系统课程设计课程论文 .信息工程学院 《...
点击下载
分享:
最新文档
热门文章
    确认删除?
    QQ
    • QQ点击这里给我发消息
    微信客服
    • 微信客服
    回到顶部