C课程设计报告餐厅管理.pdf

上传人:啊飒飒 文档编号:11332783 上传时间:2021-07-26 格式:PDF 页数:17 大小:612.13KB
返回 下载 相关 举报
C课程设计报告餐厅管理.pdf_第1页
第1页 / 共17页
C课程设计报告餐厅管理.pdf_第2页
第2页 / 共17页
C课程设计报告餐厅管理.pdf_第3页
第3页 / 共17页
C课程设计报告餐厅管理.pdf_第4页
第4页 / 共17页
C课程设计报告餐厅管理.pdf_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《C课程设计报告餐厅管理.pdf》由会员分享,可在线阅读,更多相关《C课程设计报告餐厅管理.pdf(17页珍藏版)》请在三一文库上搜索。

1、C 语言课程设计报告书 题目:餐厅管理 学号:09110600姓名: 学号:09110600姓名: 学号:09110600姓名: 1.功能需求 点菜,客户结账,账目管理,餐馆统计,退出。 2. 总体设计 2.1 系统模块结构框图 2.2 功能模块框图 2.3 系统流程图 Main 函数 3. 详细设计 基于系统需求分析与系统总体设计的结论, 本系统采用 VC 实现 各模块的功能。 下面按照模块的划分来分别阐述系统的详细设计和实 现过程。 3.1 功能选择 3.1.1 模块描述 功能选择模块为系统提供类似于菜单的功能, 让用户输入功 能选项,并进入相应的功能执行程序。 3.1.2 源文件定义 r

2、estaurant.c 3.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 #include #i

3、nclude #include #include #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_IDN;/记录菜的编号 struct Order *next; ORDER; /定义餐厅结构体 typedef struct Table int Table_ID;/餐桌编号 int C

4、apacity;/餐桌最多能容纳的人数 int Table_State;/1有人在用,0没人在用 TABLE; /定义菜的结构体 typedef struct Dish int Dish_ID;/菜的编号 char Dish_Name10;/菜名 float Dish_Price;/价格 DISH; TABLE tbH;/餐桌结构体数组 DISH dishD;/菜的结构体数组 int PASSWORD=123;/密码设置 /函数定义 void Load_Dish(void);/从文件中读取菜谱 ORDER*CreateOne(int);/创建一个订单节点 void Dish_Menu(void

5、);/显示菜谱 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 Ob

6、serve(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); pri

