24小时订单分析效果

一.需求分析
二.表结构分析

三.具体案例实现步骤
  1.web开发所需环境和工具
  2.根据表设计我们开始建实体类
  3.根据需求分析图,我门将相对应方法依次实现
  4.前面都是准备工作,现在我们可以开始写servlet了

这个是查询效果
2.根据用户所输的时间区间,点击查询,得到相对应时间段的订单,并以小时记生成的订单数
3.根据每小时生成的订单数,点击订单数得到相对应的订单详情
4.需要涉及的表结构:
   1)订单表
   2)订单详情表
   3)书本表
   4)书本类型表

2.表结构分析
这里使用的是Mysql 数据库
1.书本信息表(id,bookname,price,booktype)
2.书本类型表(id,typename)
3.订单信息表(id,no,total,price,createdate)
4.订单详情表(orderid,bookid)
共四个表格

连接MySQL数据库,导入jar包,代码:
package com.zking.order.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBHelper {

private static final String str="com.mysql.jdbc.Driver";//连接驱动地址
private static final String url="jdbc:mysql://localhost:3306/数据库名";

static {
	try {
		Class.forName(str);
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	}
}

public static Connection getCon() {
	Connection con=null;
	try {
		con=DriverManager.getConnection(url, "用户名", "密码");
	} catch (Exception e) {
		e.printStackTrace();
	}
	return con;
}

public static void dbClose(Connection con,PreparedStatement ps,ResultSet rs) {
	try {
		if(con!=null) {
			con.close();
		}
		if(ps!=null) {
			ps.close();
		}
		if(rs!=null) {
			rs.close();
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
}

}

三.具体案例实现步骤
  1.web开发所需环境和工具

1)在后台功能实现方面,我们使用的开发工具是Eclipse和MySQL数据库
     2)为方便,我们使用使用了一个layUI的日历插件;当然HTML5自带date类型日期的效果,可以的话没必要使用插件,但要想更加美观建议使用插件.
     3)在前端我们使用BootStrap+jQuery达到一定的美化效果
     4)在优化方面我们采用了Ajax技术和JSON(这里使用的json版本是net.sf.json),最后实现无刷新查询数据

2.根据表设计我们开始建实体类

…………
根据需要创建servlet

查询第一个表格的servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//获取writer对象 用于写出数据到前端Ajax
PrintWriter out = response.getWriter();

	//起始时间
	String start = request.getParameter("start");
	
	//结束时间
	String end = request.getParameter("end");

	//实例化订单的dao方法
	Oroderdao od = new Oroderdao();
	
	// 根据时段查询订单
	Set<order> olist = od.getOrder(start, end);

	//将要遍历的订单时间存在set集合中 并排序
	Set<String> set = new TreeSet<String>();

	// 遍历olist集合得到所有的日期
	for (order order : olist) {
		set.add(order.getD().substring(0, 10));// 获取日期 年月日
	}

	// 定义一个map集合用于遍历订单统计数 第一个参数为日期年月日(唯一,为建),第二个参数为24小时(值)
	Map<String, List<Integer>> map = new TreeMap<String,List<Integer>>();

	//遍历set集合 即所有的年月日
	for (String str : set) {
		
		//定义一个list集合 用于存24小时 注意使用的是list集合  有序有下标 便于数据遍历
		List<Integer> lnumber = new ArrayList<Integer>();
		
		//遍历24小时
		for (int i = 0; i < 24; i++) {
			
			//调用 根据日期年月日 时 来统计该小时数的订单总数
			Integer it = od.getTime(str, i);
			if(it==null) {
				it=0;
			}
			//将24小时顺序加入lnumber集合中
			lnumber.add(it);
		}
		
		//依次将map集合中添加获取到的 该时段的订单统计数
		map.put(str, lnumber);
	}

	

	//最后使用JSONObject存储map集合  并将值传到前端Ajax
	String fo=JSON.toJSONString(map);
	out.print(fo);//传值
	
	//一定要清空缓存和关闭 否则有时候会报你意想不到的错误 
	out.flush();
	out.close();
}

查询第二个表格的servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//设置编码格式 如果页面较多 建议使用过滤器
request.setCharacterEncoding(“utf-8”);
response.setCharacterEncoding(“utf-8”);
response.setContentType(“text/html;charset=utf-8”);

	//获取writer对象  用于写出值
	PrintWriter out=response.getWriter();
	
	//获取时间  该时间格式在前端已处理过
	String time=request.getParameter("time");
	
	//调用订单详细的方法  
	Oroderdao oid=new Oroderdao();
	
	//根据指定时间段查询对应的订单详情
	List<Ordermessage> all = oid.getAll(time);
	
	//将all集合存储到json中

// JSONArray fo = JSONArray.fromObject(all);
String fo = JSON.toJSONString(all);
//System.out.println(fo);
//传值
out.print(fo);

	//再次强调一定要 清除缓存和关闭!!!!!
	out.flush();
	out.close();
	
}

首页的代码:插件需要自己下载



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值