⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmzycf.java

📁 很全面的包括了住院管理的各项功能。如:管理员登录
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
package myprojects.FrmZYCF;

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.events.*;
import java.util.*;
import java.sql.*;

import myprojects.FrmMenu.FrmMenu;
import myprojects.FrmZYCFDb.FrmZYCFDb;;

/**
 * <p>该类用于住院处方窗体的显示和事件处理</p>
 * @author 邓余林
 * @version 1.0
 * @see java.sql.*
 * @see db.FrmZYCFDb
 * @see org.eclipse.swt.*;
 */
public class FrmZYCF{
	private Shell shell;
	private Display display;
	
	private FrmZYCFDb db;				//数据库操作实例
	private MessageBox	 msgBox;			//错误消息框
	private String		strSQL;				//数据库操作的SQL语句
	private String 		strZFBL;			//药品信息Group中的自费比例
	private String		strYPDJ;			//药品信息Group中的药品单价
	private String 		strGG;				//药品信息Group中的药品规格
	private String 		strCD;				//药品信息Group中的药品产地
	private String 		strCJ;				//药品信息Group中的药品厂家
	private String		strJJDW;			//药品信息Group中的计价单位
	private String		strZYH;				//用户登录处方的住院号
	private String		strXMFL;			//分类代码
	private String 		strBLH;
	private ArrayList	astYPNM;			//用于存放药品内码
											//和收费项目输入用内码的动态数组

	private static  int tblItemIndex_YP;	//中间表格药品信息行索引值
	private static  int tblItemIndex_YLFW;//中间表格医疗服务行索引值
	private	 boolean	isYPRadioSelected;	//用来判断当前录入状态的flag
	private boolean	isInfGrpChanged;	//用来判断下面信息输入Group是否有输入
	private boolean isCurrentJFMX;
	private boolean isCurrentFYMX;
	private float fJE;				
	private float fZFJE;
	private float fYFSum;
	private float fQZZF1Sum;
	private float fYLFWSum;
	private float fQZZF2Sum;
		
	private GridLayout  grdLtTop;			//顶部控件布局
	private GridLayout  grdLtZDXX;			//诊断Group布局
	private GridLayout  grdLtYPXX;			//药品Group布局
	private GridLayout	grdLtCmpUp;			//上部按键Composite布局
	private GridLayout	grdLtCmpDown;		//下部按键Composite布局
	private GridData	grdData;			//GridData
	
	private Group		grpZDXX;			//诊断信息Group
	private Group		grpYPXX;			//药品信息Group
	
	private Table		tblMiddle;			//中间表格
	private TableColumn[] colYPXX;			//中间表格的列
	private TableItem	item;
	private	 String[][]	 saYPXXData;
	private String[][] 	saYLFWData;


	private	 Table 		tblICDInfo;			//输出疾病代码后弹出的ICD信息表格
	private	 TableColumn colICDNO;			//ICD信息表格的ICD编号列
	private	 TableColumn colICDName;		//ICD信息表的疾病名称列
	private TableItem   itemICD;			//ICD信息表的行
	
	private Composite comGrpLeft;			//grpZDXX左边的组件组合
	private Composite comGrpRight;			//grpZDXX右边的组件组合
	private Composite	comBtnGrpUp;		//上面的"确定""放弃"按键组合
	private Composite	comBtnGrpDown;		//下面的"保存""重输""返回"按键组合
	
	private Button		btnYP;				//"药"
	private Button		btnYLFW;			//"医疗服务"
	private Button		btnOK;				//"确定"
	private Button		btnCancel;			//"放弃"
	private Button		btnSave;			//"保存"
	private Button		btnReInput;			//"重输"
	private Button		btnBack;			//"返回"
	
	private Label		lblNone;			//空内容标签,用于布局
	private	 Label		lblGG;				//药品规格标签
	private Label		lblCD;				//药品产地标签
	private Label		lblCJ;				//药品厂家标签
	private	 Label		lblYPDM;			//药品代码标签
	
