?? frmsfsj.java
字號:
package myprojects.FrmSFSJ; //打包
/**
*<p>收費上交FrmSFSJ.java</p>
*<p>Copyright:冉勇 Copyright(c)2005</p>
*<p>Corp:cuit</p>
*@by:冉勇
*/
import myprojects.FrmMenu.*;
//引用收費上交數(shù)據(jù)庫包
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; //標(biāo)記是否已經(jīng)提交
private String strSubmitTime = "2079-6-6"; //定義一個提交時間的全局變量
//初始值為:2079-6-6
private static String notSubmitTime = "2079-6-6"; //定義一個靜態(tài)變量作為未提交的時間
//格式化數(shù)據(jù),保留一位小數(shù)
DecimalFormat strDF = new DecimalFormat("#.0");
//-----------------------程序入口-------------------//
/**
* 方法名: main
* 編寫者: 冉勇
* 功 能: 程序入口
* 輸入?yún)?shù):
* 輸出參數(shù):
* 備 注:
*/
public static void main()
{
//實例化display和對象item
Display display=new Display();
FrmSFSJ item=new FrmSFSJ();
//設(shè)置字體顏色
colRed = new Color(display,255,0,0);
colGreen = new Color(display,0,0,255);
//調(diào)用創(chuàng)建窗體的方法
item.createShell();
//分配資源和釋放資源
while( !item.shell.isDisposed())
{
if(!display.readAndDispatch())
display.sleep();
}
if (font != null) font.dispose();
display.dispose();
}//End of main
//--------------------創(chuàng)建一個窗體-------------------//
/**
* 方法名: createShell
* 編寫者: 冉勇
* 功 能: 創(chuàng)建一個窗體
* 輸入?yún)?shù):
* 輸出參數(shù):窗體
* 備 注:
*/
public void createShell()
{
//創(chuàng)建一個窗體,設(shè)置窗體的寬和高及名稱
//固定了大小,只能最小化不能最大化,沒有左上角圖標(biāo)
shell=new Shell(display,SWT.MIN | SWT.IGNORE);
shell.setSize(700,500);
shell.setLocation(160,120);
shell.setText("收費員收費上交結(jié)算");
//數(shù)據(jù)庫連接
if(!db.getConnection())
{
MessageBox msBox = new MessageBox(shell,SWT.OK|SWT.ICON_ERROR);
msBox.setText("錯誤");
msBox.setMessage("數(shù)據(jù)庫連接出錯");
msBox.open();
return;
}
//窗體布局,shell分成3格
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
shell.setLayout(gridLayout);
//生成控件
createWidgets(); //標(biāo)簽
createComTable(); //裝兩個表的composite
createComposite(); //裝標(biāo)簽、文本框、按鈕的composite
shell.open();
}//End of createShell()
//---------------------創(chuàng)建標(biāo)簽---------------------//
/**
* 方法名: createWidgets
* 編寫者: 冉勇
* 功 能: 創(chuàng)建標(biāo)簽
* 輸入?yún)?shù):
* 輸出參數(shù):標(biāo)簽
* 備 注:
*/
public void createWidgets()
{
//設(shè)置組件對齊方式, 創(chuàng)建標(biāo)簽及設(shè)置標(biāo)簽內(nèi)容,設(shè)置標(biāo)簽字體顏色
GridData griddataTS = new GridData(GridData.FILL_HORIZONTAL);
lblTS = new Label(shell,SWT.None);
lblTS.setText(" 雙擊某行查看對應(yīng)收費員收費的詳細(xì)信息");
lblTS.setLayoutData(griddataTS);
lblTS.setForeground(colRed);
griddataTS.horizontalSpan=3;
}//End of createWidgets()
//---------------創(chuàng)建裝兩個表格的composite--------------//
/**
* 方法名: createComTable
* 編寫者: 冉勇
* 功 能: 創(chuàng)建裝兩個表格的composite
* 輸入?yún)?shù):
* 輸出參數(shù):裝兩個表格的composite
* 備 注:
*/
public void createComTable()
{
//創(chuàng)建composite
comTABLE=new Composite(shell,SWT.SHADOW_ETCHED_IN);
//設(shè)置composite顯示格式
GridData griddataComTable=new GridData(GridData.FILL_HORIZONTAL);
griddataComTable.horizontalSpan=1;
griddataComTable.horizontalAlignment=GridData.BEGINNING;
comTABLE.setLayoutData(griddataComTable);
griddataComTable.heightHint = 400;
griddataComTable.widthHint = 680;
//設(shè)置composite布局
GridLayout gridlayoutComTable = new GridLayout();
gridlayoutComTable.numColumns = 2;
comTABLE.setLayout(gridlayoutComTable);
//創(chuàng)建SFGY和SFXX表
createSFGYTable();
createSFXXTable();
}//end of createComTable
//--------------創(chuàng)建顯示收費概要信息的表格-----------//
/**
* 方法名: createSFGYTable
* 編寫者: 冉勇
* 功 能: 創(chuàng)建顯示收費概要信息的表格
* 輸入?yún)?shù):
* 輸出參數(shù):收費概要信息的表格
* 備 注:
*/
public void createSFGYTable()
{
//創(chuàng)建表格并設(shè)置表格表頭可見,表框線可見
tblSFGY = new Table(comTABLE,SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
tblSFGY.setHeaderVisible(true);
tblSFGY.setLinesVisible(true);
//設(shè)置表格顯示格式
GridData gdSFGYTABLE = new GridData(GridData.FILL_BOTH);
gdSFGYTABLE.horizontalSpan = 1;
gdSFGYTABLE.widthHint = 220;
tblSFGY.setLayoutData(gdSFGYTABLE);
//定義表格列名
String[] columns={"",
"收費員",
"現(xiàn)金",
"支票",
};
//添加表格第一列,并設(shè)置內(nèi)容及寬度
TableColumn col1 = new TableColumn(tblSFGY,SWT.LEFT);
col1.setText(columns[0]);
col1.setWidth(30);
//循環(huán)添加表格的后面各列,并設(shè)置內(nèi)容及寬度
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);
}
// //創(chuàng)建收費概要信息,初始化收費概要表
// getSFGYData(strSubmitTime);
//添加行選擇監(jiān)視器
tblSFGY.addSelectionListener(new SelectionAdapter()
{
public void widgetDefaultSelected(SelectionEvent e)
{
//獲得當(dāng)前的選中行
TableItem[] items = tblSFGY.getSelection();
if(items.length == 0) return;
//取得當(dāng)前選中行的收費員ID
//把表的列值保存在一個數(shù)組里
String[] values = new String[tblSFGY.getColumnCount()];
for(int i = 0;i<items.length;i++)
{
//循環(huán)給數(shù)組每個元素賦值
for (int j = 0; j < values.length; j++)
{
//每列的值賦給數(shù)組
values[j] = items[i].getText(j);
}
}//end for
//判斷選擇的第二列值是不是"合計",不是則進行顯示詳細(xì)信息于右表
if(values[1] != "合計")
{
//向SFXX表添加數(shù)據(jù)
//定義一個臨時的提交時間
String strSubmitTimeTemp = "";
if(isSubmitTag) //已經(jīng)提交
{
strSubmitTimeTemp = strSubmitTime;
}
else //還沒提交
{
strSubmitTimeTemp = notSubmitTime;
}
//清空顯示收費詳細(xì)信息的表
tblSFXX.removeAll();
//參數(shù)為收費員ID和提交時間
getSFXXData(values[1],strSubmitTimeTemp);
}//end if
else
{
//清空顯示收費詳細(xì)信息的表
tblSFXX.removeAll();
}//end else
}//end widgetDefaultSelected()
});
}//End of createTable()
//-------------創(chuàng)建顯示收費詳細(xì)信息的表格-----------//
/**
* 方法名: createSFXXTable
* 編寫者: 冉勇
* 功 能: 創(chuàng)建顯示收費詳細(xì)信息的表格
* 輸入?yún)?shù):
* 輸出參數(shù):收費詳細(xì)信息的表格
* 備 注:
*/
public void createSFXXTable()
{
//創(chuàng)建表格并設(shè)置表格表頭可見和表框線可見
tblSFXX = new Table(comTABLE,SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
tblSFXX.setHeaderVisible(true);
tblSFXX.setLinesVisible(true);
//設(shè)置表格顯示格式
GridData gdSFXXTABLE = new GridData(GridData.FILL_BOTH);
gdSFXXTABLE.horizontalSpan = 1;
gdSFXXTABLE.widthHint = 380;
tblSFXX.setLayoutData(gdSFXXTABLE);
//定義表格列名
String[] columns={"",
"繳費日期",
"病人姓名",
"金額",
"住院號",
"繳費形式",
};
//設(shè)置各列內(nèi)容及寬度
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]);
//根據(jù)不同情況設(shè)置不同寬度
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)
* 輸入?yún)?shù):上交時間,若沒提交則為:"2079-6-6"
* 輸出參數(shù):待上交費用的概要信息
* 備 注:
*/
public void getSFGYData(String strSubmitTime)
{
try
{
//查詢數(shù)據(jù)庫
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("數(shù)據(jù)庫查詢出錯!");
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=""; //現(xiàn)金
String strZP=""; //支票
while(db.prs.next())
{
//從記錄集里取得SFY,JFXS
strSFY=db.prs.getString("SFY");
strJFXS = db.prs.getString("JFXS");
//比較查得的SFY和臨時收費員變量是否一樣,
if(tempSFY.equals(strSFY)) //第一次不執(zhí)行
{
if (strJFXS.equals("現(xiàn)金"))
{
strXJ = db.prs.getString("JENUM");
//格式化數(shù)據(jù)
strXJ = strDF.format(Double.parseDouble(strXJ));
//取得最末一行
TableItem itemSFGY = tblSFGY.getItem(tblSFGY.getItemCount()-1);
//向"現(xiàn)金"列添加數(shù)據(jù)
itemSFGY.setText(2,strXJ);
}
else
{
strZP = db.prs.getString("JENUM");
//格式化數(shù)據(jù)
strZP = strDF.format(Double.parseDouble(strZP));
TableItem itemSFGY = tblSFGY.getItem(tblSFGY.getItemCount()-1);
itemSFGY.setText(3,strZP);
}
}//end if
//查得的SFY和臨時收費員不一樣就創(chuàng)建新的一行
else
{
TableItem itemCountSFGY = new TableItem(tblSFGY,0);
itemCountSFGY.setText(new String[]{
String.valueOf(countSFGY),strSFY});
if (strJFXS.equals("現(xiàn)金"))
{
strXJ = db.prs.getString("JENUM");//現(xiàn)金
//格式化數(shù)據(jù)
strXJ = strDF.format(Double.parseDouble(strXJ));
TableItem itemSFGY = tblSFGY.getItem(tblSFGY.getItemCount()-1);
itemSFGY.setText(2,strXJ);
}
else
{
strZP=db.prs.getString("JENUM");//支票
//格式化數(shù)據(jù)
strZP = strDF.format(Double.parseDouble(strZP));
TableItem itemSFGY = tblSFGY.getItem(tblSFGY.getItemCount()-1);
itemSFGY.setText(3,strZP);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -