




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 Visual C+环境及其应用 软件开发一般是在某个操作系统平台之上进行的,平台提供了大量应用工具,这些工具为编程提供了极大的便利,使得编出的应用系统大为丰富。有使用方便、清新悦目的用户界面;有计算结果的各种表达:表格、表单、图符、图像、图形、动画,甚至音频、视频等。几十年来,各种支持应用的工具软件形成了当今计算机的应用文化。对应用开发者而言,开发的应用程序也必须适应这种文化,而不单是编写核心计算的程序。进行人机界面的设计时,要充分利用平台提供的测试、部署、通信、安装工具加速应用开发,并使开发的应用(程序)系统与各厂商提供的应用软件风格相似。本章主要介绍程序开发环境。 4.1 应用(程序)系统的体系结构一个应用(程序)系统总是由多个程序模块组成。过程式编程是函数/子例程、数据块;面向对象是类、包;基于构件编程是接口类、构件、连接件。为了功能全、少编程,它们往往是共享的,能重用就重用。而且大量重用经过实用考验的模块,应用程序更可靠。模块的相互联系就形成体系结构(Architecture),就如同一个房子规定了它各个构件的位置,它们共同表现出这个房子的使用性能。一般应用(程序)系统的体系结构如图4.1所示。从逻辑上讲现代应用程序必须有为用户服务的模块,图中以小方块表示交互的用户输入和输出显示、报表软硬拷贝、保存文件、入库、安装等。第二部分是业务服务模块,图中以小三角表示,即常说的这个(软件)程序该做什么核心计算。可以是实现某个业务流程的各个模块,如民航订票系统的查询、订票、收费、出票各功能模块。也可以是解决科学计算的高阶微分方程数值解的程序模块。第三部分是数据服务的模块,图中以小圆圈表示。它是与数据库交互的模块。这里的数据库是广义的,包括文件库。有些专用的科学计算的数据并不一定与其他应用有共享需求,作为文件保存为永久性数据,也叫入数据库。但此时数据服务十分简单。图中两个应用Application1和Application2共享若干模块,也有为自己开发的模块。在这三层的应用模型中,用户服务、数据服务比较规范。软件制造商提供大量工具,用户只需在给定的模块框架中设置选项,输入数据,程序就开发完了。而业务服务一般是要新开发的,当然,可以用到已有的模块。对于简单的应用,软件制造商提供大量应用软件,第二层也可不必“开发”,或作少量定制连接,应用程序就“开发”完成了。4.2 图形用户界面图形用户界面(GUI)是用户使用终端键盘、鼠标操纵计算机的工作界面,是基于行编辑器的正文界面的后继,最早在面向对象系统Smalltalk-80(1980)中出现,1984年苹果公司引入超正文(Hypertext)连接技术在Macintosh的操作系统上实现。随着多媒体技术在面向对象系统的推动下大力发展,各个公司都提供了大致相同的图形界面。随着Windows操作系统的出现,微软公司把GUI做成集成开发环境(IDE)的一部分。以面向对象的观点来看待各种计算资源(包括图形用户界面),系统内部以面向对象编程实现。所以,一些面向对象的术语自然成为GUI使用者必备的知识。4.2.1 GUI的诸元素及其实现GUI就是让用户通过鼠标方便地使用各种资源,各种资源以窗口(Window)、图符、图标(icon)、正文的形式展现在屏幕上。本节无意重复在计算机文化课中已学过的GUI的简单概念,而是在学过面向对象之后,再用对象重新解释它。从面向对象的观点来看,GUI中的所有元素均为对象。每类对象均有自己的属性和方法,其中的一些方法是事件。事件是对象与外界的偶发的交互。一旦交互响应了事件,也可能触发另一些事件。 鼠标鼠标器与光标相对应,鼠标器的移动与光标在屏幕上移动对应。鼠标器上有左键、右键、滚轮,可做的操作是:Point 移光标到某点Click 单击(表示要使用光标当前位置上的对象)Double-click 双击(使用较大对象或按规定)Drag 拖拽光标通常有以下四种形状:一般的连接的正忙的不可用软件开发商和用户可以自定义光标。键盘键盘用于向图形用户界面输入正文信息。键盘利用快捷键、组合键可以操纵光标代替鼠标的工作。按钮屏幕上显示出的矩形按钮。它上面一般有文字和图标。按钮对象可以产生一些事件,这些事件一般是由用户通过操作键盘或鼠标来触发的。常用的事件有:LButtonDown(用户在鼠标光标在按钮上时按下了鼠标左键)、KeyDown(当按钮处于可捕获用户输入状态时,用户敲下了键盘上的某键)等。按钮总在某一窗口中,这些事件可以被这个窗口对应的窗口对象捕获。如果窗口对象对这些事件感兴趣,可以“告诉”按钮,并提供响应事件的方法。这些方法是窗口对象的方法,但在事件发生时由按钮调用。图符与图标以形象化的微小图形代表某个操作、某个对象、某个子系统、某个项目。和按钮类似,图符和图标也能产生事件,如LButtonDown、DoubleClick(用户移动鼠标光标到其上并双击左键)。图符和图标所在的窗口对应的窗口对象可以响应这些事件,在事件发生时可以执行一些操作。窗体窗体是屏幕上的一个矩形区域。为了操作窗体本身,在顶上设有标题(Title)栏,显示窗体名(通常是该窗体代表的程序或程序块名)和类型。标题栏左端是该窗体的控制菜单图标,右端是最大化(还原)、最小化、关闭窗体的按钮(button)。标题栏下是菜单栏。菜单栏中列表的菜单名是本窗体允许的操作,这些菜单名中的一个一旦被选中,立即弹出其下拉菜单(如果有的话),让用户选择更具体的操作。下拉菜单也对应着对象,显示下拉菜单时实际上是菜单栏对象调用下拉菜单对象显示自己的方法。菜单栏下是工具栏。工具栏中图标按钮是对应于该应用程序的常用命令的快捷访问方式。一个工具栏上可以有多个按钮,因此一个工具栏对象可以对应多个按钮对象。工具栏下是工作空间。在工作空间中,程序员可以在打开的窗口中显示文档、编程、测试工作空间的最下方是状态栏,显示该窗体信息的各种按钮(因应用不同显示的信息各不相同,按钮的语义也不同)。窗体的最外侧(上或下,左或右)设有滚动条,可以使工作空间中的内容上、下或左右滚动。菜单菜单是一矩形列表。列出对菜单所属窗体的操作,因此菜单也是方法集。一旦选定某项,菜单对象将调用窗体对象响应这个选中事件的方法,即执行某操作。每个选项又可以有子菜单,子菜单也是对象。当选项后有时,选定此项则会在屏幕上弹出对话框。各种框(box)不同用途的子窗口,根据需要弹出。一般有标题和窗口的关闭按钮。有正文框、检查框、对话框或用户设计的各种功能框。一般在窗体的工作空间中定义数据类型与编写操作这些数据的子例程或函数,就是为所打开的窗体类添加属性和方法。打开的窗体有一些已有的属性和方法,是父类的成员。在窗体中添加属性和方法实际上是在写派生类。还可以设置GUI元素的属性值,这就相当于GUI元素所对应的类进行实例化。例如CommandButton(命令按钮类)有属性Name、Caption,设置为cmdClose,Close之后得到CommandButton的一个实例对象cmdClose。Name的值实际上就是这个实例对象的变量名,以后就可以通过cmdClose来引用这个对象。上述的窗体中有标题栏、菜单栏、工具栏、滚动条、图标等,都是被嵌入的对象。 4.2.2 VC+平台界面启动VC+ 6.0中文版以后,屏幕上显示如图4.2所示的开发环境。开发环境界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口及状态栏组成。每个窗口左上角均有最小化、最大化(还原)和关闭按钮。各类窗口相互独立,可进行打开、关闭、移动、极大、极小化控制以及改变窗口大小。 标题栏:项目名称及一些功能按钮。图 4.3 标题栏菜单栏:菜单栏包括了开发环境中几乎所有的命令图 4.4菜单栏工具栏:工具栏包括一些菜单栏上的命令,可以更方便快捷地使用图 4.5工具栏项目工作区窗口:项目工作区窗口包含用户项目的一些信息:类、资源以及文档等。它是VC+开发环境的最主要组成部分,编程的大部分工作都在项目工作区完成。项目工作区用来组织项目、文件和项目信息,它可以处理一个或多个工程所包含的文件及其子工程。一个项目工作区可以包含由不同的开发软件生成的工程,它以窗口的方式组织项目,文件和项目设置。用户可以双击相关项目打开相应的编辑器进行编辑。如:打开文本编辑器编辑类和源程序;打开对话框编辑器编辑对话框。项目工作区包含三种视图:类视图,资源视图,文件视图 (1)类视图(ClassView):该视图显示项目中定义的C+类,VC+可以自动从项目工作区报好的源程序中提取出类。类视图可以察看工程中定义的所有类,以及类的数据成员和成员函数。双击相应的项目可以进入该类的代码编辑。右键单击某个类名或成员选择快捷菜单可以对该类数据成员或成员函数进行浏览、添加、删除等操作。(2)资源视图(ResourceView):资源视图可以显示项目包含的所有资源文件。在VC+中资源一共有七类:快捷键列表(Accelera tor)、对话框(Dialog)、图标(Icon)、菜单(Menu)、字符串列表(String Table)、工具栏(Toolbar)、版本(Version)。双击相应的资源即可打开相应的资源编辑器进行编辑。(3)文件视图(FileView):文件视图显示了所创建的工程中所有的文件。使用文件视图可以查看管理工程中的文件。但在文件视图中文件是以其逻辑关系组织起来的。其中VC的主要文件类型有:*.dsw(工作区文件)、*.dsp(项目文件)、*.CLW(含有ClassWizard编辑现有类或增加类的信息文件)、*.h(工程的头文件)、*.ccp(工程的源文件)、*.rc(项目的资源文件)。打开一个工程只需打开该工程的*.dsp文件即可。文档窗口:文档窗口显示源文件、资源文件、文档文件的程序代码。图 4.9文档窗口输出窗口:输出窗口包括了编译、连接、调试等输出信息。图 4.10输出窗口4.3 Windows编程环境构件与控件编程环境广义上要包括硬件和软件。在这里要讨论的是操作系统之上的与编程有关的软件,如编辑器、编译器、链接器、代码执行器、调试器,直接支持编程的程序包(类库)、图形多媒体包、网络编程接口包等,以及各种支持应用程序开发的工具(如项目管理、各种GUI元素生成、数据交换与共享、线程管理等)。这些软件可以分为三类。第一类是支持从编写程序源代码开始到调试运行完毕的工具,这是历来就有的。但在早期,这些工具是孤立的命令,程序员只能是执行完一个后再执行下一个,如先调用编译命令编译源程序,然后调用链接命令链接目标代码如果想中途切换(如调试器发现错误后调用编辑器让程序员修改后再编译)是不可能的。而集成开发环境(IDE)就可以做到在需要时切换,这提高了程序的开发效率。第二类在早期是函数包、链接库等,可重用性弱,而在当今是构件,可以高度重用,构件将对外提供的功能封装成接口(Interface)。在编程使用构件时只要知道构件的接口,知道构件提供的功能并通过接口使用构件,而无需关心构件的具体实现(如构件由什么语言开发,构件是处于本地还是远端等),因此,构件具有高度可重用性。目前VC和许多厂商提供了大量的能提供各种功能的构件,这为编写程序提供了很大的方便。当大量使用现成的构件时,实际上是在构造程序,而不是传统编程方法中的从头到尾地编写代码了。由于构件数量极大,快速查找和正确引用是IDE的重要问题。第三类是多媒体技术,图形工作界面出现之后的产物在用户界面上的作为GUI元素的工作软件。微软把在窗体上和用户交互的GUI元素对应的软件叫控件(Control)。控件也是构件的一种,在编程时也是通过控件的接口来操纵控件。 集成的开发环境(IDE)一个操作系统上支持编程的工具(第一类软件)越多,编程就越方便。但如果这些工具之间是孤立的,程序员要忙死,不是丢三落四就是搭配错误。因此,必须把它们集成起来,统一管理、正确使用。一个工具就是一个程序块,加工输入数据和输出结果数据。所以,首先要数据集成,即工具要识别数据类型、格式和存放在什么地方。第二是控制集成。工具是由IDE调用的,因此,它必须有规范的接口,并且各工具有良好的框架才能便于切换和自如地控制。集成框架(Framework)如同多头插座,第三方研制的工具如果能插上也能使用。面向对象的对象模型是最好的框架,它封装了数据和操作,更便于管理。当今集成环境都是基于对象或面向对象的。第三是界面集成,这是最重要的。用户在统一界面上可以任意地使用所有的工具(构件块或对象)。对于用户而言,他所看到的IDE环境就是集成界面(当今是GUI)上提供的所有可能的操作和功能。其他集成元件只要按该平台的约定安装并设置参数使用或撤销,就能自动实现界面的功能,用户不必关心其实现细节。 Visual Studio和.Net平台Windows编程环境的核心是Visual Studio。它是Windows操作系统之上的应用开发工具集,也是用不同编程语言开发的用户共享Windows开发资源的平台。每种编程语言都有大同小异的工作界面。一旦编辑、编译了该语言的源程序后,其中间代码的执行支持是一样的。Visual Studio将许多保证程序正确、重用、安全的开发技术做成控件和构件集成到该语言的界面上,如与设备无关的位图操作DDB、开放式数据库连接ODBC、动态链接库DLL、多线程、套接字Socket、对象的嵌入和链接OLE等。每当Visual Studio有了新功能,有了新版本,其各语言都升级成新版本。目前是 6.0版,如VB 6.0,VC+ 6.0。进一步的集成和统一导致了新一代平台诞生。.Net平台以统一的中间代码和公共语言实现了运行时与语言无关的Windows平台上所有资源的完全共享。本章以VC+ 6.0开发平台介绍VC+程序的开发过程。4.4 Windows环境下的VC+编程VC+是一个在Windows环境下的程序开发工具,它利用面向对象的概念巧妙地屏蔽了Windows环境下程序设计的复杂性,使Windows程序设计变得简单、方便、快捷。VC+基于面行对象与过程的结构化的C+语言和一系列的可视化的窗口设计工具,提供了窗口、菜单、按钮、对话框、消息框、滚动条等Windows程序的标准界面对象,提供了一整套可视化设计工具,使程序设计人员很容易在较短的时间内,设计出十分复杂的窗口界面。此外,VC+也是首批采用事件驱动的程序设计机制的程序设计语言之一。从微软公司1991年推出VB 1.0版到目前为止,已推出6个版本。 4.4.1 VC+程序设计的特点 VC+是可视化的、面向对象的、采用事件驱动方式的结构化的Windows应用开发工具。利用其事件驱动的编程机制、新颖易用的可视化设计工具,并使用Windows应用程序接口(API)函数,采用动态链接库(DLL)、对象的链接与嵌入(OLE)以及开放式数据库访问(ODBC)等技术,可以高效、快速地建造出Windows环境下功能强大、图形界面丰富的应用软件系统。MFC应用程序以往的Windows应用程序开发工具在设计图形用户界面时,都是直接采用程序来实现的。一个大型应用程序大概有90%的程序代码用来处理用户界面,只有10%的程序才是真正用来实现应用程序功能的,而且在程序设计过程中看不到界面显示的效果,只有在程序执行时才能观察到,当界面效果不佳时还需要回到程序中去修改。MFC(Microsoft Foundation Class)是由微软编写的一套专门用于Windows编程的基础类库,它的类可以处理许多标准的Windows编程任务。借助AppWizard可以创建非常灵活的应用程序框架,使开发者摆脱那些每次都必写的基本代码。程序员的编程工作仅需要写出功能实现的那部分代码。这样可以大幅度提高程序设计的效率。基于对象的程序设计思想和其他的面向对象的程序设计语言(如C+)一样,VC+也允许程序设计人员定义自己的类来对数据进行封装。此外,VC+还支持接口(抽象类),因此,也使VC+程序可具有多态性。在一般面向对象的程序设计语言中,对象是由程序码和数据组成的,是抽象的概念,而在VC+中,VB自己把程序和数据封装起来成为一个个对象,并为每个对象赋予各种属性,使对象成为实在的东西,程序设计人员在设计时无需编写每个对象的创建和描述程序代码,只管直接使用即可。程序设计人员所要做的仅是编写针对某个事件的功能程序。从上面可以看出,VC+的基于对象的程序设计具有灵活、简便、高效的特点。程序设计人员即可以编写自己的类然后实例化成对象,也可以直接使用VC+封装好的对象,即MFC中的对象类。事件驱动的编程机制VC+程序中对象与程序的交互是通过事件来实现的。针对每个对象,可能会有多种事件产生,每个事件都能驱动一段程序运行,完成相应的工作。如按钮(Button)是对象,用户用鼠标单击一个按钮(Click)就会产生一个事件,响应此事件的程序代码,放在Button_Click函数中,单击按钮就可得到需要的功能。对于大型的Windows应用程序,用VC+编程,无需构造一个完整的具有明显开始和结束的大型程序(VB程序中没有明显的主程序),而只需创建若干个较小的子程序,这些子程序均对应某个对象,由用户操作引发的事件来驱动完成某种特定功能,或是由事件驱动程序调用完成某功能的公共子模块程序。程序设计人员可以方便地设计功能强大的Windows应用程序,提高工作效率。方便、易用VC+是一种高级语言,它具有其他高级语言所具有的优秀特性:结构化的程序设计、接近于人类的语言和逻辑思维方式、语句简单易懂等。此外,VC+还具有支持巨型数组、长字符串、动态数组等优良特性。VC+程序编辑器还支持彩色代码,可用于句法错误检查、判别标识符和断点。VC+还具有功能强大而且灵活的调试器和编译器。VC+是解释性语言,在编写代码的同时,解释程序将高级语言分解成计算机能识别的机器指令,并判断语句的语法错误。VC+程序随时可以运行,而且在整个应用程序调试好以后可编译生成具有.EXE扩展名的可执行文件,使得用VC+语言开发的Windows应用程序可脱离VC+环境,直接在Windows环境下运行。 数据库访问功能VC+系统本身提供了非常好的数据库管理功能,利用数据库管理窗口,用户可直接创建Access数据库,还可直接编辑和访问其他外部数据库,如FoxPro、dBASE、FoxBase等。VB还提供了开放式数据库访问功能,可通过VB提供的数据库访问对象直接访问外部数据库,还可以通过ODBC建立连接的方式来使用和操纵外部数据库,如SQLServer、Oracle、Sybase等。4.4.2 消息和事件驱动 上面在介绍VC+语言特点的时候,谈到了消息和事件驱动的概念,下面对这两个概念作一介绍。Windows应用程序设计的最大特点就是消息处理。所有的Windows应用程序都是基于消息的传递和处理的,每一个Windows程序都要求一个消息循环,应用程序中的每一个窗口都要求有一个消息处理器。不论什么时候,只要出现了一个事件,Windows系统就会产生一条消息。例如用户移动鼠标,Windows系统就产生一条消息告诉相应的应用程序:鼠标已经移动了,移动到了什么地方。因此,Windows应用程序设计的核心就是传送消息、读入消息、处理消息。Windows系统是多任务系统,如果一个程序有消息要处理,它就占用CPU处理消息,如果一个程序不再有要处理的消息,系统就询问其他正在运行的程序是否有消息要处理,并把控制权交给要处理消息的应用程序。Windows应用程序都按这种“接力棒”的方式构造,如果一个程序不这样构造,它可能也能运行,但其他的程序可能就不能同时运行了。这种消息机制,就是所谓的事件驱动。Windows的消息处理机制使得不能再使用以前的思路来设计Windows程序。以前的程序员大多习惯于以顺序、过程驱动的方式来编写程序。这种基于过程的程序往往要有一个开始部分、中间处理过程及结束代码。在一个过程化的程序中,程序员通过以特定顺序提示用户输入信息来线性地控制程序活动。例如程序提示用户选择某种数据或输入数据。当用户输入所需的数据之后,程序就开始运行并把结果返回给用户。一个典型的过程化的程序是一个在必要时调用子程序的大程序。然而,Windows应用程序的开发则完全不是这样,用户通过激发某些事件,如移动鼠标等来控制程序的运行。事件驱动程序比传统的基于过程的更具有易于使用、用户界面友好等优点。它们的比较如图4.11所示:4.5 创建V C+应用程序的步骤创建一个VC+应用程序的过程可分为7个步骤:创建项目使用Files菜单下的“New”项,会弹出一个New的对话框,选中Projects选项卡,对话框会列出一系列可以创建的项目类型(见图4.),下列出部分常用类型:ATL COM AppWizard(创建ATL应用程序)Custom AppWizard(创建自定义的应用程序)Database Project(创建数据库)DevStudio Add-in Wizard(创建自定义宏)ISAPI Extension Wizard(创建Internet服务器或过滤器)Makefile(创建Make文件)MFC AppWizard(dll)(创建MFC动态链接库)MFC AppWizard(exe)(创建MFC可执行程序)MFC AxtiveX ControlWizard(创建MFC控件程序)Win32 Dynamic Link Library(创建Win32动态链接库)Win32 Application(创建Win32程序)Win32 Console Application(创建Win32控制台程序) 点选要创建的项目类型,然后在右边的Location框中输入要保存的路径,在Project Name框中输入项目的名字,点击OK,会弹出创建项目向导,可以根据提示选取要创建的项目的细节。最后点Finish按钮。VC+会列出一个将要创建的项目的信息(见图4.13 ),这时点OK按钮VC+就会自动创建该项目的界面窗口、对话框等的编码文件。编制程序在按需求建立项目之后,应添加资源,设置资源属性,定义类文件,编写函数代码,以及响应事件时所要执行的代码。编码时可以直接点击项目工作区的相应项目进行编辑。在类视图下可以点击类跳转到源文件相应的行编辑类以及其成员信息。或在资源视图下直接双击相应对象编辑。保存项目当创建项目时,VC+会自动生成项目文件。在增加代码时要经常保存项目。保存项目应选File菜单上的Save命令进行保存。有时编码程序时可能会同时改动多个文件这时应注意将改动的文件分别保存或者用File菜单上的Save all命令保存。建立程序建立程序包括:编译,链接和运行程序。这行操作可以在快捷栏上用快捷按钮完成。向项目增加代码时,可以建立程序来检查错误和修改代码。图4.14 程序快捷栏(1)编译(Compile)编译是将单个文件生成*.obj文件供链使用同时以检查程序有无错误。可以单击快捷栏上的编译按钮进行编译。(2)链接(Build)链接是将程序连接生成*.exe文件,以便直接运行。可以单击快捷栏上的链接按钮进行链接。(3)执行(Execute)执行是运行工程查看结果。可以单击快捷栏上的执行按钮执行程序。注意:编译和链接会在文件目录中的Debug目录中生成可执行文件以及与其相关的链接文件。可直接双击该目录下的*.exe文件运行程序。 创建安装应用程序因为可执行文件依赖于其他文件,例如与应用程序相关的链接文件*.obj,所以应该使用Setup Wizard创建安装程序,这可以确保将要发布的应用程序拥有运行需要的所有文件。一个大型应用程序可包括多个窗口,每个窗口均有自己所对应的属性和窗口代码与函数,并且每个窗体自动存于当前项目的项目窗口中。通过打开项目按钮或VB菜单项中Project命令可打开项目窗口,其文件列表框中列出该项目中所有窗体文件。用建立新模块按钮打开模块代码窗口,编写各模块程序及各种公共变量的声明,模块名称存于相应项目窗口中。每创建一个新的窗体和模块,便在当前项目窗口中产生一个相应的文件。可通过项目窗口中的View Form和View Code切换该项目中各窗体窗口和代码窗口。工具箱中工具的增减可通过对项目窗口中.VBX文件的增加或删除来实现。如果要把某个项目中的窗体或模块装到当前项目中,仅需在项目窗口中用File菜单下的Add File命令将相应文件加入项目窗口中即可。 4.6 应用程序举例 前面几章,介绍了程序设计语言、程序设计的基础算法和数据结构、程序设计的方法以及软件工程的概念。本节将使用VC+语言,结合上述的知识,开发一个学生的学习成绩管理系统。VC+是基于对象的编程语言,因此,这里将采用面向对象的开发方法来实现这个系统。 4.6.1 问题的描述目标:设计一个学生的试卷分析系统。学期结束后,一些课程会有考试,任课教师将每个班学生的课程的卷面成绩送到系里,假设教师采用的是统一的数据文件格式,见表4.1。试卷分析系统自动将所有课的卷面成绩数据文件读入,并将成绩存放到对应学生的学生考试成绩表中,当所有学生课程卷面成绩统计完毕后,可以算出该次测试的平均分及成绩分布,并可以绘制成绩分布图,按照要求显示该成绩表,按成绩进行名次排列,查询某个学生的成绩,打印名次排列表,打印需补考的学生姓名。 4.6.2 需求分析拿到项目需求后,首先要做需求分析。需求分析的产品是需求规范文档和用例图。需求分析不是本章的重点,这里不做详细介绍。对于这个学生成绩管理系统来说,需求规范文档应该包括: 这是一个学生试卷分析系统; 每个学生有姓名和惟一的学号; 管理员是系统的操作员,他的工作就是和老师或学生打交道并在系统的支持下工作; 系统将老师提供的课程成绩文件导入,生成成绩表。成绩表包括每个学生该门课的成绩。 按分数段统计学生成绩,分为90以上,8089,7079,6069,60以下。系统可以按分数段绘制成绩分布图 系统可以根据学生的成绩进行名次排列; 系统可以查询有不及格的学生成绩表; 系统有一个友好的图形用户界面(GUI)。根据需求规范,学生成绩管理系统中的用例有:1成绩文件导入2名次排序3不及格学生成绩查询对上面的用例进行分析,可以画出用例图。4.6.3 设计需求分析主要解决一个“做什么”的问题,而设计过程要解决的是“如何做”的问题。设计的目的是指定一个可行的解决方案,以便能很容易地转变成编程代码。设计可以分为两个阶段:体系结构设计阶段(Architecture Design)和详细设计阶段(Detailed Design)。第一个阶段是从较高层次进行设计,用来定义子系统,描述子系统之间地依赖关系和通信机制。限于篇幅,这里不做介绍。在第二阶段,所有的类都详尽地进行描述,给编写代码的程序员一个清晰的规范说明。这一阶段的最终产物是类图,详细定义了系统中类和它们之间的关系。设计不是本章的重点,这里不再进一步讨论,这里直接给出类图。 4.6.4 界面设计 以上讨论了“学生试卷分析系统”的实现,但还不够。为了使用户更方便、简单地使用“学生试卷分析系统”系统,还要为用户设计良好的用户界面。根据“学生试卷分析系统”的功能及实现要求,可利用Visual C+ 设计一个窗口环境,利用窗口环境自身的特性,通过菜单、对话框、提示框方便用户的操作。VC+设计是一种基于对象的可视化程序设计语言,VC+程序设计分为界面设计与代码设计两部分,这两部分是相互联系的。在VC+中,每个界面对应一个窗口,一个程序根据实际需要可以有多个界面,因此也就存在多个窗口。界面设计无需编写任何程序代码,仅需要在窗口中使用工具进行制作即可。界面设计好后,必须为每个对象(窗口中的工具及其控件的总称)设置属性,并对各个对象编写相应的程序代码,以便用户操纵对象时,产生所希望的动作。图4.14 InputBox数据输入方法与用户交互意味着数据的输入与结果的输出。输入越简单越方便越好,同时还要使输入的所有数据便于检查及修改。输出则越直观越好。 对于数据的输入,VC+提供了若干方法:比如通过对话框中的编辑框(Edit Box),命令按钮(Button),单选按钮(Radio Button)列表框(List Box)滑尺(Slider)等控件进行输入。使用InputBox方法,一次要弹出一个对话框,而且只能输入一个数据,对于前面已输入的数据不能进行修改和查看;而第二种方法呢,则属于交互性输入,便于检查和修改。根据它们的特点,可以用InputBox输入必修课的数目,而用TextBox输入必修课考试成绩的数据文件。图4.14和图4.15分别是InputBox与TextBox两种数据输入方法,可以做一对比。其中在图4.15中,为了方便用户进行数据文件名的输入,还提供了驱动器、目录及文件列表。对于“学生成绩管理系统”的输出,可以直观的列表形式在窗口中给出,见图4.16所示。图4.16给出了“学生成绩管理系统”的功能菜单和输出示例。用户可以使用菜单进行操作。4.6.5 实现前面按照软件工程的步骤一步步进行的:在对需求分析的基础上给出了用例图,然后是设计,给出了类图,最后是界面设计(包括输入界面和输出界面)。这样就把问题完全搞清楚了,就可以坐在计算机面前,正式开始编程序了。这里按照4.5节(“创建VC+应用程序步骤”)中介绍的创建VC+应用程序的7个步骤来编写这个程序。创建用户界面首先使用文件菜单下的“New”项,创建一个新的MFC可执行程序文件(MFC AppWizard(exe),并将项目的名称设置为“学生试卷分析系统”。并根据MFC可执行程序创建项目向导的提示创建该项目。“学生试卷分析系统”有一个主窗口。见图4.16用于结果的输出两个窗体,窗体一是程序运行后的主窗口,用于结果的输出;窗体二用于输入数据文件名,见图4.15。窗体一内没有控件对象,窗体二内包含一个将数据输入区包括起来的框架(Frame);一个驱动器列表框(DriveListBox);一个目录列表框(DirListBox);一个文件列表框(FileListBox);七个用于数据输入提示的标签(Lable) ;七个输入文件名显示的文本框(TextBox)以及用于确认输入操作的命令按钮(Command Button)。除了窗体二中的这些对象外,窗体一内还有一个菜单项,菜单项的选项对应实例所提供给用户的功能。“学生成绩管理系统”中有一个“操作”菜单项,在这个菜单项下有六个选项:“重新操作”、“成绩表显示”、“名次排列”、“不及格名单”、“成绩查询”以及“退出”,其菜单设计窗口见图4.17。设置界面对象的属性通过上面的步骤,已经创建了一个图4.15和图4.16所示的用户界面的“草图”。它由两个窗体对象、一个框架、七个文本框、七个标签、一个命令按钮、一个驱动器列表、一个目录列表和一个文件列表所组成。每个对象的属性都是VC从环境预先给定的缺省值。为了达到应用程序的具体要求,可通过属性窗口对某些属性作重新设置。表4.3列出各对象要重新设置值及其缺省值。 创建用户界面时用到了多个控件。通过这些控件,用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司法课件内容
- 护士长骨科工作总结
- 星级酒店消防员培训
- 公司水电安全培训记录课件
- 广东省深圳市龙岗区2023-2024学年高一上学期期末考试语文题目及答案
- 广东省梅州市大埔县2024-2025学年高一上学期第一次月考地理考点及答案
- 2025未签订合同离职者须知
- 2025聘用校长合同书范文
- 2025年员工因病治疗期满后拒绝解除劳动合同公司陷入两难境地
- 2025配送员劳动合同
- 安全防范系统升级和服务协议
- 整合照护课件
- 北宋名臣滕元发:才情、功绩与时代映照下的复合型士大夫
- 柜面业务无纸化培训课件
- 电工安全教育培训试题及答案
- 彩色水稻种植技术要求
- 2025年湖南银行社招笔试题库及答案
- 2025年精密数控机床进口采购合同
- DB44T 2635-2025 国土变更调查县级数据库建设技术规范
- 海南省2025年中考化学真题试题(含答案)
- 脱证中医护理常规
评论
0/150
提交评论