随着信息化技术在生活中的应用越来越广泛, 网上订餐也逐渐成为人们的一种生活方式这类订餐软件在市面上也很多。本系统正是基于这样一种环境下应运而生。 本系统主要实现用户的网上订餐业务流程、用户注册、用户资料修改和管理员实现添加菜品相关信息,修改推销广告等。
本系统主要利用原生的 servlet 技术进行开发,有很强的逻辑性、可扩展性, 便于维护。用户界面设计主要实用了 CSS,美化了页面。其次本系统设计还使用 了 JSP 技术、 JDBC 技术、 JavaBean 技术、filter 过滤器技术和 MVC 开发模式。
整体流程图: 详细流程图: 数据库设计商家介绍表 tb_introduce
数据记录
菜谱表 tb_menu
数据记录
推荐菜品表 tb_menu_top
订餐表信息 tb_meaage
后台销售记录表 tb_orders
用户信息表 tb_users
配送信息表
详细设计与实现系统用到的软硬件资源
使用 window10 、eclipse、mysql5.6、MVC 模式、servlet、filter 过滤器、session、文件上传、JDBC、JSP、HTML、CSS、jQuery 等技术。
详细设计过程:
用到的插件包:
项目结构:
核心代码解析:
控制层使用 servlet 技术:
总共 17 个 servlet 代表了 17 个主要功能分别是:添加管理员、添加菜谱、添加推荐菜品、删除购物车订单、删除菜品、用户信息、下单信息、订单支付、删除管理员、删除推荐菜品、修改商家介绍、修改菜品信息、修改用户配送地址信息、用户退出控制、用户登陆控制、用户注册、修改用户个人信息。
在这仅以订单支付为例:
@WebServlet(description = "订单支付", urlPatterns = { "/OrdersPayServlet" })
public class OrdersPayServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public OrdersPayServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List list = new ArrayList();
Person user = (Person) request.getSession().getAttribute("user");
list = DAOFactory.getOrdersDAOInstance().searchBuy(user);
String a = URLEncoder.encode("支付成功!", "UTF-8");
for (Orders orders : list) {
orders.setStates("已付款");
DAOFactory.getOrdersDAOInstance().update(orders);
}
System.out.println("支付成功!");
response.getWriter().println("");
// response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
系统测试
运行效果图及说明
管理登陆界面:
首页
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vcxnjHRw-1641958545683)(https://www.writebug.com/myres/static/uploads/2022/1/8/22337487026d04a5971b930bc740650b.writebug)]
购物车页面
下单信息页面
管理员管理页面功能包括:修改个人信息、修改密码、添加管理员、删除管理员、添加菜品、修改菜品、推荐菜品、修改商店介绍。
订单查询页面
店铺历史介绍页面
普通用户登陆界面:
首页
购物车页面
用户管理页面功能包括:修改个人信息、修改密码、修改配送信息
订单查询页面
店铺历史介绍页面
修改配送信息功能
遇到的问题和解决方法
问题:
页面弹出框的提示信息会出现中文乱码;
解决方法:
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter(); //获取输出流
String a = URLEncoder.encode("口令错误,请重新输入!", "UTF-8");
out.print("alert(decodeURIComponent('"+a+"'))");
问题:
数据库连接异常,缺少相应的连接包。
解决方法:
从 MySQL 官网上下载 mysql-connector-java-5.1.24-bin.jar 包放在项目的如下位置中:
等等等许多问题时间不够不再一一讲述。存在的不足和改进的思路支付界面过于简单,没有真正模拟实际支付过程。改进的思路:想引入微信的支付接口,实现微信扫码支付。项目使用原生的 JDBC 管理连接,导致项目运行速度偏慢,资源浪费。改进的思路:使用 C3P0 插件包自定管理数据库的连接和释放,提高项目的效率。项目使用偏底层的技术如 servlet、原生的 HTML、JSP 导致页面过于简单,项目的开发效率低。
改进的思路:使用框架技术将本项目升级成 maven 项目,自动管理前端使用 LAYUI,美化前端页面,使用 SpringBoot 框架技术,分层思想,提高代码的利用率,并降低开发难度。
总结这个项目我写的很苦逼,因为开始时间晚又重合了考试复习时间,还要忙里偷闲打游戏,技术又不咋滴,所以本人是很嫌弃这个代码的,但是没办法,赶鸭子上架,熬了几天夜写了这个项目,(此处省略吐槽三百字)。
虽然系统的基本功能都已实现,但还是存在项目不稳定等多个问题尚待解决。这个系统主要是我自己开发的,但也得到了网上大神和同学的很大帮助。我正在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助。事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量。
技术心得:个 Servlet 往往对应了不同的操作, 一个对象的增删改查, 都放在了一 个 Servlet 里面实现,这样设计可有效减少 Servlet 数量;
对于网页页面效果要求较高的时候,多采用 JSP 来编写,对于后台处理要 求较高时,多采用 Servlet。
尽量使用和数据库版本一致的驱动,否则 JDBC 连接可能不正常;
在编写样式表之前一定要注意 CSS 文档的编码类型一定要和 HTML 文档的字符集类型一致。