7、ntf(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, /system(cls); switch(choose) case 1: result=search(); if(result=1) printf(你可以到%d号餐桌就餐n,result

8、); else printf(你和你的朋友可以到%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=fop

9、en(dish_name.txt,r); for(i=0;iD;i+) fscanf(fp,%dt%st%fn, / 餐桌初始化 void Table_Init() tb0.Capacity=1;tb0.Table_ID=1; tb1.Capacity=1;tb1.Table_ID=2; tb2.Capacity=2;tb2.Table_ID=3; tb3.Capacity=2;tb3.Table_ID=4; tb4.Capacity=2;tb4.Table_ID=5; tb5.Capacity=3;tb5.Table_ID=6; tb6.Capacity=4;tb6.Table_ID=7;

10、tb7.Capacity=4;tb7.Table_ID=8; tb8.Capacity=4;tb8.Table_ID=9; tb9.Capacity=4;tb9.Table_ID=10; / 显示菜谱 void Dish_Menu(void) int i; printf(*欢迎选购本店菜*n); printf(菜编号t 菜名t 菜单价n); for(i=0;iD;i+) printf(%dt%st%fn,dishi.Dish_ID,dishi.Dish_Name, dishi.Dish_Price); / 查找有没有匹配的餐桌 int search (void) int Cust_Num; i

11、nt i; printf(请输入来客数量:n); scanf(%d, if(MaxCapacityCust_Num) printf(抱歉,本店没有容纳%d 的餐桌!,Cust_Num); return -1; while(Cust_Num=MaxCapacity) for(i=0;iTable_ID=result; for(i=0;iDish_IDi); if(p-Dish_IDiDish_IDi10) printf(超出菜谱范围,请重新输入n); i-; elseif(p-Dish_IDi=0) break; else p-Table_ID=0; tbresult-1.Table_State

12、=1; p-next=NULL; return p; /添加到主链 ORDER*Dish_Order(ORDER*head,ORDER*p) ORDER*p1; p1=head; if(p1!=NULL) if(p!=NULL) while(p1-next!=NULL) p1=p1-next; p1-next=p; printf(订单创建成功n); else printf(订单创建失败n); else if(head=NULL return head; /根据菜的编号打印一道菜的信息 void Display(int ID) int i=0; for(i=0;iDish_IDi0) fprin

13、tf(fp,%dt%st%fn,dishp-Dish_IDi-1.Dish_ID, dishp-Dish_IDi-1.Dish_Name, dishp-Dish_IDi-1.Dish_Price); i+; fprintf(fp,%s,ctime( printf(历史记录保存成功n); fclose(fp); /结账 ORDER *Payment(ORDER *head) int i=0; int count=0; float pay=0.0; float Pay; int ID; ORDER *p,*p1; p=head; printf(请输入你的餐桌号n); fflush(stdin);

14、scanf(%d, while(p!=NULL) if(p-Table_ID=ID) printf(你点菜的情况如下:n); printf(编号t菜名t价格n); while(p-Dish_IDi!=0) Display(p-Dish_IDi); pay+=dishp-Dish_IDi-1.Dish_Price; i+; count+; printf(你一共点了%d道菜n,count); printf(你本次的消费额为%f元n,pay); printf(你实际的付款:n); scanf(%f, if(Paypay) printf(找你%fn,Pay-pay); printf(谢谢你的惠顾,欢迎

15、下次光临n); if(count0) saveInList(pay); Save_Inform(p,count); tbp-Table_ID.Table_State=0; break; else p1=p; p=p-next; if(p=head) head=head-next; else p1-next=p-next; free(p); return head; /修改密码 void ModifyPW() int password; printf(请输入新的密码n); scanf(%d, PASSWORD=password; printf(密码修改成功n); /查看账目 void Obser

16、ve() FILE *fp; float pay; char str25; int i=0; int j=0; if(fp=fopen(账本.txt,r)=NULL) printf(操作失败n); exit(1); printf(消费金额t消费时间n); while(!feof(fp) i=0; j=0; fscanf(fp,%ft, while(i=5 j+; if(strj= ) i+; fscanf(fp,nn); i=0; j=0; printf(%ft,pay); while(i=5 j+; if(strj= ) i+; printf(n); fclose(fp); /账单管理菜单

17、void ListMenu() int choice; printf(1.修改面目n); printf(2.查看账本n); printf(3.返回n); do printf(请选择:n); scanf(%d, switch(choice) case 1:ModifyPW(); break; case 2:Observe(); break; case 3:Menu_select(); break; default:printf(没有该功能项n); while(1); /账单管理 void List_Management() FILE *fp; if(fp=fopen(账本.txt,r)=NULL

18、) printf(操作失败n); exit(1); if(Pass_Word() ListMenu(); /获得近期各菜的受欢迎程度 void Get_Rank(void) FILE *fp; int n,i,m=0,j; int count10=0,t=0; char s16=,a10; fp=fopen(历史记录.txt,r); while(!feof(fp) fscanf(fp,%dn, i=0; while(i=n) fscanf(fp,%d%*s%*s, for(j=0;j10;j+) if(m=dishj.Dish_ID) countj+; break; i+; if(i=n) f

19、scanf(fp,%*s%*s%*s%*s%*sn,s,s,s,s,s); printf(菜的受欢迎程度如下:n); for(i=0;i10;i+) printf(n%d菜:,i+1); for(j=0;jcounti;j+) printf( * ); for(i=0;i9;i+) for(j=0;j9-i;j+) if(countjcountj+1) t=countj; strcpy(a,dishj.Dish_Name); countj=countj+1; strcpy(dishj.Dish_Name,dishj+1.Dish_Name); countj+1=t; strcpy(dishj+

20、1.Dish_Name,a); printf(n比较受顾客欢迎的四个菜是:n); for(i=0;i4;i+) printf(%sn,dishi.Dish_Name); /密码验证 int Pass_Word() int password; do printf(请输入密码n); scanf(%d, if(PASSWORD=password) printf(*); printf(欢迎进入账目管理系统n); printf(*); return 1; else printf(密码输入有误,请重新输入n); printf(是否重新输入n); while(getchar()=y/getchar()=y)

21、; return 0; 4. 测试 (1).当程序运行是,主菜单显示入图 1 所示。 图 1 (2)此时选择相应选项会执行相应的操作,如选择1,再按回车键,界 面如图 2 所示。 图 2 (3)结账,界面如图 3 所示。 图 3 (4)账目管理,界面如图 4 所示。 图 4 (5)餐厅统计,界面如图 5 所示。 图 5 5 结论 本报告对餐厅管理系统的分析、 设计、实现的完整过程进行了介 绍。总的来说, 通过这次课程设计,掌握了带头节点的链表的工作原 理和处理方法;初步会使用malloc、free 等函数对链表进行创建、增 加、删除等操作; 也加深了理解模块化的编程思想,将一个程序划分 成不同额函数来编写,从而掌握函数之间的调用关系; 了解了餐厅管 理中所需要处理的信息以及相关的处理方法。 作为电子信息工程的学 生,我们更要努力学好这方面的东西。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1