菜单系统范文

2024-05-09

菜单系统范文(精选12篇)

菜单系统 第1篇

中西饮食文化交流日趋频繁, 但由于文化差异导致外国友人对中国地方菜名存在明显的误解现象。本文提出了关于中英文菜单翻译系统的设计与开发以及关于餐饮业菜名规范的方法。意在为我国呼吁我国南粤餐饮业形成一个规范菜名及其翻译的参考, 并给外国友人提供一个简单、易用的菜单翻译软件, 从而让国外食客更好地了解中国菜名的意义, 更好的促进饮食文化交流。除了在广东地区范围内以问卷方式参加社会调研, 该系统的开发还参照了亚运、奥运规范的菜单翻译, 并通过各种渠道搜集了相关的菜名信息, 最终将其整合与软件系统当中, 具有一定的参考价值。

本文结合社会调研结果和所搜索到得信息, 重点提出和讨论了中英文菜单翻译系统的构架和实现方法。

2. 系统功能分析

2.1 系统功能分析

在需求分析阶段, 本系统采用UML (统一建模语言) 进行功能分析。其中包括用户、系统管理员和酒店用户在内的三个角色以及相应的功能。系统UML图如图2-1所示。

2.1.1 系统管理员及其功能

系统管理员具有菜单信息管理和登录后台两项功能 (用例) , 信息接收用例是登录后台的使用用例, 即为确保数据的安全性, 系统管理员必须凭账户和密码进入后台管理界面才能对各项信息进行操作。系统管理员可以是酒店企业的负责人或者是内部员工。

2.1.2 普通用户及其功能

普通用户打开系统后即可进行简单的查询操作, 并可以通过界面的链接进行问题反馈。查询界面必须要有查询结果集的显示和菜单的具体内容, 包括图片, 菜名, 翻译等。此外, 普通用户还可以通过菜单信息了解相应的酒店信息, 以便用户进行咨询。

2.1.3 酒店企业及其功能

与普通用户不同的是, 酒店企业凭账户和密码可进入相应的后台, 以便对自己的信息进行更新。为确保酒店信息的公开性, 将允许用户对酒店信息进行查询, 酒店必须填写地址和联系电话。

2.2 系统开发工具的选择

系统的开发可采用面向对象语言和可视化编程技术。开发环境首选windows XP或者windows 7, 数据库管理系统则是Microsoft SQL Server 2005。如表2-2-1所示。开发出来的应用软件系统将可以在windows桌面上正常运行, 界面推荐以默认状态作为系统背景, 具有良好的兼容性, 遵循简单、易用原则。

3. 系统的设计与开发

3.1 系统体系结构设计

系统模块结构如图3-1。从软件运行方式来看, 可以分为用户界面内、后台管理模块、信息管理模块等三个主要的层次, 如图3-1所示。

用户界面应该与后台管理模块至少有1个通讯接口, 后台管理模块至少与数据库有信息有1个通讯接口。后台模块通过信息模块来对数据库进行操作。

3.2 模块详细介绍

3.2.1 用户界面

用户界面将在个人桌面系统上展现。用户在输入框输入菜名即可进行查询。界面应能够显示查询结果集和菜单具体内容。用户界面的设计推荐以白灰或默认框架为背景, 遵循简洁、易用的原则, 用户只需输入中文或英文菜名即可轻松获得包含相应的图片在内的翻译信息。

3.2.2 后台管理模块

后台管理是针对超级管理员和数据库系统的一个接口。为保障信息安全, 管理员必须凭账户和密码进入后台管理界面才能对菜单信息进行维护和管理。管理员将可以在这里进行菜单的信息管理。

3.2.3 菜单信息模块

作为后台管理的子模块, 数据成员方面, 确保一条菜单应至少应包含菜单编号、1项中文名、菜类别、4项英文翻译、图片、图片路径等信息。数据操作方面应至少包含添加、删除、更新、查询等常用操作和与数据库的通讯接口。

3.2.4 酒店信息模块

作为后台管理的子模块, 数据成员方面, 确保一条酒店信息应包含酒店编号、酒店名称、酒店地址、酒店星级、联系电话等信息。数据操作方面, 应至少包含添加、删除、更新、查询等常用操作和与数据库的通讯接口。

4. 关于系统开发方法的参考及讨论

4.1 系统界面体验倡导

该系统为体现易用、简单的开发思路, 建议使用白灰或冷色作为用户的界面主要色调。用户界面必须要有一个输入框和查询范围的选择框;其次, 须有一定尺寸的搜索结果集字段和具体内容的显示栏。

4.2 系统信息管理的使用期望

系统的数据信息应具有一定的可靠性和准确率, 避免应疏忽而产生错误的信息;管理员能够轻松地查询和修改菜单信息, 并能够准确地接收问题的反馈;酒店企业能够准确、快捷地对自己的信息进行实时更新;

4.3 系统信息的后续展望

系统应该具有良好的数据信息的修改模块, 以便日后的信息更新;在数据库设计方面, 应更多地考虑后续的信息拓展;数据库模块的设计应遵循独立的数据库模式的接口, 以便开发人员随时更换数据库管理系统。

5. 结束语

在充分利用网络资源和通过长期的社会市场调查, 我们意识到南粤地区餐饮业在提供人性化服务和文化传播方面的工作仍然需要改进, 其中本文主要针对问题最为迫切的菜单翻译需求。于是我们组织并讨论了设计和开发该基于桌面的软件系统的一般方法, 为餐饮业和饮食文化交流提供了一个可行的平台实现方案。有理由相信, 在信息技术日趋承受的今天, 该系统同样能够在移动电子设备或者网络信息平台中也能够得到很好的展现, 从而更好地再餐饮业发挥它的作用。我们也希望本文的撰写能够为有能力的读者朋友提供一个可行的参考方案。

