中南大学数据库课程设计报告_第1页
中南大学数据库课程设计报告_第2页
中南大学数据库课程设计报告_第3页
中南大学数据库课程设计报告_第4页
中南大学数据库课程设计报告_第5页
免费预览已结束,剩余19页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库课程设计报告学 院:信息科学与工程学院专业班级:物联网工程1201班指导老师:盛津芳学 号:0909120122姓 名:李浩日 期:2期5年1月10日课程设计要求3.概要设计: (数据库) 5.概要设计: (程序) 7.详细设计(数据库) 8.详细设计(程序) 1.1.系统展示 1.2.安全性控制 1.9.关键技术 2.0.心得体会 2.0.数据库课程设计任务书1 任务概述某医院拟开发一个挂号系统, 以方便患者就医, 提高医疗服务水平。 患者在医院就诊前需要提供姓名、 身份证号码、 联系电话等个人信息并办理一张诊疗卡, 该诊疗卡在每次挂号时需要出示给挂号的工作人员。 患者在挂号时, 需说

2、明科室名称以及医生的职称。 挂号以半个工作日为一个班次, 系统中保存各科室门诊医生的排班表, 每位医生每个班次能够接诊的病人人数可设置一个上限。本次课程设计要求设计并实现一个虚拟的医院挂号系统。 系统中包含两个子系统, 即由医院内部工作人员使用的挂号系统, 以及患者使用的网上预约挂号系统。 其中网上预约挂号系统的前端要求是浏览器,即采用 B/S 模式开发。医院工作人员使用的挂号系统采用 C/S 模式开发,前端开发工具不限,可采用 PowerBuilder, Delphi, VB,VC , Java等。后台数据库 要求采用 SQL SERVER2005 或 Oracle 11g 及以上版本。2

3、功能描述2.1 医院工作人员使用的挂号系统该系统仅供医院内部工作人员使用,主要分为挂号人员和系统管理人员两类角色,需提供以下功能:1) 办理诊疗卡。患者提供姓名、身份证号码、联系电话等个人信息,挂号人员为其 办理一张长期有效的诊疗卡。2) 挂号。挂号人员根据患者要求的科室、医生职称分配一个候诊号,并收取相应的诊疗费用,诊疗费用根据医生的职称分为不同的档次。医生当班次接诊患者人数不能超过预先设定的上限。3) 修改挂号。患者可更改就诊的科室,挂号人员根据更改后的科室和医生职称,重新计算诊疗费用的差值,多退少补。4) 查询挂号情况。挂号人员可查询某位医生目前的挂号情况。5) 挂号费当班结转。系统对每

4、个班次收取的挂号费生成相应的统计表,并提供查询功能,包括该班次总的挂号费用、各个挂号人员该班次总的挂号费用、各位医生 该班次总的挂号费用。6) 参数维护。系统管理人员负责维护各种参数,包括科室、医生、医生排班表、号类字典。医生的基本信息、排班表、诊疗费标准、各班次医生接诊人数上限都是可以修改的,尽量提高系统的灵活性和可扩展性。7) 系统维护。系统管理人员负责管理用户、分配权限、管理密码。2.2 网上预约挂号系统该系统供患者使用,需提供以下功能:1) 用户注册。提供注册所需基本信息,必须实名注册。2) 用户可修改注册信息。3) 用户可查询指定时间的某科室的医生排班表。4) 用户可以在网上预约挂号

5、。 系统不提供当日预约服务, 用户可预约部分科室次日至一个月内的就诊号源。同一患者实名(有效证件号)在同一就诊日、同一科室只能预约一次;在同一就诊日的预约总量不可超过两次;在一个月内的预约总量不可超过三次。2.3 安全性控制要求1) 所有用户密码在数据库中都要求加密存储。2) 网上预约挂号系统要进行输入验证,防止SQL 注入。3) 系统管理员只能进行系统维护和参数维护,不能进行挂号操作。实验环境:电脑:联想G460操作系统:Windows8.1 64 位语言:Java、 JavaScript、 JSP、 HTML 、 SQL编程工具:Eclipse IDE for Java EE Develo