	private Text		txtZYH;				//"住院号"
	private Text		txtCFYS;			//"处方医师"
	private Text		txtCFRQ;			//"处方日期"
	private Text		txtBRXM;			//"病人姓名"
	private Text		txtCSRQ;			//"出生日期"
	private Text		txtBLH;				//"病历号"
	private Text		txtYF;				//"药费"
	private Text		txtQZZF1;			//"其中自费"
	private Text		txtYLFWF;			//"医疗服务费"
	private Text		txtQZZF2;			//"其中自费"
	private Text		txtJBDM;			//"疾病代码"
	private Text		txtBM;				//"病名"
	private Text		txtZD;				//"诊断"
	private Combo		cmbYPDM;			//"药品代码"
	private Text		txtDJ;				//"单价"
	private Text		txtJJDW;			//"计价单位"
	private Text		txtSL;				//"数量"
	private Text		txtJE;				//"金额"
	private Text		txtZFBL;			//"自费比例"
	private Text		txtZFJE;			//"自费金额"
	private Text		txtGG;				//"规格"
	private Text		txtCD;				//"产地"
	private Text		txtCJ;				//"厂家"
	private Text		txtJFHJ;			//"缴费合计"
	private Text		txtFYHJ;			//"费用合计"
	private Text		txtKS;				//"科室"
	
	private Label 		lblMsg;				//提示信息	
	private	 Font		font;				//表格字体	
	private Font		itemFont;			//表格行字体
	private Color		colRed;				//红色
	//Create VerifyListener
		/**
		 * 输入验证监听器,当用户在文本框中输入文本但控件还未
		 * 获得该文本时调用,该监听器只允许用户输入数字和退格键
		 * 住院号和药品代码文本框使用此监听器
		 * @see createTop()#txtZYH,createGroupDown()#cmbYPDM
		 */
	VerifyListener lsnVrfy = new VerifyListener(){		
			public void verifyText(VerifyEvent event){
				//Assume don't allow it
				event.doit = false;
				//Get the Charater typed
				char myChar = event.character;
				//Allow '0-9'
				if(Character.isDigit(myChar)) event.doit = true;
				//Allow Baskspace
				if(myChar == '\b') event.doit = true;
				if(myChar == SWT.DEL) event.doit = true;			
			}
		};
		
		/**
		 * 疾病代码输入框验证监听器,当用户在文本框中输入文本但控件还未
		 * 获得该文本时调用,该监听器只允许用户输入数字,'.'和退格键
		 * @see createGroupUp()#txtJBDM
		 */
	VerifyListener lsnVrfyJBDM = new VerifyListener(){
			public void verifyText(VerifyEvent event){
				//Assume don't allow it
				event.doit = false;
				//Get the Charater typed
				char myChar = event.character;
				//Allow '0-9'
				if(Character.isDigit(myChar)) event.doit = true;
				//Allow Baskspace
				if(myChar == '\b') event.doit = true;
				if(myChar == SWT.DEL) event.doit = true;	
				//Allow '.'
				if(myChar == '.') event.doit = true;
			}
		};

		/**
		 * 数量输入框验证监听器,当用户在文本框中输入文本但控件还未
		 * 获得该文本时调用,该监听器只允许用户输入数字,'-'和退格键
		 * @see createGroupDown()#txtSL
		 */
	VerifyListener lsnVrfySL = new VerifyListener(){
			public void verifyText(VerifyEvent event){
				//Assume don't allow it
				event.doit = false;
				//Get the Charater typed
				char myChar = event.character;
				//Allow '0-9'
				if(Character.isDigit(myChar)) event.doit = true;
				//Allow Baskspace
				if(myChar == '\b') event.doit = true;
				if(myChar == SWT.DEL) event.doit = true;	
				//Allow '-'
				if(myChar == '-') event.doit = true;
			}
		};
			
