C餐饮管理系统详细设计含所有窗体代码

合集下载

酒店管理系统代码(C语言版)

酒店管理系统代码(C语言版)

#include <stdio.h〉#include 〈stdlib。

h>#include <string。

h>//房间信息结构体struct Node{int Count; //指示该房间有多少个房客char nameOne[20]; //房客1的名字char nameTwo[20]; //房客2的名字int sexOne;//房客1的性别—1代表女,0代表没有,1代表男int sexTwo; //房客2的性别int roomNumber;//房间号}roomArray[5];//初始化房间数组void InitArray(){int i;for(i=0;i<5;i++){roomArray[i].roomNumber = 301+i;memset(roomArray[i]。

nameOne,0,20);memset(roomArray[i]。

nameTwo,0,20);roomArray[i].sexOne = 0;roomArray[i].sexTwo = 0;roomArray[i].Count = 0;}}void fun1() //旅客入住的操作{char name[20];int sex;int i;printf(”\n输入入住旅客姓名和性别(空格隔开,1为男,—1为女):”);scanf(”%s %d",name,&sex);for(i=0;i<5;i++){if(roomArray[i]。

Count == 2){continue;}else if(roomArray[i].Count == 1){if(roomArray[i]。

sexOne != sex){continue;}strcpy(roomArray[i].nameTwo,name);roomArray[i].sexTwo = sex;roomArray[i]。

Count++;system("cls”);printf("客人已经成功入住,在房间%d”,roomArray[i].roomNumber);return;;}else{strcpy(roomArray[i]。

酒店管理系统c语言程序设计

酒店管理系统c语言程序设计

酒店管理系统c语言程序设计以下是一个简单的酒店管理系统的 C 语言程序设计示例,包括了客户入住、退房和查询房间状态等基本功能。

请注意,这只是一个简化的示例,实际的酒店管理系统可能需要更多的功能和复杂的逻辑。

```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_ROOMS 100#define MAX_CUSTOMERS 100// 房间结构体struct Room {int roomNumber;int isOccupied;int customerID;};// 客户结构体struct Customer {int customerID;char customerName[50];};// 房间列表struct Room rooms[MAX_ROOMS];// 客户列表struct Customer customers[MAX_CUSTOMERS];// 初始化房间列表void initRooms() {for (int i = 0; i < MAX_ROOMS; i++) {rooms[i].roomNumber = i + 1;rooms[i].isOccupied = 0;rooms[i].customerID = 0;}}// 初始化客户列表void initCustomers() {for (int i = 0; i < MAX_CUSTOMERS; i++) {customers[i].customerID = i + 1;strcpy(customers[i].customerName, "Customer");}}// 查找空闲房间int findFreeRoom() {for (int i = 0; i < MAX_ROOMS; i++) {if (rooms[i].isOccupied == 0) {return i;}}return -1;}// 客户入住void checkIn(int customerID, int roomNumber) {int freeRoom = findFreeRoom();if (freeRoom != -1) {rooms[freeRoom].isOccupied = 1;rooms[freeRoom].customerID = customerID;printf("Customer %d checked in to Room %d\n", customerID, roomNumber); } else {printf("No free rooms available\n");}}// 客户退房void checkOut(int roomNumber) {for (int i = 0; i < MAX_ROOMS; i++) {if (rooms[i].roomNumber == roomNumber && rooms[i].isOccupied == 1) { rooms[i].isOccupied = 0;rooms[i].customerID = 0;printf("Customer checked out of Room %d\n", roomNumber);return;}}printf("Room not found\n");}// 查询房间状态void viewRoomStatus(int roomNumber) {for (int i = 0; i < MAX_ROOMS; i++) {if (rooms[i].roomNumber == roomNumber) {if (rooms[i].isOccupied == 1) {printf("Room %d is occupied by Customer %d\n", roomNumber, rooms[i].customerID);} else {printf("Room %d is vacant\n", roomNumber);}return;}}printf("Room not found\n");}// 主函数int main() {initRooms();initCustomers();int choice;while (1) {printf("1. Check In\n2. Check Out\n3. View Room Status\n4. Exit\n"); scanf("%d", &choice);switch (choice) {case 1:int customerID, roomNumber;printf("Enter customer ID: ");scanf("%d", &customerID);printf("Enter room number: ");scanf("%d", &roomNumber);checkIn(customerID, roomNumber);break;case 2:printf("Enter room number: ");scanf("%d", &roomNumber);checkOut(roomNumber);break;case 3:printf("Enter room number: ");scanf("%d", &roomNumber);viewRoomStatus(roomNumber);break;case 4:exit(0);break;default:printf("Invalid choice\n");}}return 0;}```上述代码实现了一个简单的酒店管理系统,包括客户入住、退房和查询房间状态等功能。

C++餐厅管理系统源码(可运行)

C++餐厅管理系统源码(可运行)

//Win10操作系统下,用VC6运行,文件后缀名应为.cpp#include <iostream>//输入输出流#include <fstream>//文件流#include <iomanip>//用来对输入输出操作的格式进行更加方便的控制,在ios_base基类的基础上#include <stdlib.h>//标准库头文件#include<Windows.h>//Windows,图形界面接口,图形设备函数等重要的功能using namespace std;typedef struct bianhao{int num;//桌子编号int seat;//座位数(顾客数)int stat;//桌子状态}bianhao_T;//利用数组存桌子,三个参数分别为桌子编号、座位数、状态(是否有人在用)bianhao_T A[10] = { {1, 2, 0},{2, 2, 0},{3, 2, 0},{4, 2, 0},{5, 2, 0},{6, 4, 0},{7, 4, 0},{8, 4, 0},{9, 4, 0},{10, 6, 0}};class Restaurant //餐厅类{private:char location[50]; //座位char phone_number[20];//电话号码char evaluates[200];//评价public:void Search();//搜寻void Set();//建立void evaluate();//评价};class Customer //顾客类{private:int desk; //桌子char dishes[20];//菜品int queues;//队列,排队char write_evaluate[200];//客户书写评价static int total;//总价格public:Customer();//顾客void order();//菜};class Waiter//服务员类{private:int job_number;//工作号char name[25];//名字char sex[5];//性别char phone_number[20];//手机号码public:void Search();//搜索void Set();//录入};class Menus//菜单类{private:static int sums;//菜品总价int number;//菜品序号int price;//菜品价格char dish_name[30];//菜品名字public:friend void Customer::order();void Search();//查询void Set();//录入};int Customer::total = 0;//顾客排队号int Menus::sums = 0;//餐品总价格void Welcome(){system("color b1");cout << " ︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻" << endl;cout << " 【︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻︻】" << endl;cout << " 【【】】" << endl;cout << " 【【★★★★ 】】" << endl;cout << " 【【】】" << endl;cout << " 【【】】" << endl;cout << " 【【★欢迎使用★ 】】" << endl;cout << " 【【】】" <<endl;cout << " 【【◆◆◆餐厅管理系统◆◆◆ 】】" << endl;cout << " 【【】】" << endl;cout << " 【【】】" << endl;cout << " 【【】】" << endl;cout << " 【【-------------------------------- 】】" << endl;cout << " 【【︱制作者:------、------、------ | 】】" << endl;cout << " 【【-------------------------------- 】】" << endl;cout << " 【【】】" << endl;cout << " 【【】】" << endl;cout << " 【【】】" << endl;cout << " 【︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼】" << endl;cout << " ︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼︼" << endl;}//****全局函数***//void Menu(){cout << " **** ****" << endl;cout << " *** ** ** ***" << endl;cout << " *** ** ** ***" << endl;cout << " *** ~.~ - - ***" << endl;cout << " *** 1、信息查询***" << endl;cout << "*** ^.^ @.@ ***" << endl;cout << "*** 2、信息录入***" << endl;cout << " *** $.$ +.+ ***" << endl;cout << " *** 3、顾客点餐***" << endl;cout << " *** @.@ = = ***" << endl;cout << " *** 4、接待顾客***" << endl;cout << " *** ***" << endl;cout << " *** 5、顾客评价***" << endl;cout << " *** ***" << endl;cout << " *** 0、退出***" << endl;cout << " *** ***" << endl;cout << " *** ***" << endl;cout << " ***" << endl;}void Search()//查询菜单函数{system("cls");cout << endl; cout << endl; cout << endl; cout << endl; cout << endl;cout << "1、查询餐厅信息" << endl;cout << endl;cout << "2、查询服务员信息" << endl;cout << endl;cout << "3、查询菜单" << endl;cout << endl;cout << "4、查看评价" << endl;cout << endl;cout << "5、返回上一级菜单" << endl;cout << endl;cout << "" << "请选择:" << endl;int choice;Restaurant restaurant;Waiter waiter;Menus dish;cin >> choice;switch (choice){case 1: restaurant.Search(); break;case 2: waiter.Search(); break;case 3: dish.Search(); break;case 4: restaurant.evaluate(); break;case 5:system("cls");Menu(); break;}}//黄int Arrange_table(int seat)//顾客桌子安排函数{int i = 0;for (i = 0; i < 10; i++){if (0 == A[i].stat)//判断桌子状态,是否被占用{if (A[i].seat >= seat)//如果桌子位置数大于等于人数,则安排此桌子,此桌子将被占用,状态变为1{A[i].stat = 1;cout << "编号" << A[i].num << "的座位可安排" << seat << "人" << endl;return A[i].num;//安排桌子}}}cout << "找不到可安排" << seat << "个人的座位,请顾客排队" << endl;}void reception()//接收顾客数{system("cls");int seat = 0;int num = 0;cout << "请输入当前需要接待的顾客数:" << endl;cin >> seat;num = Arrange_table(seat);system("pause");system("cls");Menu();}void orderdish(){Customer customer;customer.order();Menu();}void customer_evaluate()//顾客评价函数{char evaluate[200];cout << "请评价:" << endl;cin >> evaluate;ofstream out("evaluate.txt", ios::app);out << evaluate << endl;out.close();Menu();}void Restaurant::evaluate(){system("cls");cout << endl << "历史评价:" << endl << endl;ifstream in("evaluate.txt");while (in >> evaluates)cout << "" << evaluates << endl << endl;in.close();system("pause");system("cls");Menu();}Customer::Customer(){}void Customer::order()//顾客,点餐,计算总价{system("cls");int temp[50];//点餐编号int j = 0;int sum = 0;//菜品总价char flag = 'y';int num = 0;Menus menu[50];//菜品cout << "菜单" << endl << endl;ifstream in("Menus.txt");//以输入方式打开文件,从硬盘到内存int i = 0;while (in >> menu[i].number >> menu[i].dish_name >> menu[i].price){cout << "" << menu[i].number << setw(10) << menu[i].dish_name << setw(10) << menu[i].price << endl;//输出菜品编号、名字、价格i++;}in.close();//关闭文件while (flag == 'y'){cout << "请点餐,选择相应编号:" << endl;cin >> temp[num];num++;cout << "是否继续y or n" << endl;cin >> flag;}for (j = 0; j < num; j++)//点几份菜{for (i = 0; i < 10; i++){if (temp[j] == menu[i].number)//找到对应菜品编码{sum = sum + menu[i].price;//计算总价}}}cout << "总价钱:" << sum << endl;system("pause");system("cls");}//朱void Set()//信息录入函数{system("cls");cout << endl << endl << endl << endl;cout << "1 添加菜品" << endl << endl;cout << "2 添加服务员" << endl << endl;cout << "3 添加餐厅信息" << endl << endl;cout << "4 返回上一级菜单" << endl << endl;cout << "请选择:" << endl;Menus dish;int choice;Waiter waiter;Restaurant restaurant;cin >> choice;switch (choice){case 1:dish.Set(); break;case 2:waiter.Set(); break;case 3:restaurant.Set(); break;case 4:system("cls");Menu();break;}}void Waiter::Set(){system("cls");char flag = 'y';do{cout << "输入服务员的工号,姓名,性别,电话号码:" << endl;cin >> job_number >> name >> sex >> phone_number;ofstream out("Waiter.txt");out << job_number << " " << name << " " << sex << " " << phone_number << endl;out.close();cout << "是否继续是(y)否(n)" << endl;cin >> flag;} while (flag == 'y');Menu();}void Menus::Set(){system("cls");char flag = 'y';do{sums++;cout << "输入编号,菜名,价格" << endl;cin >> number >> dish_name >> price;ofstream out("Menus.txt", ios::app);out << number << " " << dish_name << " " << price << " " << endl;out.close();cout << "是否继续是(y)否(n)" << endl;cin >> flag;} while (flag == 'y');system("pause");system("cls");Menu();}void Restaurant::Set(){system("cls");cout << "输入餐厅位置,电话号码" << endl;cin >> location >> phone_number;ofstream out("Restaurant.txt");out << location << " " << phone_number << endl;out.close();system("pause");system("cls");Menu();}//吴void Restaurant::Search(){system("cls");cout << endl << endl;ifstream in("Restaurant.txt");cout << "地址" << "" << "联系电话" << endl;while (in >> location >> phone_number){cout << location << "" << phone_number << endl;}in.close();cout << endl << endl;system("pause");system("cls");Menu();}void Waiter::Search(){system("cls");ifstream in("Waiter.txt");cout << endl << endl;cout << "工号" << " " << "姓名" << " " << "性别" << " " << "电话号码" << endl;while (in >> job_number >> name >> sex >> phone_number){cout << " " << job_number << " " << name << " " << sex << " " << phone_number << endl;}in.close();system("pause");system("cls");Menu();}void Menus::Search(){system("cls");ifstream in("Menus.txt");cout << endl << endl;cout << "编号" << setw(10) << "菜名" << setw(10) << "价格" << endl;while (in >> number >> dish_name >> price){cout << " " << number << " " << setw(10) << dish_name << setw(10) << price << endl;}in.close();system("pause");system("cls");Menu();}int main(){Welcome();Sleep(3000);system("cls");Menu();do{cout << "请输入你的选择:" << endl;int choice;cin >> choice;switch (choice){case 1:Search(); break;case 2:Set(); break;case 3:orderdish(); break;case 4:reception(); break;case 5:customer_evaluate(); break;case 0:exit(1); break;}} while (1);return 0;}。

餐饮管理系统(1)界面图+源代码

餐饮管理系统(1)界面图+源代码

餐饮管理系统1、前言在餐饮业务竞争越来越激烈的今天,如何提高服务质量,其管理能力显的越来越重要。

尤其是对一些大的餐饮店,餐饮店内部服务项目越多,管理难度越大,既要处理前台又要处理后台的工作,所以一个好的管理系统可以提高酒店的管理水平也可以大幅度提高酒店服务水平。

1.1目的随着当今社会信息化的日新月异的发展,计算机应用已经渗透到日常工作的许多方面无论是其自身还是所发挥的作用,计算机都标志着一种高科技、高效率和高水平。

为了企业创先进、争一流,为了企业的发展一套好的系统必不可少.现在餐饮业发展速度飞快,要想在激烈的社会竞争有一席之地,好的服务是最基本的保障,此次开发的餐饮管理系统就是针对现代化社会管理和要求,在服务上提高自己的效率,使自己的公司立于不败之地.1.2定义餐饮管理系统,SQL,E-R图1.3 参考资料《数据库应用系统开发技术》朱如龙刘焰机械出版社2004年8月《VC++与SQL2000开发技术》汪晓平钟军人民邮电出版社2004年8月2、系统设计2.1系统目标设计餐饮管理系统的主要目标是实现对酒店内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐饮服务提供保证。

2.2开发设计思想餐厅系统是按照国内餐饮行业最新要求开发的全心概念的信息管理系统。

该系统将餐厅收银、往来帐务结算及销售情况统计工作在单计算机或网络系统中完成。

主要特点包括:*代码菜谱编制,方便统计,方便输入;*开单、改单、结算、打印、用户界面方便友好;*系统专设往来账、内部账,结算方式灵活多样,结算消息详尽;*系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;*报表真实,实用性强,如:收银报表汇总收银、支票、信用卡、转帐等情况;菜肴销售报表汇总各种菜肴的日、月销售量;员工销售统计表,可打印值台人员销售业绩核实报表提供依据。

*账务系统共讷讷感的完整性。

一旦该系统正式运行,餐厅每日的营业账和全部往来客户的账务操作结算都将依靠计算机,该系统面对当前餐厅餐饮业各种负复杂的结算要求应具有很强的应变能力。

C#实现餐厅管理系统

C#实现餐厅管理系统

C#实现餐厅管理系统本⽂实例为⼤家分享了C#实现餐厅管理系统的具体代码,供⼤家参考,具体内容如下部分代码:fm_change_password.csusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Data.SqlClient;namespace FoodManage{public partial class fm_change_password : Form{public fm_change_password(){InitializeComponent();}public string useridname = "";private void bt_ok_Click(object sender, EventArgs e){SqlConnection conn=new SqlConnection(fm_public.strcon);conn.Open();SqlDataAdapter sda = new SqlDataAdapter("SELECT Password FROM TUser WHERE UserIDName='" + useridname + "'", conn);DataTable DT=new DataTable();sda.Fill(DT);if(DT.Rows[0]["Password"].ToString()!=tb_oldpass.Text){MessageBox.Show("旧密码错误请重新输⼊");return;}if (tb_newpassw.Text != tb_newpass.Text){MessageBox.Show("两次密码不相同请重新输⼊");return;}SqlCommand cmd = new SqlCommand("UPDATE TUser SET Password=@Password WHERE UserIDName='" + useridname + "'", conn); cmd.Parameters.Add("@Password",SqlDbType.VarChar,128).Value=tb_newpassw.Text;cmd.ExecuteNonQuery();MessageBox.Show("修改密码成功!(* ̄︶ ̄)y ");conn.Close();this.Close();}private void bt_esc_Click(object sender, EventArgs e){this.Close();}}}fm_login.csusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace FoodManage{public partial class fm_login : Form{public fm_login(){InitializeComponent();}private void bt_login_Click(object sender, EventArgs e){//判断⽤户名或密码⽂本框是否为空if(tb_username.Text==""||tb_password.Text==""){if(tb_username.Text==""){MessageBox.Show("⽤户名为空,请重新输⼊!(* ̄︶ ̄)y ");return;}if (tb_password.Text == ""){MessageBox.Show("密码为空,请重新输⼊!(* ̄︶ ̄)y ");return;}}//连接数据库SqlConnection conn = new SqlConnection(fm_public.strcon);conn.Open();string selectsql = "SELECT * FROM TUser WHERE UserIDName='" + tb_username.Text + "'";SqlDataAdapter sda = new SqlDataAdapter(selectsql, conn);DataTable dt = new DataTable();sda.Fill(dt);//判断⽤户是否存在if (dt.Rows.Count == 0){MessageBox.Show("⽆该⽤户");return;}//判断⽤户名是否被锁定if (Convert.ToBoolean(dt.Rows[0]["LockIf"]) == true){MessageBox.Show("该⽤户已经被锁定,请联系管理员!/(ㄒoㄒ)/~~ ");return;}//更新数据库前的准备SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandType = CommandType.Text;//判断输⼊密码是否正确,输⼊错误则“错误次数”+1,成功登录则“错误次数”清零if(tb_password.Text!=dt.Rows[0]["Password"].ToString()){//错误次数+1mandText = @"UPDATE TUser SET ErrorTime=ErrorTime+1 WHERE UserIDName=@UserName"; cmd.Parameters.Add("@UserName", SqlDbType.VarChar, 8);cmd.Parameters["@UserName"].Value = tb_username.Text.Trim();cmd.ExecuteNonQuery();MessageBox.Show("密码错误请重新输⼊!/(ㄒoㄒ)/~~ ");return;}//经过以上验证⽤户名密码⽆错执⾏以下代码(设置错误次数为0)mandText = "update TUser set ErrorTime=0 where UserIDName=@UserName";cmd.Parameters.Add("@UserName", SqlDbType.VarChar, 8);cmd.Parameters["@UserName"].Value = tb_username.Text.Trim();cmd.ExecuteNonQuery();conn.Close();fm_public.LoginSuccess = true;//设置⽤户权限以及初始化主界⾯的相关参数if (dt.Rows[0]["Post"].ToString() == "管理员"){fm_erpower = "管理员";}else{fm_erpower = "服务员";}fm_eridname = dt.Rows[0]["UserIDName"].ToString();fm_public.logintime = DateTime.Now.ToShortDateString();this.Close();}private void bt_esc_Click(object sender, EventArgs e){if (MessageBox.Show("确定退出系统吗?", "提⽰", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK) {Application.Exit();}}private void fm_login_Activated(object sender, EventArgs e){tb_username.Focus();}private void fm_login_Load(object sender, EventArgs e){fm_start fm_starts = new fm_start();fm_starts.ShowDialog();}}}源码下载:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

C语言餐饮结账管理系统设计

C语言餐饮结账管理系统设计

C语言餐饮结账管理系统设计C语言餐饮结账管理系统设计一、设计背景及目的随着餐饮业的快速发展,餐饮行业的管理也越来越重要。

目前,很多餐饮企业存在管理不规范、效率低下等问题,如收银管理不当、点菜混乱、服务不周等。

为了提升餐饮企业的管理水平和效率,我们设计了一款C语言餐饮结账管理系统。

该系统旨在提供一个便捷、快速、简单的工具,帮助餐厅进行收银管理,规范点菜和服务流程,提高餐厅运营效率和服务品质。

二、系统设计思路与功能1、系统设计思路本系统采用C语言作为开发语言,运用文件、结构体、数组等知识设计,可以实现点菜管理、收银管理、数据统计等功能。

2、系统功能(1)菜单管理:管理员可以在系统中添加、修改、删除菜单,设置菜品的名称、价格、口味和图片等信息。

(2)点菜管理:顾客可以在系统中浏览菜单、选择菜品和份数,系统能够根据选择的菜品和份数自动计算出总价,并打印出点菜清单。

(3)收银管理:收银员可以在系统中根据点菜清单,输入顾客支付的金额,然后系统可以自动计算出找零,并打印出收据。

(4)数据统计:系统可以根据菜品的销量、收入等信息,生成各种报表和图表,以帮助管理员更好地了解餐厅的运营情况。

三、系统的实现1、系统的开发环境本系统的开发环境为windows10系统,使用IDE为Code::Blocks。

2、系统的实现方案(1)界面设计系统的界面主要包括登录、主界面、菜单管理、点菜管理、收银管理和报表统计等模块。

所有模块都应该采用统一的风格,方便用户使用。

(2)数据存储本系统采用文件存储的方式,数据存储包括菜单数据、点菜记录、订单数据等。

(3)功能实现系统的具体功能实现如下:1.登录系统:要求用户输入用户名和密码。

2.菜单管理:可以添加、修改、删除菜单等功能,并保存到文件中。

3.点菜管理:在菜单界面上显示菜单,顾客可以选择菜品和份数,系统会自动计算出呈现订单的总价,并存储点菜记录到文件中。

4.收银管理:在点菜界面上显示订单清单,在输入总金额后,系统会自动计算出找零,输出收据,并将订单信息保存到文件中。

C课程设计报告餐厅管理

C课程设计报告餐厅管理

C语言课程设计报告书题目:餐厅管理学号:********姓名:学号:********姓名:学号:********姓名:1.功能需求点菜,客户结账,账目管理,餐馆统计,退出。

2. 总体设计2.1系统模块结构框图2.2功能模块框图2.3系统流程图Main函数3. 详细设计基于系统需求分析与系统总体设计的结论,本系统采用VC实现各模块的功能。

下面按照模块的划分来分别阐述系统的详细设计和实现过程。

3.1 功能选择3.1.1 模块描述功能选择模块为系统提供类似于菜单的功能,让用户输入功能选项,并进入相应的功能执行程序。

3.1.2 源文件定义restaurant.c3.1.3 函数声明(1)void Table_Init(void):餐桌信息初始化。

(2)void Observe(void):查看账目。

(3)void List_Management(void):账本管理。

(4)void ListMenu(void):账目管理菜单。

(5)void Menu_select(void):显示系统菜单。

(6)void Get_Rank(void):对菜进行统计排名。

输入:用户选择的功能选择界面。

处理:根据用户选项跳转到相关功能函数。

输出:相关功能函数的处理或显示界面。

4.详细设计#include <stdio.h>#include <conio.h>#include <string.h>#include <stdlib.h>#include <time.h>#define N 10#define D 10#define H 10//#define PASSWORD 123#define ASK (ORDER*)malloc(sizeof(ORDER))#define MaxCapacity 4//定义订单结构typedef struct Order{int Table_ID;//记录餐桌号int Dish_ID[N];//记录菜的编号struct Order *next;}ORDER;//定义餐厅结构体typedef struct Table{int Table_ID;//餐桌编号int Capacity;//餐桌最多能容纳的人数int Table_State;//1有人在用,0没人在用}TABLE;//定义菜的结构体typedef struct Dish{int Dish_ID;//菜的编号char Dish_Name[10];//菜名float Dish_Price;//价格}DISH;TABLE tb[H];//餐桌结构体数组DISH dish[D];//菜的结构体数组int PASSWORD=123;//密码设置//函数定义void Load_Dish(void);//从文件中读取菜谱ORDER*CreateOne(int);//创建一个订单节点void Dish_Menu(void);//显示菜谱void Table_Init(void);//餐桌信息初始化int search(void);//查找匹配的餐桌ORDER* Dish_Order(ORDER*,ORDER*);//将节点添加到主链void Display(int);//显示菜的信息void saveInList(float);//将客户消费额写入账单void Save_Inform(ORDER*,int);//将已结账订单信息写入历史记录ORDER *Payment(ORDER*);//结账void ModifyPW(void);//修改密码int Pass_Word(void);//密码验证void Observe(void);//账目查询void ListMenu(void);//账单管理菜单void List_Management(void);//账单管理void Main_Menu(void);//主菜单void Get_Rank(void);//统计void Menu_select(void);//选择功能//主函数main(){Table_Init();Menu_select();}//系统主菜单void Main_Menu(){printf("\n**********************\n");printf("餐厅服务系统\n");printf("**********************\n");printf("1.点菜\n");printf("2.客户结账\n");printf("3.账目管理\n");printf("4.餐厅统计\n");printf("5.退出系统\n");}//选择功能void Menu_select(void){ORDER* head;int choose;int result;head=NULL;system("cls");do{Load_Dish();Main_Menu();printf("请选择:\n");fflush(stdin);scanf("%d",&choose);//system("cls");switch(choose){case 1: result=search();if(result==1)printf("你可以到%d号餐桌就餐\n",result);elseprintf("你和你的朋友可以到%d号餐桌就餐\n",result);Dish_Menu();head=Dish_Order(head,CreateOne(result));//system("cls");break;case 2: head=Payment(head);break;case 3: List_Management();break;case 4: Get_Rank();break;case 5: exit(1);break;}}while(1);}//从文件中读取菜谱void Load_Dish(void){FILE *fp;int i;fp=fopen("dish_name.txt","r");for(i=0;i<D;i++){fscanf(fp,"%d\t%s\t%f\n",&dish[i].Dish_ID,dish[i].Dish_Name,&dish[i].Dish_Pr ice);}}//餐桌初始化void Table_Init(){tb[0].Capacity=1;tb[0].Table_ID=1;tb[1].Capacity=1;tb[1].Table_ID=2;tb[2].Capacity=2;tb[2].Table_ID=3;tb[3].Capacity=2;tb[3].Table_ID=4;tb[4].Capacity=2;tb[4].Table_ID=5;tb[5].Capacity=3;tb[5].Table_ID=6;tb[6].Capacity=4;tb[6].Table_ID=7;tb[7].Capacity=4;tb[7].Table_ID=8;tb[8].Capacity=4;tb[8].Table_ID=9;tb[9].Capacity=4;tb[9].Table_ID=10;}//显示菜谱void Dish_Menu(void){int i;printf("*********欢迎选购本店菜**********\n");printf("菜编号\t菜名\t菜单价\n");for(i=0;i<D;i++)printf("%d\t%s\t%f\n",dish[i].Dish_ID,dish[i].Dish_Name,dish[i].Dish_Price);}//查找有没有匹配的餐桌int search (void){int Cust_Num;int i;printf("请输入来客数量:\n");scanf("%d",&Cust_Num);if(MaxCapacity<Cust_Num){printf("抱歉,本店没有容纳%d的餐桌!",Cust_Num);return -1;}while(Cust_Num<=MaxCapacity){for(i=0;i<H;i++){if(tb[i].Table_State==0){if(tb[i].Capacity==Cust_Num)return (tb[i].Table_ID);}}printf("抱歉,现在没有%d人桌",Cust_Num);Cust_Num+=1;}printf("餐桌已满,请客人稍等一会。

C语言实现外卖管理系统

C语言实现外卖管理系统

C语言实现外卖管理系统本文为大家分享了C语言外卖管理系统的具体代码,供大家参考,具体内容如下内容说明(废话):上学期写的课程设计,主题是外卖管理系统,希望可以模拟网上订餐,店家工作,专人管理的过程。

并实现注册与登录以及基本信息的输出,因为个人比较懒,一直没有整理上去,今天得空,要是得到大家的宝贵意见的话,会不胜荣幸。

重点内容三端登录:分别为管理员,用户以及店主;两端注册,分别为用户以及店铺,其中店铺的注册成功需要得到管理员的审核。

管理员端可以查看店铺信息,店铺信息修改(分为增删改查),处理申请店铺,和修改本人信息。

用户端分为用户相关(为用户本人对自己信息的操作),查看订单,查看菜品,购买菜品,以及订单排序。

管理员端为增添菜品,删除菜品,修改菜品,查看菜品以及业绩查看(统计总订单与总收入)。

另外:1. 店家注册需要的到管理员的认证,认证通过之后才可登录2. 密码修改需要输入旧的密码,三次错误可以找回密码,输入手机号,若手机号匹配得当,则可产生三位数的随机验证码,输入验证码即可修改。

3. 对于已超过三分钟的订单不能修改,因为已经配送4. 限制了用户的余额,当购买时余额不足时,需要进行账户的充值,而购买结束后,账户的余额也会相应的减少以下为功能模块图:以下为函数调用关系图:以下为整个代码:#include<stdio.h>#include<stdlib.h>#include<string.h> #include<windows.h> #include<time.h>#include<conio.h> void choose();//建立关于店铺的结构体typedef struct shop{char name[20];char phone[20];char address[30];char password[20];struct shop *next;}shop,*link_shop;//建立关于订单的结构体typedef struct food{char name[20];int type;int amount;int price;int total;char shop[20];char yonghu[20];char leibie[20];struct food *next;}food,*link_food;//建立关于用户的结构体typedef struct user{char name[20];char delivery[39];char password[15];char number[15];int score;struct user *next;}user,*link_user;typedef struct money{char person[20];char card[25];char mima[20];struct money *next;}money,*link_money;char yh[20];//用户设置全局变量char dp[20];//店铺设置全局变量time_t start,end;//函数声明void foodwrite(link_food LF); void shopwrite1(link_shop LS);void dingdanwrite(link_food LF);void user_moneywrite(link_user LM);void welcome(){int i=0;char a[52]="▲▼WELCOME TO RESTAURANT MANAGEMENT SYSTEM▲▼";//system("color 0a");printf("\n\n\n\n\t\t");while(a[i]){printf("%c",a[i]);Sleep(50);i++;}printf("\n\n\n\n\t\t");}void Exit(){int i=0;system("cls");char a[20]="LOVE you,byebye^_^";system("color 03");printf("\n\n\n\t\t\t");while(a[i]){printf("%c",a[i]);Sleep(100);i++;}}void ME(){system("color 0b");printf("\n\n\n\t\t☆★ W E L C O M E ☆★\n\n\t这里是外卖管理系统,请选择接下来的操作:");printf("\n\n\t\t\t1.登陆");printf("\t\t\t2.注册\t\t\t0.退出\n");}//主菜单(登陆或者注册)void MENU(){printf("\n\n\n\n\t\t\t\t\t================================\n");printf("\t\t\t\t\t 外卖管理系统 \n");printf("\t\t\t\t\t 1.管理员登陆 \n");printf("\t\t\t\t\t 2.用户登录 \n");printf("\t\t\t\t\t 3.店家登陆 \n");printf("\t\t\t\t\t 0.返回上一级 \n");printf("\t\t\t\t\t================================\n");}//管理员选项void MENU1(){system("color 0f");printf(" 温馨小提示:按5可以清屏哦^-^\n");printf("\n\n\t\t\t\t\t1.查看店铺信息▲\n");printf("\t\t\t\t\t--------------\n");printf("\t\t\t\t\t2.店铺信息修改▼\n");printf("\t\t\t\t\t--------------\n");printf("\t\t\t\t\t3.处理申请店铺▲\n");printf("\t\t\t\t\t--------------\n");printf("\t\t\t\t\t4.修改本人信息▼\n");printf("\t\t\t\t\t--------------\n");printf("\t\t\t\t\t0.返回上一级▲\n");}//用户选项void MENU2(){system("color 0f");printf("\n\n\t\t\t\t 1.用户相关▲\t\t\t 5.购买菜品▼\n");printf("\t\t\t\t---------------\t\t\t---------------\n");printf("\t\t\t\t 2.查看订单▲\t\t\t 6.订单排序▼\n");printf("\t\t\t\t---------------\t\t\t---------------\n");printf("\t\t\t\t 3.查看菜品▲\t\t\t 0.返回上级▼\n");printf("\t\t\t\t---------------\t\t\t---------------\n");printf("\t\t\t\t 4.修改订单▲\n");}//店主选项void MENU3(){system("color 0f");printf("\n\n\n\t\t\t ________ Shop Version _______\n");printf("\t\t\t| |\n");printf("\t\t\t| 1.添加菜品 |\n");printf("\t\t\t| 2.修改菜品 |\n");printf("\t\t\t| 3.删除菜品 |\n");printf("\t\t\t| 4.查看菜品 |\n");printf("\t\t\t| 5.查看业绩 |\n");printf("\t\t\t| 0.返回上一级 |\n");printf("\t\t\t|_____________________________|\n"); }//建立关于单链表void *creatf(){int i=0,n;link_food LF;food *s,*r;char a[10];//srand((unsigned)time(NULL));//产生随机数的种子LF=(food *)malloc(sizeof(food));LF->next=NULL;r=LF;while(1){printf("请输入菜的名称:");scanf("%s",a);if(strcmp(a,"0")!=0){s=(food *)malloc(sizeof(food));printf("请输入菜的单价:");scanf("%d",&s->price);printf("请输入菜的类别");scanf("%s",s->leibie);strcpy(s->name,a);s->total=(s->amount)*(s->price);r->next=s;s->next=NULL;r=s;}elsebreak;}foodwrite(LF);}shop *creats(){char a[30],b[20],c[15],d[20];link_shop LS;shop *s,*r;LS=r=(shop *)malloc(sizeof(shop));LS->next=NULL;r=LS;while(1){printf("请输入店铺信息:\n");printf("\t\t●店铺名称:");scanf("%s",a);printf("\n\t\t●店铺电话:");scanf("%s",b);if(strcmp(b,"0")!=0){printf("\n\t\t●店铺地址:");scanf("%s",c);printf("\n\t\t●店铺密码:");scanf("%s",d);s=(shop *)malloc(sizeof(shop));strcpy(s->name,a);strcpy(s->phone,b);strcpy(s->address,c);strcpy(s->password,d);r->next=s;s->next=NULL;r=s;}elsebreak;}return LS;}void Outputshop(link_shop Ls){int n=0;shop *p,*u;p=Ls->next;system("cls");printf("入驻的商家如下:\n");printf("\t\t\t\t-------------------------------------------\n"); printf("\t\t\t\t店铺名称\t店铺电话\t店铺地址\n");printf("\t\t\t\t-------------------------------------------\n"); while(p){printf("\t\t\t\t%8s\t%8s\t%7s\n",p->name,p->phone,p->address); printf("\t\t\t\t-------------------------------------------\n"); p=p->next;}for(u =Ls->next; u != NULL;u = u->next)n++;printf("\t\t\t\t合计\t\t\t\t%d个\n",n);printf("\t\t\t\t-------------------------------------------\n"); }void Outputfood(link_food LF){food *s;s=LF->next;int sum=0;printf("订单如下:\n");printf("\t----------------------------------------------------------------------------------------------------\n");printf("\t菜名\t\t数量/份\t\t单价/元\t\t总价/元\t\t店铺\t\t订单号\t\t用户名\n");printf("\t----------------------------------------------------------------------------------------------------\n");for(s=LF->next;s!=NULL;s=s->next){if(strcmp(s->yonghu,yh)==0){printf("\t%-8s\t%-8d\t%-8d\t%-8d\t%-10s\t%-10d\t%s\n",s->name,s->amou nt,s->price,s->total,s->shop,s->type,s->yonghu);printf("\t----------------------------------------------------------------------------------------------------\n");sum=sum+s->total;}}printf("\t累计输出/元\t\t\t\t\t\t\t%d\n",sum);printf("\t----------------------------------------------------------------------------------------------------\n");if(sum==0){printf("○您还没有订单呢,快去购买吧φ(>ω<*) ");printf("\n\t\t\t\t\t->");Sleep(1000);printf("->");Sleep(1000);printf("->");Sleep(1000);system("cls");MENU2();return;}}void outputfood(link_food LF){food *p;p=LF->next;printf("\n\t\t\t 菜谱 ");printf("\n\t\t\t--------------------------------------------------\n" );printf("\t\t\t菜名菜价店铺菜系\n");printf("\t\t\t---------------------------------------------------\n") ;while(p){printf("\t\t\t%-13s%-12d%-14s%s\n",p->name,p->price,p->shop,p->leibie );printf("\t\t\t---------------------------------------------------\n") ;p=p->next;}}//充值user* addmoney(user *u){int n;char y;char a[20];FILE *fp;link_money LY;money *p,*r;printf("您账户里的余额为:%d",u->score);printf("是否充值?Y/else");fflush(stdin);//清除缓存y=getchar();if(y=='Y'){fp=fopen("yue.txt","rt");LY=r=(money *)malloc(sizeof(money));LY->next=NULL;while(!feof(fp)){p=(money *)malloc(sizeof(money));fscanf(fp,"%s %s %s\n",p->person,p->card,p->mima); p->next=NULL;r->next=p;r=p;}fclose(fp);p=LY->next;while(1){if(strcmp(yh,p->person)==0){break;}elsep=p->next;}printf("充值的钱数?");scanf("%d",&n);printf("请输入支付密码:");scanf("%s",a);if(strcmp(p->mima,a)==0){u->score=(u->score+n);printf("已充值");}elseprintf("\t\t×密码错误,充值失败");}elseprintf("已放弃充值");return u;}//按工号排序void name_sort(link_shop LS){int i,j,n;n = 0; //记录店铺总数;shop *u,*q,*p;for(u =LS->next; u != NULL;u = u->next)n++;//采用冒泡法对各个节点按姓名升序for(i=1;i<=n;i++){u =LS;for(j=0;j<n-i;j++){p = u->next;q = p->next;if(strcmp(p->name,q->name) > 0 || strcmp(p->name,q->name) == 0) {u->next = q;p->next = q->next;q->next = p;}u = u->next;}}printf("\t排序后店铺信息\n");Outputshop(LS);return;}void address_sort(link_shop LS){int i,j,n;n = 0; //记录店铺总数;shop *u,*q,*p;for(u =LS->next; u != NULL;u = u->next)n++;//采用冒泡法对各个节点按地址升序for(i=1;i<=n;i++){u =LS;for(j=0;j<n-i;j++){p = u->next;q = p->next;if(strcmp(p->address,q->address) > 0 || strcmp(p->address,q->address) == 0){u->next = q;p->next = q->next;q->next = p;}u = u->next;}}printf("\t\t\t\t地址排序后店铺信息\n");Outputshop(LS);return;}void dingdan_name_sort(link_food LF) //按订单食物名称排序{int i,j,n;n = 0; //记录店铺总数;food *u,*q,*p;for(u =LF->next; u != NULL;u = u->next)n++;//采用冒泡法对各个节点按姓名升序for(i=1;i<=n;i++){u =LF;for(j=0;j<n-i;j++){p = u->next;q = p->next;if(strcmp(p->name,q->name) > 0 || strcmp(p->name,q->name) == 0) {u->next = q;p->next = q->next;q->next = p;}u = u->next;}}Outputfood(LF);return;}void dingdan_total_sort(link_food LF) //按订单总价从高到低排序{int i,j,n;n = 0; //记录店铺总数;food *u,*q,*p;for(u =LF->next; u != NULL;u = u->next)n++;//采用冒泡法对各个节点按姓名升序for(i=1;i<=n;i++){u =LF;for(j=0;j<n-i;j++){p = u->next;q = p->next;if(p->total>q->total){u->next = q;p->next = q->next;q->next = p;}u = u->next;}}Outputfood(LF);return;}void dingdandelete(link_food Lf){food *p,*n;p=Lf;n=p->next;int m;char a;printf("请输入你所想删除的订单序号:");scanf("%d",&m);while(n){if(m==n->type){if(strcmp(n->shop,dp)==0){p->next=n->next;//foodwrite(Lf);dingdanwrite(Lf);break;}elseprintf("不好意思,您没有权限删除\n"); break;}else{p=p->next;n=n->next;}}}food *dingdanread(){FILE *fp;link_food LF,r,s;fp=fopen("dingdan.txt","rt");if(fp==NULL){printf("查看订单失败");return 0;}LF=r=(food *)malloc(sizeof(food));r->next=NULL;while(!feof(fp)){s=(food *)malloc(sizeof(food));fscanf(fp,"%s %d %d %d %s %d %s\n",s->name,&s->amount,&s->price,&s->t otal,s->shop,&s->type,s->yonghu);r->next=s;s->next=NULL;r=s;}return LF;}void scorefind(link_food LF){int sum=0;food *p;p=LF->next;system("cls");printf("\n\n\n\t\t\t产生的订单如下:\n");printf("----------------------------------------------------------------------------------------------------\n");printf(" 菜品名称 \t菜品数量\t菜品单价\t菜品总价\t店铺名称\t订单号 \t\t用户名\n");printf("----------------------------------------------------------------------------------------------------\n");while(p)if(strcmp(p->shop,dp)==0){printf(" %7s%14d%15d%16d%16s%15d%18s\n",p->name,p->amount,p->price,p ->total,p->shop,p->type,p->yonghu);printf("----------------------------------------------------------------------------------------------------\n");sum=sum+p->total;}p=p->next;}printf(" 合计/元:\t\t\t\t\t\t\t累计收入%d\n",sum);printf("----------------------------------------------------------------------------------------------------\n");if(sum==0)printf("\t\t●您店里的菜还没有人购买哦,应该反思啦\n");}food * foodread()//读取{link_food LF;food *s,*r;LF=r=(food *)malloc(sizeof(food));LF->next=NULL;FILE *fp;fp=fopen("food.txt","rt");if(fp==NULL){printf("不能打开此文件");exit(1);}while(!feof(fp))//判断文件指针是否处于文件结束位置,若是,返回1,非,返回0{s=(food *)malloc(sizeof(food));fscanf(fp,"%s %d %s %s\n",s->name,&s->price,s->shop,s->leibie); r->next=s;s->next=NULL;r=s;}fclose(fp);return LF;money * moneyread()//读取{link_money LM;money *s,*r;LM=r=(money *)malloc(sizeof(money));LM->next=NULL;FILE *fp;fp=fopen("yue.txt","rt");if(fp==NULL){printf("不能打开此文件");exit(1);}while(!feof(fp))//判断文件指针是否处于文件结束位置,若是,返回1,非,返回0{s=(money *)malloc(sizeof(money));fscanf(fp,"%s %s %s\n",s->person,s->card,s->mima);r->next=s;s->next=NULL;r=s;}fclose(fp);return LM;}shop * shopread(){link_shop LS;shop *s,*r;LS=r=(shop *)malloc(sizeof(shop));r->next=NULL;FILE *fp;fp=fopen("shop.txt","rt");if(fp==NULL){printf("不能打开此文件");exit(1);}while(!feof(fp))//判断文件指针是否处于文件结束位置,若是,返回1,非,返回0{s=(shop *)malloc(sizeof(shop));s->next=NULL;fscanf(fp,"%s %s %s %s\n",s->name,s->phone,s->address,s->password); r->next=s;r=s;}fclose(fp);return LS;}user * userread(){link_user LU;user *s,*r;LU=r=(user *)malloc(sizeof(user));r->next=NULL;FILE *fp;fp=fopen("users.txt","rt");if(fp==NULL){printf("不能打开此文件");exit(1);}while(!feof(fp))//判断文件指针是否处于文件结束位置,若是,返回1,非,返回0{s=(user *)malloc(sizeof(user));s->next=NULL;fscanf(fp,"%s %s %s %s %d\n",s->name,s->delivery,s->password,s->numbe r,&s->score);r->next=s;r=s;}fclose(fp);return LU;}void deleteshop(link_shop LS){int i=0;shop *p,*q;p=LS;q=p->next;char m[20];char a;printf("请输入你所想删除的店铺名称或者电话:");scanf("%s",m);while(q){if(strcmp(m,q->name)==0||strcmp(m,q->phone)==0) {i++;p->next=q->next;shopwrite1(LS);return;}else{p=p->next;q=q->next;}}if(i==0){printf("没有此店铺,无法删除\n");return;}}void deletedingdan(link_food Lf){food *p,*n;p=Lf;n=p->next;int m,i=0;char a;printf("请输入你所想删除的订单号:");scanf("%d",&m);while(n){if(n->type==m){if(strcmp(n->yonghu,yh)==0){p->next=n->next;i++;foodwrite(Lf);}elseprintf("不好意思,您没有权限删除\n");break;}else{p=p->next;n=n->next;}}if(i==0){printf("\t没有此订单,无法删除\n");return;}}void purchase(){link_food Lf;money *LM,*mo;user *lu,*us;FILE *fp;char a[20],b[20],mi[20];char y;int i=0;printf("\t\t◇您想吃啥呢?");scanf("%s",a);Lf=foodread();food *p;p=Lf->next;srand((unsigned)time(NULL));//订单号的种子while(p!=NULL){if(strcmp(p->name,a)==0||strcmp(p->leibie,a)==0){// printf("%s\t%d\t%s\n",p->name,p->price,p->shop); i++;}p=p->next;}if(i==0){printf("\t\t\t×不好意思,还没有此菜呢\n");system("pause");system("cls");MENU2();return;}else{p=Lf->next;printf("\n\t\t\t--------------------------------------------------\n" );printf("\t\t\t菜名菜价店铺菜系\n");printf("\t\t\t---------------------------------------------------\n") ;while(p){if(strcmp(p->leibie,a)==0||strcmp(p->name,a)==0){printf("\t\t\t%-13s%-12d%-14s%s\n",p->name,p->price,p->shop,p->leibie );printf("\t\t\t---------------------------------------------------\n") ;}p=p->next;}}printf("\t\t◇请输入要购买的店铺:");scanf("%s",b);lu=userread();us=lu->next;while(us){if(strcmp(yh,us->name)==0)break;elseus=us->next;}//找出要购买的用户信息LM=moneyread();mo=LM->next;i=0;while(mo){if(strcmp(yh,mo->person)==0){i++;break;}elsemo=mo->next;}//找出用户的银行卡信息if(i==0){printf("\t\t×您还没有绑定银行卡哦,不能购买的");return;}p=Lf->next;i=0;while(p){if(strcmp(p->name,a)==0||strcmp(p->leibie,a)==0){if(strcmp(p->shop,b)==0){printf("\t\t◇请输入要购买的数量");scanf("%d",&p->amount);if(p->amount!=0){i++;p->total=(p->amount)*(p->price);p->type=rand()%900+100;if((us->score)<p->total){printf("\t\t×您的账号余额不足,请先充值\n"); system("pause");system("cls");MENU2();return;}printf("\t\t●确认购买?Y/else");fflush(stdin);y=getchar();if(y=='Y'){printf("请输入支付密码:");scanf("%s",mi);if(strcmp(mi,mo->mima)==0){fp=fopen("dingdan.txt","at");if(fp==NULL)printf("\t\t\t\t×购买失败\n");//因文件无法打开而失败 else{fprintf(fp,"%s %d %d %d %s %d %s\n",p->name,p->amount,p->price,p->tot al,p->shop,p->type,yh);fclose(fp);us->score=(us->score)-(p->total);user_moneywrite(lu);printf("\t\t\t\t√购买成功,请耐心等待配送\n");start = time(NULL);//计时system("pause");system("cls");MENU2();return;}}else{printf("\t\t×密码错误,购买失败");system("pause");system("cls");MENU2();return;}}else{printf("\t\t\t×已放弃购买");system("pause");system("cls");MENU2();return;}}else{printf("\t\t\t×请输入正确的数量");system("pause");system("cls");MENU2();return;}}}p=p->next;}if(i==0){printf("\t\t×请输入表中的店铺名称哦\n");system("pause");system("cls");MENU2();}}void foodwrite(link_food LF)//保存{FILE *fp;food *p;char a;printf("确认保存?(Y/else)");scanf("%*c%c",&a);if(a=='Y'){fp=fopen("food.txt","at");if(fp==NULL)printf("错误!无法打开");for(p=LF->next;p!=NULL;p=p->next)fprintf(fp,"%s %d %s %s\n",p->name,p->price,dp,p->leibie); printf("修改成功\n");fclose(fp);return;}elseprintf("已放弃修改");}void foodwrite1(link_food LF){FILE *fp;food *p;char a;printf("确认保存?(Y/else)");scanf("%*c%c",&a);if(a=='Y'){fp=fopen("food.txt","wt");if(fp==NULL)printf("错误!无法打开");for(p=LF->next;p!=NULL;p=p->next)fprintf(fp,"%s %d %s %s\n",p->name,p->price,p->shop,p->leibie); printf("修改成功\n");fclose(fp);return;}elseprintf("已放弃修改");}// void foodwrite2(link_food LF)// {// FILE *fp;// food *p;// char a;// printf("确认保存?(Y/else)");// scanf("%*c%c",&a);// if(a=='Y')// {// fp=fopen("food.txt","wt");// if(fp==NULL)// printf("错误!无法打开");// for(p=LF->next;p!=NULL;p=p->next)// fprintf(fp,"%s %d %s %s\n",p->name,p->price,p->shop,p->leibie); // printf("修改成功\n");// fclose(fp);// return;// }// else// printf("已放弃修改");// }void dingdanwrite(link_food LF){FILE *fp;food *p;char a;printf("确认保存?(Y/else)");scanf("%*c%c",&a);if(a=='Y'){fp=fopen("dingdan.txt","wt");if(fp==NULL)printf("错误!无法打开");for(p=LF->next;p!=NULL;p=p->next)fprintf(fp,"%s %d %d %d %s %d %s\n",p->name,p->amount,p->price,p->tot al,p->shop,p->type,p->yonghu);printf("修改成功\n");fclose(fp);return;}elseprintf("已放弃修改");}void shopwrite1(link_shop LS){FILE *fp;shop *p;char a;printf("确认保存?(Y/else)");scanf("%*c%c",&a);if(a=='Y'){fp=fopen("shop.txt","wt");if(fp==NULL)printf("错误!无法打开");for(p=LS->next;p!=NULL;p=p->next)fprintf(fp,"%s %s %s %s\n",p->name,p->phone,p->address,p->password); printf("保存成功\n");fclose(fp);return;}elseprintf("已放弃");}void shopwrite2(link_shop LS){FILE *fp;shop *p;char a;printf("是否将信息保存至文件里?(Y/else)");scanf("%*c%c",&a);if(a=='Y'){fp=fopen("shop.txt","at");if(fp==NULL)printf("错误!无法打开");for(p=LS->next;p!=NULL;p=p->next)fprintf(fp,"%s %s %s\n",p->name,p->phone,p->address);printf("修改成功\n");fclose(fp);return;}elseprintf("已放弃修改");}void userwrite(link_user LU){FILE *fp;user *p;char a;// printf("请确认?(Y/else)");// scanf("%*c%c",&a);// if(a=='Y')// {fp=fopen("users.txt","wt");if(fp==NULL)printf("错误!无法打开");for(p=LU->next;p!=NULL;p=p->next)fprintf(fp,"%s %s %s %s %d\n",p->name,p->delivery,p->password,p->numb er,p->score);printf("操作成功\n");fclose(fp);return;// }//else//printf("已放弃注册");}void user_moneywrite(link_user LM){FILE *fp;user *p;char a;// printf("是否将信息保存至文件里?(Y/else)");// scanf("%*c%c",&a);// if(a=='Y')// {fp=fopen("users.txt","wt");if(fp==NULL)printf("错误!无法打开");for(p=LM->next;p!=NULL;p=p->next)fprintf(fp,"%s %s %s %s %d\n",p->name,p->delivery,p->password,p->numb er,p->score);//printf("注册成功\n");fclose(fp);//return;// }//else//printf("已放弃注册");}void userwrite2(link_user LU){FILE *fp;user *p;char a;printf("是否将信息保存至文件里?(Y/else)");scanf("%*c%c",&a);if(a=='Y'){fp=fopen("users.txt","at");if(fp==NULL)printf("错误!无法打开");for(p=LU->next;p!=NULL;p=p->next)fprintf(fp,"%s %s %s %s %d\n",p->name,p->delivery,p->password,p->numb er,p->score);printf("注册成功\n");fclose(fp);return;}elseprintf("已放弃注册");}void increaseshop(link_shop LS){char a[30],b[20],c[15],d[20];shop *s;printf("请输入你所想加入的店铺信息:\n");printf("\t\t●店铺名称:");scanf("%s",a);printf("\n\t\t●店铺电话:");scanf("%s",b);printf("\n\t\t●店铺地址:");scanf("%s",c);printf("\n\t\t●店铺密码:");scanf("%s",d);if(strcmp(a,"0")!=0){s=(shop *)malloc(sizeof(shop));strcpy(s->name,a);strcpy(s->phone,b);strcpy(s->address,c);strcpy(s->password,d);}s->next=LS->next;LS->next=s;shopwrite1(LS);}void shopfind(link_shop LS){shop *p;char E[20];p=LS->next;printf("请输入店铺的名称:");scanf("%s",E);while(strcmp(p->name,E)!=0&&(p->next)!=NULL){p=p->next;}if((p->next)==NULL){printf("没有此店铺");return;}printf("您所查询的店铺信息为:\n名称\t电话\t地址\n"); printf("%s %s %s",p->name,p->phone,p->address);}void registerdeal(){int q;FILE *fp;char y;link_shop head;shop *r,*p;head=r=(shop *)malloc(sizeof(shop));r->next=NULL;fp=fopen("shenqing.txt","rt");if(fp==NULL){printf("发生错误,无法打开文件");return;}if((y=fgetc(fp))==EOF){printf("目前没有需要处理的信息\n");system("pause");system("cls");MENU1();return;}else{while(!feof(fp)){p=(shop *)malloc(sizeof(shop));fscanf(fp," %s %s %s %s \n",p->name,p->phone,p->address,p->password);r->next=p;p->next=NULL;r=p;}for(p=head->next;p!=NULL;p=p->next)printf("%s %s %s\n",p->name,p->phone,p->address);printf("是否同意注册?Y/else");scanf("%*c%c",&y);if(y=='Y'){fp=fopen("shop.txt","at");if(fp==NULL)printf("文件不存在,打开错误\n");for(p=head->next;p!=NULL;p=p->next)fprintf(fp,"% s %s %s %s \n",p->name,p->phone,p->address,p->password);fclose(fp);}}printf("处理成功");fp=fopen("shenqing.txt","wt");fclose(fp);}void MENU1_choose(){int n,m,q;char a[20],b[20],c[20],d[20];char y;FILE *fp,*fa;shop *p;shop sq;link_shop LS;link_user LU;LS=shopread();while(1){printf("请选择你想所想进行的选项:\n");scanf("%d",&n);if(n==1){Outputshop(LS);printf("是否进行排序?Y/else");fflush(stdin);y=getchar();if(y=='Y'){system("cls");printf("\n\n\n\t\t\t●1.按店铺名称排序\n"); printf("\t\t\t●2.按店铺地址排序\n");scanf("%d",&m);if(m==1)name_sort(LS);if(m==2)address_sort(LS);printf("1.退出\t2.返回");scanf("%d",&m);if(m==1)exit(0);else{system("cls");MENU1();continue;}}。

C语言实现餐饮点餐管理系统

C语言实现餐饮点餐管理系统

C语⾔实现餐饮点餐管理系统本⽂实例为⼤家分享了C语⾔实现餐饮点餐管理系统的具体代码,供⼤家参考,具体内容如下具体代码如下/*项⽬名称:南航餐饮管理系统组员:梁⽂新,刘青林,刘艺,施瑞⽂(组长)*///当注册⽤户名为:root,密码为:root的账号时,系统默认为初始管理员//头⽂件#include<stdio.h>#include<stdlib.h>#include<time.h>#include<conio.h>#include<windows.h>#include<string.h>//宏定义区#define M sizeof(struct User)//⽤户表的⼤⼩#define N sizeof(struct stapleFood)//主⾷表⼤⼩#define P sizeof(struct non_stapleFood)//副⾷表⼤⼩#define Q sizeof(struct Drink_beverage) //饮品表⼤⼩#define X sizeof(struct Table)//餐桌表⼤⼩#define Y sizeof(struct Form)//订单表⼤⼩//结构体struct User //⽤户表{char userName[10];//⽤户名char passWord[18];//密码int isVIP;//会员标记int isAdministrator;//管理员标记float money;//余额struct User *next;//指针域};typedef struct User user;typedef user* pUser;struct stapleFood //主⾷{char name[20];float price;struct stapleFood *next;};struct non_stapleFood //副⾷{char name[20];float price;struct non_stapleFood *next;};typedef struct non_stapleFood non_staple_food;typedef non_staple_food *pNon_stapleFood;struct Drink_beverage //饮品{char name[20];float price;struct Drink_beverage *next;};typedef struct Drink_beverage drinkBeverage;typedef drinkBeverage *pDrinkBeverage;struct Table //餐桌{int ID;//餐桌编号int People;//已坐⼈数int count;//可容纳⼈数char Username[10];//订餐⼈struct Table *next;};typedef struct Table table;typedef table *pTable;struct Form //订单{char name[20];float price;struct Form *next;};typedef struct Form orderForm;typedef orderForm *pOrder;//⾃定义函数区//⽤户客户端void Default();//欢迎界⾯void User_Login();//⽤户登录界⾯void Logon();//注册界⾯pUser readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址void save_User(pUser p1);//将⽤户信息保存到⽂件中void User_Menu();//⽤户菜单void User_Order();//点餐void Order_StapleFood();//主⾷void Order_nonStapleFood();//副⾷void Order_DrinkBeverage();//饮品void Order_Form(int ID,int number);//订单void User_List_Table();//餐桌列表void Apply_VIP_Menu();//会员办理菜单void Add_money(pUser head);//充值void Updata_User(pUser head);//更新⽤户表void Apply_VIP(pUser head);//办理会员void User_Wallet();//我的钱包//管理员客户端void Administrator_Menu();//管理员菜单void Administrator_Login();//管理员登录void Check_User();//查看⽤户void Find_User();//查找⽤户void All_User();//查看所有⽤户void All_VIP();//本店会员void Setup_administrator();//设置管理员void Food();//菜品信息void Add_Food();//添加菜单void save_stapleFood(pStapleFood p);//保存主⾷信息void save_non_stapleFood(pNon_stapleFood p);//保存副⾷信息void save_drinkBeverage(pDrinkBeverage p);//保存饮品信息pStapleFood readStapleFoodFile();//从主⾷⽂件中读取⽤户信息,返回⼀个表头地址pNon_stapleFood readNonStapleFoodFile();//从副⾷⽂件中读取⽤户信息,返回⼀个表头地址pDrinkBeverage readDrinkBeverageFile();//从饮品⽂件中读取⽤户信息,返回⼀个表头地址void Table();//餐桌管理void Add_Table();//添加餐桌void save_Table(pTable p);//保存餐桌信息pTable readTableFile(); //从餐桌⽂件中读取⽤户信息,返回⼀个表头地址void Clear_Table();//清理餐桌void Clear_oneTable();//清理指定餐桌void Administrator_List_Table();//餐桌列表//公共函数void toxy(int x,int y);//将光标移动到x,y坐标处void HideCursor(int x);//隐藏光标char *HidePassword();//隐藏密码void Exit();//退出系统void Change();//切换账号void Amend_passWord();//修改密码void List_Food();//菜单列表//全局变量区char _userName[10];char _passWord[18];//记录当前⽤户pOrder orderHead=NULL,p2=NULL;//记录当前⽤户的订单int num=0;//函数实现区void toxy(int x,int y)//将光标移动到x,y坐标处{COORD pos={x,y};HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(Out,pos);}void HideCursor(int x)//隐藏光标 ,当x为0时,隐藏,为1时,显⽰{CONSOLE_CURSOR_INFO cursor_info ={1,x};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); }void Default()//欢迎界⾯{char t;//⽤于选择do{HideCursor(0); //隐藏光标system("color 72");toxy(28,8);printf(" 欢迎来到南航餐饮! ");toxy(26,9);printf("-----------------------------");toxy(27,11);printf("1.登录 2.注册 3.管理员登录");while(1) //死循环为防⽌其他按键⼲扰{t=getch();//不回显函数if(t=='1')//如果按1,则进⼊登录界⾯User_Login();else if(t=='2')//如果按2,则进⼊注册界⾯Logon();else if(t=='3')Administrator_Login();}//如果既不是1也不是2和3,则循环输⼊}while(1);//永远为真}void User_Menu()//⽤户菜单{char t;//⽤于选择菜单选项do{system("cls");HideCursor(0); //隐藏光标system("color 74");toxy(32,3);printf("南航餐饮点餐系统!");toxy(32,4);printf("当前⽤户:%s",_userName);toxy(30,5);printf("*********************");toxy(32,7);printf("| 1.菜单列表 |");toxy(32,9);printf("| 2.餐桌列表 |");toxy(32,11);printf("| 3.会员办理 |");toxy(32,13);printf("| 4.修改密码 |");toxy(32,15);printf("| 5.我的钱包 |");toxy(32,17);printf("| 7.退出系统 |");t=getch();//不回显函数,输⼊⼀个值switch(t){case '1':User_Order();break;case '2':User_List_Table();break;case '3':Apply_VIP_Menu();break;case '4':Amend_passWord();break;case '5':User_Wallet();break;case '6':Change();break;case '7':Exit();break;default :break;}}while(1);//永远为真}char *HidePassword()//隐藏密码{char password[18];//密码char *p;//指向密码的指针int i=0;//记录密码位数char t;//输⼊密码for(;;) //此处为输⼊密码不回显操作{t=getch(); //输⼊kif(t=='\r') //如果输⼊k为回车,则跳出循环{break;}else if(t=='\b') //如果输⼊k为删除键{if(i>0) //如若密码还没完全删除{printf("\b");printf(" ");printf("\b");i--;}}else //如果输⼊的k既不是删除键,也不是回车键{password[i]=t; //把k的值赋给_password[i];printf("*"); //输出*号,保护⽤户隐私i++; //密码位数加1}}password[i]='\0';//在数组末端加⼀个结束符p=password;//让p指向该数组return p; //返回⼀个指向密码的指针}pUser readUserFile()//从⽂件中读取⽤户信息,返回⼀个表头地址{FILE *fp; //⽂件指针int n=0;//记录链表的结点数pUser head=NULL;//定义头指针pUser p2,p,pre;fp=fopen("User.txt","a+"); //以只读的⽅式打开⽂件if(fp==NULL){printf("cannot open file\n");}else{while(!feof(fp)) //判断⽂件位置标志是否移动到⽂件末尾{n++;p=(pUser)malloc(M); //向内存申请⼀段空间fread(p,M,1,fp); //将fp所指向的⽂件中的内容赋给pif(n==1){head=p;p2=p;}else //创建链表{pre=p2;p2->next=p;p2=p;}}p2->next=NULL;}if(n<=2)head->next=NULL;elsereturn head; //返回头指针}void save_User(pUser p1) //将p1所指向的内容存储到⽂件中{FILE *fp; //⽂件指针fp=fopen("User.txt","a+"); //以追加的⽅式打开⽂件if(fp==NULL){printf("cannot open file\n");}if(fwrite(p1,M,1,fp)!=1) //将p1所指向的1个⼤⼩为N的数据结构写⼊fp所指向的⽂件中{printf("file write error\n");}fclose(fp); //关闭⽂件}void User_Login()//登录页⾯{char *q,t,c;//q指针⽤于接收 *HidePassword()函数返回的指向密码的指针,t和c均⽤于选择pUser p=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址do{HideCursor(1);//显⽰管光标system("cls");//清屏system("color 73");//设置颜⾊toxy(28,8);printf("南航餐饮管理系统登录界⾯");toxy(26,9);printf("-----------------------------");toxy(32,11);printf("⽤户名:");toxy(32,13);printf("密码:");toxy(40,11);scanf("%s",_userName);toxy(40,13);q=HidePassword();//输⼊密码strcpy(_passWord,q);//将获得的密码复制给_passWord[]数组while(p!=NULL&&strcmp(p->userName,_userName)!=0) //遍历链表,寻找当前输⼊的账户的账号 {p=p->next;}if(p!=NULL) //如果p不为空{if(strcmp(p->passWord,_passWord)==0) //如果输⼊的密码正确{toxy(32,16);printf("正在登陆....");Sleep(500); //暂停0.5秒system("cls");toxy(32,10);printf("登陆成功!");break; //跳出循环}else //如果输⼊的密码错误{toxy(32,16);printf("正在登陆....");Sleep(500);system("cls");toxy(30,8);printf("-------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("| 密码错误!是否继续? |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("-------------------------");while(1)//⽆限循环为防⽌其他按键⼲扰{t=getch(); //输⼊tif(t=='1'){system("cls"); //清屏break;}else if(t=='2') //如果输⼊t为n,进⼊开始界⾯{system("cls"); //清屏Default();break;}}else //如果p为空,即输⼊的账号不正确{toxy(32,16);printf("正在登陆....");Sleep(500);system("cls");toxy(30,8);printf("-------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("| 账号错误!是否继续? |");toxy(30,11);printf("| |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("-------------------------");while(1) //死循环防⽌其他按键⼲扰{c=getch();if(c=='1'){system("cls");break;}else if(c=='2'){system("cls"); //清屏Default();}}}}while(1);Sleep(500); //暂停0.5秒User_Menu(); //账号密码均正确,进⼊⽤户主菜单}void Logon()//注册界⾯{pUser p1;pUser p=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址p1=(pUser)malloc(M); //向内存申请⼀段空间char *q1,*q2;//q1,q2分别⽤于接收 *HidePassword()函数返回的值char userName[10],passWord[18],againPassword[18],c,k,t;//c,k,t均⽤于选择 do{system("cls");system("color 73");HideCursor(1);//显⽰光标int flag=0;//标记信息库中是否存在要注册⽤户名toxy(28,8);printf("南航餐饮管理系统注册界⾯");toxy(26,9);printf("-----------------------------");toxy(32,11);printf("⽤户名:");toxy(32,13);printf("密码:");toxy(32,15);printf("确认密码:");toxy(42,11);scanf("%s",userName);//输⼊⽤户名toxy(42,13);q1=HidePassword();//输⼊密码strcpy(passWord,q1);toxy(42,15);q2=HidePassword();//输⼊确认密码strcpy(againPassword,q2);while(p!=NULL) //遍历链表,寻找当前输⼊的账户的账号{if(strcmp(p->userName,userName)==0)//如果信息库中存在该⽤户名{toxy(32,17);printf("⽤户名已存在,请重新注册!");flag=1;//flag为1时表⽰⽤户名已存在break;//跳出循环}p=p->next;}if(flag)//如果⽤户名已存在{HideCursor(0);//隐藏光标toxy(32,21);printf("1.是\t2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='1')//如果继续,则重新注册continue;else if(t=='2')//如果不继续,则回到⾸页{system("cls");//清屏Default();//回到⾸页}}if(strcmp(passWord,againPassword)==0) //如果输⼊的两次密码均正确 {strcpy(p1->userName,userName);strcpy(p1->passWord,passWord);strcpy(_userName,userName);strcpy(_passWord,passWord);p1->isVIP=0;p1->money=0;if(strcmp(userName,"root")==0&&strcmp(passWord,"root")==0)p1->isAdministrator=1;elsep1->isAdministrator=0;toxy(32,16);printf("正在注册....");Sleep(500);break; //跳出循环}else //如果输⼊的两次密码不同{toxy(32,16);printf("正在注册....");Sleep(500);system("cls");toxy(30,8);printf("------------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("|两次密码不⼀致!是否继续注册?|");toxy(30,11);printf("| |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("------------------------------");while(1){c=getch();if(c=='1'){system("cls");break;}else if(c=='2'){system("cls");Default();break;}}}}while(1);save_User(p1); //调⽤函数,将p1所指向的内容存储到⽂件中system("cls");toxy(32,10);printf("注册成功!");Sleep(500); //暂停0.5秒toxy(32,12);printf("正在⾃动为您登陆....");Sleep(500);User_Menu(); //注册成功后进⼊主菜单}void User_Order()//点餐{int ID;int number;do{while(1){system("cls");HideCursor(1);int flag=0;pTable T,Thead;Thead=readTableFile();T=Thead;int j=11;toxy(12,6);printf("餐桌列表(按任意键继续)");toxy(2,8);printf("餐桌编号 | 可坐⼈数 | 已坐⼈数");toxy(0,9);printf("--------------------------------------");while(T!=NULL){toxy(6,j);printf("%-10d%-10d%d",T->ID,T->count,T->People); j++;T=T->next;}toxy(38,12);printf("请选择餐桌号:");scanf("%d",&ID);toxy(40,14);printf("请选择⼈数:");scanf("%d",&number);T=Thead;while(T!=NULL){if(T->ID==ID){if((T->count)-(T->People)>=number){toxy(38,16);printf("占座成功!按任意键继续点餐");flag=1;break;}else{toxy(38,16);printf("占座失败!该餐桌座位不够");flag=0;break;}}T=T->next;}if(T==NULL&&flag==0){toxy(38,16);printf("该餐桌编号不存在,请重新输⼊");Sleep(1000);continue;}else if(T!=NULL&&flag==0){toxy(38,17);printf("是否继续 1.是 2.否");while(1){ch=getch();if(ch=='1'||ch=='2')break;}if(ch=='1')continue;else if(ch=='2')break;}else if(flag)break;}if(ch=='2')break;getch();do{system("cls");printf("-----------------");toxy(28,10);printf("1) 主⾷");toxy(28,12);printf("2) 副⾷");toxy(28,14);printf("3) 饮品");toxy(28,16);printf("4)订单");toxy(28,18);printf("5)返回");t=getch();switch(t){case '1':Order_StapleFood();break;case '2':Order_nonStapleFood();break;case '3':Order_DrinkBeverage();break;case '4':Order_Form(ID,number);break;case '5':break;default :break;}if(t=='5')break;}while(1);if(t=='5')break;}while(1);}void Order_StapleFood()//主⾷{char t;do{system("cls");pStapleFood p,head=readStapleFoodFile();pOrder p1;p=head;char foodName[20];int i=8;toxy(10,4);printf("主⾷菜单");toxy(6,6);printf("菜名\t\t\t价格");toxy(0,7);printf("-----------------------------------");while(p!=NULL){toxy(6,i);printf("%-22s%.2f",p->name,p->price);i++;p=p->next;}toxy(40,8);printf("请输⼊您要点的菜名:");scanf("%s",foodName);p=head;while(p!=NULL&&strcmp(p->name,foodName)!=0) {p=p->next;}if(p){p1=(pOrder)malloc(Y);strcpy(p1->name,foodName);p1->price=p->price;num++;if(num==1){orderHead=p1;p2=p1;}else{p2->next=p1;p2=p1;}p2->next=NULL;toxy(40,10);printf("点餐成功!是否继续?1.是 2.否");while(1){if(t=='2')break;}else{toxy(36,10);printf("没有找到这道菜,请检查您输⼊的菜名是否正确!"); Sleep(1500);}}while(1);}void Order_nonStapleFood()//副⾷{char t;do{system("cls");pNon_stapleFood p,head=readNonStapleFoodFile();pOrder p1;p=head;char foodName[20];int i=8;toxy(10,4);printf("副⾷菜单");toxy(6,6);printf("菜名\t\t\t价格");toxy(0,7);printf("-----------------------------------");while(p!=NULL){toxy(6,i);printf("%-22s%.2f",p->name,p->price);i++;p=p->next;}toxy(40,8);printf("请输⼊您要点的菜名:");scanf("%s",foodName);p=head;while(p!=NULL&&strcmp(p->name,foodName)!=0){p=p->next;}if(p){p1=(pOrder)malloc(Y);strcpy(p1->name,foodName);p1->price=p->price;num++;if(num==1){orderHead=p1;p2=p1;}else{p2->next=p1;p2=p1;}p2->next=NULL;toxy(36,10);printf("点餐成功!是否继续?1.是 2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='2')break;}else{toxy(36,10);printf("没有找到这道菜,请检查您输⼊的菜名是否正确!"); Sleep(1500);}}while(1);pDrinkBeverage p,head=readDrinkBeverageFile();pOrder p1;p=head;char foodName[20];int i=8;toxy(10,4);printf("饮品菜单");toxy(6,6);printf("菜名\t\t\t价格");toxy(0,7);printf("-----------------------------------");while(p!=NULL){toxy(6,i);printf("%-22s%.2f",p->name,p->price);i++;p=p->next;}toxy(40,8);printf("请输⼊您要点的菜名:");scanf("%s",foodName);p=head;while(p!=NULL&&strcmp(p->name,foodName)!=0){p=p->next;}if(p){p1=(pOrder)malloc(Y);strcpy(p1->name,foodName);p1->price=p->price;num++;if(num==1){orderHead=p1;p2=p1;}else{p2->next=p1;p2=p1;}p2->next=NULL;toxy(36,10);printf("点餐成功!是否继续?1.是 2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='2')break;}else{toxy(36,10);printf("没有找到这道菜,请检查您输⼊的菜名是否正确!"); Sleep(1500);}}while(1);}void Order_Form(int ID,int number)//订单{do{system("cls");int i=10;char t;float totalPrice=0;float actualPayment=0;pOrder p=orderHead;pUser q,head;pTable T,Thead;q=head;if(orderHead==NULL){printf("我的订单");toxy(22,8);printf("菜品名称\t\t价格");toxy(20,9);printf("***************************");while(p!=NULL){toxy(22,i);printf("%-18s%.2f",p->name,p->price);i++;totalPrice+=p->price;p=p->next;}head=readUserFile();q=head;toxy(20,i);printf("***************************");while(q!=NULL&&strcmp(q->userName,_userName)!=0) {q=q->next;}if(q){toxy(24,++i);printf("总价: %.2f",totalPrice);if(q->isVIP)actualPayment=totalPrice*0.85;elseactualPayment=totalPrice;toxy(24,++i);printf("实付: %.2f",actualPayment);}toxy(22,++i);printf("1.确认⽀付 2.取消订单 3.返回");while(1){t=getch();if(t=='1'||t=='2'||t=='3')break;}if(t=='1'){Thead=readTableFile();T=Thead;while(T!=NULL&&T->ID!=ID){T=T->next;}toxy(24,++i);printf("正在⽀付....");if(q->money>=actualPayment){q->money-=actualPayment;T->People+=number;Updata_User(head);Updata_Table(Thead);Sleep(1500);system("cls");toxy(24,10);printf("⽀付成功!按任意键返回");orderHead=NULL;getch();break;}else{Sleep(1500);system("cls");toxy(24,10);printf("余额不⾜!按任意键返回");getch();break;}}else if(t=='2'){orderHead=NULL;break;}else if(t=='3')void User_List_Table()//餐桌列表{system("cls");pTable p,head;head=readTableFile();p=head;int i=11;toxy(32,6);printf("餐桌列表(按任意键继续)");toxy(22,8);printf("餐桌编号 | 可坐⼈数 | 已坐⼈数");toxy(20,9);printf("--------------------------------------");while(p!=NULL){toxy(26,i);printf("%-10d%-10d%d",p->ID,p->count,p->People);i++;p=p->next;}getch();}void Apply_VIP_Menu()//办理会员{char t; //t⽤于选择do{system("cls");system("color 75");HideCursor(0);pUser head=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址toxy(32,6);printf("会员办理");toxy(30,8);printf("1) 充值 ");toxy(30,10);printf("2) 办理会员");toxy(30,12);printf("3) 返回");t=getch();switch(t){case '1':Add_money(head);break;case '2':Apply_VIP(head);break;case '3':break;default :break;}if(t=='3')//如果输⼊3,则跳出循环,该函数⽣命周期结束,回到上⼀级菜单break;}while(1);}void Add_money(pUser head)//充值{float money;//输⼊要充值的钱pUser p;p=head;//head为从上⼀级菜单传过来的参数,为⽤户信息链表的头结点while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登录账户的信息 {p=p->next;}while(1){system("cls");system("color 76");toxy(32,6);printf("南航餐饮充值中⼼");if(p!=NULL){if(p->isVIP==0)//如果不是会员{toxy(20,8);printf("对不起,您还不是会员,请先办理会员后再来充值!");toxy(32,10);printf("请按任意键返回!");break;}else if(p->isVIP==1)//如果是会员{HideCursor(1);toxy(32,8);printf("请输⼊充值⾦额(⼀次不少于200):");printf("正在充值....");Updata_User(head);//更新⽤户表toxy(32,10);printf("充值成功 ");toxy(32,12);printf("请按任意键返回!");break;}else//如果充值⾦额⼩于200{toxy(32,10);printf("⼀次⾄少充值200元!");Sleep(1500);continue;}}}}getch();}void Apply_VIP(pUser head)//办理会员{system("cls");system("color 76");pUser p=head;//head为从上⼀级菜单传过来的参数,为⽤户信息链表的头结点char t;float money;toxy(32,6);printf("南航餐饮会员办理中⼼");while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登录账户的信息 {p=p->next;}do{if(p!=NULL){if(p->isVIP==1)//如果已经是会员{toxy(20,8);printf("您已是本店尊贵会员,⽆需再次办理!");toxy(32,10);printf("请按任意键返回!");getch();break;}else if(p->isVIP==0)//如果还没办理会员{toxy(30,8);printf("提⽰:");toxy(30,9);printf("1.办理会员⾄少充值500");toxy(30,10);printf("2.冲500送200,冲1000送500");toxy(32,12);printf("是否确认办理会员?");toxy(32,13);printf("1.是\t2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='1'){while(1){system("cls");HideCursor(1);toxy(32,10);printf("请输⼊充值⾦额:");scanf("%f",&money);if(money>=500&&money<1000){money+=200;p->money+=money;p->isVIP=1;Updata_User(head);toxy(32,12);}else if(money>=1000){money+=500;p->money+=money;p->isVIP=1;Updata_User(head);toxy(32,12);printf("恭喜,您已成为本店尊贵会员!");toxy(32,14);printf("请按任意键返回主菜单");getch();User_Menu();}else{toxy(32,12);printf("办理会员⾄少充值500");Sleep(2000);}}}else if(t=='2')break;}}}while(1);}void Updata_User(pUser head)//更新⽂件{FILE *fp;pUser p=head->next; //使p指向第⼆个结点fp=fopen("User.txt","w"); //先清空原⽂件内容再将修改后的信息写⼊⽂件if(fp==NULL){printf("cannot open file\n");}if(fwrite(head,M,1,fp)!=1) //将head所指向的数据写⼊fp所指向的⽂件{printf("file write error\n");}fclose(fp); //关闭⽂件fp=fopen("User.txt","a"); // 打开User.txt⽂件,⽅式为追加while(p!=NULL) //p不为空就执⾏循环体{if(fwrite(p,M,1,fp)!=1) //将p所指向的1个⼤⼩为N的数据结构写⼊fp所指向的⽂件{printf("file write error\n");}p=p->next; //使p指向下⼀个结点}fclose(fp); //关闭⽂件}void Amend_passWord()//修改密码{system("cls"); //清屏HideCursor(0); //隐藏光标,看着更舒服pUser p,head;head=readUserFile();do{p=head;char password[18],newpassword[18],t,k,*q1,*q2;int i=0;toxy(34,5); //将光标移动到坐标为(50,5)的位置printf("南航餐饮点餐系统");toxy(34,8);printf("修改密码");toxy(32,10);printf("请输⼊旧密码:");q1=HidePassword();strcpy(password,q1);toxy(32,12);printf("请输⼊新密码:");q2=HidePassword();strcpy(newpassword,q2);while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登陆账户的账号 {p=p->next;}if(p!=NULL) //如果p不为空break; //跳出循环}else //如果旧密码输⼊错误{system("cls");toxy(30,8);printf("--------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("| 密码错误!是否继续? |");toxy(30,11);printf("| |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("--------------------------");while(1){t=getch(); //输⼊tif(t=='1'){system("cls");break;}else if(t=='2')User_Menu();}}}}while(1); //永远为真Updata_User(head);//修改密码toxy(32,14);printf("修改成功!正在跳转...");Sleep(500); //暂停0.5秒}void User_Wallet()//我的钱包{system("cls");system("color 78");pUser p,head;head=readUserFile();p=head;while(p!=NULL&&strcmp(p->userName,_userName)!=0) {p=p->next;}if(p!=NULL){toxy(32,10);printf("账户余额为:%.2f",p->money);toxy(32,12);printf("请按任意键返回");}getch();}void Change()//切换账号{system("cls");Default();}void Exit()//退出点餐系统{char t;toxy(30,10);printf("-----------------------");toxy(30,11);printf("| 您确定要退出吗? |");toxy(30,13);printf("| 1.确定 2.取消 |");toxy(30,14);printf("-----------------------");while(1){t=getch(); //输⼊tswitch(t){case '1':system("cls");toxy(32,10);printf("已安全退出软件");toxy(32,12);printf("谢谢使⽤!");toxy(32,14);printf("by-by^_^");exit(0); break; //终⽌程序case '2':break; //调⽤函数,进⼊菜单default :break;}if(t=='2')break;}}void Administrator_Menu()//管理员菜单{char t;//⽤于选择菜单选项do{system("cls");HideCursor(0); //隐藏光标system("color 74");toxy(32,3);printf("南航餐饮管理系统!");toxy(32,4);printf("当前管理员:%s",_userName);toxy(30,5);printf("*********************");toxy(32,7);printf("| 1.菜品信息 |");toxy(32,9);printf("| 2.餐桌管理 |");toxy(32,11);printf("| 3.查看⽤户 |");toxy(32,13);printf("| 4.本店会员 |");toxy(32,15);printf("| 5.设置管理员 |");toxy(32,17);printf("| 6.修改密码 |");toxy(32,19);printf("| 7.切换账号 |");toxy(32,21);printf("| 8.退出系统 |");t=getch();//不回显函数,输⼊⼀个值switch(t){case '1':Food();break;case '2':Table();break;case '3':Check_User();break;case '4':All_VIP();break;case '5':Setup_administrator();break;case '6':Amend_passWord();break;case '7':Change();break;case '8':Exit();break;default :break;}}while(1);//永远为真}void Administrator_Login()//管理员登录{char *q,t,c;//q指针⽤于接收 *HidePassword()函数返回的指向密码的指针,t和c均⽤于选择 pUser p=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址do{HideCursor(1);//显⽰管光标system("cls");//清屏system("color 73");//设置颜⾊toxy(28,8);printf("南航餐饮管理员登录界⾯");toxy(26,9);printf("-----------------------------");toxy(32,11);printf("⽤户名:");toxy(32,13);printf("密码:");toxy(40,11);scanf("%s",_userName);toxy(40,13);q=HidePassword();//输⼊密码strcpy(_passWord,q);//将获得的密码复制给_passWord[]数组。

餐饮管理系统代码大全(doc 9页)

餐饮管理系统代码大全(doc 9页)

餐饮管理系统代码大全(doc 9页)餐饮管理系统代码1 using System;2using System.Collections.Generic;3using ponentModel;4using System.Data;5using System.Drawing;6using System.Text;7using System.Windows.Forms;8using System.Collections;9namespace 餐饮管理系统10...{11 public partial class frmManagement : Form12 ...{13 ArrayList RoomStatus = new ArrayList();28 ...{29 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.管理员”中。

您可以根据需要移动或移除它。

30 this.管理员TableAdapter.Fill(this.dieteticManagementData Set.管理员);31 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.Vip”中。

您可以根据需要移动或移除它。

32this.vipTableAdapter.Fill(this.dieteticManageme ntDataSet.Vip);3334 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.餐牌”中。

您可以根据需要移动或移除它。

35 this.餐牌TableAdapter.Fill(this.dieteticManagementData Set.餐牌);36 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.食品类别”中。

您可以根据需要移动或移除它。

37 this.食品类别TableAdapter.Fill(this.dieteticManagementData Set.食品类别);38 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.商品”中。

饭店管理系统(c语言课程设计)

饭店管理系统(c语言课程设计)
for(i=number-a;i<number;i++)
scwork();
savework();
printf("增加成功\n");
}
void searchname()//按照名字查询
{
char name[12];int r=0;
printf("请输入名字\n");
scanf("%s",name);
printf("|------------------------------------------------------------------|\n\n");
}
//---------------------------------------------------------------------------员工信息
fwrite(&number,sizeof(int),1,fn);
fclose(fn);
}
void arragework()//重置员工信息
{
printf("输入您想要安排的人员个数\n");
scanf("%d",&number);
printf("工号 姓名 每月休息日期1: 2: 3: 4: \n");
case 2:fp=fopen("mimazf.txt","wb"); if((fp=fopen("mimazf.txt","wb"))==NULL) printf("无法创建密码文件\n");break;

餐饮管理系统(1)界面图+源代码

餐饮管理系统(1)界面图+源代码

餐饮管理系统1、前言在餐饮业务竞争越来越激烈的今天,如何提高服务质量,其管理能力显的越来越重要。

尤其是对一些大的餐饮店,餐饮店内部服务项目越多,管理难度越大,既要处理前台又要处理后台的工作,所以一个好的管理系统可以提高酒店的管理水平也可以大幅度提高酒店服务水平.1.1目的随着当今社会信息化的日新月异的发展,计算机应用已经渗透到日常工作的许多方面无论是其自身还是所发挥的作用,计算机都标志着一种高科技、高效率和高水平。

为了企业创先进、争一流,为了企业的发展一套好的系统必不可少。

现在餐饮业发展速度飞快,要想在激烈的社会竞争有一席之地,好的服务是最基本的保障,此次开发的餐饮管理系统就是针对现代化社会管理和要求,在服务上提高自己的效率,使自己的公司立于不败之地。

1。

2定义餐饮管理系统,SQL,E-R图1。

3 参考资料《数据库应用系统开发技术》朱如龙刘焰机械出版社2004年8月《VC++与SQL2000开发技术》汪晓平钟军人民邮电出版社2004年8月2、系统设计2。

1系统目标设计餐饮管理系统的主要目标是实现对酒店内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐饮服务提供保证。

2。

2开发设计思想餐厅系统是按照国内餐饮行业最新要求开发的全心概念的信息管理系统.该系统将餐厅收银、往来帐务结算及销售情况统计工作在单计算机或网络系统中完成。

主要特点包括:*代码菜谱编制,方便统计,方便输入;*开单、改单、结算、打印、用户界面方便友好;*系统专设往来账、内部账,结算方式灵活多样,结算消息详尽;*系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;*报表真实,实用性强,如:收银报表汇总收银、支票、信用卡、转帐等情况;菜肴销售报表汇总各种菜肴的日、月销售量;员工销售统计表,可打印值台人员销售业绩核实报表提供依据。

*账务系统共讷讷感的完整性。

一旦该系统正式运行,餐厅每日的营业账和全部往来客户的账务操作结算都将依靠计算机,该系统面对当前餐厅餐饮业各种负复杂的结算要求应具有很强的应变能力。

C#餐饮管理系统课程设计

C#餐饮管理系统课程设计
优化设计等
实施修复:按 照修复方案进 行修复,并验
证修复效果
记录缺陷处理过 程:记录缺陷的 发现、分析、修 复和验证过程, 以便后续参考和
改进
设计总结
课程设计目标:掌 握C#语言和餐饮 管理系统的开发
课程设计内容:餐 饮管理系统的需求 分析、设计、实现 和测试
课程设计成果:成 功开发出一套完整 的餐饮管理系统
优化实施:按照优化方案 进行优化,如优化数据库 查询、优化代码逻辑等
性能验证:优化后进行性 能验证,确保系统性能达 到预期效果
系统缺陷处理
发现系统缺陷: 通过测试发现 系统存在的问

分析缺陷原因: 分析缺陷产生 的原因,如代 码错误、设计
问题等
制根据订单号修改订单信 息,如菜品、数量、价格等
订单删除:用户根据订单号删除订单信 息
订单支付:用户选择支付方式,如支付 宝、微信等,完成订单支付
订单打印:用户根据订单信息打印订单 小票,方便核对和存档
收银模块实现
收银功能:包括订单结算、支付方式选择、打印小票等 支付方式:支持现金、银行卡、支付宝、微信等多种支付方式 订单管理:记录订单信息,包括订单号、菜品、数量、价格等 打印小票:打印订单详情,包括订单号、菜品、数量、价格、支付方式等信息
订单管理:显示订单信息,包括订单号、菜 品、数量、价格等
系统设置:包括系统参数设置、数据库管理 等功能
模块设计
前台模块:负责用户界面展示和操作
库存管理模块:负责库存的查询、更新和报 警
后台模块:负责数据处理和存储
报表管理模块:负责生成和打印各种报表
订单管理模块:负责订单的接收、处理和跟 踪
系统管理模块:负责系统的配置、维护和升 级

C语言下的智能餐饮管理系统设计与实现

C语言下的智能餐饮管理系统设计与实现

C语言下的智能餐饮管理系统设计与实现智能餐饮管理系统是一种利用计算机技术和信息管理技术,对餐饮行业进行智能化管理的系统。

在当今信息化社会,智能餐饮管理系统已经成为餐饮行业提高效率、降低成本、提升服务质量的重要工具。

本文将介绍如何利用C语言设计和实现智能餐饮管理系统。

一、系统需求分析在设计智能餐饮管理系统之前,首先需要进行系统需求分析。

智能餐饮管理系统通常包括以下功能模块:菜单管理:包括菜品的添加、删除、修改和查询功能。

订单管理:包括订单的生成、结算、打印和查询功能。

库存管理:包括原材料的采购、入库、出库和库存查询功能。

员工管理:包括员工信息的录入、修改、删除和查询功能。

报表统计:包括销售统计、库存统计等报表生成功能。

二、系统设计1. 数据结构设计在C语言中,可以利用结构体来定义菜品、订单、原材料等数据结构,例如:示例代码star:编程语言:ctypedef struct {int id;char name[50];float price;} Dish;typedef struct {int id;Dish dishes[50]; int dishCount;float totalPrice; } Order;typedef struct {int id;char name[50];float price;int quantity;} Material;示例代码end2. 模块设计根据系统需求分析,可以将系统划分为菜单管理模块、订单管理模块、库存管理模块、员工管理模块和报表统计模块。

每个模块包含相应的函数实现,实现模块化开发。

三、系统实现1. 菜单管理模块实现示例代码star:编程语言:cvoid addDish(Dish *menu, int *dishCount) {// 添加菜品逻辑}void deleteDish(Dish *menu, int *dishCount) {// 删除菜品逻辑}void updateDish(Dish *menu, int dishCount) {// 修改菜品逻辑}void queryDish(Dish *menu, int dishCount) {// 查询菜品逻辑}示例代码end2. 订单管理模块实现示例代码star:编程语言:cvoid createOrder(Order *orders, int *orderCount) { // 生成订单逻辑}void settleOrder(Order *orders, int orderCount) {// 结算订单逻辑}void printOrder(Order *orders, int orderCount) {// 打印订单逻辑}void queryOrder(Order *orders, int orderCount) {// 查询订单逻辑}示例代码end3. 库存管理模块实现示例代码star:编程语言:cvoid purchaseMaterial(Material *materials, int*materialCount) {// 原材料采购逻辑}void inStock(Material *materials, int materialCount) {// 原材料入库逻辑}void outStock(Material *materials, int materialCount) { // 原材料出库逻辑}void queryStock(Material *materials, int materialCount){// 查询库存逻辑}示例代码end4. 员工管理模块实现示例代码star:编程语言:cvoid addEmployee(Employee *employees, int *employeeCount) {// 添加员工逻辑}void deleteEmployee(Employee *employees, int*employeeCount) {// 删除员工逻辑}void updateEmployee(Employee *employees, int employeeCount) {// 修改员工信息逻辑}void queryEmployee(Employee *employees, int employeeCount) {// 查询员工信息逻辑}示例代码end5. 报表统计模块实现示例代码star:编程语言:cvoid salesStatistics(Order *orders, int orderCount) { // 销售统计逻辑}void stockStatistics(Material *materials, int materialCount) {// 库存统计逻辑}示例代码end四、系统测试与优化在完成系统开发后,需要进行系统测试,确保系统各功能正常运行。

大一c语言饭店管理系统

大一c语言饭店管理系统

大一c语言饭店管理系统以下是一个简单的C语言实现的饭店管理系统,包括菜单显示、点餐、结账等功能:```cinclude <>include <>define MAX_DISHES 100define MAX_TABLES 10typedef struct {char name[50];float price;} Dish;typedef struct {int table_num;Dish dishes[MAX_DISHES];int dish_count;} Table;Table tables[MAX_TABLES];int table_count = 0;void display_menu() {printf("菜单:\n");for (int i = 0; i < table_count; i++) {printf("桌 %d:\n", tables[i].table_num);for (int j = 0; j < tables[i].dish_count; j++) {printf("%s - %.2f 元\n", tables[i].dishes[j].name, tables[i].dishes[j].price);}}}void add_dish(Dish dish) {for (int i = 0; i < table_count; i++) {if (tables[i].dish_count < MAX_DISHES) {tables[i].dishes[tables[i].dish_count] = dish;tables[i].dish_count++;break;}}}void take_order(int table_num, Dish dish) {for (int i = 0; i < table_count; i++) {if (tables[i].table_num == table_num) {for (int j = 0; j < tables[i].dish_count; j++) { if (strcmp(tables[i].dishes[j].name, ) == 0) { printf("点餐成功!\n");return;}}}}printf("没有找到该菜品!\n");}void pay(int table_num) {float total = 0;for (int i = 0; i < table_count; i++) {if (tables[i].table_num == table_num) {for (int j = 0; j < tables[i].dish_count; j++) { total += tables[i].dishes[j].price;}printf("总计:%.2f 元\n", total);printf("请输入支付金额:");float pay = 0;scanf("%f", &pay);if (pay == total) {printf("支付成功!\n");} else {printf("支付失败!\n");}break;}}}```。

餐饮管理系统1界面图+源代码

餐饮管理系统1界面图+源代码

餐饮管理系统1、前言在餐饮业务竞争越来越激烈的今天,如何提高服务质量,其管理能力显的越来越重要。

尤其是对一些大的餐饮店,餐饮店内部服务项目越多,管理难度越大,既要处理前台又要处理后台的工作,所以一个好的管理系统可以提高酒店的管理水平也可以大幅度提高酒店服务水平。

1.1目的随着当今社会信息化的日新月异的发展,计算机应用已经渗透到日常工作的许多方面无论是其自身还是所发挥的作用,计算机都标志着一种高科技、高效率和高水平。

为了企业创先进、争一流,为了企业的发展一套好的系统必不可少.现在餐饮业发展速度飞快,要想在激烈的社会竞争有一席之地,好的服务是最基本的保障,此次开发的餐饮管理系统就是针对现代化社会管理和要求,在服务上提高自己的效率,使自己的公司立于不败之地.1.2定义餐饮管理系统,SQL,E-R图1.3 参考资料《数据库应用系统开发技术》朱如龙刘焰机械出版社 2004年8月《VC++与SQL2000开发技术》汪晓平钟军人民邮电出版社 2004年8月2、系统设计2.1系统目标设计餐饮管理系统的主要目标是实现对酒店内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐饮服务提供保证。

2.2开发设计思想餐厅系统是按照国内餐饮行业最新要求开发的全心概念的信息管理系统。

该系统将餐厅收银、往来帐务结算及销售情况统计工作在单计算机或网络系统中完成。

主要特点包括:*代码菜谱编制,方便统计,方便输入;*开单、改单、结算、打印、用户界面方便友好;*系统专设往来账、内部账,结算方式灵活多样,结算消息详尽;*系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;*报表真实,实用性强,如:收银报表汇总收银、支票、信用卡、转帐等情况;菜肴销售报表汇总各种菜肴的日、月销售量;员工销售统计表,可打印值台人员销售业绩核实报表提供依据。

*账务系统共讷讷感的完整性。

一旦该系统正式运行,餐厅每日的营业账和全部往来客户的账务操作结算都将依靠计算机,该系统面对当前餐厅餐饮业各种负复杂的结算要求应具有很强的应变能力。

(精编)餐饮管理系统代码大全

(精编)餐饮管理系统代码大全

(精编)餐饮管理系统代码大全餐饮管理系统代码1 using System;2using System.Collections.Generic;4using System.Data;5using System.Drawing;6using System.Text;7using System.Windows.Forms;8using System.Collections;9namespace 餐饮管理系统10...{11 public partial class frmManagement : Form12 ...{13 ArrayList RoomStatus = new ArrayList();14 ArrayList VipClass = new ArrayList();15 public frmManagement()16 ...{17 InitializeComponent();18 }1920 private void 房间类型BindingNavigatorSaveItem_Click(object sender, EventArgs e)21 ...{22 this.Validate();23 this.房间类型BindingSource.EndEdit();24 this.房间类型TableAdapter.Update(this.dieteticManagementDataSet.房间类型);25 }2627 private void frmManagement_Load(object sender, EventArgs e)28 ...{29 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.管理员”中。

您可以根据需要移动或移除它。

30 this.管理员TableAdapter.Fill(this.dieteticManagementDataSet.管理员);31 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.Vip”中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

餐饮管理系统1.1开发背景近几年来,计算机网络、分布技术日趋成熟,随着科技的发展,餐饮业的竞争也越来越激烈。

想在这样竞争激烈的环境下生存,就必须运用科学的管理思想与先进的管理方法,使点餐与管理一体化。

这样不仅提高了工作效率,也避免了以前手工作业的麻烦,从而使管理者能够准确、有效地管理餐饮。

因此,餐饮业的管理者更希望从科学的管理中取得竞争的优势,在竞争激烈的商业市场中取胜。

1.2系统分析1.2.1 需求分析通过与XXX餐饮公司的沟通和需求分析,要求系统具体以下功能:●系统操作简单,界面友好●规范、完善的基础信息设置;●支持多人操作,要求有权限分配功能;●为了方便用户,要求系同支持模糊查询;●实现对消费账目自动结算。

1.引言(1)编写目的以文件的形式给企业的决策层提供项目实施的参考依据,其中包括项目存在的风险、项目需要的投资和能够收获的最大效益。

(2)背景XXX餐饮公司是一家以餐饮经营为主的私营企业。

为了完善管理制度、增强企业的竞争力、实现信息化管理,公司决定开发餐饮管理系统。

2.可行性研究的前提(1)要求餐饮管理系统必须提供桌台信息、菜品信息和人事档案信息的基础设置;强大的查询功能和消费管理功能;可以分不同权限、不同用户对该系统进行操作。

另外,该系统还必须保证数据的安全性、完整性和准确性。

(2)目标餐饮管理系统的目标是实现企业的信息化管理,节约人力、物力、财力等资源,提高餐饮行业的服务效率并提升企业市场竞争力。

(3)条件、假定和限制为实现企业的信息化管理,必须对才做人员进行培训,而且将原有的菜品、桌台、人事档案等信息转换为信息化数据,需要操作员花费大量时间和精力来完成,为不影响企业的正常运行,餐饮管理系统必须在两个月的时间内交付用户使用。

系统分析人员需要两个内到位,用户需要4天时间确认需求分析文档。

去除其中可能出现的问题,例如用户可能临时有事,占用5天时间确认需求分析。

那么程序开发人员需要在一个月零19天的时间内进行系统设计、程序编码、系统测试、程序调试和程序的打包工作。

其间,还包括员工每周的休息时间。

(4)评价尺度根据用户的要求,项目主要以桌台信息、菜品信息和查询统计功能为主,对于认识档案和消费信息应该及时准确地保存,并提供相应的查询和统计。

3.投资及效益分析(1)支出根据系统的规模及项目的开发周期(两个月),公司决定投入7个人。

为此,公司将直接支付10万元的工资及各种福利待遇。

在项目安装及调试阶段,用户培训、员工出差等费用支出需要2万元。

在项目维护阶段预计需要投入3万元的资金。

累计项目投入需要15万元资金。

(2)收益用户提供项目资金35万元。

对于项目运行后进行的改动,采取协商的原则根据改动规模额外提供资金。

因此从投资与收益的效益比上看,公司可以获得20万元的利润。

项目完成后,会给公司提供资源储备,包括技术、经验的累积,其后在开发类似的项目时,可以极大地缩短项目开发周期。

4.结论根据上面的分析,在技术上不会存在问题,因此项目延期的可能性很小。

在效益上公司投入7个人、两个月的时间获利20万元,效益比较可观。

在公司今后发展上可以储备项目开发的经验和资源。

因此认为该项目可以开发。

1.3系统设计本系统属于小型的餐饮管理系统,可以有效地对中小型餐厅消费进行管理。

本系统应达到以下目标:●系统采用人机交互的方式,界面美观有好,信息查询灵活、方便,数据存储安全可考;●实现对餐厅客户开台、点菜/加菜、账目查询和结账等操作;●对用户数的数据进行严格的数据检验,尽可能地避免人为错误;●实现对消费账目自动结算;●实现对消费的历史记录进行查询、支持模糊查询;●系统应最大限度地实现易维护性和易操作性。

1.3.2 系统功能结构餐饮管理系统功能结构如图1_1所示。

(3)字段命名规则字段一律采用英文单词或词组(可利用翻译软件)命名,如找不到专业的英文单词或词组,可以用相同意义的英文单词或词组代替。

下面将举例说明,表1_3为桌台信息表中的部分字段。

2.业务编码规则(1)桌台编号桌台的ID编号是餐饮管理系统中桌台的唯一标识,不同的桌台可以通过该编号来区分。

该编号是个字增序号,从数字1开始。

例如1、2、3。

(2)食品类别编号食品类别编号用于区分食品的不同类别,不同的食品种类可以通过该编号来区分。

该编号是个字增序号,从数字1开始。

例如1、2、3。

(3)员工编号员工编号用于区分各个员工的信息,不同的员工可以通过该编号来区分(即使员工名称相同)。

该编号是个字增序号,从数字1开始。

例如1、2、3。

餐饮管理系统由多个窗体组成,下面仅列出几个典型窗体,主窗体模块如图1_2所示,主要功能是连接系统功能菜单、显示所有桌台和现实系统当前状态。

图1_2 主窗体模块点菜模块如图1_3所示,主要功能是为顾客点菜。

图1_3 点/加菜模块开台模块如图1_4所示,主要功能是实现对指定的桌台进行开台操作。

图1_4 开台模块运行结果结账模块如图1_5所示,主要功能是对指定的桌台进行结账操作,同时,清空结账桌台的所有消费信息。

图1_5 结账模块运行结果餐饮管理系统的业务流程图如图1_6所示。

行存储,在查询时可以根据商品类别进行查询,商品信息实体E-R 图如图1_8所示。

在数据库中建立一个商品类型信息表,用于存储商品的所有类别信息,商品类别信息实体E-R 图如图1_9所示。

3.tb_GuestFood(顾客消费信息表)tb_GuestFood表用于保存顾客的消费信息,该表结构如表1_6所示。

4.tb_Room(桌台信息表)tb_Room表用于保存所有桌台信息,该表结构如表1_7所示。

5.tb_User(用户信息表)tb_User表用于保存所有系统用户信息,该表结构如表1_8所示。

6.tb_Writer(职员信息表)tb_Writer表用于保存所有职员信息,该表结构如表1_9所示。

1.5 公共类设计为了节省系统资源,实现代码重用,可以在系统中设计一些公共类。

本系统中创建了一个DBConn公共类,该类封装了用于连接数据库的方法。

由于此类对数据库进行操作,所以需要引入一个命名空间,其主要代码如下:自定义方法CyCon用于连接数据库,此方法返回一个SqlConnection对象,主要代码如下:1.6 系统登录模块设计为了使系统的安全性得到保障,大多数系统都开发登录模块。

只有通过登录模块,才能对登录用户进行验证,只有系统的合法用户才可以进入系统的主界面。

登录模块运行结果如图1_14所示。

图1_14 登录模块运行结果1.6.2 系统登录模块技术分析运行本系统的登录模块,用户只需要输入用户名和密码,单击“登录”按钮进行验证。

登录模块以登录的用户和密码作为搜索条件,在数据库中进行查询。

使用SqlDataReader对象的HasRows属性判断登录用户名和密码是否正确。

下面介绍SqlDataReader对象的HasRows属性。

HasRows属性用于获取一个bool型的值,该值指示SqlDataReader是否包含一行或多行,语法如下:public override bool HasRows{get;}属性值:如果SqlDataReader包含一行或多行,则为true;否则为false。

例如,验证登录用户名和密码是否正确,可以通过以下代码实现:1.6.3 系统登录模块实现过程该模块需要使用的数据表示:tb_User系统登录模块的具体实现步骤如下:(1)新建一个Windows窗体,命名为frmLogin.cs,主要用于实现系统的登录功能,该窗体用的主要主要空间表如表1-10所示。

表1_10 登录窗体用到的主要控件(2)由于餐饮系统使用Microsoft SQL Server 2012作为后台数据库,因为先要引用命名空间,以便在程序操作数据库,关键代码如下:单击“登录”按钮之后,登录模块首先判断是否输入了用户名和密码,如果没有输入用户名和密码将弹出提示框,提示用户输入登录系统的用户名和密码;如果输入了用户名和密码,系统将判断输入的用户名和密码是否正确,关键代码如下:当用户输入用户名和密码之后,还可以按Enter键登录系统,实现的原理是:在输入密码的文本框的KeyPress事件下,判断是否按了Enter键,如果按了Enter键就会激发“登录”按钮的Click事件,关键代码如下:单击“取消”按钮,退出系统登录,关键代码如下:1.7开台模块设计1.7.1 开台模块概述当顾客要进行消费时,首先要看一下是否还有可用的桌台,如果还有空闲的桌台,那么就要为顾客开台,只有在开台之后,才能为顾客点菜、查询和结账。

所以开台模块在整个系统中是非常重要的。

开台模块用于对指定的桌台进行开台操作,此功能是通过“开台”窗体实现的,如图1_15所示。

图1_15 开台单窗体1.7.2 开台模块技术分析在某个桌台上选择其中右键菜单中的“开台”命令,将根据该桌台的名称弹出相应的开台单窗体,在开台单窗体中用户可以对桌台编号、帐单日期、顾客名称、用餐人数、服务员和备注进行录入或更改。

数据录入或修改完毕后,单击“保存”按钮完成开台单的操作。

在开发此模块时,主要用到了数据库的更新技术,例如,将姓名为小吕的年龄修改为28,可以使用下面的代码实现:Update tb_ls set age=28 where name=’小吕’1.7.3 开台模块实现过程本模块使用的数据表示:tb_Room、tb_Waiter(1)新建一个Windows窗体,命名为frmOpen.cs,主要用于实现对指定的桌台进行开台操作的功能,该窗体用到的主要控件如表1_12所示。

表1_12 开台单窗体中用到的主要控件在窗体加载时,将数据库中所有的桌台信息和职员信息检索出来显示在ComboBox控件中,关键代码如下:(3)在“用餐人数”文本框中输入用餐人数,此数据必须保证为大于0的数字,关键代码如下:(4)当数据输入完毕之后,单击“保存”按钮即可对指定的桌台进行开台操作,关键代码如下:1.8 点/加菜模块设计1.8.1 点/加菜模块概述为顾客选好桌台,并且开台之后,会根据顾客的需要点菜或购买茶水研究之类的消费品,在点/加菜模块中会显示餐厅特有的一些菜系,用户可以对不同的菜系进行选择。

点/加菜模块运行结果如图1_16所示。

图1_16 点/加菜模块运行结果1.8.2 点/加菜模块技术分析系统点/加菜模块主要利用TreeView控件显示所有的菜系,利用DataGridView控件显示顾客消费的所有信息,当单击某个菜系时,右侧将出现此菜系的所有详细信息,选择菜系后单击“保存”按钮完成对指定桌台的点菜操作。

1.8.3 点/加菜模块实现过程本模块使用的数据表:tb_Food、tb_Waiter、tb_Room、tb_GuestFood点/加菜模块的具体实现步骤如下:(1)新建一个Windows窗体,命名为frmDC.cs,主要用于实现系统的点菜功能,该窗体用到的主要控件如表1_14所示。

相关文档
最新文档