摘要:中英文菜单翻译系统采用UML进行功能分析, 采用了面对对象语言C#和SQL Server2005进行构架, 形成了基于个人桌面应用的菜单翻译系统。系统对市场调研和网络搜索的中文菜单信息进行了整合、翻译、纠错、筛选等过程后, 将最终数据整合在数据库中。系统简单、易用, 具有良好的拓展性, 便于后续继续开发和功能拓展。系统的开发前期, 项目调研组对南粤地区大部分酒店和外国友人进行了关于酒店菜名翻译方面的调查, 结果表明, 南粤餐饮业在中西餐饮文化交流日趋频繁的今天, 对规范菜单翻译和促进中西文化交流有着强烈的需求和作用。本文提出了关于中英文菜单系统的开发方法和技术实现的一般思路。

关键词:餐饮,菜单翻译,系统设计与开发

参考文献

[1]关于南粤地区酒店菜单翻译信息的问卷调研资料

[2]C#轻松入门, 人民邮电出版社, 宋学江

[3]数据库系统原理, 清华大学出版社, 王珊

菜单系统 第2篇

看了《中国电脑教育报》204月7日A22版韩群先生撰写的《Windows 98/XP双系统启动菜单修复》一文后,正巧我遇到了和韩先生类似的问题:电脑原来在C盘装有Windows 98,在D盘装有Windows 2003。重装了C盘的Windows 98后,双启动菜单不见了!我按照《Windows 98/XP双系统启动菜单修复》一文介绍的“运行安装程序→进入故障恢复控制台→执行Fixboot命令”的方法来修复启动菜单,但在操作后发现,虽然出现了双启动菜单,但使用启动菜单却进入了Windows 2003的安装程序中。为了找回Windows 2003,经过实践,我发现了另一条不需要进入控制台的修复方法:

1. 用Windows 2003安装盘启动电脑,进入安装程序中安装Windows 2003,安装程序将文件临时复制到硬盘之后,会重启电脑,

2. 在安装程序第一次重启电脑时,我们期待的双启动菜单就出现了,此时应迅速选择“Windows 98”启动Windows 98。否则5秒钟后电脑会自动进入Windows 2003的安装界面中。

3. 进入Windows 98后,在C盘根目录下找到Boot.ini文件,去除其 “只读”属性后打开它,将内容修改为:

[Boot Loader]

Timeout=25

Default=d:windows

[Operating Systems]

C: = “Microsoft Windows 98”

D:windows = “Microsoft Windows 2003”

4. 退出并保存文件后,删除C盘根目录下的带有$符号的临时文件夹和临时文件,然后重启电脑,在出现的双启动菜单上选择“Microsoft Windows 2003”,我的Windows 2003顺利启动了!

作者:杨通辉

菜单系统 第3篇

下面我们就以Windows系统的菜单为例,详细讨论这种约定体系以及它所代表的Windows中无处不在的人机交互模式。

一、菜单项文字颜色

该约定通过色彩向用户表达信息,黑色文字的菜单项表示该项目可用,灰色文字的菜单项表示该项目目前不可用。

该项约定不仅存在于菜单中,在Windows系统以及其他应用软件的工具栏和对话框中也随处可见。只不过工具栏中的工具按钮是以灰色和彩色来进行区分,彩色的工具按钮表示当前可用,灰色的工具按钮表示当前不可用。对话框中不可选的项目一般也都是用灰色字表示。而其更深层次的含义是,如果用户在需要执行某一操作的时候,发现鼠标单击的对象是灰色、不可用的,这往往就说明:用户在执行此操作之前所做的操作有误,需要检查自己之前的操作是否正确。

二、菜单分组线

在Windows系统菜单中,使用横向的菜单分组线把功能相近的菜单项放在一起组成一组,这样用户在使用菜单时就可以迅速找到自己想要的菜单项,从而提高了操作的效率。类似的,在工具栏和对话框中,功能相近的项目也采取了利用线条进行分组的方式,只不过这时的线条往往不再是横线,而是各种醒目的其他线型。但是目的都一样——提高用户的操作效率。

三、包含“?”的菜单项

含有“?”的菜单项表示在该菜单项下包含更下级的子菜单。这类菜单本身通常只具有容器的作用,用来包含下级子菜单,除此之外,它本身并不包含任何功能。

四、包含“……”的菜单项

当用户单击不包含省略号的菜单时,通常会激发一条指令,系统立即执行该指令。但包含省略号的菜单项被用户单击以后不会立即执行指令,而是会弹出一个新的对话框,以便用户继续向计算机传递信息。同样的,对话框中包含大量带有省略号的命令按钮。这些命令按钮不会像其他命令按钮一样在被单击后马上执行命令,而是在被单击后弹出一个新的对话框,等待用户向计算机发出进一步的指令。这种暗示实际上是在提示用户哪里藏有更多的可用操作。

五、带有“√”的菜单项

一般来说,带有“√”的菜单项表示:该菜单项是一个开关项。利用鼠标单击可以控制“√”号在菜单项中是否显示,有“√”时表示该菜单项所表示的功能开启,没有“√”时表示该菜单项所表示的功能关闭。类似的,对话框中的单选框也是具有“√”的项目,同样表示对该项目的开关控制。带有“√”的项目在使用时有一个问题必须搞清楚,那就是,该开关项的具体功能。有时候,由于软件编写者的原因,带有“√”项目的文字说明比较简单,用户可能很难看懂该项目的具体含义。此时,用户可以通过该项目的上级项目中所包含的文字来对该项目的功能进行理解,甚至有个别的时候,需要把上级项目的文字说明与该项目的文字说明连在一起阅读,用户才能看懂该项目包含的功能是什么。但这并不影响带有“√”的项目本身的使用。

六、带有“”的菜单项

带有“”的菜单项通常是作用在一组由菜单分组线分成的菜单组中,而非作用在某一个菜单项上面。其具体含义为:通过鼠标单击改变“”符号的位置,从而决定该菜单组中的哪一项发生作用。

七、菜单项的快捷字母

Windows系统菜单项中的每一个菜单,在菜单名称之后都会有一个括号,括号中有一个大写的英文字母,该英文字母就是此菜单项的快捷操作字母。但是该字母必须要和键盘中的Alt键配合才可以使用。并且,二级或三级菜单中菜单项的快捷字母要连续按相应的字母才可以完成操作。比如:“我的电脑”窗口中的系统菜单:“查看(V)”→“排列图标(Ⅰ)”→“名称(N)”,是一个三级菜单。如果想要利用快捷键打开此项目,需要操作的按键为:按住Alt不放,然后依次按“V”“I”“N”三个字母,然后松开Alt键。这样就可以不使用鼠标打开该菜单项。

菜单系统 第4篇

软件开发人员在开发某一个C/S模式项目时,都会遇到用户登录和菜单授权问题。自从微软推出LINQ to XML,使得操作XML更简单,更方便,更智能的XML API。由此,尝试采用XML作为数据载体来开发用户登录授权的动态菜单系统。

用户登录授权的动态菜单系统(以下简称本系统),已在Microsoft Visual C#2008环境下调试通过,并利用ClickOnce部署将本系统应用程序发布到服务器上,经过测试运行正常。客户机上在安装本系统的同时,也必须安装.NET Framework3.5 SP1。

2 XML树的创建

本系统的XML树创建的思路是按数据库表应用习惯考虑的,XML树子元素相当于数据库的主键字段,其他字段都是该元素的属性。这样,XML树中的一个子元素就相当于数据库表的一条记录。

实际运用LINQ to XML创建XML树并生成XML文档要比创建数据库表简单得多,只要首先用极简单代码生成父元素,而其他子元素在本系统运行时通过添加、修改、删除自动生成并存入文档。例如,菜单数据的父元素生成并写入XMLCdsj.xml文件的代码:

其他xml文件也用同样类似代码生成。

XMLCdsj.xml文件打开显示的带有两个子元素XML树:

其中,子元素名称:cdbm(菜单编码);该子元素的属性:cdmc(菜单名称)、zxml(执行命令)、sxbm(树形编码,树形控件显示节点的索引号)。

XMLYhsj.xml文件打开显示的带有两个子元素XML树:

其中,子元素名称:yhbm(用户编码);该子元素的属性:yhxm(用户姓名)、dwbm(单位编码)、dwmc(单位名称)、jsbm(角色编码)、jsmc(角色名称)、yhmm(用户密码)

XMLJssj.xml文件打开显示的带有两个子元素XML树:

其中,子元素名称:jsbm(角色编码);该子元素的属性:jsmc(角色名称)、cdbm(菜单项索引号与分隔符组成的字符串,也是授予的权限)。

XMLDwsj.xml文件打开显示的带有两个子元素XML树:

其中,子元素名称:dwbm(单位编码),该子元素的属性:dwmc(单位名称)

3 功能实现

本系统主要包括:菜单项添加、修改、删除,用户登陆、授权,运行动态菜单主窗体以及用户登录密码修改等。对本系统功能的实现作以下说明:

(1)本系统作为多用户运行,首先遇到的是作为数据载体的XML文件应如何读取与存入问题。换句话说,也就是用什么方式访问服务器端的XML文件,对此曾经考虑过3个方案,一是用映射服务器驱动器方法访问XML文件;二是在服务器端开发安装Web服务,客户端通过Web服务访问XML文件;三是通过服务器端的ftp访问XML文件。通过对比可以看出:第一方案是对服务器安全不利;第二方案是简单的问题弄复杂了,本来本系统用XML代替数据库已简单化了,反而又弄复杂了;所以,选择了第三方案。具体作法是在服务器端ftp任一站点下创建一个虚拟目录,将4个XML文件复制到虚拟目录相对应的实际路径文件夹下,通过服务器端ftp就可以访问XML文件了。

(2)对XML的操作,是利用了LINQ to XML的功能,非常轻松地将XML文件读取并调入内存、为XML树添加子元素、修改子元素的属性、删除子元素以及各种查询等。

(3)为了用户操作简单、直观与方便,在菜单项添加、修改、删除及用户授权的界面上选用了TreeView控件。用户对TreeView控件节点操作就等同于对菜单的菜单项操作。

(4)为用户授权必须是以菜单中每个菜单项为单位授给用户的,每个菜单项惟一标记就应该是它的所有上级(在有上级时)及其本身索引号组成的字符串,此字符串就决定了该菜单项在菜单中位置。在给TreeView控件添加节点时,利用节点的索引号生成菜单项各级索引号再组成字符串存入菜单的XML文件中。当为用户授权时,再把这些已授权的菜单项对应的字符串提取出来,用分隔符‘*’把它们组成新的字符串存入用户的角色XML文件中。这样,用户在登录时读取相对应的字符串就可以显示所有已授权的菜单项了。

(5)为了对菜单项的字符串检索方便,每一级菜单项的索引号存入时采用一位数字表示,索引号小于10用0—9表示,大于等于10用a,b,c,……t表示;当添加菜单项时将大于10的索引号都转换成英文字母组成字符串存入菜单的XML文件中。在显示菜单检测到字符串中有字母时再转换成数字。

(6)菜单项添加时,只限于添加到第三级,每一级限定为30个。但在开发的程序代码中已留有接口,可以将菜单扩展到第四级和第五级;每级的菜单项也可以超过30继续扩展下去。

(7)TreeView控件各级节点,是根据该控件节点索引号显示的。为了使各级菜单项的显示与TreeView控件各级节点的显示必须取得一致,该控件节点索引号是由菜单项索引号转换得到的;并将该控件节点索引号存入菜单的XML文件中。

(8)如果开发的项目应用范围比较广,操作用户在很多的情况下,为每一个用户授权是很繁琐的事。为了简化授权操作,采用先为角色授权,后为用户授予角色的办法。这样,就可以把某些操作相同菜单项的用户合并授予同一个角色。

(9)为了确保具有菜单项添加、修改、删除以及用户建立与授权等功能的菜单项,只能授予系统管理员,本系统为此也采取了措施;当为系统管理员授权漏掉这些功能时,系统将提示,否则不能继续。在为其他(非系统管理员)用户授权误将这些功能授予时,系统也同样会提示,必须取消这些授权,否则不能继续。

(10)当为用户角色授权到某一级菜单时,此菜单项还有下一级,该下一级所有菜单都没有授;本系统即提示应授权完整,否则不能继续。

4 各窗体界面及主要代码

4.1 菜单创建与调整窗体

