C#餐饮收银系统

news2024/12/25 12:44:27

一、引言

餐饮收银系统是一种用于管理餐馆、咖啡厅、快餐店等餐饮业务的计算机化工具。它旨在简化点餐、结账、库存管理等任务,提高运营效率,增强客户体验,同时提供准确的财务记录。C# 餐饮收银系统是一种使用C#编程语言开发的餐饮业务管理软件,具有以下主要功能:

二、需求分析

分析思维导图
在这里插入图片描述

三、程序截图

登录

在这里插入图片描述

管理员主界面

![在这里插入图片描述](https://img-blog.csdnimg.cn/2a4f8e78598f4be484b1e418e374e34d.png

添加食物界面

在这里插入图片描述

服务员订单界面

在这里插入图片描述

修改食物详情界面

在这里插入图片描述

未完成订单界面

在这里插入图片描述

支付成功界面

在这里插入图片描述

四、程序说明

管理员账号和密码:admin, admin
服务员账号和密码: test, test
注:可自行注册账号并登录,但是只能注册服务员账号

五、代码

AdminWindows.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace Cashier
{
    /// <summary>
    /// AdminWindow.xaml 的交互逻辑
    /// </summary>
    public partial class AdminWindow : Window
    {
        public AdminWindow()
        {
            InitializeComponent();
            frame.Source = new Uri("MenuEditPage.xaml", UriKind.Relative);
        }

        private void textBlock2_Copy_Click(object sender, RoutedEventArgs e)
        {
            Button btn = sender as Button;
            String choice = btn.Content.ToString();
            switch (choice)
            {
                case "菜单编辑":
                    LoadMenuEditPage();
                    break;
                case "添加食物":
                    LoadAddFoddPage();
                    break;
                case "食物编辑":
                    LoadFoodEditPage();
                    break;
                case "已完成订单":
                    LoadOderCompletedPage();
                    break;
                case "未完成订单":
                    LoadOderNotPage();
                    break;
            }
        }

        private void LoadMenuEditPage()
        {
            frame.Source = new Uri("MenuEditPage.xaml", UriKind.Relative);
        }

        private void LoadAddFoddPage()
        {
            frame.Source = new Uri("AddFoodPage.xaml", UriKind.Relative);
        }

        private void LoadOderCompletedPage()
        {
            frame.Source = new Uri("OderCompletedPage.xaml", UriKind.Relative);
        }

        private void LoadOderNotPage()
        {
            frame.Source = new Uri("OderNotPage.xaml", UriKind.Relative);
        }

        private void LoadFoodEditPage()
        {
            frame.Source = new Uri("FoodEditPage.xaml", UriKind.Relative);
        }
    }
}

AddFoodPage.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using MySql.Data.MySqlClient;
namespace Cashier
{
    /// <summary>
    /// AddFoodPage.xaml 的交互逻辑
    /// </summary>
    ///  
    public partial class AddFoodPage : Page
    {

        private String mysqlConnStr = "server=localhost;User Id=root;password=;Database=canyin";
        public AddFoodPage()
        {
            InitializeComponent();
        }

        private void btn_Click(object sender, RoutedEventArgs e)
        {

            InsertFood();

        }

        private void InsertFood()
        {
            String foodName = foodNameBox.Text.ToString();
            String price = priceBox.Text.ToString();
            String category = categoryBox.Text;

            if(foodName.Equals("") || price.Equals("") || category.Equals(""))
            {
                resultBox.Text = "请将食物信息填写完整";
                return;
            }

            // MessageBox.Show("食物名称是:" + foodName + ", 价格是: " + price + ", 种类是: " + category);
            try
            {
             
                MySqlConnection conn = new MySqlConnection(mysqlConnStr);
                conn.Open();
                String cmd = "insert into food(name, price, category) values('" + foodName + "','" + price + "','" + category + "')";
                MySqlCommand mycmd = new MySqlCommand(cmd, conn);
                if (mycmd.ExecuteNonQuery() > 0)
                {           
                    resultBox.Text = "食品添加成功";
                    foodNameBox.Text = "";
                    priceBox.Text = "";
                    categoryBox.Text = "";
                    conn.Close();
                }
            }
            catch (Exception e)
            {
                resultBox.Text = "食品添加失败" + e.Message;
     
            }
        }

      
    }
}

CommonValue.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Cashier
{
    class CommonValue
    {
        public static int EDIT_FOOD_ID = 5;
        public static String mysqlConectString = "server=localhost;User Id=root;password=;Database=canyin";
        public static String USER_NAME;
        public static int FOOD_PAY_ID = 556;
    }
}

MainWindows.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using MySql.Data.MySqlClient;

namespace Cashier
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        //用户账户
        private String user;
        private String password;
        public MainWindow()
        {
            InitializeComponent();
        }

        private void richTextBox_TextChanged(object sender, TextChangedEventArgs e)
        {

        }

        private void textBox_TextChanged(object sender, TextChangedEventArgs e)
        {

        }

        //监听注册按钮
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Button btn = sender as Button;
            String choice = btn.Content.ToString();
            switch (choice)
            {
                case "登录":
                    UserLogin();
                    break;
                case "注册":
                    UserRegister();
                    break;
            }
            
        
        }

        private void button1_Click_1(object sender, RoutedEventArgs e)
        {

        }

        private void UserLogin()
        {
            //用户登录的逻辑代码
            user = userBox.Text.ToString();
            password = passwordBox.Text.ToString();
            if(user.Equals(""))
            {
                MessageBox.Show("请输入用户名");
            }
            else if(password.Equals(""))
            {
                MessageBox.Show("请输入密码");
            }
            else
            {
                CheckInfoAndLogin();
            }
        }

        private void UserRegister()
        {
            //跳转到登陆界面
            RegisterWindow register = new RegisterWindow();
            register.Show();
            this.Close();
        }

        //检查用户的数据,如果查询失败则返回密码错误
        private void CheckInfoAndLogin()
        {
            
            try
            {             
                MySqlConnection conn = new MySqlConnection(CommonValue.mysqlConectString);
                conn.Open();
                string cmd = "select * from user where user='" + user + "'";
                MySqlCommand myCmd = new MySqlCommand(cmd, conn);
                MySqlDataReader reader = myCmd.ExecuteReader();
                reader.Read();
                string dbUser = reader["user"].ToString();
                string dbPassword = reader["password"].ToString();
                if (password.Equals(dbPassword) && dbUser.Equals("admin"))
                {
                    OpenAdminWindow();
                    CommonValue.USER_NAME = user;
                }
                else if (password.Equals(dbPassword))
                {
                    OpenWaiterWindow();
                    CommonValue.USER_NAME = user;
                }
                else
                {
                    MessageBox.Show("密码输入错误,请重新输入!");
                }
                conn.Close();
            }
        
            catch(Exception e)
            {
                String msg = e.Message;
                MessageBox.Show("数据库连接错误!" + msg);
            }
          
        }

        //打开管理员窗口
        private void OpenAdminWindow()
        {
            AdminWindow aw = new AdminWindow();
            aw.Show();
            this.Close();
        }

        //打开服务员窗口
        private void OpenWaiterWindow()
        {
            WaiterWindow ww = new WaiterWindow();
            ww.Show();
            this.Close();
        }

    }
}

