毕业论文uc-gui点菜系统.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 uc gui 点菜 系统
- 资源描述:
-
郑州轻工业学院 课 程 设 计 任 务 书 题目 基于ucgui的点菜系统设计 专业、班级 电子信息科学与技术09-1班 学号 姓名 主要内容、基本要求、主要参考文献等: 1. 课程说明 随着信息化技术的不断发展,电子菜单开始出现在一些高档餐厅,与传统菜单相比,电子菜单可以节省制作成本和人力成本,并能实现无线下单。可以随需变更菜品信息,灵活进行菜品促销,帮助饭店有效提升品牌形象和服务水平,增加菜品销量,提高营业收益。其强大的后台管理功能,让饭店管理者运筹帷幄,省心省力。 本次课程设计利用GUI函数制作一个简单的电子菜单,实现基本的查阅、点菜、菜价计算、付账等功能,旨在熟悉掌握C语言和对系统函数的灵活运用。 2、主要内容 (1)掌握LCD显示图形的方法,掌握LCD显示字符的方法。 (2) 了解汉字库的组织方式,汉字显示的原理,学习LCD的显示原理和控制办法。 (3) 完成点菜系统的点菜,菜价计算,账单打印功能。 3、基本要求 (1) 编写图形显示函数,在LCD上显示图形 (2) 编写HZK16读取函数,在LCD上显示汉字 (3) 菜单程序设计,实现菜单的选择操作。 4.功能说明 此菜单共有16道菜,在首界面显示4道菜的信息,报告菜名、价格、份数,还可以增加、减少或退选某道菜,相应地其份数会发生改变。通过点击上下翻页三角键,可以查看其余12道菜(可循环),选中某道菜之后,菜名会变红色,起提示作用。点击“OK”键,说明点菜结束,进入第二界面。 第二界面有菜单的简单显示,包括菜名、价格和份数,还有合计花费。另外,增加了“修改”和“重选”两个功能键,点击“修改”键,系统会跳转到第一界面,对点菜情况进行修改;点击“重选”键,会出现一个提示画面:真的要重选吗,点击“确定”,则系统跳回第一界面,重新点菜;点击“取消”,提示画面消失。若点击“详细菜单”键,系统跳转到第三界面。 第三界面罗列了每道菜的菜名、价格、份数,还有花费情况,如果顾客没有异议,点击“确认付账”后,会出现一个提示画面:谢谢光临,欢迎下次再来,系统将在 秒后跳回主菜单。计时3秒钟。如果点击“返回”键,则系统回到第二界面。 5.程序及其注释 #include "GUI.h" #include "GUI_Protected.h" #include <stdio.h> #include <string.h> #include <math.h> #define countof(Array) (sizeof(Array)/sizeof(Array[0])) const GUI_POINT aPoints0[]={ {0,-15}, {30,15}, {-30,15} }; const GUI_POINT aPoints1[]={ {-30,-15}, {30,-15}, {0,15} }; int s,ms,ms1,ss; int number[17]={0};//份数 int change=0;//界面变换标志位 int cnt=0; int flag=0;//第二界面重选标志位 int time=0;//time用来控制显示第一界面静止的部分 int flag21=0;//第二界面切换到第一界面标志位 int time1=0;//控制显示第二界面静止的部分 int time2=0;//控制显示第二界面重选确认窗口 int time3=0;//控制显示第三界面静止的部分 int flag3=0;//控制显示第三界面确认付账 int flag31=0; int cancel=0;//第二界面重选取消标志位 GUI_PID_STATE TouchState; char menu[17][100]={"麻婆豆腐","辣子鸡丁","东坡肘子","豆瓣鲫鱼","口袋豆腐","酸菜干鱼","夫妻肺片", "蚂蚁上树","叫化香鸡","茄汁鱼卷","鱼香肉丝","干煸冬笋","魔芋烧鸭","锅贴鱼片","麻辣肉丁","鱼香茄饼"};//菜名 int price[17]={12,16,30,28,10,25,35,8,50,14,20,8,46,32,16,15};//菜价 int count_time() { ms=(GUI_GetTime()-ms1)/100; ms%=10; if(ms==9) { ss++; GUI_Delay(100); } s=3-ss; return s; } int count_number(int x)//计算位数 { int y=0; if(x==0) return 1; while(x>0) {x=x/10; y++; } return y; } void display1()//第一界面显示函数 { int i; GUI_SetBkColor(GUI_YELLOW); if(time==0) { time=1; GUI_SetFont(&GUI_FontHZ24);//声明字库 GUI_SetColor(GUI_RED); GUI_DispStringHCenterAt("欢迎光临二毛菜馆",150,10); GUI_SetFont(&GUI_FontHZ16);//声明字库 GUI_DispStringHCenterAt("菜名",30,40); GUI_DispStringHCenterAt("价格",115,40); GUI_DispStringHCenterAt("选项",195,40); GUI_DispStringHCenterAt("份数",290,40); GUI_SetColor(GUI_BLACK); GUI_SetColor(GUI_BLUE); LCD_L0_FillRect(141,59,174,76); LCD_L0_FillRect(141,89,174,106); LCD_L0_FillRect(141,119,174,136); LCD_L0_FillRect(141,149,174,166); GUI_SetBkColor(GUI_BLUE); GUI_SetColor(GUI_WHITE); GUI_DispStringHCenterAt("增加",158,60); GUI_DispStringHCenterAt("增加",158,90); GUI_DispStringHCenterAt("增加",158,120); GUI_DispStringHCenterAt("增加",158,150); LCD_L0_FillRect(181,59,214,76); LCD_L0_FillRect(181,89,214,106); LCD_L0_FillRect(181,119,214,136); LCD_L0_FillRect(181,149,214,166); GUI_DispStringHCenterAt("减少",198,60); GUI_DispStringHCenterAt("减少",198,90); GUI_DispStringHCenterAt("减少",198,120); GUI_DispStringHCenterAt("减少",198,150); LCD_L0_FillRect(221,59,254,76); LCD_L0_FillRect(221,89,254,106); LCD_L0_FillRect(221,119,254,136); LCD_L0_FillRect(221,149,254,166); GUI_DispStringHCenterAt("退选",238,60); GUI_DispStringHCenterAt("退选",238,90); GUI_DispStringHCenterAt("退选",238,120); GUI_DispStringHCenterAt("退选",238,150); GUI_SetColor(GUI_BLUE); LCD_L0_FillRect(271,59,300,76); LCD_L0_FillRect(271,89,300,106); LCD_L0_FillRect(271,119,300,136); LCD_L0_FillRect(271,149,300,166); GUI_SetBkColor(GUI_BLUE); GUI_SetColor(GUI_WHITE); GUI_DispStringAt("份",298,60); GUI_DispStringAt("份",298,90); GUI_DispStringAt("份",298,120); GUI_DispStringAt("份",298,150); GUI_SetBkColor(GUI_BLUE); GUI_SetColor(GUI_BLUE); LCD_L0_FillRect(260,180,310,220); GUI_FillPolygon(aPoints0,countof(aPoints0),40,205); GUI_FillPolygon(aPoints1,countof(aPoints1),110,205); GUI_SetBkColor(GUI_BLUE); GUI_SetColor(GUI_WHITE); GUI_DispStringHCenterAt("OK",295,190); GUI_SetFont(&GUI_FontHZ24);//声明字库 GUI_SetBkColor(GUI_YELLOW); GUI_SetColor(GUI_BLACK); GUI_DispStringHCenterAt("第",180,190); GUI_DispStringHCenterAt("页",235,190); } GUI_SetFont(&GUI_FontHZ24);//声明字库 GUI_SetColor(GUI_BLACK); GUI_DispDecAt(cnt+1,200,190,1); GUI_SetFont(&GUI_FontHZ16);//声明字库 GUI_SetColor(GUI_YELLOW); for(i=0;i<4;i++) { GUI_SetColor(GUI_BLACK); if(number[cnt*4+i]>0) GUI_SetColor(GUI_RED); GUI_DispStringHCenterAt(menu[cnt*4+i],40,60+30*i);//显示菜名 GUI_SetColor(GUI_BLACK); GUI_DispDecAt(price[cnt*4+i],105,60+30*i,2);//显示价格 GUI_SetBkColor(GUI_BLUE); GUI_SetColor(GUI_WHITE); GUI_DispDecAt(number[cnt*4+i],275,60+30*i,2);//显示份数 GUI_SetBkColor(GUI_YELLOW); } if(GUI_TOUCH_GetState(&TouchState)) { if((TouchState.x>10)&&(TouchState.x<70)&&(TouchState.y>190)&&(TouchState.y<220))//上一页 { cnt--; if(cnt<0) cnt=3; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>80)&&(TouchState.x<140)&&(TouchState.y>190)&&(TouchState.y<220))//下一页 { cnt++; if(cnt>3) cnt=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>260)&&(TouchState.x<310)&&(TouchState.y>180)&&(TouchState.y<220))//OK { change=1; time1=0; time2=0; cancel=0; GUI_SetBkColor(GUI_YELLOW); GUI_Clear(); while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>141)&&(TouchState.x<174)&&(TouchState.y>59)&&(TouchState.y<76))//增加1 { number[cnt*4]++; if(number[cnt*4]>99) number[cnt*4]=99; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>141)&&(TouchState.x<174)&&(TouchState.y>89)&&(TouchState.y<106))//增加2 { number[cnt*4+1]++; if(number[cnt*4+1]>99) number[cnt*4+1]=99; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>141)&&(TouchState.x<174)&&(TouchState.y>119)&&(TouchState.y<136))//增加3 { number[cnt*4+2]++; if(number[cnt*4+2]>99) number[cnt*4+2]=99; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>141)&&(TouchState.x<174)&&(TouchState.y>149)&&(TouchState.y<166))//增加4 { number[cnt*4+3]++; if(number[cnt*4+3]>99) number[cnt*4+3]=99; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>181)&&(TouchState.x<241)&&(TouchState.y>59)&&(TouchState.y<76))//减少1 { number[cnt*4]--; if(number[cnt*4]<0) number[cnt*4]=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>181)&&(TouchState.x<241)&&(TouchState.y>89)&&(TouchState.y<106))//减少2 { number[cnt*4+1]--; if(number[cnt*4+1]<0) number[cnt*4+1]=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>181)&&(TouchState.x<241)&&(TouchState.y>119)&&(TouchState.y<136))//减少3 { number[cnt*4+2]--; if(number[cnt*4+2]<0) number[cnt*4+2]=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>181)&&(TouchState.x<241)&&(TouchState.y>149)&&(TouchState.y<166))//减少4 { number[cnt*4+3]--; if(number[cnt*4+3]<0) number[cnt*4+3]=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>221)&&(TouchState.x<254)&&(TouchState.y>59)&&(TouchState.y<76))//退选1 { number[cnt*4]=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>221)&&(TouchState.x<254)&&(TouchState.y>89)&&(TouchState.y<106))//退选2 { number[cnt*4+1]=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>221)&&(TouchState.x<254)&&(TouchState.y>119)&&(TouchState.y<136))//退选3 { number[cnt*4+2]=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>221)&&(TouchState.x<254)&&(TouchState.y>149)&&(TouchState.y<166))//退选4 { number[cnt*4+3]=0; while(GUI_TOUCH_GetState(&TouchState)); } } } void display2()//第二界面显示函数 { int i,sum=0,r,count=0; for(i=0;i<16;i++) sum+=price[i]*number[i]; if(time1==0) { time1=1; GUI_SetColor(GUI_BLUE); LCD_L0_FillRect(170,10,230,40); LCD_L0_FillRect(250,10,310,40); LCD_L0_FillRect(160,210,280,240); LCD_L0_FillRect(20,210,140,240); GUI_SetFont(&GUI_FontHZ16);//声明字库 GUI_SetBkColor(GUI_BLUE); GUI_SetColor(GUI_WHITE); GUI_DispStringHCenterAt("修改",200,20); GUI_DispStringHCenterAt("重选",280,20); GUI_DispStringHCenterAt("合计",180,215); GUI_DispStringHCenterAt("详细菜单",80,215); GUI_DispDecAt(sum,215,215,count_number(sum)); GUI_DispStringHCenterAt("元",270,215); GUI_SetFont(&GUI_FontHZ24);//声明字库 GUI_SetBkColor(GUI_YELLOW); GUI_SetColor(GUI_BLACK); GUI_DispStringHCenterAt("您",20,20); GUI_DispStringHCenterAt("的",60,20); GUI_DispStringHCenterAt("帐",100,20); GUI_DispStringHCenterAt("单",140,20); } if(cancel==0) { cancel=1; r=40; for(i=0;i<16;i++) { GUI_SetFont(&GUI_FontHZ16);//声明字库 GUI_SetBkColor(GUI_YELLOW); GUI_SetColor(GUI_BLACK); if(number[i]>0) { if(50+count*20>190) { r=190;count=0;}//换列显示 GUI_DispStringHCenterAt(menu[i],r,50+count*20);//显示菜单 GUI_DispDecAt(number[i],r+40,50+count*20,2); GUI_DispStringHCenterAt("*",r+70,50+count*20); GUI_DispDecAt(price[i],r+75,50+count*20,2); count++; } } } if(flag==1) { if(time2==0) { time2=1; GUI_SetColor(GUI_RED); LCD_L0_FillRect(50,80,280,200); GUI_SetColor(GUI_BLACK); LCD_L0_FillRect(90,140,150,180); LCD_L0_FillRect(170,140,230,180); GUI_SetBkColor(GUI_RED); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontHZ24);//声明字库 GUI_DispStringHCenterAt("真的要重选吗",160,110); GUI_SetBkColor(GUI_BLACK); GUI_DispStringHCenterAt("确定",120,150); GUI_DispStringHCenterAt("取消",200,150); } if(GUI_TOUCH_GetState(&TouchState)) { if((TouchState.x>90)&&(TouchState.x<150)&&(TouchState.y>140)&&(TouchState.y<180))//确定 { change=0; GUI_SetBkColor(GUI_YELLOW); GUI_Clear(); time=0; flag=0; for(i=0;i<16;i++) number[i]=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>170)&&(TouchState.x<230)&&(TouchState.y>140)&&(TouchState.y<180))//取消 { change=1; flag=0; time2=0; GUI_SetColor(GUI_YELLOW); LCD_L0_FillRect(50,80,280,200); r=40; for(i=0;i<16;i++) { GUI_SetFont(&GUI_FontHZ16);//声明字库 GUI_SetBkColor(GUI_YELLOW); GUI_SetColor(GUI_BLACK); if(number[i]>0) { if(50+count*20>190) { r=190;count=0;}//换列显示 GUI_DispStringHCenterAt(menu[i],r,50+count*20);//显示菜单 GUI_DispDecAt(number[i],r+40,50+count*20,2); GUI_DispStringHCenterAt("*",r+70,50+count*20); GUI_DispDecAt(price[i],r+75,50+count*20,2); count++; } } while(GUI_TOUCH_GetState(&TouchState)); } } } if(GUI_TOUCH_GetState(&TouchState)) { if((TouchState.x>170)&&(TouchState.x<230)&&(TouchState.y>10)&&(TouchState.y<40))//修改 { change=0; GUI_SetBkColor(GUI_YELLOW); GUI_Clear(); time=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>250)&&(TouchState.x<310)&&(TouchState.y>10)&&(TouchState.y<40))//重选 { flag=1; time2=0; while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>20)&&(TouchState.x<140)&&(TouchState.y>210)&&(TouchState.y<240))//详细菜单 { change=2; GUI_SetBkColor(GUI_YELLOW); GUI_Clear(); time3=0; while(GUI_TOUCH_GetState(&TouchState)); } } } void display3()//第三界面显示函数 { int r,count=0,i,sum; if(time3==0) { time3=1; GUI_SetColor(GUI_BLUE); LCD_L0_FillRect(20,200,140,240); LCD_L0_FillRect(180,200,300,240); GUI_SetFont(&GUI_FontHZ16);//声明字库 GUI_SetBkColor(GUI_BLUE); GUI_SetColor(GUI_WHITE); GUI_DispStringHCenterAt("确认付账",80,215); GUI_DispStringHCenterAt("返回",240,215); r=30; for(i=0;i<16;i++) { GUI_SetFont(&GUI_FontHZ12);//声明字库 GUI_SetBkColor(GUI_YELLOW); GUI_SetColor(GUI_BLACK); if(number[i]>0) { sum=number[i]*price[i]; if(50+count*20>190) { r=190;count=0;}//换列显示 GUI_DispStringHCenterAt(menu[i],r,10+count*20); GUI_DispDecAt(number[i],r+30,10+count*20,2); GUI_DispStringHCenterAt("*",r+55,10+count*20); GUI_DispDecAt(price[i],r+60,10+count*20,2); GUI_DispStringHCenterAt("=",r+90,10+count*20); GUI_DispDecAt(sum,r+100,10+count*20,count_number(sum)); count++; } } } if(flag3==1) { flag3=0; GUI_SetColor(GUI_GREEN); LCD_L0_FillRect(40,20,280,180); GUI_SetBkColor(GUI_GREEN); GUI_SetColor(GUI_RED); GUI_SetFont(&GUI_FontHZ24);//声明字库 GUI_DispStringHCenterAt("谢谢光临",155,30); GUI_DispStringHCenterAt("欢迎下次再来",155,70); GUI_DispStringAt("系统将在",80,110); GUI_DispStringAt("秒后",215,110); GUI_DispStringAt("跳回主菜单",90,150); } if(flag31==1) { if(count_time()>0) { GUI_DispDecAt(count_time(),190,110,1); } else if(count_time()==0) { GUI_DispDecAt(count_time(),190,110,1); change=0; time=0; flag31=0; ss=0; for(i=0;i<16;i++) number[i]=0; GUI_SetBkColor(GUI_YELLOW); GUI_Clear(); } } if(GUI_TOUCH_GetState(&TouchState)) { if((TouchState.x>20)&&(TouchState.x<140)&&(TouchState.y>200)&&(TouchState.y<240))//确认付账 { flag3=1; flag31=1; ss=0; ms1=GUI_GetTime(); while(GUI_TOUCH_GetState(&TouchState)); } if((TouchState.x>180)&&(TouchState.x<300)&&(TouchState.y>200)&&(TouchState.y<240))//返回 { change=1; time1=0; time2=0; cancel=0; GUI_SetBkColor(GUI_YELLOW); GUI_Clear(); while(GUI_TOUCH_GetState(&TouchState)); } } } void MainTask(void) { int count=0; GUI_Init(); GUI_SetBkColor(GUI_YELLOW); GUI_Clear(); while(1) { if(change==0) { display1();//显示第一界面 GUI_Delay(100); } else if(change==1) { display2();//显示第二界面 } else if(change==2) display3();//显示第三界面 } } 6.课程设计心得 通过本次课程设计,我切身感受到嵌入式系统的强大,而我所掌握的知识不及九牛一毛,一开始写程序的时候,比较中规中矩,仅仅完成了基本功能,而且对于一些按键的设计也有些瑕疵。后来,跟同学交流和上网查找资料,在原来的基础上,做了一些改进:界面规划得更加合理了,上下翻页键由原来的方框形设计成了三角形,这样界面显得更加人性化;另外,还增加了一些新的功能,如界面自动跳转功能等。在设计的过程中,当然出现了很多的问题,甚至有时候,不知道怎么去解决,但我还是一直坚持了下来,培养了我的耐性和严谨性,同时通过查阅资料,进一步锻炼了我的自学能力,让我学到了很多新的知识。 我觉得这个课程设计有两个关键点,一是设法使界面不闪,我们知道,当界面不停刷新的时候,会出现“闪动”现象,影响美观。那么怎么解决呢?我的方法是,找出静止的部分和动态的部分,对于前者,只需显示一次;对于后者,不停刷新显示,并且尽量设置更多的静态部分。当然,这样一来,程序势必会变得麻烦一些,可以看到,在程序里,我设置了不下于10展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




毕业论文uc-gui点菜系统.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2139015.html