餐厅点餐系统(go语言 + 控制台程序)

本文详细介绍了使用Golang和gorm开发的DineGoSystem餐厅点餐系统的控制台版本,包括点餐查看、购物车管理和订单记录功能的实现过程,以及关键技术的运用和数据处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DineGoSystem餐厅点餐系统(控制台版本)

描述

简单模拟一个餐厅的点餐过程,用户可以查看菜品,加入购物车,模拟支付,查看订单等。

功能模块

  1. 点餐
  2. 查看购物车
  3. 订单记录

技术说明

使用 golang 语言开发,后台使用 gorm 框架连接数据库,使用 MVC 三层实现的一个控制台的小程序。
由于所涉及的文件太多,这里就只展示连接数据库Dao层、业务逻辑层Service、handler 的实现。

1. 点餐

菜品只做了查询操作,数据从数据库中获取。

Dao层

// QueryMenu
// @LastUpdateTime 2024/3/12 22:06:00
// @Description 查询菜品列表
// @Demand Version V1.0
func (dao *MenuDao) QueryMenu(menus *[]model.Menu) error {
   
	return model.DB.Where("del_flag = 0").
		Find(&menus).Error
}

Service层

package service

import (
	"dine_go_system/dao"
	"dine_go_system/model"
)

type MenuService struct {
   
	menuDao *dao.MenuDao
}

// NewMenuService
// @LastUpdateTime 2024/3/12 22:08:00
// @Description 构造函数
// @Demand Version V1.0
func NewMenuService() *MenuService {
   
	return &MenuService{
   menuDao: &dao.MenuDao{
   }}
}

// QueryMenu
// @LastUpdateTime 2024/3/12 22:11:00
// @Description 查询菜品列表数据集
// @Demand Version V1.0
func (s *MenuService) QueryMenu() []model.Menu {
   
	var menus []model.Menu
	// 查询菜品列表数据集
	if err := s.menuDao.QueryMenu(&menus); err != nil {
   
		return nil
	}
	return menus
}

handler

package handler

import (
	"dine_go_system/model"
	"dine_go_system/service"
	"dine_go_system/tool"
	"fmt"
	"strconv"
	"time"
)

type MenuHandler struct {
   
	menuService  *service.MenuService
	orderService *service.OrderService
}

// NewMenuHandler
// @LastUpdateTime 2024/3/13 22:08:00
// @Description 构造函数
// @Demand Version V1.0
func NewMenuHandler() *MenuHandler {
   
	return &MenuHandler{
   
		menuService:  service.NewMenuService(),
		orderService: service.NewOrderService(),
	}
}

// DisplayMenu
// @LastUpdateTime 2024/3/13 22:09:00
// @Description 展示菜单列表
// @Demand Version V1.0
func (h *MenuHandler) DisplayMenu() {
   
	// 清空控制台
	tool.ClearConsole()
	// 获取菜品数据
	menus := h.menuService.QueryMenu()
	if len(menus) > 0 {
   
		// 标题
		fmt.Println("╔═════════════════════════════════════════════════╗")
		fmt.Printf(" ")
		fmt.Printf(" %s%-4s%-8s%-5s%-8s%-9s%s\n", model.Green, "编号", "菜名", "数量", "价格(元)", "描述", model.Reset)
		// 输出数据
		for _, item := range menus {
   
			fmt.Printf(" ")
			fmt.Printf(" %-6s%-7s%-7s%-9s%-20s\n", strconv.Itoa(item.MenuId), item.MenuName, strconv.Itoa(item.Quantity), "¥"+strconv.FormatFloat(item.Price, 'f', 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值