zoukankan      html  css  js  c++  java
  • VB的第一个项目

        前言-----本人也是刚刚接触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
    复制代码

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

  • 相关阅读:
    类加载
    LinkedList插入排序实现
    99乘法表
    关于IO流的抽象类
    分解质因数
    Struts2小demo遇到的几个问题
    Tomcat设置欢迎页问题
    数据库迁移
    EF – 1.模式
    正则表达式
  • 原文地址:https://www.cnblogs.com/zzp0320/p/8257582.html
Copyright © 2011-2022 走看看