Java语言程序设计:医院简易挂号管理系统华科Java实验alm

为了减少编程工作量,T_KSXX、T_BRXX、T_KSYS、T_HZXX的信息手工录入数据库,每个表至少录入6条记录,所有类型为CHAR(6)的字段数据从“000001”开始,连续编码且中间不得空缺。为病人开发的桌面应用程序要实现的主要功能具体如下:

功能(2)的界面如下所示,在光标停在“科室名称”输入栏时,可在输入栏下方弹出下拉列表框,显示所有科室的“科室编号”、“科室名称”和“拼音字首”,此时可通过鼠标点击或输入科室名称的拼音字首两种输入方式获得“科室编号”,用于插入T_GHXX表。注意,采用拼音字首输入时可同时完成下拉列表框的科室过滤,使得下拉列表框中符合条件的科室越来越少,例如,初始为“内一科”和“内二课”。其它输入栏,如“医生姓名”、“号种类别”、“号种名称”也可同时支持两种方式混合输入。

每种号种挂号限定当日人次,挂号人数超过规定数量不得挂号。一个数据一致的程序要保证:挂号总人数等于当日各号种的挂号人次之和,病人的账务应保证开支平衡。已退号码不得用于重新挂号,每个号重的GHRC数据应连续不间断,GHRC从1开始。若病人有预存金额则直接扣除挂号费,此时“交款金额”和“找零金额”处于灰色不可操作状态。

为医生开发的桌面应用程序要实现的主要功能具体如下:

挂号编号

号种类别

000001

章紫衣

2018-12-3011:52:26

专家号

000003

范冰冰

2018-12-3011:53:26

普通号

000004

刘德华

2018-12-3011:54:28

挂号人次

收入合计

感染科

李时珍

24

48

10

内一科

000002

扁鹊

23

保健科

华佗

20

病人应用程序和医生应用程序可采用主窗口加菜单的方式实现。例如,医生应用程序有三个菜单项,分别为“病人列表”、“收入列表”和“退出系统”等。

挂号时锁定票号可能导致死锁,为了防止死锁或系统响应变慢,建议大家不要锁死数据库表或者字段。程序编写完成后,同时启动两个挂号程序进行单步调试,以便测试两个病人是否会抢到同一个号、或者有号码不连续或丢号的现象。

思考题:当病人晚上11:59:59秒取得某号种的挂号价格10元,当他确定保存时价格在第2天00:00:00已被调整为20元,在编程时如何保证挂号费用与当天价格相符?

2.需求分析

一、系统设计

1.概要设计

介绍设计思路、原理。将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。

要有总体结构、总体流程(图)。

图2.1总体流程图

图2.2医生查询流程图

图2.4病人挂号界面流程图

1.详细设计

图形用户界面用JavaFx来实现,使用intellijIDEA编辑器编辑代码,图形界面用JavaFXSceneBuilder1.1来设计,设计完成后绑定对应控件的id,然后在controller里面定义对应的控件,并使用即可,具体实现如下:

首先有一个全局的Stage,是总的舞台,其他的页面花在这个舞台上面。

1publicclassFXMLTestextendsApplication{2privateStagestage;3privatefinaldoubleMINIMUM_WINDOW_WIDTH=700.0;4privatefinaldoubleMINIMUM_WINDOW_HEIGHT=370.0;5privatestaticFXMLLoadermyloader=null;6publicStringBR_name;78@Override9publicvoidstart(StageprimaryStage)throwsException{1011}12publicstaticvoidmain(String[]args){13launch(args);14}1516}

继承自Application,重写start方法,在main方法里面调用就好。

Start方法里面启动舞台stage:

1@Override2publicvoidstart(StageprimaryStage)throwsException{3stage=primaryStage;4stage.setTitle("登陆界面");5stage.setMinWidth(MINIMUM_WINDOW_WIDTH);6stage.setMinHeight(MINIMUM_WINDOW_HEIGHT);7gotologin();8stage.setResizable(false);9stage.show();10}

publicvoidgotologin(){try{LoginControllerlogin=(LoginController)replaceSceneContent("登陆界面","FXML_LOGIN.fxml","Login.css",MINIMUM_WINDOW_WIDTH,MINIMUM_WINDOW_HEIGHT,0);login.setApp(this);}catch(Exceptionex){Logger.getLogger(FXMLTest.class.getName()).log(Level.SEVERE,null,ex);}}

