VB课程设计报告

发布时间:2016-12-12 16:52:18   来源:文档文库   
字号:

Visual Basic课程设计报

题目1 列车时刻查询系统 难度: **

题目2 记忆力测试软件 难度: **

指导教师: 袁红兵

名:郑聪

号:9151010F0535

业:兵器类

级:9151010F05

院:机械工程学院

20164

一、 程序功能

二、 课程设计的详细设计

三、 课程设计总结

四、 遇到的问题及解决方法

五、 源程序代码

六、 总结及个人心得体会

七、 参考文献

程序功能

涉及知识点:(1)读文本文件;(2)动态数组(3)字符串处理(4)列表框控件的使用(4)多行文本框控件的使用

功能要求:

(1) 程序启动后,左边的列表框显示所有的车次,点击其中一项,显示相应的详细信息。

(2) 在“经停车站”组合框中选择或输入一个站名然后回车,列表框中只列出经过该车站的车次。单击列表框下方的“显示全部车次”按钮,列表框中重新列出所有车次。

(3) 文本框(或右边的列表框)中详细信息整齐排列。

课程设计的详细设计

1、 总体设计思路

先将信息读入到两个动态数组中,再根据相关的事件调用数组。

2、界面设计

界面有framelistcomboltextcommandlabel.

3、功能模块设计

课程设计总结

(1) 整体的功能还是实现了,运行应该是没有问题的。

(2) 在做这次课程设计的过程中,我深刻领悟到实践的重要性,看似困难的课程设计,一步一步来,问题一个一个解决,最后回首会觉得自己懂得了好多好多。

(3) 我也知道了,不能光靠自己的课本,要借助网络快速的查找自己所需要的知识点。

遇到的问题及解决方法

我在设计这个程序时主要遇到两个问题。

第一个大的问题就是怎样才能实现查询经过站点和显示车次途径车站和,经过查阅书籍之后,通过以下代码就可以实现了:

Private Sub Com1_Click() '查询经过站点

Dim n As Integer

List1.Clear: List2.Clear '清除界面

For i = 0 To k

If str(i) = Cob1.Text Then

For j = 0 To num - 1

If i < int1(j + 1) And i > int1(j) Then '判断经过站的车次区间

List1.List(n) = str1(j)

n = n + 1

End If

Next j

End If

Next i

End Sub

Private Sub Form_Activate()

Text1.SetFocus '起点站获得焦点

End Sub

Private Sub List1_Click() '显示车次途径车站和时刻

Dim m As Integer, b As String, n As Integer, p As Integer

b = List1.Text: j = 0

List2.Clear

For i = 0 To num - 1

If b = str1(i) Then

Text1.Text = str2(i): Text2.Text = str3(i) '将起点站,终点站,发车时刻,到达时刻添入文本框中

Text3.Text = str4(i): Text4.Text = str5(i)

End If

End Sub

我所遇到的二个问题就是怎样才能让各项对齐,在网络上找到了一段非常重要的代码“List2.List(j) = str(m) + Space(p) + RTrim(Format(str(m + 1), "")) + RTrim(Format(str(m + 2), ""))”,和一些提示,以下代码得以实现:

If List1.ListIndex = List1.ListCount - 1 Then n = k Else n = int1(i + 1)

For m = int1(i) + 2 To n - 3 Step 3

Select Case Len(str(m)) '判断站名长度以便list2中各项对齐

Case Is = 2: p = 5

Case Is = 3: p = 3

Case Is = 4: p = 1

End Select