此窗体命名为FormCdcj,它的主要功能是菜单项添加、修改、删除。把调整好的菜单数据存入XMLCdcj.xml文件中。参见图1及其代码。

窗体加载事件中,有关如何从XML文件中提取数据再加载TreeView控件各级节点代码:

单击按钮事件中有关TreeView控件新添加节点及同时添加菜单项到XML树并存入XML文件代码:

单击按钮事件中有关TreeView控件修改节点及同时修改菜单项到XML树并存入XML文件代码:

单击按钮事件中有关TreeView控件删除节点及同时删除菜单项到XML树并存入XML文件代码:

4.2 用户建立与授权窗体

此窗体命名为Formyhsq,它的主要功能是用户添加、修改、删除、角色添加及角色授权,把这些相应的数据存入XMLYhcj.xml文件中。请参见图2a、图2b及其代码。

单击按钮事件中有关新添加用户并存入XML文件代码:

单击按钮事件中有关用户修改并存入XML文件代码:

单击按钮事件中介绍用户删除并存入XML文件代码:

角色授权需要定义几个私有变量:

角色授权及下拉列表框事件代码中需要调用几个方法:

下拉列表框关闭时发生事件代码

单击按钮事件中有关角色授权并存入XML文件代码:

4.3 用户登陆窗体

此窗体命名为Formyhdl,它由主窗体FormZct直接调用并执行。它的主要功能是输入用户代码和密码,确认无误后进入菜单系统。请参见图3及其代码。

定义几个私有变量:

单击按钮事件中有关用户登陆代码:

文本框不再是窗体的活动控件时发生事件代码:

4.4 运行菜单的主窗体

此窗体命名为FormZct,它的主要功能是显示并运行用户已被授权的所有菜单项。

请参见图4及其代码。

定义几个全局静态变量:

窗体加载事件中,有关调用用户登陆窗体以及如何进入动态菜单系统代码:

自定义菜单事件的代码:

4.5 operation类代码

创建大于10的序号与英文字母对照临时表

检验输入数据是数字还是字母的方法:

用户密码加密输出方法:

5 结语

XML和关系数据同属于数据管理手段,关系数据以数据库系统为手段,XML以文件系统为手段。XML文件是一个纯文本文件,相对数据库而言,它的数据存取就更简单更方便。特别是LINQ to XML的出现,由于是面向开发人员的,所以更具有强大的优势。它启用了LINQ内存XML编程接口,使用它可以在.NET Framework编程语言中处理XML,它将XML文档置于内存中,并提供一种新的对象模型,是一种更轻量的模型,这种模型利用了Visnal C#2008在语言在方面的改进,它可以用函数构造方法创建XML树。另外,XML作为跨平台、跨系统数据交换应用更具有突出的优点。

XML作为文件管理,它毕竟存在着容量大、管理困难问题。XML检索是基于节点(元素)检索,对于海量数据的XML文件,造成检索速度大大降低。其次是对于多用户访问遇到并发、冲突问题,远没有关系数据的数据库系统处理这些问题那样安全,那样完善。

本系统开发尝试使用XML作为数据载体主要考虑以下几点:

(1)用户登陆、菜单授权一般是独立于所要开发的项目。如果采用数据库作为数据载体,和所要开发的项目是通过数据库有关联,也就是说依赖于同一个数据库系统。从开发写代码的角度来看,这是惟一的联系;如果不依赖于数据库而采用XML,它和所要开发的项目就没有什么关系了,所以,它更具有独立性,更具有可移植性。

(2)用户登陆、菜单授权需要存储的数据量不大,对于XML文件数据检索速度影响很小。

(3)向XML文件添加、修改、删除只有系统管理员有权操作,其他用户只能读取数据,所以,不会产生写入并发和冲突,也不会产生数据不一致的问题。

(4)从上面介绍的程序代码可以看出,LINQ to XML的应用,对于开发人员来说,使得数据处理更加简单更加方便了。

总之,本系统开发采用XML作为载体,正是充分利用了XML的优点,又避开了它的缺点。对于用户来说,重要的是不是数据存放在何处,而是数据的逻辑结构合理性和操作界面的方便性。

摘要:介绍了用XML作为数据载体开发用户登录、授权的动态菜单系统所有功能,包括各窗体界面及其主要的核心代码。

关键词:LINQ to XML,XML树,XML文件,TreeView控件,动态菜单

参考文献

[1]Microsoft MSDN Visual Studio 2008.

菜单系统 第5篇

强制开启方法:

1、首先要打开组策略,具体的步骤是点击开始,在运行输入框里面输入gpedit.msc,然后点击回车。

2、接着依次打开下面的选项:用户配置、管理模板、“开始”菜单和任务栏,    3、在右边找到“强制经典“开始”菜单”,然后双击直接启动。    4、双击-强制经典“开始”菜单,之后再点击启动就可以了。

5、最后重启电脑就可以生效。

通过Win8/8.1系统本地组策略编辑器就可以轻松的将经典“开始”菜单强制开启,但启用该功能之后会影响到开始菜单的外观,用户可以先设置体验,如果不满意还可以按照教程的方法来关闭。

中国的“菜单文学” 第6篇

中国菜名,用词典雅秀丽,制作出来的菜则色、香、味、型、器俱全。例如将豆苗比作“龙须”、菠菜唤作“红嘴绿鹦哥”,鸡蛋美名为“芙蓉”,鸡翅喻为“华袖”,鸡爪称为“凤爪”,豆腐唤作“白玉满堂”等等。

在中国菜中,以龙凤命名的极多。传说神州赤县乃龙凤的故乡,菜以龙凤命名,让人联想到龙的神奇、凤的秀美。一只鸡加一条鲤鱼一起炖烧,谓之“龙凤呈祥”。鱿鱼炒鸡片,谓之“游龙戏凤”。猫与蛇烹调在一起,叫做“龙虎斗”或“龙吟虎啸”。菜花炒鸡块,名曰“凤穿牡丹”。鸡丝拌粉皮,芳名“玉叶凤柳”。鸡脚炖白蘑菇丁,雅称“雪泥凤爪”。公鸡与母鸡同锅烹制,便是“鸾凤和鸣”。

