基于SSM的个性化点餐配送系统
功能需求
本个性化点餐配配送系统总体上分为前端模块与后端模块,前端模块按照使用者的不同分为用户模块、商户模块、配送员模块。用户模块分为注册登录功能、个人信息修改功能、点餐功能。商家模块分为注册登录功能、商家信息修改功能、接单功能、库存管理功能。配送员模块分为注册登录功能、配送员信息管理功能、配送功能。后端模块分为管理员注册管理功能、用户信息管理功能、商家信息管理功能、配送员信息管理功能以及订单信息管理功能。需要解决其中各个信息表直接的调用与依赖关系,尽可能的在系统上进行优化,提高用户的使用体验。
以下是各个模块大概所需功能的描述:
- 登录注册模块:这个需要满足不同用户(客户、商家、配送员、管理员)在注册登录后有不同的权限与功能,并且为了保障其使用的安全性,需要在输入正确的账号和密码后方可登录本系统。
- 信息管理模块:为了保障用户信息的安全性,这个模块也需要满足不同用户在自己的权限内,只能对自己信息的修改与管理,除了管理员拥有最高的权限可以统一管理其他三种用户的信息,其他用户不能跨越自己的权限查看修改他人权限。
- 点餐模块:为了满足客户点餐的需求,在点餐模块下,客户可以查看不同商家的产品信息,在选择需要的产品后可以进行下单与支付,并且最后还有订单是否送到的确认功能,如若订单有问题可以向管理员发起投诉。
- 投诉模块:为了防止用户在使用本系统的过程中出现问题或者差错,可以通过投诉模块描述出现的问题,管理员会在看到到第一时间去处理。
- 接单模块:只要是为了满足商家的需求,在客户点餐过后,对应的商家可以查看自家店铺的点餐信息,在核对信息无误后,确认接单。
- 配送模块:配送员可以在商家确认接单并指定配送员后,对应的配送员可以查看到配送信息,确认无误后进行商品配送。
- 库存模块:是配送员将商品送达后,会存放在相应的库房中,并记录此时库房还可以存放的信息。
- 管理员模块:管理员可以在自己的权限内查看与修改其他用户的信息,但是都需要在合法、合规的情况下使用权限,否则会对其私自行为进行处罚。
安全需求
1.需要输入用户名与密码才能登陆本系统
2.输入的登陆密码需要以“*”显示
3.禁止非法数据写入
4.对于各种错误可以做到提醒或纠正
5.约束表格中部分属性的内容
6.防止数据库查询发生 SQL 注入的攻击
7.不同角色的用户权限不同
可行性分析
本个性化点餐配送系统经济方面是可行的。一方面,只要有能上网的电脑,系统的管理员在任何地方任何时候都可以管理,工作效率进一步提高从而节省人力、物力,只要会打字即可,不需要很高的学历;另一方面,系统的制作成本低,在现有的PC机上即可使用eclipse开发者工具进行开发。
本个性化点餐配送系统社会方面是可行的。个性化点餐配送系统具有良好的发展前景。随着疫情的出现,无接触配送在保障疫情防控不受影响的情况下,即时的为居民解决日常饮食生活等需求,城镇化进程的不断深入使得外卖行业愈发重要。尤其是本系统是为医院、高校等人员密集场所的餐厅实现包餐服务,所以发展前景是完全没有问题的。
本个性化点餐配送系统技术方面是完全可行的。以Windows10为操作系统,基于java的jdk和tomcat,采用eclipse软件为开发后台管理,运用mysql进行数据库存储;后台管理系统硬件环境是PC机,用户使用任何能上网的电脑设置,使用浏览器即可访问在线外卖点餐系统。
部分代码
package com.controller;import java.io.File;
import java.io.IOException;import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.PrintWriter;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;import com.entity.Caipinxinxi;
import com.server.CaipinxinxiServer;
import com.util.PageBean;
import net.sf.json.JSONObject;
import com.util.db;
import java.sql.SQLException;
import java.sql.*;
@Controller
public class CaipinxinxiController {@Resourceprivate CaipinxinxiServer caipinxinxiService;@RequestMapping("addCaipinxinxi.do")public String addCaipinxinxi(HttpServletRequest request,Caipinxinxi caipinxinxi,HttpSession session) throws SQLException{Timestamp time=new Timestamp(System.currentTimeMillis());caipinxinxi.setAddtime(time.toString().substring(0, 19));caipinxinxiService.add(caipinxinxi);db dbo = new db();//kuabiaogaizhisession.setAttribute("backxx", "添加成功");session.setAttribute("backurl", request.getHeader("Referer"));return "redirect:postback.jsp";}@RequestMapping("addCaipinxinxiqt.do")public String addCaipinxinxiqt(HttpServletRequest request,Caipinxinxi caipinxinxi,HttpSession session) throws SQLException{Timestamp time=new Timestamp(System.currentTimeMillis());caipinxinxi.setAddtime(time.toString().substring(0, 19));caipinxinxiService.add(caipinxinxi);db dbo = new db();//kuabiaogaizhisession.setAttribute("backxx", "添加成功");session.setAttribute("backurl", request.getHeader("Referer"));return "redirect:postback.jsp";}// 处理编辑@RequestMapping("doUpdateCaipinxinxi.do")public String doUpdateCaipinxinxi(int id,ModelMap map,Caipinxinxi caipinxinxi){caipinxinxi=caipinxinxiService.getById(id);map.put("caipinxinxi", caipinxinxi);return "caipinxinxi_updt";}// 后台详细@RequestMapping("caipinxinxiDetail.do")public String caipinxinxiDetail(int id,ModelMap map,Caipinxinxi caipinxinxi){caipinxinxi=caipinxinxiService.getById(id);map.put("caipinxinxi", caipinxinxi);return "caipinxinxi_detail";}
// 前台详细@RequestMapping("cpxxDetail.do")public String cpxxDetail(int id,ModelMap map,Caipinxinxi caipinxinxi){caipinxinxi=caipinxinxiService.getById(id);map.put("caipinxinxi", caipinxinxi);return "caipinxinxidetail";}
// @RequestMapping("updateCaipinxinxi.do")public String updateCaipinxinxi(int id,ModelMap map,Caipinxinxi caipinxinxi,HttpServletRequest request,HttpSession session){caipinxinxiService.update(caipinxinxi);session.setAttribute("backxx", "修改成功");session.setAttribute("backurl", request.getHeader("Referer"));return "redirect:postback.jsp";}// 分页查询@RequestMapping("caipinxinxiList.do")public String caipinxinxiList(@RequestParam(value="page",required=false)String page,ModelMap map,HttpSession session,Caipinxinxi caipinxinxi, String caipinmingcheng, String caipinleibie, String caipinzhaopian, String caipinjiage, String caipinjianjie, String shangjiazhanghao, String shangjiamingcheng, String shangjiadizhi, String shangjiadianhua){if(page==null||page.equals("")){page="1";}PageBean pageBean=new PageBean(Integer.parseInt(page), 5);Map<String, Object> pmap=new HashMap<String,Object>();pmap.put("pageno", pageBean.getStart());pmap.put("pageSize", 5);if(caipinmingcheng==null||caipinmingcheng.equals("")){pmap.put("caipinmingcheng", null);}else{pmap.put("caipinmingcheng", caipinmingcheng);}if(caipinleibie==null||caipinleibie.equals("")){pmap.put("caipinleibie", null);}else{pmap.put("caipinleibie", caipinleibie);}if(caipinzhaopian==null||caipinzhaopian.equals("")){pmap.put("caipinzhaopian", null);}else{pmap.put("caipinzhaopian", caipinzhaopian);}if(caipinjiage==null||caipinjiage.equals("")){pmap.put("caipinjiage", null);}else{pmap.put("caipinjiage", caipinjiage);}if(caipinjianjie==null||caipinjianjie.equals("")){pmap.put("caipinjianjie", null);}else{pmap.put("caipinjianjie", caipinjianjie);}if(shangjiazhanghao==null||shangjiazhanghao.equals("")){pmap.put("shangjiazhanghao", null);}else{pmap.put("shangjiazhanghao", shangjiazhanghao);}if(shangjiamingcheng==null||shangjiamingcheng.equals("")){pmap.put("shangjiamingcheng", null);}else{pmap.put("shangjiamingcheng", shangjiamingcheng);}if(shangjiadizhi==null||shangjiadizhi.equals("")){pmap.put("shangjiadizhi", null);}else{pmap.put("shangjiadizhi", shangjiadizhi);}if(shangjiadianhua==null||shangjiadianhua.equals("")){pmap.put("shangjiadianhua", null);}else{pmap.put("shangjiadianhua", shangjiadianhua);}int total=caipinxinxiService.getCount(pmap);pageBean.setTotal(total);List<Caipinxinxi> list=caipinxinxiService.getByPage(pmap);map.put("page", pageBean);map.put("list", list);session.setAttribute("p", 1);return "caipinxinxi_list";}@RequestMapping("caipinxinxiList2.do")public String caipinxinxiList2(@RequestParam(value="page",required=false)String page,ModelMap map,HttpSession session,Caipinxinxi caipinxinxi, String caipinmingcheng, String caipinleibie, String caipinzhaopian, String caipinjiage, String caipinjianjie, String shangjiazhanghao, String shangjiamingcheng, String shangjiadizhi, String shangjiadianhua,HttpServletRequest request){/*if(session.getAttribute("user")==null){return "login";}*/if(page==null||page.equals("")){page="1";}PageBean pageBean=new PageBean(Integer.parseInt(page), 15);Map<String, Object> pmap=new HashMap<String,Object>();pmap.put("pageno", pageBean.getStart());pmap.put("pageSize", 15);pmap.put("shangjiazhanghao", (String)request.getSession().getAttribute("username"));if(caipinmingcheng==null||caipinmingcheng.equals("")){pmap.put("caipinmingcheng", null);}else{pmap.put("caipinmingcheng", caipinmingcheng);}if(caipinleibie==null||caipinleibie.equals("")){pmap.put("caipinleibie", null);}else{pmap.put("caipinleibie", caipinleibie);}if(caipinzhaopian==null||caipinzhaopian.equals("")){pmap.put("caipinzhaopian", null);}else{pmap.put("caipinzhaopian", caipinzhaopian);}if(caipinjiage==null||caipinjiage.equals("")){pmap.put("caipinjiage", null);}else{pmap.put("caipinjiage", caipinjiage);}if(caipinjianjie==null||caipinjianjie.equals("")){pmap.put("caipinjianjie", null);}else{pmap.put("caipinjianjie", caipinjianjie);}if(shangjiamingcheng==null||shangjiamingcheng.equals("")){pmap.put("shangjiamingcheng", null);}else{pmap.put("shangjiamingcheng", shangjiamingcheng);}if(shangjiadizhi==null||shangjiadizhi.equals("")){pmap.put("shangjiadizhi", null);}else{pmap.put("shangjiadizhi", shangjiadizhi);}if(shangjiadianhua==null||shangjiadianhua.equals("")){pmap.put("shangjiadianhua", null);}else{pmap.put("shangjiadianhua", shangjiadianhua);}int total=caipinxinxiService.getCount(pmap);pageBean.setTotal(total);List<Caipinxinxi> list=caipinxinxiService.getByPage(pmap);map.put("page", pageBean);map.put("list", list);session.setAttribute("p", 1);return "caipinxinxi_list2";}@RequestMapping("cpxxList.do")public String cpxxList(@RequestParam(value="page",required=false)String page,ModelMap map,HttpSession session,Caipinxinxi caipinxinxi, String caipinmingcheng, String caipinleibie, String caipinzhaopian, String caipinjiage, String caipinjianjie, String shangjiazhanghao, String shangjiamingcheng, String shangjiadizhi, String shangjiadianhua){if(page==null||page.equals("")){page="1";}PageBean pageBean=new PageBean(Integer.parseInt(page), 5);Map<String, Object> pmap=new HashMap<String,Object>();pmap.put("pageno", pageBean.getStart());pmap.put("pageSize", 5);if(caipinmingcheng==null||caipinmingcheng.equals("")){pmap.put("caipinmingcheng", null);}else{pmap.put("caipinmingcheng", caipinmingcheng);}if(caipinleibie==null||caipinleibie.equals("")){pmap.put("caipinleibie", null);}else{pmap.put("caipinleibie", caipinleibie);}if(caipinzhaopian==null||caipinzhaopian.equals("")){pmap.put("caipinzhaopian", null);}else{pmap.put("caipinzhaopian", caipinzhaopian);}if(caipinjiage==null||caipinjiage.equals("")){pmap.put("caipinjiage", null);}else{pmap.put("caipinjiage", caipinjiage);}if(caipinjianjie==null||caipinjianjie.equals("")){pmap.put("caipinjianjie", null);}else{pmap.put("caipinjianjie", caipinjianjie);}if(shangjiazhanghao==null||shangjiazhanghao.equals("")){pmap.put("shangjiazhanghao", null);}else{pmap.put("shangjiazhanghao", shangjiazhanghao);}if(shangjiamingcheng==null||shangjiamingcheng.equals("")){pmap.put("shangjiamingcheng", null);}else{pmap.put("shangjiamingcheng", shangjiamingcheng);}if(shangjiadizhi==null||shangjiadizhi.equals("")){pmap.put("shangjiadizhi", null);}else{pmap.put("shangjiadizhi", shangjiadizhi);}if(shangjiadianhua==null||shangjiadianhua.equals("")){pmap.put("shangjiadianhua", null);}else{pmap.put("shangjiadianhua", shangjiadianhua);}int total=caipinxinxiService.getCount(pmap);pageBean.setTotal(total);List<Caipinxinxi> list=caipinxinxiService.getByPage(pmap);map.put("page", pageBean);map.put("list", list);session.setAttribute("p", 1);return "caipinxinxilist";}@RequestMapping("cpxxListtp.do")public String cpxxListtp(@RequestParam(value="page",required=false)String page,ModelMap map,HttpSession session,Caipinxinxi caipinxinxi, String caipinmingcheng, String caipinleibie, String caipinzhaopian, String caipinjiage, String caipinjianjie, String shangjiazhanghao, String shangjiamingcheng, String shangjiadizhi, String shangjiadianhua){if(page==null||page.equals("")){page="1";}PageBean pageBean=new PageBean(Integer.parseInt(page), 8);Map<String, Object> pmap=new HashMap<String,Object>();pmap.put("pageno", pageBean.getStart());pmap.put("pageSize", 8);if(caipinmingcheng==null||caipinmingcheng.equals("")){pmap.put("caipinmingcheng", null);}else{pmap.put("caipinmingcheng", caipinmingcheng);}if(caipinleibie==null||caipinleibie.equals("")){pmap.put("caipinleibie", null);}else{pmap.put("caipinleibie", caipinleibie);}if(caipinzhaopian==null||caipinzhaopian.equals("")){pmap.put("caipinzhaopian", null);}else{pmap.put("caipinzhaopian", caipinzhaopian);}if(caipinjiage==null||caipinjiage.equals("")){pmap.put("caipinjiage", null);}else{pmap.put("caipinjiage", caipinjiage);}if(caipinjianjie==null||caipinjianjie.equals("")){pmap.put("caipinjianjie", null);}else{pmap.put("caipinjianjie", caipinjianjie);}if(shangjiazhanghao==null||shangjiazhanghao.equals("")){pmap.put("shangjiazhanghao", null);}else{pmap.put("shangjiazhanghao", shangjiazhanghao);}if(shangjiamingcheng==null||shangjiamingcheng.equals("")){pmap.put("shangjiamingcheng", null);}else{pmap.put("shangjiamingcheng", shangjiamingcheng);}if(shangjiadizhi==null||shangjiadizhi.equals("")){pmap.put("shangjiadizhi", null);}else{pmap.put("shangjiadizhi", shangjiadizhi);}if(shangjiadianhua==null||shangjiadianhua.equals("")){pmap.put("shangjiadianhua", null);}else{pmap.put("shangjiadianhua", shangjiadianhua);}int total=caipinxinxiService.getCount(pmap);pageBean.setTotal(total);List<Caipinxinxi> list=caipinxinxiService.getByPage(pmap);map.put("page", pageBean);map.put("list", list);session.setAttribute("p", 1);return "caipinxinxilisttp";}@RequestMapping("deleteCaipinxinxi.do")public String deleteCaipinxinxi(int id,HttpServletRequest request,HttpSession session){caipinxinxiService.delete(id);session.setAttribute("backxx", "删除成功");session.setAttribute("backurl", request.getHeader("Referer"));return "redirect:postback.jsp";}}