0 项目说明
基于Java web的物流配送管理系统
提示:适合用于课程设计或毕业设计,工作量达标,源码开放
1 项目各文件介绍
- Logistics_Manage_System 项目主文件,也就是该项目你需要导入运行的文件
- hibernate_mapping这个项目文件,是我把这其中的hibernate单独另外拿出来对hibernate进行讲解分析,这个项目文件与物流的项目没有具体关系,只是对hibernate的一个案例分析,运行的话每一个包下都有main主函数,可以直接进行java类的mian函数运行即可,里面有数据库表的一对一、一对多以及多对多的数据关系,可以用来对hibernate学习的参考使用
- img 用于有关项目的功能截图以及存放文件
- test 这个文件是当时我对项目的一些部分功能测试,可以不做考虑
- word 有关该项目的部分文档设计
2 项目运行准备工作
- 导入Logistics_Manage_System该项目文件
- 数据库文件为conf目录下的db.properties,这是导入项目后需要看的第一个文件,也是你项目运行需要唯一注意的文件
- 项目启动前,看一下db.properties这个文件是不是和你本地的数据库统一(用户名以及密码),我用的是mysql数据库,之后你要创建一个名为logistics的数据库,然后启动项目就好了,数据库表的工作就交给hibernate,它会为你自动创建数据库表的。至此项目启动成功。
- 因为该项目没有使用Maven工程的构建方式,所以你不需要考虑jar包的问题,项目中所涉及到的jar包都放在了WEB-INF下的lib目录文件下
- 完成以上的几点你的项目就已经成功跑起来了
3 项目目录结构介绍
|-- build // 配置文件无需考虑
|-- conf // 项目有关的配置文件
| |-- applicationContext.xml // 应用上下文配置文件
| |-- applicationContext-beans.xml // JavaBean配置文件
| |-- db.properties // 数据库配置文件
| |-- hibernate.cfg.xml // hibernate配置文件
| |-- struts.xml // 与Struts有关的配置
|-- src // 源码目录
| |-- com
| |-- wt
| |-- action
| |-- AdminAction.java // 管理员处理类
| |-- CreateImageAction.java // 验证码生成处理类
| |-- OrderAction.java // 订单处理类
| |-- UserAction.java // 用户处理类
| |-- VerifyCodeAction.java // 另一种验证码生成处理类
| |-- dao
| |-- AdminDao.java // 管理员处理dao层部分
| |-- BaseDao.java // 可被其他dao层重复利用进行减少代码冗余的dao层部分
| |-- OrderDao.java // 订单处理dao层部分
| |-- UserDao.java // 用户处理dao层部分
| |-- entity
| |-- Admin.java // 管理员实体类
| |-- Admin.hbm.xml
| |-- Book.java // 书籍实体类
| |-- Book.hbm.xml
| |-- Order.java // 订单实体类
| |-- Order.hbm.xml
| |-- User.java // 用户实体类
| |-- User.hbm.xml
| |-- Warehouse.java // 仓库实体类
| |-- Warehouse.hbm.xml
| |-- fileHandle
| |-- FileHandle.java // 文件处理类
| |-- interceptor
| |-- AdminLoginInterceptor.java // 管理员拦截器处理类
| |-- UserLoginInterceptor.java // 用户登录拦截器处理类
| |-- UserLoginLogisticsInterceptor.java // 用户登录物流配送中心拦截器处理类
| |-- UserLoginShoppingInfoInterceptor.java // 用户登录商城拦截器处理类
| |-- jsonHandle
| |-- AdminLoginJsonHandle.java // 管理员登录json数据处理类
| |-- ApplyResetPasswordJsonHandle.java // 邮件发送json数据处理类
| |-- LoginJsonHandle.java // 用户登录json数据处理类
| |-- RegisterJsonHandle.java // 注册用户json数据处理类
| |-- ResetPasswordJsonHandle.java // 修改密码json数据处理类
| |-- UserValidate.java // 用户验证处理类
| |-- service
| |-- AdminService.java // 管理员service层处理类
| |-- OrderService.java // 订单service层处理类
| |-- UserService.java // 用户service层处理类
| |-- utilMail
| |-- ApplyResetPassword.java // 发送邮件修改密码模拟类
| |-- MailSenderInfo.java // 邮件注册信息
| |-- MyAuthenticator.java // 获取发送邮件者信息
| |-- SimpleMailSender.java // 以文本格式发送邮件
| |-- Test.java // 邮件发送测试类,可单独运行进行邮件发送测试
| |-- template
| |-- emailTemplate.vm // 发送邮件的模板
| |-- WebContent // 页面入口文件由于其中涉及的都是前端页面以及js、css部分这里不做过多介绍,根据命名也能很好的推测出
| |-- css // 第三方提供的css
| |-- js // 第三方提供的js
| |-- template
| |-- template.ftl // 下载word文档的模板
| |-- static // 特定页面使用的手写js以及css
| |-- css
| |-- js
| |-- WEB-INF
| | -- lib // jar 包存放位置
| | -- web.xml // 项目及工具的依赖配置文件
|-- README.md // 说明
4 效果图展示
首页展示
管理员登录页面
管理员管理用户信息页面
订单配送中心页面
5 项目源码
package com.wt.action;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.RequestAware;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
import com.wt.entity.Book;
import com.wt.entity.Order;
import com.wt.entity.Warehouse;
import com.wt.service.OrderService;
public class OrderAction extends ActionSupport implements RequestAware,
ModelDriven<Book>, Preparable{
private static final long serialVersionUID = 1L;
private OrderService orderService;
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)context.get(ServletActionContext.HTTP_REQUEST);
HttpSession session = request.getSession();
// ����Ϊ��ȡ����
String userName = (String) session.getAttribute("username");
String bookname = request.getParameter("bookname");
public void setOrderService(OrderService orderService) {
this.orderService = orderService;
}
// ����Ϊ��ѯ�û��Ĺ����¼
public void query() {
// ����Ϊ��ѯ�û��Ķ����б�
List<Order> orders = orderService.findOrder(userName);
List<Book> books = new ArrayList<>();
for (Order order : orders) {
books.add(order.getBook());
}
// ����Ϊͼ���б�
for (Book book : books) {
System.out.println("book.getBook_name() --- " + book.getBook_name());
System.out.println("book.getPrice() --- " + book.getPrice());
}
if(books != null){
Map<String, Object> mapSession = ActionContext.getContext().getSession();
mapSession.put("books", books);
}
}
// ����Ϊ��ѯ�û��Ĺ����¼
public void logisticsQuery() {
// ����Ϊ��ѯ�û��Ķ����б�
List<Order> orders = orderService.findOrder(userName);
List<Book> books = new ArrayList<>();
for (Order order : orders) {
books.add(order.getBook());
}
// ����Ϊͼ���б�
// for (Book book : books) {
// System.out.println("book.getBook_name() --- " + book.getBook_name());
// System.out.println("book.getPrice() --- " + book.getPrice());
// }
// 0 Ϊ��������1Ϊ���䡢2Ϊ���͡�3Ϊǩ��
// 0 ������
List<Book> pendingBooks = new ArrayList<>();
for (Book book : books) {
if(book.getBook_state() == 0){
pendingBooks.add(book);
}
}
// 1����
List<Book> transportBooks = new ArrayList<>();
for (Book book : books) {
if(book.getBook_state() == 1){
transportBooks.add(book);
}
}
// 2����
List<Book> sendBooks = new ArrayList<>();
for (Book book : books) {
if(book.getBook_state() == 2){
sendBooks.add(book);
}
}
// 3Ϊǩ��
List<Book> signBooks = new ArrayList<>();
for (Book book : books) {
if(book.getBook_state() == 3){
signBooks.add(book);
}
}
if(books != null){
Map<String, Object> mapSession = ActionContext.getContext().getSession();
mapSession.put("books", books);
mapSession.put("pendingBooks", pendingBooks);
mapSession.put("transportBooks", transportBooks);
mapSession.put("sendBooks", sendBooks);
mapSession.put("signBooks", signBooks);
}
}
public String save(){
System.out.println("saveOrder");
String StrQuantity = request.getParameter("quantity");
int quantity = Integer.parseInt(StrQuantity);
String StrPrice = request.getParameter("price");
int unit_price = Integer.parseInt(StrPrice);
int price = quantity * unit_price;
// ��ȡ�ֿ��е�ͼ��
Warehouse w_book = orderService.findWarehouseBook(bookname);
int w_quantity = w_book.getQuantity();
String w_q = Integer.toString(w_quantity);
w_quantity = w_quantity - quantity;
if(w_quantity < 0){
session.setAttribute("notEnough", "notEnough");
session.setAttribute("w_q", w_q);
session.setAttribute("bookname", bookname);
System.out.println("��治��");
}
else{
session.removeAttribute("notEnough");
session.removeAttribute(w_q);
session.removeAttribute(bookname);
// �½�����
Order order = new Order();
Book book = new Book();
book.setBook_name(bookname);
book.setQuantity(quantity);
book.setPrice(price);
book.setBook_state(0);
order.setUser_name(userName);
orderService.saveOrUpdateBook(book);
order.setBook(book);
orderService.saveOrUpdateOrder(order);
// ���²ֿ��е�ͼ����Ŀ
w_book.setQuantity(w_quantity);
orderService.saveOrUpdateWarehouseBook(w_book);
}
query();
return "save";
}
public String shoppingInfo(){
query();
return "shoppingInfo";
}
public String logisticsInfo(){
logisticsQuery();
return "logisticsInfo";
}
@Override
public void setRequest(Map<String, Object> arg0) {
// TODO Auto-generated method stub
}
@Override
public void prepare() throws Exception {
// TODO Auto-generated method stub
}
@Override
public Book getModel() {
// TODO Auto-generated method stub
return null;
}
}
6 最后
**项目分享: ** https://gitee.com/asoonis/htw