中南大学数据库课程设计报告.docx

上传人:b****6 文档编号:13094389 上传时间:2023-06-11 格式:DOCX 页数:23 大小:983.27KB
下载 相关 举报
中南大学数据库课程设计报告.docx_第1页
第1页 / 共23页
中南大学数据库课程设计报告.docx_第2页
第2页 / 共23页
中南大学数据库课程设计报告.docx_第3页
第3页 / 共23页
中南大学数据库课程设计报告.docx_第4页
第4页 / 共23页
中南大学数据库课程设计报告.docx_第5页
第5页 / 共23页
中南大学数据库课程设计报告.docx_第6页
第6页 / 共23页
中南大学数据库课程设计报告.docx_第7页
第7页 / 共23页
中南大学数据库课程设计报告.docx_第8页
第8页 / 共23页
中南大学数据库课程设计报告.docx_第9页
第9页 / 共23页
中南大学数据库课程设计报告.docx_第10页
第10页 / 共23页
中南大学数据库课程设计报告.docx_第11页
第11页 / 共23页
中南大学数据库课程设计报告.docx_第12页
第12页 / 共23页
中南大学数据库课程设计报告.docx_第13页
第13页 / 共23页
中南大学数据库课程设计报告.docx_第14页
第14页 / 共23页
中南大学数据库课程设计报告.docx_第15页
第15页 / 共23页
中南大学数据库课程设计报告.docx_第16页
第16页 / 共23页
中南大学数据库课程设计报告.docx_第17页
第17页 / 共23页
中南大学数据库课程设计报告.docx_第18页
第18页 / 共23页
中南大学数据库课程设计报告.docx_第19页
第19页 / 共23页
中南大学数据库课程设计报告.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

中南大学数据库课程设计报告.docx

《中南大学数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《中南大学数据库课程设计报告.docx(23页珍藏版)》请在冰点文库上搜索。

中南大学数据库课程设计报告.docx

中南大学数据库课程设计报告

 

中南大学数据库课程设计报告

数据库

课程设计报告

学院:

 信息科学与工程学院

专业班级:

 物联网工程1201班

指导老师:

   盛津芳

学号:

 0909120122

姓名:

  李浩

日期:

 2015年1月10日

 

课程设计要求

《数据库课程设计》任务书

1任务概述

某医院拟开发一个挂号系统,以方便患者就医,提高医疗服务水平。

患者在医院就诊前需要提供姓名、身份证号码、联系电话等个人信息并办理一张诊疗卡,该诊疗卡在每次挂号时需要出示给挂号的工作人员。

患者在挂号时,需说明科室名称以及医生的职称。

挂号以半个工作日为一个班次,系统中保存各科室门诊医生的排班表,每位医生每个班次能够接诊的病人人数可设置一个上限。

本次课程设计要求设计并实现一个虚拟的医院挂号系统。

系统中包含两个子系统,即由医院内部工作人员使用的挂号系统,以及患者使用的网上预约挂号系统。

其中网上预约挂号系统的前端要求是浏览器,即采用B/S模式开发。

医院工作人员使用的挂号系统采用C/S模式开发,前端开发工具不限,可采用PowerBuilder,Delphi,VB,VC,Java等。

后台数据库要求采用SQLSERVER2005或Oracle11g及以上版本。

2功能描述

2.1医院工作人员使用的挂号系统

该系统仅供医院内部工作人员使用,主要分为挂号人员和系统管理人员两类角色,需提供以下功能:

1)办理诊疗卡。

患者提供姓名、身份证号码、联系电话等个人信息,挂号人员为其办理一张长期有效的诊疗卡。

2)挂号。

挂号人员根据患者要求的科室、医生职称分配一个候诊号,并收取相应的诊疗费用,诊疗费用根据医生的职称分为不同的档次。

医生当班次接诊患者人数不能超过预先设定的上限。

3)修改挂号。

患者可更改就诊的科室,挂号人员根据更改后的科室和医生职称,重新计算诊疗费用的差值,多退少补。

4)查询挂号情况。

挂号人员可查询某位医生目前的挂号情况。

5)挂号费当班结转。

系统对每个班次收取的挂号费生成相应的统计表,并提供查询功能,包括该班次总的挂号费用、各个挂号人员该班次总的挂号费用、各位医生该班次总的挂号费用。

6)参数维护。

系统管理人员负责维护各种参数,包括科室、医生、医生排班表、号类字典。

医生的基本信息、排班表、诊疗费标准、各班次医生接诊人数上限都是可以修改的,尽量提高系统的灵活性和可扩展性。

7)系统维护。

系统管理人员负责管理用户、分配权限、管理密码。

2.2网上预约挂号系统

该系统供患者使用,需提供以下功能:

1)用户注册。

