Android实训-吴勇墙-34

时间:2024.5.2

Android无线点餐系统

       ——服务器端的实现

学    院:计算机与信息工程学院

班    级:10软件技术1班

姓    名: 

学    号: 

同 组 者: 

指导教师: 

1. 服务器端的实现

服务器端功能

主控计算机处理各无线终端发送过来的数据信息并进行处理、加工(必要的情况下还进行信息回馈)以及发送,从而进行控制、结算、统计、结账打印以及管理等一系列职能操作。

服务端主要是数据库操作,针对无线终端各模块而设置响应相应功能的服务器小程序。主要包括:响应登录的Servlet、响应订单的Servlet、响应开桌的Servlet、响应并台的Servlet、响应转台的Servlet、响应查台的Servlet、响应更新桌号的Servlet、响应更新菜谱的Servlet、响应结算的Servlet、响应订单信息的Servlet等。

当操作员点结账的时候另一个Servlet启动,其作用就是讲该订单的标志位修改,并且将该桌子的状态设置成没人,其实就是根据订单号查询到桌子号,将该桌子的falg位置设置为0。

图 1 服务器功能图

1. 服务器各模块设计

2.1登录

当服务器访问loginservlet的时候,服务器得到用户的登录名和密码,该servlet的任务就是通过查询数据库,如果没有该用户或者密码不对返回0;如果有,并且密码正确,则返回一段有规则的字符串,包括用户id和名字。

public class LoginServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

       response.setContentType("text/html");

       PrintWriter out = response.getWriter();

       UserDao dao = new UserDaoImpl();

       // 获得客户端请求参数

       String username = request.getParameter("account");

       String password = request.getParameter("password");

       User u = dao.login(username, password);

       if(u!=null){

          // 响应客户端内容,登录成功

          out.print(build(u));

       }else{

          // 响应客户端内容,登录失败

          out.print("0");

       }

       out.flush();

       out.close();

   }

   private String build(User u){

       String userMsg = "";

       userMsg+="id="+u.getId();

       userMsg+=";";

       userMsg+="name="+u.getName();

       return userMsg;

   }

public void doPost(HttpServletRequest request, HttpServletResponse response)        throws ServletException, IOException {

       doGet(request,response);

   }

   public void init() throws ServletException {

   }

   public LoginServlet() {

       super();

   }

public void destroy() {

       super.destroy();

   }

}

2.2更新

更新的Servlet主要有两个,一个是更新菜谱,另一个是更新桌子。主要是考虑到饭店的菜谱和桌子不可能一成不变,将软件的扩展性增强。当饭店的菜谱或者桌子更新的时候,操作员就可以将手机的数据库SQLITE和服务器的数据库的数据同步。

这两个Servlet的工作原理就是查询table表和menu表 组成一个xml文件并且返回给客户端。

public class UpdateServlet extends HttpServlet {

   // 构造方法

   public UpdateServlet() {

       super();

   }

   // 销毁方法

   public void destroy() {

       super.destroy();

   }

   // 响应Get请求

public void doGet(HttpServletRequest request, HttpServletResponse response)

          throws ServletException, IOException {

       response.setContentType("text/xml");

       PrintWriter out = response.getWriter();

       // 实例化dao

       UpdateDao dao = new UpdateDaoImpl();

       // 获得菜谱列表

       List list = dao.getMenuList();

       // 拼XML格式数据

       out.println("<?xml version='1.0' encoding='UTF-8'?>");

       // 根节点

       out.println("<menulist>");

          for (int i = 0; i <list.size(); i++) {

              Menu m = (Menu)list.get(i);

              out.println("<menu>");

                 // 菜谱编号

                 out.print("<id>");

                     out.print(m.getId());

                 out.println("</id>");

                 // 分类

                 out.print("<typeId>");

                     out.print(m.getTypeId());

                 out.println("</typeId>");

                 // 名称

                 out.print("<name>");

                     out.print(m.getName());

                 out.println("</name>");

                 // 图片路径

                 out.print("<pic>");

                     out.print(m.getPic());

                 out.println("</pic>");

                 // 价格

                 out.print("<price>");

                     out.print(m.getPrice());

                 out.println("</price>");

                 // 备注

                 out.print("<remark>");

                     out.print(m.getRemark());

                 out.println("</remark>");

                 out.println("</menu>");

          }

       out.println("</menulist>");

       out.flush();

       out.close();

   }

   // 响应Post请求

public void doPost(HttpServletRequest request, HttpServletResponse response)

          throws ServletException, IOException {

       doGet(request,response);

   }

   // 初始化方法

   public void init() throws ServletException {

   }

}

2.3结账

结账的Servlet有两个,一个是当操作员发来order编号的时候,改Servlet查询订单表,拼成一个网页发送到手机,这样的好处就是手机不能修改订单信息。

当操作员点结账的时候另一个Servlet启动,其作用就是讲该订单的标志位修改,并且将该桌子的状态设置成没人,其实就是根据订单号查询到桌子号,将该桌子的falg位置设置为0。

PayServlet比较复杂,核心代码如下:

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

// 实例化DAO

PayDao dao = new PayDaoImpl();

// 获得订单ID

String id = request.getParameter("id");