		/**
		 * 收费项目输入用代码验证监听器,当用户在文本框中输入文本
		 * 但控件还未获得该文本时调用,
		 * 该监听器只允许用户输入字母和退格键
		 * @see createGroupDown()#cmbYPDM
		 */
	VerifyListener lsnVrfySFSR = new VerifyListener(){
			public void verifyText(VerifyEvent event){
				//Assume don't allow it
				event.doit = false;
				//Get the Charater typed
				char myChar = event.character;
				//Allow Characters 'A-Z'
				if(Character.isLetter(myChar)) event.doit = true;			
				//Allow Baskspace
				if(myChar == '\b') event.doit = true;
				if(myChar == SWT.DEL) event.doit = true;
			}	
		};	
	
	/**
	* name:main
	* author:pizi
	* function:application entry point
	* parameters in:String[] args
	* parameters out:none
	* note:
	*/
	
	public static void main(){
		Display display = new Display();
		FrmZYCF Item=new FrmZYCF();
		Item.createshell();
		Item.initWidgets();	
					
		while(!Item.shell.isDisposed()){
			if(!display.readAndDispatch())
				display.sleep();	
		}	
		
		Item.colRed.dispose();
		Item.font.dispose();	
		Item.db.closeDB();
		display.dispose();
	}		
	
	/**
	*name:createshell
	*author:pizi
	*function:create application shell and composites to display
	*parameters in:none
	*parameters out:none
	*note:use GridLayout
	**/	
	public void createshell(){
		shell = new Shell(display,SWT.BORDER | SWT.CLOSE | SWT.MIN);
		shell.setSize(764,600);
		shell.setText("住院部处方");
		
		//Create font		
		font = new Font(display, "Helvetica", 8, SWT.BOLD);		
		itemFont = new Font(display, "Arial", 10, SWT.NORMAL);
		//Create Color
		colRed = new Color(display,255,0,0);
		
		

		//Define the Top's Layout,GridLayout with 6 columns
		grdLtTop = new GridLayout(6,false);
		grdLtTop.horizontalSpacing = 25;
		grdLtTop.marginWidth = 16;
		grdLtTop.marginHeight = 10; 
		shell.setLayout(grdLtTop);		
		
		//Create widgets
		createTop();		
		createGroupUp();				
		createTable();
		createGroupDown();
		createBottom();	
		shell.open();
		
		//Connection Database
		db = new FrmZYCFDb();
		if(db.getConnection()){
			//If Database Connection failed,
			//dispose shell and exit
			shwErrMsgBox_Connect();
			shell.getDisplay().dispose();
			shell.dispose();
			FrmMenu.main();
			return;
		}			
	}
	