为了提高开发效率,获取界面controller并加载到stage的部分功能统一用一个函数replaceSceneContent(),再把此application传入到controller,为了在界面控制类controller里面调用或者返回到总的application类,加载其他的页面。

1privateInitializablereplaceSceneContent(Stringtitle,Stringfxml,Stringcss,doublewidth,doubleheight,inttype)throwsException{2FXMLLoaderloader=newFXMLLoader();3InputStreamin=FXMLTest.class.getResourceAsStream(fxml);4loader.setBuilderFactory(newJavaFXBuilderFactory());5loader.setLocation(FXMLTest.class.getResource(fxml));6SplitPaneSpage;7AnchorPaneApage;8if(type==0){9Apage=(AnchorPane)loader.load(in);10Scenescene=newScene(Apage,width,height);11scene.getStylesheets().add(FXMLTest.class.getResource(css).toExternalForm());12stage.setTitle(title);13stage.setScene(scene);14stage.sizeToScene();15}elseif(type==1){16Spage=(SplitPane)loader.load(in);17Scenescene=newScene(Spage,width,height);18scene.getStylesheets().add(FXMLTest.class.getResource(css).toExternalForm());19stage.setTitle(title);20stage.setScene(scene);21stage.sizeToScene();22}else{2324}25myloader=loader;26return(Initializable)loader.getController();27}

使用界面设计器实现的界面如下:

启动之后的界面如下:

显然,使用了css样式文件之后界面变得更精美。

@FXMLpublicvoidLOGIN_M(ActionEventevent){inttype=choiceBox.getSelectionModel().getSelectedIndex();application.userlogin(account.getText(),password.getText(),type);}

调用父类的userlogin方法:

为了代码的简洁性,把数据库查询方法一律统一管理。

从上述代码可知,当用户信息匹配成功以后,界面需要重新加载,gotoYSmain()是加载医生界面,gotoMain()是加载病人挂号界面。

1.病人挂号模块

挂号模块提供给病人进行挂号,业务逻辑简单,用户只需要选择科室、科室医生、号种类别以及使用余额或者交款的方式进行付费以后即可得到挂号号码。输入框有自动过滤输入内容的功能,当用户输入科室名称或名称的大写下拉框会过滤显示对应的内容,也可以点击后根据下拉框的值来选择科室。科室选择完毕后,该科室的医生姓名会实时从数据库查询后,等待用户选择或输入,同样有过滤功能。下一步选择号种类别,有专家号和普通号,是根据医生是否专家来确定号种类别,医生是专家时,可以选择专家和普通号,当医生非专家时,只能选择普通号,输入框的值会在用户选择了医生之后会实时查询数据库在显示。此时,号中名称会显示出来,等待用户点击确定按钮,进行非空检查以后,根据票价从用户的余额去扣费,如果余额足够,则扣费完成后显示挂号号码,否则要求用户输入交款金额,再进行挂号。

第一步,启动挂号界面:

1publicvoidgotomain(){2try{3MainControllermain=(MainController)replaceSceneContent("医院挂号系统","FXML_MAIN.fxml","main.css",700,450,1);4main.setApp(this);5}catch(Exceptionex){6Logger.getLogger(FXMLTest.class.getName()).log(Level.SEVERE,null,ex);7}8}

在controller里面用到的数据类型有:

1privateHashMapKSYSinfo=null;2HashMapKSinfo=null;3HashMapHZinfo=null;4privatedoubleBrYuCun=0;5privateStringBRBH;6privateFXMLTestapplication;7publicStringText_KSMC;//科室名称8publicStringText_KSYS;//科室医生9publicStringText_HZLB;//号中类别

在initialize()方法里面对科室信息、医生信息以及病人余额等信息初始化,并对输入框的输入内容进行监听,当有变化时,进行数据更新:

根据医生名称设置号种类别:

1privatevoidsetHZLB_combo_Box(StringKSYS){2intisZJ=DataBaseUtil.isZJ(KSYS);3if(isZJ==1){4comboBox_HZLB.getItems().addAll("专家号","普通号");5}else{6comboBox_HZLB.getItems().addAll("普通号");7}8}

设置医生信息下拉框的值:

1privatevoidsetKSYScomboxInfo(){2KSYSinfo=DataBaseUtil.getKSYSinfo(KSinfo.get(Text_KSMC).trim());3Setset1=KSYSinfo.keySet();4Iteratoriter1=set1.iterator();5while(iter1.hasNext()){6Stringkey=(String)iter1.next();7comboBox_YSMC.getItems().addAll(key);8}9}

