VB的第一个项目(一)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > VB的第一个项目(一)

VB的第一个项目(一)

 2017/9/25 22:38:15  无心无信  程序员俱乐部  我要评论(0)
  • 摘要:前言-----本人也是刚刚接触VB,企业的VB代码基本能看的懂,但是自己开发,只能呵呵。一般在刚学习一门新的语言时,很容易发生一些自己相当然的认识错误,so,记下并分享开发学习的过程,望指正。-----------世界因分享而精彩,安卓因开源更强大。不知道是否有人和我一样,看不下去那些VB的书籍,既然这样,不如就在项目中学习,我在学习java的时候做的第一个项目就是---fuck的学生信息管理系统,屁话说了一大堆,直接开始。首先对这个little的project进行一下分析
  • 标签:一个 项目

         前言-----本人也是刚刚接触VB,企业的VB代码基本能看的懂,但是自己开发,只能呵呵。一般在刚学习一门新的语言时,很容易发生一些自己相当然的认识错误,so,记下并分享开发学习的过程,望指正。-----------世界因分享而精彩,安卓因开源更强大。

 


 

           不知道是否有人和我一样,看不下去那些VB的书籍,既然这样,不如就在项目中学习,我在学习java的时候做的第一个项目就是---fuck的学生信息管理系统,屁话说了一大堆,直接开始。

  首先对这个little的project进行一下分析,就很不正式的直接意淫一下大概是什么样子的了,(一般正规的公司都要做一大堆的图啊,表啊的什么的,一个案子的60%的时间就这么烧了)。

       功能模块划分

  • 登录注册(IndexForm)    共分实现四个阶段 :1.比对字符串,字符串层次上的实现(一个人) 。    2.比对对象,对象层次的实现(一个人)。3 数组,集合,列表层次的实现(多个人)。4.数据库层次上的实现(多个人),连接oracle和Access数据库。
  • 显示及增删改查(Mainform)。显示学生的基本信息,实现学生信息数据的基本维护。

 

  一个基本简单的Excel级别的管理系统就是这样了。在开始代码之前要解决以下一些问题

     问题一:VB代码的文件是什么样子的。

 

       一般情况会有以下一些文件的产生,正常的话至少是3个。

     

   首先.vbp  .vbw  .frm是必须的,其中.vbp保存的是版本版权等信息,.vbw保存的是离开工程时的一些信息,.frm中保存的窗体代码,一般当它还没修炼成.exe文件是,要想运行都是要运行.vbp文件的。那个黑色箭头的.scc文件是只有外接团队协同软件VSS的时候才会生成。.cls是class module的产物,.bas是module的产物,其他的.pag是属性文件的后缀,.ctl是用户控制文件的后缀。是不是很烦,java中就只有.java和.class文件。

  

  问题二:VB中怎么去调试程序。

  老师傅在我进公司的第一天告诉我的,F8 单步执行,正常的按F8,会直接到达程序的入口。shift+F8,不会进入函数方法直接得到返回值。F5全速前进,一般配合断点使用,直接在循环的结束位置设断点,然后全速。

  VB中好像没有控制台输出,我找了很久,试了很多也没能在控制台输出,有人知道的,赐教一下,就像就java中System.out.println和c#中的Console.WriteLine()。我的解决方案是打开''立即"窗口,?+“从代码中复制的变量”+enter,会输出值。

       立即窗口在“视图”下面的‘立即’,快捷键是ctrl+G。最low的方法就是鼠标点到变量上去。

 

 问题三:文件夹架构是怎样的。

  在我不知道什么spring,mybits等等这些被业界吹得神乎其神的javaEE框架时,我总感觉这些框架好屌,等我真正掌握这些框架时,它给我的感觉就是文件夹和配置文件也就是XML的装X而已,当然这是我的戏谑之言,框架还是很屌的。相比而言VB中的文件夹好像被限定死了,这让我很不习惯。虽然有三层架构也就是模型--控制器--视图的文件分法,但是在实际的项目中文件怎么分还是我自己说了算,但是VB中,好像变了,只有个命名权。

   只能在project下面点击添加这些东西,其中三个非常重要的就是form,module,和class module。很自然就有了问题四。

  问题四:module和class module的区别以及这2者里面的标准是怎么定义的,比如javaBean是有很严格的格式的,包括属性的权限,空参构造,有参构造,set/get函数等。

  

 

  大概的意思就是module中定义的对象不可实例化,class module中定义的可以实例化,还有作用域的区别。还有就是module中存放的一些公用的Sub(方法)和函数(function)。而类中存放的大概就是标准的类吧!

      先看2个标准的module和class module的例子,看看其中定义了一些什么,以及是怎么定义的,具体的区别我将在自己实际定义的时候,去尝试总结。

       module:

  1 Public fMainForm As frmMain
  2 Private IsConnect As Boolean    ' 标记数据库是否连接
  3 
  4 Private cnn As ADODB.Connection   '连接数据库的Connection对象
  5 Private rs As ADODB.Recordset     '保存结果集的Recordset对象
  6 Public strSQL As String     '保存执行SQL语句的字符串
  7 Public Conn As String   '连接字符串
  8 Public MyUser As New clsUser            '用户对象
  9 Public CurUser As New clsUser            '当前用户对象
 10 Public strDB As String  '数据库名称
 11 Public Pension_Rate As Single   '养老保险交费比例
 12 Public Medi_Rate As Single   '医疗保险交费比例
 13 Public Tax_Start As Currency     '个税起征点
 14 Sub Main()
 15     Dim fLogin As New frmLogin
 16     strDB = "\DATA\工资.mdb"
 17     Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
 18     App.Path + strDB + ";Persist Security Info=False"
 19     
 20     fLogin.Show vbModal
 21     If Not fLogin.OK Then
 22         '登录失败,退出应用程序
 23         End
 24     End If
 25     Unload fLogin
 26     frmSplash.Show
 27     frmSplash.Refresh
 28     Set fMainForm = New frmMain
 29     Load fMainForm
 30     Unload frmSplash
 31     fMainForm.Show
 32 End Sub
 33 
 34 Public Sub Connect() '连接数据库
 35     If IsConnect = True Then  '如果连接标记为真,则返回。否则会出错
 36         Exit Sub
 37     End If
 38     Set cnn = New ADODB.Connection  '关键New用于创建新对象cnn
 39     cnn.ConnectionString = Conn  '设置连接字符串ConnectionString属性
 40     cnn.Open  '打开到数据库的连接
 41     
 42     If cnn.State <> adStateOpen Then  '判断连接的状态
 43         MsgBox "数据库连接失败", vbOKOnly + vbCritical, "警告"    '如果连接不成功,则显示提示信息,退出程序
 44         End
 45     End If
 46     
 47     IsConnect = True  '设置连接标记,表示已经连接到数据库
 48 End Sub
 49 
 50 Public Sub Disconnect() '断开与数据库的连接
 51     Dim rc As Long
 52     If IsConnect = False Then Exit Sub '如果连接标记为假,标明已经断开连接,则直接返回
 53     cnn.Close  '关闭连接
 54     
 55     Set cnn = Nothing
 56     IsConnect = False
 57 End Sub
 58 '
 59 'Public Sub DB_Connect() '使用Connect_Num控制数据库连接
 60 '    Connect_Num = Connect_Num + 1
 61 '    Connect
 62 'End Sub
 63 'Public Sub DB_Disconnect()
 64 '    If Connect_Num >= CONNECT_LOOP_MAX Then
 65 '        Connect_Num = 0
 66 '        Disconnect
 67 '    End If
 68 'End Sub
 69 'Public Sub DB_Disconnect_Forced() '强制关闭数据库,计数器复位
 70 '    Connect_Num = 0
 71 '    Disconnect
 72 'End Sub
 73 
 74 Public Sub SQLExt(ByVal strSQLstmt As String)   '执行数据库操作语句
 75     Dim cmd As New ADODB.Command  '创建Command对象cmd
 76     Connect    '连接到数据库
 77     Set cmd.ActiveConnection = cnn  '设置cmd的ActiveConnection属性,指定与其关联的数据库连接
 78     cmd.CommandText = strSQLstmt  '设置要执行的命令文本
 79     cmd.Execute
 80     Set cmd = Nothing
 81     Disconnect
 82 End Sub
 83 
 84 Public Function QueryExt(ByVal strSQLstmt As String) As ADODB.Recordset '执行数据库查询语句
 85     Dim rst As New ADODB.Recordset
 86     Connect    '连接到数据库
 87     
 88     Set rst.ActiveConnection = cnn    '设置rst的ActiveConnection属性,指定与其关联的数据库连接
 89     rst.CursorType = adOpenDynamic    '设置游标类型
 90     rst.LockType = adLockOptimistic   '设置锁定类型
 91     rst.Open strSQLstmt    '打开记录集
 92     Set QueryExt = rst    '返回记录集
 93 End Function
 94 
 95 Public Function CountTax(curPay As Currency)                '定义过程,用于计算所得税
 96     Dim curTemp As Currency, curTax As Currency
 97     curTemp = curPay - Tax_Start
 98     Select Case curTemp
 99     Case Is <= 0
