JAVA WEB期末项目第二阶段成果

我们做的系统是一个基于Java web与MySQL的食堂订餐系统
班级: 计科二班
小组成员:李鉴宣、袁超

1、开发环境

  • 开发编辑器使用:Visual Studio Code
  • 数据库使用:MySQL8.0
  • 项目打包工具:maven3以上
  • 项目本地部署测试:Tomcat8以上
  • 在开发上使用了一个Jleopard-MVC 基于Servlet 3.1改造的,servlet快速开发脚手架详细用法请参考:
    https://github.com/chg122345/jleopard

http://www.jleopard.org/

2、实现的基本功能功能

用户端功能

  • 实现学生在线选座
  • 实现学生在线选菜
  • 实现将所选菜添加进餐车并完成在线下单
  • 查看自己选购的菜品

管理员功能

  • 实现管理员后台增减餐桌数量
  • 实现管理员后台更改菜的种类
  • 实现管理员后台增减更新菜品信息
  • 实现后台显示学生下单信息

2、项目结构

  • Java文件
    • config文件夹:关于项目的数据库配置信息
    • controller文件夹:包含一些管理员的操作
    • dao文件夹:数据持久层
    • entritys文件夹:实体类
    • filter文件夹:过滤器
    • service文件夹:业务逻辑层
    • util文件夹:项目工具包
  • webapp目录
    • app目录:前台页面
    • sys目录:后台页面

4、项目关键代码

数据库配置信息 DemoConfigConstant.java:

public interface DemoConfigConstant {

    String BASE_PACKAGE = "org.jleopard.ihotel";

    String CONTROLLER_PACKAGE = "org.jleopard.ihotel.controller";

    String ENTITY_PACKAGE = "org.jleopard.ihotel.entity";

    String DATASOURCE_URL = "jdbc:mysql://127.0.0.1:3306/ihotel?characterEncoding=UTF-8";

    String DATASOURCE_USER = "root";

    String DATASOURCE_PASSWORD = "123456";

    String DATASOURCE_DRIVER = "com.mysql.jdbc.Driver";
}

业务逻辑层:
点餐餐桌设计代码片段:DinnerTableService.java

@Service
public class DinnerTableService {


   @Inject
    private DinnerTableDao dao ;

    public int add(DinnerTable dt) {
       return dao.insert(dt);

    }

    public int delete(Integer id) {
        return dao.deleteById(id);

    }

    public int update(DinnerTable dt) {
        return dao.update(dt);

    }

    public List<DinnerTable> query(DinnerTable dt) {
        return dao.select(dt);
    }

    public List<DinnerTable> query() {
        return dao.select();
    }

    public DinnerTable changeState(Integer id) {
        DinnerTable var1 = new DinnerTable();
        var1.setId(id);
        DinnerTable table = dao.select(var1) == null ? null : dao.select(var1).get(0);
        Byte status = table.getTableStatus();
        if (status == 0) {
            status = 1;
            Date date = new Date();
            table.setOrderDate(date);
        } else if (status == 1) {
            status = 0;
            table.setOrderDate(null);
        }
        table.setTableStatus(status);
        dao.update(table);
        return table;
    }


    public DinnerTable findById(Integer id) {
        DinnerTable var1 = new DinnerTable();
        var1.setId(id);
        DinnerTable table = dao.select(var1) == null ? null : dao.select(var1).get(0);
        return table;
    }

    public int quitTable(Integer id) {
        DinnerTable var1 = new DinnerTable();
        var1.setId(id);
        var1.setTableStatus(Byte.valueOf("0"));
        var1.setOrderDate(null);
        int temp = dao.update(var1);
        return temp;
    }


}

菜品信息设计代码片段:FoodService.java

@Service
public class FoodService {

    @Inject
    private FoodDao dao;

    public int delete(Integer id) {
        return dao.deleteById(id);

    }

    public int update(Food food) {
        return dao.update(food);
    }

    public List<Food> query() {
        return dao.select();
    }

    public List<Food> query(Food food) {
        return dao.select(food);
    }

    public List<Food> findByType(Integer type) {

        Food var1 = new Food();
        var1.setFoodType_id(new FoodType().initId(type));
        return dao.select(var1);
    }

    public int add(Food food) {
        return dao.insert(food);

    }

    public Food findById(Integer id) {
        Food var1 = new Food();
        var1.setId(id);
        List<Food> list = query(var1);
        return list == null ? null : list.get(0);
    }

    public PageInfo getAll(int page, int pageSize,String where, Serializable args) {
        return dao.selectToPage(page, pageSize,where,args);
    }


}

食物分类设计代码片段:

@Service
public class FoodTypeService {


    @Inject
    private FoodTypeDao dao;

    public int add(FoodType foodType) {
        return dao.insert(foodType);

    }

    public int update(FoodType foodType) {
        return dao.update(foodType);

    }

    public int delete(int id) {
        return dao.deleteById(id);
    }

    public FoodType findById(Integer id) {
        FoodType var1 = new FoodType();
        var1.setId(id);
        List<FoodType> list = dao.select(var1);
        return list == null ? null : list.get(0);
    }

    public List<FoodType> query() {
        return dao.select();
    }

    public List<FoodType> query(FoodType foodType) {
        return dao.select(foodType);
    }

    public Integer getFirstType() {
        List<FoodType> list = query();
        return list == null ? null : list.get(0).getId();
    }


}

选菜并加入餐车完成下单逻辑实现:
OrderDetailService.java

@Service
public class OrderDetailService {

	@Inject
	private OrderDetialDao dao;

	public int add(OrderDetail od) {
		return dao.insert(od);

	}

	public List<OrderDetail> query() {
		return dao.select();
	}

	public List<OrderDetail> findByOrderid(Integer id) {
		return dao.select("orderid = ?",id);
	}

}

OrdersService.java

@Service
public class OrdersService {

	@Inject
    private OrdersDao dao;

	public int update(Orders orders) {
		return dao.update(orders);

	}

	public List<Orders> query() {
		return dao.select(new Orders());
	}

	public int add(Orders orders) {
		return dao.insert(orders);

	}

	public int getCount() {
		return getAll(1,1,null,null).getTotalRows();
	}

	public PageInfo getAll(int page, int pageSize, String where, Serializable args) {
		return dao.selectToPage(page,pageSize,where,args);
	}

	public List<Orders> query(Orders orders) {
		return dao.select(orders);
	}
}

管理员登陆注册功能逻辑代码:
OrdersService.java


@Service
public class UserService {

    @Inject
    private UserDao userDao;

    /**
     * 验证邮箱是否存在
     * 存在 --> true
     *
     * @param email
     * @return
     */
    public boolean checkEmail(String email) {
        User user = new User();
        user.setEmail(email);
        List<User> select = userDao.select(user);
        return CollectionUtil.isNotEmpty(select);
    }

    public User login(String email, String password) {
        User user = new User();
        user.setEmail(email);
        user.setPassword(password);
        List<User> select = userDao.select(user);
        return CollectionUtil.isNotEmpty(select) ? select.get(0) : null;
    }

    public int save(User user){
        return userDao.insert(user);
    }
}

5、项目数据库详细设计

food食物信息表:

foodtype食物分类信息表:

dinnertable食堂餐桌信息表:

orderdetails和orders订单信息表:


user用户信息表

7、项目部分功能截图

原文地址:https://www.cnblogs.com/yuanchao-blog/p/10935269.html