基于Java实现(控制台)智慧物流质询系统【100011278】

互联网+智慧物流质询系统

实验原理:

实验一:

  • 通过物品信息计算物流方式以及发货顺序,然后用树这种数据结构存储这些物品信息,用邻接矩阵存储路线信息,并利用 dijstra 算法求最短路。

实验二:

  • 利用文件锁使得进程间互斥对文件进行访问,实现同时写与同时读写的互斥操作。保证文件的一致性。

实验三:

  • 通过词法分析器,语法分析器以及语义分析器对输入的 sql 进行解析并转化成相应的中间代码。

实验四:

  • 整合前三个实验,使之成为一个系统,并能通过它对数据进行增删查改以及物流物品信息查看。

实验目的:

实验一:

  • 根据物品信息综合计算物流物品的优先级别,根据物流优先级别排序物流物品,根据排序结果对物流物品进行逐个发货。

  • 根据物流物品的物流条件信息,归类物流物品到物流方案类型,物流方案类型可包括:价格最小物流方案,时间最短物流方案、综合最优方案、航空物流方案等。并运用树型结构存储所有的物流物品到划分的物流方案中。

  • 根据给定的物流节点信息,计算各类物流方案下的物流最短路径

  • 根据物流最短路径,物流方案和物流优先级发送货物

实验二:

  • 编程实现文件中记录数据的存储、读写和记录的简单查询与索引查询函数。能够实现单用户和进行对文件数据的写入与查询。

    扫描二维码关注公众号,回复: 15672598 查看本文章
  • 设计实现数据表的文件存储方式,能在文件中存储多张数据表,并写入和查询指定 数据表中的记录。

  • 实现多进程对文件记录的互斥写入与查询访问,保证记录数据的一致性。

  • 基于锁机制保障多用户对文件中记录数据的写如与查询一致性操作。

实验三:

  • 构建词法、语法及语义分析程序实现部分 SQL 语句的解析,包括

  • Select语句, Insert语句和Update语句,创建表语句的解析。

  • 构建相应的语义子程序。

  • 将于语义子程序对接底层实验2中所实现的各个数据操作函数,实现增删查改功能。

实验四:

  • 结合实验3,2构建物流节点信息表,实现物流节点信息的数据库存储

  • 结合实验3,2,构建物品信息表,实现物品信息的存储

  • 结合实验3以SQL语句,对物流节点信息进行增删改查

  • 结合实验3以SQL语句,对物品信息进行增删改查

  • 结合实验1,实现物品的优先级排序和物流方案分类

  • 节点信息会动态变化,因此结合实验1,每个物品需要动态计算物流最短路径的实现。(8)模拟物品的物流状态,用户可以对物件的物流状态进行查询。

实验内容:

实验一:最优物流路线计算实验

数据存储,对于物流物品及不同方案路径的信息使用excel进行存储,使用Java的poi包进行i/o操作。

数据生成,对于物流物品的信息设置包括id、名称、发货地、目的地、类型、客户等级、收货时间以及一个标志位作为软删除的标志。id 的属性从 1 开始递增,物品名称使用随机数a-z进行生成,发货地和目的地使用随机数A-G进行生成,类型和客户等级使用一定范围的随机数字生成,收货时间也是使用相应公式随机生成2018-4-1至2018-4-30的范围,标志位1则认为物品存在,为0则认为物品删除,生成物流物品信息共1000条;对于不同方案的路径信息也使用随机数0-9进行生成,存储为多个二维邻接矩阵,对于路径为0的节点使用10000 来代替,代表不可达,根据价格最小物流方案,时间最短物流方案、综合最优方案、航空物流方案四个方案共生成4个邻接矩阵。

数据的预处理,考虑到发货地和目的地随机生成可能导致两者相同,将相同的随机一方改写成H,更新路径矩阵。

具体功能实现:

物品的优先级计算,使用线性结构存储读取的数据。根据物品所属地对地区进行选择。

根据物流物品的类型、客户等级、收货时间赋予一定的权重计算物品的优先级,并且按照降序对物品的优先级进行排序。

根据物流物品的类型,将物品归类为不同的物流方案,将 type=1 的物品归类到价格最小物流方案,将type=2的物品归类到时间最短物流方案,以此类推。并且可以根据优先级输出该方案物品。

通过 Dijkstra 算法计算各类物流方案下的物流最短路径。

可根据物品的 ID 进行发货。

实验二:多进程多用户文件一致性读写访问设计实现

实验二在上述实验的表格上实现增删改查及多用户文件一致性读写访问。主要使用 Java 的 poi 实现对表格的增删查改,以及使用 java.nio.channels.FileChannel 类实现进程间通信以及 java.nio.channels.FileLock 类实现文件加锁,多用户访问的实现主要在逻辑上,即每次更改数据前都要读取一次最新的数据到内存中,而不能在程序开始时将数据读取到内存中,以后保持不变,这是不可取的。

文件读取

查询数据

增加数据

修改数据

删除数据,数据库中标志位置 0

多进程多用户文件一致性读写的测试使用主动的程序停滞 10s 来模拟高并发的写文件。

此时启动第一个程序进行写文件,第二个程序进行文件操作的时候会报以下错误。

对该错误进行捕捉,打印“…”,并主动停等 100ms 再进行文件操作,直到文件操作成功为止。

实验三:SQL 解析器设计实现

SQL解析器的设计是基于 JSqlParser 进行实现,并与实验 2 的接口进行对接。

Select 语句

select id, name, origin from goodsList where id > 5 and name <= b and origin >= D 

select * from goodsList where id > 5 and name <= b and origin >= D 

Insert 语句

INSERT INTO goodsList VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing', '33', '33') 

INSERT INTO goodsList (type, name) VALUES (type, name) 

Update 语句

UPDATE goodsList SET origin = B, type = 2 WHERE id = 6 

Delete 语句

DELETE FROM goodsList WHERE id = 6 and type = 2 

创建表 createTable 语句

Create TABLE Persons(Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255)) 

实验四:互联网+智慧物流质询系统设计实现

实验四将之前的三个实验进行合并,由于之前三个实验都是使用松耦合的方式进行开发,并且前三个实验实现的功能与第四个完全符合,因此实验四将前三个实验分为物流管理系统、数据管理系统以及数据库操作三个模块,并通过调用不同模块的 main 函数进行操作。

因逻辑基本相同,故不再赘述。

实验器材(设备、元器件):

JAVA及相关类包,PC电脑,Windows操作系统,IDEA集成开发环境。

♻️ 资源

在这里插入图片描述

大小: 1.77MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87575172
注:如当前文章或代码侵犯了您的权益,请私信作者删除!

猜你喜欢

转载自blog.csdn.net/s1t16/article/details/131674828
今日推荐