2.进货退货
进货退货功能主要负责记录进货管理中的退货信息,界面效果如下图。在选择了退货的商品之后,单价“退货”,将把表格中商品退货信息更新到数据库中。
3.技术分析
进货管理模块使用JDBC实现事务操作,因为进货和退货的业务逻辑涉及到3个数据表,为保证数据的完整性,将3个数据表的操作放在事务中实现,如果对任何一个数据表的操作出现错误或是不可执行的操作,那么事务中的所有操作都将取消,并恢复到事务执行的数据状态;否则3个数据表的操作全部执行。下面是JDBC事务操作的关键方法。
1) setAutoCommit()方法
该方法用于连接对象的自动提交模式。如果连接处对象的自动提交模式为true,则它的所有SQL语句被执行作为单个事务提交;否则,该连接对象的SQL语句将聚集到事务中,直到调用commit()方法或rollback()方法为止。默认情况下,新连接的自动提交模式为true。
语句:
Void setAutoCommit(boolean autoCommit)
autoCommit:该参数为true表示启用连接对象的自动提交模式:false表示禁用链接对象的自动提交模式。
26
getAutoCommit()
判断此连接对象是否启用了自动提交模式。 语法:
Boolean getAutoCommit() 2) commit()方法
该方法将执行提交SQL语句执行数据库操作,并释放此连接对象当前持有的所有数据库锁。此方法只在禁用自动提交模式情况下使用。
语法:
Void commit() 3) rollback()方法
该方法将取消在事务中进行的所有更改,并释放此连接对象当前持有的所有数据库锁。此方法只在禁止自动提交模式情况下使用。
语法:
Void rollback() 4.进货单实现过程
创建jinhuodan类,用于实现本系统的进货单功能的界面和业务逻辑。界面中定义的主要控件如表:
进货单界面中的主要控件
27
1) 编写inittable()方法,该方法用于初始化食品表格的表头,列编辑器
等。设置表格中第一个列的编辑器使用下拉列表框样式的编辑器,通过编辑器选择商品的名称,其他的商品信息将自动填充,代码如下: private void initTable(){
String[]columnNames={\商品名称\商品编号\产地\单位\规格\包装\单价\
\数量\批号\批准文号\
((DefaultTableModel)table.getModel()) .setColumnIdentifiers(columnNames);
TableColumn column=table.getColumnModel().getColumn(0); final DefaultCellEditor editor=new DefaultCellEditor(sp); editor.setClickCountToStart(2); column.setCellEditor(editor); }
2) 编写initSpBox()方法,该方法用于初始化表格中的商品下拉表框。它
首先调用Dao类的query()方法获取指定供应商所提供的所有商品信息,然后将这些商品信息封装成商品对象,并把这些对象添加到商品下拉框中。代码如:
private void initSpBox(){ List list=new ArrayList();
ResultSet set=Dao.query(\+gys.getSelectedItem()+\sp.removeAllItems(); sp.addItem(new TbSpinfo());
for(int i=0;table!=null&&i
28
TbSpinfo tmpInfo=(TbSpinfo)table.getValueAt(i,0); if(tmpInfo!=null&&tmpInfo.getId()!=null) list.add(tmpInfo.getId()); } try{
while(set.next()){
TbSpinfo spinfo=new TbSpinfo();
spinfo.setId(set.getString(\
//如果表格中以存在同样商品,商品下拉框中就不再包含该商品 if(list.contains(spinfo.getId())) continue;
spinfo.setSpname(set.getString(\spinfo.setCd(set.getString(\spinfo.setJc(set.getString(\spinfo.setDw(set.getString(\spinfo.setGg(set.getString(\spinfo.setBz(set.getString(\spinfo.setPh(set.getString(\spinfo.setPzwh(set.getString(\spinfo.setMemo(set.getString(\spinfo.setGysname(set.getString(\sp.addItem(spinfo); }
}catch(SQLException e){ e.printStackTrace(); } }
29
(六)库存管理模块设计 1.库存业务
库存管理是指在上产经营中为销售和耗用而存储的各种资产。企业存货不当都会增加不必要的费用:存货过多将导致物资的积压、存储费用增加、流动资金周转不利,并且过量的库存会掩盖管理不善的问题。存货不足则影响企业的正常销售活动。库存管理的目标是需求最佳存货数量,使库存的成本总额最小化。其主要功能如下:
库存盘点和价格调整等日常处理。
价格调整功能主要用于调整库存中指定商品的单价,当用户选择了此商品,价格调整功能的界面会显示该商品在库存中的单价、数量、金额、单位、产地等信息,用户可以单击“单价”后即可修改商品的价格。如下图所示:
库存管理模块中包括库存盘点和价格调整两个功能,库存盘点功能是将库存信息显示在表格中,由操作员输入盘点的商品数量,然后自动计算损益值,价格调整功能涉及下拉列表框的选择事件监听和事件处理技术,为防止用户的错误输入,程序界面经常需要将可枚举的输入内容封装在下拉列表框中,限制用户的输
30