MySQL实训项目——餐饮点餐系统
项目简介:餐饮点餐系统是一款为餐厅和顾客提供便捷点餐服务的在线平台。通过该系统,餐厅能够展示其菜单,顾客可以浏览菜品,并将其加入购物车或直接下单。系统还提供了订单管理功能,方便餐厅跟踪和处理顾客的订单。
1. 建表DDL
CREATE TABLE `carts` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '购物车ID',`user_id` int(11) NOT NULL COMMENT '用户ID',`restaurant_id` int(11) NOT NULL COMMENT '餐厅ID',PRIMARY KEY (`id`),KEY `user_id` (`user_id`),KEY `restaurant_id` (`restaurant_id`)
) ENGINE=MyISAM AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COMMENT='购物车表';CREATE TABLE `cart_items` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '购物车项ID',`cart_id` int(11) NOT NULL COMMENT '购物车ID',`dish_id` int(11) NOT NULL COMMENT '菜品ID',`quantity` int(11) NOT NULL COMMENT '数量',PRIMARY KEY (`id`),KEY `cart_id` (`cart_id`),KEY `dish_id` (`dish_id`)
) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='购物车项表';CREATE TABLE `dishes` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜品ID',`name` varchar(100) NOT NULL COMMENT '菜品名称',`description` text COMMENT '菜品描述',`price` decimal(10,2) NOT NULL COMMENT '菜品价格',`category_id` int(11) NOT NULL COMMENT '所属分类ID',`restaurant_id` int(11) NOT NULL COMMENT '所属餐厅ID',PRIMARY KEY (`id`),KEY `category_id` (`category_id`),KEY `restaurant_id` (`restaurant_id`)
) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='菜品表';
CREATE TABLE `dish_categories` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜品分类ID',`name` varchar(50) NOT NULL COMMENT '分类名称',`restaurant_id` int(11) NOT NULL COMMENT '所属餐厅ID',PRIMARY KEY (`id`),KEY `restaurant_id` (`restaurant_id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='菜品分类表';CREATE TABLE `orders` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单ID',`user_id` int(11) NOT NULL COMMENT '用户ID',`restaurant_id` int(11) DEFAULT NULL COMMENT '餐厅ID',`order_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单日期',`total_price` decimal(10,2) DEFAULT '0.00' COMMENT '订单总价',`status` enum('待支付','已支付','已取消','已完成') DEFAULT '待支付' COMMENT '订单状态',PRIMARY KEY (`id`),KEY `user_id` (`user_id`),KEY `restaurant_id` (`restaurant_id`)
) ENGINE=MyISAM AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 COMMENT='订单表';CREATE TABLE `order_items` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单项ID',`order_id` int(11) NOT NULL COMMENT '订单ID',`dish_id` int(11) NOT NULL COMMENT '菜品ID',`quantity` int(11) NOT NULL COMMENT '数量',`price_per_item` decimal(10,2) NOT NULL COMMENT '单价',PRIMARY KEY (`id`),KEY `order_id` (`order_id`),KEY `dish_id` (`dish_id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='订单项表';CREATE TABLE `restaurants` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '餐厅ID',`name` varchar(100) NOT NULL COMMENT '餐厅名称',`address` varchar(255) NOT NULL COMMENT '餐厅地址',`opening_hours` varchar(50) DEFAULT NULL COMMENT '营业时间',`contact_number` varchar(20) DEFAULT NULL COMMENT '联系电话',PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='餐厅表';CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',`username` varchar(50) NOT NULL COMMENT '用户名',`password` varchar(255) NOT NULL COMMENT '密码',`email` varchar(100) DEFAULT NULL COMMENT '邮箱地址',`gender` enum('男','女') NOT NULL COMMENT '性别',`phone` varchar(20) DEFAULT NULL COMMENT '电话号码',PRIMARY KEY (`id`),UNIQUE KEY `username` (`username`),UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 COMMENT='用户表';
2. 插入数据(DML)
INSERT INTO `carts` VALUES ('1', '1', '1');
INSERT INTO `carts` VALUES ('2', '1', '2');
INSERT INTO `carts` VALUES ('3', '2', '4');
INSERT INTO `carts` VALUES ('4', '3', '3');
INSERT INTO `carts` VALUES ('5', '3', '1');
INSERT INTO `carts` VALUES ('6', '4', '1');
INSERT INTO `carts` VALUES ('7', '8', '2');
INSERT INTO `carts` VALUES ('8', '5', '1');
INSERT INTO `carts` VALUES ('9', '3', '1');
INSERT INTO `carts` VALUES ('10', '1', '1');
INSERT INTO `carts` VALUES ('11', '9', '1');
INSERT INTO `carts` VALUES ('12', '10', '8');
INSERT INTO `carts` VALUES ('13', '8', '6');
INSERT INTO `carts` VALUES ('14', '16', '4');
INSERT INTO `carts` VALUES ('15', '4', '6');
INSERT INTO `carts` VALUES ('16', '11', '5');
INSERT INTO `carts` VALUES ('17', '12', '8');
INSERT INTO `carts` VALUES ('18', '9', '1');INSERT INTO `cart_items` VALUES ('1', '1', '1', '2');
INSERT INTO `cart_items` VALUES ('2', '1', '2', '1');
INSERT INTO `cart_items` VALUES ('3', '2', '4', '1');
INSERT INTO `cart_items` VALUES ('4', '2', '5', '3');
INSERT INTO `cart_items` VALUES ('5', '2', '1', '7');
INSERT INTO `cart_items` VALUES ('6', '1', '7', '2');
INSERT INTO `cart_items` VALUES ('7', '3', '3', '1');
INSERT INTO `cart_items` VALUES ('8', '5', '6', '1');
INSERT INTO `cart_items` VALUES ('9', '6', '2', '7');
INSERT INTO `cart_items` VALUES ('10', '6', '2', '6');
INSERT INTO `cart_items` VALUES ('11', '4', '7', '3');
INSERT INTO `cart_items` VALUES ('12', '8', '1', '3');
INSERT INTO `cart_items` VALUES ('13', '5', '3', '9');
INSERT INTO `cart_items` VALUES ('14', '9', '3', '1');
INSERT INTO `cart_items` VALUES ('15', '8', '1', '0');
INSERT INTO `cart_items` VALUES ('16', '2', '4', '6');INSERT INTO `dishes` VALUES ('1', '水煮鱼', '麻辣鲜香,回味无穷', '58.00', '1', '1');
INSERT INTO `dishes` VALUES ('2', '宫保鸡丁', '色泽红亮,口感鲜美', '48.00', '1', '1');
INSERT INTO `dishes` VALUES ('3', '麻婆豆腐', '麻辣可口,下饭佳品', '38.00', '1', '1');
INSERT INTO `dishes` VALUES ('4', '白切鸡', '皮爽肉滑,鲜美无比', '68.00', '2', '2');
INSERT INTO `dishes` VALUES ('5', '清蒸鲈鱼', '鲜嫩可口,营养丰富', '78.00', '2', '2');
INSERT INTO `dishes` VALUES ('6', '菠萝咕噜肉', '酸甜可口,色泽诱人', '52.00', '2', '2');
INSERT INTO `dishes` VALUES ('7', '剁椒鱼头', '香辣可口,回味无穷', '62.00', '3', '3');
INSERT INTO `dishes` VALUES ('8', '辣椒炒肉', '香辣可口,下饭佳品', '42.00', '3', '3');
INSERT INTO `dishes` VALUES ('9', '红烧肉', '肥而不腻,入口即化', '55.00', '3', '3');
INSERT INTO `dishes` VALUES ('10', '扣碗小酥肉', '口感鲜嫩,色泽诱人', '56.00', '6', '4');
INSERT INTO `dishes` VALUES ('11', '开水白菜', '香味醇厚,汤味浓厚', '199.00', '4', '3');
INSERT INTO `dishes` VALUES ('12', '夫妻肺片', '色泽美观,质嫩鲜美', '89.00', '5', '9');
INSERT INTO `dishes` VALUES ('13', '鸡豆花', '吃鸡不见鸡,吃肉不见肉', '88.00', '3', '7');
INSERT INTO `dishes` VALUES ('14', '九转大肠', '色泽红润,质地软嫩', '199.00', '7', '4');
INSERT INTO `dishes` VALUES ('15', '爆炒腰花', '鲜嫩,润滑不腻', '189.00', '6', '4');
INSERT INTO `dishes` VALUES ('16', '白切鸡', '形状美观,原汁原味', '189.00', '2', '2');
INSERT INTO `dishes` VALUES ('17', '红烧乳鸽', '皮脆,肉滑,骨嫩,多汁', '88.00', '1', '1');INSERT INTO `dish_categories` VALUES ('1', '川菜', '1');
INSERT INTO `dish_categories` VALUES ('2', '粤菜', '2');
INSERT INTO `dish_categories` VALUES ('3', '湘菜', '3');
INSERT INTO `dish_categories` VALUES ('4', '鲁菜', '1');
INSERT INTO `dish_categories` VALUES ('5', '苏菜', '2');
INSERT INTO `dish_categories` VALUES ('6', '浙菜', '3');
INSERT INTO `dish_categories` VALUES ('7', '闽菜', '5');
INSERT INTO `dish_categories` VALUES ('8', '徽菜', '8');
INSERT INTO `dish_categories` VALUES ('9', '湘菜', '7');INSERT INTO `orders` VALUES ('1', '1', '1', '2024-06-27 13:59:06', '99.00', '待支付');
INSERT INTO `orders` VALUES ('5', '6', '4', '2024-06-27 17:47:18', '328.00', '待支付');
INSERT INTO `orders` VALUES ('4', '5', '2', '2024-06-27 17:44:19', '1100.00', '待支付');
INSERT INTO `orders` VALUES ('6', '7', '5', '2024-06-28 10:05:38', '43.00', '待支付');
INSERT INTO `orders` VALUES ('7', '8', '1', '2024-06-28 10:12:14', '159.00', '已支付');
INSERT INTO `orders` VALUES ('8', '9', '8', '2024-06-28 10:13:58', '190.00', '待支付');
INSERT INTO `orders` VALUES ('9', '10', '1', '2024-06-28 10:14:51', '126.00', '待支付');
INSERT INTO `orders` VALUES ('10', '11', '3', '2024-06-28 10:15:50', '112.00', '待支付');
INSERT INTO `orders` VALUES ('11', '12', '6', '2024-06-28 10:16:46', '442.00', '待支付');
INSERT INTO `orders` VALUES ('12', '13', '2', '2024-06-28 10:17:45', '45.00', '待支付');
INSERT INTO `orders` VALUES ('13', '14', '3', '2024-06-28 10:19:02', '123.00', '已支付');
INSERT INTO `orders` VALUES ('14', '15', '4', '2024-06-28 10:19:46', '232.00', '已支付');
INSERT INTO `orders` VALUES ('15', '16', '7', '2024-06-28 10:20:43', '565.00', '待支付');
INSERT INTO `orders` VALUES ('16', '17', '2', '2024-06-28 10:21:23', '123.00', '已支付');
INSERT INTO `orders` VALUES ('17', '18', '3', '2024-06-28 10:22:20', '563.00', '待支付');
INSERT INTO `orders` VALUES ('18', '19', '1', '2024-06-28 10:23:36', '213.00', '已取消');
INSERT INTO `orders` VALUES ('19', '20', '2', '2024-06-28 10:24:41', '123.00', '待支付');
INSERT INTO `orders` VALUES ('20', '21', '4', '2024-06-28 10:25:05', '13.00', '待支付');
INSERT INTO `orders` VALUES ('21', '22', '7', '2024-06-28 10:26:09', '123.00', '待支付');
INSERT INTO `orders` VALUES ('22', '23', '4', '2024-06-28 10:30:40', '112.00', '待支付');
INSERT INTO `orders` VALUES ('23', '11', '8', '2024-06-28 10:30:42', '762.00', '待支付');
INSERT INTO `orders` VALUES ('24', '12', '5', '2024-06-28 10:30:54', '199.00', '待支付');
INSERT INTO `orders` VALUES ('25', '5', '6', '2024-06-28 10:30:55', '192.00', '待支付');
INSERT INTO `orders` VALUES ('26', '2', '4', '2024-06-28 10:30:56', '172.00', '待支付');
INSERT INTO `orders` VALUES ('27', '1', '2', '2024-06-28 10:30:57', '234.00', '待支付');
INSERT INTO `orders` VALUES ('28', '7', '5', '2024-06-28 10:30:58', '423.00', '待支付');
INSERT INTO `orders` VALUES ('29', '13', '10', '2024-06-28 10:31:00', '2312.00', '待支付');
INSERT INTO `orders` VALUES ('30', '14', '3', '2024-06-28 10:31:01', '123.00', '已取消');
INSERT INTO `orders` VALUES ('31', '4', '3', '2024-06-28 10:31:03', '123.00', '待支付');
INSERT INTO `orders` VALUES ('32', '6', '6', '2024-06-28 10:31:04', '1534.00', '待支付');
INSERT INTO `orders` VALUES ('33', '8', '17', '2024-06-28 10:31:06', '2314.00', '待支付');
INSERT INTO `orders` VALUES ('34', '3', '2', '2024-06-28 10:31:07', '213.00', '待支付');
INSERT INTO `orders` VALUES ('35', '7', '7', '2024-06-28 10:31:09', '872.00', '已取消');
INSERT INTO `orders` VALUES ('36', '9', '1', '2024-06-28 10:31:10', '69.00', '待支付');
INSERT INTO `orders` VALUES ('37', '10', '3', '2024-06-28 10:31:11', '199.00', '待支付');
INSERT INTO `orders` VALUES ('38', '13', '1', '2024-06-28 10:31:12', '32.00', '已支付');
INSERT INTO `orders` VALUES ('39', '11', '4', '2024-06-28 10:31:13', '234.00', '待支付');
INSERT INTO `orders` VALUES ('40', '14', '1', '2024-06-28 10:31:15', '44.00', '已取消');
INSERT INTO `orders` VALUES ('41', '16', '1', '2024-06-28 10:31:16', '32.00', '待支付');
INSERT INTO `orders` VALUES ('42', '13', '1', '2024-06-28 10:51:13', '34.00', '待支付');INSERT INTO `order_items` VALUES ('1', '1', '1', '2', '58.00');
INSERT INTO `order_items` VALUES ('2', '1', '2', '1', '48.00');
INSERT INTO `order_items` VALUES ('3', '2', '2', '1', '99.00');
INSERT INTO `order_items` VALUES ('4', '4', '2', '4', '199.00');
INSERT INTO `order_items` VALUES ('5', '3', '6', '2', '169.00');
INSERT INTO `order_items` VALUES ('6', '6', '1', '5', '1100.00');
INSERT INTO `order_items` VALUES ('7', '5', '3', '1', '99.00');
INSERT INTO `order_items` VALUES ('8', '2', '1', '6', '499.00');
INSERT INTO `order_items` VALUES ('9', '3', '1', '5', '1099.00');INSERT INTO `restaurants` VALUES ('1', '江湖酒楼', '京城大街1号', '09:00-22:00', '12345678');
INSERT INTO `restaurants` VALUES ('2', '美味轩', '长安路88号', '10:00-21:30', '87654321');
INSERT INTO `restaurants` VALUES ('3', '清风阁', '西湖路123号', '11:00-23:00', '98765432');
INSERT INTO `restaurants` VALUES ('4', '湘味阁', '南京路338', '3:00-3:00', '32809000');
INSERT INTO `restaurants` VALUES ('5', '百香馆', '长安街1号', '8:00-23:30', '87892747');
INSERT INTO `restaurants` VALUES ('6', '味里香', '信安大厦770号', '9:00-23:00', '37182173');
INSERT INTO `restaurants` VALUES ('7', '鲁香楼', '城南花苑824号', '10:00-10:00', '73731389');
INSERT INTO `restaurants` VALUES ('8', '西湖谷味', '西湖路188号', '12:00-3:00', '17362172');
INSERT INTO `restaurants` VALUES ('9', '木叶谷', '长江大道990号', '13:00-23:00', '72838381');
INSERT INTO `restaurants` VALUES ('10', '烟火味道', '梧桐大道779号', '7:00-17:00', '82173261');
INSERT INTO `restaurants` VALUES ('11', '川上人家', '川南小街990号', '24:00', '89232781');
INSERT INTO `restaurants` VALUES ('12', '雅寻名苑', '寻南路889号', '17:00-4:00', '72182373');
INSERT INTO `restaurants` VALUES ('13', '一品鱼乡', '江南小镇770号', '8:00-23:30', '81276232');INSERT INTO `users` VALUES ('1', '小鱼儿', 'xiaoyu_pass', 'xiaoyu@example.com', '男', '15273663822');
INSERT INTO `users` VALUES ('2', '花无缺', 'huawu_pass', 'huawu@example.com', '男', '17532698837');
INSERT INTO `users` VALUES ('3', '苏樱', 'suying_pass', 'suying@example.com', '女', '16728366253');
INSERT INTO `users` VALUES ('4', '散兵', 'sanbing', 'sanbing@example.com', '男', '15738826639');
INSERT INTO `users` VALUES ('5', '管容祖', 'rongzu_pass', 'rongzu@example.com', '女', '15632782993');
INSERT INTO `users` VALUES ('6', '荣祖管', 'zuguan_pass', 'zurong@example.com', '男', '17644552789');
INSERT INTO `users` VALUES ('7', '张三', 'zhangsan_pass', 'zhangsan@example.com', '男', '17237368137');
INSERT INTO `users` VALUES ('8', '李三', 'lisi_pass', 'lisi@example.com', '男', '16273828372');
INSERT INTO `users` VALUES ('9', '李四', 'lisi_pass', 'lisi@examole.com', '女', '17261537183');
INSERT INTO `users` VALUES ('10', '刘五', 'liuwu_Pass', 'liuwu@example.com', '男', '15624416819');
INSERT INTO `users` VALUES ('11', '张先生', 'zhangxiansheng_pass', 'zhangxiansheng@example.com', '男', '18862715218');
INSERT INTO `users` VALUES ('12', '刘先生', 'liu_pass', 'liuxiansheng@example', '男', '19173762517');
INSERT INTO `users` VALUES ('13', '甄嬛', 'zhenhuan_pass', 'zhenhaun@examaple', '女', '18374625174');
INSERT INTO `users` VALUES ('14', '四郎', 'silang_pass', 'silang@example', '男', '18937253518');
INSERT INTO `users` VALUES ('15', '沈梅庄', 'shen_pass', 'meizhuang@example', '女', '19347264628');
INSERT INTO `users` VALUES ('16', '华妃', 'hua_pass', 'huafei@example', '女', '18427461731');
INSERT INTO `users` VALUES ('17', '皇后', 'huanghou_pass', 'huanghou@ashdascm.com', '女', '17637512653');
INSERT INTO `users` VALUES ('18', '浣碧', 'huanbi_pass', 'huanbi@example.com', '女', '15276837683');
INSERT INTO `users` VALUES ('19', '太后', 'taihou_pass', 'taihou@example.com', '女', '18631763837');
INSERT INTO `users` VALUES ('20', '齐妃', 'qifei_pass', 'qifei@example.com', '女', '17649279127');
INSERT INTO `users` VALUES ('21', '祺贵人', 'qiguiren_pass', 'qiguiren@example.com', '女', '13842947274');
INSERT INTO `users` VALUES ('22', '叶澜依', 'yelanyi_pass', 'lanyi@example.com', '女', '14723727382');
3. 简单查询
# 简单查询# 1. 查询所有菜品名称和价格:
SELECT name, price FROM dishes;
# 2. 查询所有餐厅的名称和地址:
SELECT name, address FROM restaurants;
# 3. 查询所有用户的用户名和性别:
SELECT username, gender FROM users;
效果:
4. 多表联合复杂查询
#多表联合复杂查询# 1. 查询用户名为“小鱼儿”的用户的购物车中所有菜品的信息:
SELECT dishes.name, dishes.price, cart_items.quantity
FROM users
JOIN carts ON users.id = carts.user_id
JOIN cart_items ON carts.id = cart_items.cart_id
JOIN dishes ON cart_items.dish_id = dishes.id
WHERE users.username = '小鱼儿';
# 2. 查询所有订单中包含“水煮鱼”的订单信息,包括订单号、用户名、订单日期和订单总价:
SELECT orders.id, users.username, orders.order_date, orders.total_price
FROM orders
JOIN order_items ON orders.id = order_items.order_id
JOIN users ON orders.user_id = users.id
JOIN dishes ON order_items.dish_id = dishes.id
WHERE dishes.name = '水煮鱼';
# 3. 查询每个餐厅的菜品数量:
SELECT restaurants.name, COUNT(dishes.id) as dish_count
FROM restaurants
LEFT JOIN dishes ON restaurants.id = dishes.restaurant_id
GROUP BY restaurants.id;
# 4.查询每个用户在购物车中添加的菜品总数量:
SELECT users.username, SUM(cart_items.quantity) as total_quantity
FROM users
JOIN carts ON users.id = carts.user_id
JOIN cart_items ON carts.id = cart_items.cart_id
GROUP BY users.id;
# 5. 查询每个餐厅的订单总金额:
SELECT restaurants.name, SUM(orders.total_price) as total_revenue
FROM orders
JOIN restaurants ON orders.restaurant_id = restaurants.id
GROUP BY orders.restaurant_id;
效果:
5. 触发器 插入-修改-删除
create trigger after_inster_user -- 创建触发器的名称
after insert on `users` -- 用户表执行插入操作之后被出发的触发器
for each row -- 每行数据都要进行触发
beginINSERT INTO orders (user_id, total_price) -- 在orders表中插入一行数据VALUES (NEW.id, 0.00); -- 使用NEW.id作为新插入行的user_id,total_price为0.00
end ;
$$
delimiter ; -- 结束$$的有效性更换成;insert into users values (0,'散兵','sanbing','sanbing','男','99999999999')-- 删除触发器
DROP TRIGGER IF EXISTS `after_delete_user`;
DELIMITER ;;
CREATE TRIGGER `after_delete_user` AFTER DELETE ON `users` FOR EACH ROW
BEGIN-- 删除与该用户相关的订单DELETE FROM `orders` WHERE `user_id` = OLD.id;
END
;;
DELIMITER ;-- 更新触发器
DROP TRIGGER IF EXISTS `after_update_user`;
DELIMITER ;;
CREATE TRIGGER `after_update_user` AFTER UPDATE ON `users` FOR EACH ROW
BEGIN-- 更新与该用户相关的订单中的某些信息(例如,更新订单中的用户名)UPDATE `orders` SET `user_id` = NEW.id WHERE `user_id` = OLD.id;
END
;;
DELIMITER ;
6. 创建存储过程
DELIMITER //CREATE PROCEDURE CreateOrder(IN p_user_id INT,IN p_restaurant_id INT,IN p_dish_id INT,IN p_quantity INT
)
BEGINDECLARE v_order_id INT;DECLARE v_price_per_item DECIMAL(10,2);-- 获取菜品价格SELECT price INTO v_price_per_item FROM dishes WHERE id = p_dish_id;-- 创建新订单INSERT INTO orders (id,user_id, restaurant_id,order_date, total_price,status)VALUES (22,6,1,'2024-06-27 17:47:18,880','已支付');-- 获取新插入订单的IDSET v_order_id = LAST_INSERT_ID();-- 插入订单项INSERT INTO order_items (order_id, dish_id, quantity, price_per_item)VALUES (v_order_id, p_dish_id, p_quantity, v_price_per_item);-- 更新订单总价UPDATE ordersSET total_price = (SELECT SUM(price_per_item * quantity) FROM order_items WHERE order_id = v_order_id)WHERE id = v_order_id;
END //DELIMITER ;-- CALL CreateOrder(1, 1,1 ,99 );
本项目实现了餐饮点餐系统的基本功能,包括菜品浏览、购物车管理、订单处理等,达到了预期目标。在项目中我们遇到了数据库优化、并发控制等技术难题,通过查阅资料和团队讨论,成功找到解决方案。未来我们计划对餐饮点餐系统进行优化升级,增加用户评价功能,提高用户体验,同时考虑移动端的适配问题。
相关文章:

MySQL实训项目——餐饮点餐系统
项目简介:餐饮点餐系统是一款为餐厅和顾客提供便捷点餐服务的在线平台。通过该系统,餐厅能够展示其菜单,顾客可以浏览菜品,并将其加入购物车或直接下单。系统还提供了订单管理功能,方便餐厅跟踪和处理顾客的订单。 1. …...

昇思MindSpore学习总结七——模型训练
1、模型训练 模型训练一般分为四个步骤: 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后,可以进行模型的训练与评估。 2、构建数据集 首先从数据集 Dataset加载代码࿰…...

AI时代创新潮涌,从探路到引路,萤石云引领千行百业创新
步入AI新时代,AI、云计算、大数据等技术迅速迭代,并日益融入经济社会发展各领域全过程,数字经济成为推动千行百业转型升级的重要驱动力量。 今年的政府工作报告提出,深入推进数字经济创新发展。积极推进数字产业化、产业数字化&a…...

计算机毕业设计Python深度学习美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
Python美食推荐系统开题报告 一、项目背景与意义 随着互联网和移动技术的飞速发展,人们的生活方式发生了巨大变化,尤其是餐饮行业。在线美食平台如雨后春笋般涌现,为用户提供了丰富的美食选择。然而,如何在海量的餐饮信息中快速…...
【鸿蒙学习笔记】鸿蒙ArkTS学习笔记
应用开发导读:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-dev-guide-V5 这里写目录标题 基础组件通用属性容器组件Button 迭代完备 【鸿蒙培训】第1天・环境安装 【鸿蒙培训】第2天・装饰器・组件和页面…...