OderNotPage.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
using System.Data;

namespace Cashier
{
    /// <summary>
    /// OderNotPage.xaml 的交互逻辑
    /// </summary>
    public partial class OderNotPage : Page
    {
        public OderNotPage()
        {
            InitializeComponent();
            ShowOders();
        }

        private void ShowOders()
        {
            try
            {
                //获取表格
                DataTable data = new DataTable("oder");
                data.Columns.Add(new DataColumn("oder_id", typeof(string)));
                data.Columns.Add(new DataColumn("sum", typeof(string)));

                MySqlConnection conn = new MySqlConnection(CommonValue.mysqlConectString);
                conn.Open();
                string cmd = "select * from oder where complete=0";
                MySqlCommand myCmd = new MySqlCommand(cmd, conn);
                MySqlDataAdapter mda = new MySqlDataAdapter(cmd, conn);
                MySqlDataReader reader = myCmd.ExecuteReader();
                while (reader.Read())
                {

                    string id = reader["oder_id"].ToString();
                    string name = reader["sum"].ToString();

                    data.Rows.Add(id, name);
                }
                listView.DataContext = data.DefaultView;

                conn.Close();

            }
            catch (Exception e)
            {
                MessageBox.Show("查询订单失败:" + e.Message);
            }

        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            CommonValue.FOOD_PAY_ID = int.Parse(idPayBox.Text.ToString());
            NavigationWindow window = new NavigationWindow();
            window.Source = new Uri("OderDetailPage.xaml", UriKind.Relative);
            window.Show();
        }
    }
}

