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

📄 frmsfsj.java

📁 用JAVA SWT编写的住院管理系统。用SQLServer数据库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package myprojects.FrmSFSJ;								//打包

/**
*<p>收费上交FrmSFSJ.java</p>
*<p>Copyright:冉勇 Copyright(c)2005</p>
*<p>Corp:cuit</p>
*@by:冉勇
*/


import myprojects.FrmMenu.*;
//引用收费上交数据库包
import myprojects.FrmSFSJDb.*;

import org.eclipse.swt.*;								//引用swt包
import org.eclipse.swt.layout.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.custom.StackLayout;
import java.text.*;


public class FrmSFSJ									
{
	//申明shell,display,并实例化FrmSFSJDb
	private Shell shell;								
	private Display display;							
	private static FrmSFSJDb db = new FrmSFSJDb();	
		
	//申明字体和颜色
	private static Font font;							
	private static Color colRed,colGreen;
	
	//申明控件
	private Table tblSFGY,tblSFXX;						
	private Label lblTS,lblJSSJ,lblBLANK;				
	private Text txtJSSJ;								
	private Combo cmbJSSJ;								
	private Composite comSHELL,comJSSJ,comTABLE;		
	private Button btnSX,btnQD,btnFH;					
	
	//定义全局变量
	private boolean isSubmitTag = false;				//标记是否已经提交
	private String strSubmitTime = "2079-6-6";          //定义一个提交时间的全局变量
														//初始值为:2079-6-6
	private static String notSubmitTime = "2079-6-6"; 	//定义一个静态变量作为未提交的时间
	
	//格式化数据,保留一位小数
	DecimalFormat strDF = new DecimalFormat("#.0");

	//-----------------------程序入口-------------------//
	/**
	* 方法名:	main
	* 编写者:	冉勇
	* 功  能:	程序入口
	* 输入参数:
	* 输出参数:
	* 备  注:
	*/	
	public static void main()				
	{
		//实例化display和对象item
		Display display=new Display();					
		FrmSFSJ item=new FrmSFSJ();						
	
		//设置字体颜色
		colRed = new Color(display,255,0,0);			
		colGreen = new Color(display,0,0,255);
		
		//调用创建窗体的方法
		item.createShell();								
		
		//分配资源和释放资源
		while( !item.shell.isDisposed())				
    	{
       		if(!display.readAndDispatch())
           	display.sleep();
    	}
    	if (font != null) font.dispose();
    	display.dispose();
    			
	}//End of main
	
	//--------------------创建一个窗体-------------------//
	/**
	* 方法名:	createShell
	* 编写者:	冉勇
	* 功  能:	创建一个窗体
	* 输入参数:
	* 输出参数:窗体
	* 备  注:
	*/
	public void createShell()							
	{
		//创建一个窗体,设置窗体的宽和高及名称
		//固定了大小,只能最小化不能最大化,没有左上角图标
		shell=new Shell(display,SWT.MIN | SWT.IGNORE);	
		shell.setSize(700,500);	
		shell.setLocation(160,120);						
		shell.setText("收费员收费上交结算");		
		
		//数据库连接
        if(!db.getConnection())							
        {
            MessageBox msBox = new MessageBox(shell,SWT.OK|SWT.ICON_ERROR);
            msBox.setText("错误");
            msBox.setMessage("数据库连接出错");
            msBox.open();
            return;
        }
		
		//窗体布局,shell分成3格
		GridLayout gridLayout = new GridLayout();		
    	gridLayout.numColumns = 3;						
    	shell.setLayout(gridLayout);					
		
		//生成控件
		createWidgets();								//标签
		createComTable();								//装两个表的composite
		createComposite();								//装标签、文本框、按钮的composite
		shell.open();
		
	}//End of createShell()
	
	//---------------------创建标签---------------------//	
	/**
	* 方法名:	createWidgets
	* 编写者:	冉勇
	* 功  能:	创建标签
	* 输入参数:
	* 输出参数:标签
	* 备  注:
	*/
	public void createWidgets()					
	{	
		//设置组件对齐方式,	创建标签及设置标签内容,设置标签字体颜色											
		GridData griddataTS = new GridData(GridData.FILL_HORIZONTAL);		
		lblTS = new Label(shell,SWT.None);				
		lblTS.setText("   双击某行查看对应收费员收费的详细信息");
		lblTS.setLayoutData(griddataTS);				
		lblTS.setForeground(colRed);					
		griddataTS.horizontalSpan=3;
				
	}//End of createWidgets()
	
