• 小郡肝火锅点餐系统——部分代码实现


    数据库代码:

    create database xiaojungan;
    use xiaojungan;
    create table IF NOT EXISTS `t_user` (
      `id` int NOT NULL AUTO_INCREMENT,
      `username` varchar(50) NOT NULL ,
      `password` varchar(50) NULL ,
      `role` int(11) NOT NULL DEFAULT '0' COMMENT '用户角色',
      PRIMARY KEY (`id`)
    ) AUTO_INCREMENT=100;
    
    CREATE TABLE `t_food` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `foodname` varchar(100) NOT NULL,
      `type_id` int(11) ,
      `descript` longtext ,
      `price` decimal(10,2) ,
      `onSale` int(11) default '0',
      `imgAddress` varchar(200) ,
      PRIMARY KEY (`id`)
    ) ;
    CREATE TABLE `t_type` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `typename` varchar(20) ,
      PRIMARY KEY (`id`)
    ) ;
    CREATE TABLE `t_order` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `food_id` int(11),
      `user_id` int(11),
      `table_id` int(11),
      `food_account` int(11) ,
      PRIMARY KEY (`id`)
    );
    CREATE TABLE `t_table` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `tablename` varchar(20) ,
      `user_id` int(11),
      PRIMARY KEY (`id`)
    )

    c3p0-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
        <default-config>
            <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://localhost:3306/xiaojungan?serverTimezone=Asia/Shanghai</property>
            <property name="user">root</property>
            <property name="password">147258369</property>
            <!-- 初始化连接的数量 -->
            <property name="initialPoolSize">10</property>
            <!-- 最大空闲时间,单位是秒 -->
            <property name="maxIdleTime">1</property>
            <!-- 池中最大连接的数量 -->
            <property name="maxPoolSize">100</property>
            <!-- 池中最小连接的数量 -->
            <property name="minPoolSize">10</property>
        </default-config>
    </c3p0-config>

    Java

    FoodDaoimpl.java

    package dao.daoImpl;
    
    import bean.Food;
    import util.C3P0Util;
    import dao.FoodDao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    
    public class FoodDaoImpl implements FoodDao{
        @Override
        public void addFood(Food food) throws Exception{
            String sql = "INSERT INTO `xiaojungan`.`t_food`(`foodname`,`type_id`,`descript`,`price`,`saling`,`img`) VALUES (?,?,?,?,?,?)";
    
            try(
                    Connection conn = C3P0Util.getConnection();
                    PreparedStatement ps = conn.prepareStatement(sql);
            ) {
                ps.setString(1,food.getFoodname());
                ps.setInt(2, food.getType_id());
                ps.setString(3,food.getDescript());
                ps.setBigDecimal(4, food.getPrice());
                ps.setInt(5,food.getSaling());
                ps.setString(6, food.getImg());
    
                ps.executeUpdate();
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException("添加失败!");
            }
        }
    
    
        @Override
        public List<Food> findSalingFoods() throws Exception{
            String sql = "select * from t_food where saling=?";
            List<Food> foodList = new ArrayList<>();
            try(
                    Connection conn = C3P0Util.getConnection();
                    PreparedStatement ps = conn.prepareStatement(sql)
            ) {
                ps.setInt(1, 1);
                try (
                        ResultSet rs = ps.executeQuery()
                ) {
    
                    //将查询出的结果数据封装到List对象中
                    while(rs.next()){
                        Food b = new Food();
                        b.setId(rs.getInt("id"));
                        b.setFoodname(rs.getString("foodname"));
                        b.setType_id(rs.getInt("type_id"));
                        b.setDescript(rs.getString("descript"));
                        b.setPrice(rs.getBigDecimal("price"));
                        b.setImg(rs.getString("img"));
                        b.setSaling(rs.getInt("saling"));
                        foodList.add(b);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
            return foodList;
        }
    
        @Override
        public  Food findFood_id(int id) throws Exception {
            String sql = "select * from t_food where id=?";
           Food b = null;
    
            try(
                    Connection conn = C3P0Util.getConnection();
                    PreparedStatement ps = conn.prepareStatement(sql)
            ) {
                ps.setInt(1, id);
    
                try (
                        ResultSet rs = ps.executeQuery()
                ) {
                    //将查询出的结果数据封装到Food对象中
                    if(rs.next()){
                        b = new Food();
                        b.setId(rs.getInt("id"));
                        b.setFoodname(rs.getString("foodname"));
                        b.setType_id(rs.getInt("type_id"));
                        b.setDescript(rs.getString("descript"));
                        b.setPrice(rs.getBigDecimal("price"));
                        b.setSaling(rs.getInt("saling"));
                        b.setImg(rs.getString("img"));
    
                        return b;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
            return b;
        }
    }

    Html代码

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>小郡肝</title>
        <style type="text/css">
            #main{
                width: 80%;height: auto;
                margin: 0 auto;
                overflow:auto;
                background: burlywood;
            }
            #header_div{
                width:80%;height: auto;
                overflow:auto;
                margin:5px auto 5px;
                background: coral;
                border-style: groove;
            }
            #header{
                width:80%;height: auto;
                margin:0px auto ;
                padding: 20px;
                overflow:auto;
            }
            #food_div{
                width:80%;height: auto;
                margin:0px auto 50px auto;
                overflow:auto;
                border-style: solid;
                background: aliceblue;
            }
            .childfood_div{
                width:80%;height: auto;
                margin:5px auto ;
                border-style: solid;
                padding: 20px;
                overflow:auto;
            }
        </style>
    </head>
    <body>
    <div id="main">
        <div id="header_div">
            <div id="header">
                <span style="font-family: 微软雅黑;font-size: xx-large">小郡肝火锅</span>
                <br>
    
                <p style="float: right">
                    <span id="loginT"><a href="login.html">登陆</a></span><span>&nbsp;&nbsp;</span>
                    <span id="registT"><a href="register.html">注册</a> </span><span>&nbsp;&nbsp;</span>
                    <span id="order" style="outline: none;"><a href="OrderServlet">餐车</a> </span>
                </p>
            </div>
    
        </div>
        <div id="food_div">
    
        </div>
    </div>
    </body>
    <script type="text/javascript" src="MyAjax.js"></script>
    <script type="text/javascript">
        window.onload = function () {
            var foodDiv = document.getElementById("food_div");
    
            //获取XMLHttpRequest对象
            var xhr = getXMLHttpRequest();
            var user_id = "" ;
            //回调函数
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4){
                    if(xhr.status == 200){
                        var newsJ = xhr.responseText;//获取服务器返回的数据
                        if(newsJ == ""){
                            return;
                        }
                        //转化Json消息
                        var result = JSON.parse(newsJ);
    
                        if(result[0] != null){
                            //消息第一个元素为当前用户
                            var loginT = document.getElementById("loginT");
                            loginT.innerHTML = result[0].username;
                            user_id = result[0].id;
                            var registT = document.getElementById("registT");
                            registT.innerHTML = "<a href='LoginOutServlet'>注销</a>";
                            var order = document.getElementById("order");
                            order.innerHTML = "<a href='OrderServlet?user_id="+ user_id +"'>餐车</a>";
                        }
    
                        var childDivs = "";
                        //循环放入到div中
                        for(var i=1; i<result.length; i++){
                            childDivs += "<br><div class='childfood_div'>"
                                + "<div style='float: left'>"
                                + "<img src='" + result[i].img + "' width='198' height='198'/>"
                                + "</div>"
                                + "<div style='float: left'>"
                                + "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
                                +"<sqan style='font-size: x-large;font-family: 黑体'>" + result[i].foodname + "</sqan>"
                                + "<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
                                + "在售价:" + result[i].price
                                + "<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
                                + "<sqan>" +"描述:"+ result[i].descript +"</sqan>"
                                + "<sqan>" +"分类:"+ result[i].type_id+"</sqan>"
    
    
                                + "</div>"
                                + "<div style='float: left'>"
                                + "<br><br><br><br><br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;"
                                + "<a href ='AddOrderServlet?food_id=" + result[i].id + "&user_id="
                                + user_id + "&food_account=1"+ "'>加入餐车</a>"
                                + "</div>"
                                + "</div>";
                        }
    
                        //把多个食物childDivs放入列表foodDiv中
                        foodDiv.innerHTML = childDivs;
                    }
                }
            }
            //创建连接
            xhr.open("get","/Servlet?id=food");
            //发送请求
            xhr.send(null);
        }
    </script>
    </html>
  • 相关阅读:
    把eclipse 3.4的插件移动到独立目录中
    Crest大家都来山寨一个GObject吧
    c# 扩展方法奇思妙用性能篇一:扩展方法性能初测
    [幽默]今天看了几页c语言入门,想写个ERP, 帮我看看 技术上还差些什么?
    c# 扩展方法奇思妙用高级篇一:改进 Scottgu 的 "In" 扩展
    [个人]我的积分与排名日志
    反驳 老赵 之 “伪”递归
    c# 扩展方法奇思妙用变态篇一:由 Fibonacci 数列引出 “委托扩展” 及 “递推递归委托”
    c# 扩展方法奇思妙用高级篇五:ToString(string format) 扩展
    瑞士军刀 VS 单一职责原则
  • 原文地址:https://www.cnblogs.com/lj520fj/p/10944842.html
Copyright © 2020-2023  润新知