VB+Access学生公寓管理系统 第10页

4.18请假记录删除效果图

②界面制作与实现方法

这个窗体与上面不同的是多了一个姓名条件,其它的都基本一致。由于在一个公寓中会有很多人要得名,但是在某一公寓某一寝室中只会有一个人,这也是一个公寓分配住宿人员时的基本标准,因为这样也便于公寓本身的管理。此删除窗体只有单条删除与上面不同,单条删除部分代码如下:

If (MsgBox("你真的想删除日期为  " & Combo1.Text & "   公寓为  " & Text1.Text & "   寝室为  " & Text2.Text & "   姓名为  " & Text3.Text & "  的请假记录吗?", vbOKCancel, "系统提示")) = vbOK Then

Adodc1.Refresh

Adodc1.Recordset.ActiveConnection.Execute "delete from qingjia where 日期='" & Trim(s) & "'and 公寓='" & Trim(Text1.Text) & "'and 寝室='" & Trim(Text2.Text) & "'and 姓名='" & Trim(Text3.Text) & "'"   ', , adExecuteNoRecords

Adodc1.Recordset.Update

Combo1.Text = ""

Text1.Text = ""

Text2.Text = ""

MsgBox "删除成功", , "系统提示"

End If

4.8.3 违规删除

①效果图

4.19违规记录删除效果图

②界面制作与实现方法

违规删除操作与请假删除操作基本一致,不同之处只是在于后台对不同的表进行处理,前台界面大体相同。其实现方法与上现的也差不太多,这里就不在叙述。

单条删除记录:

Dim sql As String

Dim s As String

Dim panduan As Boolean

If Combo1.Text = "" And Text1.Text = "" And Text2.Text = "" Then

MsgBox "请输入删除条件!", , "提示"

Exit Sub

End If

s = Combo1.Text

If (MsgBox("你真的想删除日期为  " & Combo1.Text & "   公寓为  " & Text1.Text & "   寝室为  " & Text2.Text & "   姓名为  " & Text3.Text & "  的违规记录吗?", vbOKCancel, "系统提示")) = vbOK Then

Adodc1.Refresh

Adodc1.Recordset.ActiveConnection.Execute "delete from weigui where 日期='" & Trim(s) & "'and 公寓='" & Trim(Text1.Text) & "'and 寝室='" & Trim(Text2.Text) & "' and 姓名='" & Trim(Text3.Text) & "'"   ', , adExecuteNoRecords

Adodc1.Recordset.Update

Combo1.Text = ""

Text1.Text = ""

Text2.Text = ""

MsgBox "删除成功", , "系统提示"

End If

Unload Me

成批删除记录:

If (MsgBox("你真的想删除日期为  " & Combo2.Text & "  的记录吗?", vbOKCancel, "系统提示")) = vbOK Then

Adodc1.Refresh

Adodc1.Recordset.ActiveConnection.Execute "delete from weigui where 日期='" & Trim(Combo2.Text) & "'"

Combo2.Text = ""

MsgBox "删除成功", , "系统提示"

End If

Unload Me

删除所有记录:

If (MsgBox("你真的想删除所有的记录吗?一旦删除即不可恢复", vbOKCancel, "系统提示")) = vbOK Then

For I = 1 To Adodc1.Recordset.RecordCount

Adodc1.Recordset.Delete

Adodc1.Recordset.MoveNext

Next I

End If

MsgBox "删除成功", , "系统提示"

Unload Me

4.8.4 资产删除

①效果图

4.20资产删除效果图

② 界面制作与实现方法

与卫生记录删除不同的是寝室改为了名称。值得注意的是,此处公寓与名称都要人工输入,所以在输入的时候要注意不要有多余字符,否则会出错删除不掉的情况。单条删除部分源码如下:

If (MsgBox("你真的想删除日期为  " & Combo1.Text & "   公寓为  " & Text1.Text & "   名称为  " & Text2.Text & "  的资产记录吗?", vbOKCancel, "系统提示")) = vbOK Then

Adodc1.Refresh

Adodc1.Recordset.ActiveConnection.Execute "delete from zichan where 日期='" & Trim(s) & "'and 公寓='" & Trim(Text1.Text) & "'and 名称='" & Trim(Text2.Text) & "'"   ', , adExecuteNoRecords