	//---------------创建装两个表格的composite--------------//
	/**
	* 方法名:	createComTable
	* 编写者:	冉勇
	* 功  能:	创建装两个表格的composite
	* 输入参数:
	* 输出参数:装两个表格的composite
	* 备  注:
	*/
	public void createComTable()
	{
		//创建composite
		comTABLE=new Composite(shell,SWT.SHADOW_ETCHED_IN);	
		
		//设置composite显示格式
		GridData griddataComTable=new GridData(GridData.FILL_HORIZONTAL);
		griddataComTable.horizontalSpan=1;
		griddataComTable.horizontalAlignment=GridData.BEGINNING;
		comTABLE.setLayoutData(griddataComTable);
		griddataComTable.heightHint = 400;
		griddataComTable.widthHint = 680;
		
		//设置composite布局
		GridLayout gridlayoutComTable = new GridLayout();	
		gridlayoutComTable.numColumns = 2;
		comTABLE.setLayout(gridlayoutComTable);	
		
		//创建SFGY和SFXX表
		createSFGYTable();								
		createSFXXTable();								
		
	}//end of createComTable
	
	//--------------创建显示收费概要信息的表格-----------//
	/**
	* 方法名:	createSFGYTable
	* 编写者:	冉勇
	* 功  能:	创建显示收费概要信息的表格
	* 输入参数:
	* 输出参数:收费概要信息的表格
	* 备  注:
	*/
	public void createSFGYTable()							
	{
		//创建表格并设置表格表头可见,表框线可见			
		tblSFGY = new Table(comTABLE,SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
		tblSFGY.setHeaderVisible(true);					
		tblSFGY.setLinesVisible(true);					
		
		//设置表格显示格式
		GridData gdSFGYTABLE = new GridData(GridData.FILL_BOTH);
		gdSFGYTABLE.horizontalSpan = 1;
		gdSFGYTABLE.widthHint = 220;					
		tblSFGY.setLayoutData(gdSFGYTABLE);	
		
		//定义表格列名	
		String[] columns={"",
						  "收费员",
						  "现金",
						  "支票",
						 };	
						 	
		//添加表格第一列,并设置内容及宽度		
		TableColumn col1 = new TableColumn(tblSFGY,SWT.LEFT);
		col1.setText(columns[0]);
		col1.setWidth(30);	
				
		//循环添加表格的后面各列,并设置内容及宽度
		for(int i=1;i<4;i++)
		{		
			TableColumn colTotal = new TableColumn(tblSFGY,SWT.LEFT);
			colTotal.setText(columns[i]);
			colTotal.setWidth(70);		
			colTotal.setAlignment(SWT.RIGHT);
		}
				
//		//创建收费概要信息,初始化收费概要表
//		getSFGYData(strSubmitTime);	
									
		//添加行选择监视器
		tblSFGY.addSelectionListener(new SelectionAdapter()
		{
			public void widgetDefaultSelected(SelectionEvent e)
			{
				//获得当前的选中行
				TableItem[] items = tblSFGY.getSelection();
				if(items.length == 0) return;
				
				//取得当前选中行的收费员ID
				//把表的列值保存在一个数组里
				String[] values = new String[tblSFGY.getColumnCount()];
				for(int i = 0;i<items.length;i++)
				{
					//循环给数组每个元素赋值
                	for (int j = 0; j < values.length; j++) 
                	{
                    	//每列的值赋给数组
                    	values[j] = items[i].getText(j);
                	}	
				}//end for
				
				//判断选择的第二列值是不是"合计",不是则进行显示详细信息于右表
				if(values[1] != "合计")
				{	
					//向SFXX表添加数据
					//定义一个临时的提交时间
					String strSubmitTimeTemp = "";			
					if(isSubmitTag)	//已经提交					
					{ 
						strSubmitTimeTemp = strSubmitTime;
					}	
					else			//还没提交
					{ 
						strSubmitTimeTemp = notSubmitTime;
					}
					
					//清空显示收费详细信息的表	
					tblSFXX.removeAll();
					
					//参数为收费员ID和提交时间					
					getSFXXData(values[1],strSubmitTimeTemp);
				}//end if
				else
				{
					//清空显示收费详细信息的表
					tblSFXX.removeAll();					
				}//end else
			}//end widgetDefaultSelected()				
		});
				
	}//End of createTable()
	
	//-------------创建显示收费详细信息的表格-----------//
	/**
	* 方法名:	createSFXXTable
	* 编写者:	冉勇
	* 功  能:	创建显示收费详细信息的表格
	* 输入参数:
	* 输出参数:收费详细信息的表格
	* 备  注:
	*/
	public void createSFXXTable()							
	{	
		//创建表格并设置表格表头可见和表框线可见			
		tblSFXX = new Table(comTABLE,SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
		tblSFXX.setHeaderVisible(true);					
		tblSFXX.setLinesVisible(true);						
		
		//设置表格显示格式
		GridData gdSFXXTABLE = new GridData(GridData.FILL_BOTH);
		gdSFXXTABLE.horizontalSpan = 1;
		gdSFXXTABLE.widthHint = 380;
		tblSFXX.setLayoutData(gdSFXXTABLE);		
		
		//定义表格列名	
		String[] columns={"",
						  "缴费日期",
						  "病人姓名",
						  "金额",
						  "住院号",
						  "缴费形式",
						 };	
		
		//设置各列内容及宽度
		TableColumn col1 = new TableColumn(tblSFXX,SWT.CENTER);
		col1.setText(columns[0]);
		col1.setWidth(20);					 
		for(int i=1;i<6;i++)
		{		
			TableColumn colTotal = new TableColumn(tblSFXX,SWT.LEFT);
			colTotal.setText(columns[i]);
			
			//根据不同情况设置不同宽度
			int width=0;	
			switch(i)
			{
				case 1: width = 115;break;
				case 2: width = 60;	break;
				case 3: width = 70;	break;
				case 4: width = 85;	break;
				case 5: width = 60;	break;
			}//end switch	
			colTotal.setWidth(width);	
		}//end for			
														
	}//End of createTable()
	
	//-----------显示收费员要上交费用的概要信息---------//	
	/**
	* 方法名:	getSFGYData
	* 编写者:	冉勇
	* 功  能:	取得收费员要上交费用的概要信息(收费概要SFGY)
	* 输入参数:上交时间,若没提交则为:"2079-6-6"
	* 输出参数:待上交费用的概要信息
	* 备  注:
	*/
	public void getSFGYData(String strSubmitTime)
	{
		try
		{
			//查询数据库
			String strJFRQ;
			strJFRQ = txtJSSJ.getText();
			int temp = db.getSFGY(strSubmitTime,strJFRQ);		
			if((temp == 0) || (temp == 2))
			{
				if(temp == 0)
				{
					MessageBox msBox = new MessageBox(shell,SWT.OK|SWT.ICON_ERROR);
	            	msBox.setText(" 错误");
	            	msBox.setMessage("数据库查询出错!");
	            	msBox.open();
	            	return;
            	}
            	if(temp == 2)
            	{
            		MessageBox tsBox = new MessageBox(shell,SWT.OK);
	            	tsBox.setText("友情提示");
	            	tsBox.setMessage("没有需上交的信息!您可以查看以前提交的记录。");
	            	tsBox.open();
	            	return;	
            	}
			}//end if
			else
			{								
				int countSFGY=1;						//序号
				String tempSFY = "";					//收费员临时变量
				String strSFY="";						//收费员
				String strJFXS = "";					//交费形式
				String strXJ="";						//现金
				String strZP="";						//支票			
				while(db.prs.next())
				{	
					//从记录集里取得SFY,JFXS	
					strSFY=db.prs.getString("SFY");
					strJFXS = db.prs.getString("JFXS");
					
					//比较查得的SFY和临时收费员变量是否一样,
					if(tempSFY.equals(strSFY))			//第一次不执行
					{
						if (strJFXS.equals("现金")) 
						{
							strXJ = db.prs.getString("JENUM");
							//格式化数据
							strXJ = strDF.format(Double.parseDouble(strXJ));
							//取得最末一行
							TableItem itemSFGY = tblSFGY.getItem(tblSFGY.getItemCount()-1);
							//向"现金"列添加数据
							itemSFGY.setText(2,strXJ);
						} 
						else 
						{
							strZP = db.prs.getString("JENUM");
							//格式化数据
							strZP = strDF.format(Double.parseDouble(strZP));
							TableItem itemSFGY = tblSFGY.getItem(tblSFGY.getItemCount()-1);
							itemSFGY.setText(3,strZP);
						}
					}//end if				
					//查得的SFY和临时收费员不一样就创建新的一行
					else
					{
						TableItem itemCountSFGY = new TableItem(tblSFGY,0);
						itemCountSFGY.setText(new String[]{	
						String.valueOf(countSFGY),strSFY});	
						if (strJFXS.equals("现金")) 
						{
							strXJ = db.prs.getString("JENUM");//现金
							//格式化数据
							strXJ = strDF.format(Double.parseDouble(strXJ));
							TableItem itemSFGY = tblSFGY.getItem(tblSFGY.getItemCount()-1);
							itemSFGY.setText(2,strXJ);
						} 
						else
						{
							strZP=db.prs.getString("JENUM");//支票
							//格式化数据
							strZP = strDF.format(Double.parseDouble(strZP));
							TableItem itemSFGY = tblSFGY.getItem(tblSFGY.getItemCount()-1);
							itemSFGY.setText(3,strZP);

⌨️ 快捷键说明

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