6、pers( Kepler 版)数据库: MySQL 5.6.21数据库工具: MySQLWorkbench 6.2 CE 、 navicat其他工具: Sublime Text 2概要设计:(数据库)E-R图1属于ID(自增)ID日期班次电话IDID(自增)n病人病情名字电话性别ID密码名称属于名字属于安排挂石性别电话日期班次Administrator )、员工表除了上面的E-R图,数据库中还有另外三张表,分别是管理员表(Worker)、结算表(Calculate)物理模型用 MySQLWorkbench 所建l&octtj rLeve III 工 dor j=*d Mbtte 

7、65;«£?1队气t -OJ5T管理员表、员工表、结算表肃后 F=也=5t:备注:由于数据库模型是在课设最初建立的,后期根据编程的需求对表结构有了不少修改, 虽然后来根据对表的修改已经对Model进行了更新,但可能仍有略微不同Wovte r概要设计:系统主要功能口 ulajIalBgeJM* IMTma 是 J.WAg匹=上三=_04T* Wtirke jWcn«rAmaLirTt rAWC4 LN二 Zministralar妃TnnAcaunt ;通肥也!_之1;AdminPa匚#父45;i更改职称排班表管理用户管理密码更改科室管理员办理诊疗卡挂号修改挂号挂号结

8、算详细设计(数据库)表结构Doctor表(医生表)g收如工刖电Qharamr ”:Llatior抖 Mlegy机 ”3cMMhi。LTf8Jfl_qflrcral_ciBcl<n.r oftrupd 翼新的 皿NOUlfsJfljgar 盯ai.fivlrrt.in grlljUpdrl CKOoctn MeuVdElE4slVESLlfJijtfe jer rral=cselerf.ir setfA-pd 浦匕廿 errr itsDDctzrsaKarchaif45FLlfB_tf a _ger Bral_cj;elrt.ir gertiLpd at 曰电占三三/ DedarRMsne

9、alt hail(45)WSlKB"日Uwe屈口tete-tt.in Seflupd Mwj/西七卜 cbDcDawtntJDffiarddrttmHQ$clcd;.r seftpd DtCiHCCftn gDocto rLeveJI. 口 0m 3总mtrujNO福回看口,说 EWftjUpd atm* a"=r 考Patient表(诊疗卡表)31fmTfPCahUlnbkr口ieEtScICdhlimFtvilcgrs-Pnkiif-ntTdCdrdEMM)NQ,tfE!审.9窗11弋1串,1kI/ nsiert, updatefTefcren cmj Patiirnt

10、'dnrtTircb art-5)YE5jtfesr tet, ns -ft,cs:O PatjencsexnrcFartfYESjtfe的 LOEElqse Ed/ nssrt jpdflW.referer esQ PracngtE1DYESct ncv ns err. jEpdicfl/vf rcr mj PitiincsHicitiYKJtfj£* iCtjHfi iit, Jpdili/ifr «la 注PatientZietfilm arch ar(45)YESJtfg二2 MtJ ns ert, jpdateef&er cs户 Pati-ni-e

11、 sswaidTand-BitS)YESHeutfi_g "neii-Ese erf n5i2rtPjpdaLerrE-fe-i=r 3Arrangement 表(排班表)TyM£elPrf.fegesE,trmi* 1 wTub*IM"kDvet-ifivrt.uC ddtcil d r 的。fcrtC-irnremi-dAfnentiDateV Vm河烟Jlf*h_JWdLjCi6£ 一位上叩a减/百RM36*tr- jeT*tiTiffleUMChE 心.Jtftjl_Ci图电KL町9b1.山口第giw诩MiiFHiepEpgEm«嗝me

12、 g e dowrrFrfflrwaDact3r_Oc-rte OdOnidhw(ltf)KDjift:i_±fH_geriTil_cse set, "ssi'.up datr.rrsinencsOrderregist 表(挂号表)gETfflC值%uhHukrale-dWWTTFfTrd«iw-j -dOiTdefirefliE:Ndw fiedjins«rtrMdirrferiDaEautijfKIEn-ifrt. 21就qrtWlE艮Bddi虱胤NO仙utf(_flan«rai_c1= MRd/nFErtfM3dHe/d 打己&q

