博主介绍:?全网粉丝喜爱+、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战?有需要可以联系作者我哦!
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
? ? ? ?利用Eclipse或其它IDE工具进行基于servlet和jsp的B/S系统设计。能够正确运用相关语言和工具,结合一个模拟课题,复习javaweb中相关html、http、servlet、jsp的知识,提高相关技术编程实现能力,加深对B/S架构下系统设计基本技术的理解,掌握B/S架构系统建设的基本方法。
? ? ? ?随着公司规模发展壮大,公司内部餐厅中午员工点餐存在点餐时间长、员工排队时间长等问题,同时食堂也受外卖订餐服务影响,每日产生大量粮食浪费,具体而言,食堂采购误差比较大;此外,公司每日菜谱对员工满意度也会有影响。整体而言,公司食堂存在粮食浪费严重,运营压力大。急需通过改进运营方案,提升员工对食堂的满意度。通过设计一款线上订餐系统,按需订购菜品,实时、全面的数据统计,旨在优化员工用餐体验,提高食堂的运营效率和收入。
? ? ? ? 首先,通过对员工进行调研,掌握员工用餐喜好情况,对数据进行分析,然后进行概要设计,确定主要功能目标。系统主要面向服务对象是员工、餐厅经理、餐厅主管、财务管理员、配送员等,根据点餐需求,设计食谱和菜单管理,餐厅经理需要一个界面来管理内部的食谱,包括添加、修改和删除菜品信息。这需要一个数据库来存储菜品的图片、价格、计量单位等信息。历史菜单需要额外的存储空间来记录。员工订餐功能,系统需要为员工提供登录界面和菜单选择功能。每个员工每天只能生成一张订单,这需要一种机制来限制订单数量。订单信息要存储在数据库中。厨房订单生成,厨房主管需要一个功能来生成总括订单,这个订单应包含每种菜肴的数量。这个功能可以根据员工订单数据生成,可能需要特定权限才能访问。配送午餐,配餐员需要能够批量打印所有订单,所以系统需要一个订单打印功能。销售统计和报表,餐厅经理和财务管理人员需要访问销售统计总报表的界面。这个系统需要能够按月份对菜品数量和总金额进行统计。同时,他们需要能够访问员工月度订单汇总表和个人销售统计汇总表的界面。食谱管理,食谱的管理需要一个独立的界面,让餐厅经理和厨房主管进行菜式的修改和删除。这个过程需要确保对已有点餐单、菜单或订餐记录的影响最小化,即使删除或修改食谱也不应该影响已有的记录。实现这些功能,涉及到前端开发、后端开发和数据库管理方面的工作,包括权限管理,不同角色的用户有不同的权限访问不同的功能。
? ? ? ? 本系统为餐厅点餐信息管理提供一种更加安全快捷的信息平台,通过平台可以解决目前餐厅系统存在粮食浪费、点餐困难的问题,提高食堂运营效率。
图1 网路点餐系统功能层次架构图
? ? 系统架构:基于莫快化开发,采用前端采用JSP技术开发,后端基于功能模块开发Controller控制层,Entity实体层,Dao层操作数据库层,Service复杂逻辑数据库操作层,Servlet业务逻辑层。
User表:
Recipe表:
Caidan表:
Caidanlist表
OrderItem表
Orderfrom表
? ? ? ? 这种系统的架构涉及到前端框架、后端架构、数据库连接、权限管理、数据传输等,充分考虑实际应用可能遇到的问题,具有稳定性、可靠性、可移值性。
系统采用的开发平台和运行环境:
开发环境的准备:
运行环境:Win10
编辑版本:IDEA
JDK版本:1.8
开发语言:java
服务器:Tomcat8.5
数据库系统:Mysql8.0
菜单管理
4.1 前端登录UI设计
<body>
<form id="LoginForm" action="loginServlet" method="post" >
<div id="login_box">
<h1>五邑网络餐厅点餐系统登录</h1>
<div id="input_box">
账号:<input id="username" type="text" name="username" placeholder="请输入账号">
</div>
<div class="input_box">
密码:<input id="password" type="password" name="password" placeholder="请输入密码">
</div>
<span class="msg" id="msg" style="color: red" ></span>
<button href="javascript:login();">登录</button>
<button id="register_div"><a href="register.jsp" style="color: white">注册</a><br></button>
<div>
<span style="align-content: center;margin-top: 400px;">
<h3>一粥一饭,当思来之不易,</h3>
<h3>半丝半缕,恒念物力维艰</h3>
<h3>爱惜粮食就是爱惜生命,爱惜粮食就是热爱生活。</h3>
</span>
</div>
</div>
</form>
</body>
<script type="text/javascript" src="./js/jquery-3.4.1.js"></script>
<script type="text/javascript">
function login() {
console.log("我能过来")
var uname = $("#username").val();
var upwd = $("#password").val();
if (isEmpty(uname)){
$("#msg").html("请输入用户姓名!");
return;
}
if (isEmpty(upwd)){
$("#msg").html("请输入用户密码!");
return;
}
$("#LoginForm").submit();
}
//专用方法:判断为空
function isEmpty(str) {
if (str == null || str.trim() == ""){
return true;
}
return false;
}
// 函数中的参数分别为 cookie 的名称、值以及过期天数
function setCookie(c_name,value,expiredays){
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
// 如果要设置过期时间以秒为单位
function setCookie(c_name,value,expireseconds){
var exdate=new Date();
exdate.setTime(exdate.getTime()+expireseconds * 1000);
document.cookie=c_name+ "=" +escape(value)+
((expireseconds==null) ? "" : ";expires="+exdate.toGMTString())
}
// 函数中的参数为,要判断的cookie名称
function checkCookie(c_name){
username=getCookie(c_name);
if (username!=null && username!=""){
// 如果cookie值存在,执行下面的操作。
alert('Welcome again '+username+'!');
}else{
username=prompt('Please enter your name:',"");
if (username!=null && username!=""){
//如果cookie不存在,执行下面的操作。
setCookie('username',username,365)
}
}
}
4.2后端业务设计
@WebServlet("/loginServlet")
public class LoginServlet<User> extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("UTF-8");
String username= request.getParameter("username");
String password = request.getParameter("password");
System.out.println("我的账号"+username);
System.out.println("我的密码"+password);
domain.User loginuser= new domain.User();
loginuser.setUsername(username);
loginuser.setPassword(password);
UserDao dao = new UserDao();
domain.User user = dao.login(loginuser);
System.out.println("验证前的user"+user);
if (user == null){
System.out.println("登录失败");
PrintWriter out = response.getWriter();
out.print("<script>alert('用户名或密码错误!');" +
"window.location.href='./login.html'</script>" +
"");
}else {
System.out.println("登录成功");
request.setAttribute("User",user);
request.getSession().setAttribute("User",user);
response.sendRedirect("maincaidanServlet");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}
}
? ? ? ? 本系统已完成对设计目标的所有功能需求,功能详尽,操作简单,比如,在执行删除或修改操作时,系统可以友好地询问用户确认执行该操作,以防止误操作。而在用户填写信息时,系统则会给予实时的弹出提示或提醒,确保输入符合规范,减少错误。此外,系统可以通过弹出提示框、动画效果或状态栏信息,及时向用户反馈操作结果,使用户对其操作状态有清晰的了解。当然,对于敏感信息或特定格式的输入,系统也会进行实时验证,及时提醒用户可能存在的错误。在复杂操作流程中,系统更可以提供引导性的指南,帮助用户按照正确的流程进行操作。最后,优化界面设计、合理运用颜色和图标,并合理排版,可以使用户界面更美观、更易用。详细实现功能如下:
源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻评论区域发送暗号:已经三连!0747