六、交流与联系

q:969060742 文档、完整代码、sql、程序资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1059530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SDK Vitis记录

文章目录 SDK记录SDK中报错“undefined reference to sqrt”的解决方法通过XML文件导入工程的include路径方法说明 其他设置编译选项设置某些文件/文件夹不编译单独设置文件的编译选项 向存储区中导入/导出数据通过GUI操作使用命令行操作 产生C代码的MAP文件在Xilinx SDK 工程的…

Golang 中的调试技巧

掌握有效的策略和工具&#xff0c;实现顺畅的开发 调试是每位开发人员都必须掌握的关键技能。它是识别、隔离和解决代码库中问题的过程。在 Golang 的世界中&#xff0c;掌握有效的调试技巧可以显著提升您的开发工作流程&#xff0c;并帮助您创建更可靠和健壮的应用程序。在本…

C语言 —— 函数栈帧的创建和销毁

在我们之前学习函数的时候&#xff0c;我们可能有很多困惑? 比如: 局部变量是怎么创建的?为什么局部变量的值是随机值?函数是怎么传参的?传参的顺序是怎样的?形参和实参是什么关系?函数调用是怎么做的?函数调用是结束后怎么返回的? 那么要解决这些问题, 我们就需要知道…

Raspberry Pi 5 新平台 新芯片组

Raspberry Pi 5 的 CPU 和 GPU 性能提高了两到三倍&#xff1b;内存和 I/O 带宽大约是两倍&#xff1b;并且是首款采用英国剑桥内部设计的芯片的 Raspberry Pi 计算机&#xff0c;4GB 型号的售价为 60 美元&#xff0c;8GB 版本的售价为 80 美元 主要特点包括&#xff1a; 2.4…

Zama的fhEVM:基于全同态加密实现的隐私智能合约

1. 引言 Zama的fhEVM定位为&#xff1a; 基于全同态加密实现的隐私智能合约 解决方案 开源代码见&#xff1a; https://github.com/zama-ai/fhevm&#xff08;TypeScript Solidity&#xff09; Zama的fhEVM协议中主要包含&#xff1a; https://github.com/zama-ai/tfhe-…

Windows11+VS2022+OCCT7.6.0安装配置记录

Windows11VS2022OCCT7.6.0安装配置记录 工具及源码准备VS2022以及CMake下载OCCT源码下载第三方库 CMake修改occt_toolkit.cmake进行CMake Visual Studio环境配置配置包含目录配置库目录配置链接器设置系统环境变量配置项目调试环境环境测试 其他方法 主要参考此文&#xff0c;在…

自然语言处理的分类

动动发财的小手&#xff0c;点个赞吧&#xff01; 简介 作为理解、生成和处理自然语言文本的有效方法&#xff0c;自然语言处理&#xff08;NLP&#xff09;的研究近年来呈现出快速传播和广泛采用。鉴于 NLP 的快速发展&#xff0c;获得该领域的概述并对其进行维护是很困难的。…

Golang 语言学习 01 包含如何快速学习一门新语言

Golang方向 区块链 go服务器端 (后台流量支撑程序) 支撑主站后台流量&#xff08;排序&#xff0c;推荐&#xff0c;搜索等&#xff09;&#xff0c;提供负载均衡&#xff0c;cache&#xff0c;容错&#xff0c;按条件分流&#xff0c;统计运行指标 (qps&#xff0c; latenc…

java飞机大战