100         curTax = 0
101     Case 0.01 To 500
102         curTax = curTemp * 0.05
103     Case 500.01 To 2000
104         curTax = curTemp * 0.1 - 25
105     Case 2000.01 To 5000
106         curTax = curTemp * 0.15 - 125
107     Case 5000.01 To 20000
108         curTax = curTemp * 0.2 - 375
109     Case 20000.01 To 40000
110         curTax = curTemp * 0.25 - 1375
111     Case 40000.01 To 60000
112         curTax = curTemp * 0.3 - 3375
113     Case 60000.01 To 80000
114         curTax = curTemp * 0.35 - 6375
115     Case 80000.01 To 100000
116         curTax = curTemp * 0.4 - 10375
117     Case Is > 100000
118         curTax = curTemp * 0.45 - 15375
119     End Select
120     CountTax = curTax
121 End Function
122 
123 Public Function MakeStr(ByVal Str As String) As String
124     MakeStr = Trim(Replace(Str, "'", "''"))
125 End Function

  class module:

 1 Public strName As String    '用户名
 2 Public strPWD As String '密码
 3 Public iUserClass As Integer    '用户类型
 4 Public Sub Init()
 5     strName = ""
 6     strPWD = ""
 7     iUserClass = 0
 8 End Sub
 9 
