楼主 0Mouse |
【系统由来】 一个朋友开驾校,请了一个小工负责收交费记录,希望有个工具可以用来记录收交费的情况,同时能够实现这样的效果:小工只能录入数据,不能修改,资料修改权掌握在自己手上。
【登录界面】
【最终文件清单】 1. 启动文件:驾校费用记录系统1.0.exe 2. 系统文件:feerec.dll 3. 系统登录密码.txt 4. 系统使用视频教程.wmv
【开发所用软件及其用途】 Excel 2003:制作基本框架并借助vba代码实现预期功能; Illustrator CS3:设计启动显示画面的某些图形元素; Photoshop CS3:设计启动显示画面背景图,设置标题文字特效,设计“录入”、“刷新”按钮; Visual Basic 6.0:制作启动程序,避开选择“禁用宏”和“启用宏”的环节。 |
2楼 0Mouse |
【开发流程】
1. 制作基本框架
新建一个Excel文档,命名为“feerec.xls”;双击打开,将Sheet1、Sheet2、Sheet3依次重命名为“记录”、“历史记录”和“备用表”;按下Ctrl键不放,单击Sheet1和Sheet2,在A1:F1区域依次输入“流水号”、“日期”、“姓名”、“费用类型”、“金额”、“备注”,并设置加粗,添加边框线;为A列~F列设置水平居中、数字类型等格式。
2. 制作用户窗体
2.1 制作系统登录窗体
2.1.1 添加窗体、控件,修改部分属性值
按下Alt+F11,依次单击“插入”-“用户窗体”,自动生成UserForm1,修改其相应属性值如下: Caption:系统登录; StartUpPosition:2-屏幕中心。
在用户窗体上添加一个TextBox1控件,修改相应属性值如下: BackStyle:0-fmBackStyleTransparent; ForeColor:&H00FFFFFF&; MaxLength:12; PasswordChar:*。
在用户窗体上再添加两个CommandButton控件,修改相应属性值如下: BackStyle:0-fmBackStyleTransparent; Caption:留空。
至此,系统登录窗体及其控件的截图如下:
2.1.2 添加代码
TextBox1代码:- '在密码输入框内按回车则触发登录按钮事件。
- Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
- If KeyCode = 13 Then
- CommandButton1_Click
- End If
- End Sub
CommandButton1代码:- '系统登录
- Private Sub CommandButton1_Click()
- If TextBox1.Value = "" Then
- MsgBox "请输入密码。 ", vbInformation + vbOKOnly, "提示"
- TextBox1.SetFocus
- ElseIf TextBox1.Value = "123" Then
- Unload Me
- Application.Visible = True
- Application.WindowState = xlMaximized
- Sheet3.Activate
- Sheet3.Unprotect "luuqian"
- Sheet3.Range("A1").Select
- Selection.Locked = True
- Sheet1.Activate
- Sheet1.Unprotect "luuqian"
- Range("A1").Locked = True
- ElseIf TextBox1.Value = "456" Then
- Unload Me
- Application.Visible = True
- Application.WindowState = xlMaximized
- Sheet3.Activate
- Sheet3.Unprotect "luuqian"
- Sheet3.Range("A1").Select
- Selection.Locked = False
- ActiveSheet.Protect "luuqian"
- ActiveSheet.EnableSelection = xlNoSelection
- Sheet1.Activate
- Sheet1.Unprotect "luuqian"
- Sheet1.Range("A1").Select
- Selection.Locked = False
- ActiveSheet.Protect "luuqian"
- ActiveSheet.EnableSelection = xlNoSelection
- Else
- MsgBox "密码错误,请重新输入。", vbExc**tion + vbOKOnly, "提示"
- TextBox1.Text = ""
- TextBox1.SetFocus
- End If
- Range("A2").Select
- ActiveWindow.FreezePanes = True
- Range("A1").Select
- End Sub
CommandButton2代码:- '系统退出
- Private Sub CommandButton2_Click()
- Unload Me
- If Workbooks.Count > 1 Then '如果打开的工作簿大于1个,则关闭本工作簿并显示Excel窗口。
- Application.Visible = True
- ThisWorkbook.Close False
- Else
- Application.Quit
- ThisWorkbook.Close False
- Application.Visible = True
- End If
- End Sub
|
3楼 0Mouse |
2.2 制作资料录入窗体
2.2.1 添加窗体、控件,修改部分属性值
按下Alt+F11,依次单击“插入”-“用户窗体”,自动生成UserForm2,修改其相应属性值如下: Caption:录入面板。
在用户窗体上添加三个Label控件,将Caption属性值依次修改为“姓名”、“金额”、“备注”,TabStop属性改为“False”;在三个Label控件的右侧分别添加一个TextBox控件,修改TextBox1的MaxLength为4。
在用户窗体上再添加两个OptionButton控件,将Caption属性值依次修改为“收费”、“交费”,再添加一个Frame1控件,修改其Caption属性值为“费用类型”,TabStop属性改为“False”,并调整其位置,框住两个OptionButton控件。
最后再添加两个CommandButton控件,将其Caption属性值依次修改为“录入”、“退出”。
至此,录入面板窗体及其控件的截图如下:
2.2.2 添加代码
UserForm2代码:- Private Sub UserForm_Initialize()
- Me.OptionButton1.Value = True
- TextBox1.SetFocus
- End Sub
- '禁止使用窗体关闭按钮退出
- Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
- If CloseMode = 0 Then Cancel = True
- End Sub
TextBox1代码:- Private Sub TextBox1_Change() '限制文本框1(姓名栏)只能输入汉字
- With TextBox1
- If ChnInstr(.Text) = False Then
- Beep '发声提醒
- .Text = Left(.Text, Len(.Text) - 1)
- End If
- End With
- End Sub
TextBox2代码:- Private Sub TextBox2_Change() '限制文本框2(金额栏)只能输入数字
- Dim i%, Str$
- With TextBox2
- For i = 1 To Len(.Text)
- Str = Mid(.Text, i, 1) '遍历文本框中输入的每一个字符。
- Select Case Str '测试文本框中输入的字符
- Case "0" To "9" '列出允许输入的字符。
- Case Else
- Beep
- .Text = Replace(.Text, Str, "") '如果输入的不是允许的字符,则使用Replace函数替换成空白。
- End Select
- Next
- End With
- End Sub
- Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
- If KeyCode = 13 Then
- CommandButton1_Click
- End If
- End Sub
CommandButton1代码:- '录入
- Private Sub CommandButton1_Click()
- Dim i%, j%
- i = Cells(Rows.Count, 1).End(xlUp).Row + 1
- j = Sheet3.Cells(Sheet3.Rows.Count, 1).End(xlUp).Row + 1
- ActiveSheet.Unprotect "luuqian"
- Sheet3.Unprotect "luuqian"
- If TextBox1.Text = "" Or TextBox2.Text = "" Then
- MsgBox "信息输入不全,请补充完整。", vbInformation + vbOKOnly, "提示"
- TextBox2.SetFocus
- Else
- If i = 2 Then
- Cells(i, 1) = 1
- Else
- Cells(i, 1) = Cells(i - 1, 1).Value + 1
- End If
- Sheet3.Cells(j, 1) = j - 1
- Cells(i, 2) = Date
- Sheet3.Cells(j, 2) = Date
- Cells(i, 3) = TextBox1.Value
- Sheet3.Cells(j, 3) = TextBox1.Value
- If Me.OptionButton1.Value = True Then
- Cells(i, 4) = "收费"
- Sheet3.Cells(j, 4) = "收费"
- Else
- Cells(i, 4) = "交费"
- Sheet3.Cells(j, 4) = "交费"
- End If
- Cells(i, 5) = TextBox2.Value
- Sheet3.Cells(j, 5) = TextBox2.Value
- Cells(i, 6) = TextBox3.Value
- Sheet3.Cells(j, 6) = TextBox3.Value
- With Cells(i, 1).Resize(1, 6).Borders
- .LineStyle = xlContinuous
- .Weight = xlThin
- .ColorIndex = xlAutomatic
- End With
- With Sheet3.Cells(j, 1).Resize(1, 6).Borders
- .LineStyle = xlContinuous
- .Weight = xlThin
- .ColorIndex = xlAutomatic
- End With
- Cells(i, 3).Select
- TextBox1.Text = ""
- TextBox2.Text = ""
- TextBox3.Text = ""
- TextBox1.SetFocus
- End If
- End Sub
CommandButton2代码:- '退出
- Private Sub CommandButton2_Click()
- If Range("A1").Locked = False Then
- Range("A1").Select
- ActiveSheet.Protect "luuqian"
- ActiveSheet.EnableSelection = xlNoSelection
- Sheet3.Protect "luuqian"
- Sheet3.EnableSelection = xlNoSelection
- End If
- Unload Me
- End Sub
|
4楼 滴水穿石 |
哇塞,好东西! 留个脚印,慢慢学习 |
5楼 0Mouse |
3. 添加显示窗体、“刷新”按钮等相关代码
双击工程窗口的“ThisWorkbook”,在弹出的空白窗格内输入以下代码:- Private Sub Workbook_Open()
- Application.Visible = False
- UserForm1.Show
- End Sub
依次单击“插入”-“模块”,在弹出的空白窗格内输入以下代码:- Sub 显示()
- UserForm2.Show
- End Sub
- Function ChnInstr(sr As String) As Boolean
- Dim i%, j%, k%
- ChnInstr = False
- sr = StrConv(sr, vbNarrow)
- i = Len(sr)
- For j = 1 To i
- If Asc(Mid$(sr, j, 1)) < 0 Then k = k + 1
- Next
- If k = i Then ChnInstr = True
- End Function
- Sub Refresh()
- If Range("A1").Locked Then
- Dim i%, j%, arr, brr
- i = Cells(Rows.Count, 3).End(xlUp).Row
- If i = 2 Then
- Range("A2") = ""
- Range("A2") = 1
- ElseIf i > 2 Then
- arr = Range("A2:A" & i)
- ReDim brr(1 To UBound(arr), 1 To 1)
- For j = 1 To i - 1
- brr(j, 1) = j
- Next
- Range("A2:A" & i).ClearContents
- Range("A2:A" & i) = brr
- Set arr = Nothing
- Set brr = Nothing
- Else
- MsgBox "现在的数据无需刷新。"
- End If
- Else
- MsgBox "只有管理员才能刷新流水号。", vbOKOnly, "提示"
- End If
- End Sub
4. 设计启动显示画面并加入启动窗体
先采用Illustrator CS3软件设计启动显示画面左下角的跑车,另存为“跑车.png”;
再采用Photoshop CS3设计整个启动显示画面的背景图,添加系统标题“驾校费用记录系统1.0”、“登录”、“退出”等文字、密码输入框的锁样图形,并通过“图层样式”等功能为以上元素添加一些特效,导入“跑车.png”图片,调整至相应位置,另存为“启动画面.jpg”;
双击工程窗口的UserForm1,再单击其属性窗口中Pciture属性右侧的按钮,在弹出的窗口中选择“启动画面.jpg”,单击“确定”按钮,调整UserForm1的高度和宽度,使之与“启动画面.jpg”的尺寸保持一致,再将TextBox1和CommandButton1、CommandButton2调整至相应位置。
窗体的Picture属性:
|
6楼 0Mouse |
5. 设计“录入”、“刷新”按钮并插入工作表和关联相应代码
采用Photoshop CS3设计“录入”和“刷新”按钮,另存为“录入.png”和“刷新.png”图片;插入“记录”工作表;右键单击“录入”图片,选择“指定宏”命令,在弹出窗口的“宏名”列表中选择“显示”,确定;右键单击“刷新”图片,选择“指定宏”命令,在弹出窗口的“宏名”列表中选择“Refresh”,确定。
“录入”和“刷新”按钮:
指定宏:
6. 保存、更名
保存“feerec.xls”,关闭文档,将其重命名为“feerec.dll”。
7. 制作启动程序
启动Visual Basic 6.0,在“新建工程”对话框中选择“新建”选项卡的“标准 EXE”选项,单击“打开”按钮;
新建工程对话框:
单击工程窗口的Form1,再单击其属性窗口中“Icon”属性右侧的按钮,在弹出的对话框中选择事先准备好的ico格式图标,单击“打开”按钮;
本系统所用的ico图标:
feerec-ico.rar
Form1窗体的Icon属性:
右键单击工程窗口的Form1,选择“查看代码”命令,在弹出的空白窗格中输入以下代码:- Private Sub Form_Load()
- Dim xlApp As Object
- If IsFileOpen(App.Path & "\" & "feerec.dll") Then _
- MsgBox App.EXEName & " 文件已经打开!", vbInformation, "系统提醒:": GoTo line
- DoEvents
- Set xlApp = CreateObject("Excel.Application")
- xlApp.Workbooks.Open App.Path & "\" & "feerec.dll", password:="Xiamen-0Mouse"
- xlApp.Visible = True
- Set xlApp = Nothing
- line:
- Unload Me
- End
- End Sub
- Function IsFileOpen(filename As String)
- Dim filenum As Integer, errnum As Integer
- On Error Resume Next
- filenum = FreeFile()
- Open filename For Input Lock Read As #filenum
- Close filenum
- errnum = Err
- On Error GoTo 0
- Select Case errnum
- Case 0
- IsFileOpen = False
- Case 70
- IsFileOpen = True
- Case Else
- Error errnum
- End Select
- End Function
依次单击“文件”-“生成工程1.exe”,在弹出对话框的“文件名”输入框内输入“『鹭千』驾校费用记录系统1.0”,选择相应的存储路径后,单击“确定”按钮。
至此,系统制作完毕,感谢您的关注!^_^ |
7楼 0Mouse |
系统最终文件:
『鹭千』驾校费用记录系统1.0.rar |
8楼 gysegz |
仰望呀** |
9楼 双飞叶 |
很好,过程写得非常详细,收藏学习 |
10楼 yjzstar |
界面做的好漂亮,顶一个! |
11楼 水星钓鱼 |
精华作品,一定花了不少时间 |
12楼 egs |
哇塞厉害,慢慢学习 |
13楼 chenhuafu |
学习了。 |
14楼 seanjane |
大师 大师 |