// 查询订单信息

QueryOrder qo = dao.getOrderById(Integer.parseInt(id));

// 查询订单详细列表

List list = dao.getOrderDetailList(Integer.parseInt(id));

// 拼HTML页面展示

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01

Transitional//EN\">");out.println("<HTML>");out.println("  <HEAD></HEAD>");

out.println("  <BODY>");out.print("<table>");out.print("<tr>");

out.print("<th>");out.print("订单编号");out.print("</th>");

out.print("<th>");out.print("下单时间");out.print("</th>");out.print("<th>");

out.print("服务员");   out.print("</th>");out.print("<th>");

out.print("人数");out.print("</th>");out.print("<th>");out.print("桌号");

out.print("</th>");out.print("</tr>");out.print("<tr>");out.print("<td>");

out.print(id);out.print("</td>");out.print("<td>");

out.print(qo.getOrderTime());out.print("</td>");out.print("<td>");

out.print(qo.getName());out.print("</td>");out.print("<td>");

out.print(qo.getPersonNum());out.print("</td>");out.print("<td>");

out.print(qo.getTableId());out.print("</td>");out.print("</tr>");

out.print("<tr>");out.print("<th>");out.print("菜名");out.print("</th>");

out.print("<th>");out.print("价格");out.print("</th>");out.print("<th>");

out.print("数量");out.print("</th>");out.print("<th>");out.print("总计");

out.print("</th>");out.print("<th>");out.print("备注");out.print("</th>");

out.print("</tr>");

for (int i = 0; i < list.size(); i++) {

  QueryOrderDetail qod = (QueryOrderDetail) list.get(i);

  String name = qod.getName();

  int price = qod.getPrice();

  int num = qod.getNum();

  int total = qod.getTotal();

  String remark = qod.getRemark();

  out.print("<tr>");

  out.print("<td>");

  out.print(name==null?"":name);

  out.print("</td>");

  out.print("<td>");

  out.print(price==0? "" :price+"");

  out.print("</td>");

  out.print("<td>");

  out.print(num==0? "" :num+"");

  out.print("</td>");

  out.print("<td>");

  out.print(total);

  out.print("</td>");

  out.print("<td>");

  out.print(remark==null?"":remark);

  out.print("</td>");

  out.print("</tr>");

  }

  out.print("</table>");

  out.println("  </BODY>");

  out.println("</HTML>");

  out.flush();

  out.close();

更多相关推荐:
Android实训报告

通信与电子信息专业实训报告项目名称基于Android的游戏开发班级10通信1班姓名学号指导教师成绩实训时间年月日目录一实训目的及其意义311目的及意义312研究现状3二实训主要任务重点及难点421任务422重点...

Android实训心得

Android实训心得刚开始接触Android感觉到它很有意思在界面开发上和web也可以形成了相通的架构更加方便视觉上也是非常的酷在前期我通过的大量的AndroidSDK开发范例大全中的例子以及Android提...

android实训心得

项目总结时间过的好快,为期三个月的实训生活即将结束了,每一次的实训我们都受益匪浅,我们学到的不仅仅是课内还有课外,实训让我们的课内知识得到了巩固,专业知识、编程水平都有很大的提高,我们非常感谢这次实训。刚开始二…

android实训报告总结

学员个人实训总结

Android培训总结

Android培训总结非常高兴能够参加清华大学的Android暑期培训感谢老师们对我们的教导和关心在短短一个月的时间里我学到了Java数据库AndroidJSP等知识最重要的是通过这次培训我对Java开发和An...

Android 实训总结

Android实训总结XXXX三周的Android实训已接近尾声在这短暂的三周之内有成功有失败有喜悦有辛酸在实训老师的带领下我学会了很多我们小组在实训老师的协助下最终成功的完成实训项目实训前二周由于我在java...

《Android项目开发实训》项目总结报告

实训报告姓名祝新学号1144131专业软件技术课程名称android实训项目名称闹铃指导教师王皓实训日期20xx年10月28日至20xx年1月2日20xx年1月2日Android项目开发实训总结报告目录第一章概...

android视频播放器实训报告

实训报告书实训名称系部专业班级学生姓名学号指导教师完成日期目录1实训目的22android视频播放器系统的分析与设计2装345订线21系统功能描述222系统模块设计3主要代码清单3程序运行与测试4实训总结9an...

android项目实训报告

Android项目实训报告

android实训报告 (2)

通信与电子信息专业实训报告基于Android小游戏的开发班级通信一班姓名学号指导教师成绩20xx年7月5日1一实训目的及其意义1目的及意义在未参加Android实训时只是简单的知道Android是谷歌公司开发的...

Android天气预报实训报告

设计题目南通航运职业技术学院学生课程设计报告系部管理信息系专业班级学生姓名完成日期1指导老师一实训目的1以天气预报软件为实训示例运用以往的学习的知识和技巧设计天气预报软件2通过实训掌握Android应用程序的设...

java,android实习报告-

科信学院实习报告二一五年一月五日一实习目的1Java通过这次学习对java语言的应用有更进一步的掌握熟悉在Android软件开发中的java的使用了解到在做Android开发时java使用与平时运用的相同与不同...

android实训总结(32篇)