物流系统开发Word格式文档下载.docx
《物流系统开发Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《物流系统开发Word格式文档下载.docx(52页珍藏版)》请在冰点文库上搜索。
送货员信息输入
管理员输入送货员信息
送货员信息更新
管理员更新送货员信息
送货员信息查询
管理员查询送货员信息
工资结算
管理员结算查询送货员的工资
送货管理模块
送货明细
管理员查询送货明细信息
订单签收
送货员送货,让客户签收
订单支付
客户付款
送货员工资结算
管理员结算送货员的工资
仓库管理模块
货物信息输入
管理员输入货物信息
货物分拣
管理员进行货物分拣处理
货物发送
管理员把货物让送货员发送
货物信息更新
管理员更新货物信息
2.2.3数据库设计
货物单
(t_send_foods)货物
编号
字段名
是否为空
长度
1
id
not
int
主键
2
Consignor_name
Varchar(64)
发货员名字
3
Consignor_address
发货地址
4
Consignor_tel
发货人电话号码
5
Recess_name
Varchar(32)
收货人名字
6
Recess_tel
收货人电话号码
7
Recess_address
收货人地址
8
Charge_method
收费方法
9
cost
float
费用
10
Goods_weight
货物重量
11
Goods_volume
货物体积
12
Is_sign
Int(3)
是否签收
13
Is_cost
是否收费
14
acceptor
Varchar(3)
受理人
送货员
(t_delivery)送货员
Worker_nub
职工号
Delivery_address
送货员家庭地址
Delivery_tel
送货员电话号码
Delivery_name
送货员名字
sex
性别
age
年龄
Id_car
身份证号
Delivery_area
送货范围
入库明细表
(t_warehousing_detail)入库明细表
Warehousing_date
入库时间
Send_id
送货单号
Warehouse_manager
仓库管理员
Warehousing_area
入库存放区
分拣明细表
(t_manage_detail)入库明细表
manage_date
分拣时间
Manage_name
分拣员
area
目的地区域
送货明细表
(t_detail)送货明细表
Send_date
time
送货时间
Charge__method
Real_cost
实收费用
Send_status
送货状态
Sign_name
签收人姓名
费用结算表
(t_settlement)送货明细表
settlement_date
结算时间
送货职工号
Send_nub
送货数量
Lose_debits
损耗扣款
Real_money
实发总数
Total_commission
提成总数
salary
底薪
物流系统数据库表及其关系
2.2.4系统结构设计
系统采用分层结构,整体上分为4层:
视图层、控制层、业务逻辑层和数据访问层
项目名称为logisticsSys。
数据访问层与业务逻辑层采用SH框架的Struts2+Hibernate技术实现。
视图层和控制层采用JSP技术实现。
包名
说明
控制类包
数据访问层接口包
数据访问层实现类包
数据模型类包,实体包
业务逻辑层接口包
业务逻辑层实现类
配置文件包
logisticsSys包的划分
WebRoot文件的划分
2.2.5界面设计样式
该部分为界面设计的公共部分,给界面提供样式。
2.2.6通用组件配置文件
3.功能模块的详细设计与实现
3.1接单管理模块
3.1.1接单管理总体结构
3.1.2订单信息MVC模式的设计
层次
功能
所在的包/位置
程序
M
接单信息管理相关实体接口类
SendFoodsDao.java
接单信息管理相关实体接口实现类
mpl
SendFoodsDao,impl.java
接单信息管理相关实体类
SendFoods.java
接单信息管理相关实体类的配置
V
接单信息管理逻辑类
SendFoodsService.java
接单信息管理的逻辑实现类
SendFoodsService,impl.java
SendFoodsAction.java
C
接单输入页面
logisticsSys\jsp
Send_foods_Add.jsp
接单信息列表页面
Send_foods_list.jsp
接单信息编辑页面
Send_foods_update.jsp
接单入库页面
warehourse.jsp
3.1.3接单信息实体类的实现
publicclassSendFoods{
privateintid;
privateStringconsignorName;
privateStringconsignorAddress;
privateStringconsignorTel;
privateStringrecessName;
privateStringrecessTel;
privateStringchargeMethod;
privatefloatcost;
privateStringgoodsWeight;
privateStringgoodsVolume;
privatebooleanisSign;
privatebooleanisCost;
privateStringacceptor;
privateStringrecessAddress;
}
<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
!
DOCTYPEhibernate-mappingPUBLIC
"
-//Hibernate/HibernateMappingDTD3.0//EN"
>
<
hibernate-mapping>
<
classname=table="
t_send_foods"
<
idname="
id"
type="
int"
unsaved-value="
null"
<
generatorclass="
identity"
/>
/id>
propertyname="
consignorName"
columnname="
consignor_name"
/column>
/property>
consignorAddress"
consignor_address"
consignorTel"
consignor_tel"
recessName"
recess_name"
recessAddress"
recess_address"
recessTel"
recess_tel"
cost"
chargeMethod"
charge_method"
goodsWeight"
goods_weight"
goodsVolume"
goods_volume"
isSign"
is_sign"
isCost"
is_cost"
acceptor"
/class>
/hibernate-mapping>
3.1.4接单信息实体接口类
SendFoodDao.java
publicinterfaceSendFoodsDaoextendsIBaseDao<
SendFoods>
{
publicbooleanwarehouse(WarehousingDetailwarehousingDetail);
publicStringgetHQL(SendFoodssendFoods);
3.1.5接单信息实体接口的实现类
SendFoodDaoImpl.java
publicclassSendFoodsDaoImplextendsHibernateSessionimplementsSendFoodsDao{
publicbooleandelete(intid){
returnsuper.deleteEntityBean(SendFoods.class,id);
}
@SuppressWarnings("
unchecked"
)
publicList<
findAll(StringsendFoods){
returnsuper.getQueryList("
from"
+sendFoods);
publicbooleansave(SendFoodssendFoods){
returnsuper.insertEntityBean(sendFoods);
publicbooleanupdate(SendFoodssendFoods){
returnsuper.updateEntityBean(sendFoods);
findById(intid){
Stringsql="
fromSendFoodswhereid="
+id;
returnsuper.getQueryList(sql);
/**
*分页查询
*@paramhql查询的条件
*@paramoffset开始记录
*@paramlength一次查询几条记录
*@return
*/
findBySQLForPage(Stringhql,intoffset,intlength){
returnsuper.getQueryList(hql,offset,length);
*查询所有记录数
*@return总记录数
publicintgetAllRowCount(Stringhql){
returnsuper.getQueryList(hql).size();
publicbooleanwarehouse(WarehousingDetailwarehousingDetail){
Stringhql1="
fromWarehousingDetailwwherew.sendId='
"
+warehousingDetail.getSendId()+"
'
;
WarehousingDetailw=(WarehousingDetail)super.getEntityBean(hql1);
//如果查询有结果,则入库失败
if(w==null){
warehousingDetail.setWarehousingDate(newDate());
returnsuper.insertEntityBean(warehousingDetail);
}
returnfalse;
publicStringgetHQL(SendFoodssendFoods){
Stringhql="
fromSendFoodss"
//查询语句
if(sendFoods!
=null){
if(sendFoods.getConsignorName()!
hql+="
wheres.consignorName='
+sendFoods.getConsignorName()+"
}
elseif(sendFoods.getConsignorTel()!
wheres.consignorTel='
+sendFoods.getConsignorTel()+"
elseif(sendFoods.getAcceptor()!
wheres.acceptor='
+sendFoods.getAcceptor()+"
elseif(sendFoods.getRecessTel()!
wheres.recessTel='
+sendFoods.getRecessTel()+"
else{
if(sendFoods.getIsSign()){
hql+="
wheres.isSign=1"
}
else{
wheres.isSign=0"
returnhql;
3.1.6接单信息业务逻辑类
publicinterfaceSendFoodsService{
publicbooleandelete(intid);
findAll(Stringtable);
findById(intid);
publicbooleansave(SendFoodssendFoods);
publicbooleanupdate(SendFoodssendFoods);
publicPageBeanqueryForPage(intpageSize,intcurrentPage,SendFoodssendFoods);
publicintgetAllRowCount(Stringhql);
3.1.7接单信息业务逻辑类的实现类
SendFoodsServiceImpl.java
publicclassSendFoodsServiceImplimplementsSendFoodsService{
privateSendFoodsDaosendFoodsDao=newSendFoodsDaoImpl();
returnsendFoodsDao.delete(id);
findAll(Stringtable){
returnsendFoodsDao.findAll(table);
returnsendFoodsDao.findById(id);
returnsendFoodsDao.save(sendFoods);
sendFoodsDao.findById(sendFoods.getId());
returnsendFoodsDao.update(sendFoods);
publicSendFoodsDaogetSendFoodsDao(){
returnsendFoodsDao;
publicvoidsetSendFoodsDao(SendFoodsDaosendFoodsDao){
this.sendFoodsDao=sendFoodsDao;
publicPageBeanqueryForPage(intpageSize,intpage,SendFoodssendFoods){
Stringhql=sendFoodsDao.getHQL(sendFoods);
intallRow=sendFoodsDao.getAllRowCount(hql);
//总记录数
inttotalPage=PageBean.countTo