提供注册所需基本信息,必须实名注册。

2)用户可修改注册信息。

3)用户可查询指定时间的某科室的医生排班表。

4)用户可以在网上预约挂号。

系统不提供当日预约服务,用户可预约部分科室次日至一个月内的就诊号源。

同一患者实名(有效证件号)在同一就诊日、同一科室只能预约一次;在同一就诊日的预约总量不可超过两次;在一个月内的预约总量不可超过三次。

2.3安全性控制要求

1)所有用户密码在数据库中都要求加密存储。

2)网上预约挂号系统要进行输入验证,防止SQL注入。

3)系统管理员只能进行系统维护和参数维护,不能进行挂号操作。

实验环境:

电脑:

联想G460

操作系统:

Windows8.164位

语言:

Java、JavaScript、JSP、HTML、SQL

编程工具:

EclipseIDEforJavaEEDevelopers(Kepler版)

数据库:

MySQL5.6.21

数据库工具:

MySQLWorkbench6.2CE、navicat

其他工具:

SublimeText2

概要设计:

(数据库)

E-R图

1

n

1n1n

m

n

除了上面的E-R图,数据库中还有另外三张表,分别是管理员表(Administrator)、员工表(Worker)、结算表(Calculate)

物理模型

用MySQLWorkbench所建

管理员表、员工表、结算表

备注:

由于数据库模型是在课设最初建立的,后期根据编程的需求对表结构有了不少修改,虽然后来根据对表的修改已经对Model进行了更新,但可能仍有略微不同

概要设计:

(程序)

系统主要功能

管理员

更改科室

更改职称

排班表

管理用户

办理诊疗卡

管理密码

员工

详细设计(数据库)

表结构

Doctor表(医生表)

Patient表(诊疗卡表)

Arrangement表(排班表)

Orderregist表(挂号表)

Calculate表(结算表)

DoctorLevel表(级别表)

备注:

其他几张表结构太简单,就不一一列举了。

视图

该系统中暂时只用到了一个视图,用于将Doctor表、Arrangement表、Doctorlevel表、Department表Join起来,方便查询。

存储过程

一共用到了4个存储过程

分别是

procedure_calculate:

用来结算

procedure_find_registinfo:

用来找到挂号信息

procedure_regist:

用来挂号

procedure_update_regist:

用于修改挂号

下面是procedure_regist的部分代码:

ifregcount>0

THEN

insertintoorderregistVALUES(null,patId,doId,deId,regDate,regTime,cost,worId,isCalculate);

updatearrangementsetArrangeAccptCount=ArrangeAccptCount-1;

ENDIF;

这里用来判断剩余的接诊人数是否大于零,如果大于零则能挂号,否则不能。

详细设计(程序)

如上图所示,整个系统写了很多个类,很多个jsp页面,以下介绍一下各个包的功能,然后就几个重要的类简单介绍一下。

Action包:

主要是对用户和管理员的Action事件进行处理。

App包:

许多个Thread类,用于务器与客户端进行通讯。

Bean包:

许多bean类,也是为JavaBean技术服务的重要一部分。

Commom包:

许多公共类,包括:

Conf类:

通讯协议。

Constants类:

SQL语句集合。

Dbcp类:

获取数据库连接对象。

Log类:

为了调试所用(跟系统功能关系不大)

PageBean类:

分页类

Dao包:

许多对数据库的操作。

ViewAdmin包:

管理员界面包。

ViewWorker包:

工作人员界面包。

WebContent中Main包,主要是包含很多JSP页面。

系统展示

C/S端

以员工身份登录后,可以看到如下图所示。

系统中有

诊疗卡的操作、预约挂号、挂号信息的查看与修改、排班表、挂号费结算。

添加诊疗卡的信息

双击表格后,弹出对信息修改界面

预约挂号界面,可以选择挂号的日期已经班次。

然后系统会根据时间和班次、科室、级别筛选出医生。

这里可以查到挂号的信息。

排班信息

挂号费的结算(前两条信息是我手动添加的)

以管理员身份登陆后,可以看到如下图所示。

系统中有

科室的操作、医生、排班表、工作人员、诊疗费标准。

可以对诊疗费用进行修改

其他功能大同小异,就不一一列举了。

B/S端

B/S端登录界面

B/S端主界面

B/S端注册界面

信息查看和修改

查看医生排版表

预约挂号界面

安全性控制

MD5加密

MD5的全称是Message-DigestAlgorithm5(信息-摘要算法),在90年代初由MITLaboratoryforComputerScience和RSADataSecurityInc的RonaldL.Rivest开发出来,经MD2、MD3和MD4发展而来。

---摘自XX百科

关键代码如下:

privatestaticStringencodeByMD5(StringoriginString){

if(originString!

=null){

try{

MessageDigestmd=MessageDigest.getInstance("MD5");

//使用指定的字节数组对摘要进行最后更新,然后完成摘要计算

byte[]results=md.digest(originString.getBytes());

//将得到的字节数组变成字符串返回

StringresultString=byteArrayToHexString(results);

Stringpass=resultString.toUpperCase();

returnpass;

}catch(Exceptionex){

ex.printStackTrace();

}

}

returnnull;

}

防SQL注入

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。

前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。

基于此,SQL注入的产生原因通常表现在以下几方面:

①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。

---摘自XX百科

在JSP中,我都是采用的setParameter的方法来传递参数,也就是采用post方式来传参,因此大大降低了SQL注入的风险

此外,在登录等含有输入框的地方,我也都验证了输入的合法性,过滤了所有的可疑字符。

关键技术

1、在C/S端,主要用到了信息的加密技术,防注入技术,其他的更多的是对Java编码能力的考量。

2、在B/S端,用到了JavaBean、JSP、EL、JavaWeb对数据库的操作以及加密技术,防注入等等技术

心得体会

经过近一个月紧张的数据库课程设计,加之中间还夹杂着两个考试,自己已经累得不成样子了。

不过,虽然很累,但是自己还是学到了不少的东西。

以下分几个方面谈谈自己的心得。

1、对Java编程能力的提高。

编完这个系统,我用Eclipse计算了一下,光Java代码就有5800多行,中间也用到了继承、接口等高级一点的编程方法,近7000行代码对于大三的学生来说,不多不少吧。

以前也编过几个工程量大致相当的project,从project中锻炼自己的能力,这一点对自己帮助还是挺大的。

毕竟嘴上说谁都会,但是动起手来就会遇到形形色色各种问题。

所以说,这次的课设对自己的逻辑锻炼还是蛮大的,对Java的理解也加深了一点。

也学会了很多新的API,诸如JTable、JInternalFrame、JComboBox等等。

2、JavaWeb入门。

以前虽然一直都想学习JavaWeb方面的知识,也一直有在看Web方面的书籍,但是毕竟没有动力、导致学习效率低下。

这次接触了到数据库的课程设计,在Deadline的强大压力之下,逼着自己去快速的学习JavaWeb知识。

回想起当初,结合自己此前JavaSE、Android、HTML、XML的基础,其实JavaWeb入门很容易,不到一天就能编出像样的东西了。

后来由于时间有限,我B/S端做的并不是很好,寒假里再去深入去学习吧。

3、数据库知识加强。

虽然以前上过数据库的课程,也做了数据库的实验。

可是那个东西毕竟太抽象,知识仅仅停留在纸面上。

此前做的几个project也经常用到数据库,但是也仅仅是几个简单的Select就能搞定的难度,像这样的完整做一个管理系统,此前还未曾尝试过。

所以这次无论是从SQL语法而言、还是对数据库知识的复习,自己的数据库知识的都有很大的提升。

系统中也用到了视图、存储过程等等,这些东西此前都没有真正实战过,所以这次还是有蛮大的收货,至少以后再次遇到就不会那么陌生了。

4、其他方面。

经过这次数据库的课设,自己也懂得了不少的道理。

没有压力就没有动力,没有动力就会导致效率低下。

就拿JavaWeb而言,此前就很想学习了,可是一直就拖着,今天看一点明天看一点,导致在数据库课设之前,自己的JavaWeb基础几乎为零。

但是有了数据库课设的这个动力,也就几天时间就从Web零基础入门了,能写简单的几个页面了,也能实现几个简单的操作。

所以说,凡事不要总是拖着去做,有时间就赶紧学了,不要等到需要用的时候再去学习,到时候就来不及了。

书到用时方恨少。

5、关于数据库课设的一点建议。

这里仅仅是自己的一点看法,也许不一定对。

关于这个课设,如果仅仅是只做一端(C/S、B/S仅做一方面,但是功能必须全)的话,如果把时间放久一点,就难度和工程量而言基本上是合理的。

但是如果是做两端的话,个人认为,这仅仅是数据库的课设,应该把重心放在数据库上面,而不是重点考察编程能力,对编程能力的考量以后还有Java课设等等。

所以这也是我为什么认为只需要做一端的主要原因。

因为做一端的话,数据库的知识基本上都考察到位了,也降低了不少的编程量。

就我个人而言,在整个工程上面,花在数据库部分的时间为10%-15%左右,其余时间基本上都在花在编程上面的。

这也是我认为不合理的地方,所以我认为应该对数据库的知识重点考量,相对的,编程量应该可以减少。

不过这也仅仅是一方面吧,难度大了,所以自己提高也就多了,这也是好处。

 

6、这次的课设做的还并不很完善,以后有机会再去完善一下。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2