风、花、雪、月、珍珠、玛瑙等等也融入了中国的美味佳肴之中,十分独特雅致,极富诗情画意。例如将七片莲藕孔眼灌入江米,再切五片胡萝卜雕刻成梅花状,烹调好了摆上桌,竟然是“梅花欢喜漫天雪”。菠菜炒西红柿,就是“翠柳啼红”。白萝卜丝加红辣椒粒烹调,称作“踏雪寻梅”。黄泥鳅烩红枸杞,誉为“碧血黄龙”。鸡脚烧鹌鹑蛋加红豆,雅称“明月映珍珠玛瑙”。真是美不胜收!

菜单系统 第7篇

关键词:自学习,多级联动菜单,Ajax,Cookie,B/S,SSH

0、引言

当前, 信息管理系统得到广泛的应用, 各种系统用途及功能千差万别, 大致分为辅助决策系统 (DSS) 、工业控制系统 (CCS) 、办公自动化系统 (OA) 等, 在这些系统中, 导航菜单设计直接影响系统界面的友好性。传统的菜单和权限控制一般都直接写在程序中, 这样当菜单项很少时, 开发简单方便;但当系统功能菜单项增多且系统用户角色增多时, 不仅修改起来不直观, 而且限制了系统权限控制的灵活性。针对这些缺点, 本文提出一种根据用户角色配置菜单的系统, 并且能学习用户使用习惯进行多级自动排列。当菜单很多时, 通过检索快速找到不常用的菜单。

1、解决方案

1.1 系统简介

本设计是在一个基于B/S模式的企业项目管理系统上实现的, 该系统使用能力成熟度模型 (CMM, Capability Maturity Model) 对项目进行管理。系统采用当前最流行的J2EE轻量级SSH (Stuts2.0+Spring+Hibernate) 框架, 该框架好处是使开发的系统层次更为清晰, 可扩展性强, 可提高软件的复用程度和开发效率[1]。SSH基于MVC模式提出J2EE技术平台四层体系结构, 分别为表现层、控制层、服务层、持久层。各层的分工明确, Struts为构建Web应用程序提供了一个稳定、成熟的MVC框架, Hibernate是目前最流行的持久层解决方案[2], Spring为J2EE应用程序开发提供集成的框架。由于功能众多, 所以我们对其按功能模块进行归类, 形成两级的级联菜单。菜单结构如图1所示 (其中查看员工、项目、任务、公告界面中有更新和删除功能) :

由图1可知, 本系统菜单相当庞大, 而且系统用户角色多样, 分为安装者、系统管理员、会计、高级经理、项目经理、工程师等6种。所以权限管理相当复杂, 所以我们一直考虑如何让权限管理更加直观性, 以及用户对系统操作起来更加习惯和自然, 最终提出下面的可配置菜单和自学习菜单的设计。

1.2 可配置菜单原理与实现

可配置菜单就是针对传统菜单写在程序中的缺点提出的, 因为固化在程序中, 开发复杂且可读性和可维护性差, 而且更改权限也不直观。而如果把菜单、角色以及角色与菜单对应关系表存放在数据库中, 在页面上提供所见即所得的可视化配置界面, 则可以轻松实现菜单的配置。我们把图1中二级级联菜单设计为一种自关联表, 菜单表结构为 (菜单ID, 菜单名称, 上级菜单ID, 链接地址) , 角色表结构为 (角色ID, 角色名称) , 角色与菜单对应表 (角色ID, 菜单ID) 。这三张表符合关系数据库第三范式 (3NF) , 数据不冗余, 且根据角色很容易查找对应的菜单, 且容易对其进行增删改。

前面已经在数据库中为实现菜单可配置提供基础, 接下来实现可视化配置界面, 如图2所示:

如图2所示, 当系统管理员选择某个角色之后, 列出所有权限, 该角色已有的菜单会显示已勾选, 如要修改, 则可以取消或者勾选, 然后点击确定即可。系统配置好角色与菜单的对应关系后, 再另一个界面配置角色与用户的关系, 这样用户登入系统后就可以使用配置好的菜单, 当然这个配置角色与菜单对应关系的功能只能开放给系统管理员, 普通用户是不能拥有这个系统级权限的。列出某角色下所具有的菜单关键代码如下:

1.3 自学习菜单原理与实现

所谓自学习, 就是系统能学习用户的使用习惯, 然后根据使用习惯自动调整菜单的排列秩序, 这样更方便用户使用, 从而提升用户的使用体验以及工作效率。这里所说的使用习惯主要是指用户使用菜单的频率, 频率高则自然排在前面, 反之排在后面。只有一级的菜单比较好实现, 统计每个菜单项的累积使用次数, 然后按照累计点击次数排序。但是两级级联导航菜单相对复杂, 先按一级菜单的点击量排序, 每个一级菜单下的二级菜单再按点击量排序。这样最常用的菜单总是能排到前面。

一般来说, 可以用两种方法统计点击量。第一种方法使用数据库, 每点击一次就写到数据库中。这样的缺点是效率比较低, 当同时多人访问时数据库负载大, 而且当用户很多且菜单项很多时数据量很大。优点是可以根据这些统计数量挖掘出普遍的使用习惯。

第二种是使用Cookie技术, 在每个客户端中记录用户的点击量。这其实使用了胖客户端的思想。减少服务器的负载。缺点是不能统计出普遍的使用习惯。因为我们菜单更偏向于个性化, 所以我们决定采用第二种方案。实现效果如图3所示 (系统管理员账号登入) :

1.4 菜单的检索

自学习菜单可以根据用户使用习惯生成个性化的菜单, 但是有些很少用到的菜单有时候确实必要的, 虽然级联菜单已经按功能模块进行了归类, 但是有些菜单还是不容易找到。所以我们设计了一个搜索框, 可以对菜单进行模糊检索, 对检索出来的菜单点击我们也算入点击量。这样当使用很多时自然也会排在前面。

2、结束语

本文提出一种基于SSH框架B/S模式的信息系统中可配置和自学习菜单的设计, 包括系统简介、存储结构、可配置和自学习的原理与实现, 还有自学习两种方案数据库和Cookie技术的比较与选择, 以及最后通过菜单的搜索功能是菜单变得维护简单、直观化, 使用个性化及智能化。

