📄 frmsfsj.java
字号:
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 + -