- 相关推荐
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"键返回其父菜单。为了实现这一功能,采用双向式循环链表作为该软件的基本数据结构。将一个窗口下的菜单(仅
有一个)作为一相对独立的双向循环链表,即:同一级的菜
[1] [2] [3] [4] [5]
【UNIX环境下非图形终端上的通用下拉弹出式菜单工具】相关文章:
刍议语言与非语言交际工具05-02
GIS环境下城市平面图形的自动综合问题05-02
非平稳环境下混沌信号的小波去噪方法05-02
区域非稳定动力学环境下的岩体松动效应04-29
网络环境下非英语专业学生自主学习能力培养04-30
菜单04-30
“非指导”下的作文教学04-30
站在云端上歌唱04-08
图形负荷下的字音匹配加工05-01
英文简历样本(Unix)05-04