第1章 系统需求分析 ............................................................................................................................... 1 1.1 需求概述 .......................................................................................................................................... 1 1.2 需求描述 .......................................................................................................................................... 1 1.2.1 数据流图 .................................................................................................................................. 1 1.2.2 数据字典 .................................................................................................................................. 4 第2章 系统初步设计 ............................................................................................................................. 25 2.1 基于POWERDESIGNER的数据库设计 .......................................................................................... 25 2.1.1总E-R图设计 ........................................................................................................................ 25 2.1.2销售管理子系统E-R图设计 ................................................................................................. 26 2.1.3仓库管理子系统E-R图设计 ................................................................................................. 31 2.1.3采购管理子系统E-R图设计 ................................................................................................. 36 2.2 数据库不规范化设计举例 ............................................................................................................ 41 2.2.1 不满足第一范式举例 ............................................................................................................ 41 2.2.2 不满足第二范式举例 ............................................................................................................ 41 2.2.3 不满足第三范式举例 ............................................................................................................ 44 2.3 系统功能界面设计 ........................................................................................................................ 46 2.3.1 系统功能图 ............................................................................................................................ 46 2.3.2 销售管理界面设计 ................................................................................................................ 46 2.3.3 仓库管理界面设计 ................................................................................................................ 47 2.3.4 采购管理界面设计 ................................................................................................................ 48 第3章 基于J2EE+MYSQL实现 ........................................................................................................... 49 3.1 J2EE实现代码 ............................................................................................................................... 49 3.2 数据库的实现代码 ........................................................................................................................ 64 3.3 成员名单 ........................................................................................................................................ 82 3.4 参考资料 ........................................................................................................................................ 82
第1章 系统需求分析
1.1 需求概述
在目前超市中,商品的管理至关重要。这里对商品的管理包括进、销、存3个方面。可以建立一个超市进销存管理系统,对超市的管理者、营业员、库存管理员等减轻其工作量,便于经营管理。
功能需求:
①采购管理功能模块:采购计划、采购订单、采购入库、采购退货、应付款、采购付款。 ②销售管理功能模块:、报价单、销售订单、销售出库、销售退货、应收款、销售收款。 ③库存管理功能模块:其它入库、其它出库、库存警报、库存报表、基本资料设计。 超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。它最主要的特点是能够实时的和准确的控制店内的销售情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望在超市购物中能基本上都能购得所需的商品,并且还要既保证商品质量还要享受优质,方便的服务。
1.2 需求描述 1.2.1 数据流图
●图1.1 第0层数据流图
●图1.2 进销存管理系统数据流图(第一层)
说明:每一个处理也均可由外部实体直接输入数据
●图1.3 销售管理数据流程图(第二层)
●图1.4 仓库管理数据流程图(第二层)
●图1.5 采购管理数据流程图(第二层)
1.2.2 数据字典
1.2.2.1 数据结构
数据存储:报价单包含以下两个表。
表1.1 报价单
编号 1 2 3 4 5 6 数据项 报价单单号 报价日期 客户 报价人 货币 操作员 数据项别名 bjd bjrq kh bjr hb czy 数据类型 Number Date Number Number Text Number 数据项含义 唯一标识 外码 外码 外码 7 编号 1 2 3 4 5 备注 数据项 报价明细单号 商品 单价 报价单号 数量 bz 数据项别名 bjdmx sp dj bjd sl 表1.3 订单
Text 表1.2 报价单明细 数据类型 Number Number Money Number Number 数据项含义 唯一标识 外码 外码 数据存储:订单包含以下两个表。 编号 1 2 3 4 5 6 7 8 9 10 11 12 13 编号 1 2 3 4 5 数据项 订单单号 订单日期 客户 货币 销售人 销售日期 付款方式 交货地点 备注 完成状态 操作员 审核人 审核状态 数据项 订单明细单号 商品 单价 订单单号 数量 数据项别名 dd ddrq kh hb xsr jhrq fkfs jhdd bz wczt czy shr shzt 数据项别名 ddmx sp dj dd sl 数据类型 Number Date Number Text Number Date Text Text Text Number Number Number Number 表1.4 订单明细 数据类型 Number Number Money Number Number 表1.5 退货单
编号 1 2 3 4 5 6 7 8 数据项 单号 退货日期 客户 货币 销售人 验收人 备注 操作员 数据项别名 ckd thrq kh hb xsr ysr bz czy 数据类型 Number Date Number Text Number Number Text Number 数据项含义 唯一标识 外码 外码 外码 外码 数据项含义 唯一标识 外码 外码 数据项含义 唯一标识 外码 外码 外码 外码 外码 数据存储:退货单包含以下两个表。
9 10 11 12 编号 1 2 3 4 5 审核人 审核状态 录入日期 审核日期 数据项 退货明细单号 商品 单价 退货单单号 数量 shhr shhzt lrrq shrq 数据项别名 ckmx sp dj ckd sl Number Number Date Date 数据类型 Number Number Money Number Number 表1.7 出库单 外码 数据项含义 唯一标识 外码 外码 表1.6 退货单明细 数据存储:出库单包含以下两个表。 编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 编号 1 2 3 4 5 数据项 单号 销售日期 客户 货币 付款方式 销售人 发货人 送货地址 备注 操作员 审核人 审核状态 订单号 录入日期 审核日期 数据项 出库明细单号 商品 单价 出库单单号 数量 数据项别名 ckd xsrq kh hb fkfs xsr fhr shdz bz czy shhr shhzt ddh lrrq shrq 数据项别名 ckmx sp dj ckd sl 数据类型 Number Date Number Text Text Number Number Text Text Number Number Number Number Date Date 数据类型 Number Number Money Number Number 表1.9 应收款单
编号 1 2 3 数据项 单号 收款期限 发生日期 数据项别名 ysk skqx fsrq 数据类型 Number Date Date 数据项含义 唯一标识 表1.8 出库单明细 数据项含义 唯一标识 外码 外码 数据项含义 唯一标识 外码 外码 外码 外码 外码 数据存储:应收款单包含以下单个表。
4 5 6 7 8 9 10 11 12 13 客户 货币 应收金额 已收金额 余额 销售/退货 操作员 审核人 备注 审核状态 kh hb ysje yisje ye ly czy shhr bz shhzt Number Text Money Money Money Number Number Number Text Number 表1.10 收款单 外码 外码 外码 数据存储:收款单包含以下两个表。 编号 1 2 3 4 5 6 7 8 9 10 11 12 编号 1 2 3 数据项 单号 收款日期 金额 客户 货币 经手人 收款方式 收款去向 操作员 审核人 备注 审核状态 数据项 收款明细单号 原始单号 本次收款 数据项别名 skd skrq je kh hb jsr skfs skqx czy shhr bz shhzt 数据项别名 skmx ysdh bcsk 数据类型 Number Date Number Number Text Number Text Text Number Number Text Number 数据类型 Number Number Money 表1.11 收款单明细 数据项含义 唯一标识 外码 数据项含义 唯一标识 外码 外码 外码 外码 数据存储:商品库存信息单包含以下两个表。
表1.12 商品信息表(goodinfo) 编号 1 2 3 4 5 6 7 8 数据项 商品编码 商品名称 类别 型号 单位 仓库编码 存放仓库 入库计划单价 数据项别名 Gcode mid kinds model unit scode store invalue 数据类型 Varchar(5) varchar(10) varchar(8) varchar(4) varchar(2) varchar(5) varchar(12) Money 数据项含义 唯一标识 外码 外码 9 10 11 12 编号 1 2 3 出库计划单价 原始库存 警戒最小库存 警戒最大库存 数据项 商品 仓库 库存数量 outvalue orstock Minspace maxspace 数据项别名 sp ck kc Money Float Float Float 数据类型 Number Number Number 数据项含义 外码 外码 表1.13 库存文件 数据存储:出库单包含以下两个表
表1.14出库单 编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 编号 1 2 3 4 5 数据项 单号 销售日期 客户 货币 付款方式 销售人 发货人 送货地址 备注 操作员 审核人 审核状态 订单号 录入日期 审核日期 数据项 出库明细单号 商品 单价 出库单单号 数量 数据项别名 ckd xsrq kh hb fkfs xsr fhr shdz bz czy shhr shhzt ddh lrrq shrq 数据项别名 ckmx sp dj ckd sl 数据类型 Number Date Number Text Text Number Number Text Text Number Number Number Number Date Date 数据类型 Number Number Money Number Number 表1.16库存文件 编号 1 2 3 数据项 商品 仓库 库存数量 数据项别名 sp ck kc 数据类型 Number Number Number 数据项含义 外码 外码 数据项含义 唯一标识 外码 外码 外码 外码 外码 数据项含义 唯一标识 外码 外码 表1.15出库单明细 数据存储:商品明细和仓库包含以下两个表
表1.17仓库信息表(cinfo)
编号 1 2 3 4 编号 1 2 3 4 5 6 7 8 9 10 11 12 数据项 仓库编号 仓库名称 存货种类 存货价值 数据项 商品编码 商品名称 类别 型号 单位 仓库编码 存放仓库 入库计划单价 出库计划单价 原始库存 警戒最小库存 警戒最大库存 数据项别名 Code Name Kinds Value 数据项别名 Gcode mid kinds model unit scode store invalue outvalue orstock Minspace maxspace 数据类型 varchar(5) Varchar(25) varchar(20) Internet 数据类型 Varchar(5) varchar(10) varchar(8) varchar(4) varchar(2) varchar(5) varchar(12) Money Money Float Float Float 数据项含义 唯一标识 数据项含义 唯一标识 外码 外码 表1.18商品信息表(goodinfo)
数据存储:入库单包含以下两个表
表1.19入库单(inrd)
编号 1 2 3 4 5 编号 1 2 3 4 5 6 7 8 9 10 数据项 入货单号 商品编码 单价 数量 总额 数据项 入库日期 入库单号 商品编码 商品名称 已付款 供单位编码 供货单位 经办人编码 经办人 备注 数据项别名 id Code Price Num Totalv 数据项别名 Date Id Code Name Avalue Ucode Uname Opcode Operator Remarks 数据类型 varchar(10) varchar(15 Money Float Money 数据类型 Time varchar(10) varchar(5) varchar(10) Money varchar(5) varchar(20) varchar(5) varchar(8) varchar(255) 数据项含义 唯一标识 外码 数据项含义 唯一标识 外码 外码 外码 表1.20入库登记表(inregister) 数据存储:报警单包含以下两个表
表1.21报警表(alarm) 编号 数据项 数据项别名 数据类型 数据项含义 1 2 3 4 编号 1 2 3 4 5 ID 经办人 报警时间 备注 数据项 ID 货品编码 单位 库存 此报警信息是否已解决 ID Operator Alarmt Remarks 数据项别名 ID Gcode unit Stock Check Char(10) varchar(8) Time varchar(255) 数据类型 Char(10) Vchar(5) Vchar(2) Float Char(2) 唯一标识 数据项含义 唯一标识 0- 未解决 1- 已解决 表1.22报警明细表(alarminfo) 数据存储:供货商资料包含以下一个表
表1.23 供货商资料文件(supplier)
编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 数据项 供货商编码 供货商名称 联系人 职务 地址 城市 邮编 国家 电话 开户银行 银行账号 税号 网址 邮箱 备注 使用状态 数据项别名 supplierID supplierName contactman position address city postcode coutry Tel depositBank bankAccount taxNum website e-mail others useState 数据类型 char(10) varchar(20) char(20) char(20) text(50) varchar(20) char(6) char(20) char(20) text(50) char(20) char(20) text(50) text(50) text(100) enum 数据项含义 唯一标识 数据存储:采购计划单包含以下两个表
表1.24 采购计划单主文件(caigouPlan)
编号 1 2 3 4 5 6 7 数据项 采购计划单号 部门 计划日期 计划人 备注 操作人 录入日期 数据项别名 planID depart planDate plannerID others operatorID inDate 数据类型 char(10) varchar(20) date char(10) text(100) char(10) date 数据项含义 唯一标识 外码 外码 8 9 10 审核人 审核状态 是否处理 examinerID examineState deal char(10) enum enum 外码 表1.25 采购计划单明细文件(planDetail)
编号 1 2 数据项 采购计划明细单号 采购计划单号 数据项别名 planDetailID planID 数据类型 char(10) char(10) 数据项含义 唯一标识 外码 外码 3 4 5 商品编码 数量 备注 goodsID quantity others char(10) int(5) text(100) 数据存储:采购订单包含以下两个表
表1.26 采购订单主文件(caigouOrder)
编号 1 2 3 4 5 6 7 8 9 10 11 12 数据项 采购订单单号 供应商 订单日期 交货日期 货币 采购人 交货地点 备注 操作员 审核人 审核状态 是否完成 数据项别名 orderID supplierID orderDate deliverDate monetary buyerID POD others operatorID examinerID examineState deal 数据类型 char(10) char(10) date date char(10) char(10) text(50) text(100 char(10) char(10 enum enum 数据项含义 唯一标识 外码 外码 外码 表1.27 采购订单明细文件(orderDetail)
编号 1 2 数据项 采购订单明细单号 采购订单单号 数据项别名 orderDetailID orderID 数据类型 char(10) char(10) 数据项含义 唯一标识 外码 外码 3 4 5 6 商品编码 数量 单价 备注 goodsID quantity uint price others char(10) int(5) decimal(5) text(100) 数据存储:采购退货单包含以下两个表
表1.28 采购退货单主文件(caigouReturned)
编号 1 2 3 4 数据项 采购退货单单号 供货商 货币 发票号 数据项别名 returnedID supplierID monetary billID 数据类型 char(10) char(10) char(10) char(10) 数据项含义 唯一标识 外码 外码 外码 5 6 7 8 9 10 11 12 13 14 退货日期 发货人 操作员 录入日期 修改人 修改日期 审核人 审核日期 备注 审核状态 returnedDate shipperID operatorID enterDate opmanID opDate examinerID examineDate others examineState date char(10) char(10) date char(10) date char(10) date text(100) enum 外码 外码 外码 外码 表1.29 采购退货单明细文件(returnedDetail)
编号 1 2 数据项 采购退货单单号 数据项别名 returnedID 数据类型 char(10) char(10) 数据项含义 唯一标识 外码 外码 采购退货单明细单号 returnDetailID 3 4 5 6 商品编码 数量 单价 备注 goodsID quantity uint price others char(10) int(5) decimal(5) text(100) 数据存储:采购入库单包含以下两个表
表1.30 采购入库单主文件(caigouEnter)
编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 数据项 采购入库单单号 供应商名称 货币 发票号 采购日期 采购人 采购订单单号 操作员 录入日期 修改人 修改日期 审核人 审核日期 备注 审核状态 数据项别名 enterID supplierName monetary billID buyDate buyerID orderID operatorID enterDate opmanIID opDate examinerID examineDate others examineState 数据类型 char(10) varchar(20) char(10) char(10) date char(10) char(10) char(10) date char(10) date char(10) date text(100) enum 数据项含义 唯一标识 外码 外码 外码 外码 外码 外码 外码 表1.31 采购入库单明细文件(returnedDetail)
编号 1 数据项 数据项别名 采购入库单明细单号 enterDetailID 采购入库单单号 数据类型 char(10) char(10) 数据项含义 唯一标识 外码 外码 2 3 enterID goodsID 商品编码 char(10) 4 5 6 数量 单价 备注 quantity uint price others int(5) decimal(5) text(100) 数据存储:采购应付款包含以下一个表
表1.32 采购应付款文件(caigouDuepay)
编号 1 2 3 4 5 6 7 8 9 10 11 12 13 数据项 应付款单号 付款期限 发生日期 供应商 货币 应付金额 已付金额 余额 采购/退货 操作员 审核人 备注 核销状态 数据项别名 duepayID payTime happenDate supplierID monetary dueMoney paidMoney remainMoney buyORreturn operatorID examinerIID others charge off 数据类型 char(10) varchar(20) char(10) char(10) char(5) decimal(5) decimal(5) decimal(5) enum char(10) char(10) text(100) enum 数据项含义 唯一标识 外码 外码 外码 数据存储:采购付款包含以下两个表
表1.33 采购付款主文件(caigouPaid)
编号 1 2 3 4 5 6 7 8 9 10 11 12 数据项 付款单号 付款日期 金额 发票号 供应商 货币 付款方式 付款来源 操作员 审核人 备注 审核状态 数据项别名 paidID payTime money billID supplierID monetary payStyle payFrom operatorID examinerIID others examineState 数据类型 char(10) date decimal(5) char(10) char(10) char(5) text(20) text(20) char(10) char(10) text(100) enum 数据项含义 唯一标识 外码 外码 外码 外码 表1.34 采购付款明细文件(paidDetail)
编号 1 2 数据项 付款明细单号 付款单号 原始订单号 本次付款 数据项别名 paidDetailID paidID 数据类型 char(10) char(10) 数据项含义 唯一标识 外码 外码 3 4 orderID curPay char(10) decimal(5) 1.2.2.2 数据处理
1.与报价单有关的数据处理
●图1.6 商品销售报价单
①处理过程“提交报价单”可描述如下: ·处理过程:提交报价单 ·输 入:报价单数据 ·输 出:报价单
·说 明:外部实体输入报价单数据,包括商品名称、数量等信息,由商品列表中提供商
品的单位、规格型号、颜色、单价等信息,分配报价单号,生成报价单。
2. 与销售订单有关的数据处理
●图1.7 商品销售订单
①处理过程“提交订单”可描述如下: ·处理过程:提交定单
·输 入:订单数据或报价单数据
·输 出:审核成功的订单
·说 明:外部实体输入订单数据或从报价单中导入数据,包括商品名称、数量等信息,
由商品列表中提供商品的单位、规格型号、颜色、单价等信息,分配订单号,生成订单和应收款单,并由管理员进行审核,输出审核批准的订单。
3. 与销售出库单有关的数据处理
●图1.8 销售出库单
①处理过程“提交出库单”可描述如下: ·处理过程:提交出库单单 ·输 入:已批准的订单 ·输 出:出库单
·说 明:在该操作中,外部实体输入出库单数据或流入已批准订单的信息,分配订单号
等,生成出库单。
②处理过程“审核订单”可描述如下: ·处理过程:审核订单 ·输 入:出库单
·输 出:出库单审核结果
·说 明:在该操作中,流入出库单的信息,有管理员进行审核,审核通过后即可修改库
存文件,也可对由该出库单产生的应收款单进行收款,并完成该出库单的订单。
4. 与退货单有关的数据处理
●图1.9 销售退货单
①处理过程“提交退货单”描述如下: ·处理过程:提交退货单 ·输 入:退货单信息 ·输 出:退货单
·说 明:外部实体输入退货单信息,包括商品名称、数量等信息,由商品列表中提供商
品的单位、规格型号、颜色、单价等信息,分配订单号,生成退货单和应收款单。
②处理过程“审核退货单”可描述如下: ·处理过程:审核退货单 ·输 入:退货单
·输 出:已审核的退货单
·说 明:在该操作中,流入退货单的信息,由管理员进行审核,审核通过后即可修改商
品库存文件,也可对由该退货单产生的应收款单进行收款。
5. 与应收款有关的数据处理
●图1.10 应收款单
①处理过程“产生应收款”描述如下: ·处理过程:产生应收款
·输 入:应收款信息 ·输 出:应收款
·说 明:可由销售出库单和退货单生成应收款单,也可有外部实体输入应收款信息,如
发生日期,收款日期,客户,货币,应收款金额和备注等信息。只有手工输入的应收款单据才可以修改或删除,由销售出库或销售退货生成的单据只能浏览,如有误请修改相应的销售出库或退货单据,系统会重新生成正确的应收款单据。应收款单据不需要处理,销售收款管理处理相应的应收款单据,当该应收款单据收款完成,相应的销售收款单据审核,应收款单据系统自动核销。
6. 与收款单有关的数据处理
●图1.11 收款单
①处理过程“提交收款单”描述如下: ·处理过程:提交收款单 ·输 入:收款信息 ·输 出:收款单
·说 明:当外部实体选择“客户”后,系统自动调出该客户所有尚未收清的应收款单据,
若其原始单据没有审核,那么该单据便不能进行收款处理,其它可以收款款。由外部实体输入本次收款合计金额,点击“分配”键,系统自动分配“本次收款”金额,;当然也可在“本次收款”处也可以手工输入收款金额,。为了保证收款的正确性,本次收款合计金额必须等于本次收款之和,否则不能存盘。
②处理过程“审核收款单”可描述如下: ·处理过程:审核收款单 ·输 入:收款单信息 ·输 出:应收款信息
·说 明:在该操作中,由外部实体对收款单信息进行审核,审核完成后会自动核销相应
的应收款的收款信息。
7. 与入库单有关的数据处理
●图1.12 入库单
①处理过程“提交入库单”描述如下: ·处理过程:提交入库单 ·输 入:入库信息 ·输 出:入库单
·说 明:外部实体输入入库单数据,包括入库日期、经手人、备注等信息,由商品列表
中提供商品的单位、规格型号、颜色、单价等信息,分配计划单号,生成采购计划单。
②处理过程“审核入库单”可描述如下: ·处理过程:审核入库单 ·输 入:入库单信息 ·输 出:入库单
·说 明:在该操作中,由外部实体对入库单信息进行审核,审核完成后会自动核销相应
的入库单的信息。
8. 与出库单有关的数据处理
●图1.13出库单
①处理过程“提交出库单”描述如下: ·处理过程:提交出库单 ·输 入:出库信息 ·输 出:出库单
·说 明:外部实体输入出库单数据,包括出库日期、经手人、备注等信息,由商品列表
中提供商品的单位、规格型号、颜色、单价等信息,分配计划单号,生成采购计划单。
②处理过程“审核出库单”可描述如下: ·处理过程:审核出库单 ·输 入:出库单信息 ·输 出:出库单
·说 明:在该操作中,由外部实体对出库单信息进行审核,审核完成后会自动核销相应
的出库单的信息。
9. 与仓库调拨单有关的数据处理
●图1.14 仓库调拨单
①处理过程“提交仓库调拨单“描述如下: ·处理过程:提交仓库调拨单 ·输 入:调拨单数据 ·输 出:仓库调拨单
·说 明:外部实体输入仓库调拨单数据,包括调拨日期、经手人、发货人、备注、调入
仓库等信息,由商品列表中提供商品的单位、规格型号、颜色、单价等信息,分配计划单号,生成仓库调拨单。
②处理过程“审核调拨单”可描述如下: ·处理过程:审核调拨单 ·输 入:仓库调拨单 ·输 出:调拨单审核结果
·说 明:在该操作中,流入仓库调拨单的信息,由管理员进行审核,审核通过后即可汇
总。
10. 与设置库存有关的数据处理
●图1.15 库存设置
①处理过程“库存设置“描述如下: ·处理过程:设置库存
·输 入:最小库存,最大库存 ·输 出:库存信息
·说 明:外部实体输入最大(小)库存数据,由商品列表中提供商品的单位、规格型号、
颜色等信息。
11. 与库存报警表有关的数据处理
●图1.16 库存报警表
①处理过程“库存报警”可描述如下: ·处理过程:库存报警 ·输 入:仓库(分类)信息 ·输 出:报警单
·说 明:在该操作中,外部实体输入仓库(分类)数据,生成报警单。 12. 与采购计划单有关的数据处理
●图1.17 采购计划单
①处理过程“提交采购计划单“描述如下: ·处理过程:提交采购计划单 ·输 入:计划单数据 ·输 出:采购计划单
·说 明:外部实体输入采购计划单数据,包括计划日期、计划人、备注等信息,由商品
列表中提供商品的单位、规格型号、颜色、单价等信息,分配计划单号,生成采购计划单。
②处理过程“审核计划单”可描述如下: ·处理过程:审核计划单 ·输 入:采购计划单 ·输 出:计划单审核结果
·说 明:在该操作中,流入采购计划单的信息,由管理员进行审核,审核通过后即可汇
总,采购订单录入时可以直接引用汇总结果。
13. 与提交采购订单有关的数据处理
●图1.18 采购订单
①处理过程“提交采购订单“描述如下: ·处理过程:提交采购订单 ·输 入:订单数据 ·输 出:采购订单
·说 明:外部实体输入采购订单数据或从导入汇总采购计划单数据,包括单据的日期、
供应商、货币、采购人、交货地点、备注等资料信息,由商品列表中提供商品的单位、规格型号、颜色、单价等信息,分配订单单号,生成采购订单,并由管理员进行审核,输出审核通过的订单。
②处理过程“审核订单”可描述如下: ·处理过程:审核订单 ·输 入:采购订单 ·输 出:计划单审核结果
·说 明:在该操作中,流入采购订单的信息,由管理员进行审核,输出审核通过的订单。 14. 与采购入库单有关的数据处理
●图1.19 采购入库单
①处理过程“提交入库单”可描述如下: ·处理过程:提交入库单单 ·输 入:已审核通过的采购订单 ·输 出:入库单
·说 明:在该操作中,外部实体输入入库单数据或流入已已审核通过采购订单的信息,
分配入库单号等,生成入库单。
②处理过程“审核入库单”可描述如下: ·处理过程:审核入库单 ·输 入:入库单
·输 出:入库单审核结果
·说 明:在该操作中,流入入库单的信息,由管理员进行审核,审核通过后即可修改库
存文件,也可对由该入库单产生的应收款单进行收款,并完成该入库单的订单。
15. 与采购退货单有关的数据处理
●图1.20 采购退货单
①处理过程“提交采购退货单”描述如下: ·处理过程:提交采购退货单 ·输 入:采购退货单信息 ·输 出:采购退货单
·说 明:外部实体输入采购退货单信息,包括退货日期、供应商、货币、采购人、发货
人、发票号、备注等信息,由商品列表中提供商品的单位、规格型号、颜色、单价等信息,分配退货单号,生成采购退货单和应付款单。
②处理过程“审核采购退货单”可描述如下: ·处理过程:审核采购退货单 ·输 入:采购退货单
·输 出:已审核的采购退货单
·说 明:在该操作中,流入采购退货单的信息,由管理员进行审核,审核通过后即可修
改商品库存文件,也可对由该采购退货单产生的应付款单进行收款。
16. 与应付款有关的数据处理
●图1.21 应付款单
①处理过程“产生应付款”描述如下: ·处理过程:产生应付款
·输 入:应付款信息 ·输 出:应付款
·说 明:可由采购入库单和采购退货单生成应付款单,也可有外部实体输入应付款信息,
如发生日期,付款日期,供货商,货币,应收款金额和备注等信息。只有手工输入的应付款单据才可以修改或删除,由采购入库或采购退货单生成的单据只能浏览,如有误请修改相应的采购入库或采购退货单据,系统会重新生成正确的应付款单据。应付款单据不需要处理,采购付款管理处理相应的应付款单据,当该应付款单据付款完成,相应的采购付款单据审核,应付款单据系统自动核销。
17. 与付款单有关的数据处理
●图1.22 收款单
①处理过程“提交付款单”描述如下: ·处理过程:提交付款单 ·输 入:付款信息 ·输 出:付款单
·说 明:当外部实体选择“供货商”后,系统自动调出该供货商所有尚未付清的应付款
单据,若其原始单据没有审核,那么该单据便不能进行付款处理,其它可以付款。由外部实体输入本次付款合计金额,点击“分配”键,系统自动分配“本次付款”金额,;当然也可在“本次付款”处也可以手工输入付款金额。为了保证付款的正确性,本次付款合计金额必须等于本次付款之和,否则不能存盘。
②处理过程“审核付款单”可描述如下: ·处理过程:审核付款单 ·输 入:付款单信息 ·输 出:应付款信息
·说 明:在该操作中,由外部实体对付款单信息进行审核,审核完成后会自动核销相应
的应付款的付款信息。
第2章 系统初步设计
2.1 基于PowerDesigner的数据库设计 2.1.1总E-R图设计
说明:部分信息省略,详细信息见子e-r图
●图2.1 系统总e-r图
2.1.2销售管理子系统E-R图设计
说明:由于篇幅问题该图中去除了实体员工。该实体与各个单据都有参考关系,详见下列各个子e-r图。
●图2.2 销售子系统e-r图
2.1.2.1 销售报价单e-r图
销售报价单界面如图1.6所示。其e-r图如下图所示。一张销售报价单可有多个商品,
一个商品可出现在多个报价单中,所以商品与报价单之间的联系为多对多联系;一张报价单只有一个客户,一个客户可有多张销售报价单,所以客户与报价单之间的联系为一对多联系;一张销售报价单只有一个员工,一个员工可开出多张报价单,所以员工与报价单之间的联系为一对多联系。
●图2.3 销售报价单e-r图
2.1.2.2 销售订单e-r图
销售订单界面如图1.7所示。其e-r图如下图所示。一张销售订单可有多个商品,一个商品可出现在多个订单中,所以商品与订单之间的联系为多对多联系;一张订单只有一个客户,一个客户可有多张销售订单,所以客户与订单之间的联系为一对多联系;一张销售订单只有一个员工,一个员工可开出多张订单,所以员工与订单之间的联系为一对多联系。
●图2.4 销售订单e-r图
2.1.2.3 销售出库单e-r图
销售出库单界面如图1.8所示。其e-r图如下图所示。一张销售出库单可对应一张订单,一张订单对应一张个出库单中,所以订单与出库单之间的联系为多对多联系;一张销售出库单可有多个商品,一个商品可出现在多个出库单中,所以商品与出库单之间的联系为多对多联系;一张出库单只有一个客户,一个客户可有多张销售出库单,所以客户与出库单之间的联系为一对多联系;一张销售出库单只有一个员工,一个员工可开出多张出库单,所以员工与出库单之间的联系为一对多联系。
●图2.5 销售出库单e-r图
2.1.2.4 销售退货单e-r图
销售退货单界面如图1.9所示。其e-r图如下图所示。一张销售退货单可有多个商品,一个商品可出现在多个退货单中,所以商品与退货单之间的联系为多对多联系;一张退货单只有一个客户,一个客户可有多张销售退货单,所以客户与退货单之间的联系为一对多联系;一张销售退货单只有一个员工,一个员工可开出多张退货单,所以员工与退货单之间的联系为一对多联系。
●图2.6 销售退货单e-r图
2.1.2.5 销售应收款单e-r图
应收款界面如图1.10所示。其e-r图如下图所示。一张应收款单对应一张销售订单或一张退货单,一张销售订单或一张退货单产生一张应收款单,所以销售订单和退货单与应收款之间的联系为一对一联系;一张应收款单只有一个客户,一个客户可有多张应收款单,所以客户与应收款单之间的联系为一对多联系;一张应收款单只有一个员工,一个员工可开出多张应收款单,所以员工与应收款单之间的联系为一对多联系。
●图2.7 销售应收款单e-r图
2.1.2.6 销售收款单e-r图
销售收款单界面如图1.11所示。其e-r图如下图所示。一张收款单对应多张应收款
单,一张应收款单可由多张收款单支付完成,所以应收款单与收款单之间的联系为一对一联系;一张收款单只有一个客户,一个客户可有多张收款单,所以客户与收款单之间的联系为一对多联系;一张收款单只有一个员工,一个员工可开出多张收款单,所以员工与收款单之间的联系为一对多联系。
●图2.8 销售收款单e-r图
2.1.3仓库管理子系统E-R图设计
●图2.9 仓库管理子系统e-r图
2.1.3.1 仓库入库单e-r图
入库单界面如图1.12所示。其e-r图如下图所示。一张入库单可有多个商品,一个
商品可出现在多个入库单中,所以商品与入库单之间的联系为多对多联系;一个仓库可以有多个商品,一个颜色可对应多个商品单,所以仓库与商品明细单之间的联系为一对多联系,颜色和单位都与商品明细之间的关系为一对多联系;一张入库单只有一个员工,一个员工可开出多张入库单,所以员工与入库单之间的联系为一对多联系。
●图2.10仓库入库单e-r图
2.1.3.2 仓库出库单e-r图
出库单界面如图1.13所示。其e-r图如下图所示。一张出库单可有多个商品,一个商品可出现在多个出库单中,所以商品与出库单之间的联系为多对多联系;一个仓库可以有多个商品,一个颜色可对应多个商品单,所以仓库与商品明细单之间的联系为一对多联系,颜色和单位都与商品明细之间的关系为一对多联系;一张出库单只有一个员工,一个员工可开出多张出库单,所以员工与出库单之间的联系为一对多联系。
●图2.11仓库出库单e-r图
2.1.3.3 仓库调拨单e-r图
调拨单界面如图1.14所示。其e-r图如下图所示。一张调拨单可有多个商品,一个商品可出现在多个调拨单中,所以商品与调拨单之间的联系为多对多联系;一个仓库可以有多个商品,一个颜色可对应多个商品单,所以仓库与商品明细单之间的联系为一对多联系,颜色和单位都与商品明细之间的关系为一对多联系;一张调拨单只有一个员工,一个员工可开出多张调拨单,所以员工与调拨单之间的联系为一对多联系。
●图2.12仓库调拨单e-r图
2.1.3.4 仓库报警单e-r图
报警单界面如图1.16所示。其e-r图如下图所示。一张报警单可有多个商品,一个商品可出现在多个报警单中,所以商品与报警单之间的联系为多对多联系;一个仓库可以有多个商品,一个颜色可对应多个商品单,所以仓库与商品明细单之间的联系为一对多联系,颜色和单位都与商品明细之间的关系为一对多联系;一张报警单只有一个员工,一个员工可开出多张报警单,所以员工与报警单之间的联系为一对多联系。
●图2.13仓库报警单e-r图
2.1.3采购管理子系统E-R图设计
●图2.14 采购管理子系统e-r图
2.1.2.1 采购计划单e-r图
采购计划单界面如图1.17所示。其e-r图如下图所示。一张采购计划单可有多个商
品,一个商品可出现在多个计划单中,所以商品与计划单之间的联系为多对多联系;一张报价单只有一个供货商,一个供货商可有多张采购计划单,所以供货商与计划单之间的联系为一对多联系;一张采购计划单只有一个员工,一个员工可开出多张计划单,所以员工与计划单之间的联系为一对多联系。
●图2.15 采购计划单e-r图
2.1.2.2 采购订单e-r图
采购订单界面如图1.18所示。其e-r图如下图所示。一张采购订单可有多个商品,一个商品可出现在多个订单中,所以商品与订单之间的联系为多对多联系;一张订单只有一个供货商,一个供货商可有多张销售订单,所以供货商与订单之间的联系为一对多联系;一张采购订单只有一个员工,一个员工可开出多张订单,所以员工与订单之间的联系为一对多联系。
●图2.16 采购订单e-r图
2.1.2.3 采购入库单e-r图
采购入库单界面如图1.19所示。其e-r图如下图所示。一张采购入库单可有多个商
品,一个商品可出现在多个入库单中,所以商品与入库单之间的联系为多对多联系;一张入库单只有一个供货商,一个供货商可有多张采购入库单,所以供货商与入库单之间的联系为一对多联系;一张采购入库单只有一个员工,一个员工可开出多张入库单,所以员工与入库单之间的联系为一对多联系。一张采购入库单对应一张采购订单,一张订单只有一张入库单,所以采购订单与入库单之间的联系为一对一联系。
●图2.17 采购入库单e-r图
2.1.2.4 采购退货单e-r图
采购退货单界面如图1.20所示。其e-r图如下图所示。一张采购退货单可有多个商品,一个商品可出现在多个退货单中,所以商品与退货单之间的联系为多对多联系;一张退货单只有一个供货商,一个供货商可有多张销售退货单,所以供货商与退货单之间的联系为一对多联系;一张采购退货单只有一个员工,一个员工可开出多张退货单,所以员工与退货单之间的联系为一对多联系。
●图2.18 采购退货单e-r图
2.1.2.5 采购应付款单e-r图
应付款界面如图1.21所示。其e-r图如下图所示。一张应付款单对应一张采购订单,一张采购订单产生一张应付款单,所以采购订单与应付款之间的联系为一对一联系;一张应付款单只有一个供货商,一个供货商可有多张应付款单,所以供货商与应付款单之间的联系为一对多联系;一张应付款单只有一个员工,一个员工可开出多张应付款单,所以员工与应付款单之间的联系为一对多联系。
●图2.19 采购应付款单e-r图
2.1.2.6 采购付款单e-r图
采购付款单界面如图1.22所示。其e-r图如下图所示。一张采购付款单对应多张应
付款单,一张应付款单可由多张收款单支付完成,所以应付款单与付款单之间的联系为一对一联系;一张付款单只有一个供货商,一个供货商可有多张付款单,所以供货商与付款单之间的联系为一对多联系;一张付款单只有一个员工,一个员工可开出多张付款单,所以员工与付款单之间的联系为一对多联系。
●图2.20采购付款单e-r图
2.2 数据库不规范化设计举例
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫做第一范式,简称1NF。在第一范式中满足进一步要求的为第二范式,其余以此类推。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
2.2.1 不满足第一范式举例
一个关系模式定义为一个五元组:R(U,D,DOM,F),若R的每一个分量都是一个不
可分的数据项,则R∈1NF。根据该定义,结合概念数据模型中设计的E-R图,举一个不是1NF的例子如下:
[例1] 关系模式为 订单(订单单号,订单日期,客户,货币,销售人,销售日期,付款方式,交货地点,备注,完成状态,操作员,审核人,审核状态,商品(商品1,商品2,商品3,商品4,…),单价,数量,备注)。
其中一张订单中可有多个商品,则商品分量取了多个值,所以该关系模式不满足第一范订单(订单单号,订单日期,客户,货币,销售人,销售日期,付款方式,交货地点,备注,完成状态,操作员,审核人,审核状态);
订单明细(订单单号,商品编号,单价,数量,备注)。
[例2] 关系模式为 入库单(单号,日期,客户,付款方式,备注,完成状态,操作员,审核人,审核状态,商品(商品1,商品2,商品3,商品4,…))。
其中一张入库中可有多个商品,则商品分量取了多个值,所以该关系模式不满足第一范入库单(单号,日期,客户,备注,完成状态,操作员,审核人,审核状态); 入库单明细(入库单明细号,商品)。
[例3] 关系模式为采购订单(采购订单单号,订单交货日期,供应商,货币,采购人,交货地点,备注,完成状态,操作员,审核人,审核状态)。
其中一张采购订单中有订单日期和交货日期,订单交货日期是一个可再分的数据项,所采购订单(采购订单单号,订单日期,交货日期,供应商,货币,采购人,交货日期,交货地点,备注,完成状态,操作员,审核人,审核状态)。
以该关系模式不满足第一范式。解决方法为:将订单交货日期分为不可再分的数据项: 式。解决方法为:将入库单表分成两张表: 式。解决方法为:将订单表分成两张表:
2.2.2 不满足第二范式举例
一个关系模式定义为一个五元组:R(U,D,DOM,F),若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。根据该定义,结合概念数据模型中设计的E-R图,举一个不是2NF的例子如下:
[例1] 关系模式为 订单明细文件(订单单号,商品编号,单价,数量,备注,商品名称,颜色,规格,…)。
其中“订单明细文件”的码为(订单单号,商品编号)。函数依赖示例如下图:
数量 单价 订单单号 商品编号 商品名称 颜色 …
●图2.21 例1中的函数依赖图
图中用虚线表示部分函数依赖。一个关系函数R不属性2NF,就会产生以下几个问题: 1.插入异常。假若要插入一个订单细节中的商品信息,但该货物还没有对应的订单生成,即缺少订单单号,这样的元组就插不进“订单明细文件”中。因为插入元组时必须给定码,而这时码值的一部分为空,因而订单细节的固有信息无法插入。
2.删除异常。假若订单上记载着某种商品,现在这样商品不需要了,那么该商品对应的数据项需要删除。而商品编号是主属性,删除了商品编号,整个元组就必须跟着删除,使得订单上的其他信息也被删除了,从而造成删除异常,即不应删除的信息也删除了。
3.修改复杂。如果某个商品出现在k条明细中,则商品的信息,如商品名称、颜色、规格等属性重复存储了k次,不仅存储冗余度大,而且必须无遗漏地修改k个元组中全部商品名称,颜色等信息,造成修改的复杂化。
分析上面的例子,解决的办法是用投影分解把关系模式“订单明细文件”分解为两个关系模式:
商品信息(商品编号,商品名称,颜色,规格,…); 订单明细(订单单号,商品编号,单价,数量,备注)。
[例2] 关系模式为 货物库存-出库-出库单(货物编号,货物名称,数量,规格,单位,出库单号,业务人,出库日期,操作人)
其中“货物库存-出库-出库单”的码为(货物编号,出库单号)。函数依赖示例如下图:
货物名称 货物数量 货物编号 备注 出库单号 出库单号 操作人 业务人 ●图2.22 例2中的函数依赖图
图中用虚线表示部分函数依赖。一个关系函数R不属性2NF,就会产生以下几个问题: 1.插入异常。假若要插入一个货物信息,但该货物还没有对应的出库单生成,即缺少出库单号,这样的元组就插不进“货物库存-出库-出库单”中。因为插入元组时必须给定码,而这时码值的一部分为空,因而物料的固有信息无法插入。
2.删除异常。假若出库单上记载要送出某种货物,现在这样货物不出库了,那么该货物对应的数据项需要删除。而货物编号是主属性,删除了货物编号,整个元组就必须跟着删除,使得出库单上的其他信息也被删除了,从而造成删除异常,即不应删除的信息也删除了。
3.修改复杂。如果某张出库单里记录需出库k种货物,则出库单本身的属性操作人,出库单号和业务人重复存储了k次,不仅存储冗余度大,而且必须无遗漏地修改k个元组中全部操作人,出库单号和业务人信息,造成修改的复杂化。
分析上面的例子,可以发现问题在于有两种非主属性。解决的办法是用投影分解把关系模式“货物库存-出库-出库单”分解为三个关系模式:
货物库存(货物编号,货物名称,货物数量,备注) 出库单(出库单号,操作人,业务人) 出库(货物编号,出库单号)
[例3] 关系模式为采购订单明细表(采购订单单号,商品编码,单价,数量,备注,商品名称,颜色,规格,…)。
其中“采购订单明细表”的码为(采购订单单号,商品编号)。函数依赖示例如下图:
数量 单价 备注 采购订单单号 商品编号 商品名称 颜色 。。。 ●图2.23 违反第二范式例中的函数依赖图
图中用虚线表示部分函数依赖。一个关系函数R不属性2NF,就会产生以下几个问题: 1.插入异常。假若要插入一个订单明细中的商品信息,但该货物还没有对应的订单生成,即缺少采购订单单号,这样的元组就插不进“采购订单明细表”中。因为插入元组时必须给定码,而这时码值的一部分为空,因而订单明细的固有信息无法插入。
2.删除异常。假若订单明细上记载着某种商品,现在这样商品不需要了,那么该商品对应的数据项需要删除。而商品编号是主属性,删除了商品编号,整个元组就必须跟着删除,使得订单明细单上的其他信息也被删除了,从而造成删除异常,即不应删除的信息也删除了。
3.修改复杂。如果某张订单明细里记录要k种商品,则订单明细本身的属性操作人,采购订单单号重复存储了k次,不仅存储冗余度大,而且必须无遗漏地修改k个元组中全部采购订单单号信息,造成修改的复杂化。
分析上面的例子,可以发现问题在于有两种非主属性。解决的办法是用投影分解把关系模式“采购订单明细表”分解为2个关系模式:
商品信息(商品编号,商品名称,颜色,规格,备注…);
采购订单明细表(采购订单单号,商品编号,单价,数量,备注);
2.2.3 不满足第三范式举例
关系模式R 中若不存在这样的码X,属性组Y及非主属性Z(Z¢Y)使得X→Y,Y→Z成立,Y推不出X,则称∈3NF。即若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。根据该定义,结合概念数据模型中设计的E-R图,举一个不是3NF的例子如下:
[例1] 在订单明细表中,假如还存在一个属性:商品总价,即关系模式 订单明细表(商品编号,订单单号,单价,数量,备注,商品总价),这时就存在传递依赖,因为商品总价=单价*数量,即货物总价可由入库单价和数量两个属性推出,而货物总价又可由货物编号得到,所以不满足第三范式。函数依赖如下图:
数量 单价 商品编号 商品总价
●图2.24 例1中的函数依赖图
一个关系模式R若不是3NF,就会产生与不是2NF相类似的问题。 解决的办法同样是将“订单细节表”分解为:
订单明细表(商品编号,订单单号,数量,单价,备注); 商品总价(商品编号,订单单号,商品总价)。
两个关系模式的函数以来图可以用下图表示:
数量 数量 商品编号 单价 单价 商品总价
●图2.25 例1中的函数依赖图
[例2] 在货物信息表中,假如还存在两个属性:货物单价、货物总价,即关系模式货物信息(货物编号,货物名称,货物数量,货物单价,货物总价,备注),这时就存在传递依赖,因为货物总价=货物单价*货物数量,即货物总价可由货物单价和存量两个属性推出,而货物总价又可由货物编号得到,所以不满足第三范式。函数依赖事例如下图:
货物数量 货物单价 货物编号 货物总价
●图2.26 例2中的函数依赖图
一个关系模式R若不是3NF,就会产生与不是2NF相类似的问题。 解决的办法同样是将“货物信息表”分解为:
货物库存(货物编号,货物名称,货物数量,货物单价,备述) 价格(货物数量,货物单价,货物总价)
两个关系模式可以用下图表示:
货物数量 货物数量 货物编号 货物单价 货物单价 货物总价
●图2.27 例2中的关系模式
[例3] 在采购订单中,假如还存在一个属性:商品总价,即关系模式订单明细表(采购订单明细号,商品编号,单价,采购订单单号,数量,商品总价,备注),这时就存在传递依赖,因为商品总价=单价*数量,即商品总价可由单价和数量两个属性推出,而商品总价又可由商品编号得到,所以不满足第三范式。函数依赖事例如下图:
数量 单价 商品编号 商品总价
●图2.28 违反第三范式例中的函数依赖图
一个关系模式R若不是3NF,就会产生与不是2NF相类似的问题。 解决的办法同样是将“订单细节表”分解为:
订单明细表(订单明细号,商品编号,单价,订单单号,数量,备注); 商品总价(订单明细号,商品总价)。 两个关系模式可以用下图表示:
数量 数量 商品编号 单价 单价 商品总价 ●图2.29 例3中的关系模式
2.3 系统功能界面设计 2.3.1 系统功能图
进销存管理系统 销售管理 仓库管理 采购管理 销售退货 销售报价 销售订单 销售出库 应收账款 销售收款 仓库报警 其它入库 其它出库 仓库调拨 基本资料 采购计划 采购订单 采购入库 应付账款 采购付款 采购退货 ●图2.30 系统功能图
2.3.2 销售管理界面设计
点击销售管理的“商品报价”按钮打开商品报价窗口如下图所示。
●图2.31 商品销售窗口
在窗口中填写日期、客户、报价人、货币、备注等信息,点击“增加商品”按钮,打开增加商品窗口,具体操作参见“采购订单”操作,增加商品完成后,点击“保存订单”按钮保存本次销售。
2.3.3 仓库管理界面设计
●图2.32 仓库设置窗口
在基本设置模块中点击“仓库设置”按钮打开仓库详细信息插卡窗口如上图。在该窗口即可对仓库信息进行查看。
2.3.4 采购管理界面设计
在进货管理中点击“采购进货”按钮打开进货窗口如下图所示。
●图2.33 采购进货窗口
在窗口中选择供货商、采购员号、货币、交货地点、备注等信息,点击“增加商品”按钮,打开增加商品窗口如下面的窗口所示,增加商品完成后,点击“保存订单”按钮保存本次销售。
●图2.34 增加商品窗口
在该窗口即可查看所有商品信息,在选项框内对商品进行选择,完成后点击“确定”按钮,即可对商品进行添加。
第3章 基于J2EE+MySQL实现
3.1 J2EE实现代码
//dbConn.java package db;
//include required classes import java.sql.*;
//========================================== // Define Class DBConn
//========================================== public class DBConn { // mySQL数据库连接 public String sql_driver = \"com.mysql.jdbc.Driver\"; public String sql_url =
\"jdbc:mysql://localhost:3306/jxc?useUnicode=true&characterEncoding=gbk\"; public String sql_DBName = \"jxc\"; public String user = \"root\"; public String pwd = \"root\"; Connection conn = null; Statement stmt = null; ResultSet rs = null; public DBConn() { try { Class.forName(sql_driver); this.conn = DriverManager.getConnection(sql_url, user, pwd); } catch (SQLException e) { throw new RuntimeException(\"连接数据库失败\ } catch (ClassNotFoundException e) { throw new RuntimeException(\"找不到驱动类\ } catch (Exception e) { e.printStackTrace(); } try { this.stmt = this.conn.createStatement(); } catch (SQLException e) { throw new RuntimeException(\"连接数据库失败\ } } // 执行查询操作 public ResultSet executeQuery(String strSql) { try { this.conn = DriverManager.getConnection(sql_url, user, pwd); this.stmt = this.conn.createStatement(); this.rs = this.stmt.executeQuery(strSql); return this.rs; } catch (SQLException e) { throw new RuntimeException(\"查询操作出错\ } } // 执行数据的插入、删除、修改操作
public boolean executeUpdate(String strSql) { try { this.conn = DriverManager.getConnection(sql_url, user, pwd); this.stmt = this.conn.createStatement(); if (this.stmt.executeUpdate(strSql) == 0) return false; else return true; } catch (SQLException e) { throw new RuntimeException(\"数据的插入、删除、修改操作出错\ } } public void close() { try { this.stmt.close(); this.conn.close(); } catch (SQLException e) { throw new RuntimeException(\"关闭数据库出错\ } } }
//addgood.jsp
<%@ page language=\"java\" contentType=\"text/html; charset=gbk\"
pageEncoding=\"gbk\" import=\"java.sql.*,db.DBConn\"%>
<%!public String addline(String line) {
}
public String addgood(String good, int i) {
DBConn Conn = new DBConn(); DBConn Conn = new DBConn(); ResultSet rs = null;
rs = Conn.executeQuery(\"select * from goodinfo where goodId='\" + line try { } return ss;
if (rs.next()) { }
String goodID = line; ss = \"
ss += \"
ss += \"
ss += \"
+ \"'\");
String ss = null;
} catch (Exception e) {
ResultSet rs = null;
rs = Conn.executeQuery(\"select * from goodinfo where goodId='\" + good try {
if (rs.next()) {
String goodID = good; switch (i) {
case 0 : { } case 1 : { } case 2 : { } case 3 : { } case 4 : { } case 5 : { } case 6 : { } case 7 : { } case 8 : { } case 9 : {
ss = \"
ss = \"
ss = \"
ss = \"
ss = \"
ss = \"
ss = \"
ss = \"
ss = \"
+ \"'\");
String ss = null;
}
}
}
}
ss = \"
case 10 : { } default :
break;
ss = \"
} catch (Exception e) { return ss;
}%>
align=\"center\"> style=\"overflow:scroll\" border=\"1\" style=\"border-collapse:collapse;\" width=\"100%\" align=\"center\"> request.setCharacterEncoding(\"gbk\"); ResultSet rs = null; rs = Conn.executeQuery(\"select * from goodinfo\"); while (rs.next()) { String goodID = rs.getString(\"goodId\"); int i = 0; while (rs.next()) { | 编码 | 名称 | 类型 | 单位 | 仓库 | 入库单价 | 出库单价 | 库存量 | |
type=\"button\" value=\"返 回\" class=\"BUTTON\" onclick=
window.opener = null; window.close();;
> >
<%@ page language=\"java\" contentType=\"text/html; charset=gbk\"
pageEncoding=\"gbk\" import=\"java.sql.*,db.DBConn\"%> <%@ page language=\"java\" contentType=\"text/html; charset=gbk\" pageEncoding=\"gbk\" import=\"java.sql.*,db.DBConn\"%> //JT06查询库存信息界面main.html