当点击确定按钮时,进行非空检查以及查询扣费等:

用到的一些小的工具方法:

病人登陆成功之后,获取名称以及预存金额,利用HASHMAP来保存得到的数据,方便处理:

获取科室信息:

获取科室医生信息:

根据号种获取票价:

开始挂号,根据数据库当前最新的挂号号码计算新的号码并返回:

根据号种名称获取号种编号:

判断医生是否专家:

最后挂号成功,并显示挂号号码,界面如下:

3.医生界面

1publicvoidgotoYSmain(){2try{3YiShengControllermain=(YiShengController)replaceSceneContent("医生治疗系统","FXML_YISHENG.fxml","main.css",700,450,0);4main.setApp(this);5}catch(Exceptionex){6Logger.getLogger(FXMLTest.class.getName()).log(Level.SEVERE,null,ex);7}8}

privateStringYSBH_in_Controller;privateObservableListdata=FXCollections.observableArrayList();privateObservableListSrdata=FXCollections.observableArrayList();privateFXMLTestapplication;@FXMLTableColumnGHBH_1,BRMC_1,GhTime_1,HzType_1;@FXMLTableColumnKSMC_2,YSBH_2,YSMC_2,HZLB_2,GHRC_2,SRHJ_2;@FXMLTableViewBrTableView;@FXMLTableViewSrTableView;@FXMLprivateLabellabel_user_name;

1@Override2publicvoidinitialize(URLlocation,ResourceBundleresources){3DatePicer_start.setValue(LocalDate.now());4DatePicer_end.setValue(DatePicer_start.getValue().plusDays(1));56for(inti=0;i<24;i++){7ComboBox_S_1.getItems().addAll(i+"点");8ComboBox_E_1.getItems().addAll(i+"点");9}10ComboBox_S_1.getSelectionModel().select(0);11ComboBox_E_1.getSelectionModel().select(0);1213for(inti=0;i<60;i++){14ComboBox_S_2.getItems().addAll(i+"分");15ComboBox_E_2.getItems().addAll(i+"分");16}17ComboBox_S_2.getSelectionModel().select(0);18ComboBox_E_2.getSelectionModel().select(0);192021}

当医生界面加载完成的同时,病人列表会自动加载到表格里面,当点击刷新按钮时,会更新病人列表:

1@FXML2publicvoidsetTableData(){3GHBH_1.setCellValueFactory(newPropertyValueFactory("GHBH"));4BRMC_1.setCellValueFactory(newPropertyValueFactory("BRMC"));5GhTime_1.setCellValueFactory(newPropertyValueFactory("GHTime"));6HzType_1.setCellValueFactory(newPropertyValueFactory("HZLB"));7data=DataBaseUtil.getBrLieBiao(YSBH_in_Controller);8BrTableView.setItems(data);9}

获取病人列表使用的是ObservableList,从数据库获取该医生对应数据的代码如下:

ObservableList需要适配器来实现数据的显示,需要一个类:

