资源描述
《数据库设计与应用》任务训练指导书
选题名称
简明门诊管理系统改成你的系统名称
姓 名
张三, 李四改成本组作者
班 级
10软件332
任课教师
卢剑炜, 赵金龙
学 期
- -1
综合评定_____________
目 录
任务一 全面准确地提取软件系统的数据需求 4
1.1 概述 4
1.2 项目视图与范围约束 4
1.3功能需求分析 5
1.4 数据需求分析 5
1.5 小结 5
任务二 依据数据需求设计E-R模型 6
2.1 E-R模型设计工具 6
2.2 本项目E-R模型 6
2.3 小结 6
任务三 依据E-R模型设计关系模型 8
3.1 逻辑模型设计方法 8
3.2 本项目关系模型 8
3.3 小结 8
任务四 安装并配置SQL Server 9
4.1 安装并配置SQL_Server 9
4.2 安装其它DBMS 9
4.3 小结 10
任务五 在SQL_Server 中建立符合需求的数据库 11
5.1 数据库选型 11
5.2 物理设计 11
5.3 表结构设计 11
5.4 涉及到的SQL语句 12
5.5 小结 13
任务六 利用SSMS管理SQL_Server 服务器 14
6.1 创立表结构 14
6.2 涉及到的SQL语句 15
6.3 小结 15
任务七 利用SQL管理SQL_Server 服务器 16
7.1 涉及到的SQL语句 16
7.2 小结 17
任务八 运用C#.NET开发基于SQL 的软件系统 18
8.1 存储过程 18
8.2 本项目的简单界面 18
8.3 本项目数据库访问的部分代码 18
8.4 小结 19
任务九 运行并维护SQL_SERVER 服务器 20
9.1 本项目安全性设计 20
9.2 SQL 的常规维护 20
9.3 小结 20
说明:
1.全文除首页、 目录、 代码、 标题外, 正文字体全部是: 中文宋体、 英文times new roman, 小四, 单倍行距; 每一大段必须新起一页; 代码有关的文字采用五号或10。
2.所有内容完成后右键更新下目录, 并将目录字体设置为小四;
3.文档按小组为单位制作, 两人交一份;
4, 文档是否打印待课程结束后再听通知;
5.实训经过答辩后, 前请各位将源码及打印好的实训报告交给课代表, 课代表12月31日( 周四) 前把打印的实训报告( 除封面和目录外建议双面打印) 、 实训报告电子稿和源码用U盘拷给我。
6.电子资源要求( 课代表注意) :
>根目录下是按项目名命名的文件夹;
>每个文件夹下是一个文档和一个RAR文件, 文件名命名规则”学号_姓名.doc”, 如”1_张三.doc”; rar文件中存放的是本系统的数据库备份文件和项目源文件;
任务一 全面准确地提取软件系统的数据需求
1.1 概述
本系统的目的是建立一个简明的门诊管理系统, 该系统由两部分组成: 工作员挂号模块和医生诊疗模块, 该系统能够为门诊病人提供挂号、 就诊的服务。涉及到的人员有: 病人、 医院挂号员和医生。
病人看病流程: 挂号处排队→挂号、 交费、 拿挂号单→带着挂号单去门诊科室排队→医生看病→缴费、 拿药→结束
挂号员工作流程: 凭用户名、 密码登陆挂号系统→……→询问病人信息、 挂号科室、 收费→录入系统、 打印挂号单→下一位病人挂号→……
医生诊疗流程: 凭用户名、 密码登陆门诊系统→……→呼叫下一位病人→询问病情、 给出诊断、 开药→录入系统→呼叫下一位病人→这里要写清楚----
1, 系统目的、 作用
2, 项目涉及的各主体基本流程
……
1.2 项目视图与范围约束
为了让案例清晰易懂, 在不影响整体门诊流程的情况下, 我们刻意忽略了以下一些会急剧增加软件复杂度的元素:
( 1) 专家门诊。一般三级医院都开设有专家门诊, 与普通门诊并行, 医生来自同一个科室却采用不同的挂号计费方式, 若增加专家门诊, 挂号、 就诊等将会非常复杂, 因此暂不考虑专家门诊。
( 2) 挂号员、 医生、 后台管理员的排班制。实际医院各部门都会有排班制度, 员工不当班时是无法登陆HIS的, 若增加则权限管理复杂度上升, 本系统暂时忽略。
( 3) 医保。实际医院会根据病人医保性质的不同而采用各异的计费方式, 如城市医保、 农保、 老干部等, 本系统暂时忽略。
( 4) 化验检测及药房。病人就诊时有时需要做化验或仪器检查, 这就涉及到与化验检验工作站的对接, 本系统暂不考虑化验与仪器检验, 假设所有病人只需要医生问诊即可诊断; 医生开药会涉及药房管理模块的对接, 本系统假设医生开药以文本的形式保存在诊疗记录中。
( 5) 系统管理员。医院基础数据, 如医生信息、 科室信息等都需要管理员事先录入, 这一部分与当前系统关联不大, 故忽略。
( 6) 各类日志。从安全角度考虑, 一般HIS都会设置日志功能, 记录用户的各种操作, 本简明系统暂忽略。
( 7) 一些涉及医院管理规章的数据暂不专门设置数据库来管理, 如每天挂号人数上限, 医生看病人数上限, 工作时间等。
( 8) 不考虑特殊情况: 病人挂号后去看病( 在本系统中将出现医生死等情况本节说清楚本系统有哪些不考虑
) 。
1.3功能需求分析
1.3.1挂号员
( 1) 挂号员能够根据用户名和密码登陆挂号系统, 也能够退出系统;
( 2) 挂号员能够添加新挂号的病人信息( 姓名、 性别、 年龄、 家庭住址) , 也能够查阅以前挂过号的病人基本信息;
(3) 挂号员根据病人的要求, 为其选择相应的科室, 由系统自动排就诊顺序, 并打印挂号单;
( 4) 挂号员能够看到今天所有挂号情况( 病人姓名、 科室、 挂号费、 时间) ;
( 5) 挂号员能够为病人退号。
1.3.2门诊医生
( 1) 医生能够根据用户名和密码登陆门诊系统, 也能够退出系统;
( 2) 医生能够查看当前病人的基本信息( 病历本号、 姓名、 性别、 年龄、 家庭住址) , 并可修改;
( 3) 医生能够查看当前病人的既往病史: 以往在本院的看病信息( 时间、 医生、 科室、 诊断) , 也能够查看每次看病的具体情况( 症状、 诊断、 配药、 备注) ;
( 4) 医生根据当前病人的实际情况录入: 症状、 诊断、 配药、 备注;
( 5) 医生在当前病人看病结束后召唤本科室下一位病人。
1.4 数据需求分析
( 1) 医院有多个科室, 每个科室有多位医生; 一位医生只能属于一个科室;
( 2) 系统需要记录科室的名称、 科室地址等信息;
( 3) 系统需要记录医生的工号、 姓名、 性别、 职称、 登陆名、 密码、 所属科室等信息;
( 4) 系统需要记录挂号员的工号、 姓名、 登陆名、 密码等信息;
( 5) 系统需要记录病人的病例号、 姓名、 性别、 出生年月、 家庭地址、 就诊状态等信息;
( 6) 挂号员在给病人挂号时需要记录: 挂号时间、 挂号科室、 挂号费等;
( 7) 医生看病时需记录该病人的症状、 诊断、 配药, 并做适当备注;
( 8) 一个病人只能有一个就诊状态; 就诊状态需要记录编号、 名称、 备注信息;
1.5 小结
任务一花了很多时间进行了修改, 特别是软件功能需求和数据需求, 主要问题是我们第一次做软件, 没有计算机思想, 用文档描述现实需求的能力较弱, 这需要老师进行多次指导。
当然, 经过进行数据需求分析, 我们切实感受到软件开发的一般过程, 领会到将客观世界转化为文字描述的复杂性与难度。本数据需求我们先后改了5遍, 剔除了很多容易引起误解或增加复杂度的部分, 现在应该能基本满足课程要求主要总结在数据需求过程中遇到的问题及解决过程。
。
任务二 依据数据需求设计E-R模型
2.1 E-R模型设计工具
Microsoft Visio 使用----
新建à流程图à基本流程图, 也可在我给你们的.vsd文件上复制、 修改;
直线画法à右键线条, 选择直线;
几对几联系画法à双击线条输入数字, 后能够拖动数字。
2.2 本项目E-R模型
注意----
实体集、 联系集、 属性、 主码、 几对几联系, 联系集的属性
2.3 小结
任务二…………………………………………要求主要总结在本任务中遇到的问题及解决过程、 收获等。
任务三 依据E-R模型设计关系模型
3.1 逻辑模型设计方法
( 1) 每个实体集转化为一个关系模式, 其中: 实体集的名称转化为关系模式的名称, 实体集的属性转化为关系模式的属性, 实体集的码转化为关系模式的码。
( 2) 将联系集转化为关系模式, 分三种情况两种处理: 一对多的联系集向多的一方合并; 多对多的联系集生成新的关系模式; 一对一的联系集往多的一方合并或生成新的关系模式。
( 3) 确定参照完整性。
( 4) 综合评价3.1这一节能够不改
。
3.2 本项目关系模型
病人( 病人ID, 姓名, 性别, 出生年月, 家庭地址, 就诊状态) 就诊状态是外码;
医生( 医生ID, 登录名, 密码, 姓名, 性别, 所属科室, 职称) 所属科室是外码;
科室( 编号, 科室名, 科室地址) ;
挂号员( 挂号员ID, 姓名, 登录名, 密码) ;
就诊状态( ID, 就诊状态名, 备注) ;
挂号( ID, 病人ID, 科室ID, 挂号员ID, 挂号时间, 挂号费用, 就诊次序) 病人ID、 科室ID、 挂号员ID是外码;
诊疗( ID, 医生ID, 病人ID, 诊疗时间, 症状, 诊断, 配药, 备注) 病人ID、 医生ID是外码3.2节注意----
主码、 外码; 能够不写E-R模型转化为关系模型的过程
。
3.3 小结
任务三…………………………………………要求主要总结在本任务中遇到的问题及解决过程、 收获等。
任务四 安装并配置SQL Server
4.1 安装并配置SQL_Server
安装界面
配置完成界面放两个截图----安装SQL 过程中、 安装完成打开SQL 后各截一图片放上
过程中遇到的问题及解决:
( 1) 问题: windowsXP上不能安装EnterPrise版本。
解决: 安装developer版。
( 2) 问题: 安装过程中出错, 提示”性能计数器要求……”, 无法继续安装。
解决: 修改注册表”[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib”相关数值, 重新启动安装。具体参见网址你在安装过程中遇到的问题, 并大致描述是如何解决的, 可截图, 可附网址。总之替换为你在安装过程中实际遇到的问题。
4.2 安装其它DBMS
安装界面
安装完成界面
4.2反应的是你成功安装其它DBMS的过程, 也用两幅图分别描述安装过程和安装成功。
4.3 小结
任务四…………………………………………要求主要总结在本任务中遇到的问题及解决过程、 收获等。
任务五 在SQL_Server 中建立符合需求的数据库
5.1 数据库选型
考虑到本系统中数据库与应用软件可能不在同一台电脑上, 因此采用网络数据库, 这里选择microsoft SQL_Server 。
5.2 物理设计
( 1) 硬件环境: x86 系列CPU主频1GHz以上, 内存1GB以上, 网卡100/1000Mbps自适应
( 2) 软件环境: windowsXP操作系统, SQL_Server Developer Edition
( 3) 存储路径按SQL_Server安装路径, 文件参数、 索引等按数据库默认参数。
5.3 表结构设计
Patient 病人
字段
数据类型
长度
允许空
主码
缺省值
说明
p_ID
Int
4
否
是
病人ID, 病例编号, 自动编号
p_Name
Nvarchar
50
是
否
病人姓名
p_Sex
Nvarchar
1
是
否
病人性别
p_Birth
smallDatetime
是
否
出生年月
p_Address
Nvarchar
200
是
否
家庭地址
p_Status
Int
是
否
就诊状态, 外码
Doctor 医生
字段
数据类型
长度
允许空
主码
缺省值
说明
d_ID
Int
4
否
是
医生工号, 自动编号
d_Name
nvarchar
50
是
否
姓名
d_Sex
Nvarchar
1
是
否
性别
d_DepID
Int
4
否
否
所属科室编号, 外码
d_Profession
Nvarchar
10
是
否
职称
d_LoginName
Nvarchar
50
是
否
系统登录名
d_LoginPSW
Nvarchar
50
是
否
系统登陆密码
Department 科室
字段
数据类型
长度
允许空
主码
缺省值
说明
dep_ID
Int
4
否
是
科室编号, 自动编号
dep_Name
Nvarchar
50
是
否
科室名
dep_Address
Nvarchar
200
是
否
科室地址
Diagnosis看病
字段
数据类型
长度
允许空
主码
缺省值
说明
dia_ID
Bigint
8
否
是
看病编号, 自动编号
dia_PatientID
Int
4
是
否
病人ID, 外码
dia_DoctorID
int
4
是
否
医生ID, 外码
dia_Time
datetime
8
是
否
诊疗时间
dia_Symptom
Nvarchar
1000
是
否
症状
dia_Diagnosis
Nvarchar
1000
是
否
诊断
dia_Dispense
Nvarchar
1000
是
否
配药
dia_Remark
Nvarchar
1000
是
否
备注
Register挂号
字段
数据类型
长度
允许空
主码
缺省值
说明
reg_ID
Bigint
8
否
是
挂号编号, 自动编号
reg_PatientID
Int
4
是
否
病人ID, 外码
reg_DepID
Int
4
是
否
部门ID, 外码
reg_Time
Datetime
8
是
否
挂号时间
reg_Fee
Int
4
是
否
挂号费用
reg_Order
Int
4
是
否
就诊序号
reg_WorkerID
Int
4
是
否
挂号员ID, 外码
PatientStatus 病人状态
字段
数据类型
长度
允许空
主码
缺省值
说明
ps_ID
Int
4
否
是
状态编号, 自动编号
ps_Name
Nvarchar
20
是
否
状态名
ps_Remark
Nvarchar
100
是
否
状态说明
Worker 挂号员
字段
数据类型
长度
允许空
主码
缺省值
说明
w_ID
Int
4
否
是
挂号编号, 自动编号
w_Name
Nvarchar
20
是
否
姓名
w_LoginName
Nvarchar
50
是
否
登录名
w_LoginPSW
Nvarchar
50
是
否
登陆密码
5.4 涉及到的SQL语句
Create database HIS改成你所创立的数据库名称
5.5 小结
任务五…………………………………………要求主要总结在本任务中遇到的问题及解决过程、 收获等。
任务六 利用SSMS管理SQL_Server 服务器
6.1 创立表结构此大图如此获得:
双击打开HIS数据库, 第一个选项”数据库关系图”右键, 选择”新建数据库关系图”
6.2 涉及到的SQL语句本节请根据实际数据库使用以下关键词各写一个实际SQL语句:
Create table, alter table ,drop table ;insert ,update ,delete,create index
---à所有语句必须经过SQL调试, 最好是从SQL调试器中复制过来的( 会自动有颜色分辨)
à并有注释, 用--引导
( 1) 创立表结构
--创立病人表
create table patient
(
p_ID int primary key ,
p_name nvarchar(50) ,
p_sex nvarchar(1),
p_birth smalldatetime,
p_address nvarchar(200),
p_status int,
foreign key (p_status) references patientstatus(ps_id这里换成你的数据库所涉及到的某个表的创立语句-à别忘了约束! !
),
)
( 2) 修改表结构
--修改病人表, 增加一列身份证号码ccid
Alter table patient add ccid nvarchar(18)
( 3) 删除表结构
--删除病人表
Drop table patient
( 4) 插入数据
--插入一行新病人信息
Insert into patient (p_name,p_sex,p_address,p_status) values ('王小丫','女',NULL,4)
( 5) 修改数据
--修改病人信息
Update patient set p_address='常州市新北区黄河中路号' where p_id = 12
( 6) 删除数据
--删除某个病人
Delete from patient where p_id=12
( 7) 创立索引
--为挂号表在病人ID列上增加非聚集索引
create index i_reg_pid on register(reg_patientid)
6.3 小结
任务六…………………………………………要求主要总结在本任务中遇到的问题及解决过程、 收获等。
任务七 利用SQL管理SQL_Server 服务器
7.1 涉及到的SQL语句自己思考本系统可能用到哪些查询语句, 也能够假想一些查询, 必须包含一下六条分类。
简单查询à单表, 只用到select和from;
连接查询; 子查询; 复杂的单表查询à要用到select的六个关键词;
复杂的多表查询à要用到两张以上表, 且用到select的六个关键词;
创立视图。
( 1) 简单查询
--查询所有病人姓名、 年龄
select p_name as 姓名, year(getdate())-year(p_birth)+1 as 年龄
from patient
( 2) 连接查询
--查询与吕正太医生同科室的医生信息
select doctor.*
from doctor,doctor as D2
where doctor.d_depid=D2.d_depid and D2.d_name='吕正太'
( 3) 子查询
--查询与吕正太医生同科室的医生信息
select *
from doctor
where d_depid=(select d_depid from doctor where d_name='吕正太')
( 4) 复杂的单表查询
--查询男医生人数大于2的科室编号及男医生人数,结果按男医生人数降序排列
select d_depid as 科室编号,count(d_id) as 男医生人数
from doctor
where d_sex='男'
group by d_depid
having count(d_id)>2
order by 男医生人数
( 5) 复杂的多表查询
--统计年月份看病人次不少于的医生姓名、 次数, 结果按照次数降序排列
select doctor.d_name,count (diagnosis.dia_id) as 人次
from doctor ,diagnosis
where (doctor.d_id=diagnosis.dia_doctorid) and (diagnosis.dia_time between ' -9-1' and ' -9-30')
group by doctor.d_name
having count (diagnosis.dia_id)>=1
order by 人次desc
( 6) 创立视图
--创立视图V_呼吸科医生, 反应的是呼吸科的医生信息
create view v_呼吸科医生
as
select *
from doctor
where d_depid=(select dep_id from department where dep_name='呼吸科')
7.2 小结
任务七…………………………………………
要求主要总结在本任务中遇到的问题及解决过程、 收获等。
任务八 运用C#.NET开发基于SQL 的软件系统
8.1 存储过程只需要写一个存储过程, 但要求有:
两个以上输入参数, 至少一个输出参数
--老病人挂号UP_InsertRegisterOld
--输入参数有个, 输出参数个, 若<0则表示挂号失败, 若>0则表示挂号编号, 即reg_id值
create procedure UP_InsertRegisterOld
@reg_patientid int,
@reg_depid int,
@reg_fee int,
@reg_workerid int,
@r_flag int output
as
begin
declare @reg_order int
select @reg_order =max(reg_order) from register where (reg_depid=@reg_depid) and ((datediff(day,reg_time,getdate())=0))
if @reg_order is null set @reg_order =1
else set @reg_order=@reg_order+1
--从挂号信息中取得该科室挂号序号, 若本科室未有挂号病人, 则该病人序号设置为
insert into register (reg_patientid,reg_depid,reg_time,reg_fee,reg_order,reg_workerid)
values (@reg_patientid,@reg_depid,getdate(),@reg_fee,@reg_order,@reg_workerid)
--插入当前病人挂号信息
if @@error<>0 set @r_flag=-1 else set @r_flag=@@identity
end
8.2 本项目的简单界面用C#.NET将本软件的界面画出来, 然后截图
8.3 本项目数据库访问的部分代码只需要放与数据库有关的C#代码
8.4 小结
任务二…………………………………………要求主要总结在本任务中遇到的问题及解决过程、 收获等。
任务九 运行并维护SQL_SERVER 服务器
9.1 本项目安全性设计本项目安全性设计比较简单, 你的项目同样类似设置即可
--为服务器增加一个新登录名usr_his_soft, 为his数据库增加一用户his_admin, 权限为db_owner, 并将这两个用户相关联; 后软件经过该登录名访问HIS数据库。
sp_addlogin 'usr_his_soft' , 'HIStest' ,'HIS'
sp_adduser 'usr_his_soft','his_admin','db_owner'
9.2 SQL 的常规维护截四幅图即可
备份
还原
分离
附加
9.3 小结
任务九……………………………………要求主要总结在本任务中遇到的问题及解决过程、 收获等。
展开阅读全文