学生信息管理系统VB课程设计报告 - 图文

更新时间:2023-12-14 17:36:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Visual Basic课程设计报告

题目: 学生信息管理 难度: *** 指导教师: 袁红兵

姓 名: 谭鑫 学 号: 1101400114 专 业: 工业工程 班 级: 11014001 学 院: 机械工程学院

日 期: 2012年3月1日 ~ 26日

Visual Basic课程设计报告

一、 题目简介 ....................................................................................................................... 1 二、设计思路与总体方案 ....................................................................................................... 6 三、设计过程遇到的主要问题及解决方法 ......................................................................... 22 四、设计中尚存的不足分析 ................................................................................................. 22 五、心得体会 ......................................................................................................................... 25 六、参考文献 ......................................................................................................................... 26

一、 题目简介

学生进入学校后,每个人有很多信息,例如:学号,姓名,出生年月,专

业,所在院系,个人爱好等等,这些信息很杂乱,也很难一一理,清查询起来 也很难,用学生信息管理对这些信息进行管理。

本题目旨在设计与一个可对学生信息进行管理和查询统计的程序,维护学生的学号通过此程序的设计,可以加深我们对上学期的vb基础知识的印象,使理论升华为实际操作,同时也有助于我们培养合理化意识,用电子记录的形式取代从前的手写记录,使得信息更加精准,不易丢失。 题目的难度系数相对不高,但牵涉到众多的知识点,作为典型的多模块设计类型的题目,本程序涉及两个模块,主窗体和查询窗体。复习了上学期 我们所学的vb知识,自定义数据类型和动态数组,更加熟练的掌握了这两方面知识。在这一程序中,还要学会两个新控件MSFlexGird表格控件和DTPicker日期选择器的使用。MSFlexGrid却是这个程序编辑过程中最主要的控件,所以需要自学,还是有点难度

的。

MSFlexGrid控件具有很强的数据组织能力和显示能力,但是其本身并无编辑数据的功能。本程序使用了文本框、DTPicker日期选择器控件和下拉式组合框三个控件来协助数据编辑。如何协调三个编辑控件的显示和隐藏是本题目的难点。

题目提供了四个文本文件:“名族.txt”、“院系.txt”、“专业.txt”和“省份.txt”,其中的信息可供程序在显示编辑组合框时使用。每个名族。院系。专业和省份都

1

有一个代号,为了缩减data.dat文件的大小,该文件中并未保存具体的名称,而是一个代号。

程序要求实现如下功能(主要根据窗口由易到难的顺序来)

(1)学生进入系统,进入登陆界面,系统要求学生输入学号和密码。(自加窗体)

统要求学生的密码和学号

相同,若不相同,则显示以下界面 系统要求学生的学号为纯

数字,不得包含字母等,且学号为十位数,若不满足条件,则显示以下界面

2

学生输入正确的学号和密码

后,系统会跳入主界面,如图所示

(2)学生信息保存在随机访问文件data.dat文件中,该文件与可执行文件位于同一文件夹中。运行程序,显示图1所示界面,自动列出数据文件data.dat中保存的所有学生信息,每个学生占一行。程序使用了MSFlexGrid表格控件进行信息的组织和显示。用户一旦修改添加了学生信息会保存到data.txt文件中。

如果启动时程序为在当前目录中找到data.dat文件,则显示没有数据行的空表,允许用户添加学生信息并保存为data.dat文件。

(2)使用鼠标单击表格的某一单元格,则该格会突出显示,所在行为当前行。

3

单击工具栏上的“插入”按钮在当前行位置上插入一个新空行,单击“追加”按钮会在表格最后添加一个空行。使用“删除”按钮合一删除当前空行。 如下图所示:

(3)无论是空格还是已有数据的格,都可以对其中的数据进行直接编辑,对于学号、姓名和高考分数三列数据使用文本框进行编辑;对于出生日期使用DTPicker控件进行编辑;对于性别、民族、院系、专业和省份等五列数据使用组合框控件编辑。 例如,下图所示:

4