13、uot;OSXErjDEWuGireSOurflurh_gm_tisn iBff.mifit.MidrM.fltf Erects* D MtWPKI HtWri 胃口q si IeeT jnt rrt.LsdTrff.nefErennes-> DrdsiDM:idrd-ar(5)res.必utfi_flt_wa _cjse-lezl.ins±jtfLpdnc-jdEriE-EKSrderTii-w宵时rf礴)rES.uH*utf 2_.gr_t«s a lEELEt'bmdvlEjd ErebusQ orttefCMHen情r313日卬町*方城j曳尸3工arT

14、d*ar£fr(2fl)YE5,utf.Mtfg_ 口演演电/5 ?lB£i',insert rtpdiTfrrrfEriDaEo吹制闻IDQits加值ci.,i力切危川前 虻耳足 丁尹健Calculate表(结算表)CQUHrIdCa .uIjl-b口 Im秋产e*仁aid川西演 kF"%fi# at u#ch#i45)DEjItvab?klm6w 就 用 ¥=5 ¥fECh Fact5rsetMi出,Colahn礼jdPrtlegK£#011 号 tjUtdillV&W WMMuM w。r<f%«

15、Hriectnsetjuedaferrereoafi BedUngM.upddtiLre rer<aD)octorLevel 表(级别表)ExtrsMtfiJncrErriefftColunm g助qa司Mj DottorLefrlN'mrDa3c_e7ELiEt口三MifloatK&ilt 'luehulabeg YBYE5irtfe店员二E£FlCinviteqesselBcljnser: update -BsreioeEEj i±E ju 口 dntc.T-re-icn 宣科 肛i 值由Du 口 daTtrfEreios备注:其他几张表结

16、构太简单,就不一一列举了。视图该系统中暂时只用到了一个视图,用于将Department表Join起来,方便查询。Doctor表、Arrangement表、Doctorlevel 表、3456B9 工。11 12 13 14 L5 16 17 15 19 Zd 21 22 55 24 25 26CREATEALGORITW1 三 UNDEFINEDOEFINER - root localhost'SQL SECURITY DEFINERVIEW Lview doctor arrangement' ASSELECT- -"a' / OoctorldCard-

17、9; AS ' Doctorld<ard' >"a ' + 'DoctorMame' AS ' DoctorMane't a/ DcctorSex' AS ttottcrSex'? a . DoctorPhone' AJ 'DoctorPhene", b .'ArrBngeT3bDsteL AM 'ArrangeTabDate', 'b' / ArrsngeTahTirte AS - ArrangeTstaTime' ?&quo

18、t;b' / ArrangeAccptCount' AS ' ArrangeAccptcunt' j'c' / QactorLevelNafne' AS ' DoctorLevelMaire- j'c' DoctorLeveCost' 4S 'DoctorLeveCost')'d'_1DepartMameL AS ' DepartName', 'd . DepartPhone" AS 'DepartPhone' FROM(&#

