MATLAB的GUI设计是教学内容之一,目的是让学生接触GUI设计的基本知识,为深入学习打下基础,下面是简单的点菜系统设计,仅供学习交流。

图1 原始点菜系统

点评:这是某同学设计的点菜系统,主要使用按钮来实现选择,点击确认后,会在记事本里给出: (1)各菜品名称;(2)总的点菜金额;(3)所选菜的营养价值。但该GUI未将这些需要实时显示的内容实现,需要在增加显示窗口等,如图2示意,或者改变窗口设计,这种平铺直叙给人感觉太平凡了。其他如菜品太少,若超过50个以上的品种,怎么设计?

图2 增加显示内容

第二个同学设计了餐桌与菜品,通过点菜,将菜品布置到餐桌上,但并未实现价格等的计算,也没有给出更多的关于所选菜品的指导内容。值得一提的是,将GUI制作成了exe文件。方便运行查阅。

图3 餐厅圆桌

图4 电子菜单

图5 菜品布置

第三个同学的点菜系统,实现了在右侧窗口展示已点的菜品,结账时能给出总的金额,也能删除已选定的菜,但仍需优化布置界面,使用静态文本框做标签,而不是显示Total Money= ,最大的问题是,当删除已选定的菜后,结账金额并不随之修改,还有待改进……..

图6 启动界面

图7 点菜结账

图8 应该重新布置按钮与EditBox

图9 去掉菜品后不退钱

这是一个比较完美的实现方案,从GUI设计表面看,左侧使用Listbox,分别实现了不同的菜品类别。中间显示选定的菜品样图,右侧显示选定的菜品与总价,随着点菜的进行,随时更新总的价格,删减菜品后,总价随之改变。清空与找回则实现了一键清理与一键返回。

图10 初始化菜单

图11 现在点菜

案例四需要改进的地方在源码上,多种选择,最好是使用switch-case-end结构,而不是使用if-elseif-end.

这个同学设计了两个GUI,一个是桌面座位布置,点击点菜后弹出了一个GUI,第二个GUI中包含了点菜的菜品名称、介绍与价格等。但运行时,菜品介绍失效,有待进一步调试优化。总的来说思路很好。

图12 点菜圆桌

图13  弹出的点菜GUI