Adodc1.Recordset.Update

Combo1.Text = ""

Text1.Text = ""

Text2.Text = ""

MsgBox "删除成功", , "系统提示"

End If

4.9值班记录

   值班记录这项可以说是此软件的一个新增功能。它的界面小巧,并且它可以让值班人员记录前天发生的一些事情,字数在1000字左右。可以说是一个小型的日记本。

4.9.1 值班记录

①值班记录效果图

4.21值班记录效果图

② 实现思想与功能

此窗体的功能以及其源代码是经过修改之后而形成的,源文件是一个电子记事本,发现后经过修改后做出一个日记本。

在上面的日期后面的文本框中,你可以输入如窗口标题后面所示的日期格式后,点击查看,即可以查看到所选日期的详细记录。这是一种查询方法,当然你也可以用右面简单的上一条与下一条进行快速查看,但是它只能查看当日日期起开始的记录,如果与你所想要查看的日期相差很远,那么你就需要使用第一种方法了。

这个日记本还支持修改与删除功能。当你想编辑或删除某一日期的时候时,你需要用查看方法找到该记录,然后对当前记录使用编辑或删除即可完成操作。删除后,记录即不可恢复,且此日记目前还没有备份功能,慎重操作。

如果你今天值班,还没有写值班记录,那么你可以点击增加按钮,开始写当日的值班记录,说明的是,每天只可以写一次记录。当你写完今天记录后,在点击增加时会提示你今日已写完。但是你可以对今日记录进行编辑修改。

本程序源码较为复杂,主要都是对文件进行操作,并没有把记录添加到数据库中,所以不支持备份操作,且本窗体中的操作程序还用到了一个模块。部分代码如下:

查看上一条记录:

If giCurrentRecord > 1 Then

      giCurrentRecord = giCurrentRecord - 1

   ReadData (giCurrentRecord)

End If

查看下一条记录:

If giCurrentRecord < giRecordCount Then

   giCurrentRecord = giCurrentRecord + 1

ReadData (giCurrentRecord)

End If

查询数据:

    Dim I%

    For I = 1 To giRecordCount

        If goDiarys(I).fldDate = sql Then

        giCurrentRecord = I

        FindData = True

        Exit For

        End If

    Next

    ReadData giCurrentRecord

修改数据:  

Dim iFreefile%, I%

    iFreefile = FreeFile()

    Open gsPath & "DATA.DAT" For Random As #iFreefile Len = Len(goDiary)

    goDiarys(giCurrentRecord).fldDate = frminput.txtDate

    goDiarys(giCurrentRecord).fldMemo = frminput.txtMemo

    goDiary = goDiarys(giCurrentRecord)

      Put #iFreefile, giCurrentRecord, goDiary

    ReadData (giCurrentRecord)

    Close #iFreefile

    ModifyData = True

删除日记中的记录:

If txtDate = "" Then

MsgBox "请选择记录!", , "每日一记"

Exit Sub

End If

 Dim Result

  If giRecordCount = 0 Then Exit Sub

  Result = MsgBox("确定删除记录吗?不可恢复", vbQuestion + vbYesNo, "电子日记本")

  If Result = vbYes Then

  DeleteData

  gbFirst = False

  If giCurrentRecord > 1 Then giCurrentRecord = giCurrentRecord - 1

  Form_Load

  End If

4.9.2 增加记录

①增加记录效果图

4.22增加记录效果图

② 实现思想与程序源码

日期后显示当前日期,但是可以修改。每篇记录的字数要求在1000字以内。支持对当前字符输入的统计,确定完成本日记录后,点击保存即可。

部分代码如下:

Dim bSaved As Boolean, bCF

If txtDate = "" Or txtMemo = "" Then Exit Sub ' 如果记录未填,则退出

If riji.Tag = "addnew" Then

    If giRecordCount >= 1 Then        '新增时,检查记录是否重复

       gsSql = frminput.txtDate

       bCF = FindData(gsSql)

       If bCF Then

         MsgBox "今天你已经写过日记了!", vbExclamation + vbOKOnly, "每日一记"

         txtMemo.SetFocus

         Exit Sub

       End If

    End If

    giRecordCount = giRecordCount + 1

    bSaved = WriteData()