一、 概述 1.1 项目简介 本次Java课程设计是做一个飞机大战的游戏&#xff0c;应用Swing编程&#xff0c;完成一个界面简洁流畅、游戏方式简单&#xff0c;玩起来易于上手的桌面游戏。该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库、事件监听以及贴图技术。 1…

微信小程序WebSocket实现stream流式聊天对话功能

要在微信小程序实现聊天对话功能&#xff0c;回话是流式应答&#xff0c;这里使用了WebSocket技术。WebSocket大家应该都很熟悉&#xff0c;使用wx.connectSocket就可以了。这里可能需要注意下的是流式应答&#xff0c;后端如何发送&#xff0c;前端如何接收。直接上代码&#…

【1】c++设计模式——>UML类图的画法

UML介绍 UML:unified modeling language 统一建模语言 面向对象设计主要就是使用UML类图&#xff0c;类图用于描述系统中所包含的类以及他们之间的相互关系&#xff0c;帮助人们简化对系统的理解&#xff0c;他是系统分析和设计阶段的重要产物&#xff0c;也是系统编码和测试的…

小程序 用户反馈 与 客服对话 使用说明

在开发小程序时&#xff0c;通过翻阅官方文档&#xff0c;会发现 button 的 open-type 属性有很多值可以选。因此&#xff0c;我们就可以实现相应的按钮功能。 微信开发文档-表单组件-buttonhttps://developers.weixin.qq.com/miniprogram/dev/component/button.html contact…

嵌入式学习笔记(44)S5PV210的SD卡启动实战

8.5.1任务&#xff1a;大于16KB的bin文件使用SD卡启动 (1)总体思路&#xff1a;将我们的代码分为2部分&#xff0c;第一部分BL1小于等于16KB&#xff0c;第二部分为任意大小&#xff0c;iROM代码执行完成后从SD卡启动会自动读取BL1到iRAM中执行&#xff1b;BL1执行时负责初始化…

ChatGPT启蒙之旅:弟弟妹妹的关键概念入门

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

腾讯云服务器哪个配置比较值得?

腾讯云服务器哪款配置比较好值得买&#xff1f;轻量应用服务器性价比值得买&#xff0c;轻量2核2G3M带宽95元一年、2核4G5M带宽218元一年、2核2G4M带宽三年540元一年、4核8G12M配置446元一年、8核16G18M带宽1668元15个月、16核32G28M轻量服务器3468元15个月。腾讯活动入口&…

tiny模式基本原理整合

【Tiny模式】的基本构成 M【首头在首位】 U【/】 V【HTTP/】 Host H【真实ip】 XH \r回车 \n换行 \t制表 \ 空格 一个基本的模式构成 [method] [uri] [version]\r\nHost: [host]\r\n[method] [uri] [version]\r\nHost: [host]\r\n 检测顺序 http M H XH 有些地区 XH H M 我这边…

lenovo联想台式机 拯救者 刃7000-28ICBR(90KX)原装出厂Windows10系统镜像

LENOVO联想拯救者(90KX)原厂WIN10系统 下载链接&#xff1a;https://pan.baidu.com/s/1beocPJSmnFbY4Y_ZQM2djA?pwd4d1n 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xff1a;ISO 文件大…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署ZFile在线网盘服务

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署ZFile在线网盘服务 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、ZFile介绍2.1 ZFile简介2.2 ZFile特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、购买华为云…

《幸福之路》罗素(读书笔记)

目录 作者简介 作者的感悟 经典摘录 一、不幸福的成因 1、一部分要归咎于社会制度 2、一部分则得归咎于个人心理——当然&#xff0c;你可以说个人心理是社会制度的产物。 二、欠缺某些想要的东西&#xff0c;是快乐的必要条件 三、无聊与刺激 四、现代人的精神疲劳 五…

word已排序好的参考文献,插入新的参考文献,序号更新

原排序好的文献序号。 现在在3号后面插入一个新文献。4&#xff0c;5号应该成为5&#xff0c;6 这时在3号后面&#xff0c;回车&#xff0c;就会自动的增长。如下图&#xff1a; 但是如果手滑&#xff0c;把[4]删除了如何排序&#xff1f;&#xff1f; 如下图&#xff1a; …