参考文献

[1]沈镛.软件开发中SSH框架技术研究与应用[J].福建电脑, 2010 (6) :82-83.

菜单系统 第8篇

1. 动态菜单

信息软件系统的菜单的动态生成需要一个动态菜单生成构件来实现。该构件以菜单配置工具的形式出现, 可以完成角色的功能定义, 并将功能实现推迟到运行时加以分析确定。这种手段使得用户可以动态的确定一个角色可以有什么功能, 具体功能点应该以什么样的状态分布。动态菜单生成技术主要是分离了权限与功能的对应逻辑完成角色的访问控制。采用动态菜单设计的思想, 将菜单的自动生成与软件业务功能相对应, 同时也与代码的更改剥离开来, 使得系统管理员可以通过菜单配置工具来动态的增加、减少各个子系统所需要的构件, 从而实现角色所需要的特定的业务功能, 也可通过菜单配置工具配置不同角色下包含的构件, 而实现此角色下个性化的业务功能, 达到以菜单的动态变化来适应企业内个性化的要求, 这对大型企业信息化软件系统的开发和部署是至关重要的, 同时也能提高软件的维护性、移植性和柔性化程度[1]。

2. 动态菜单编辑器的应用

利用动态菜单编辑器, 可以快速完成医院业务重组需求, 而不需要软件开发商修改代码、重编译、功能模块挂接, 甚至可实现医院自主用其他语言编制的功能模块的挂接。

例如:动态菜单编辑器menu.exe, 通过主菜单文件KWHIS.ZMN连接多个分菜单文件:系统配置、门诊挂号系统、门诊收费管理系统、门诊药房系统、药库管理系统、出入院管理系统、护士工作站、中心药房系统、手术管理系统、医技收费系统、医技划价系统、物资管理系统、体检系统、院长查询系统、病区医生工作站、门诊医生工作站等。每个分菜单再连接多个子功能, 在每个子功能下挂接多个节点功能模块, 每个功能模块调用不同dll的不同函数 (图1) 。功能模块挂接上后, 通过动态菜单编辑器中的Menu2SQL执行生成菜单语句, 在HIS中注册菜单项, 之后通过岗位权限设置功能实现应用权限的分配。

利用动态菜单编辑器可以将需要的模块挂接到任意的子系统中, 如住院病人费用信息查询模块与住院费用有关的子系统中都可以挂接, 与费用发生的使用部门都能方便查询病人的费用情况。信息中心软件人员掌握了此项技术就能很好实现业务整合。

3. 体会

动态菜单编辑器带给应用系统的不只是开发的简单, 也减少了系统的维护、运行和管理的工作量, 还减少了信息化建设费用的投入。

实际上, 动态菜单编辑器是中间件技术的一个应用实例。随着计算机技术的飞速发展, 各种各样的应用软件需要在各种平台之间进行移植, 或者一个平台需要支持多种应用软件和管理多种应用系统, 软、硬件平台和应用系统之间需要可靠和高效的数据传递或转换, 使系统的协同性得以保证。伴随着应用系统集成需求不断提升, 中间件本身也存在一个不断延伸与拓展的过程, 原始的中间件是指位于操作系统与应用程序之间的软件中间件, 而现在它则包括了所有应用系统之间的整合、集成, 内涵远远超出了以前的范畴。中间件软件已经与操作系统、数据库并列为三大基础软件。依靠中间件-动态菜单编辑器来实现业务整合和工作流程的管理已成为一个趋势[2]。

摘要:随着医院内外部环境的变化, 信息系统不可避免会有增加子系统或在子系统中增减模块的需求。本文结合实际工作阐述了医院信息系统维护过程中对动态菜单编辑器的应用和体会。

关键词:医院信息系统,动态菜单,动态菜单编辑器

参考文献

[1].王玉峰;张振业.基于.NET反射技术的动态菜单的设计与实现[J].微计算机信息, 2008, 3:9-11.

Authorware菜单制作 第9篇

1 必需的扩展函数

借助Authorware的外部扩展函数:Winapi.u32和tM-sControls.u32来制作多级标准Windows菜单和右键弹出菜单。在Authorware安装目录里可以找到。Winapi.u32函数功能描述如下:

GetMenu(WindowHandle):获取窗体菜单的句柄

GetSubMenu(menuhandle,npos):获取用户菜单的句柄

RemoveMenu(menuhandle,position,flag):从窗体中擦除指定菜单

DrawMenuBar(WindowHandle):显示窗体菜单

InsertMenu(submenuhandle1,positon,flag,submenuhandle-2,newsubmenuname):向submenuhand1增加一个新条目,位置position,名字newsubmenuname,增加方式由flag决定。

tMsControls.u32必需的部分函数与功能描述[1]:

tMsCreatePopupList(windowHandle):创建一个弹出菜单,控制并返回此菜单的句柄

tMsAddItem(ControlHandle,menuItemNo,submenuItemNo,menuText):菜单中增加一个条目

tMsDisplayControl(ControlHandle,X,Y,Width,Height,Return):在指定位置显示菜单

2 制作Windows标准菜单

多级菜单的制作步骤如下:

(1)建立“文件”和“编辑”菜单。在流程线上拖放一个交互图标,命名为“文件”,在其右侧放一个群组图标,在弹出的“Response Type”对话框中,选择“Pull-Down Menu”。将这个组图标命名为“新建”。双击群组图标上方的矩形色块,在弹出的“Properties:Response”对话框中,点击“Response”选项卡,选中其中的“Perpetual”复选项,并将“Branch”的值选为“Return”。继续添两个这样的群组图标,分别命名为“保存”、“退出”。

(2)建立“块操作”菜单。按同样的方法,在主流程线上再放一个交互图标,其右侧也放两个群组图标,分别命名为“撤消”、“查找”。各项设置同上面的步骤一样。这个菜单是要作为下一级菜单插入到“编辑”菜单中的。

(3)添加程序代码。在主流程线下方加一个计算图标,命名为“menu script”,双击打开窗口,输入如下内容:

所用变量初始值赋为空即可,运行结果如图1。

