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.系统公告北京市预约挂号统一平台 系统维护公告 平台将在2024年12月20日19:00至2024年12月21日06:00对相关业务进行升级维护(具体恢复时间以平台实际情况为准),期间平台将暂停全部服务,给您带来的不便敬请谅解。https://www.114yygh.com/
2.微医微医,领先的数字医院,连接全国各级医院、汇聚了全国重点医院的知名医生,为您提供医疗、医药、保健等全方位服务。https://www.guahao.com/
3.智慧康复服务系统医院排队叫号系统医院自助服务终端智能陪诊医号数智主要为医院或诊所提供分诊排队叫号系统、医院排队叫号系统、医院信息发布系统、自助服务终端系统、微信预约挂号系统、发热门诊分诊排队等,是国内智慧门诊系统提供商中的佼佼者之一,团队来自思杰聚典,拥有十几年行业经验!http://www.yihodi.com/
4.浙江在线预约诊疗服务平台杭州医博肛泰医院 浙江省三甲皮肤会诊峰会上海生长发育科陈兆文预约 浙江省名中医专家预约杭州耳鼻喉名医挂号 浙江省妇保妇科孙惠兰预约看皮肤就到天目山医院 快速预约 请选择地区(必选) 请选择医院(必选) 搜索 按地区医院列表 杭州市 宁波市 温州市 嘉兴市 https://guahao.zjol.com.cn/
5.北京大学第一医院(北京医科大学校附属医院)预约挂号网北京大学第一医院(北京医科大学校附属医院)专家预约挂号入口。名医汇网上预约统一挂号平台汇集多个挂号渠道号源,为您提供网上|在线预约挂号、线下门诊预约号源,北京大学第一医院专家挂号攻略帮助您方便快速地实现网上挂号,预约专家更轻松!https://www.mingyihui.net/guahao/hospitalx_49/
6.飘扬医院挂号系统电脑版下载最新飘扬医院挂号系统pc版免费下载安装飘扬挂号系统 v1.001 本系统经过多年应用并且持续不断改进,系统各部功能已基本完善,非常适合大型医疗集团,当然小型医院或科室就更适合了。 (注:如果你觉的功能太多而不想用其他功能,你可以只用挂号登记) 系统功能说明 1.账号权限 (系统可以任设账号,然后给账号赋予权限,比如导医账户,你可以只给他到院与否的设置,http://www.onlinedown.net/soft/1142294.htm
7.联系我们专家在线预约挂号系统行政总值班13600099980(24小时接诊)医院办公室020-62323939转6611 病人服务中心020-62323939手机:13922111505医务处020-62323939转6612 护理部020-62323939转6613医德医风办公室020-62323939转6611 内科医生值班13902209152外科医生值班13902209150 预约挂号020-87734296 或 020-62323939转6609 或 13922111505 https://www.999brain.com/BrainFramework/Contact/
8.基于SpringBoot的医院诊疗挂号系统的设计与实现该系统是小编毕业时的毕业设计。需要的可以私聊小编免费给源码,进行学习。里面用的技术很多。有加密技术。根据中小型医院诊疗挂号系统的需求,系统首先分为3种不同权限的角色,用户,医生,管理员。前台是基于layui技术开发的。后台是基于SpringBoot开发的。 https://cloud.tencent.com/developer/article/1984546
9.阜阳市第二人民医院欢迎您进入我院预约挂号系统,您可以通过以下方式进行预约挂号,以保证您能如期找到您要预约的门诊专家,并祝您早日康复! 1、电话预约 请拔打电话:0558-2561111致导诊服务台进行人工登记预约。 2、网上预约 温馨提示: 1、您可以提前 1~7 天预约,当天不预约。 https://www.fysey.cn/default.php?mod=c&s=ssc6ec9ad
10.如何使用C++编写一个简单的医院挂号系统?C++当用户选择退出系统时,程序将结束。当然,这只是一个简单的示例系统,实际的医院挂号系统可能会更复杂,需要考虑更多的功能和细节。但通过这个例子,您可以对如何使用C++编写一个简单的医院挂号系统有一个初步的了解,并可根据实际需要进行扩展和改进。https://www.php.cn/faq/625077.html
11.医院预约挂号系统用例分析.docxBCE包图资源在医院预约挂号系统中,设计和分析类是软件开发的关键步骤。以下是针对标题和描述中的知识点的详细说明: 我们需要理解三个基本的分析类:边界类、控制类和实体类。 1. 边界类(Boundary Class): 边界类主要负责与用户的交互,包括接收用户输入和展示系统输出。在医院预约挂号系统中,这些类可能包括用户界面元素如登录窗口https://download.csdn.net/download/Zheng_lan/13218181
12.网上预约挂号系统网上预约挂号系统挂号须知 病员注册 网上挂号 病案预约 服务热线:(0377)-63200114 豫ICP备06001948号-1 版权所有:南阳市中心医院 http://guahao.nych.cn/
13.医院网络预约挂号系统的设计与实现门诊挂号一直是困扰医院提高服务质量的一个重要环节,特别是医疗技术水平高、门诊量大的综合型大医院,门诊拥挤是一种普遍的现象。因此,本论文提出了医院网络预约挂号系统,求医者只需坐在家中,轻松的点几下鼠标,就可以挂上医院门诊号,可以做到“足不出户选医生”,这样能够有效减少求医者的等待时间,使患者充分了解医院https://wap.cnki.net/touch/web/Dissertation/Article/-2008188057.html
14.Java实战项目医院预约挂号系统java本文是一个Java语言编写的实战项目,是一个医院预约挂号系统,主要用到了jdbc+jsp+mysql+ajax等技术,技术含量比较高,感兴趣的童鞋跟着小编往下看吧+ 目录一、项目简述功能: 用户分为患者,医生,管理员,患者可进行注册选择医生 挂号,选择日期,选择号源,医生可进行接诊,管理员可 对用户,医生信息的维护等等功能。https://www.jb51.net/article/223156.htm
15.上海申康医院发展中心医联预约平台预约挂号 综合医院 市第一人民医院 市第六人民医院 华东医院 市第十人民医院 瑞金医院 仁济医院 新华医院 第九人民医院 同济医院 中山医院 华山医院 长海医院 长征医院 中医医院 市中医医院 龙华医院 曙光医院 岳阳中西医结合医院 专科医院 市第一妇婴保健院 http://yuyue.shdc.org.cn/
16.全国预约挂号系统医院地址:在线预约挂号平台 咨询电话:点击图片在线预约挂号 在线预约挂号怎么走 公交车路线: 在线预约挂号平台 自驾路线: 在线预约挂号平台 医院地图 医院简介 专业的网上统一预约挂号平台,致力于为全国各地的患者提供医院医生网上挂号预约服务,解决广大患者的预约挂号难题. https://jbk.39.net/yiyuanfengcai/lx_zxyygh/
17.智能导诊系统智能在线问诊系统源码1.智慧医院 帮助患者判断应挂号科室,降低科室间转诊率 帮助医院导诊工作人员接待挂号相关问题 对接医院挂号系统,完成导诊后可直接挂号 2.互联网医院 帮助患者判断应挂号科室,降低科室间转诊率 标准科室对照,精准分配在线问诊科室 3.医疗健康平台 为平台赋能,向患者提供标准科室就诊建议 https://developer.aliyun.com/article/1388383
18.预约挂号海南省肿瘤医院副院长、放疗科主任、主任医师,海南医学院教授,擅长恶性肿瘤的放射治疗及放化综合治疗。 王长利 主任医师 王长利,主任医师,教授。擅长肺癌早期诊断、外科手术治疗、综合治疗及肺癌相关基础与临床研究;处理各种复杂、疑难的胸部恶性肿瘤手术,对肺癌手术的淋巴结清扫进行了多年、持续、系统的研究,显著提高了https://www.hnszlyy.cn/bespeak/
19.长春中医药大学附属第三临床医院预约挂号系统上线扫描上方二维码或搜索“长春中医药大学附属第三临床医院”,关注服务号。 2.绑定或注册电子健康卡 点击服务号菜单栏“掌上医院”,进入掌上医院主界面。如首次使用,系统会引导添加就诊人。 有电子健康卡→绑卡 无电子健康卡→注册 3.点击预约挂号 点击预约挂号,可以择期预约医生号源。 https://health.cnjiwang.com/jkzx/202004/3121391.html
20.医院信息系统V7版本适合医院不需严格挂号,病人就可看病开药,同时也支持门诊不使用挂号系统; 门诊工作流程:病人到门诊看病,挂号后到门诊医生看病,医生为病人开处方和检验、检查项目。 检验、检查项目:病人先到门诊收费缴费后,做项目检查。 处方:病人先到门诊药房划价后,到门诊收费缴费,然后才能到门诊药房拿药。 http://www.allok.net/yybrlc.htm
21.挂号系统预约、挂号-南阳市第一人民医院https://www.nyrmyy.com/guahao
22.预约挂号若3个月内累计违约记录达到3次或同一账号一周内取消累计6次,系统将自动锁定,取消该患者3个月内各种途径的预约挂号资格,只能当天至医院现场在自助挂号机或人工窗口进行挂号;如果一天内取消3次,则当日无法预约。因医院信息系统故障(或因我院其他原因)导致无法取号或报到,均不计入违约记录。如在预约候诊时间段前取消https://www.qzhospital.com/yygh.aspx
23.常熟市第一人民医院5、取号挂号 在就诊当天按短信、微信或打印凭证规定的时间至医院自助机预约取号(社保卡/市民卡为取医保号,身份证为取自费号),也可至人工窗口告知挂号人员预约取号(需出示社保卡/市民卡/身份证/病历号/预约号),我院的信息系统会自动获取您的预约信息。逾期将自动取消预约名额,同时,您将被视为爽约一次,按爽约的https://gh.jscsyy.cn/
24.河南省预约挂号服务平台家448可约医院 名53472可约医生 个2996379可约号源 预医通管理后台合理用药管理预约诊疗考核系统医师进修培训系统预约指南 公告 动态 更多 河南中医药大学第一附属医院2024年12月份周末排班表 河南中医药大学三附院重新上线,李发枝、唐宋、臧云彩等热门专家的预约挂号实施新规则 https://www.169000.net/
25.医院预约挂号系统APP开发,线上预约服务系统APP开发一,预约系统APP逻辑: 一、挂号预约app开发有哪些优点? 1、针对医院门诊而言:根据app可以更强的管理方法病人,有效的分配医疗资源,提高医院门诊在众多病人心里的品牌形象。还能够确保病人的身心健康,根据app可以更强的掌握每一位病人的具体情况,开展实时监控,协助大量的病人解决困难。 http://guangzhou.11467.com/info/15379748.htm
26.用户登录登录 注册https://yy.xtrmyy.cn/member/login.html
27.预约挂号预约挂号 如需预约挂号,请到阆中市中医医院微信公众号或者支付宝搜索阆中市中医医院小程序。http://www.lzzyyy.com/guide/register.jspx