快递公司管理系统
软件需求
1. 引言
1.1 目的
本文档描述了快递公司管理系统的功能需求和非功能需求。开发小组的软件系统实现与验证工作都以此文档为依据。除特殊说明外,本文档所包含的需求都是高优先级需求。
1.2 范围
快递公司管理系统是为 ××× 物流公司开发的业务系统,开发的目标是帮助该物流公司处理日常的重点业务,包括物流信息查询,装车管理,库存管理,员工信息管理,财务信息管理。
通过快递公司管理系统的应用,期望为 ××× 物流公司提高员工工作效率,提高货运速度,降低货运成本,减少库存积压,减少车辆,人员闲置或过量运作,提高满意度并扩大顾客规模,提高订单量和利润。
1.3 参考文献
1) IEEE 标准。
2) 快递公司管理系统用例文档 V1.0。
3) 项目实践 V4.0
2 总体描述
2.1 商品前景
2.1.1 背景和机遇
XXX 快递公司是一本地民营物流企业,希望通过对城市网点建设,扩大快运服务通达的片区。企业在每个市设立中转中心、营业厅、快递员三个层级快递模式。快递员收件送往营业厅,同市间快递在营业厅通过汽车运输,跨市之间快递一律由营业厅发往中转中心,通过飞机、火车、汽车流通发往收件人所属中转中心。再由收件人所属中转中心发向所属的营业厅。再由快递员在营业厅提件,送达给收件人。然而,现在由于公司规模的扩大,企业业务量、办公场所、员工数的增加,现有条件已经不能满足业务发展的需求,现在有新的环境需要适应,工作效率和用户满意度也需要提高。
快递公司管理系统就是为了满足 XXX 快递公司新的业务发展要求而开发的,它包括一个数据集中服务器和多个客户端。数据集中服务器将所有的数据存储起来进行维护。用户通过客户端完成日常任务,客户端与数据集中服务器才是实时通信的方式完成数据交换。
2.1.2 业务需求
BR1:在系统使用 6 个月后,库存积压的现象要减少 30%。
BR2:在系统使用 6 个月后,用户满意度要提高 20%。
BR3:在系统使用 6 个月后,业务额要提高 40%。
BR4:在系统使用 6 个月后,财务人员工作效率要提高 30%。
BR5:在系统使用 6 个月后,经理的决策效率要提高 20%。
2.2 商品功能
SF1:适应公司规模扩大,企业业务量、办公场所、员工数都发生增长的新环境,提高工作效率和用户满意度
SF2:处理货物出库入库,保持合理库存,盘点库存信息
SF3:允许寄件人查询物流信息,提高用户服务体验
SF4:帮助工作人员处理各类单据,提高工作效率
SF5:掌握人员机构,财务,车辆和司机信息
SF6:合理分配快递员快件
SF7:掌握快递历史记录和装运信息
SF8:统计收支信息,进行成本管理,生成统计报表,降低成本
SF9:帮助总经理审批单据,降低工作量
SF10:根据财务状况制定薪水策略
2.3 用户特征
寄件人:
寄件人是该系统唯一身份为顾客的用户群体,主要涉及到物流信息查询的功能。他们主要希望能够快速准确查询他们所有快件实时的货运状态及历史状态,并为他们提供一个大概的到达时间。一个寄件人可能同时有较多快件同时在运送中,因此需要考虑到查询功能的运行速度。寄件人计算机操作能力一般不高,因此应该提供一个较为方便的查询功能方便那些不太会计算机的寄件人。
快递员:
每个营业厅大约有 50 个快递员。他们每天来往于客户和营业厅之间,预估计在节假日及特定日期(如双十一),他们每天至少要往返 20 次,有时还可能遇到客户较远或者客户要求取消快递的情况。他们的任务不仅繁忙而且涉及钱财事宜,同时快递员一般为临时雇佣的非专业人员,一般计算机操作能力较低,甚至有可能因此他们对系统的简单,方便,准确,节省时间要求很高。系统需要尽量避免快递员因不熟悉系统而出现大规模错误。
营业厅业务员:
每个营业厅大约有 5 个营业厅业务员,他们主要负责装车,接、派件,记录收款信息及车辆司机信息管理。他们负责的项目相对来说比较种类多且每一项都有些复杂,而且有些是要频繁的重复操作,有些是不定时的触发的,即任何时候都可能发生的操作。接派件需要与快递员进行交换信息,因此这也是业务员最频繁的操作。每当发车时需要录入装车单,每日大概 20-30 次。每当有司机,车辆信息变更时需要对这些信息进行管理,大约每日 1 次。每个营业厅营业员并不多,而且他们的工作比较复杂繁重,需要面对反复不断的接件、派件、装车、收款和随时可能发生的司机车辆信息的变更。同样,在节假日及特定日期会迎来工作繁忙的时段,对于每个营业厅仅有的 5 个业务员,在没有软件系统的支持的情况下是很难明显提高工作效率的。因此一个方便工作的软件系统可有效的让他们突破人力不足的瓶颈。营业厅业务员应有较强的计算机操作能力,能应对比较复杂的操作。
中转中心业务员:
每个中转中心有 10-20 个中转中心业务员,他们每天要完成大量的快递转运任务,在快递送达中转中心时要检查货物的到达状态。他们每天根据库存的状况,进行中转,并办理出库手续。在出库时记录装车信息。因为工作较为繁忙,他们希望新系统不要太多地浪费他们的时间。中转中心业务员能够简单使用办公信息化系统。
中转中心库存管理人员:
每个中转中心有 1-2 个库存管理人员,他们每天要完成大量的出入库工作,在快递到达中转中心时进行入库记录,在快递出库时进行出库记录。他们每天要进行 2-4 次库存查看,每天要进行 1 次库存盘点,在某一分区的库存数量到达警戒值时对库存分区进行分区调整。因为工作较为繁忙,他们希望新系统不要太多地浪费他们的时间。中转中心库存管理人员能够简单使用办公信息化系统。
财务人员:
总店有 1~2 名财务人员,。由于快递收款都是在营业厅完成,所以财务人员需要按天或者营业厅查看收款单记录并且合计数据。由于快递公司涉及很多方面的支出,所以财务人员也需要能新建付款单进行成本管理。为了了解知道当前的经营情况,他们也需要查看截止当前日期的成本收益表。为了查看一段时间内的经营情况,财务人员也需要查看某一段时间内的收款单和入款单信息。同时,财务人员在期初的时候需要新建账目,同时还可以查看期初信息。而且,财务人员需要能够导出任何报表。仅有拥有最高权限的财务人员可以进行账户管理,管理该公司的银行账户,包括增加账户、删除账户、修改账户属性和查询账户,并且账户的余额是不能被修改的。财务人员办公信息化系统较强。
总经理:
总店有 2 名总经理。为了对人员机构进行调整,他们需要能够直接管理人员机构的信息。所有的单据都需要经过总经理的审批,所以总经理每天都要查看所有申请单据,修改单据数据,通过审批。为了了解知道当前的经营情况,他们也需要查看截止当前日期的成本收益表。为了查看一段时间内的经营情况,总经理也需要查看某一段时间内的收款单和入款单信息。针对不同的人员,总经理也需要使用不同的方式,按月,按次或者按提成制定薪水策略。城市距离、价格等常量也需要总经理制定。总经理能够熟练使用办公信息化系统。
管理员:
整个系统有 1 个管理员,他处理该公司的员工的雇佣、离职与职位变换。离职与职位变换通常是单个员工行为。系统管理员是计算机专业维护人员,计算机性能好。
2.4 约束
CON1:系统将使用 Java 语言进行开发。
CON2:系统不适用 Web 界面,而是图形界面。
CON3:项目要使用持续集成方法进行开发。
CON4:在开发中,开发者要提交软件需求规格说明文档、设计文档和测试报告。
CON5:用户远程使用系统。
2.5 假设和依赖
AE1:每天能将库存中 85% 的货物成功派件。
AE2:货物在到达时 98% 以上为完整状态。
软件体系结构
1. 引言
1.1 编制目的
本报告详细完成对快递公司管理系统的概要设计,达到直到详细设计和开发的目的,同时实现和测试人员及用户的沟通。
本报告面向开发人员、测试人员及最终用户而编写,是了解系统的导航。
1.2 参考资料
·项目实践 v4
·快递公司管理系统用例文档
·快递公司管理系统软件规格说明文档
2. 产品概述
快递公司管理系统是为 ××× 物流公司开发的业务系统,开发的目标是帮助该物流公司处理日常的重点业务,包括物流信息查询,装车管理,库存管理,员工信息管理,财务信息管理。
通过快递公司管理系统的应用,期望为 ××× 物流公司提高员工工作效率,提高货运速度,降低货运成本,减少库存积压,减少车辆,人员闲置或过量运作,提高满意度并扩大顾客规模,提高订单量和利润。
3. 逻辑视角
快递公司管理系统中,选择了分层体系结构风格,将系统分为三层(展示层、业务逻辑层、数据层)能够很好地示意整个高层抽象。展示层包含 GUI 页面的实现,业务逻辑层包含业务逻辑处理的实现,数据层负责数据的持久化和访问。分层体系结构的逻辑视角和逻辑设计方案如图 1 和图 2 所示。
图 1 参照体系结构风格的包图表达逻辑视角
图 2 软件体系结构逻辑设计方案
4.组合视角
4.1 开发包图
快递公司管理系统的最终开发包设计如表 1 所示。
表 1 快递公司管理系统的最终开发包设计
开发(物理)包 |
所依赖的其他开发包 |
mainui |
commodityui, transportui, logisticui,accountui, balanceui, userui, orderui, managerui,vo |
commodityui |
界面类库包,commodityblservice |
commodityblservice |
|
commoditybl |
commodityblservice, commoditydataservice,po, logisticbl |
commoditydataservice |
Java RMI,po |
commoditydata |
Java RMI,po,databaseutility |
transportui |
transportblservice,界面类库包 |
transportblservice |
|
transportbl |
transportblservice, transportui,po |
transportdataservice |
Java RMI,po |
transportdata |
Java RMI,po,databaseutility |
logisticui |
Logisticblservice,界面类库包 |
logisticblservice |
|
logisticbl |
Logisticblservice,logisticdataservice,po, transportbl(commodityInfo),orderbl |
logisticdataservice |
Java RMI,po |
logisticdata |
po,databaseutility, logisticdataservice |
accountui |
界面类库包,accountblservice |
accountblservice |
|
accountbl |
accountblservice, accountdataservice,po,balancebl |
accountdataservice |
Java RMI,po |
accountdata |
Java RMI,po,databaseutility |
balanceui |
balanceblservice,界面类库包 |
balanceblservice |
|
balancebl |
balanceblservice, balancedataservice,po |
balancedataservice |
Java RMI,po |
balancedata |
po,databaseutility, balancedataservice |
userui |
userblservice,界面类库包 |
userblservice |
|
userbl |
UserInterface,UserDataClient,UserPo |
userdataservice |
Java RMI,po |
userdata |
po,databaseutility,Java RMI |
orderui |
orderblservice,界面类库包 |
orderblservice |
|
orderbl |
orderblservice, orderdataservice,po |
orderdataservice |
Java RMI,po |
orderdata |
po,databaseutility, orderdataservice |
managerui |
managerblservice,界面类库包 |
managerblservice |
|
managerbl |
managerblservice, managerdataservice,balancebl,accountbl,pocommoditybl,logisticbl |
managerdataservice |
Java RMI,po |
managerdata |
po,databaseutility, managerdataservice |
vo |
|
po |
|
ublilitybl |
|
界面类库包 |
|
Java RMI |
|
databaseutility |
JDBC |
快递公司管理系统客户端开发包图如图 3 所示,服务器开发包图如图 4 所示。
图 3 快递公司管理系统客户端开发包图
图 4 快递公司管理系统服务器端开发包图
4.2 运行时进程
在快递管理系统中,会有多个客户端进程和一个服务器端进程,其进程图如下图所示。结合部署图,客户端进程是在客户端机器上运行,服务器端进程是在服务器端机器上运行。
4.3 物理部署
快递管理系统中客户端构件是放在客户端机器上,服务器端构件是放在服务器端机器上。在客户端节点上,还要部署 RMIStub 构件。由于 Java RMI 构件属于 JDK 6.0 的一部分。所以,在系统 JDK 环境已经设置好的情况下,不需要再独立部署。部署图如下图。
5.接口视角
5.1 模块的职责
客户端模块和服务器模块视图分别如图 7 和图 8 所示。客户端各层和服务器端各层的职责分别如表 2 和表 3 所示。
图 7 客户端模块视图图 8 服务器模块视图
表 2 客户端各层职责
层 |
职责 |
启动模块 |
负责初始化网络通信机制,启动用户界面 |
用户界面层 |
基于窗口的快递公司客户端用户界面 |
业务逻辑层 |
对于用户界面的输入进行响应并进行业务处理逻辑 |
客户端网络模块 |
利用 Java RMI 机制查找 RMI 服务 |
表 3 服务器端各层的职责
层 |
职责 |
启动模块 |
负责初始化网络通信机制,启动用户界面 |
数据层 |
负责数据的持久化及数据访问接口 |
服务器端网络模块 |
利用 Java RMI 机制开启 RMI 服务,注册 RMI 服务 |
每一层只是使用下方直接接触的层。层与层之间仅仅是通过接口的调用完成的。层之间调用的接口如表 4 所示。
借用订单的包来说明层之间的调用,如图 9 所示。每一层之间都是由上层依赖了一个接口(需接口),而下层实现这个接口(供接口)。OrdersBLService 提供了 Orders 界面所需要的所有业务逻辑功能。OrdersDataService 提供了对数据库的操作。这样的实现就大大降低了层与层之间的耦合。
图 9
5.2 用户界面层的分解
根据需求,系统存在 38 个用户界面:登录界面、寄件人主界面、快递员主界面、营业厅业务员主界面、中转中心业务员主界面、中转中心库存管理人员主界面、财务人员主界面、总经理主界面、管理员主界面、物流信息查询界面、订单处理界面、收件信息处理界面、车辆装车管理界面、接收货物界面、派件界面、记录收款信息界面、车辆信息管理界面、司机信息管理界面、管理到达信息界面、管理中转信息界面、管理装车信息界面、库存查看界面、库存盘点界面、入库管理界面、出库管理界面、库存分区调整界面、账户管理界面、结算管理界面、记录付款信息界面、成本管理界面、统计报表界面、期初建账界面、人员和机构管理界面、审批单据界面、查看统计分析界面、常量信息制定界面、薪水策略制定界面、用户管理界面 。界面跳转如图 10 所示。
图 10
服务器端和客户端的用户界面设计接口是一致的,只是具体的界面不一样。用户界面类如图 11 所示。
图 11
5.2.1 用户界面层模块的职责
如表 5 为用户界面层模块的职责
表 5 用户界面层模块的职责
模块 |
职责 |
MainFrame |
界面 Frame,负责界面的显示和界面的跳转 |
5.2.2 用户界面层模块的接口规范
用户界面层模块的接口规范如表 6 所示。
表 6 用户界面层模块的接口规范
MainFrame |
语法 |
init(args:String[]) |
前置条件 |
无 |
|
后置条件 |
显示 Frame 以及 LoginPanel |
用户界面层需要的服务接口如表 7 所示。
表 7 用户界面层模块需要的服务接口
服务名 |
服务 |
Businesslogicservice.LoginBLService |
登录界面的业务逻辑接口 |
Businesslogicservice.*BLService |
每个界面都有一个响应的业务逻辑接口 |
5.2.3 用户界面模块设计原理
用户界面利用 Java 的 Swing 和 AWT 库来实现。
5.3 业务逻辑层的分解
业务逻辑层包括多个针对界面的业务逻辑处理对象。
业务逻辑层的设计如图 12 所示。
图 12 业务逻辑层的设计
5.3.1 业务逻辑层的模块职责
业务逻辑层模块的职责如表 8 所示。
表 8 业务逻辑层模块的职责
模块 |
职责 |
userbl |
负责实现对应与登录界面以及用户管理界面需要的服务 |
transportbl |
负责实现车辆信息管理界面,司机信息管理界面需要的服务 |
logisticsbl |
负责实现物流信息查询界面,车辆装车管理界面,接收货物界面,派件界面,管理到达信息界面,管理中转信息界面,管理装车信息界面需要的服务 |
accountbl |
负责实现账户管理界面,期初建账界面需要的服务 |
orderbl |
负责实现订单处理界面,收件信息处理界面需要的服务 |
managerbl |
负责实现常量信息制定界面,薪水策略制定界面,审批单据界面,查看统计分析界面,人员和机构管理界面需要的服务 |
balancebl |
负责实现生成成本收益表界面,记录付款信息界面,统计报表界面,记录收款信息界面,结算管理界面需要的服务 |
commoditybl |
负责实现库存查看界面,库存盘点界面,入库管理界面,出库管理界面,库存分区调整界面 |
5.3.2 业务逻辑层模块的接口规范
Userbl, transportbl, logisticsbl, accountbl, orderbl, managerbl, balancebl, commoditybl 模块的接口规范分别如表 9,表 10,表 11,表 12,表 13,表 14,表 15,表 16 所示。
表 9 userbl 模块的接口规范
提供的服务(供接口) |
||
User.Login |
语法 |
public ResultMessage login(long id,String password) |
前置条件 |
password 符合输入规则 |
|
后置条件 |
查找是否存在相应的 User,根据输入的 password 返回登录验证结果 |
|
User.AddUser |
语法 |
public ResultMessage addUser(UserVO vo) |
前置条件 |
id,password 合法 |
|
后置条件 |
在数据库中新增 User |
|
User.DelUser |
语法 |
public ResultMessage delUser(UserVO vo) |
前置条件 |
数据库中存在对应 User |
|
后置条件 |
在数据库中删除该 User |
|
User.RevUser |
语法 |
public ResultMessage revUser(UserVO vo) |
前置条件 |
数据库中存在对应 User |
|
后置条件 |
在数据库中修改该 User |
|
User.getUser |
语法 |
public UserVO getUserbyID(String id) |
前置条件 |
数据库中存在对应 User |
|
后置条件 |
无 |
|
需要的服务(需接口) |
||
DatabaseFactory.getUserDatabase |
得到 User 数据库的服务的引用 |
|
UserDataService.insert(UserPO po) |
在数据库中插入 UserPO 对象 |
|
UserDataService.delete(UserPO po) |
在数据库中插入 UserPO 对象 |
|
UserDataService.update(UserPO po) |
在数据库中修改更新某一 UserPO 对象 |
|
UserDataService.find(String username) |
在数据库中根据用户名查找某一 UserPO 对象 |
表 10 transportbl 模块接口规范
提供的服务(供接口) |
||
Transport.AddDriver |
语法 |
public ResultMessage addDriver (DriverVO vo) |
前置条件 |
启动一个司机信息管理任务 |
|
后置条件 |
在数据库中新增 driver 信息 |
|
Transport.DelDriver |
语法 |
public ResultMessage delDriver() |
前置条件 |
数据库中存在对应 driver 信息 |
|
后置条件 |
在数据库中删除该 driver 信息 |
|
Transport.RevDriver |
语法 |
public ResultMessage revDriver (DriverVO vo) |
前置条件 |
数据库中存在对应 driver 信息 |
|
后置条件 |
在数据库中修改该 driver 信息 |
|
Transport.getDriverbyDN |
语法 |
public DriverVO getDriverbyDN(String driverNumber) |
前置条件 |
数据库中存在对应 driver 信息 |
|
后置条件 |
无 |
|
Transport.getDriverby Name |
语法 |
public DriverVO getDriverbyName (String name) |
前置条件 |
数据库中存在对应 driver 信息 |
|
后置条件 |
无 |
|
Transport.AddVehicle |
语法 |
public ResultMessage addVehicle (VehicleVo vo) |
前置条件 |
启动一个车辆信息管理任务 |
|
后置条件 |
在数据库中新增 Vehicle 信息 |
|
Transport.DelVehicle |
语法 |
public ResultMessage delVehicle () |
前置条件 |
数据库中存在对应 Vehicle 信息 |
|
后置条件 |
在数据库中删除该 Vehicle 信息 |
|
Transport.RevVehicle |
语法 |
public ResultMessage revVehicle (VehicleVo vo) |
前置条件 |
数据库中存在对应 Vehicle 信息 |
|
后置条件 |
在数据库中修改该 Vehicle 信息 |
|
Transport.getVehiclebyVN |
语法 |
public VehicleVo getVehiclebyVN (String vehicleNumber) |
前置条件 |
数据库中存在对应 Vehicle 信息 |
|
后置条件 |
无 |
|
Transport.getVehiclebyPN |
语法 |
public VehicleVo getVehiclebyPN (String plateNumber) |
前置条件 |
数据库中存在对应 Vehicle 信息 |
|
后置条件 |
无 |
|
需要的服务(需接口) |
||
DatabaseFactory. getTransportDaTabase |
DatabaseFactory.getTransportDaTabase |
|
TransportDataService.insertDriver(DriversPO po) |
在数据库中插入 DriversPO 对象 |
|
TransportDataService.deleteDriver(DriversPO po) |
在数据库中删除 DriversPO 对象 |
|
TransportDataService.updateDriver(DriversPO po) |
在数据库中修改更新某一 DriversPO 对象 |
|
TransportDataService.findDriver(String identity) |
在数据库中查找某一 DriversPO 对象 |
|
TransportDataService.insertVehicle(VehiclesPO po) |
在数据库中插入 VehiclesPO 对象 |
|
TransportDataService.deleteVehicle(VehiclesPO po) |
在数据库中删除 VehiclesPO 对象 |
|
TransportDataService.updateVehicle(VehiclesPO po) |
在数据库中修改更新某一 VehiclesPO 对象 |
|
TransportDataService.findVehicle(String identity) |
在数据库中查找某一 VehiclesPO 对象 |
表 11 logisticsbl 模块接口规范
提供的服务(供接口) |
|||
Logistics. getOrderbyON |
语法 |
public OrderVO getOrderbyON(String orderNumber) |
|
前置条件 |
数据库中存在该订单 |
||
后置条件 |
无 |
||
Logistics.HallLoad |
语法 |
public ResultMessage addHallLoadForm (HallLoadVO vo) |
|
前置条件 |
输入信息符合规范 |
||
后置条件 |
数据库增加该营业厅装车单 |
||
Logistics. ComputeHLfare |
语法 |
public double ComputeHLfare (HLFareVO vo) |
|
前置条件 |
输入信息符合规范 |
||
后置条件 |
无 |
||
Logistics.GoodsReceving |
语法 |
public ResultMessage GoodsReceving (GoodsRecevingVO vo) |
|
前置条件 |
输入信息规范 |
||
后置条件 |
数据库增加该收件单 |
||
Logistics.Delivery |
语法 |
public ResultMessageDelivery(DeliveryVO vo) |
|
前置条件 |
输入信息规范 |
||
后置条件 |
数据库增加该派件单 |
||
Logistics.Arrival |
语法 |
public ResultMessage Arrival(ArrivalVO vo) |
|
前置条件 |
输入信息符合规范 |
||
后置条件 |
数据库增加该到达单 |
||
Logistics.Recordtrans |
语法 |
public ResultMessage Recordtrans (RecordtransVO vo) |
|
前置条件 |
输入信息符合规范 |
||
后置条件 |
数据库增加该中转单 |
||
Logistics.Centerload |
语法 |
public ResultMessage addCenterLoadForm (CenterloadVO vo) |
|
前置条件 |
输入信息符合规范 |
||
后置条件 |
数据库增加该中转中心装车单 |
||
Logistics. ComputeCLfare |
语法 |
public double ComputeCLfare (CLFareVO vo) |
|
前置条件 |
输入信息符合规范 |
||
后置条件 |
无 |
||
需要的服务(需接口) |
|||
DatabaseFactory.getLogisticsDaTabase |
DatabaseFactory.getLogisticsDaTabase |
||
LogisticsDataService.findLogisticsInfo(String Ordernum) |
根据订单编号在数据库中查找某一 LogisticsPO 对象(物流信息) |
||
LogisticsDataService.addLoadForm(LoadPO po) |
向数据库中插入 LoadPO 对象(营业厅装车单) |
||
LogisticsDataService.getLoadForm(Formstate state) |
从数据库中得到 LoadPO 对象数组 |
||
LogisticsDataService.updateLoadForm(LoadPO po) |
向数据库中更新 LoadPO 对象 |
||
LogisticsDataService.addGoodsRecevingForm(GoodsRecevingPO po) |
向数据库中插入 GoodsRecevingPO 对象(货物接收单) |
||
LogisticsDataService.getGoodsReceivingForm(Formstate state) |
从数据库中得到 GoodsReceivingPO 对象 |
||
LogisticsDataService.updateGoodsReceivingForm(GoodsReceivingPO po) |
向数据库中更新 GoodsReceivingPO 对象 |
||
LogisticsDataService.addDeliveryForm(DeliveryPO po) |
向数据库中插入 DeliveryPO 对象(派件单) |
||
LogisticsDataService.getDeliveryForm(Formstate state) |
从数据库中得到 DeliveryPO 对象 |
||
LogisticsDataService.updateDeliveryForm(DeliveryPO po) |
向数据库中更新 DeliveryPO 对象 |
||
LogisticsDataService.addArrivalForm(ArrivalPO po) |
向数据库中插入 ArrivalPO 对象(到达单) |
||
LogisticsDataService.getArrivalForm(Formstate state) |
从数据库中得到 ArrivalPO 对象 |
||
LogisticsDataService.updateArrivalForm(ArrivalPO po) |
向数据库中更新 ArrivalPO 对象 |
||
LogisticsDataService.addRecordtransForm(RecordtransPO po) |
向数据库中插入 RecordtransPO 对象(中转单) |
||
LogisticsDataService.getRecordtransForm(Formstate state) |
从数据库中得到 RecordtransPO 对象 |
||
LogisticsDataService.updateRecordtransForm(RecordtransPO po) |
向数据库中更新 RecordtransPO 对象 |
||
LogisticsDataService.addCenterLoadForm(CenterLoadPO po) |
向数据库中插入 CenterLoadPO 对象(中转中心装车单) |
||
LogisticsDataService.getCenterLoadForm(Formstate state) |
从数据库中得到 CenterLoadPO 对象 |
||
LogisticsDataService.updateCenterLoadForm(CenterLoadPO po) |
向数据库中更新 CenterLoadPO 对象 |
表 12 accountbl 模块接口规范
提供的服务(供接口) |
||
Account.addAccount |
语法 |
public ResultMessage addAccount(AccountVO vo) |
前置条件 |
启动一个账户管理任务 |
|
后置条件 |
增加新账户 |
|
Account.delAccount |
语法 |
public ResultMessage delAccount() |
前置条件 |
数据库中存在该账户 |
|
后置条件 |
删除该账户 |
|
Account.revAccount |
语法 |
public ResultMessage revAccount(AccountVO vo) |
前置条件 |
数据库中存在该账户 |
|
后置条件 |
更改该账户 |
|
Account.searchAccount |
语法 |
public AccountVO getAccountbyID(String id, String password) |
前置条件 |
数据库中存在该账户 |
|
后置条件 |
无 |
|
Account.NewBook |
语法 |
public ResultMessage NewBook (NewbookVO vo) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
新建账本 |
|
需要的服务(需接口) |
||
DatabaseFactory.getAccountDaTabase |
得到 Account 数据库的服务和引用 |
|
AccountDataService.addAccount(Account PO po) |
向数据库中插入 AccoutPO 对象 |
|
AccountDataService.deleteAccount(Account PO po) |
从数据库中删除 AccountPO 对象 |
|
AccountDataService.updateAccount(Account PO po) |
从数据库中修改更新某一 AccountPO 对象 |
|
AccountDataService.findAccount(String accountname) |
从数据库中查询某一 AccountPO 对象 |
|
AccountDataService.addNewBook(NewBookPO po) |
向数据库中插入 NewBookPO 对象 |
|
AccountDataService.findNewBook(long time) |
从数据库中查询某一 NewBookPO 对象 |
表 13 orderbl 模块接口规范
提供的服务(供接口) |
||
Order.order |
语法 |
public ResultMessage order(OrderVO vo) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中新增订单 |
|
Order. Computefare |
语法 |
public double order(OrderFareVO vo) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
无 |
|
Order.reception |
语法 |
public ResultMessage reception (ReceptionVO vo) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中新增收货单 |
|
需要的服务(需接口) |
||
DatabaseFactory.getOrdersDaTabase |
得到 Orders 数据库的服务和引用 |
|
OrdersDataService.addOrderForm(OrdersPO Po) |
向数据库中插入 OrdersPO 对象 |
|
OrdersDataService.getOrderForm(Formstate state) |
从数据库中得到 OrdersPO 对象 |
|
OrdersDataService.getOrderForm(String Ordernum) |
从数据库中得到 OrdersPO 对象 |
|
OrdersDataService.updateOrderForm(OrderPO po) |
向数据库中更新 OrdersPO 对象 |
表 14 managerbl 模块接口规范
提供的服务(供接口) |
||
Manager.addConstants |
语法 |
public ResultMessage addContants (ConstantsVO vo) |
前置条件 |
启动一个常量信息制定任务 |
|
后置条件 |
系统新增常量 |
|
Manager.delConstants |
语法 |
public ResultMessage delContants(ConstantsVO vo) |
前置条件 |
数据库存在常量 |
|
后置条件 |
数据库中删除该常量 |
|
Manager.revConstants |
语法 |
public ResultMessage revContants (ConstantsVO vo) |
前置条件 |
数据库存在常量 |
|
后置条件 |
数据库中修改该常量 |
|
Manager.getConstants |
语法 |
public ConstantsVO getContants (string name) |
前置条件 |
数据库存在该常量 |
|
后置条件 |
无 |
|
Manager.addSalary |
语法 |
public ResultMessage addSalary (SalaryVO vo) |
前置条件 |
启动一个常量信息制定任务 |
|
后置条件 |
系统新增常量 |
|
Manager.delSalary |
语法 |
public ResultMessage delSalary(SalaryVO vo) |
前置条件 |
数据库存在常量 |
|
后置条件 |
数据库中删除该常量 |
|
Manager.revSalary |
语法 |
public ResultMessage revSalary (SalaryVO vo) |
前置条件 |
数据库存在常量 |
|
后置条件 |
数据库中修改该常量 |
|
Manager.getSalary |
语法 |
public SalaryVO getSalary (Job job) |
前置条件 |
数据库存在该常量 |
|
后置条件 |
无 |
|
Manager.Salary |
语法 |
public ResultMessage salary(SalaryVO vo) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中修改薪水策略 |
|
Manager.searchAccount |
语法 |
public AccountVO searchAccount(String id) |
前置条件 |
数据库中存在经营情况信息 |
|
后置条件 |
无 |
|
Manager.Balanceview |
语法 |
public BalanceviewVO Balanceview() |
前置条件 |
数据库中存在成本收益信息 |
|
后置条件 |
无 |
|
Manager.Statistics |
语法 |
public StatisticsVO Statistics(long startTime,long endTime) |
前置条件 |
数据库中存在该账户 |
|
后置条件 |
无 |
|
Manager.addOrganization |
语法 |
public ResultMessage addOrganization (OrganizationVO vo) |
前置条件 |
启动一个人员机构管理任务 |
|
后置条件 |
系统新增机构 |
|
Manager.delOrganization |
语法 |
public ResultMessage delOrganization(OrganizationVO vo) |
前置条件 |
数据库存在该机构 |
|
后置条件 |
数据库中删除该机构 |
|
Manager.revOrganization |
语法 |
public ResultMessage revOrganization (OrganizationVO vo) |
前置条件 |
数据库存在该机构 |
|
后置条件 |
数据库中修改该机构 |
|
Manager.getOrganization |
语法 |
public OrganizationVO getOrganization (String name) |
前置条件 |
数据库存在该机构 |
|
后置条件 |
无 |
|
Manager.addStaff |
语法 |
public ResultMessage addStaff(StaffVO vo) |
前置条件 |
启动一个人员机构管理任务 |
|
后置条件 |
系统新增人员 |
|
Manager.delStaff |
语法 |
public StaffVO delStaff(StaffVO vo) |
前置条件 |
数据库存在该人员 |
|
后置条件 |
数据库中删除该人员 |
|
Manager.revStaff |
语法 |
public ResultMessage revStaff(StaffVO vo) |
前置条件 |
数据库存在该人员 |
|
后置条件 |
数据库中修改该人员 |
|
Manager.getStaff |
语法 |
public ResultMessage getStaff(String name) |
前置条件 |
数据库存在该人员 |
|
后置条件 |
无 |
|
Manager.getOrders |
语法 |
public List getOrders() |
前置条件 |
数据库中存在订单信息 |
|
后置条件 |
无 |
|
Manager.OrdersExam |
语法 |
public ResultMessage OrdersExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的订单 |
|
Manager.getHLForms |
语法 |
public List getHLForms () |
前置条件 |
数据库中存在营业厅装车单信息 |
|
后置条件 |
无 |
|
Manager. HLFormsExam |
语法 |
public ResultMessage HLFormsExam (List< HLFormsExamVO> volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的营业厅装车单 |
|
Manager.getCLForms |
语法 |
public List getCLForms () |
前置条件 |
数据库中存在中转中心装车单信息 |
|
后置条件 |
无 |
|
Manager. CLFormsExam |
语法 |
public ResultMessage CLFormsExam (List< CLFormsExamVO> volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的中转中心装车单 |
|
Manager.getGoodsRecevings |
语法 |
public List getGoodsRecevings() |
前置条件 |
数据库中存在收货单信息 |
|
后置条件 |
无 |
|
Manager. GoodsRecevingsExam |
语法 |
public ResultMessage GoodsRecevingsExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的收货单 |
|
Manager.getDeliverys |
语法 |
public List getDeliverys() |
前置条件 |
数据库中存在派件单信息 |
|
后置条件 |
无 |
|
Manager. DeliverysExam |
语法 |
public ResultMessage DeliverysExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的派件单 |
|
Manager.getArrivals |
语法 |
public List getArrivals() |
前置条件 |
数据库中存在到达单信息 |
|
后置条件 |
无 |
|
Manager.ArrivalsExam |
语法 |
public ResultMessage ArrivalsExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的到达单 |
|
Manager.getRecordtrans |
语法 |
public List getRecordtrans() |
前置条件 |
数据库中存在中转单信息 |
|
后置条件 |
无 |
|
Manager.RecordtransExam |
语法 |
public ResultMessage RecordtransExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的中转单 |
|
Manager.getInbounds |
语法 |
public List getInbounds() |
前置条件 |
数据库中存在入库单信息 |
|
后置条件 |
无 |
|
Manager.InboundsExam |
语法 |
public ResultMessage InboundsExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的入库单 |
|
Manager.getStockouts |
语法 |
public List getStockouts() |
前置条件 |
数据库中存在出库单信息 |
|
后置条件 |
无 |
|
Manager.StockoutsExam |
语法 |
public ResultMessage StockoutsExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的出库单 |
|
Manager.getRecordcollects |
语法 |
public List getRecordcollects() |
前置条件 |
数据库中存在收款单信息 |
|
后置条件 |
无 |
|
Manager.RecordcollectsExam |
语法 |
public ResultMessage RecordcollectsExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的收款单 |
|
Manager.getDebitnotes |
语法 |
public List getDebitnotes() |
前置条件 |
数据库中存在收款单信息 |
|
后置条件 |
无 |
|
Manager.DebitnotesExam |
语法 |
public ResultMessage DebitnotesExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的收款单 |
|
Manager.getRecordpays |
语法 |
public List getRecordpays() |
前置条件 |
数据库中存在付款单信息 |
|
后置条件 |
无 |
|
Manager.RecordpaysExam |
语法 |
public ResultMessage RecordpaysExam (List volist) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中存储审批后的付款单 |
|
需要的服务(需接口) |
||
DatabaseFactory.getManagerDatabase |
得到 Manager 数据库的服务的引用 |
|
ManagerDataService.addConstants(ConstantsPO po) |
向数据库中插入 ConstantsPO 对象 |
|
ManagerDataService.deleteConstants(ConstantsPO po) |
从数据库中删除 ConstantsPO 对象 |
|
ManagerDataService.updateConstants(ConstantsPO po) |
从数据库中修改更新某个 ConstantsPO 对象 |
|
ManagerDataService.updateSalary(SalaryPO po) |
从数据库中修改更新某个 SalaryPO 对象(薪水策略制定) |
|
ManagerDataService.addOrganization(OrganizationPO po) |
向 Manager 数据库中插入 OrganizationPO 对象 |
|
ManagerDataService.deleteOrganization(OrganizationPO po) |
向 Manager 数据库中删除 OrganizationPO 对象 |
|
ManagerDataService.updateOrganization(OrganizationPO po) |
向 Manager 数据库中修改更新 OrganizationPO 对象 |
|
ManagerDataService.findOrganization(long organizationid) |
向 Manager 数据库中查找 OrganizationPO 对象 |
|
ManagerDataService.addStaff(StaffPO po) |
向 Manager 数据库中插入 StaffPO 对象 |
|
ManagerDataService.deleteStaff(StaffPO po) |
向 Manager 数据库中删除 StaffPO 对象 |
|
ManagerDataService.updateStaff(StaffPO po) |
向 Manager 数据库中修改更新 StaffPO 对象 |
|
ManagerDataService.findStaff(String Staffid) |
向 Manager 数据库中查找 StaffPO 对象 |
表 15 balancebl 模块接口规范
提供的服务(供接口) |
||
Balance.Balanceview |
语法 |
public BalanceviewVO getBalanceview() |
前置条件 |
数据库中存在成本收益信息 |
|
后置条件 |
无 |
|
Balance.RecordCollect |
语法 |
public ResultMessage Recordcollect (RecordcollectVO vo) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中新增付款信息 |
|
Balance.Statistics |
语法 |
public StatisticsVO Statistics(long startTime,long endTime) |
前置条件 |
数据库中存在经营情况信息 |
|
后置条件 |
无 |
|
Balance.Recordpay |
语法 |
public ResultMessage Recordpay(RecordpayVO vo) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中新增收款信息 |
|
Balance.Debitnote |
语法 |
public ResultMessage Debitnote(DebitnoteVO vo) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库中新增收款单 |
|
需要的服务(需接口) |
||
DatabaseFactory.getBalanceDaTabase |
得到 Balance 数据库的服务和引用 |
|
BalanceDataService.addBalanceview(BalanceviewPO po) |
向数据库中插入 BalanceviewPO 对象 |
|
BalanceDataService.getBalanceview() |
从数据库中得到 BalanceviewPO 对象(成本收益表) |
|
BalanceDataService.addRecordcollectForm(RecordcollectPO po) |
向数据库中插入 RecordcollectPO 对象(收款单) |
|
BalanceDataService.getRecordcollectForm(Formstate state) |
从数据库中得到 RecordcollectPO 对象 |
|
BalanceDataService.updateRecordcollectForm(RecordcollectPO po) |
向数据库中更新 RecordcollectPO 对象 |
|
BalanceDataService.getallRecordcollectForm() |
从数据库中得到所有 RecordcollectPO 对象 |
|
BalanceDataService.getallRecordpayForm() |
从数据库中得到所有 RecordpayPO 对象 |
|
BalanceDataService.addRecordpayForm(RecordpayPO po) |
向数据库中插入 RecordpayPO 对象(付款单) |
|
BalanceDataService.getRecordpayForm(Formstate state) |
从数据库中得到 RecordpayPO 对象 |
|
BalanceDataService.updateRecordpayForm(RecordpayPO po) |
向数据库中更新 RecordpayPO 对象 |
|
BalanceDataService.addDebitnoteForm(DebitnotePO po) |
向数据库中插入 DebitnotePO 对象(结算管理) |
|
BalanceDataService.getDebitForm(Formstate state) |
从数据库中得到 DebitPO 对象 |
|
BalanceDataService.updateDebitForm(DebitPO po) |
向数据库中更新 DebitPO 对象 |
表 16 commoditybl 模块接口规范
提供的服务(供接口) |
||
Commodity.StockExamination |
语法 |
public StockExaminationVO StockExamination (long startTime, long endTime) |
前置条件 |
数据库存在库存信息 |
|
后置条件 |
无 |
|
Commodity.Stocktaking |
语法 |
public StocktakingVO Stocktaking() |
前置条件 |
数据库存在库存信息 |
|
后置条件 |
无 |
|
Commodity.Inbound |
语法 |
public ResultMessage Inbound(StockinVO vo) |
前置条件 |
输入信息符合规范 |
|
后置条件 |
数据库增加该入库单 |
|
Commodity.Stockout |
语法 |
public ResultMessage Stockout(StockoutVO vo) |
前置条件 |
输入信息规范 |
|
后置条件 |
数据库增加该出库单 |
|
Commodity.Subregion |
语法 |
public ResultMessage Subregion(Location beforeLocation, Location afterLocation) |
前置条件 |
存在该货物 |
|
后置条件 |
更改货物位置 |
|
Commodity.getRegionInfo |
语法 |
public RegionInfoVO getRegionInfo (Region region) |
前置条件 |
数据库存在分区信息 |
|
后置条件 |
无 |
|
需要的服务(需接口) |
||
DatabaseFactory.getCommodityDatabase |
得到 Commodity 数据库的服务的引用 |
|
CommodityDataService.getallCommodity() |
得到数据库中所有 CommodityPO 对象 |
|
CommodityDataService.getCommodityBetween(Int starttime,int endtime) |
得到所有入库时间在 starttime 和 endtime 之间的 CommodityPO 对象 |
|
CommodityDataService.addnew(CommodityPO po) |
向数据库中加入一个 CommodityPO 对象 |
|
CommodityDataService.setOuttime(CommodityPOpo,int endtime) |
给某一 Commodity 对象填写出库时间 |
|
CommodityDataService.changeLocation(CommodityPO Po, blocknum, linenum, shelfnum, locationnum) |
给数据库中某一 CommodityPO 对象修改位置 |
|
CommodityDataService.addStockinForm(StockinPO po) |
向数据库中插入 StockinPO 对象(付款单) |
|
CommodityDataService.getStockinForm(Formstate state) |
从数据库中得到 StockinPO 对象 |
|
CommodityDataService.updateStockinForm(StockinPO po) |
向数据库中更新 StockinPO 对象 |
|
CommodityDataService.addStockoutForm(StockoutPO po) |
向数据库中插入 StockoutPO 对象(付款单) |
|
CommodityDataService.getStockoutForm(Formstate state) |
从数据库中得到 StockoutPO 对象 |
|
CommodityDataService.updateStockoutForm(StockoutPO po) |
向数据库中更新 StockoutPO 对象 |
5.4 数据层的分解
数据层主要给逻辑层提供数据访问服务,包括对于持久化数据的增,删,改,查。由于持久化数据的保存可能存在多种形式:Txt 文件,序列化文件,数据库等,所示抽象了数据服务。数据层模块的具体描述如下图。
5.4.1 数据层模块的职责
模块 |
职责 |
UserDataService |
持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
UserDataServiceMySqlImpl |
基于 MySQL 数据库的持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
模块 |
职责 |
TransportDataService |
持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
TransportDataServiceMySqlImpl |
基于 MySQL 数据库的持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
模块 |
职责 |
LogisticsDataService |
持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
LogisticsDataServiceMySqlImpl |
基于 MySQL 数据库的持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
模块 |
职责 |
AccountDataService |
持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
AccountDataServiceMySqlImpl |
基于 MySQL 数据库的持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
模块 |
职责 |
BalanceDataService |
持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
BalanceDataServiceMySqlImpl |
基于 MySQL 数据库的持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
模块 |
职责 |
OrdersDataService |
持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
OrdersDataServiceMySqlImpl |
基于 MySQL 数据库的持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
模块 |
职责 |
ManagerDataService |
持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
ManagerDataServiceMySqlImpl |
基于 MySQL 数据库的持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
模块 |
职责 |
CommodityDataService |
持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
CommodityDataServiceMySqlImpl |
基于 MySQL 数据库的持久化数据库的接口,提供集体载入,集体保存,增,删,改,查服务 |
5.4.2 数据层模块的接口规范
数据层模块的接口规范如表 12 所属。
表 12 TransportData 模块的接口规范
提供的服务(供接口) |
||
TransportDataService.insertDriver |
语法 |
public void insertDriver(DriversPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
TransportDataService.deleteDriver |
语法 |
public void deleteDriver(DriversPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
删除一个 po |
|
TransportDataService.updateDriver |
语法 |
public void updateDriver(DriversPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
TransportDataService.findDriverByNum |
语法 |
public DriversPO findDriver(String identity)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 identity 进行查找返回相应的 DriversPO 结果 |
|
TransportDataService.findDriverByName |
语法 |
public List findDriverByname(String name)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 name 进行查找返回相应的 DriversPO 结果 |
|
TransportDataService.getCurrentDriverID(String orgcode) |
语法 |
public long getCurrentDriverID(String orgcode)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 orgcode 进行查找返回下一个 Driver 的编号 |
|
TransportDataService.insertVehicle |
语法 |
public void insertVehicle(VehiclesPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
TransportDataService.deleteVehicle |
语法 |
public void deleteVehicle(VehiclesPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
删除一个 po |
|
TransportDataService.updateVehicle |
语法 |
public void updateVehicle(VehiclesPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
TransportDataService.findVehiclebyCode |
语法 |
public VehiclesPO findVehiclebycode (String identity) throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 identity 进行查找返回相应的 VehiclesPO 结果 |
|
TransportDataService. findVehicleByPlateNumber |
语法 |
public VehiclesPO findVehicleByPlateNumber(String plateNumber) throws RemoteException; |
前置条件 |
无 |
|
后置条件 |
按 plateNumber 进行查找返回相应的 VehiclesPO 结果 |
|
TransportDataService.getCurrentVehicleID(String orgcode) |
语法 |
public long getCurrentVehicleID(String orgcode)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 orgcode 进行查找返回下一个 Vehicle 的编号 |
LogisticsData 模块的接口规范
提供的服务(供接口) |
||
LogisticsDataService. addLoadForm |
语法 |
public void addLoadForm (LoadPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
LogisticsDataService.getLoadForm |
语法 |
public ListgetLoadForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
LogisticsDataService.updateLoadForm |
语法 |
public void updateLoadForm(LoadPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
LogisticsDataService. findLogisticsInfo |
语法 |
public LogisticsPO findLogisticsInfo (String ordernum)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 ordernum 进行查找返回相应的 LogisticsPO 结果 |
|
LogisticsDataService. addGoodsReceivingForm |
语法 |
public void addGoodsReceivingForm (GoodsReceivingPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
LogisticsDataService.getGoodsReceivingForm |
语法 |
public List getGoodsReceivingForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
LogisticsDataService.updateGoodsReceivingForm |
语法 |
public void updateGoodsReceivingForm (GoodsReceivingPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
LogisticsDataService.getDeliveryForm |
语法 |
public List getDeliveryForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
LogisticsDataService.updateDeliveryForm |
语法 |
public void updateDeliveryForm (DeliveryPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
LogisticsDataService. addDeliveryForm |
语法 |
public void addDeliveryForm (DeliveryPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
LogisticsDataService.getArrivalForm |
语法 |
public List getArrivalForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
LogisticsDataService.updateArrivalForm |
语法 |
public void updateArrivalForm (ArrivalPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
LogisticsDataService. addArrivalForm |
语法 |
public void addArrivalForm (ArrivalPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
LogisticsDataService.getRecordtransForm |
语法 |
public List getRecordtransForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
LogisticsDataService.updateRecordtransForm |
语法 |
public void updateRecordtransForm (RecordtransPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
LogisticsDataService. addRecordtransForm |
语法 |
public void addRecordtransForm (RecordtransPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
LogisticsDataService.getCenterLoadForm |
语法 |
public List getCenterLoadForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
LogisticsDataService.updateCenterLoadForm |
语法 |
public void updateCenterLoadForm (CenterloadPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
LogisticsDataService. addCenterLoadForm |
语法 |
public void addCenterLoadForm (CenterloadPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
AccountData 模块的接口规范
提供的服务(供接口) |
||
AccountService.addAccount |
语法 |
public void addAccount(AccountPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
AccountService.deleteAccount |
语法 |
public void deleteAccount(AccountPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
删除一个 po |
|
AccountService.updateAccount |
语法 |
public void updateAccount(AccountPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
AccountService.findAccount |
语法 |
public AccountPO findAccount(String accountname)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 accountname 进行查找返回相应的 AccountPO 结果 |
|
AccountService.addNewBook |
语法 |
public void addNewbook(NewbookPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
AccountService.findNewBook |
语法 |
public List findNewBook(long time)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 time 进行查找返回相应的 List结果 |
BalanceData 模块的接口规范
提供的服务(供接口) |
||
BalanceDataService. addBalanceview |
语法 |
public void addBalanceview (BalanceviewPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
BalanceDataService.getBalanceview |
语法 |
public BalanceviewPO getBalanceview ()throws RemoteException |
前置条件 |
无 |
|
后置条件 |
生成并返回的 BalanceviewPO 结果 |
|
BalanceDataService. addRecordcollectForm |
语法 |
public void addRecordcollectForm (RecordcollectPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
BalanceDataService.getRecordcollectForm |
语法 |
public List getRecordcollectForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
BalanceDataService.updateRecordcollectForm |
语法 |
public void updateRecordcollectForm (RecordcollectPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
BalanceDataService.getRecordpayForm |
语法 |
public List getRecordpayForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
BalanceDataService.updateRecordpayForm |
语法 |
public void updateRecordpayForm (RecordpayPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
BalanceDataService. addRecordpayForm |
语法 |
public void addRecordpayForm (RecordpayPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
BalanceDataService.getDebitnoteForm |
语法 |
public List getDebitnoteForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
BalanceDataService.updateDebitnoteForm |
语法 |
public void updateDebitnoteForm (DebitnotePO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
BalanceDataService. addDebitnoteForm |
语法 |
public void addDebitnoteForm (DebitnotePO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
BalanceDataService. getallRecordcollectForm |
语法 |
public List getallRecordcollectForm ()throws RemoteException |
前置条件 |
无 |
|
后置条件 |
返回数据库中的 List结果 |
|
BalanceDataService. getallRecordpayForm |
语法 |
public List getallRecordpayForm ()throws RemoteException |
前置条件 |
无 |
|
后置条件 |
返回数据库中的 List结果 |
OrdersData 模块的接口规范
提供的服务(供接口) |
||
OrdersDataService. addOrderForm |
语法 |
public void addOrderForm (OrdersPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
OrdersDataService.getOrderForm |
语法 |
public OrdersPO getOrderForm (String ordernum)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 ordernum 进行查找返回相应的 OrdersPO 结果 |
|
OrdersDataService.getOrderForm |
语法 |
public List getOrderForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
OrdersDataService.updateOrderForm |
语法 |
public void updateOrderForm (OrdersPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
ManagersData 模块的接口规范
提供的服务(供接口) |
||
ManagersDataService. addConstants |
语法 |
public void addConstants (ConstantsPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
ManagersDataService. deleteConstants |
语法 |
public void deleteConstants (ConstantsPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
删除一个 PO |
|
ManagersDataService. updateConstants |
语法 |
public void updateConstants (ConstantsPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
ManagersDataService. findConstants |
语法 |
public ConstantsPO findConstants(long id)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 id 进行查找返回相应的 ConstantsPO 结果 |
|
ManagersDataService. updateSalary |
语法 |
public void updateSalary (SalaryPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
ManagersDataService. findSalary |
语法 |
public SalaryPO findSalary (long id)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 id 进行查找返回相应的 SalaryPO 结果 |
|
ManagersDataService. addOrganization |
语法 |
public void addOrganization (OrganizationPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
ManagersDataService. deleteOrganization |
语法 |
public void deleteOrganization (OrganizationPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
删除一个 PO |
|
ManagersDataService. updateOrganization |
语法 |
public void updateOrganization (OrganizationPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
ManagerDataService.findOrganization |
语法 |
public OrganizationPO findOrganization(long organizationid)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 organizationid 进行查找返回相应的 OrganizationPO 结果 |
|
ManagersDataService. addStaff |
语法 |
public void addStaff (StaffPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
ManagersDataService. deleteStaff |
语法 |
public void deleteStaff (StaffPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
删除一个 PO |
|
ManagersDataService. updateStaff |
语法 |
public void updateStaff (StaffPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
ManagerDataService.findStaff |
语法 |
public StaffPO findStaff(long Staffid)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 Staffid 进行查找返回相应的 StaffPO 结果 |
CommodityData 模块的接口规范
提供的服务(供接口) |
||
CommodityDataService. addStockinForm |
语法 |
public void addStockinForm (StockinPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
CommodityDataService.getStockinForm |
语法 |
public List getStockinForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
CommodityDataService.updateStockinForm |
语法 |
public void updateStockinForm (StockinPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
CommodityDataService. addStockoutForm |
语法 |
public void addStockoutForm (StockoutPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
CommodityDataService.getStockoutForm |
语法 |
public List getStockoutForm (Formstate state)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 state 进行查找返回相应的 List结果 |
|
CommodityDataService.updateStockoutForm |
语法 |
public void updateStockoutForm (StockoutPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
CommodityDataService.getallCommodity |
语法 |
public List getallCommodity()throws RemoteException |
前置条件 |
无 |
|
后置条件 |
返回数据库中的 List |
|
CommodityDataService.getallCommodityBetween |
语法 |
public List getCommodityBetween(long starttime,long endtime)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
返回数据库中所有入库时间在 starttime 和 endtime 之间的 CommodityPO |
|
CommodityDataService.addnew |
语法 |
public void addnew(CommodityPO po) throws RemoteException |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
CommodityDataService.setOuttime |
语法 |
public void setOuttime(CommodityPO po,long endtime) throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
|
CommodityDataService.changeLocation |
语法 |
public void changeLocation(CommodityPO Po, long blocknum, long linenum, long shelfnum, long locationnum)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
UsersData 模块的接口规范
提供的服务(供接口) |
||
UserDataService.add |
语法 |
public void add(UserPO po)throws RemoteException; |
前置条件 |
同样 ID 的 po 在 Mapper 中不存在 |
|
后置条件 |
在数据库中增加一个 po 记录 |
|
UserDataService.delete |
语法 |
public void delete (UserPO po)throws RemoteException |
前置条件 |
数据库中存在同样 ID 的 po |
|
后置条件 |
删除一个 po |
|
UserDataService.find |
语法 |
public UserPO find(long id)throws RemoteException |
前置条件 |
无 |
|
后置条件 |
按 id 进行查找返回相应的 UserPO 结果 |
|
UserDataService.update |
语法 |
public void update (UserPO po)throws RemoteException |
前置条件 |
在数据库中存在同样 ID 的 po |
|
后置条件 |
更新一个 po |
6.信息视角
6.1 数据持久化对象
系统的 PO 类就是对应的相关的实体类,在此只做简单的介绍。
UserPO 类包含用户的用户名 username、密码 code、权限属性 level、id。
LogisticsPO 类包含快件的货运状态、历史轨迹属性。订单编号 ordernum
OrdersPO 类包含订单的寄件人姓名 sendername、住址 senderaddress、单位 senderunit、电话 senderphone、手机 sendercellphone,收件人姓名 receivername、住址 receiveraddress、单位 receiverunit、电话 receiverphone、手机 receivercellphone,原件数 numbers、实际重量 weight、体积 volume、内件品名 productname,尺寸 productsize,包装费 packagefee,费用合计 totalfee,订单条形码号 ordercode,快递类型 ordertype、收件编号 codeofreceiving、收件人 receiver、收件日期属性 receivingtime。
LoadPO 类包含快件的装车日期 loadtime、本营业厅编号 hallcode、汽运编号 motorcode、到达地 destination、车辆代号 vehiclecode、监装员 supervisor、押运员 supercargo、本次装箱所有订单条形码号 allbarcode、运费 fee、单据状态属性 documentstate。
GoodsRecevingPO 类包含快件的到达营业厅日期 arrivaltime、中转单编号 transcode、出发地 departureplace、货物到达状态 arrivalstate、单据状态属性 documentstate。
DeliveryPO 类包含快件的到达日期 arrivaltime、托运订单条形码 barcode、派件员信息 delivorinfo、单据状态属性 documentstate。
RecordcollectPO 类包含收款日期 collectiontime、收款金额 collectionsum、收款营业厅业务员 collectionman、对应的所有快递订单条形码号 allordercode、单据状态属性 documentstate。
VehiclesPO 类包含车辆代号 vehiclecode、车牌号 vehiclenum、服役时间 extendtime 属性。
DriversPO 类包含司机的编号 drivercode、姓名 drivername、出生日期 birthtime、身份证号 identifiercode、手机 cellphone、性别 drivergender、行驶证期限属性 timelimit。
ArrivalPO 类包含中转中心编号 centercode、到达日期 arrivaltime、中转单编号 transcode、出发地 departure、货物到达状态 arrivalstate、单据状态属性 documentstate。
RecordtransPO 类包含装车日期 loadtime、本中转中心中转单编号 transcode,航班号 flightcode、出发地 departure、到达地 destinaton、货柜号 countercode、监装员 supervisor、本次装箱所有托运单号 allcode、运费 fee、单据状态属性 documentstate。
CenterloadPO 类装车日期 loadtime、本中转中心汽运编号 motorcode、到达地 destination、车辆代号 vehiclecode、监装员 supervisor、押运员 supercargo、本次装箱所有订单条形码号 allbarcode、运费 fee、单据状态属性 documentstate。
CommodityPO 类包含快件的编号 ordercode、入库日期 intime、区号 blocknum、排号 linenum、架号 shelfnum、位号 locationnum、出库日期 outtime 属性。
StockinPO 类包含快件的编号 ordercode、入库日期 intime、区号 blocknum、排号 linenum、架号 shelfnum、位号 locationnum、单据状态属性 documentstate。
StockoutPO 类包含快件的编号 ordercode、出库日期 outtime、目的地 destination、装运形式 loadform、中转单编号 transcode 或者汽运编号 motorcode、单据状态属性 documentstate。
AccountPO 类包含账户的名称 accountname、金额属性 accountsum。
DebitnotePO 类包含收款日期 debittime、收款单位 debitunit、收款人 debitor、收款方 debitside、收款金额 sum、收款地点 location、单据状态属性 documentstate。
RecordpayPO 类包含付款日期 paytime、付款金额 paysum、付款人 payman、付款账号 payaccount、租金 rent、运费 fee、人员工资 salary、奖励 reward、备注 remark、单据状态属性 documentstate。
BalanceviewPO 类包含总收入 income、总支出 pay、总利润属性 allbenefit。
NewbookPO 类包含机构 organization、人员 staff、车辆 vehicle、库存 commodity、 银行账户名称 accountname、金额属性 accountsum。
OrganizationPO 类包含机构名称 name、机构类型 type 属性。
StaffPO 类包含人员姓名 name、职业 job 属性。
ConstantsPO 类包含城市距离 distance、价格 price 等属性。
SalaryPO 类包含薪水策略属性。
持久化用户对象 UserPO 的定义如图 14 所示。
图 14 持久化用户对象 UserPO 的定义
6.2 Txt 持久化对象
Txt 数据保持格式以 DriversPO 为例。每行分别对应编号、姓名、出生日期、身份证号、手机、性别、行驶证期限。中间用“:”隔开。如下所示:
025001002:张三:19800403:310228198004035430:13123456789:男:20160809
025002012:王三:19830813:310228198308134420:13123456889:男:20170516
6.3 数据库表
数据库中包含 UserPO 表、LogisticsPO 表、OrdersPO 表、LoadPO 表、GoodsRecevingPO 表、DeliveryPO 表、RecordcollectPO 表、VehiclesPO 表、DriversPO 表、ArrivalPO 表、RecordtransPO 表、CenterloadPO 表、CommodityPO 表、StockinPO 表、StockoutPO 表、AccountPO 表、DebitnotePO 表、RecordpayPO 表、StocktakingPO 表、NewBookPO 表、OrganizationPO 表、StaffPO 表、ConstantsPO 表、SalaryPO 表。
DeliveryPO 类包含快件的到达日期 arrivaltime、托运订单条形码 barcode、派件员信息 delivorinfo、单据状态属性 documentstate。
RecordcollectPO 类包含收款日期 collectiontime、收款金额 collectionsum、收款营业厅业务员 collectionman、对应的所有快递订单条形码号 allordercode、单据状态属性 documentstate。
VehiclesPO 类包含车辆代号、车牌号、服役时间、车辆图片属性。
DriversPO 类包含司机的编号 drivercode、姓名 drivername、出生日期 birthtime、身份证号 identifiercode、手机 cellphone、性别 drivergender、行驶证期限属性 timelimit。
ArrivalPO 类包含中转中心编号 centercode、到达日期 arrivaltime、中转单编号 transcode、出发地 departure、货物到达状态 arrivalstate、单据状态属性 documentstate。
RecordtransPO 类包含装车日期 loadtime、本中转中心中转单编号 transcode,航班号 flightcode、出发地 departure、到达地 destinaiton、货柜号 countercode、监装员 supervisor、本次装箱所有托运单号 allcode、运费 fee、单据状态属性 documentstate。
CenterloadPO 类装车日期 loadtime、本中转中心汽运编号 motorcode、到达地 destination、车辆代号 vehiclecode、监装员 supervisor、押运员 supercargo、本次装箱所有订单条形码号 allbarcode、运费 fee、单据状态属性 documentstate。
CommodityPO 类包含快件的编号 ordercode、入库日期 intime、区号 blocknum、排号 linenum、架号 shelfnum、位号 locationnum、出库日期 outtime、目的地 destination、装运形式 loadform、中转单编号 transcode 或者汽运编号 motorcode、单据状态属性 documentstate。
AccountPO 类包含账户的名称 accountname、金额属性 accountsum。
DebitnotePO 类包含收款日期 debittime、收款单位 debitunit、收款人 debitor、收款方 debitside、收款金额 sum、收款地点 location、单据状态属性 documentstate。
RecordpayPO 类包含付款日期 paytime、付款金额 paysum、付款人 payman、付款账号 payaccount、条目 paylist、备注 remark、单据状态属性 documentstate。
//BalanceviewPO 类包含总收入 income、总支出 pay、总利润属性 allbenefit。
NewBookPO 类包含机构 organization、人员 staff、车辆 vehicle、库存 comodity、 银行账户名称 accountname、金额属性 accountsum。
OrganizationPO 类包含机构 organization、人员信息属性 staff()。
ConstantsPO 类包含城市距离 distance、价格 price 等属性。
SalaryPO 类包含薪水策略属性。
持久化用户对象 UserPO 的定义如图 14 所示。
图 14 持久化用户对象 UserPO 的定义