List2.List(j) = str(m) + Space(p) + RTrim(Format(str(m + 1), ")) + RTrim(Format(str(m + 2), ""))

'对齐各项

j = j + 1

Next m

End If

Next i

End Sub

列车时刻查询界面设计:

一、 系统登陆界面设计

二、查询界面设计

源程序代码

Public Class Form1

Dim Content(,) As String

Dim Detail(,,) As String

Private Sub a()

FileOpen(1, Application.StartupPath & "\content.txt", OpenMode.Input) 'content.txt有多少行

Dim Temporary1() As String

Dim x As Integer

Do Until EOF(1)

LineInput(1)

x += 1

Loop

FileClose(1)

FileOpen(1, Application.StartupPath & "\content.txt", OpenMode.Input) 'content.txt的文件写入Content二维数组

ReDim Temporary1(x - 1)

ReDim Content(x - 1, 4)

For i = 0 To x - 1

Temporary1(i) = LineInput(1)

For o = 0 To 4

Content(i, o) = Split(Temporary1(i), ",")(o)

Next

Next

FileClose(1)

For i = 0 To UBound(Content) 'Content二维数组中列车次写入listbox

ListBox1.Items.Add(Content(i, 0))

Next

FileOpen(2, Application.StartupPath & "\detail.txt", OpenMode.Input) 'detail.txt 并将其内容写入Detail三维数组

Dim Temporary2 As String = ""

Dim Temporary3() As String

Dim Temporary4(,) As String

Dim p As Integer

Do Until EOF(2)

p += 1

Temporary2 &= LineInput(2) & "+"

Loop

ReDim Temporary3(UBound(Content))

ReDim Temporary4(UBound(Content), p - UBound(Content) - 1)

ReDim Detail(UBound(Content), UBound(Temporary4, 2), 2)

Temporary3 = Split(Temporary2, "*")

For q = 1 To UBound(Temporary3)

For w = 0 To UBound(Split(Temporary3(q), "+"))

Temporary4(q - 1, w) = Split(Temporary3(q), "+")(w)

Next

Next

For r = 0 To UBound(Content)

For t = 2 To UBound(Temporary4, 2) - 1

If Temporary4(r, t) <> Nothing And Temporary4(r, t) <> "" Then

Detail(r, 0, 0) = Temporary4(r, 1)

For y = 0 To 2

Detail(r, t - 1, y) = Split(Temporary4(r, t), ",")(y)

Next

End If

Next

Next

FileClose(2)

For w = 0 To UBound(Content) 'Detail数组内容写入经停车站下拉栏

For q = 1 To UBound(Detail, 2)

If Detail(w, q, 0) <> Nothing And Detail(w, q, 0) <> "" Then

If ViaStation.Items.Contains(Detail(w, q, 0)) = False Then

ViaStation.Items.Add(Detail(w, q, 0))

End If

End If

Next

Next

End Sub

Private Sub ShowAllTrains_Click(sender As System.Object, e As System.EventArgs) Handles ShowAllTrains.Click '显示全部车次按钮按下触发的事件

a()

ViaStation.Text = ""

ListBox1.Items.Clear()

For i = 0 To UBound(Content)

ListBox1.Items.Add(Content(i, 0) & )

Next

End Sub

Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged '选定listbox某一项所触发的事件

If ListBox1.SelectedIndex <> -1 Then

StartStation.Text = Content(ListBox1.SelectedIndex, 1)

DestinationStation.Text = Content(ListBox1.SelectedIndex, 2)

StartTime.Text = Content(ListBox1.SelectedIndex, 3)

ArriveTime.Text = Content(ListBox1.SelectedIndex, 4)

TxtDetail.Text = Nothing

For u = 1 To UBound(Detail, 2)

If Detail(Selection, u, 0) <> Nothing And Detail(Selection, u, 0) <> "" Then

If Detail(Selection, u, 1) = "---" Then

TxtDetail.Text &= Detail(Selection, u, 0) & Space(48 - 5 * Len(Detail(Selection, u, 0))) & Detail(Selection, u, 1) & Space(39 - 2 * Len(Detail(Selection, u, 1))) & Detail(Selection, u, 2) & vbCrLf

Else

TxtDetail.Text &= Detail(Selection, u, 0) & Space(55 - 2 * Len(Detail(Selection, u, 1)) - 5 * Len(Detail(Selection, u, 0))) & Detail(Selection, u, 1) & Space(50 - 2 * Len(Detail(Selection, u, 2)) - 2 * Len(Detail(Selection, u, 1))) & Detail(Selection, u, 2) & vbCrLf

End If

End If

Next

End If

End Sub

Private Sub ViaStation_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ViaStation.TextChanged '经停站输入文字或下拉栏选中某项所触发的事件

ListBox1.Items.Clear()

For z = 0 To UBound(Detail)

For c = 1 To UBound(Detail, 2)

If Detail(z, c, 0) = ViaStation.Text Then

If ListBox1.Items.Contains(Detail(z, 0, 0)) = False Then

ListBox1.Items.Add(Detail(z, 0, 0))

End If

End If

Next

Next

End Sub

Function Selection() As Integer '根据Ylistbox选中项,返回其在Detail数组中所在的位置

For q = 0 To UBound(Detail)

If Detail(q, 0, 0) = Replace(ListBox1.SelectedItem.ToString, "ä?", "") Then

Return q

Exit Function

End If

Next

Return -1

End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

End Class

总结及个人心得体会

综合分析,本设计有四个难点

1. 程序显示的信息都是从content.txtdetail.txt两个文件中读取的。如果列车时刻没有变化,只需修改这两个文件的内容即可,不必改动程序。

2. Content.txt文件保存了各车次的概要信息,包括车次名,起点站,终点站,发车时刻,到达时刻,一个车次占一行。

3. Detail.txt文件中保存了所有车次停靠站的详细信息。每个车次信息的保存方式都是相同的:首先一个星号“*为一行:然后是车次名为一行:在后是停靠站的站名和到达,发车时刻,每个站为一行。起点站的“到达时刻”和终点站的“发车时刻”均为“--”。因为每次车停靠站的数目不同,在读取detail.txt文件时,必须正确判断星号“*”的位置。

4. 序应在启动时将所有信息从文件读入动态数组中,从而不必在查询过程中频繁地读取文件影响查询速度。

存在的不足:

只能够查询信息,不能够扩充程序使之对列车信息进行修改,添加和删除操作。

心得及体会

通过这次VB课程设计,我学到了很多很多的东西,同时不仅可以巩固了以前学过的知识,而且学到了很多书本上所没有学到的知识。通过这次课程设计是我懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说是困难重重,这毕竟是自己第一次做一个程序,难免会遇到各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解的不够深刻,掌握的不够牢固。通过这次课程设计之后,一定把以前所学的知识重新温故。

程序设计师需要大量的时间去动手练习才能体会到它的内涵,同时还需要用心去投入,时间和感情花下去之后,的确慢慢的感受到有所收获了,我也收获到了一点点的乐趣。可能是一个良性循环的开始吧,相信以后会做的更好的。

参考文献

[1]. 王栋,visual basic课程设计,北京,清华大学出版社

[2]. 王栋,visual basic程序设计实用教程,北京,清华大学出版社

[3]. 陈锐,夏敏捷,赵琳编著,Visual Basic.NET经典游戏编程开发,北京,科学出版社

本文来源:https://www.2haoxitong.net/k/doc/f908b30fbfd5b9f3f90f76c66137ee06eff94e70.html

《VB课程设计报告.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式