我们做的系统是一个基于Java web与MySQL的食堂订餐系统
班级: 计科二班
小组成员:李鉴宣、袁超
1、开发环境
- 开发编辑器使用:Visual Studio Code
- 数据库使用:MySQL8.0
- 项目打包工具:maven3以上
- 项目本地部署测试:Tomcat8以上
- 在开发上使用了一个Jleopard-MVC 基于Servlet 3.1改造的,servlet快速开发脚手架详细用法请参考:
https://github.com/chg122345/jleopard
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用户信息表