ElseIf riji.Tag = "modify" Then '

    bSaved = ModifyData()

End If

If bSaved = True Then

  AddNext = MsgBox("保存完毕!", vbExclamation + vbOKOnly, "每日一记")

End If

Unload Me

由于此段代码中用到了一个模块,在模块中定义了很多过程,各过程实现功能及代码如下所示:

读取数据:

Public Sub ReadData(curRecord As Integer)  '读取数据

On Error Resume Next

Dim strcaption$

   riji.txtDate = goDiarys(curRecord).fldDate

   riji.txtMemo = goDiarys(curRecord).fldMemo

   strcaption = "每日一记   [" & Date & "]  " & Time & "  " & WeekdayName(Weekday(Date)) & "  记录:" & giCurrentRecord & "/" & giRecordCount

   riji.Caption = strcaption

End Sub

查询数据:

Public Function FindData(sql As String) As Boolean '查询数据

On Error Resume Next

    Dim I%

    For I = 1 To giRecordCount

        If goDiarys(I).fldDate = sql Then

        giCurrentRecord = I

        FindData = True

        Exit For

        End If

    Next

    ReadData giCurrentRecord

End Function

新增数据:

Public Function WriteData() As Boolean '新增数据

On Error Resume Next

     Dim iFreefile%, I%

    iFreefile = FreeFile()

    Open gsPath & "DATA.DAT" For Random As #iFreefile Len =  en(goDiary)

    ReDim Preserve goDiarys(giRecordCount)

    goDiarys(giRecordCount).fldDate = frminput.txtDate

    goDiarys(giRecordCount).fldMemo = frminput.txtMemo

    goDiary = goDiarys(giRecordCount)

      Put #iFreefile, giRecordCount, goDiary

    giCurrentRecord = giRecordCount

    ReadData (giCurrentRecord)

    Close #iFreefile

    WriteData = True

End Function

修改数据:

Public Function ModifyData() As Boolean '修改数据

On Error Resume Next

     Dim iFreefile%, I%

    iFreefile = FreeFile()

    Open gsPath & "DATA.DAT" For Random As #iFreefile Len =len(goDiary)

    goDiarys(giCurrentRecord).fldDate = frminput.txtDate

    goDiarys(giCurrentRecord).fldMemo = frminput.txtMemo

    goDiary = goDiarys(giCurrentRecord)

      Put #iFreefile, giCurrentRecord, goDiary

    ReadData (giCurrentRecord)

    Close #iFreefile

    ModifyData = True

End Function

删除数据:

Public Sub DeleteData() '删除数据

On Error Resume Next

   Dim iFreefile%, I%, J%

   I = 1: J = 1

    iFreefile = FreeFile()

   Open gsPath & "temp.dat" For Random As #iFreefile Len = Len(goDiary)

   goDiarys(giCurrentRecord).fldMemo = "IWantToKillIt*" & goDiarys(giCurrentRecord).fldMemo  '加删除标记

   For I = 1 To giRecordCount                   '无删除标记的记录保存到临时文件,TEMP.DAT

      If Left(goDiarys(I).fldMemo, 14) <> "IWantToKillIt*" Then

      goDiary = goDiarys(I)

      Put #iFreefile, J, goDiary              '在此必须有I,J两个变量,因为使用二进制保存文件,

      J = J + 1                               '1开始到后面,中间如有间隔就会出现乱码

      End If

   Next

   Close #iFreefile

   Kill gsPath & "data.dat"

   Name gsPath & "temp.dat" As gsPath & "data.dat"

   riji.txtDate = ""

   riji.txtMemo = ""

End Sub

说明:由于本人能力有限,对文件部分还不算是很了解,这个功能的实现主要是借用了网上的一个电子记事本。本人只是对其做了一些修改,做成了这个每日一记,但个人认为此功能还算是可以。

4.10 Help制作

Help文档的制作也标志着本软件基本完成。制作help文档需要一个专业制作软件,本人使用的是破解版的QuickCHM,此软件无论在功能上还在是操作上用起来都是很方便。

QuickCHM软件的界面及其使用如下:

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有