对数据进行编辑之后,单击“保存”按钮将编辑后的结果保存到data.dat 文件中。 (4)选择“查询”按钮,弹出图所示的“查询”对话框。在“查询”对话框中可以组合多种文件夹来查询感兴的数据。如图所示,选择“性别”和“院系”并在性别中选择“男”在院系中选择“机械工程学院”,表示查找所有机械工程学院男学生的信息。按“确定”按钮返回主窗口,所有满足条件的数据行一红色背景显示。

5

(5)在“查询”对话框中如图所示未选中的数据列表示该数据不加限制,该项后面用于输入详细信息的文本框和组合框是无效的。“学号”和“姓名”中可以输入完整的学号和姓名,也可以输入部分的学号和姓名。连续使用“查询”功能时,后一次的查询不会清除前一次查询的结果,二者会同时突出显示。如果在查询对话框中不指定任何条件会选择所有的数据行,如果单击了查询对话框中的“取消”按钮会取消所有数据行的突出显示。

(6)如果用户对数据进行了修改,关闭程序是弹出如图所示的消息框加以提示.

二、设计思路与总体方案

学生信息管理系统

登陆界面

保存

追加

主界面 查询界面

插入 删除 查询

2.1标准模块Module1 一、因为在整个过程中都涉及到学生信息的编辑,所以对于学生信息定义成全局级的自定义数据类型。同时民族、院系、专业、省份都是需要读入的,所以定义

6

为动态数组。

Public Type StudentInfo number As String * 8 Name As String * 8 Sex As Boolean Birth As Date Nation As Byte faculty As Byte subject As Byte Province As Byte Score As Single End Type

Public num As Integer Public student() As StudentInfo Public Modified As Boolean Public EditMode As Boolean

Public faculty() As String Public Province() As String Public Nation() As String Public subject() As String

Public conArr(9) As Control

另外由于保存过程中涉及到文件是否被修改,所以应该定义一个逻辑型变量Modified来标榜数据是否被修改,同时根据要求过程涉及到是否可以编辑,所以定义全局的逻辑型变量EditMode来标榜是否可以编辑。

定义了一系列的动态数组,需要将其重新定义,将文件中的民族,专业、院系、省份的具体内容读入动态数组中,同时在启动程序时需要加载数据,表格要显示学生信息,而关闭时需要保存数据,所以编写了OpenData、SaveData两个全局过程方便调用。并且采用读随机文件的方式进行文件的读写,根据上学期所学知识,随机文件的特点使得使用自定义类型对其进行操作是非常方便的。 Public Sub OpenData() Dim i As Integer Dim stu As StudentInfo num = 0 Erase student

7

