学生评语生成系统的开发
学生评语生成系统的开发
摘 要:
我们知道老师书写评语是一件特别辛苦的事情。于是我就想能自己开发一个程序,这个程序不仅能根据对某位学生的“德、智、体、美、劳”表现(优秀、良好、一般、差)简单的选择,自动生成相应的评语,还可选择相应的寄语,以及加入个人的评语。对生成的评语还可以进行修改,最后生成一个文本文件(.txt),我们便可导入或粘贴到wps或word中进行排版打印。本次毕业设计我用vb6.0所开发的“学生评语生成系统”程序圆满地实现了以上功能。本论文对如何使用vb6.0通过调用windows API函数,做了较为详细的介绍。
关键字:学生评语生成系统、VB6开发。
学生评语生成系统的开发
前 言
电脑已经成为挂在我们嘴角的一句口头禅,它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。以前开发Windows下软件是专业人员的工作,需要掌握许多专业知识和经过特殊的培训才能胜任。现在不同了,即使你没有接受过严格的程序设计训练,使用Visual Basic也一样能够开发出功能强大、适合自己特殊需求的应用程序了。Visual Basic继承了Basic语言易学易用的特点,特别适合于初学者学习Windows系统编程。
我作为一名××××大学的学生,对从事计算机操作和编程工作有着特殊的爱好,在工作和学习之余,我时常钻研专业课基础理论,经常用VB调试一些小程序。有一天,我的一位做中学教师的朋友找上门来,说,快要放假了,写80多个学生的评语实在是件麻烦事,能不能做个评语生成器什么的,一定要帮忙哟。为了友情,更是为了向××××大学交一份满意的答卷,我于是着手设计开始一个评语生成系统。通过这两年多来我在××××大学计算机专业的学习,我初步掌握了VB语言的最基本的知识,于是在××××大学的老师指导下动手用VB编写本学生评语生成系统。
- VB语言概述
1.1、VB简介
VB是微软公司出品的一个快速可视化程序开发工具软件,借助微软在操作系统和办公软件的垄断地位,VB在短短的几年内风靡全球。VB是极有和功能强大的软件,主要表现在:所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,较易维护的生成代码。
美国微软公司在1991年推出VB1.0至今已经经历了6个版本,VB6.0运行在win9x或winme,win2000,winxp,windowsNT等操作系统下,是一个32位的应用程序开发工具。
1.2、VB语言的基本特点及VB应用程序的基本持点
VB程序语言具有许多优秀的特性,用其设计应用程序时有两个基本特点:可视化设计和事件驱动编程.
1、可视化设计
同其他的一些可视化程序开发工具一样,VB具有可视化设计的特点,微软的Word在刚刚进入市场时,同WPS竞争的一个重要的功能砝码就是"所见即所得"的字处理功能,VB在设计应用程序界面时也可以说是"所见即所得".在设计时,头脑中所想象的应用程序界面,完全可以通过键盘鼠标以及徒手画出来,而不是编制大量的代码然后再编译生成,如果需要修改,也是利用键盘鼠标和手画,而底层的一些程序代码由VB自动生成或修改。
VB为用户提供大量的界面元素(在VB中称为控件对象),这些控件对象对于熟悉Windows应用程序的用户而言是一点也不陌生,如"窗体"、"菜单"、"命令按钮"、"工具按钮"、"检查框"等等,用户只需要利用鼠标、键盘把这些控件对象拖动到适当的位置,设置它们的大小、形状、属性等,就可以设计出所需的应用程序界面。
2、事件驱动编程
Windows操作系统出现以来,图形化的用户界面和多任务多进程的应用程序要求程序设计不能是单一性的,在使用VB设计应用程序时,必须首先确定应用程序如何同用户进行交互.例如发生鼠标单击、键盘输入等事件时,由用户编写的代码控制这些事件的响应,这就是所谓的事件驱动编程。
前面已经谈到,在VB中把窗体以及"菜单"、"按钮"等控件称为对象,如果设计出了应用程序,那么与应用程序的用户直接进行交互的就是这些对象组成的图形界面,也称为用户接口或用户界面,在设计应用程序时就必须考虑到用户如何与程序进行交户.更进一步,甚至程序和程序之间也会有通讯和交户,基本上用户是通过鼠标、键盘与应用程序进行交互的,这时那些对象就必须对鼠标和键盘操作所引发的事件做出响应.响应就是指执行一段应用程序,它不沿预定的路径执行,而是在响应不同事件时执行不同的代码.因此,应用程序代码的路径在每次响应而执行时可能都是不形同的。
1.3、为何选择VB作为开发语言
除了VB之外,当前能够编制Windows应用程序的可视化编程工具还有很多,所针对的编程领域也各有侧重,就微软系列的可视化开发工具而言,就有VB,VisualC++,VisualJ++,Visual Foxpro等,其中Visual Foxpro是针对数据库编程的开发工具;Visual C++是为专业程序设计员提供的开发工具,变量声明和定义严密,功能强大灵活,必须经过相当的努力才能掌握;而VB不支持虚类、多态性和类的继承,相对而言VB简单易学,变量定义不太严密,对于非专业程序员而言功能足够强大,同Visual C++一样也支持网络编程和数据库编程。
除了微软之外,其他公司也在为Windows操作系统平台制作应用程序开发工具,例如前Borland的公司出品的Delphi,C++Bulider, J++Bulider等,其他一些公司出品的针对数据库编程的PowerBulider, PowerDesigner等,不可否认,这些产品相当出色,如果能够熟练掌握将是编程者能力的体现,但是必须承认,对Windows操作系统最熟悉的还是微软,而且微软本身Windows操作系统的源代码采取不公开的策略,使得其他公司出品的产品在实现相同功能时多少都要走些弯路,用户在使用这些产品设计应用程序时,程序的效率将会受到影响。
在选择所需要的应用程序开发工具时,不但要考虑开发工具的功能是否强大,还要考虑所花费的时间和效果,单纯地追求功能的强大,也许会事倍功半。
中央电大陈明主编的《Visual Basic程序设计》是计算机应用专业采用的一本难得的教材,使我受益匪浅。通过这门课程的学习,我已能用VB编写简单的程序,为了搞好这次毕业设计,我决定使用VB作为编程语言。
1.4、VB6.0应用的基本开发方法
1、交互式开发
传统的应用程序开发过程可以分为三个明显的步骤:编码、编译和测试。但是VB与传统的语言不同,它使用交互式方法开发应用程序,使三个步骤之间不再有明显的界限。
在大多数语言里,如果编写代码时发生了错误,则在开始编译应用程序时该错误就会被编译器捕获。此时必须查找并改正该错误,然后再次进行编译,对每一个发现的错误都要重复这样的过程。VB在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误。看起来就像一位专家在监视代码的输入。
除即时捕获错误以外,VB也在输入代码时部分地编译该代码。当准备运行和测试应用程序时,只需极短时间即可完成编译。如果编译器发现了错误、则将错误突出显示于代码中。这时可以更正错误并继续编译、而不需从头开始。
由于VB的交互特性,因此在开发应用程序时,系统频繁地运行着应用程序。通过这种方式,代码运行的效果可以在开发时进行测试,而不必等到编译完成以后。
2、事件驱动应用程序的工作方式
事件是窗体或控件对象识别的动作。在响应事件时,事件驱动应用程序执行VB代码。VB的每一个窗体和控件对象都有一个预定义的事件集。如果其中有一个事件发生,并且在关联的事件过程中存在代码,则VB就会调用该代码。
尽管VB中的对象自动识别预定义的事件集,但要判定它们是否响应具体事件以及如何响应具体事件则是编程的工作了。代码部分(即事件过程)与每个事件对应。如果让控件对象响应事件,就把代码写入这个事件过程之中。
对象所识别的事件类型多种多样,但多数事件类型是大多数控件所共有的。例如,大多数对象都能识别click事件,如果单击窗体,则执行窗体的单击事件过程中的代码;如果单击命令按钮,则执行命令按钮的click事件过程中的代码。每种情况中的实际代码几乎完全不一样。
以下是事件驱动应用程序中的典型事件序列:
·启动应用程序,装载和显示窗体。
·窗体(或窗体上的控件)接收事件。事件可由用户引发(例如键盘操作或数鼠标点击)、可由系统引发(例如定时器事件),也可由代码间接引发(例如当代码装载窗体时的load事件)。
·如果在相应的事件过程中存在代码,就执行代码。
·应用程序等待下一次事件。许多事件伴随其它事件发生。例如,在Dblclick事件发生时,MouseDown,Mouseup和click事件也会发生。
3、创建VB应用程序的三个步骤
⑴创建应用程序界面
⑵设置属性
⑶编写代码
4、VB的程序设计是面向对象的可视化程序设计。其方法是在窗体上放置可视化的对象然后对它们设置属性、触发事件和执行方法进行程序设计。对象放置完毕后用户所见到的只是一个空壳,就像一台没有装任何软件的计算机,必须给它赋予程序,才能完成一定的功能。
VB程序贮存在模块中,模块分有窗体、类和标准模块三种类型。每个模块包含有声明和过程。窗体模块包含处理事件过程、通用过程及变量、常数等窗体级说明;标准模块应用程序内其他模块访问的过程和声明的容器;类模块中包含了建立新对象的程序。
5、窗体与基本输入、输出
在进行VB程序设计中,设计者并不需要自己编制VB程序代码来生成图形界面。VB提供了大量现成的图形控件和其他一些控件,例如所熟悉的菜单、命令按钮、对话框等,供给用户“堆砌”起来构造自己想象中的图形界面,因此几乎不用书写什么程序代码,“画”上几笔就可完成程序员的构思,获得应用程序的图形界面。
VB应用程序图形界面的设计首先要从窗体开始,其他的一些控件基本上归属于窗体控件(很多是直接“画”在窗体上的),通常应把窗体定义成一个构成应用程序可见部分的窗口,而一个VB的应用程序应首先从设计窗体开始。
VB应用程序设计过程中重要考虑的问题是应用程序与用户的交互,而窗体可以实现将输出信息提供给用户。
6、常用控件:在窗体上用于输入、输出信息的图形或文字符号称为控件。为了方便用户开发应用程序,VB中提供了很多的控件,其中很多控件是windows本身的资源,如命令按钮、标签、文本框等,也有一些是为了增强用户界面,或是使用户界面美观实用而编制的ActiveX控件。
1.5、VB与API函数:VB无疑是最先进的编程工具之一,但在涉及windows 32位系统的核心编程方面,譬如一些高级功能的实现上,它仍然显得有些力不从心,这需要我们充分利用vb的强大的Windows API函数调用能力来弥补。作为一个编程初学者来说,API函数也许是一个时常耳闻却感觉有些神秘的东西。单看它的复杂语法,就足令人望而生畏,但是任何事物在我们深入了解它之前,总是会有这种感觉的。其实我们应该把API函数的来龙去脉搞清楚,破除对API函数的畏惧,使它成为我们编程的好助手。 大家可能在许多书上看到过API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。对这个定义的理解,需要追溯到操作系统的发展历史上,当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计领域处于发展的初期,WINDOWS程序员所能使用的编程工具唯有API函数,这些函数是WINDOWS提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个WINDOWS框架的基石,在它的下面是WINDOWS的操作系统核心,而它的上面则是所有的华丽的WINDOWS应用程序。(配图1)
图1
但是,那时的WINDOWS程序开发还是比较复杂的工作,程序员必须熟记一大堆常用的API函数,而且还得对WINDOWS操作系统有深入的了解。然而随着软件技术的不断发展,在WINDOWS平台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。 这些优秀可视化编程环境操作简单、界面友好(诸如VB、VC++、DELPHI等),在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能,事实上这些类库和控件都是构架在WIN32 API函数基础之上的,是封装了的API函数的集合。它们把常用的API函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了WINDOWS应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。 实际上如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。 这也是API函数使用的场合,所以我们对待API函数不必刻来研究每一个函数的用法,那也是不现实的(能用的到的API函数有几千个呢)。正如某位人士所说:API不要去学,在需要的时候去查API帮助就足够了。 在VB中声明API函数有两种方法:如果我们只在某个窗体中使用API函数,我们可以在窗体代码的General部分声明它: 声明的语法是: Private Declare Function ... Private Declare Sub..... 这里必须采用Private声明,因为这个API函数只能被一个窗体内的程序所调用。 如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API函数,就需要在模块中声明了。 先添加一个模块,具体方法为:在设计程序时,选“project”菜单项下的子菜单项“Add Moudle” 然后采用如下语法声明: Public Declare Function.... Public Declare Sub.... Public声明的含义是把API函数作为一个公共函数或过程,在一个工程中的任何位置(包括所有的窗体和模块)都能直接调用它。 声明完毕我们就能在程序中使用此API函数了。 可采用以下几种方式使用API函数,以SetWindowPos函数为例: (1)忽略函数返回值的调用: SetWindowPos Form1.hWnd, -2 ,0 ,0 ,0, 0, 3 注意此时函数的参数是不加括号的。 (2)Call方法调用: Call SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3) 注意这里需要加上括号,但我们不取回函数的返回值。 (3)取得函数返回值的调用: MyLng = SetWindowPos(Form1.hWnd, -2, 0, 0, 0,3) 此时需要加上括号,而且我们必须事先定义一个变量(变量的类型与函数返回值类型相同)来存储API函数的返回值。 几个问题的说明: (1)声明中的Lib 和 Alias 是怎么回事 一般情况下WIN32API函数总是包含在WINDOWS系统自带的或是其它公司提供的动态连接库DLL中,而Declare语句中的Lib关键字就用来指定DLL(动态连接库)文件的路径,这样VB才能找到这个DLL文件,然后才能使用其中的API函数。如果我们只是列出DLL文件名而不指出其完整的路径的话,VB会自动到.EXE文件所在目录、当前工作目录、WINDOWS\SYSTEM目录、WINDOWS目录下搜寻这个DLL文件。所以如果所要使用DLL文件不在上述几个目录下的话,我们应该指明其完整路径。 Alias用于指定API函数的别名,如果我们调用的API函数要使用字符串(参数中包含String型)的话,Alias关键字是必须的。这是因为在ANSI和Unicode字符集中同一API函数的名称可能是不一样的,为了保证不出现声明错误,我们使用Alias关键字指出API函数的别名,一般来说在WIN9X平台下我们把API函数名后加一个大写A作为别名即可。 (2)常见的API参数类型的说明 API函数的参数中最常见的是长整Long型数据类型,例如API中的句柄、一些特定的常量、函数的返回值都是此类型 的值;另外几种常见的参数类型有:整型Integer、Byte型、String型等。 (3)声明中的ByVal是作什么用的 这跟VB的参数传递方式有关,在默认情况下VB是通过地址传递方式传递函数的参数、而有些API函数要求必须采用传值方式来传递函数参数(这两种参数传递方式是不同的,前者传递的是一个指针,而后者要求是参数真实的值)。这样就会发生错误,解决的办法是在API函数参数声明的前面加上ByVal关键字,这样VB就采用传值方式传递参数了。 (4)怎样得到完整的API函数声明 VB自带了API文本查看器API TEXT VIEWER,我们可以在其中找到API函数的完整声明,然后把它粘贴到程序中即可。
了解了以上有关VB的基础知识,我们现在就可以开始着手运用VB进行程序设计了。
- 学生评语生成系统的开发
2.1、本软件将具有何种功能
1、能根据对某位学生的“德、智、体、美、劳”表现(即优秀、良好、一般、差)进行简单的选择,便能自动生成相应的评语。
2、可选择相应的寄语,以及加入个人的评语。
3、对生成的评语可以进行修改。
4、最后生成一个文本文件(.txt),使我们可方便地导入到wps或word中进行排版打印。
2.2、有关界面及控件设置
一、界面及控件设置如下图所示:
二、有关控件的属性
控件名称 |
属性 |
功能描述 |
Combo1 |
Text=’请选择寄语’ |
供选择相应的寄语 |
Command1 |
Caption=”生成” |
|
Command2 |
Caption=”保存” |
保存成.txt文件 |
Command3 |
Caption=“退出” |
|
Text1 |
供生成评语 |
|
Text2 |
供添加自定义评语 |
|
Text3 |
供输入姓名 |
|
Frame控件4个 |
分开德智体美劳五项 |
|
Option控件20个 |
细分成四个等级 |
|
Label控件3个 |
显示相应提示信息 |
2.3、源代码
Option Explicit
'声明德智体美劳变量
Dim Mind As String, Score As String, PE As String
Dim Manner As String, Labor As String, jy As String
Private Sub Combo1_Click()
jy = Combo1.Text
End Sub
'生成
Private Sub Command1_Click()
If Text3.Text = "" Then
MsgBox "姓名栏不能为空", vbOKOnly, "提示"
Text3.SetFocus
Text1.Text = ""
Else
Text1 = " " + Text3.Text + "同学一学期来" + Mind + Score + _
PE + Manner + Labor + Text2.Text + jy
End If
End Sub
'保存
Private Sub Command2_Click()
Dim sF As String
sF = Text3.Text + ".txt"
Open sF For Output As #1
Print #1, Text1.Text
Close #1
End Sub
Private Sub Command3_Click()
End '退出
End Sub
'德
Private Sub Option1_Click(Index As Integer)
Select Case Index
Case 0
Mind = "各方面从高从严要求自己,上进心强,遵守纪律。"
Case 1
Mind = "思想上要求进步,严于律已,能较好地遵守校纪班规。"
Case 2
Mind = "有一定的上进心,基本上能遵守学校的规章制度。"
Case 3
Mind = "思想纪律表现一般,基本上能遵守校纪班规,但自律能力不强,偶尔" + "有意外行为。"
End Select
End Sub
'智
Private Sub optScore_Click(Index As Integer)
Select Case Index
Case 0
Score = "学习能力出众,勤奋用功,成绩优异,如保持下去,前途无限。"
Case 1
Score = "学习能力较好,肯下功夫,成绩优良,有较好的发展潜力。"
Case 2
Score = "有一定的自学能力,所作出的努力取得相应的成绩,挖掘潜力可观。"
Case 3
Score = "学习上用心程度不够,成绩不太理想,但悟性较好,经努力会很快有长足进步的。"
End Select
End Sub
'体
Private Sub Option3_Click(Index As Integer)
Select Case Index
Case 0
PE = "热爱体育,积极参加体育锻炼,体能素质优良,身体健康。"
Case 1
PE = "爱好体育,主动参加体育锻炼,体能素质良好,身体健康。"
Case 2
PE = "基本上按要求参加体育锻炼,成绩合格。"
Case 3
PE = "体育方面不太理想,身体素质有待加强。"
End Select
End Sub
'美
Private Sub Option4_Click(Index As Integer)
Select Case Index
Case 0
Manner = "为人诚实,尊重老师、长辈,团结同学,乐于助人。"
Case 1
Manner = "待人有礼貌,尊重师长、团结同学。"
Case 2
Manner = "和气待人,与同学和好相处。"
Case 3
Manner = "举止有进欠周到,望加强修养。"
End Select
End Sub
'劳
Private Sub Option2_Click(Index As Integer)
Select Case Index
Case 0
Labor = "热爱劳动,有吃苦耐劳的精神。"
Case 1
Labor = "劳动积极肯干,能吃苦耐劳。"
Case 2
Labor = "劳动课能完成任务,但主动性有待提高。"
Case 3
Labor = "劳动方面认识不足,表现一般。"
End Select
End Sub
第三章 毕业设计总结
历时一个多月的毕业设计终于快到了尾声,通过这次毕业设计,在老师的指导下,我初步掌握了用VB开发软件的方法,我在进行设计软件时遇到了一些困难,于是我在老师的提示和鼓励下,查资料,上网和网友进行探讨。我在程序员之家,网址为http://www.csdn.net上的论坛和高手进行交流,对我受益菲浅。此外我还登录到天极网站看了不少优秀的vb技术文章。这些对我搞好毕业设计起了至关重要的作用。在此再次感谢××××大学的指导老师对我的悉心指导与帮助。由于时间仓促,这个软件肯定还有不完善的地方,比如评语的内容还不太丰富。这有待我以后继续完善,肯请各位老师提出批评改进意见。
- 程序运行软硬件环境
1、软件环境:操作系统是windowsxp专业版,在VisualBasic6.0编程环境下编译。
2、硬件环境:p4赛扬2.4G,DDR256M内存,60G硬盘空间。
第五章 主要参考文献
1、《Visual Basic 程序设计》清华大学出版 2002年7月第1版 李大友主编
2、《Visual Basic开发人员指南》机械工业出版社 1999年1月 EricBrierley主编
3、《Visual Basic 程序设计》中央电大出版 2000年12月第1版 陈明 主编
4、《Visual Basic6.0实效编程百例》人民邮电出版社 2002年7月 刘韬、骆娟主编
5、《数据结构(c++描述)》 中央电大出版 2000年12月第1版 徐孝凯主编
关注博主下篇更精彩
一键三连!!!
一键三连!!!
一键三连!!!
感谢一键三连!!!