10 Public Sub DeleteUser(ByVal UserName As String) '删除用户数据
11     If UserName = "Admin" Then
12         Exit Sub
13     End If
14     strSQL = "DELETE FROM [User] WHERE name='" + Trim(UserName) + "'"
15     SQLExt (strSQL)
16 End Sub
17 
18 Public Function GetInfo(ByVal UserName As String) As Boolean
19     Dim rs As New ADODB.Recordset
20     strName = UserName
21     strSQL = "SELECT * FROM [User] WHERE name='" + Trim(UserName) + "'"
22     Set rs = QueryExt(strSQL)
23     If rs.EOF Then
24         Init    '调用该类的初始化方法
25         GetInfo = False
26         Exit Function
27     Else
28         strPWD = Trim(rs.Fields(1))
29         iUserClass = rs.Fields(2)
30         GetInfo = True
31     End If
32 End Function
33 
34 Public Function ExistUser(ByVal UserName As String) As Boolean '存在用户
35     Dim rs As New ADODB.Recordset
36     strSQL = "SELECT * FROM [User] WHERE Name='" + Trim(UserName) + "'"
37     Set rs = QueryExt(strSQL)
38     If Not rs.EOF Then
39         ExistUser = True
40     Else
41         ExistUser = False
42     End If
43 End Function
44 
45 Public Sub AddUser() '增加用户
46     strSQL = "INSERT INTO [User] Values('" + Trim(strName) + "','" + Trim(strPWD) _
47         + "'," + Trim(Str(iUserClass)) + ")"
48     SQLExt (strSQL)
49 End Sub
50 Public Sub UpdateUser(ByVal UserName As String) '更改用户信息
51     strSQL = "Update [User] Set name='" + Trim(strName) _
52         + "',PWD='" + Trim(strPWD) + "',UserClass=" + Trim(Str(iUserClass)) _
53         + " WHERE name='" + Trim(UserName) + "'"
54     SQLExt (strSQL)
55 End Sub
56 
57 Public Sub UpdatePassword(ByVal UserName As String) '更改用户密码
58     strSQL = "Update mima Set PWD='" + Trim(strPWD) _
59         + "' WHERE name='" + Trim(UserName) + "'"
60     SQLExt (strSQL)
61 End Sub

 

   解决了这些总体的问题之后,就可以开始写宇宙级的学生信息管理系统了。

 

发表评论
用户名: 匿名