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.介入联合靶免,让中晚期肝癌患者重获新生病史摘要:中年男性,48岁,因“反复右上腹部隐痛不适2月,加重3天”就诊。查乙肝表面抗原>250.00↑IU/ml。甲胎蛋白110628.60IU/ml,异常凝血酶原(PIVKA-II)18846.20↑mAU/mL,谷草转氨酶129.50↑U/L。腹部彩超:肝右叶实性包块,肝Ca? 进一步完善CT: 1.肝右叶肿块及肝S2低密度结节,考虑原发性巨块型肝细胞癌并子https://www.gmrmyy.com/yyxw/info_11.aspx?itemid=9105
2.CT开启冠脉检查新纪元在当今医疗领域,CT是临床疾病诊断的一种不可或缺的检查方式。工欲善其事,必先利其器。随着科技发展,高端影像设备不断革新。实现精准诊疗,先进设备是基础。金山院区作为先进医疗技术的践行者,为了给人民群众带来更优质的诊疗服务,近期引进了NeuViz Epoch 512层超高端CT并投入使用,旨在为广大患者带来福音。 https://hospital-cqjs.com/info/1053/2785.htm
3.降科普32岁的林小姐(化名)近段时间发现 同房后老是有淡红色液体流出 她有点担心 于是连忙赶到佛山市第二人民医院妇科就诊 查看更多 10 2023-12 15岁少年视力下降,谁知是视网膜脱离!佛山市二眼科医生:青少年越来越常见 网脱,全称是视网膜脱离 是一种严重的致盲性眼病 在人们的认知里 这些病都是上了年纪的人得的 但https://www.fsey.com/jkkp_22
4.C/C++医院挂号系统[20240720]开发板c语言医院叫号系统C/C++医院挂号系统[2024-07-20] 设置挂号数量警报线 系统可以为每个科室的每个医生(特别是专家号),设定挂号数量警报线。当就诊病人数量超过限定的数量时,计算机系统会自动报警来通知管理人员、护士、医生,以便及时提示护士是否增加医生或停止挂号。 签到处理患者挂号时,不一定挂一个号或者挂号后不一定马上到相应的分诊https://blog.csdn.net/qq_35960743/article/details/140567508
5.如何使用C++编写一个简单的医院挂号系统?C++当用户选择退出系统时,程序将结束。当然,这只是一个简单的示例系统,实际的医院挂号系统可能会更复杂,需要考虑更多的功能和细节。但通过这个例子,您可以对如何使用C++编写一个简单的医院挂号系统有一个初步的了解,并可根据实际需要进行扩展和改进。https://www.php.cn/faq/625077.html
6.C++医院影像系统PACS源码C++医院影像系统PACS源码 简介:PACS (picture archiving and communication system) 即医学影像归档与传输系统,是应用于医院环境中对医学影像数据实施计算机管理的专业化信息系统,是当今医院信息化中的重要构成部分。其基本任务是对医学影像的采集通讯、软拷贝显示、电子化归档存储、硬拷贝输出,以及与医学环境中其他信息系统https://developer.aliyun.com/article/1419336
7.源程序(医院药房药品管理系统C++)精选文档.doc源程序(医院药房药品管理系统C++)【精选文档】 Goods * temp=new Goods ;//构建新结点信息 length++; //每加一个结点 链表长度增1 temp—>next=NULL; cout<<" 请输入药品名称: ”; cin〉〉temp-〉name; cout<〈" 请输入单价 : ”; cin〉>temp-〉price; https://www.taodocs.com/p-579299658.html
8.PACS医院影像科室系统源码(C++)腾讯云开发者社区PACS医院影像科室系统源码(C++) PACS系统源码在预约登记、分诊叫号、技师检查、诊断报告、临床浏览、科室管理等环节满足全院相关科室的要求。在医学影像下载、浏览、处理中满足速度快、强化常用功能、方便阅片等要求。满足放射、超声、内镜、病理等影像科室的业务需求。通过与HIS、LIS等系统的无缝对接,为医院整体信息化https://cloud.tencent.com/developer/article/2279330
9.一段C++语言的医院PACS系统代码编程编程的技术博客一段C++语言的医院PACS系统代码,由于医院PACS系统是一个复杂的系统,代码量较大,我举一个简单的例子来说明如何基于C++语言实现一个图片查看的功能。首先,需要定义一个Image类,存储图片的基本信息,如图片大小、类型、保存路径等,同时还需要定义一个显示图片的函数。代https://blog.51cto.com/u_16078995/6429703
10.基于C++编程医院医学影像系统PACS实现首先,PACS系统可实现检查预约、病人信息登记、计算机阅片、电子报告书写、胶片打印、数据备份等一系列满足影像科室日常工作的功能,并且由于影像数字化存储,用户可利用影像处理与测量技术辅助诊断、方便快捷地查找资料或利用网络将资料传输至临床科室,还可与医院HIS、LIS无缝连接。 https://blog.itpub.net/70027963/viewspace-2951562/
11.C语言程序设计医院信息管理系统附源代码计算机C++资料.docxC语言程序设计医院信息管理系统附源代码计算机C++资料.docx 17页内容提供方:蒋老师学习资料 大小:549.96 KB 字数:约1.61万字 发布时间:2023-09-30发布于四川 浏览人气:86 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)https://max.book118.com/html/2023/0925/6040153040005233.shtm
12.C++医院医学影像PACS系统源码影像采集DICOM影像C++医院医学影像PACS系统源码 影像采集 DICOM影像 江海入海,知识涌动,这是我参与江海计划的第3篇。 医院医学影像系统主要功能 PACS流程从病人开始在HIS登记(挂号登记)或在RIS中进行检查登记开始。然后病人进入检查室,技师进行检查,接着阅片、书写报告和影像及图文报告归档。https://open.alipay.com/portal/forum/post/160201068
13.青年女性持续高热全身不适,就诊多家三甲医院,抗菌药物无效,发热2023-10-05 至上海某三甲医院就诊,查WBC 7.5×10^9/L,N 87%,PLT 266×10^9/L;CRP <10mg/L;尿WBC++。10-06至我院发热门诊就诊,查甲、乙型流感病毒及呼吸道合胞病毒核酸阴性,胸部CT阴性;予头孢唑肟+左氧氟沙星抗感染2天,无好转,并出现呕吐、腹泻1次。 https://www.huxijie.com/documents/%E5%AD%A6%E6%9C%AF/7453
14.松江这些优质企业正在招实习生→澎湃号·政务澎湃新闻1、负责晨光集团零售信息部IT系统的日常运维工作。 2、基于现有系统 POS、OMS,电商和店铺业务系统。 3、负责终端用户操作指导,系统问题解决。 任职要求: 1、专科及以上学历,软件工程、计算机相关专业。 2、善于沟通,表达清晰。 3、有热情,积极投入工作。 https://www.thepaper.cn/newsDetail_forward_14925385
15.疾控工作动态周报(2023年第47期)在之前的研究中,杜克大学研究团队发现并设计了新的Cas9酶,包括Sc++酶,这一变化使他们能够编辑近50%的DNA序列。与此同时,哈佛大学团队设计出了一种独立变体,名为SpRY酶。由于这两种系统都有缺点,研究团队决定将两者的优势结合在一起,开发出一种SpRY-Sc++-Cas9嵌合酶,简称SpRYc。研究人员说:“有了这个新工具,我们https://www.yascdc.com/Article/View?id=13242
16.2024年甘肃省兰州市“组团式”赴外宣介引才招聘人员岗位表(2渗透测试工程师 安全相关专业 P 5 本科及以上学历 1.参加过网络攻防,hw行动.红蓝对抗等项目,具备网络.系统.安全等某一方面的认证优先考虑,如HCNP.CISP等; 2.熟悉owasp top10漏洞原理及利用手法,了解apache.nginx.iis等中间件漏洞; 3.掌握python.php.powershell.c/c++等一种或多种脚本语言,能进行基础的编程操http://www.sdsgwy.com/article/html/6752945.html
17.医院信息管理系统(HIS)1) 现有系统主要是以医院经济核算为中心开发的,未能突出医院应为病人服务为核心的开发思路。例如:现有门诊收费基本沿用传统的手工收费体制,病人为交纳各种费用,往返奔波等待于门诊收费处,不仅不方便病人就诊,也是系统运行在资料入口处就形成瓶颈。 2) 现有系统多数是以部门级事务管理为主的模块,即使已有的网络系统,由于http://www.sunseam.com/rjal/255.html
18.兴安盟人民医院病理科千屏系统与体检科系统对接单一来源采购公示3、数据传输全面支持国际医疗影像协会的DICOM3.0标准、HL-7标准,并按国际标准的医疗流程进行工作,能与医院HIS等系统实现无缝连接。 4、系统采用C#、C++、Java等语言开发,支持Microsoft SQL Server数据库。采用无实体加密狗方式加密,可兼容虚拟服务器、云服务器管理。 https://www.xamyy.com/index.php/home/index/article/aid/3599.html
19.北京高校毕业生就业信息网招聘:系统开发工程师4名 29、北京中软融鑫计算机系统工程有限公司 招聘:实施工程师30名、java开发工程师20名 30、北京智明星通科技股份有限公司 招聘:UI设计师(2019校招)3名、游戏设计师(策划)-2019校招6名、C++开发工程师(2019校招)10名、Java开发工程师(2019校招)10名 http://www.bjbys.net.cn/c/2018-09-18/299733.shtml
20.某医院拟开发一套住院病人信息管理系统,以方便对住院病人医生(1)系统登记每个病人的住院信息,包括:病案号、病人的姓名、性别、地址、身份证号、电话号码、入院时问及病床等信息,每个病床有唯一所属的病区及病房,如表2-1所示。其中病案号唯一标识病人本次住院的信息。 表2-1 住院登记表 071002286 姓名 张三性别男 https://www.cnitpm.com/st/3811612462.html
21.华为云IOT基于香橙派AIpro设计的医院人脸红外测温系统(从0医院、疾病防控中心和发热门诊作为疫情防控的第一线,需要高效且精准地对进出人员进行健康筛查,以防止病毒传播,保障医护人员及患者的安全。传统的手动体温检测方式不仅效率低下,而且存在交叉感染的风险,开发一种能够自动、快速、准确地进行人体温度监测与身份识别的系统显得非常的重要。https://developer.huawei.com/home/forum/hwc/thread-02113156477685224010-1-1.html