陈小杙
目前学计算机 还是挺不错的好就业,计算机分很多专业如平面设计,UI设计,互联网营销,电竞,动漫,都是非常好就业的专业哦,选择自己喜欢的专业 
还是给你找几篇吧,供你参考参考(就是拼凑一片啦。。呵呵。)希望能帮助你计算机的展望摘要文章通过对计算机集群技术、网格技术、WebService技术和分布式虚拟现实技术的分析,认为计算机中重要的思想在于对已有软件硬件系统的复用,从而实现资源的优化整合,进而实现在海量信息环境下的信息协同,这将是计算机科学的一个发展方向。关键词集群技术;网格技术;软件复用技术;WebService技术作者简介龚茜茹,女,河南南阳人,河南工业职业技术学院信息工程系教师。1引言计算机技术发展至今,在短短的六十年里,取得了巨大的辉煌,从观念上改变了人们对世界的熟悉,将人类社会带入了信息时代,加速了人类社会的发展。在今天计算机技术已经成为人们日常生活工作中不可或缺的重要组成部分,而计算机技术的发展也将越来越多影响人类社会的进步。在现阶段,集群技术、网格技术等一系列技术的发展和进步,对人们的生活产生了巨大的影响。这些技术在某些层面上存在着一定的共同性。2计算机发展趋势2。1综述在现今的条件下,计算机学科的理论基础日渐成熟。要想从理论基础上推动计算机技术的进步,在一定程度上讲,需要付出较大的努力。而网格技术,集群技术,WebService技术以及软件的复用技术,在很大程度上推动了计算机技术的发展,从而推动了计算机技术的应用。这些技术都是在一定的层面上,对已有系统,包括软件和硬件系统的复用,进而实现优化组合,产生巨大的效能。2。2集群技术集群计算机利用高速通信网络将一组高档工作站或PC按某种结构连接起来,通过并行程序设计及可视化人机交互集成开发环境的支持,实现统一调度,协调处理,组成高效并行处理的系统。多台计算机通过高速局域网相互连接起来,配备一定的并行支撑软件,从而使各自具有一定的特定的功能,从而在现有网络体系结构下,形成一个松散耦合的并行计算环境,协同地并行求解同一个问题。集群技术通过利用网络中多个节点的计算能力把它们虚拟成一台具有更高计算能力的计算机。对比其他结构,在保持现有系统结构和组成的条件下,集群系统具有性价比高、可扩展性好、高可用性和高能用性的优点,尤其是集群系统系统开发周期短、用户投资风险小、节约系统资源、用户编程方便。目前,集群技术已成为并行处理的热点和主流,有关专家猜测:“未来的高性能计算机和超级服务器都将基于集群结构”。集群技术通过对现有计算机的“复用”,在不对现有体系结构进行重大修改的前提下,通过互联互通,组成一个具有一定体系结构的复杂系统,从而实现并行高性能计算。其与网格技术无论是在体系结构上还是设计的思想上具,都有一定相似性。2。3网格技术网格技术是最近新兴的一种技术,包括计算网格、信息网格、知识网格等,被誉为第三次信息技术浪潮,得到了广泛的应用,它利用现有的网络结构,协议和数据库技术,实现分布式、协同化、智能化的信息处理。网格技术充分发挥了松偶合网络中各计算机的性能和资源,利用现有互联网的架构,把地理上广泛分布的各种资源,包括计算资源、存储资源、带宽资源、软件资源、数据资源、信息资源、知识资源等整合成一个逻辑整体——一台虚拟的超级计算机,为用户提供一体化的信息和计算、存储、访问等应用服务,虚拟的组织最终实现在这个虚拟环境下进行资源共享和协同工作。它通过对已有资源的充分利用,实现了网络海量信息环境下的协同。网格信息资源的获取、传输、共享和利用带来了一场革命,也必将对人类的生产和生活方式带来巨大的变化。在目前,网格技术主要应用在分布式超级计算上。通过利用高速互连的网络通路,实现分布式的计算。这样,通过整体的整和,在逻辑上实现一台性能更高,容量更大的巨型虚拟机,形成一个比单台计算机更高效的计算处理平台。其典型应用主要是在虚拟现实领域中。通过分布式的处理,单台机只要进行很少的模拟和计算,就可以在整体上实现对一个复杂环境的虚拟。可以说,网格技术对现有网络中已有计算机,通过软件层次上的整合,实现一种硬件层面上的复用,从而充分利用了网络中的闲置资源,实现整体的性能提高,为解决资源需求巨大的问题,提供了一条廉价有效的解决途径。2。4WebService技术WebService技术定义了如何在Internet上实现互操作,拓展了应用程序的功能,实现了软件的动态提供。确切的说,WebService是部署在Web上的对象,它具有对象技术的优点,具有很强的开放性和互操作性。WebService建立在XML为主,开放Web规范技术基础上,能够建立具有良好可互操作的分布式应用程序平台。它具有良好的封装性,松偶合性,标准协议规范,高度可集成性的特征。WebService主要有四个技术:XML,简单对象访问协议SOAP,Web服务描述语言WSDL和统一描述、发现和集成协议UDD。WebService技术通过向外界暴露接口,使其能够通过Internet来进行调用。换句话说,WebService就是一个能够通过接口,在Internet上被调用的应用程序。它答应在Web站点放置可编程元素,使得基于Web的分布式计算和处理得以进行。独立的应用程序部件以一种标准的方式发布到Web站点上,其它Web应用程序可以方便地找到并使用它们,从而协同完成某个功能逻辑。从某种意义上说,webService是由某些企业发布的完成其特定商务需求的应用服务,其它公司或应用软件能够通过Internet来访问并使用这项服务。它为构造一些复杂的功能提供了必要的构件。WebService技术可以说是软件复用技术在网络服务提供上的一个成功应用。通过统一的协议和规范,使得一个功能模块在网络上可以通过接口被多次调用,这样,大大提高了网络服务的开发效率,缩短了开发周期。同时,有利于新技术的快速推广和应用。2。5软件复用技术软件复用技术通过对现有的软件技术和产品重复利用,它充分利用已有的软件开发经验和构件的积累,使得软件的开发不在是从零开始。这样,在软件开发过程当中,就可以充分利用现有的高效的软件模块或产品,避免重复的劳动,而将开发的重点,集中在为实现功能而需要实现的特定模块上。同时,通过,不断的构件积累,从而形成一定规模的构件库,这样,就为软件的流水线开发提供了支持,并且能够方便的利用快速原型法进行软件的需求分析和架构设计。并且,通过对相应模块的更新和改进,就能够很快的实现软件的版本升级。从用户的角度来讲,复用技术有利与减少培训支出,方便用户使用。软件复用技术的优势可归结为:提高生产率、减少维护代价、提高互操作性、支持快速原型、减少培训开销。从现实来看,用友软件公司的成功就是一个很好的例子。正是基于在财务领域多年构件和技术的积累,使得用友公司能够在财务软件领域取得巨大的成功。现在,面向对象技术逐步发展,日益成为软件开发的主流,从而为软件复用技术的发展提供了必要的技术基础。软件复用技术被人们视为解决目前软件危机,提高软件质量,缩短软件开发周期的一个有效途径。3总结在计算机领域中,一直都强调的一种思想是复用的思想。因为计算机发展速度快,更新换代快。尤其是在网络日益流行的今天,依据摩尔定律,CPU性能18个月翻一番,根据光纤定律,骨干网带宽9个月翻一番,而迈特卡尔夫定律预言网络设备增加N倍,其效率提高N2。因而假如能够充分利用现有设备,通过一定的手段,实现资源的整和,将是一个高效快速经济的开发途径。因此,设备程序的复用是一个重要的手段。这也是WebService和集群技术能够得到广泛应用的一个重要原因。现在,网络广泛流行,大量的计算机通过Internet实现了互联,仅中国接入互联网的计算机数量在2005年就达到790万台。可以说网络蕴涵了巨大的资源,换句话说,海量信息,假如能够通过相关的硬件软件系统技术,实现在这样一个海量信息环境下的信息协同,进而实现知识的发现,信息的提取。这将利用以有的技术,实现先进的功能。这也符合人工智能连接主义学派的观点,这也是从更高的一个层面上实现人脑的模拟。并且,在这个系统中,基本的组成单元拥有自己独立的存储系统,在一定程度上实现了对记忆的模拟。通过必要的手段,对已有计算机硬件软件系统进行的复用,实现多机器多系统之间的合作,将是计算机的一个重要发展方向。计算机科学发展至今,其基础已经日趋成熟。我们更多的应该把眼光放在更高的一个层面上,实现在已有的系统——包括软件硬件和系统——的一种复用,从而推动信息的一种复用。这种复用是计算机发展的趋势,其必将导致多台机器的协同,从而实现海量信息环境下的协同。参考文献王文义,张影。构建高性能集群计算机系统的关键技术.郑州工业大学学报,2001,3(1).曾碧卿,陈志刚。服务器集群系统研究。计算机应用研究,2004.3杨艳,唐胜群,张文涛。XMLWeb服务技术探讨。计算机应用研究,2002.4顾宁,刘家茂,柴哓路。WebServices原理与研发实践。北京:机械工业出版社,2006,(1).5孙辉,徐学文。美、欧网格技术发展现状分析与思考。情报理论与实践,2005,(1).7梅宏。软件复用技术研究与应用。2002年中国(南京)软件国际化论坛.6黄允中,顾志松,张世永。网格技术框架的探讨和研究。计算机工程,2003,8,(l3).21世纪计算机技术展望电子计算机的发明是20世纪科学对社会发展最伟大的贡献之一,它大大改变了我们人类工作的方式。计算机的作用在下一个世纪仍然是举足轻重的,因为它不仅将继续改进我们的工作方式和效率,还将给人类的生活质量带来巨大改变。 电子计算机技术可以分为计算机硬件技术、计算机软件技术和计算机应用技术三个领域。本文由于篇幅所限,只讨论计算机硬件技术和软件技术的发展问题。 一、计算机硬件技术 计算机硬件领域主要研究计算机系统结构原理和设备构造技术,面对的问题包括结构、速度、存储、互连、成本和可靠性等。 计算机系统结构本身的发展经历了从机械结构、电子模拟结构、电子数字结构的进化过程。从20世纪40年代开始到现在,电子数字计算机的结构经历了从电子管、晶体管、集成电路、超大规模集成电路等四个阶段的进化。从50年代到70年代,计算机是高级设备,没有经济实力的组织是无法拥有或者使用的。到了80年代,由于微处理器的出现,使得计算机的成本越来越低、应用越来越普及。50年代初计算速度每秒5000次(运算)机器的体积和一座大楼一样大,今天摆在我们办公桌上的普通台式计算机的计算能力大约为每秒5亿次,也就是说相当于50年代10万个大楼组成的计算机的计算能力,目前最好的台式机的计算速度已经达到每秒10亿次。按照著名的摩尔定律(即集成电路的性能每18个月翻一番)计算,今天计算速度为10亿次的计算机,到2010年时的计算速度大约为1280亿次,也就是说到那时5000亿次的计算机用4个台式计算机组合起来就可以了,而今天我们却需要使用大约500个CPU构造一台这样的机器,或者使用500多个台式计算机连接起来。所以每过10年,高性能计算机的计算速度就要增加100倍。也就是说,今天我们研制高性能计算机的计算速度要达到1012(万亿)次,2010年要达到1014次,2020年要达到1016次……2100年要达到1032次。 20世纪的电子计算机按照巨型机、大型机、中型机、小型机、微机(个人计算机)等进行分类。但是巨型、大型等等概念是相对的,是随时间变化而改变的,例如60年代的巨型机并不比80年代的微机计算能力强。今后,计算机将简单的划分为服务器(server)和客户机(client)两类。连接在网上提供计算、数据处理和软件环境支撑的是服务器,而用户直接使用的则是客户机。从技术的走向预测:服务器的能力今后会越来越强,用于科学计算的超级服务器会达到千万亿以上,用于数据处理的超级服务器在数据交换速度和数据仓库的容量和管理能力方面都会比现在的服务器高得多;客户端计算机的发展是越来越智能化(傻瓜化、个性化)、方便化(可移动、嵌入式)。而智能化要求计算机中处理器的性能更强,人工智能技术和软件技术更先进。 目前的计算机是架构在基于微电子理论的半导体技术之上的,计算机硬件的发展主要取决于集成电路技术和工艺的发展。摩尔定律成功地预测了半导体技术发展的规律。然而,随着大规模集成电路工艺的发展,集成度越来越高,越来越接近于工艺甚至物理上限。一般认为,50纳米将是超大规模集成电路生产的工艺较难超越的精度,现在正在使用的最高集成度在180纳米左右,估计到2010年,将达到50纳米。因此,很多科学家开始寻找研究新一代的计算机硬件。超导计算机、生物计算机和量子计算机是诸多探索中被注意的较多的三个方向。超导计算机的主频估计可以在100吉赫兹以上工作,大约2010年可能成为与现在的超大规模集成电路计算机共存的计算机体系结构,因为到那时半导体器件已经达到了工艺极限,摩尔定律或者新的摩尔定律必须要由超导计算机来维持。在超导计算机之后,将可能是基于光学理论的量子计算机的天下,量子计算机被认为极有可能在下一个世纪的头30年取得重大突破,并在2040年前后研制成功可以商业使用的计算机。生物计算机将极有可能是继量子计算机之后的新一代计算机,尽管它的工作机理目前大部分已经清楚,但是何时能够制造出可与今天的计算机在速度、可靠性、成本等方面相匹敌的生物计算机仍然是一个难以预测的问题。 除了计算机单机结构本身的技术,为了构造高性能计算机的并行处理技术和分布式处理技术也是计算机系统结构中研究的重要问题。今天的计算机互连技术已经做到可以把数万台计算机连到一起,组成一台峰值计算速度极高(例如几十万亿次)的计算机,然而如何把这台高性能计算机真正利用起来求解一个大问题还存在许多问题。任务分配不均、通信开销过大、等待前一处理的数据相关性等等都是经常面临的困难。为了解决这些问题,科学家已经研究了近40年,试图从互连技术、快速通信技术、并行编译理论、网络操作系统、优化运行时系统、并行函数库等多方面进行探索。 计算机硬件所包含的范畴除了传统的计算机系统结构外,还包括计算机网络和外设。计算机网络包含Internet,Intranet,Extranet等等。高性能计算机是把互联和通信作为一个中间过程和手段进行使用,但计算机网络却是把互连和通信作为核心技术进行研究。计算机网络研究的问题是所有上网计算机的可靠有效连接和资源共享。IP技术和WEB浏览技术是20世纪计算机网络成功的基石。当然,现在IP技术还存在着没有服务质量控制的问题,WEB浏览技术也存在着信息检索效率低和资源管理困难的问题等。21世纪计算机网络的网络路由设备的心脏实际上也是计算机,只不过是一台专门用来进行网络通信的计算机而已。 打印机、磁带机、绘图仪等也都是专门用来控制特定设备的计算机。 二、计算机软件技术 计算机软件领域主要研究计算机使用环境技术,包括系统软件、用户编程环境与工具、应用软件等等。需要解决的问题包括进化性、兼容性、重用性、友好性、可靠性等等。 如果说硬件是计算机的身体,则软件就是计算机的神经和大脑。因此软件的好坏直接决定了计算机的效率和应用水平。计算机软件作为20世纪人类文明进步的最大成果之一,必将成为人类文化的重要组成部分。现在的人类文化是构筑在语言、文化环境和文化作品的架构上,其中语言是基本的、开放的和共享的,这是人类文明可以不断进化的根本保证。将计算机软件与人类文化相类比,系统软件相当于人类语言,用户编程环境和工具相当于文化环境,而应用软件相当于文化作品。对比之下,计算机的系统软件现在绝大多数还不开放、不共享。从商业的角度看,如果没有商业利益的驱使、初期此领域很难发展起来。但发展到了一定阶段,如果系统软件不开放将会阻碍本领域的发展速度,不利于软件进化。现在的LINUX开放源码运动从某种程度上正是顺应这个潮流,因此可以预见必将最后取得成功。在操作系统方面,本世纪技术上最成功的系统是UNIX,在概念上最成功的是美国苹果公司所提出的视窗图形界面,在商业上最成功的是微软公司的WINDOWS操作系统。下一世纪的操作系统将继承现在好的操作系统的主要优点,变成开放的和进化的。在操作系统开放之后,系统软件产业将主要集中在软件环境平台和工具的研究开发上。可视化编程环境与工具、办公套件、家庭套件、学习套件等将会有很大的发展空间。 计算机硬件发展的速度可以用摩尔定律解释,即每18个月翻一番,软件的发展速度目前还没有类似的定律可以使用。从历史上看,软件在计算机程序设计语言的进化方面大约每10年一代,从本世纪50年代的机器语言、60年代AL�GOL语言、70年代FORTRAN语言、80年代C语言、90年代JAVA语言。由于软件的存在是依附在硬件之上的,而前些年硬件的发展变化很快,因此从旧平台向新平台的软件移植花费了我们大量的财力和时间。这中间有大量的软件由于种种原因无法及时完成移植而没有被继承下来。软件的兼容性和重用性一直是人们努力研究的目标,也就是说要使得一次写好的应用软件在各种不同硬件系统上都可以运行、要使得已经设计好的程序模块被有效地重复利用。在软件的兼容性方面,20世纪贡献最大的工作是JAVA语言的发明,该语言的设计宗旨是“程序书写一次,到处都可运行(write it once,runit everywhere)”。目前跨平台这一设想还没有完全有效地被实现,相信21世纪第一个10年一定可以完成。当然,如何解决非JAVA语言软件的跨平台问题仍然是一个难题。 计算机硬件能够快速发展的原因之一是工业化程度比较好,很多集成电路按照功能做成标准器件,因而好的功能块会保留下来并不断改进。但是到目前为止软件的工业化程度还比较差,还做不到像硬件一样好的程序被继续不断的使用。很多算法和程序被很多人在不同的系统中重复地实现了多次,同样的错误在不同的地方犯了又犯,很有点像古时候没有文字的年代人们传播文化和知识一样,一代一代的口授脑记,绝大部分人用毕生的精力在重复别人已经做过的事,走同样的弯路然后通过自我反省来改正。计算机科学家和软件工程师对于软件重用、软件复用的技术已经研究了几十年。已经提出了包括软件的模块化、软件重用技术、软构件技术、软件总线等等概念。CORBA,DCOM Java Bean等软件体系结构和中间件接口标准技术,是软件重用的很好尝试。目前在因特网上已经开始有一些用JAVA语言和库函数形式提供的软件构件可以提供使用,随着这种软构件的规范化和实用化,计算机软件生产的工业化程度会慢慢提高,软件发展的速度也会慢慢加快。估计到21世纪的第一个10年结束的时候,软件的工业化程度应该达到20世纪90年代中期计算机硬件的工业化程度。 软件的友好性主要取决于用户界面的设计和人机交互流程的质量。界面越吸引人,人机交互流程与人的习惯越接近,软件就越友好。多媒体技术、语音识别与合成技术、手写体文字的识别、自然语言理解与机器翻译技术、图像处理与图形学技术、用户图形界面技术、人工智能技术等等都是解决软件系统友好性的关键技术,然而因为20世纪的计算机在速度和存储容量方面还不能容忍这些技术被广泛应用,所以目前的现状是计算机不够友好。预计在21世纪开始的5一10年中,这一情况将会有大的改变。 软件的质量不高是另外一个制约软件发展的因素。软件生产质量的改进可以从两个方面入手,一是建立软件质量保证体系,通过对软件人员的有效训练和工程管理来减少软件错误;二是发展软件正确性验证和测试技术,利用逻辑证明来发现软件中的矛盾从而找出和自动定位错误。软件质量保证体系的最高目标是编制完全无错误的程序,现阶段的高级目标是一百万行程序中只允许有一行错误。软件质量保证体系能否有效建立主要取决于管理因素,这是21世纪各个国家和地区在计算机软件产业的竞争中成败的关键。软件正确性验证问题可以归结为“布尔表达式可满足性问题”,这是计算机科学中的一个“难解问题”,目前的现状处于采用优化的方法进行快速求解的应用算法学研究阶段。欧洲在航天领域已经开始尝试使用这种技术对于软件进行验证。估计在21世纪第二到第三个10年,软件正确性验证和测试技术将取得重大突破并开始走向实用。届时,软件的工业化程度将达到只落后于计算机硬件1一2年的水平。 应用软件,包括大型科学计算系统、海量数据管理系统、智能决策支持系统、计算机辅助设计、计算机仿真、计算机控制系统等等,在21世纪的社会生活和进步中将发挥更大的作用。利用了WEB浏览技术、多媒体技术和网络信息管理系统等综合技术而构成的网络应用软件(例如电子商务)将是今后软件业发展的最大舞台。其中,作为多媒体研究热点的多媒体数据压缩与传输、数据加密、数字水印技术将是21世纪初发展的重点。与网络应用软件相配合的信息服务,将为我们的社会带来更大的商业机会和更多的就业机会,并通过它慢慢改变社会的就业结构和人类的知识结构比例来拉动21世纪的社会从工业社会向信息社会的逐步转化。
汉字图形窗口界面设计方法及函数编程技巧摘要 该文讨论了汉字图形窗口界面设计的一般方法,给出了窗口生成,窗口管理,菜单生成与管理,鼠标与键盘管理等实现的子函数,并给出了部分C语言源程序。这些函数的组合可以设计出丰富的汉字图形窗口界面。一、图形窗口设计函数主要包括窗口生成与管理函数,如窗口生成,窗口打开,窗口关闭,窗口删除等。窗口结构定义方法typedef struct gwin {int x0,y0,y1; /*窗口位置及大小*/int Border; /*窗口边框类型*/int Wcolor; /*窗口背景颜色*/char Wstate; /*窗口状态标志*/char far *Buffer; /*指向窗口缓冲区指针*/}GWIN;在GWIN中,Border为窗口的边框属性,可以根据不同要求设计出多种边框类型业,以美化窗口界面。窗口子函数窗口生成子函数:Gwin * GwinCreate(x0,y0,x1,y1,border,color)int x0,y0,x1,y1; /*窗口位置及大小*/BorderMode border; /*窗口边框类型*/int color; /*窗口背景颜色*/窗口显示子函数:GwinDisplay(GWIN *w)w为用GwinCreate生成的窗口指针,即此函数画出窗口。窗口打开子函数:GwinOpen(GWIN * w)此函数调用GwinDisplay来显示窗口,并存储屏幕。窗口关闭子函数:GwinClose(GWIN * w)此函数关闭已打开的窗口,恢复屏幕,但此窗口数据还保存,可再次打开。窗口删除子函数:GwinKill(GWIN * w)此窗口彻底清除窗口,不可重新打开。部分程序下面给出实现上述功能的C语言程序/*Windows Create*/#include #include #include #include #include #include #define CR 0x0d#define Esc 0x1b#define Left 0x4b#define Right 0x4d#define Up 0x4d#define Down 0x50#define OPEN 1 /*窗口为打开状态*/#define CLOSE 0 /*窗口为关闭状态*/#define MOUSE 0 /*是否有鼠标移动*//*定义窗口边框类型*/typedef enum {NoBorder,/*普通窗口,系统默认值*/TBorder,/*窗口有凸边框类型*/WBorder,/*窗口有凹边框类型*/TWBorder,/*窗口有凸凹边框类型*/WTBorder,/*窗口有凹凸边框类型*/CBorder,/*窗口有汉字边框类型*/ /*其它窗口类型*/}BorderMode;GWIN * GwinCreate(x0,y0,x1,y1,border,color)int x0,y0,x1,y1;BorderMode border;int color;{GWIN *w;w=malloc(sizeof(GWIN));w->x0=x0;w->y0=y0;w->x1=x1;w->y1=y1;if(border==NoBorder)w->Border=NoBorder;if(border==WBorder)w->Border=WBorder;if(border==TBorder)w->Border=TBorder;if(border==TWBorder)w->Border=TWBorder;if(border==WTBorder)w->Border=WTBorder;if(border==CBorder)w->Border=CBorder;w->Wcoloe=color;w->Buffer=NULL;return(w);}void GwinDisplay(GWIN * w){if(w->Border==NoBorder)DrawGwin(w,NoBorder);if(w->Border==WBorder)DrawGwin(w,WBorder);if(w->Border==TBorder)DrawGwin(w,TBorder);if(w->Border==WTBorder)DrawGwin(w,TWBorder);if(w->Border==TWBorder)DrawGwin(w,TWBorder);if(w->Border==CBorder)DrawGwin(w,CBorder);}void GwinOpen(GWIN * w){if(w->Wstate==OPEN)return 0;w->Buffer=(char far *)malloc((unsigned int))-imagesize(w->x0,w->y0,w->x1,w->y1)-getimage(w->x0,w->y0,w->x1,w->y1,w->Buffer);w->Wstate=OPEN;GwinDisplay(w);}void GwinClose(GWIN * w){if(w->Wstate==CLOSE)return 0;-putimage(w->x0,w->y0,w->Buffer,-GPSET);free((char far *) w->Buffer);w->Wstate=COLSE;}void GwinKill(GWIN * w){if(w->Wstate==OPEN)GwinClose(w);free(w);}二、菜单窗口界面生成与管理子函数菜单结构定义说明typedef struct gmenu{GWIN * w; /*含有菜单的窗口*/char * * chstring;/*菜单中汉字串指针*/int xnum;/*水平方向菜单分布项*/int ynum;/*垂直方向菜单分布项*/int hzcolor/*汉字颜色*/int mnow /*光标位置*/int mtotal/*菜单总个数*/}GMENU;菜单生成与管理子函数菜单生成子函数:GMENU * MenuCreate(x,y,xnum,ynum,border,hzcolor,bcolor,chstring)int x,y;/*菜单左上角位置*/int xnum,ynum;/*菜单在X,Y方向个数*/BorderMode border;/*菜单边框类型*/int hzcolor; /*汉字颜色*/int bcolor; /*菜单背景颜色*/char * * chstring; /*汉字串*/菜单打开子函数:MenuOpen(GMENU * m)m为用MenuGreate生成的菜单直针。菜单驱动子函数:MenuDrive(GMENU * m)此函数提供用鼠标或键盘选择菜单项的方法。菜单关闭子函数:MenuClose(GMENU *m)此函数关闭已打开的菜单,恢复屏幕,但此菜单数据还保存,可再次打开。菜单删除子函数:MenuKill(GMENU * m)此菜单被彻底清除,不可重新打开。实现上述功能子函数的源程序代码GMENU * MenuCreate(x,y,xnum,ynum,border,hzcolor,bcolor,chstring)int x,y,xnum,ynum;BorderMode border;int hzcolor,bcolor;char * * chstring;{GWIN *w,GMENU *m;m=malloc(sizeof(GMENU));m->=chstring=chstring;m->=xnum=xnum;m->=ynum=ynum;m->=hzcolor=hzcolor;m->=mnow=1m->=mtotal=Number_of_Menu(m->=chstring);w=(GWIN *)GwinCreate(x,y,x+xnum * Longest(chstring),y+(ynum-1)+C0,border,bcolor);m->=w=wreturn m;}其中,Number_of_Menu(string)为求串中菜单项个数的函数,Longest(string)为求串中最长项长度的函数。其它子函数可参照窗口函数设计出,此处限于篇幅,不再给出。三、下拉式菜单设计方法有了第一,第二节的窗口设计及菜单设计函数,可以很方便的定义出下拉式及弹出式菜单,菜单可以层层嵌套,主子关系及热键可以自由定义,有了窗口及菜单函数,可以组合设计出风格迥异的应用程序界面。本节的子函数包括:根菜单生成(主菜单)、下拉式菜单生成、菜单连接、菜单初始化、菜单驱动、菜单关闭、菜单删除。下拉式菜单结构定义方法typedef struct pmenu{GMENU * m;/*定义菜单*/int pstate; /*下拉式菜单状态*/int pid; /*菜单标识码*/struct pmenu *Father; /*定义父菜单*/struct pmenu *Son /*定义子菜单*/char hotkey[MaxSon+1];/*定义热键*/}PMENU;下拉式菜单生成与管理子函数根菜单生成子函数:PMENU *Proot(pid,x,y,border,hzcolor,bcolor,chstring)int pid;/*根菜单标识码,一般为000*/int x,y;/*菜单在X,Y方向个数*/BorderMode border;/*菜单边框类型*/int hzcolor;/*汉字颜色*/int bcolor;/*菜单背景颜色*/char * * chstring;/*汉字串*/下拉式菜单生成子函数:PMENU *Pcreate(pid,x,y,border,hzcolor bcolor,chstring参数含义同上,pid值一般取为100,200,300等,利用此函数可生成普通弹出式菜单。菜单连接子函数:void Plink(PMENU * p1,int n,PMENU * p2)此函数建立两个菜单p1,p2之间的主次关系,p1为父菜单,p2为子菜单,执行此菜单,则把p2挂在了p1的第n个菜单项上。下拉式菜单初始化子函数:Pint();菜单关闭子函数:Pclose();菜单删除子函数:Pkill();菜单中定义热键子函数:HotKey(PMENU *p1,int n,int Vascii);PMENU *p1;/*下拉式菜单p1*/int n;/*菜单p1中菜单个数*/int Vascii;/*定义热键的ASCII码值*/利用此函数可定义弹出式菜单p1中任意项n的键盘热键,该键的ASCII码值为Vascii。实现上述功能子函数的源程序代码PMENU *RP,*CP;pmenu * Proot(pid,x,y,border,hzcolor,bcolor,chstring)int pid,x,y;BorderMode border;int hzcolor,bcolor;char * * chstring;{PMENU *p;int i;RP=CP=malloc(sizeof(PMENU));p->pstate=CLOSE;p->pid=pid;p->m=MenuCreate(x,y,Num_of_Menu(chstring),1,border,hzcolor,bcolor,chstring);p->father=NULL;for(i=1;iSon[i]=NULL;p->hotkey[i]=0;}return(p);}void Plink(PMENU *p1,int n,PMENU *p2){p1-Son[n]=p2;p2->Father=p1;}其它子函数可参照菜单函数设计出,此处限于篇幅,不再给出。四、其它辅助函数计算菜单项个数的函数int Number_Of_Menu(char * * chstring){int i;for(i=0;chstring[i]!=NULL;i++);return(i);}键盘与鼠标处理子函数int Get_Key_Mouse(int *x,int *y)此函数用来同时接收键盘及鼠标,有按键时返回该键的ASCII码,有鼠标操作时返回鼠标的X,Y座标,提供给程序作处理。仅供参考,请自借鉴。希望对您有帮助。
我们有本科专业,也有专科。从就业的角度出发,也可以考虑学一门实用的技术,其实计算机专业就是很好的,比如ui设计、4G移动开发、互联网编程、大数据、云计算、VR等等就业前景都挺好。看自己的兴趣和未来的发展方向, 然后选择就行