广东行政职业学院数据智能订单班开班暨上进双创工作室签约仪式圆满结束
为响应教育领域数字化与智能化浪潮这一变革,给学生提供更好的教育资源和实践机会,6月27日,“泰迪广东行政职业学院数据智能订单班开班仪式暨上进双创工作室签约授牌”在广东行政职业学院举行。广东行政职业学院智慧政务学院(电子信…...
python与matlab微分切片的区别
python python使用np中的linespace生成等间隔数值, import numpy as np numpy.linspace(start, stop, num50, endpointTrue, retstepFalse, dtypeNone, axis0)start:序列的起始值。stop:序列的结束值。如果 endpoint 为 True,该…...

MSPG3507——蓝牙接收数据显示在OLED,滴答定时器延时500MS
#include "ti_msp_dl_config.h" #include "OLED.h" #include "stdio.h"volatile unsigned int delay_times 0;//搭配滴答定时器实现的精确ms延时 void delay_ms(unsigned int ms) {delay_times ms;while( delay_times ! 0 ); } int a0; …...

Linux 安装 Redis 教程
优质博文:IT-BLOG-CN 一、准备工作 配置gcc:安装Redis前需要配置gcc: yum install gcc如果配置gcc出现依赖包问题,在安装时提示需要的依赖包版本和本地版本不一致,本地版本过高,出现如下问题:…...
【高考志愿】建筑学
目录 一、专业介绍 1.1 专业定义 1.2 专业培养目标 1.3 核心课程 二、就业方向和前景 2.1 就业方向 2.2 专业前景 三、报考注意 四、行业趋势与未来展望 五、建筑学专业排名 一、专业介绍 1.1 专业定义 建筑学,这一充满艺术与科技魅力的学科,…...

Kubernetes的发展历程:从Google内部项目到云原生计算的基石
目录 一、起源与背景 1.1 Google的内部项目 1.2 Omega的出现 二、Kubernetes的诞生 2.1 开源的决策 2.2 初期发布 三、Kubernetes的发展历程 3.1 社区的成长 3.2 生态系统的壮大 3.3 重大版本和功能 3.4 多云和混合云的支持 四、Kubernetes的核心概念 4.1 Pod 4.…...
/proc/config.gz
前言 有时候,我们想知道一个运行着的内核都打开了哪些编译选项,当然,查看编译环境的 .config 文件是一个不错的选择,除此之外,还有没有别的办法呢?当然有,那就是 /proc/config.gz。 一睹风采 …...

论坛万能粘贴手(可将任意文件转为文本)
该软件可将任意文件转为文本。 还原为原文件的方法:将得到的文本粘贴到记事本,另存为UUE格式,再用压缩软件如winrar解压即可得到原文件。建议用于小软件。 下载地址:https://download.csdn.net/download/wgxds/89505015 使用演示…...

学习笔记——动态路由——OSPF(OSPF协议的工作原理)
八、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系 (2)建立邻居关系后,给邻居路由器发送数据库描述报文(DBD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…...

Mybatis1(JDBC编程和ORM模型 MyBatis简介 实现增删改查 MyBatis生命周期)
目录 一、JDBC编程和ORM模型 1. JDBC回顾 2. JDBC的弊端 3. ORM模型 Mybatis和hibernate 区别: 4. mybatis 解决了jdbc 的问题 二、MyBatis简介 1. MyBatis快速开始 1.1 导入jar包 1.2 引入 mybatis-config.xml 配置文件 1.3 引入 Mapper 映射文件 1.3 测试 …...

论文阅读YOLO-World: Real-Time Open-Vocabulary Object Detection
核心: 开放词汇的实时的yolo检测器。重参数化的视觉语言聚合路径模块Re-parameterizable VisionLanguage Path Aggregation Network (RepVL-PAN)实时核心:轻量化的检测器离线词汇推理过程重参数化 方法 预训练方案:将实例注释重新定义为区域…...
SM2的签名值byte数组与ASN.1互转
ASN.1抽象语言标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式,它提供了一整套正规的格式用于描述对象的结构。 一、该结构的应用场景 例如在做待签名的数字信封时,数字信封使用ASN.1封装,这个时…...

云计算与生成式AI的技术盛宴!亚马逊云科技深圳 Community Day 社区活动流程抢先知道!
小李哥最近要给大家分享7月7日在深圳的即将举办的亚马逊云科技生成式AI社区活动Community Day ,干货很多内容非常硬核,不仅有技术分享学习前沿AI技术,大家在现场还可以动手实践沉浸式体验大模型,另外参与现场活动还可以领取诸多精…...

【鸿蒙学习笔记】基础组件Progress:进度条组件
官方文档:Progress 目录标题 作用最全属性迭代追加进度赋值风格样式 作用 进度条组件 最全属性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 颜色.width(200)// 大小.height(50)// 高度.value(50)// 进度可更…...

前程无忧滑块
声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言(lianxi …...

基于dify的营养分析工作流:3分钟生成个人营养分析报告
你去医院做体检,需要多久拿到体检报告呢?医院会为每位病人做一份多维度的健康报告吗?"人工报告需1小时/份?数据误差率高达35%?传统工具无法个性化? Dify工作流AI模型的组合拳,正在重塑健康…...
Java数据校验:确保数据完整性和正确性
在软件开发中,数据校验是确保应用程序数据完整性和正确性的关键步骤。Java 提供了多种方式来实现数据校验,从简单的条件检查到复杂的框架支持。在这篇博客中,我们将探讨 Java 中数据校验的重要性、常用的校验注解以及如何整合校验框架来提高代…...

设计模式(代理设计模式)
代理模式解释清楚,所以如果想对一个类进行功能上增强而又不改变原来的代码情况下,那么只需要让这个类代理类就是我们的顺丰,对吧?并行增强就可以了。具体增强什么?在哪方面增强由代理类进行决定。 代码实现就是使用代理对象代理相关的逻辑…...

如何思考?分析篇
现代人每天刷 100 条信息,却难静下心读 10 页书。 前言: 我一直把思考当作一件生活中和工作中最为重要的事情。但是我发现当我想写一篇跟思考有关的文章时,却难以下手。因为思考是一件非常复杂的事情,用文字描述十分的困难。 读书…...

【Vue】指令补充+样式绑定+计算属性+侦听器
【指令补充】 【指令修饰符】 指令修饰符可以让指令的 功能更强大,书写更便捷 分类: 1.按键修饰符(侦测当前点击的是哪个按键) 2.事件修饰符(简化程序对于阻止冒泡, 一些标签的默认默认行为的操作&…...
Java Map完全指南:从基础到高级应用
文章目录 1. Map接口概述Map的基本特性 2. Map接口的核心方法基本操作方法批量操作方法 3. 主要实现类详解3.1 HashMap3.2 LinkedHashMap3.3 TreeMap3.4 ConcurrentHashMap 4. 高级特性和方法4.1 JDK 1.8新增方法4.2 Stream API结合使用 5. 性能比较和选择建议性能对比表选择建…...
es地理信息索引的类型以及geo_point和geo_hash的关系
Elasticsearch中地理信息索引的主要数据类型有两种: geo_point:用于存储单个地理点坐标(如纬度/经度),支持精确位置查询和基于距离的搜索操作。geo_shape:用于存储复杂的地理形状(如点、线、多…...

行为设计模式之Command (命令)
行为设计模式之Command (命令) 前言: 需要发出请求的对象(调用者)和接收并执行请求的对象(执行者)之间没有直接依赖关系时。比如遥控器 每个按钮绑定一个command对象,这个Command对…...

Cursor + Claude 4:微信小程序流量主变现开发实战案例
前言 随着微信小程序生态的日益成熟,越来越多的开发者开始关注如何通过小程序实现流量变现。本文将详细介绍如何使用Cursor编辑器结合Claude 4 AI助手,快速开发一个具备流量主变现功能的微信小程序,并分享实际的开发经验和变现策略。 项目…...

北大开源音频编辑模型PlayDiffusion,可实现音频局部编辑,比传统 AR 模型的效率高出 50 倍!
北大开源了一个音频编辑模型PlayDiffusion,可以实现类似图片修复(inpaint)的局部编辑功能 - 只需修改音频中的特定片段,而无需重新生成整段音频。此外,它还是一个高性能的 TTS 系统,比传统 AR 模型的效率高出 50 倍。 自回归 Tra…...