	/**
	 * name:createTop
	 * author:pizi
	 * function:create top widgets
	 */
	private void createTop(){
				
		//住院号		
		Label lblZYH = new Label(shell,SWT.NONE);
		lblZYH.setText("住院号");
		//设置Label宽62
		grdData = new GridData();
		grdData.widthHint = 62;
		lblZYH.setLayoutData(grdData);
		grdData = new GridData();
		txtZYH = new Text(shell,SWT.BORDER);
		//设置Text宽112
		grdData.widthHint=112;
		txtZYH.setLayoutData(grdData);
		txtZYH.setTextLimit(12);
		txtZYH.setToolTipText("请输入住院号\n住院号由12位数字组成");		
		
		//住院号文本框获取焦点监听器,当文本框获得焦点时调用
		txtZYH.addListener(SWT.FocusIn,new Listener(){
			public void handleEvent(Event event){
				if(txtZYH.getEditable()){				
					//添加输入验证监听器,只允许输入数字
					txtZYH.addVerifyListener(lsnVrfy);
					lblMsg.setText("请输入住院号\n住院号由12位数字组成");
				}
			}
		});
		
		// Add a handler to detect key presses for txtZYH
        txtZYH.addKeyListener(new KeyAdapter() {
        	public void keyPressed(KeyEvent event) {
         	 // End the editing and enable controls if the user presses Enter
         	 // End the editing and throw away the text if the user presses Escape
        	  switch (event.keyCode) {
        	  case SWT.KEYPAD_CR:
        	  case SWT.CR:    
        		  	//移除住院号文本框的输入验证监听器
        		  	txtZYH.removeVerifyListener(lsnVrfy);        		  	
        	  		strZYH = txtZYH.getText().trim();   
        	  		strSQL = "SELECT BLH FROM RCYJL WHERE ZYH='"+strZYH+"'";        	  		      	  		     	  			  		
    
        	  		//User entered right ZYH
        	  		if( db.executeQuery(strSQL) ){        	  			
						//显示 病历号
						try{
							//住院号正确输入
							if(db.rs.next()){
								strBLH = db.rs.getString("BLH");
							}
							//住院号不存在
							else{
								lblMsg.setText("该住院号不存在!\n请重新输入");								
								txtZYH.selectAll();
								txtZYH.addVerifyListener(lsnVrfy);
								return;
							}
						}catch(SQLException se){}
						//Disable txtZYH
						txtZYH.setEditable(false);
						txtBLH.setText(strBLH);
						strSQL = "SELECT * FROM BRXX WHERE BLH='"+strBLH+"'";
						if( db.executeQuery(strSQL) ){						
							try{
								while(db.rs.next()){
									//显示 病人姓名									
									txtBRXM.setText( db.rs.getString("BRXM") );
									//显示 出生年月								
									txtCSRQ.setText( db.rs.getString("CSNY") );
								}
							}catch(SQLException se){}
						}
						else shwErrMsgBox_Query();
						
						//显示 缴费合计
						strSQL = "SELECT JE FROM [JFJL] WHERE JZRQ IS NULL AND ZYH='"+strZYH+"'";
						float fJFHJ = 0;
						if( db.executeQuery(strSQL)){
							try{
								while(db.rs.next()){
									fJFHJ += db.rs.getFloat("JE");
								}
								txtJFHJ.setText( String.valueOf(fJFHJ) );
							}catch(SQLException se){}
						}
						else shwErrMsgBox_Query();
						
						//显示 费用合计
						strSQL = "SELECT DJ,SL,ZFBL FROM View_WJZFY WHERE ZYH='"+strZYH+"'";
						float fFYHJ = 0;
						if( db.executeQuery(strSQL) ){
							try{								
								while(db.rs.next()){							
									fFYHJ += db.rs.getFloat("DJ")*
										db.rs.getInt("SL")*db.rs.getInt("ZFBL")/100;
								}
							}catch(SQLException se){}
							txtFYHJ.setText( String.valueOf(fFYHJ) );
						}						
						else shwErrMsgBox_Query();							
						//Enable controls to proceed
						//重输按键设置为可用
	    				btnReInput.setEnabled(true);
						btnYP.setEnabled(true);
						btnYLFW.setEnabled(true);
						txtJBDM.setEditable(true);							
	         		  	btnCancel.setEnabled(true);
	         		  	cmbYPDM.setEnabled(true);	         		  	   
	         		  	//Set focus to cmbYPDM
						cmbYPDM.setFocus();
					}        	  		
					else shwErrMsgBox_Query();	
        	  		
        	  		//Set txtKS with RCYJL.ZYKS
        			strSQL = "SELECT ZYKS FROM [RCYJL] WHERE ZYH='"+strZYH+"'";
        			if(db.executeQuery(strSQL)){
        				try{
        					if(db.rs.next()){
        						txtKS.setText(db.rs.getString("ZYKS"));
        					}
        				}catch(SQLException se){}
        			}
        			else shwErrMsgBox_Query();	
        			
					break;
					

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -