资源描述
《数据库设计与应用》任务训练指导书
选题名称
简明门诊管理系统改成你的系统名称
姓 名
张三,李四改成本组作者
班 级
10软件332
任课教师
卢剑炜,赵金龙
学 期
2023-2023-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 2023 9
4.1 安装并配置SQL_Server2023 9
4.2 安装其他DBMS 9
4.3 小结 10
任务五 在SQL_Server2023中建立符合需求的数据库 11
5.1 数据库选型 11
5.2 物理设计 11
5.3 表结构设计 11
5.4 涉及到的SQL语句 12
5.5 小结 13
任务六 运用SSMS管理SQL_Server2023服务器 14
6.1 创建表结构 14
6.2 涉及到的SQL语句 15
6.3 小结 15
任务七 运用SQL管理SQL_Server2023服务器 16
7.1 涉及到的SQL语句 16
7.2 小结 17
任务八 运用C#.NET开发基于SQL2023的软件系统 18
8.1 存储过程 18
8.2 本项目的简朴界面 18
8.3 本项目数据库访问的部分代码 18
8.4 小结 19
任务九 运营并维护SQL_SERVER2023服务器 20
9.1 本项目安全性设计 20
9.2 SQL2023的常规维护 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 2023使用----
新建à流程图à基本流程图,也可在我给你们的.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 2023
4.1 安装并配置SQL_Server2023
安装界面
配置完毕界面放两个截图----安装SQL2023过程中、安装完毕打开SQL2023后各截一图片放上
过程中碰到的问题及解决:
(1)问题:windowsXP上不能安装EnterPrise版本。
解决:安装developer版。
(2)问题:安装过程中犯错,提醒“性能计数器规定……”,无法继续安装。
解决:修改注册表“[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib”相关数值,重新启动安装。具体参见网址你在安装过程中碰到的问题,并大体描述是如何解决的,可截图,可附网址。总之替换为你在安装过程中实际碰到的问题。
4.2 安装其他DBMS
安装界面
安装完毕界面
4.2反映的是你成功安装其他DBMS的过程,也用两幅图分别描述安装过程和安装成功。
4.3 小结
任务四…………………………………………规定重要总结在本任务中碰到的问题及解决过程、收获等。
任务五 在SQL_Server2023中建立符合需求的数据库
5.1 数据库选型
考虑到本系统中数据库与应用软件也许不在同一台电脑上,所以采用网络数据库,这里选择microsoft SQL_Server2023。
5.2 物理设计
(1)硬件环境:x86 系列CPU主频1GHz以上,内存1GB以上,网卡100/1000Mbps自适应
(2)软件环境:windowsXP操作系统,SQL_Server2023 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_Server2023服务器
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_Server2023服务器
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 '2023-9-1' and '2023-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开发基于SQL2023的软件系统
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_SERVER2023服务器
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 SQL2023的常规维护截四幅图即可
备份
还原
分离
附加
9.3 小结
任务九……………………………………规定重要总结在本任务中碰到的问题及解决过程、收获等。
展开阅读全文