1packagesample;2publicclassBrColumn{3privateStringGHBH;4privateStringBRMC;5privateStringGHTime;6privateStringHZLB;78publicBrColumn(StringGHBH,StringBRMC,StringGHTime,StringHZLB){9this.GHBH=GHBH;10this.BRMC=BRMC;11this.GHTime=GHTime;12this.HZLB=HZLB;13}1415//get16publicStringgetGHBH(){17returnGHBH;18}1920publicStringgetBRMC(){21returnBRMC;22}2324publicStringgetGHTime(){25returnGHTime;26}2728publicStringgetHZLB(){29returnHZLB;30}3132//set33publicvoidsetGHBH(StringGHBH){34this.GHBH=GHBH;35}3637publicvoidsetBRMC(StringBRMC){38this.GHBH=BRMC;39}4041publicvoidsetGHTime(StringGHTime){42this.GHBH=GHTime;43}4445publicvoidsetHZLB(StringHZLB){46this.GHBH=HZLB;47}48}

数据库的查询有点复杂,因为需要嵌套查询,因此效率并不是想象中那么快,在学习了数据库课程以后,继续优化。适配器类如下:

一、软件测试

对照题目要求,构造测试例,给出程序界面截图,举证题目要求的功能(以及自行补充的功能)已实现。

THE END
1.医院预约系统课程设计.docx医院预约系统课程设计一、教学目标本课程旨在让学生了解和掌握医院预约系统的核心概念、架构和操作流程,培养学生的实际操作能力和解决问题的能力。通过本课程的学习,学生将能够:描述医院预约系统的功能和特点,理解其在现代医疗体系中的重要性。解释医院预约系统的核心概念,如预约、挂号、排队等。掌握医院预约系统的操作流程https://www.renrendoc.com/paper/368759295.html
2.ssm毕设门诊预约挂号系统源码+程序+论文本研究将围绕门诊预约挂号系统的核心功能展开,包括医生信息管理、用户信息管理、预约信息管理、核酸检测预约与结果查询等。通过优化系统界面设计、提升系统响应速度、增加智能推荐功能等措施,实现系统的全面升级和用户体验的显著提升。同时,还将探索如何将大数据、人工智能等先进技术应用于系统中,以进一步提高系统的智能化水平https://blog.csdn.net/sheji403/article/details/144162898
3.医院预约挂号系统设计与实现测试毕业设计论文经医院预约挂号系统设计与实现测试毕业设计论文 https://bbs.pinggu.org/thread-13148071-1-1.html
4.基于微信小程序的预约挂号系统(源码)整个开发过程首先对基于微信小程序的预约挂号系统进行需求分析,得出预约挂号系统主要功能。接着对基于微信小程序的预约挂号系统进行总体设计和详细设计。总体设计主要包括小程序功能设计、小程序总体结构设计、小程序数据结构设计和小程序安全设计等;详细设计主要包括基于微信小程序的预约挂号系统数据库访问的实现,主要功能模块https://www.bilibili.com/read/cv34465022
5.医院在线挂号预约系统的设计与实现医院在线挂号预约系统的设计与实现 摘要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对医院挂号信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用医院在线挂号预约系统可以有效管理,https://zhuanlan.zhihu.com/p/693967482
6.医院网络预约挂号系统的设计与实现在对医院门诊挂号的调研基础上,分析了用户对业务流程、系统功能等方面的需求。该系统采用ASP.NET技术、XML技术、ADO.NET数据库访问等技术,并对这些相关理论和技术,进行了详细描述。随后,本文详细叙述了医院预约挂号系统的设计与实现,并对实现过程中的一些技术难点和关键技术做了深入的探讨。接着,从系统安全性出发,https://wap.cnki.net/touch/web/Dissertation/Article/-2008188057.html
7.基于Web的医院预约挂号系统的设计与实现本文主要描述了基于Web的预约挂号系统的设计与实现的理论技术、系统设计以及系统实现的过程。首先,分析了某医院目前医院门诊挂号现状,分析总结了其中存在的严重问题与患者希望改进的地方,以此为依据生成了系统的需求分析。其次,设计系统整体架构和数据模型,在需求分析的基础上,详细阐述了网上预约挂号系统的具体划分,同时对https://cdmd.cnki.com.cn/Article/CDMD-10216-1016710166.htm
8.基于SpringBoot的医院预约挂号系统设计与实现(源码+lw+部署文档+5.4用户前后台界面设计 5.4.1用户注册 通过页面填写用户的个人信息后,输入完成后选择进入网上预约挂号系统,如图5-7所示。 图5-7用户注册界面图 5.4.2前台首页 用户前台首页浏览,可以查看健康教育相关内容、公告信息、医生、在线资讯等操作内容,如图5-8所示。 https://www.ctyun.cn/zhishi/p-428239
9.基于JAVA的医院预约挂号系统的设计与实现本基于JAVA的医院预约挂号系统使用面向对象的设计思想进行设计,完成需求分析、系统设计、系统实现和测试。根据基于JAVA的医院预约挂号系统的功能搭建数据库模型,由此设计数据库架构。根据功能设计,数据库设计,架构设计,使用Java技术进行实现,最后通过功能测试完成系统的测试,根据研究的内容模块设计了六大章节。 https://blog.51cto.com/u_15745565/7261926
10.医院网上预约挂号系统设计与实现毕业范文(范文范文)医院网上预约挂号系统设计与实现毕业论文文档信息主题:关亍“行业资料”中“毕业资料”的参考范文。属性:Doc-99BE5K,doc格式,正文11420字。质优实惠,欢迎下载!适用:作为内容写作的参考文案,解决如何写作、正确编写文案格式、内容摘取等相关工作。目录目录1正文https://jz.docin.com/p-3192337595.html
11.基于SpringBoot的医院诊疗挂号系统的设计与实现基于SpringBoot的医院诊疗挂号系统的设计与实现 该系统是小编毕业时的毕业设计。需要的可以私聊小编免费给源码,进行学习。里面用的技术很多。有加密技术。根据中小型医院诊疗挂号系统的需求,系统首先分为3种不同权限的角色,用户,医生,管理员。前台是基于layui技术开发的。后台是基于SpringBoot开发的。https://cloud.tencent.com/developer/article/1984546
12.信息与计算机工程系优秀毕业设计作品毕业设计员工可以注册登录,修改个人信息与密码,查看客户发布的雇佣信息,员工接单管理等功能。管理员进行员工与客户信息管理、服务类别与服务项目信息管理,查询客户体验反馈等功能,它达到了用户的所有需求,为整个企业的管理带来了便利。5.医院就诊预约挂号系统的设计与实现https://www.cdutetc.cn/c/4c068411-751b-4f12-b725-f69e34c010a3.html
13.Java微信小程序医院挂号系统java本系统实现了医生的在线预约挂号与管理,方便了用户和管理员、医生三方的利益,提高医生预约的效率,更符合现代人生活。 二、系统功能分析 本人参考大量的预约挂号管理软件以及充分调查需要医生的用户和管理员需求,设计出的本微信小程序医院挂号系统使用角色为用户、管理员、医生。框架界面分为用户操作界面、管理员操作界面https://www.jb51.net/article/278737.htm
14.聊医管理内参试发行版第三期北京儿童医院24小时接诊,非急诊患者需预约就诊。首次来院的患儿需携带相关证件到建卡大厅(门诊楼北侧)实名办理“一卡通”后预约挂号,也可通过“北京儿童医院”手机APP或“掌上北儿”微信公众号在线建虚拟卡并预约7日内号源,还可通过电话(010-114/116114)、网络(登录www.bjguahao.gov.cn)、窗口(门诊大厅一层北侧)预https://lib.lchospital.cn/qitafuwu/liaoyineican-guanlilei/2017nian/2018-07-01/716.html
15.医院信息报告2、实现“智能医院”多样化 医院计划今年建设多平台的智能医院系统,以提高患者的就医体验。真正做到让信息多跑路,让患者少跑路。通过卫计委预约平台、医院网站、手机app,微平台、合作通讯运营商114、12580等多种渠道为患者提供预约挂号服务,同时与分诊叫号系统结合,实现患者 https://www.ruiwen.com/gongwen/baogao/1243484.html
16.医院信息管理系统优秀10篇医院信息管理系统1 摘要:摘要:当前,医院管理中应用计算机信息管理系统已经是行业的普遍现象。本文的主要内容在于简要介绍了目前计算机信息管理系统在医院管理中的实现情况,并对今后医院计算机信息管理系统的发展趋势进行了预测。 关键词:关键词:医院;计算机;信息管理;应用 https://www.jy135.com/guanli/1971122.html
17.关于深入推进“互联网+医疗降”“五个一”服务行动的通知一是实现“两卡融合、一网通办”,上线集监管与服务功能于一体的省互联网医院平台,打造省级统一的健康服务门户,让群众基于“一个码”就能获取院前预约挂号、在线取号,院中排队叫号、扫码就医、费用结算,院后报告处方查询、互联网诊疗等医疗医保服务,以及疫苗接种、体检报告和电子健康档案查询、母子健康手册等健康管理服务http://www.nhsa.gov.cn/art/2020/12/15/art_37_4056.html
18.深度华西解救被“黑科技”困扰的老年人,看华西医院门诊部应对四川大学华西医院门诊部在构建智慧门诊体系中发现,门诊患者群体以老年人居多,这些多年习惯窗口挂号、现场付费的老年人对于线上办卡挂号、缴费预约的操作有困难。因此,智慧门诊在创新推进过程中充分照顾到老年人群,为老年患者设计老年线上就诊专区,满足老年人就医需求。 https://www.cd120.com/comprehensive/61301.html
19.MCA2024升级内容马士兵教育官网“马上好医”即为网上医疗预约挂号系统,首先,由于互联网的发展,衍生出非常多的便民医疗服务的需求,而网上预约挂号则是其中一个便民需求,我们能够通过网上预约挂号服务,随时随地查询医院是否有号,让患者不一定要去到医院就可以提前进行挂号服务,提前就可以选择医生,并且网上预约挂号系统从技术实现上不难,可以让各位学员以https://www.mashibing.com/white_paper/mca