19、163;'doctor' 'a'IDIN ' arrangement' ' t»')JOIN ' dcctarlevel' " c" 30IM 1 department' 'cT)NHERE('a'.'rcco"IdCardT = 'Bector DactorTdCard'JAND > >cttorLevel_DoGtorLevel = ' c ' 'DectcrLevelid&quo

20、t; Ml。, Department_DepartId' " 'd' T'DepartId')存储过程1T 甲p Views» | ¥i ew d alto i arra n gementStored Pnc cedu res' p ro ce d u re_ca I cu I at epro cedu re_fird_regi stinfapro cedure_regtstSMpro cedii re_u p dat e_regist-共用到了 4个存储过程我即口 n$.分别是procedure_calculate

21、 :用来结算procedure_find_registinfo :用来找到挂号信息procedure_regist:用来挂号procedure_update_regist:用于修改挂号下面是procedure_regist的部分代码:if regcount > 0THENinsert into orderregistVALUES(null,patId,doId,deId,regDate,regTime,cost,worId,isCalculate);update arrangement set ArrangeAccptCount = ArrangeAccptCount - 1;END I

22、F;这里用来判断剩余的接诊人数是否大于零,如果大于零则能挂号,否则不能。详细设计(程序)ckage Lxplo-rer «/ Hospital Server,型5年.1 actionQ AdmirActionJavaJft UserAction.javaQ Worker Action java: appD ConnThread javaD MainClasg.java11 beanQ Arran g e mentjavaU Co-stB&a n javaQ Depa rtmentjavaB Dario rjava Q Mes&age.java D Patient .j

23、ava D IJs er java .语;commonQ Cc-nfjavaQ Con sta nrtsj ava:,Dbcp.javaft LogjavaII PageBean.java£ 般 daoJU Arrang ementDao.java& Calcu lateDaojava 曲 Depa rtmentDao.javd,DoctorDao.java',De rtorDa oj av a& Pati entDao.javD RitDaojsvaB UserDaoJava& Work&rDa o ,j ava: viewddmin:/ D

24、&ps rtmentVievvjava& Do ctor View. ava& RcistCostVicwJayaD UpdateRegistCcst.java,WorksrMdinFra mejava,Worke rV i ew.ja vs.:vi ewworlcer,Ad mi n MairFr4 meja va& ArrangeVieiivJavaJ) Ca ku I ate Viewjava,DateChooserj avaJI DateChooser J Button Java(P Log in Frame.java。Pati entT& bl

25、eView.javaQ Re c| istl nfoVi ewj ava.Keg i tTa bl eVi ew.jav aD U pdq Fra rn e j a vaD UpdateRegistlnfoFramejava4r Web-ContentMain售 Arra ng em e ntjs pB LogDao jsp宿 Lcgirjsp& MainFrame.jsp目 MeageDialogj5p 指 MyJnfejsp自 Regist.j5p马 RegistDao.jsp曲 Res&rve.jsp百 Res erve Da o J p由 Updat&Dao.J

26、&pb META-1NF如上图所示,整个系统写了很多个类,很多个 jsp页面,以下介绍一下各个包的功能,然后 就几个重要的类简单介绍一下。Action包:主要是对用户和管理员的Action事件进行处理。App包:许多个Thread类,用于务器与客户端进行通讯。Bean包:许多bean类,也是为JavaBean技术服务的重要一部分。Commom包:许多公共类,包括:ft commonQ Con4javaD Co n sta fitsj ava 拈 DbcpjavaD Lcg.javaConf类:通讯协议。Constants类:SQL语句集合。Dbcp类:获取数据库连接对象。Log类:为了

27、调试所用(跟系统功能关系不大)PageBean类:分页类Dao包:许多对数据库的操作。ViewAdmin包:管理员界面包。ViewWorker包:工作人员界面包。WebContent中Main包,主要是包含很多 JSP页面。系统展示C/S端以员工身份 登录后,可以看到如下图所示。系统中有诊疗卡的操作、预约挂号、挂号信息的查看与修改、排班表、挂号费结算。医疗卡信息身份证 姓名播 电话病情添加诊疗卡的信息医疗卡信息瞪改- f21 5112 2121 亚? 9939 tdsi口五六一二 孚王赵廷张1111里-k男女交国女身份证 姓名 性别 年龄电话麻.、一戟肖一.双击表格后,弹出对信息修改界面预约挂

28、号界面,可以选择挂号的日期已经班次。然后系统会根据时间和班次、科室、级别筛 选出医生。日向日出堂 .蛙 r蜿I呈季:i 龙晶主期,as: EU".匕强人也ak±tri二isa_fe王部门tl期114世e眄13 金& fi rF11i11也国因梆2356 蛰期非咻芋,半斗手I13 田 四 四王 青王 牙 司11S 1 11 11 2 ?3 S 主 i三 ;.三 :三.1 由三 工H任S 3 牙 * 牙 牙3同 科发 料 fi因 d E 笈 d 工 因1151-1JqSQIEI1&4J1-4HI15-Q1<i3 maw11 a ii 10 HD 33 33

29、1.1.1,1这里可以查到挂号的信息。O *际I Qi HillUBtt 13M三星刀月”日kT*ftsritftftrttm强?丁1W鼻123123MilH1州用JM:方物郁皿2s11IS才HHM2Z43122211310221和费11DUliITi,MBM1申署1寓11»庭主中V里主控老臣主性三髭主网生生,电注我EURSi. '.s 我!雪 鹏朴 4-IiAje邙即日上5«12221* 431ZZ21?.H1Z23Tt 心1丝21, :订建寺中 i-2 I 二 I j 4J12U1H110Z22ncra篦14,M*110ZZZZ112-OH1211C1W110m

30、o制1431110110A1OnoHN材同和加*|2"打.WH 加号J通而3:q导3 11D诩100M 狗与初:mmw f - 2 7 _5 1 o .tt 3 7 羊TH-ILH-平工丰丁Lt¥ 上上上K上!|七上feM上ffM年仕*千4 隹稗ITIS王隹;日工王£ 主I壬1耳11用乱«« KVSHG 唯 £ JktEE=排班信息挂号费的结算(前两条信息是我手动添加的) 以管理员身份登陆后,可以看到如下图所示。系统中有科室的操作、医生、排班表、工作人员、诊疗费标准。上垂寺引妙? 口耳:!巾Ta 0 1m酒 2M5可以对诊疗费用进行修

31、改其他功能大同小异,就不一一列举了。B/S端登泉账号,I密码,I一登更,注册B/S端登录界面由信息医生用网预约住号欢迎使用本挂号系统!退出B/S端主界面注册账 密 姓 性 年 电 病B/S端注册界面我的信息账号,123张三性别;|13电话;123455病情,痛好密码,123能改 返回信息查看和修改排班信息医牛 姓名医牛 性别所在 科室浜牛 盟L浜牛 电话排班日 期排版时 间|接谬人 数牙工男万科主任1102222014-卜 1上46汗1男开科主任110222201412-26上斗5牙1男牙科主任110J22201501-03上午2汗1更开科仟110222201501-30晓卜3。牙W男牙科副主

32、任1102014-11卜.午7牙E男牙科副主任110201412-26F2牙£鬼牙科副主任110201412-31111牙2男牙科副主任1102015-11上40FF2男开科副主任1102015-0103_上汽6汗工男牙科副主任110201501-03晚上3牙W用才科副主任110201501-08卜斗7,强国查看医生排版表预约挂号123r科室牙科曾皴别主任t医生姓名1日期1_ _时间上午 下午 晚上帕均返回预约挂号界面安全性控制MD5加密MD5 的全称是 Message-Digest Algorithm 5 (信息-摘要算法),在 90 年代初由 MIT Laboratory for

33、 Computer Science 和 RSA Data Security Inc 的 Ronald L. Rivest 开发出来,经 MD2、MD3 和MD4发展而来。-摘自百度百科关键代码如下:private static String encodeByMD5(String originString) if (originString != null)tryMessageDigest md = MessageDigest.getInstance("MD5");使用指定的字节数组对摘要进行最后更新,然后完成摘要计算byte口 results = md.digest(ori

34、ginString.getBytes();/将得到的字节数组变成字符串返回String resultString = byteArrayToHexString(results);String pass = resultString.toUpperCase();return pass; catch(Exception ex)ex.printStackTrace();return null;防SQL注入SQL注入攻击指的是通过构建特殊的输入作为参数传入 Web应用程序,而这些输入大 都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因 是程序没有细致地过滤用户输入的数

35、据,致使非法数据侵入系统。根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数 据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤, 从而 执行了非法的数据查询。基于此,SQL注入的产生原因通常表现在以下几方面:不当的类 型处理;不安全的数据库配置;不合理的查询集处理;不当的错误处理;转义字符 处理不合适;多个提交处理不当。-摘自百度百科在JSP中,我都是采用的setParameter的方法来传递参数,也就是采用post方式来传参,因此大大降低了 SQL注入的风险此外,在登录等含有输入框的地方,我也都验证了输入的合法性,过滤了所有的可疑字符。关键

36、技术1、在C/S端,主要用到了信息的加密技术,防注入技术,其他的更多的是对 Java编码能力的考量。2、在B/S端,用到了 JavaBea仆JSP、EL、JavaWeb对数据库的操作以及加密技术,防注 人等等技术心得体会经过近一个月紧张的数据库课程设计,加之中间还夹杂着两个考试,自己已经累得不成样子了。不过,虽然很累,但是自己还是学到了不少的东西。以下分几个方面谈谈自己的心 得。1、对Java编程能力的提高。 编完这个系统,我用 Eclipse计算了一下,光 Java代码就有 5800多行,中间也用到了继承、接口等高级一点的编程方法,近 7000行代码对于大三 的学生来说,不多不少吧。以前也编过几个工程量大致相当的project,从project中锻炼自己的能力,这一点对自己帮助还是挺大的。毕竟嘴上说谁都会,但是动起手来就会遇到形形色色各种问题。 所以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论