# lv_ordering_system **Repository Path**: zhangzhangla/lv_ordering_system ## Basic Information - **Project Name**: lv_ordering_system - **Description**: 基于LVGL+Linux的古茗奶茶店自助点餐系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-04-21 - **Last Updated**: 2025-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # lv_ordering_system 项目介绍 基于LVGL+Linux的古茗奶茶店自助点餐系统 **![image-20250506092325078](C:\Users\13776\AppData\Roaming\Typora\typora-user-images\image-20250506092325078.png)** ### **一、设计目标** 1. **提升效率**:通过触摸屏自助点餐,减少人工服务等待时间,降低奶茶店高峰时段排队压力。 2. **优化体验**:直观的交互界面(支持滑动翻页、实时购物车更新),简化顾客点餐流程。 3. **数据化管理**:实现库存、价格、订单流水的数字化管理。 4. **低成本部署**:基于嵌入式硬件(6818开发板)和开源技术(LVGL、Linux),降低系统搭建成本。 ### 二、功能描述 - **顾客端**: - 注册/登录:用户名+密码注册,支持退出,切换账号,账号有管理员权限和用户权限可选。 - 菜品浏览:点击商品页分类栏查看不同分类(奶茶、果茶、咖啡) - 购物车管理:动态增减商品数量,实时显示总价。 - 订单生成:下单后展示消费明细(菜品单价、数量、总金额),允许返回继续加购。 - 支付模拟:选择微信/支付宝支付,跳转订单界面。 - 小票打印:生成`.txt`格式小票文件,记录订单时间、菜品列表及金额。 - **管理员端**: - 菜品管理:增删改查菜品信息(ID、名称、价格、库存、图片路径、分类)。 - 流水查询:查看订单。 ### 三、设计方案 #### **1. 硬件设计** - **主控模块**:ARM 6818开发板,搭载Linux系统。 - **交互模块**:7寸分辨率800×480电容触摸屏。 #### **2. 软件设计** - **前端(LVGL)**: - 界面分层: - 商品页:商品分类,商品列表,选择商品数量,共计商品总价,提交订单,支付商品,生成订单 - 订单页:生成订单详情,显示订单日期,商品数量,单价,总价。 - 我的页面:用户登录注册后,根据权限(USER权限:查看登录用户信息,MANAGE权限:增加增删改查商品信息权限)。 - 交互逻辑:通过触摸事件绑定按钮和滑动回调,动态刷新UI组件。 - **后端(链表,txt文件)**: - 数据设计: - 用户表( int id; *// 用户id号* char name[50]; *// 用户名称* char password[50]; *// 用户密码* char icon[100]; *// 用户名称用户图片链接* char ordering[100]; *// 用户订单文件链接* char power[32]; *// 用户权限* - 商品表( long pro_id; *// 商品ID* char name[50]; *// 商品名称* double price; *// 商品价格* int quantity; *// 商品库存* char category[30]; *// 商品分类* char image_url[200]; *// 商品图片链接*) - 订单表( - typedef struct **Order_info** { long pro_id; char name[50]; double price; int choise_num; } **order_info_t**; *//订单结构体* typedef struct **Order** { char order_id[80]; struct **Order_info** *Order_data; double price_sum; int goods_number; } **order_t**;) ### 四、系统框架 ``` ┌───────────────────────┐ │ 应用层 │ │ LVGL界面 + 业务逻辑 │ ├───────────────────────┤ │ 服务层 │ │ 链表 + txt文件 │ ├───────────────────────┤ │ 系统层 │ │ Linux内核 + 触摸屏驱动 │ ├───────────────────────┤ │ 硬件层 │ │ 6818开发板 + 显示屏 │ └───────────────────────┘ ``` ### 五、实现过程 #### **1. 开发环境搭建** - 安装ARM-Linux交叉编译工具链,配置LVGL库(v8.2)。 - 数据库初始化:使用链表创建数据结构。 #### **2. LVGL界面开发** - **UI组件定制**: - 滑动列表:通过LVGL的组件实现商品展示,用户展示。 - 动态加载:根据分类从txt文件读取菜品数据,用户数据,生成数据列表 - **事件绑定**: - 触摸点击:绑定操作按钮的回调函数。 - 滑动检测:通过tabview控件识别左右滑动,实现不同页面的跳转。 #### **3. 功能模块实现** - **用户登录**:采用文件存储用户数据,在系统运行中中通过定义链表从文件中加载用户数据,再到控件中展示 - **商品列表**:采用文件存储用户数据,在运行中,建立双向循环链表,实现对商品数据的加载,通过控件展示到界面 - **购物车同步**:通过`lv_label_set_text_fmt()`实时更新显示,用链表存储订单数据。 #### **5. 测试与优化** - **压力测试**:模拟连续20次点餐操作,确保无内存泄漏。