If Dir(App.Path & \ Exit Sub End If

Open App.Path & \ num = LOF(1) / Len(stu) For i = 1 To num

ReDim Preserve student(i) Get #1, , student(i) Next Close #1 Modified = False End Sub

Public Sub SaveData() Dim i As Integer Dim stu As StudentInfo

If Dir(App.Path & \ Kill App.Path & \ End If

Open App.Path & \ For i = 1 To num Put #1, , student(i) Next Close #1 Modified = False End Sub

Public Sub OpenInfo() Dim i As Integer Dim n As Integer

8

If Dir(App.Path & \院系.txt\ i = 0

Open App.Path & \院系.txt\ Do While Not EOF(1) i = i + 1

ReDim Preserve faculty(i) Input #1, n, faculty(i) Loop Close End If

If Dir(App.Path & \民族.txt\ i = 0

Open App.Path & \民族.txt\ Do While Not EOF(1) i = i + 1

ReDim Preserve Nation(i) Input #1, n, Nation(i) Loop Close End If

If Dir(App.Path & \省份.txt\ i = 0

Open App.Path & \省份.txt\ Do While Not EOF(1) i = i + 1

ReDim Preserve Province(i) Input #1, n, Province(i) Loop Close End If

If Dir(App.Path & \专业.txt\ i = 0

Open App.Path & \专业.txt\ Do While Not EOF(1)

9

i = i + 1

ReDim Preserve subject(i) Input #1, n, subject(i) Loop Close End If End Sub

2.2窗体模块frmlogin

由于本窗体为自加窗体,visuai basic 程序中添加窗体中选择登陆窗体,microsoft已提供部分代码

Option Explicit

Public LoginSucceeded As Boolean Private Sub cmdCancel_Click() LoginSucceeded = False Me.Hide End Sub

Private Sub cmdOK_Click()

If IsNumeric(txtUserName.Text) = True And Len(txtUserName.Text) = 10 Then

If txtPassword = txtUserName.Text Then LoginSucceeded = True Me.Hide frmstudent.Show Else

MsgBox \无效的密码,请重试!\登录\ txtPassword.SetFocus SendKeys \ End If Else

MsgBox \对不起,你不是本校学生!\错误\End If End Sub

2.3 窗体主模块frmstudent 一.该窗体模块是本程序的主体,最上方是5个命令按钮控件,中间是MSFlexGrid

10

控件,最下方是协助编辑的三个文本框控件,一个DTPicker控件,5个下拉式组合框控件(根据提供的效果图进行设计)。下面是编辑窗体中除了5个命令按钮控件以外的主要程序的编写思路: 1.打开数据文件

2.加载显示信息的表格(包括设定表格的位置大小) 3.用表格显示数据文件中的信息

4.为各编辑控件赋值,同时因为控件较多,为了方便在各事件过程中对其进行编辑,使用对象型数组得到相应的控件

5.因为MSFlexGrid控件只能显示数据,并不支持用户直接进行编辑,编辑控件要编程才能实现。根据《课程设计》中介绍的方法,编辑MSFlexGrid控件的EnterCell和LeaveCell事件,使用户可以对表格中数据进行编辑。

6.由于一些事件过程不仅在一个事件中需要用到,在命令按钮控件等所表示的功能中也会用到所以对其进行单独编写,方便调用。另外因为一些功能需要编写的代码太长,对其单独编写,然后调用,我认为可以使程序更有调理,结构更优。 所以我对ShowAll、UpdateCell、ClearEdit、GetNew(分别用于展示信息,将编辑控件中的内容赋给单元格、清除所编辑的内容,再添加和插入过程中使用编辑控件得到新的值)

7. 对窗体关闭时的事件进行编辑

8.在结束时涉及到当表格里的数据被更改时需不需要保存的问题,所以对于编辑控件的change事件中,要加入modified值的判断 9.以下是我编写的代码的展示: Private Sub cbosex_Click() Modified = True End Sub

Private Sub cbonation_Click() Modified = True End Sub

Private Sub cbofaculty_Click() Modified = True End Sub

Private Sub cbosubject_Click() Modified = True End Sub

Private Sub cboprovince_Click() Modified = True End Sub

Private Sub DTPbirth_Change() Modified = True End Sub

11

Private Sub Form_Load() Dim i As Integer

Call OpenData Call OpenInfo

MSFstudent.Rows = num + 1 Call ShowAll

EditMode = True

If MSFstudent.Rows > 1 And MSFstudent.Cols > 1 Then txtnumber.Text = MSFstudent.TextMatrix(1, 1) End If

Set conArr(1) = txtnumber Set conArr(2) = txtname Set conArr(9) = txtscore Set conArr(3) = DTPbirth Set conArr(4) = cbosex Set conArr(5) = cbonation Set conArr(6) = cbofaculty Set conArr(7) = cbosubject Set conArr(8) = cboprovince conArr(4).AddItem \男\ conArr(4).AddItem \女\

For i = 1 To UBound(Nation) conArr(5).AddItem Nation(i) Next

For i = 1 To UBound(faculty) conArr(6).AddItem faculty(i) Next

For i = 1 To UBound(subject) conArr(7).AddItem subject(i) Next

For i = 1 To UBound(Province) conArr(8).AddItem Province(i) Next

Modified = False End Sub

Private Sub from_Resize()

12

MSFstudent.Height = Me.ScaleHeight - MSFstudent.Top MSFstudent.Width = Me.ScaleWidth End Sub

Private Sub form_Unload(Cancel As Integer) Dim i As Integer If Modified Then

i = MsgBox(\数据已被编辑,退出前是否保存?\vbExclamation + vbYesNoCancel)

Select Case i Case vbYes

Call SaveData Case vbCancel Cancel = 1 End Select End If End Sub

Private Sub MSFstudent_EnterCell() Dim i As Integer

If Not EditMode Then Exit Sub

If MSFstudent.MouseCol = 0 Or MSFstudent.MouseRow = 0 Then Exit Sub End If

Select Case MSFstudent.col Case 4 To 8

With conArr(MSFstudent.col)

.Top = MSFstudent.Top + MSFstudent.CellTop .Left = MSFstudent.Left + MSFstudent.CellLeft .Width = MSFstudent.CellWidth .Visible = True .SetFocus

Select Case MSFstudent.col Case 4

If student(MSFstudent.row).Sex Then .ListIndex = 0 Else

.ListIndex = 1 End If If Trim(MSFstudent.TextMatrix(MSFstudent.row,

13

MSFstudent.col)) = \ Case 5

.ListIndex = student(MSFstudent.row).Nation - 1 Case 6

.ListIndex = student(MSFstudent.row).faculty - 1 Case 7

.ListIndex = student(MSFstudent.row).subject - 1 Case 8

.ListIndex = student(MSFstudent.row).Province - 1 End Select End With

Case 3

With conArr(3)

.Top = MSFstudent.Top + MSFstudent.CellTop .Left = MSFstudent.Left + MSFstudent.CellLeft .Width = MSFstudent.CellWidth .Height = MSFstudent.CellHeight

If student(MSFstudent.row).Birth = #12:00:00 AM# Then .Value = Date Else

.Value = student(MSFstudent.row).Birth End If

.Visible = True .SetFocus End With

Case 1, 2, 9

With conArr(MSFstudent.col)

.Top = MSFstudent.Top + MSFstudent.CellTop .Left = MSFstudent.Left + MSFstudent.CellLeft .Width = MSFstudent.CellWidth .Height = MSFstudent.CellHeight .Text = MSFstudent.Text .Visible = True .SetFocus End With End Select End Sub

Private Sub MSFstudent_LeaveCell() If Not EditMode Then Exit Sub

14

Call UpdateCell(MSFstudent.row, MSFstudent.col) Call ClearEdit End Sub

Private Sub ShowAll() Dim i As Integer For i = 1 To num

MSFstudent.TextMatrix(i, 0) = i

MSFstudent.TextMatrix(i, 1) = student(i).number MSFstudent.TextMatrix(i, 2) = student(i).Name If student(i).Birth = #12:00:00 AM# Then MSFstudent.TextMatrix(i, 3) = \ Else

MSFstudent.TextMatrix(i, 3) = student(i).Birth End If

If student(i).Sex Then

MSFstudent.TextMatrix(i, 4) = \男\ Else

MSFstudent.TextMatrix(i, 4) = \女\ End If

If student(i).Nation > 0 Then

MSFstudent.TextMatrix(i, 5) = Nation(student(i).Nation) Else

MSFstudent.TextMatrix(i, 5) = \ End If

If student(i).faculty > 0 Then

MSFstudent.TextMatrix(i, 6) = faculty(student(i).faculty) Else

MSFstudent.TextMatrix(i, 6) = \ End If

If student(i).subject > 0 Then

MSFstudent.TextMatrix(i, 7) = subject(student(i).subject) Else

MSFstudent.TextMatrix(i, 7) = \ End If

If student(i).Province > 0 Then

MSFstudent.TextMatrix(i, 8) = Province(student(i).Province) Else

MSFstudent.TextMatrix(i, 8) = \ End If

15

MSFstudent.TextMatrix(i, 9) = student(i).Score Next End Sub

Private Sub ExitEdit() EditMode = False

Call UpdateCell(MSFstudent.row, MSFstudent.col) Call ClearEdit End Sub

Private Sub UpdateCell(row As Integer, col As Integer) Select Case col Case 1, 2, 9

MSFstudent.TextMatrix(row, col) = conArr(col).Text Case 3

If conArr(col).Value = Date Then

MSFstudent.TextMatrix(row, col) = \ Else

MSFstudent.TextMatrix(row, col) = conArr(col).Value End If

Case 4 To 8

MSFstudent.TextMatrix(row, col) = conArr(col).Text End Select

Select Case col Case 1

student(row).number = conArr(col).Text Case 2

student(row).Name = conArr(col).Text Case 3

If conArr(col).Value = Date Then

student(row).Birth = #12:00:00 AM# Else

student(row).Birth = conArr(col).Value End If Case 4

If conArr(col).ListIndex = 0 Then student(row).Sex = True Else

student(row).Sex = False End If

16

Case 5

student(row).Nation = conArr(col).ListIndex + 1 Case 6

student(row).faculty = conArr(col).ListIndex + 1 Case 7

student(row).subject = conArr(col).ListIndex + 1 Case 8

student(row).Province = conArr(col).ListIndex + 1 Case 9

student(row).Score = Val(conArr(col).Text) End Select End Sub

Private Sub ClearEdit() Dim i As Integer conArr(1).Text = \ conArr(2).Text = \ conArr(9).Text = \

conArr(3).Value = #12:00:00 AM# For i = 4 To 8

conArr(i).ListIndex = -1 Next

For i = 1 To 9

conArr(i).Visible = False Next End Sub

Private Sub GetNew() Dim c As Integer For c = 1 To 9

Select Case c Case 4 To 8

With conArr(c)

Select Case c Case 4

If student(MSFstudent.row).Sex Then .ListIndex = 0 Else

.ListIndex = 1 End If

If Trim(MSFstudent.TextMatrix(MSFstudent.row, c)) = \

17

Case 5

.ListIndex = student(MSFstudent.row).Nation - 1 Case 6

.ListIndex = student(MSFstudent.row).faculty - 1 Case 7

.ListIndex = student(MSFstudent.row).subject - 1 Case 8

.ListIndex = student(MSFstudent.row).Province - 1 End Select End With

Case 3

With conArr(3)

If student(MSFstudent.row).Birth = #12:00:00 AM# Then .Value = Date Else

.Value = student(MSFstudent.row).Birth End If End With

Case 1, 2, 9

With conArr(c)

.Text = MSFstudent.Text End With End Select Next End Sub

Private Sub txtnumber_Change() Modified = True End Sub

Private Sub txtname_Change() Modified = True

End Sub

Private Sub txtscore_Change() Modified = True

End Sub 二.编辑前4个命令按钮,在编写程序时主要就是功能与算法的匹配,编写调试,

18

基本实现功能要求。删除和插入由于会影响原有的数据的序号,所以编程时使用For Next控制结构进行编写。同时因为在编写过程中我事先编写了保存数据的savedata过程,所以保存按钮的单击事件比较简单,直接调用。追加,由于是在原有数据之后进行编辑的功能,所以也比较简单。 Private Sub cmdquery_Click() frmquery.Show End Sub

Private Sub cmdappend_Click() Call ExitEdit num = num + 1

ReDim Preserve student(num) MSFstudent.Rows = num + 1

MSFstudent.TextMatrix(num, 0) = Str(num) Call GetNew Modified = True EditMode = True End Sub

Private Sub cmddelete_Click() Dim n As Integer

Dim i As Integer, j As Integer n = MSFstudent.row Call ExitEdit

If n = 0 Then Exit Sub

If MSFstudent.Rows - MSFstudent.FixedRows <= 1 Then Exit Sub MSFstudent.RemoveItem n For i = n To num - 1

student(i) = student(i + 1)

MSFstudent.TextMatrix(i, 0) = Str(i) Next

MSFstudent.Rows = num num = num - 1 If num = 0 Then Erase student Else

ReDim Preserve student(num) End If

MsgBox MSFstudent.row & \

Call GetNew Modified = True EditMode = True End Sub

19

Private Sub cmdinsert_Click() Dim n As Integer

Dim i As Integer, j As Integer

Call ExitEdit

n = MSFstudent.row

MSFstudent.col = 0 MSFstudent.row = 0

If n = 0 Then

MSFstudent.AddItem 1 n = 1 Else

MSFstudent.AddItem n End If

num = num + 1

ReDim Preserve student(num) MSFstudent.Rows = num + 1

For i = num To n + 1 Step -1 student(i) = student(i - 1)

MSFstudent.TextMatrix(i, 0) = Str(i) For j = 1 To 9

MSFstudent.TextMatrix(i, j) = MSFstudent.TextMatrix(i - 1, j) Next Next

For i = 1 To 9

MSFstudent.TextMatrix(n, i) = \ Next

student(n).Birth = #12:00:00 AM# student(n).faculty = 0 student(n).subject = 0 student(n).Name = \ student(n).Nation = 0 student(n).number = \ student(n).Province = 0 student(n).Score = 0 student(n).Sex = False

MSFstudent.TextMatrix(num, 0) = Str(num) MSFstudent.row = n Modified = True

20

Call GetNew EditMode = True End Sub

Private Sub cmdsave_Click() MSFstudent.col = 0 MSFstudent.row = 0 Call SaveData End Sub

2.4窗体模块frmquery

该窗体由一个含有9个成员的复选框控件数组排列在窗体的最左边,4个文本框控件,4个下拉式组合框,2个DTPicker控件,一组单选框,2个命令按钮组成。 1. 加载事件过程中,对显示民族,院系,专业,省份信息的列表框添加相应的条目。

2. 编写复选框的Enabled事件,实现对该查询条件是否可以编辑的设定 3. 编辑确定按钮,即对条件进行详细编辑,实现查询功能 4. 编辑取消按钮

Private Sub chknumber_Click()

If chknumber.Value = 1 Then txtnumber.Enabled = True Else txtnumber.Enabled = False End Sub

Private Sub txtscore1_KeyPress(KeyAscii As Integer) If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0 End If End Sub

If chknumber.Value = 1 Then For i = 1 To num

If InStr(student(i).number, txtnumber.Text) = 0 Then a(i) = False Next End If

21

三、设计过程遇到的主要问题及解决方法

3.1题目要求启动时程序未在当前目录中找到data.dat文件,则显示没有数据行的空表,那么在写程序时怎么样才可以表示有没有data.dat的文件存在呢?书上没有找到,后来在网上查找了以下,运用dir函数可以实现这个要求。Dir函数返回一个String型的结果,用以表示一个文件名,目录名或文件夹名,利用

它的结果是否为空字符串,可以实现要求。 ~ 3.2在参数设置的模块中,我当时在其load的事件中编完了列表框的

ADDItem的方法,也检查代码,没有任何问题,但是该窗体就是无法显示出列表框的条目来。后来把把原先的frmstudent_load改成了form_load情况当即就解决了。因为对于窗体来说,无论其对象名是什么,其事件过程名总是”form_事件名”。但是对于各种控件来说,实践过程名格式是“对象名_事件名”。这是因为一个窗体模块中只能有一个窗体,却可以有大量的控件,必须以对象名加以区分。

3.3读入数据时,有一个学生人数的统计,否则不知道数组的上限,而data.dat文件却不好打开,不知道有多少学生,这个问题我自己没有想到可行的办法,请教了编程学的好的学长怎么处理这样的问题,他的经验是运用字符串函数LOF得到文件的总长度用len得到一条记录的长度,两个做比值得到学生数,虽然目前我不知道还有没有更好的方法,但是我认为这个方法很不错。

3.4一开始,对于MSFlexGrid这个表格控件不太会用,后来通过仔细阅读课程设计和在网上找大量资料,终于学会了这个控件的用法。

四、设计中尚存的不足分析

4.1如图可见,这一段本可使用控件数组大大简化这后面过程。一开始我也确实是如此设计。后来放弃了这一想法,采用了一般的步骤而变得更为费时费力,可以看到查询统计模块下的代码特别冗长。

Private Sub chkbirth_Click() If chkbirth.Value = 1 Then DTPbirth1.Enabled = True DTPbirth2.Enabled = True Else

DTPbirth1.Enabled = False DTPbirth2.Enabled = False End If End Sub

22

Private Sub chkfaculty_Click()

If chkfaculty.Value = 1 Then cbofaculty.Enabled = True Else cbofaculty.Enabled = False

End Sub

Private Sub chkname_Click()

If chkname.Value = 1 Then txtname.Enabled = True Else txtname.Enabled = False

End Sub

Private Sub chknation_Click()

If chknation.Value = 1 Then cbonation.Enabled = True cbonation.Enabled = False

End Sub

Private Sub chknumber_Click()

If chknumber.Value = 1 Then txtnumber.Enabled = True txtnumber.Enabled = False

End Sub

Private Sub chksubject_Click()

If chksubject.Value = 1 Then cbosubject.Enabled = True cbosubject.Enabled = False

End Sub

Private Sub chkprovince_Click()

If chkprovince.Value = 1 Then cboprovince.Enabled = True cboprovince.Enabled = False

End Sub

Private Sub chksex_Click() If chksex.Value = 1 Then optboy.Enabled = True optgirl.Enabled = True Else

23

Else Else Else Else optboy.Enabled = False optgirl.Enabled = False End If End Sub

Private Sub chkscore_Click() If chkscore.Value = 1 Then txtscore1.Enabled = True txtscore2.Enabled = True Else

txtscore1.Enabled = False txtscore2.Enabled = False End If End Sub

4.2作为编程者的角度看,需要的是考虑用户的感受。当我调试程序后,遇到过当输入的数据类型与设置的变量类型不统一时,会出现许多错误,为避免如此,必须添加显式转换语句避免错误,由于我对现实转换这一内容不太熟悉,导致程序出现以下错误,如图所示:

24

五、心得体会

这个程序从难度上讲只有三颗星而已,但我想说我确实摸索了很久,从界面的制作排版到代码的编写。由于计算机编程知识当初只学了些皮毛,很多次我在编程时不断调试却依然出现这样那样的毛病,可能是无意中拼写错误,但有些确实是因为不了解vb的某些较为冷僻的用法所致。这段时间,常会向同学请教,也自觉地去借了些书看看,基本上完成了要求,但是功能、界面都还不是很完善,

我会借助以后的时间继续去加工的,我需要的是学以致用。 ~ 编写EnterCell和LeaveCell还有UpDateCell事件过程时,因为本身就没怎么看懂MSFlexGrid控件这两个事件是如何和文本框等完成表格的编辑的,根本不知道除了把文本框等编辑控件移到单元格上之后该怎么办,甚至不知道要把当前单元格的内容赋给编辑控件,然后在写将编辑控件中的内容赋给单元格的程序,这些都是后来慢慢一遍一遍摸索,百度以后才知道的,更不用说在编写这些事件过程时要把下拉式组合框的,文本框的,DTP中的内容颠来倒去的赋来赋去。找函数,找对应的属性,找对应的方法都找的想要奔溃,每次不知道对不对,还要编程序,编了再运行,不行再调试,错了再试另外的,试过3次以后会很烦躁,真的不想再编了,根本编不出来。要么死皮赖脸去问同学,学姐学长,前辈,要么百度。无奈的不想再碰它,但是作业总要交,同时已经编了一部分,放弃太可惜。心情复杂,编程编的信心大受打击!岂是挫败能形容的啊 ~ 经过一月的课程设计, 我学到了很多东西:

①巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。 ②培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。

③过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。

④够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。

⑤通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。

25

课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。

在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!

我体会到了编写程序是个有条理的逻辑过程,首先必须有个大致的思路,整体的规划出来。然后再是分步地去具体完成,尤为重要的是需要投入相当一部分精力去精益求精,这样你的成果才不会是毛糙的。这就是一个月的课程设计所教会我的。

六、参考文献

1. 王栋,visual basic课程设计,北京,清华大学出版社 2. 王栋,visual basic程序设计实用教程,北京,清华大学出版社 3. 白康生,Visual Basic程序设计,北京,清华大学出版社 4. 宁爱军,Visual Basic程序设计教程,北京,人民邮电出版社 5. 楼玉萍,Visual Basic上机实践指导,浙江,浙江大学出版社 6.李良俊,visual basic程序设计语言,北京,科学出版社

7.白晓勇 余健,visual basic课程设计案例精编,北京,清华大学出版社 8. 仲维俊,visual basic6.0完全自学手册,北京,机械工业出版社

26

本文来源:https://www.bwwdw.com/article/zp15.html

Top