智能点餐系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通达学院
专业课程设计II
题目:智能点餐系统
专业计算机科学与技术(通信工程)学生姓名
班级学号
指导教师
指导单位计算机学院计算机科学与技术系
日期2012.11.12-2012.11.23
智能点餐系统
一、课题内容和要求
通过对现代点餐系统的改良,为了更好的满足广大消费者的多元化消费需求和不同层次的消费水平,提供更加快捷的便民服务,使人们的消费过程更加简单方便,智能点餐系统将会越来越普及。
基本功能:
1、对菜品价格、图片、原料等进行增加删除;
2、按客户需求点餐;
3、按金额自动配餐。
二、需求和思路分析
本系统的目的是实现点菜系统所需的各种基本功能,用户可通过访问我们的点餐系统,进行登陆,获得你想要的各种食物、酒水,管理员可以查看用户菜品,原料的剩余,可以对菜品进行增删改查。
系统管理员通过该部分功能完成餐厅点菜管理系统中基础数据的设置工作。主要工作包括:用户登录,对基本菜基础数据的设置,包括:价格、原料等的介绍;删菜、添菜。
(1)用户自动登录,和服务器建立连接
(2)选择所选择的点餐方案,是自助点餐还是套餐订制
(3)菜单信息主要包括后台管理员对菜单的管理和客户对菜单的使用。
后台部分的管理:包括增加新菜,更新菜单;删除不用菜单;包括菜的名称,价格,配料等。
前台用户使用:客户可以查询餐厅提供的各种食物,点取自己喜爱的食物,了解菜的价格和是否点菜。
(4)用户可以根据系统给予的菜品的编号自动点餐,选择所点的份数及相应酒水的瓶数,在你确定点菜并获取序号时,系统自动记录你所点的菜单,直到点餐完毕后,系统自动结账,您将得知自己点餐的金额,并付款。
(5)为了方便顾客的需求,本系统有套餐推荐
按照相应的金额自动配餐(默认为三个菜),如输入45元,55元将会有相应的菜系列出以供选择,同时可以自动添加酒水。
1、系统运行稳定、安全可靠。界面简洁友好,使用方便;
2、当基础数据发生变化时,系统管理员应该能很方便地维护基础数据,提高系统的灵活性;
3、最大程度的保证点菜数据的准确性。在顾客进行点菜时要实现避免大量的文字输入,以便减少点菜时间,提高录入数据的准确度。
三、概要设计
(1)定义结构体,实现对菜品已点份数、名称、原材料的记录
struct cai
{
int fenshu;
char name[50];
int use;
int price;
};
(2)用线性表实现对菜品原材料的剩余量的记录,线性表对应菜品的点餐菜单编码,同时分配存储空间。
typedef int ElemType;
struct List
{
ElemType* list;
int size;
int MaxSize;
};
/*以下为线性表的函数*/
void InitList(struct List* L,int ms) /* 初始化线性表L,即进行动态存储空间分配并置L为一个空表*/
{
if(ms<=0){printf("ms 值非法!\n");exit(1);}
L->MaxSize=ms;/* 设置线性表空间大小为ms */
L->list=malloc(ms*sizeof(ElemType));
if(!L->list)
{
printf("动态存储分配失败!");
exit(1);
}
L->size=0;
}
void againMalloc(struct List *L)
{
ElemType *p=realloc(L->list,2*L->MaxSize*sizeof(ElemType));/* 空间扩展为
原来的2倍,并由p指针所指向,原内容被自动拷贝到p所指向的存储空间*/ if(!p){
printf("分配存储空间失败!");
exit(1);
}
L->list=p;/* 使list指向新线性表空间*/
L->MaxSize=2*L->MaxSize;/* 把线性表空间大小修改为新的长度*/
}
void InsertLastList(struct List *L,ElemType x) /* 向线性表L的表尾插入元素x */
{
if(L->size==L->MaxSize)
againMalloc(L);
L->list[L->size]=x;
L->size++;
}
(3)菜单表格函数:
void cddayin(struct cai a[])
{
int i=0,j=0,s=0;
for(i=0;i<30;i++)
{if(a[i].fenshu>0) j++;}
if(j!=0)
{
printf("已点菜/酒品编号已点菜品名称已点份数/瓶数价格\n");
for(i=0;i<30;i++)
if(a[i].fenshu>0)
{printf(" %5d %10s%14d %d
¥\n",i,a[i].name,a[i].fenshu,a[i].fenshu*a[i].price);
s=s+a[i].fenshu*a[i].price;
}
printf(" 您好,您点餐价格合计=%d¥\n",s);
}
if(j==0)
printf("顾客尚未点餐,无法进行菜单打印!\n");
}
(4)原材料的表格函数:
void ycliao(struct List *yuan,struct cai a[])
{
int i=1,p=0,k=0;
for(i=0;i<30;i++)
{
do{
p=a[i].use%100;
yuan->list[p]=yuan->list[p]-a[i].fenshu;
a[i].use=a[i].use/100;
}while(a[i].use!=0);
}
printf("|---------------------------------材料余量-----------------------------------|\n");
printf("|------------------原材料余量---------------------------|-----酒品余量-------|\n");
printf("|-------------------------------------------------------|--------------------|\n");
printf("| 10.鸡肉=%3d 11.猪肉=%3d 12.鱼肉=%3d | 50.雪花啤酒=%3d |\n",
yuan->list[10],yuan->list[11],yuan->list[12],yuan->list[50]);
printf("| 13.黄瓜=%3d 14.土豆=%3d 15.豆腐=%3d |