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食物信息表:
food.jpg?raw=true
foodtype食物分类信息表:
foodtype.jpg?raw=true
dinnertable食堂餐桌信息表:
dinnertable.jpg?raw=true
orderdetails和orders订单信息表:
orderdetails.jpg?raw=true
orders.jpg?raw=true
user用户信息表
user.jpg?raw=true

7、项目部分功能截图

head.jpg

caidan.jpg

order.jpg

orderdetails.jpg

jiezhang.jpg

login.jpg

转载于:https://www.cnblogs.com/yuanchao-blog/p/10935269.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 总体介绍 本次项目主要以本学期所学内容为基础,采用servlet+jsp+jdbc的技术以及mvc模式进行项目开发,本次开发的内容主要以实现CRUD核心功能为主的教务管理系统,分为学生端和教师端,前端采用jquery进行数据传输以及处理,bootstap写界面。 2. 技术架构 运行环境:tomcat9+mysql5+maven3.8+jdk8 前端技术:jquery 用以数据处理以及前端验证以及生成验证码等等 Bootstrap 前端界面处理 后端技术:servelt+jsp maven进行jar包和第三方库管理 采用jspsmart进行文件的操作处理 数据库:mysql5 基于MVC的分层思想及采用jsp+servelt技术的B/S结构的应用系统,系统主要开发语言为JAVA,JSP。数据库要求使用MySQL8.0,应用服务器选用Tomcat服务器 3. 功能介绍 系统能够提供用户有好的界面 系统具有良好的允许效率 系统具有良好的扩充性,灵活性 系统管理操作简单易懂 3.1 总体结构 3.2 模块详情 学生模块: 注册: 1. 用户点击注册,进行注册; 2. 用户输入注册信息; 3. 校验数据:如果用户名重复或者两次密码校验不合格或者密码规格不符合,则提示错误信息; 4. 若信息无错误,提示注册成功,跳转到登录页。 登录: 1. 用户进入系统未进行登录则自行跳转登录页面; 2. 点击忘记密码可进行密码找回; 3. 提交信息进行校验,查看用户名密码是否为空以及是否符合格式,随后在后台进行校验,合格则进行登录跳转到用户界面; 4. 若登录信息不正确,则提示登录错误信息。 查看成绩: 1. 点击查看成绩,打印成绩列表; 2. 支持到处成绩单为pdf格式。 导出成绩: 1. 点击到处按钮; 2. 系统自动处理并到处成pdf。 个人信息管理: 1. 选择上传头像 2. 修改个人信息:按需填写个人信息,随后进行保存则覆盖修改以往的个人信息。 退出登录: 1. 点击退出登录,自动退出到首页并删除本地和服务器缓存。 教师模块: 注册: 1用户点击注册,进行注册; 2用户输入注册信息; 3校验数据:如果用户名重复或者两次密码校验不合格或者密码规格不符合,则提示错误信息; 4若信息无错误,提示注册成功,跳转到登录页。 登录: 1用户进入系统未进行登录则自行跳转登录页面; 2点击忘记密码可进行密码找回; 3提交信息进行校验,查看用户名密码是否为空以及是否符合格式,随后在后台进行校验,合格则进行登录跳转到用户界面; 4若登录信息不正确,则提示登录错误信息。 个人信息管理: 1选择上传头像 2修改个人信息:按需填写个人信息,随后进行保存则覆盖修改以往的个人信息。 学生管理: 1. 点击添加学生,填写学生信息进行添加; 2. 修改学生信息,点击修改,按需填写要修改的学生信息,进行保存覆盖修改; 3. 点击删除学生数据,提示是否删除,确定则删除,取消则不删除; 4. 查看成绩,点击查看学生成绩,单独列出学生成绩列表; 成绩管理: 1. 点击成绩管理,列出所有学生成绩; 2. 点击修改,勾选需要修改的学生,按需填写修改信息,保存覆盖修改学生信息。 退出登录: 1点击退出登录,自动退出到首页并删除本地和服务器缓存。 4. 页面设计 静态jsp页面和jquery和bootstrap 5. 数据库设计 权限对照表: 表名: role 名称 类型 长度 允许空值 是否主键 注释 uid 整型 11 否 是 权限等级 utype 字符 255 否 否 用户等级名称 分数表: 表名: score 名称 类型 长度 允许空值 是否主键 注释 id 整型 200 否 是 学号 dat 字符 255 否 否 课程1分数 Android 字符 255 否 否 课程2分数 Jsp 字符 255 是 否 课程3分数 学生表: 表名: student 名称 类型 长度 允许空值 是否主键 注释 id 整型 59 否 是 学号 password 字符 255 否 否 登陆密码 Name 字符 255 否 否 学生姓名 Sex 字符 255 是 否 性别 School_date 字符 255 是 否 入学时间 Major 字符 255 是 否 专业 email 字符 255 是 否 邮箱 教师表: 表名: student 名称 类型 长度 允许空值 是否主键 注释 id 整型 59 否 是 教师工号 password 字符 255 否 否 登陆密码 Name 字符 255 否 否 教师姓名 Sex 字符 255 是 否 性别 email 字符 255 是 否 邮箱

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值