3 制作右键弹出菜单

在流程线上拖放一个交互图标,命名为“popupmenu”,在其右侧放一个群组图标,在弹出的“Response Type”对话框中,选择“Conditional”。将这个组图标命名为“RightMouseDown=TRUE”。双击群组图标上方的矩形色块,在弹出的“Properties:Response”对话框中,点击“Response”选项卡,选中其中的“Perpetual”复选项,并将“Branch”的值选为“Continue”。双击群组图标,将其打开,在流程线的下方加一个计算图标,命名为“popupmenu script”,双击打开输入窗口,输入如下内容:

所用到的变量初始值赋为空即可,设计如图2所示。

当用户进行鼠标右键操作时,条件为真,执行计算图标里的代码后并弹出菜单,在鼠标右键点击处,弹出一个设定好的弹出式菜单,并将用户所选择的菜单项返回给变量popresult。程序运行结果如图3所示。

4 打包运行

软件制作完成后,要对其进行package。方法是依次点击菜单“File→Publish→Package”,然后弹出“Package File”对话框,在“Package File:”下拉列表中选择“For W-indows XP,NT and 98 Variant”,复选框全部选中,然后点点击“Save File(s)&Package”按钮。Authorware会把打包后的执行文件放到源程序所在的目录下,并且打包后的文件与源程序文件同名[2]。如果需要把执行文件异机演示,要把两个外部扩展函数Winapi.u32和tMsControls.u32复制到执行文件所在的目录下[3]。

5 结束语

Authorware交互方式中的菜单交互功能有限,利用外部扩展函数实现windows标准菜单和右键弹出菜单,使用时更加方便灵活。使用SDK工具对现有软件进行开发是软件编程人员经常遇到的情况,为进一步改善软件功能提供了一种解决方法。

摘要:本文介绍了通过Authorware7.0来制作右键弹出式菜单,利用Authorware外部扩展函数,对Authorware中的菜单进行改进。

关键词:Authorware,外部扩展函数,多级菜单,弹出菜单

参考文献

[1]袁海东.Authorware7.0变量与函数参考手册[M].北京:电子工业出版社,2004-03.

[2]诸雪征,孙逊.Authorware7.0多媒体制作基础培训教程[M].北京:中国铁道出版社,2004-01.

浅析菜单实现原理 第10篇

1 两种映射

ON_COMMAND映射的作用是用户选择该菜单时调用指定的处理函数。ON_COMMAND (IDMCOMMAND0, On Comm and0) 会使菜单被选择时调用OnCommand0成员函数。

ON_UPDATE_COMMAND_UI (IDM_COMMAND1, OnUpdateCommand1) 映射的作用是在菜单被显示时通过调用指定的函数来进行确定其状态。在这个处理函数中可以设置菜单的允许/禁止状态, 其显示字符串是什么, 是否在前面打钩。函数的参数为CCmdUI*pCmdUI, 其中CCmdUI是更新命令的一个类, 可以调用Enable设置允许或禁止状态, SetCheck设置是否在前面打钩, SetText设置文字。

2 举例说明

在CView派生类中有一个变量m_fSe, 并且在视中处理两个菜单的消息, 当IDM_COMMAND0被选时, 对m_fSe进行逻辑非操作, 当IDM_COMMAND1被选中时出现一提示;同时IDM_COMMAND0根据m_fSe决定菜单显示的文字和是否在前面打上检查符号, IDM_COMMAND1根据m_fSe的值决定菜单的允许或禁止状态。

3 菜单操作其他方法

通过代码也可以操纵菜单, MFC中的类CMenu用来处理和菜单有关的功能。在生成一个CMenu对象时需要从资源中装如菜单, 通过调用BOOL CMenu::LoadMenu (UINT nIDResource) 进行装入, 然后就可以对菜单进行动态的修改, 有关函数如下:

CMenu*GetSubMenu (int nPos) 一位置得到子菜单的指针, 因为一个CMenu对象只能表示一个弹出菜单, 如果菜单中的某一项也为弹出菜单, 就需要通过该函数获取指针。

BOOL AppendMenu (UINT nFlags, UINT≠nIDNewItem=0, LPCTST RlpszNewItem=NULL) 在末尾添加一项, nFlag为MF_SEPARATOR表示增加一个分隔条, 这样其他两个参数将会被忽略;为MF_STRING表示添加一个菜单项uIDNewItem为该菜单的I D命令值;为MF_POPUP表示添加一个弹出菜单项, 这时uIDNewItem为另一菜单的句柄HMENU。lpszNewItem为菜单文字说明。

BOOL InsertMenu (UINT nPosition, UINT nFlags, UINT nIDNewItem=0, LPCTSTR lpszNewItem=NULL) 用于在指定位置插入一菜单, 位置由变量nPosition指明。如果nFlags包含MF_BYPOSITION则表明插入在nPosition位置, 如果包含MF_BYCOMMAND表示插入在命令ID为nPosition的菜单处。

注意:视图中是没有菜单的, 在框架窗口中才有, 所以只有用AfxGetApp () ->m_pMainWnd->GetMenu () 才能得到应用的菜单指针。

4 弹出菜单

在程序中实现弹出菜单, 必须先装入一个菜单资源, 得到一个弹出菜单的指针然后调用BOOLTrackPopupMenu (UINT nFlags, int≠x, int≠y, CWnd*pWnd, LPCRECT lpRect=NULL) 弹出菜单, 你需要指定 (x, y) 为菜单弹出的位置, pWnd为接收命令消息的窗口指针。为了处理消息你应该在pWnd指明的窗口中对菜单命令消息进行映射。

CMenu menu;

menu.LoadMenu (IDR_POPUP) ;

CMenu*pM=menu.GetSubMenu (0) ;

CPoint pt;

GetCursorPos (&pt) ;

pM->Track Popup Menu (TPM_LEFTALIGN, pt.x, pt.y, this) ;

还可以通过CMenu::Create Popup Menu () 建立一个弹出菜单, 然后使用TrackPopupMenu弹出菜单。使用CreatePopupMenu创建的菜单也可以将其作为一个弹出项添加另一个菜单中。程序代码如下:

5 结语

菜单是一种基本的资源, 在实际编程中要会灵活应用。

参考文献

[1]Stanley B Lippan.C++ Primer第三版.

最后的菜单 第11篇

他们的相恋,自然遇到了她家里人暴风骤雨般的反对,家里人已经把她像一件珍贵的艺术品一样,许配与馈赠给有生意往来的一位大户子弟。然而,一切阻碍都无济于事。爱就爱了,每一天,她都会为他而呼吸。

20世纪50年代的一个春天,历经重重波折的他们在城市里结了婚,那时,他已是一所大学的老师了,而她,只是一家工厂的小财务员。那时,她的家道已经衰落。婚后,他才发现她根本不会做饭,她仿佛还是当年那个富贵人家的娇娇女。想起当初恋爱时,她从家里悄悄拿出烤牛肉片给他吃,他刚嚼了一片,那令人眩晕的香味啊,便让他一直舍不得再吃上一口,偷偷藏进包里,在想她时,便取出来轻轻咬上一口,食物的味道,更是爱情的味道。

他宠着她,每天早起,去市场上买回菜,还订了几本食品烹调的杂志,在教学之余,变着花样做各种式样的菜给她吃,让她好好享受食物的美好,享受一个男人从内心里进发的爱的味道。为了她,他就这样一直哼着歌儿快乐地烹调了50年。每一次去外面餐厅吃饭,也都是由他戴上老花镜点菜,她总是吃得很香。在为她烹调的时候,他甚至让她离厨房远一点,不要让那呛人的油烟把她的皮肤熏坏了。儿女们也大学毕业了,面对几十年如一日伺候妈妈的爸爸,都感慨不已。孩子们说:“这一辈子,爸爸是为妈妈偿还债务而来到世间的。”听到孩子们的话,他几乎有些恼怒。平静下来之后,他告诉孩子们,他从心里愿意为妈妈做一辈子的饭,他把烹调当成一件十分享受的事情,因为,他愿意一辈子给她做饭。爸爸的话,让儿女们眼里都热泪盈盈。因为父亲的潜在影响,儿女们的家庭也和睦幸福。

在刚刚迎来他们50年金婚过后的秋天,房前梧桐树的几片落叶在风中摇摆着,他患了癌。他走得是那么干净和利落,不到一个月,他就去了。

在咽下最后一口气之前,他已经不能说话了,从各地赶回来的儿女们簇拥着来到他身边,都想知道爸爸那最后的遗言。他微微撑起头,用手指了指他睡的枕头。在他离去以后,儿女们打开一个白色信封,起初,他们以为是爸爸留下的存折密码。然而,信封打开后,儿女们一下傻眼了。

信封里滑落出来的,是一份整整齐齐的菜单,父亲用颤抖的手,开出了一份他生命中最后的菜单。他注明了,那是丧宴上的菜单。为了不让母亲操心,为了让几乎从来没有买过菜的母亲不费神,他甚至在每一件菜品后都做了备注,说明哪一样菜在哪一条街道哪一家市场上购买最便宜和最实惠。

新颖的“晨会课”菜单 第12篇

周一“爱祖国”教育:每周一我要求学生统一着装、队列整齐、精神抖擞地站在庄严的国旗下,凝视着五星红旗,高唱《义勇军进行曲》,以实际行动让学生感受到了爱国的情怀。通过聆听国旗下讲话,学生能够深入了解国家、社会以至于学校的各种动态,明确自己的目标,更好地安排未来一周的学习与生活。每周一晨会旨在培养和激发他们的爱国情感,坚定“没有共产党就没有新中国”“社会主义具有巨大优越性”的信念,继承革命优良传统,做建设有中国特色社会主义的未来生力军,为实现中华民族的伟大复兴而不懈努力。

周二“读书交流”:每周二的“读书交流”使学生不用再花费大量时间在书海中寻求经典,十分钟内就可以分享到好书的精华。由主持人事先安排好五名队员进行交流,由他们结合自己近期的读书情况畅所欲言。有激励大家进步的《名人名言》《名人故事》,有学习知识、学会做人的《处世之囊》,有发散思维、引人注目的《上下五千年》,有神奇奥妙、探索世界的《科技奇观》……同时每周二晨会也是锻炼自身胆量、表达能力、展现个人风采的平台。走上讲台的每一位学生在此之前都精心准备,牢牢抓住有限时间,希望带给大家最精彩的展示。有时我也会稍做点评。渐渐地,学生开始主动地到图书馆借书,把读书当作了一种乐趣,自信心、表达力、与人交往能力等方面都有了较大的提高,这也为他们日后走上工作岗位奠定了坚实的基础。

周三“Miss Fan讲坛”:这是仿造央视“百家讲坛”而设的,本学期安排的主要内容有“捡砖头思维”“好习惯的养成”“怎样防控甲型H1N1流感”“汶川大地震”等。每周三的晨会是我最紧张的了,因为我要像专家一样,面对学生侃侃而谈。我要尽可能用自己饱满的热情、积极稳定的情绪、高尚的情操、顽强的意志、良好的气质、博学的知识、幽默的谈吐给学生以良好的行为示范,使学生在良好的感染中不断汲取知识,完善人格,为他们树立可望而又可及的榜样。

周四“小组盘点”:古语有云“吾日三省吾身”。我把全班分成4小组,每组10人,正副组长各带4人形成小小组,每日统计小组成员上课的表现、课外的行为习惯、完成作业等情况,并在这天晨会就本组一周以来的表现进行盘点,发扬优点,正视缺点,引导学生主动参与班级管理,培养学生的上进心和责任感。

周五“英语广播”:每周五的晨会为学生学习英语开拓了一片更广阔的视野。班里一部分学生对英语不感兴趣,每周五的英语广播学习为学生开通了一条与英语相连的路。一周一段文章的摘抄、朗读,班主任随机抽取每队的一名同学到讲台展示,然后把成绩记入小队积分中,作为每周优秀小队评选的依据,并开展“一帮一、一帮二”手拉手活动,大大调动学生学习的积极性。

上一篇:体育教学风格类型下一篇:电视采访手段

热门文章

菜单实训总结