unix环境下非图形终端上的通用下拉弹出式菜单.doc

unix环境下非图形终端上的通用下拉弹出式菜单.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unix环境下非图形终端上的通用下拉弹出式菜单

UNIX环境下非图形终端上的通用下拉弹出式菜单 摘要 该文在AIX V3.2.5环境下,利用C语言的指针机制,开发出了非图形终端(HT-382)上通用下拉弹出式菜单工具。; 一、问题的提出; 随着计算机在社会生产、生活各部门的广泛应用和高档微机、小型机的不断出台,高性能UNIX/XENIX多用户、多任务操作系统正在逐步取代原有单用户的DOS系统。这就迫切需要在新环境下开发出大批功能齐全的应用软件工具,以取代DOS环境下的各种应用软件,从而满足用户新的要求。; 以往的菜单工具虽各有其特点,但均是在DOS环境下开发的,都借助于Windows或TurboC强大的图形处理库函数,有良好的开发环境,而且一般的做法是,为每一个菜单编制一特定的程序,即:用户菜单与程序具有一一对应的关系,一旦菜单做出修改,对程序也必须做相应的改动,从而导致编程工作量大,重复劳动多,灵活性差等不足。能否在UNIX操作系统下的中西文终端上,脱离TurboC强大的函数库,开发出一个独立于用户菜单,对不同内容与结构的若干个用户菜单实现管理的应用程序呢?; 针对这个问题,笔者经过探索和实践,以 AIX V3.2.5 为背景,利用C语言的指针机制,在非图形终端(HT-382)上开发出一通用的下拉弹出式菜单工具软件。该程序和具体用户菜单的联接是通过相应于菜单的描述文件(*.TXT)实现。*.TXT文件不仅描述了用户菜单的内容与结构,而且对其屏幕显示属性也做了相应描述。; 二、问题分析; 与具体的用户菜单无关是该通用软件的主要特征。通用性要求:; 使程序相对于菜单而独立,必须通过某种方式将一个菜单的信息传递给程序,而不同的菜单其内容与功能选项,以及各功能选项所包含的子菜单嵌套层数(以下简称结构)都是不同的,这就要求程序必须能动态地处理用户菜单的内容与结构。; 1.动态处理菜单; 程序要想动态地处理不同的用户菜单,则必须在程序中实现变量的动态定义,以便将数目不定的各功能选项进行所需处理。C语言中变量定义的实质,是为了在编译时能为其分配相应的存储单元。同时,C语言又提供了指针机制,允许使用指针对内存单元进行操作。而且,C语言经编译后,取得并使用四个逻辑上不同、用于不同对象的内存区域,分别是:栈、堆、全局变量区、程序代码区,其中堆是一个自由内存区域,C语言可通过内存分配函数(malloc()、calloc()),动态地从中获得所需空间。由指针指向被分配的内存块,使之可作为变量空间使用。当该内存空间无用时,可利用内存释放函数free()释放指针所指向的内存块。; 而数据结构中链表的特点是:逻辑上相邻的元素在物理上不一定相邻,数据元素之间的逻辑关系是由结点中的指针指示的,换句话说,指针为数据元素之间的逻辑关系的映像。它是一种动态结构,链表所占用的空间不需预先分配,而是由系统应需求即时生成。; 2.用双向循环链表实现菜单功能; 下拉弹出式菜单系统系在顶端水平显示包含各主功能选项的菜单条行,用户可以利用$-→键或←键移动并回车选择所需的主功能选项,而被选取的主功能选项将会显示其相关的子功能选项在下拉的弹出式菜单框中。同级菜单的功能选项形成一闭合循环,即:当用户利用↑(或↓)键移动高亮度反白亮条至同级功能选项的顶(或底)部时,再往上(或下)移动,则高亮度反白条将自动返回底(或顶)部。子菜单可在该级任一功能选项上按q键返回其父菜单。为了实现这一功能,采用双向式循环链表作为该软件的基本数据结构。将一个窗口下的菜单(仅; 有一个)作为一相对独立的双向循环链表,即:同一级的菜单以各功能选项信息的结构体形式为结点,构造成双向循环链表。各菜单之间(即:相对独立的双向循环链表之间)又有父子关系,采用C语言的指针机制使各链表有机地连结成网。基于此,菜单便可大可小,可深可浅(大:指菜单项目多,反之为小;深:指子菜单嵌套层数多)。; 3.创建与控制屏幕窗口; 与许多操作系统只在汇编语言级向用户提供系统调用的接口不同,UNIX不仅在汇编语言级,而且在程序设计语言C中提供了这种接口。; 这给编程者提供了很大方便。笔者充分利用此特点,借助AIX操作系统(V3.2.5)提供的CURSES库完成屏幕窗口的创建与操纵。CURSES库是一组屏幕控制子程序,它允许用 C 程序调用这些子程序去控制终端的输入与输出。由此提供给用户友好的界面。由于CURSES库是一个较为复杂的问题,因此本文不作详细论述,有关这方面的内容,请读者参考相应的书籍。; 通过以上分析,笔者想到了一种应用内存分配(指针)和链表相结合来实现变量的动态定义,利用C语言的递归调用最终实现程序通用性的方法。现将该方法与程序提供出来供大家参考。; 三、具体方法; 1.先根据相应的text文件内容创建双向循环链表网;; 2.再用自定义函数menu()实现对该链

文档评论(0)

ailuojue2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档