长江大学工程技术学院计算机上机实习报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
长江大学工程技术学院计算机上机实习报告
个人通讯录管理系统的设计
学生姓名:钟智豪学号:XXXXX 序号:XX
专业班级:资工61202班
指导老师:方静
报告日期:2013-6-26
第一部分课程设计的题目与要求
1、问题的提出
这次课程设计的内容是个人通讯录管理管理系统,对于这个题目,要将一个比较复杂的问题分解成若干相对容易的小问题去做。
通过书写代码,实现对一些数据的简单处理。
例如,数据的修改、数据的添加、删除等等。
2、功能要求
1)、实现添加功能:能通过相应控件和操作录入新数据。
当要录入新数据的时候,首先判断该姓名是否存在,如果不存在,则提示可进行数据录入并可依次输入地址、邮编等信息。
2)、实现修改功能:选中某个人的姓名时,可以对此人的相应数据进行修改并保存。
3)、实现删除功能:选中某个人的姓名时,可将此人的相应数据进行删除并保存。
4)、实现查询显示:①按姓名查询②显示全部信息。
通过组合框选择查询内容,将满足查询条件的通讯记录显示在文本框上。
5)、实现拨号功能:能显示通讯录中所有人的姓名和此人对应的电话,当选中某个人的姓名和电话号码时,屏幕上可以模拟打字机的效果,依次显示出电话号码中的各个数字。
第二部分课程设计题目功能
1、系统功能模块框图设计
2、数据结构说明
内容:包括数据类型的定义,程序中使用的各变量的类型及应用。
首先说明结构体,对结构体进行说明在其中直接定义了整体变量address_book, address_book变量里面由6个成员构成其中有为字符串数组成员的分别有name(姓名)、 address(地址)、 youbian(邮编)、ema(Email)、qq(QQ)、mobile(手机号码)这6个数组构成。
利用变量存储将文件“ZG61202.dat”里面的东西读到其中或输出,为后面使用数据提供了方便。
Public()通用过程,在模块中输入,可以在整个程序设计中使用。
Sub()进行过程的书写,为以后的调用做准备工作。
Msgbox()提示对话框,提示相关有用信息,完善程序设计。
rec_no 为随机文件的当前记录号。
rec_tal 为随机文件的存放总记录数。
rec_long为随机文件的存放记录长度。
Open filename For Random As #1 Len = Len(s)为打开文件,并按照随机方式打开。
Get #1, i,s随机文件的读取。
Put #1, i ,s文件的书写。
3、详细设计
1)、用户登录
点击系统——登录,显示出如图所示窗体,双击命令按钮Command1(确定)来编写代码,实现登录的功能。
在登录相关的代码中:
If txtUserName = "admin" And txtPassword = "admin" Then LoginSucceeded = True
Me.Hide
Else
MsgBox "无效的密码,请重试!", , "登录"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
" " 中的内容分别用于记录登录的用户名和密码;if语句来来建立并判断登录成功与失败这两种不同的情况。
2)、添加通讯录
如图添加控件后,点击Command1(添加),
来编写代码,实现登录的功能:分别将
姓名,地址,邮编等通讯录信息记录在
数据库文本中。
在添加的相关代码中:
Private Sub display()
Get #1, rec_no, s
With s
Text1.Text =
Text2.Text = s.address
Text3.Text = s.youbian
Text4.Text = s.ema
Text5.Text = s.qq
Text6.Text = s.mobile
End With
End Sub
此代码用于定义“数据显示“这一过程,在添加代码中可使用语句
“Call display”来调用此过程。
除了display过程
外,还定义了getdate(数据获取),txtclear(清除)过程,用于添加语句中过程调用。
在“Form_Load”这一过程的代码中, Open filename For Random As #1 Len = Len(s)用于在内存中打开数据文件。
在命令按钮Command1(添加)中,Dim i As Integer, ts As Integer
For i = 1 To Module1.rec_total
定义变量i为记录的数据文件中姓名及其对应信息的“编号”。
Get #1, i, s 用于获取文件1,变量i,数据文件s
Len函数用于记录字符串长度。
3)、显示全部数据文件
点击窗体上显示全部按钮在窗体上按顺序显示出所有数据。
可以通过双击显示全部按钮来编辑代码,实现这一过程。
在相关代码中:
Print "姓名 " & " 地址 " & "邮编 " & " Email" & " QQ " & "手机号码" 用于在窗体最上方显示项目名称。
Open filename For Random As #1 Len = rec_long 用于打开文件
Get #1, i, s 用于获取文件
Print & s.address & s.youbian & s.ema & s.qq & s.mobile 用于在项目名称下显示具体的对应的数据。
4)、通讯录的查找、修改、删除
在添加完如图所示控件后,分别双击“查找”、“修改”、“删除”命令按钮编写代码来完成相应功能:对数据进行查找,修改,删除。
在相关代码中:
If Trim() = Trim(Text1.Text) Then
Text2.Text = s.address: Text3.Text = s.youbian
Text4.Text = s.ema: Text5.Text = s.qq: Text6.Text = s.mobile End If
用于显示与姓名对应的相关信息,即显示出将数据库中的相关信息显示在各文本框中。
If Trim() = Trim(Text1.Text) Then
rec_no = i
End If
以及Put #1, rec_no, s
用于记录和写入所修改的数据
Kill filename
用于删除文件
5)、拨号功能
点击拨号后在显示号码后模仿 打印机效果显示对应的号码; 点击挂断则以上过程终止。
相关代码:
For i = 0 To 10
Label4(i).Caption = Mid(s, i + 1, 1)
用于在“显示号码”后的11个隐藏的数组文字框中模仿打印机效果显示所选姓名对应的电话号码。
在此过程中,与用到“时钟”控件,来完成这一过程。
其中 Timer1.Enabled = True 用于时钟开始计时,即:号码开始显示,而显示号码的速度快慢可有时钟控件的Interval 属性来调节。
6)、模块
在模块Module1中,
address_book 为建立的数据库文件 变量:
name 为通讯录姓名 address 为地址 ema 为电子邮件 qq 为QQ 号码
mobile 为手机号码
Public … AS … 用于定义公共变量。
4、调试与测试
1)、调试指定文件
在存放本文件的文件夹下建立文件“ZG61202.dat ”,运行程序后点击系统——指定文件,弹出如图所示图片,点击“打开”,则在内存中打开指定文件。
2)、调试通讯录
完成1)中步骤后,点击
通讯录管理——添加输入需要添加的 数据信息,点击添加,显示对话框 如图所示。
3)、调试全部显示
点击显示全部窗体上显示数据文件中的所有数据,如图所示。
4)、调试查询
点击查询,则在对应的文本框中显示出相关的信息。
5)
点击修改,则提示记录修改成功!,如图所示。
6)、调试删除
点击删除,则删除选中的信息,并显示如图所示的对话框。
7)、调试拨号功能
点击拨号,则模仿打印机效果显示号码,如图所示。
点击挂断,则终止次过程。
第三部分课程设计总结
收获:
(1)对变量和随机文件有了更深入的了解。
(2)通过把复杂的问题分解成多个简单的问题。
(复杂的函数分成多个简单的子函数)。
过程中遇到的困难:
1.序设计过程中,总是会出现一些问题。
2.始并不会把文件输入到变量数组中,用变量数组来进行整个程序的操作。
不能灵活运用随机文件的输入与输出,与顺序文件相混淆。
3.文件的修改与删除。
解决办法:
1.注意模板中的书写内容和公共运用程序过程。
2.使用for循环调用,对随机文件进行调用与处理,分为多个存放记录数目,并进行相应的添加。
3.对于随机文件中的数据的删除和修改,应当使用数组变量和循环记录所需要的数据,然后kill filename 再将数据存如新的文件。
以达到删除某条记录的目的。
4.了解随机文件的使用范围与使用方法,正确的进行调用。
5.熟悉VB
6.0开发环境,掌握用VB 6.0实现一个完整应用程序的设计过程,掌握有关编写、调试和整合程序的方法和技巧。
6.熟练掌握VB 6.0中窗体和各种控件的常用属性和事件、用户自定义类型、数组的各种操作以及对文件的相关操作(文件的创建、读、写等),或使用数据访问控件访问数据库的数据,并能够做到灵活运用。
附录程序清单
一、Form1全部代码
Private Sub bh_Click()
If Module1.filename = "" Then
MsgBox "系统未指定文件,请您先指定文件", vbOKOnly + vbInformation, "错误提示"
Exit Sub
End If
Form4.Show
Form1.Hide
End Sub
Private Sub cz_Click()
If Module1.filename = "" Then
MsgBox "系统未指定文件,请您先指定文件", vbOKOnly + vbInformation, "错误提示"
Exit Sub
End If
Form3.Show
Form1.Hide
mand4.Visible = False
mand5.Visible = False
Private Sub end_Click()
End
End Sub
Private Sub sc_Click()
If Module1.filename = "" Then
MsgBox "系统未指定文件,请您先指定文件", vbOKOnly + vbInformation, "错误提示"
Exit Sub
End If
Form3.Show
Form1.Hide
mand4.Visible = False
End Sub
Private Sub tj_Click()
If Module1.filename = "" Then
MsgBox "系统未指定文件,请您先指定文件", vbOKOnly + vbInformation, "错误提示"
Exit Sub
End If
Form2.Show
Form1.Hide
End Sub
Private Sub xg_Click()
If Module1.filename = "" Then
MsgBox "系统未指定文件,请您先指定文件", vbOKOnly + vbInformation, "错误提示"
Exit Sub
End If
Form3.Show
Form1.Hide
mand5.Visible = False
Private Sub xs_Click()
Form5.Show
End Sub
Private Sub yhdl_Click()
frmLogin.Show vbModal
If frmLogin.LoginSucceeded = True Then
Me.zdwj.Enabled = True
Me.gl.Enabled = True
Me.end.Enabled = True
Me.bh.Enabled = True
End If
End Sub
Private Sub zdwj_Click()
CommonDialog1.DialogTitle = "指定文件"
CommonDialog1.filename = "ZG61202.dat"
CommonDialog1.Filter = "数据文件(*.dat)|*.dat"
CommonDialog1.ShowOpen
Module1.filename = CommonDialog1.filename
End Sub
二、Form2全部代码
Private Sub Command1_Click()
Dim i As Integer, ts As Integer
For i = 1 To Module1.rec_total
Get #1, i, s
If Trim() = Trim(Text1.Text) Then
ts = MsgBox("记录已存在,请您重新输入")
If ts = vbYes Then
rec_no = i
Call display
End If
Exit Sub
End If
Next i
Call getdate
rec_total = rec_total + 1
rec_no = rec_total
Put #1, rec_no, s
ts = MsgBox("信息添加成功,是否继续添加?", vbYesNo)
If ts = vbYes Then
Call txtclear
Else
Close #1
Form1.Show
Unload Form2
End If
End Sub
Private Sub display()
Get #1, rec_no, s
With s
Text1.Text =
Text2.Text = s.address
Text3.Text = s.youbian
Text4.Text = s.ema
Text5.Text = s.qq
Text6.Text = s.mobile
End With
End Sub
Private Sub getdate()
= Text1.Text
s.address = Text2.Text
s.youbian = Text3.Text
s.ema = Text4.Text
s.qq = Text5.Text
s.mobile = Text6.Text
End Sub
Private Sub txtclear()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
End Sub
Private Sub Command2_Click()
Close #1
Form1.Show
Unload Me
End Sub
Private Sub Form_Load()
filename = App.Path & "\ZG61202.dat"
rec_long = Len(s)
Open filename For Random As #1 Len = Len(s) rec_total = LOF(1) / Len(s)
End Sub
三.Form3全部代码
Private Sub Command1_Click()
Dim i As Integer
Open filename For Random As #1 Len = Len(s)
rec_total = LOF(1) / Len(s)
For i = 1 To rec_total
Get #1, i, s
If Trim() = Trim(Text1.Text) Then
Text2.Text = s.address: Text3.Text = s.youbian
Text4.Text = s.ema: Text5.Text = s.qq: Text6.Text = s.mobile
End If
Next i
Close #1
End Sub
Private Sub Command2_Click()
Dim i As Integer
If List1.ListIndex > 0 Then
List1.ListIndex = List1.ListIndex - 1
Else
MsgBox "现已为第一条记录"
Exit Sub
End If
rec_long = Len(s)
Open filename For Random As #1 Len = rec_long
rec_total = LOF(1) / Len(s)
For i = 1 To rec_total
Get #1, i, s
If Trim() = Trim(Text1.Text) Then
Text2.Text = s.address: Text3.Text = s.youbian
Text4.Text = s.ema: Text5.Text = s.qq: Text6.Text = s.mobile
End If
Next i
Close #1
End Sub
Private Sub Command3_Click()
Dim i As Integer, ts As Integer
If List1.ListIndex < rec_total - 1 Then
List1.ListIndex = List1.ListIndex + 1
Else
ts = MsgBox("现已为最后一条记录,要回到首记录?", vbYesNo)
If ts = vbYes Then
List1.ListIndex = 0
rec_no = 1
Call display
Exit Sub
End If
End If
rec_long = Len(s)
Open filename For Random As #1 Len = rec_long
rec_total = LOF(1) / Len(s)
For i = 1 To rec_total
Get #1, i, s
If Trim() = Trim(Text1.Text) Then
Text2.Text = s.address: Text3.Text = s.youbian
Text4.Text = s.ema: Text5.Text = s.qq: Text6.Text = s.mobile
End If
Next i
Close #1
End Sub
Private Sub display()
rec_long = Len(s)
Open filename For Random As #1 Len = rec_long rec_total = LOF(1) / Len(s)
Get #1, rec_no, s
With s
Text1.Text =
Text2.Text = s.address
Text3.Text = s.youbian
Text4.Text = s.ema
Text5.Text = s.qq
Text6.Text = s.mobile
End With
Close #1
End Sub
Private Sub Command4_Click()
Open filename For Random As #1 Len = Len(s)
rec_total = LOF(1) / Len(s)
For i = 1 To rec_total
Get #1, i, s
If Trim() = Trim(Text1.Text) Then
rec_no = i
Close #1
Exit For
End If
Next i
Call getdate
Open filename For Random As #1 Len = Len(s)
Put #1, rec_no, s
Close #1
MsgBox ("记录修改成功!")
End Sub
Private Sub Command5_Click()
Dim i As Integer
Dim tempno As Integer
rec_total = LOF(1) / Len(s)
For i = 1 To rec_total
Get #1, i, s
If Trim() = Trim(Text1.Text) Then
rec_no = i
Close #1
Exit For
End If
Next i
If MsgBox("确定要删除这条记录吗?", vbYesNo + vbExclamation, "删除确认") = vbYes Then
tempno = rec_no
Open filename & ".temp" For Random As #2 Len = rec_long Open filename For Random As #1 Len = Len(s)
For i = 1 To rec_total
If i <> tempno Then
Get #1, i, s
Put #2, i, s
End If
Next i
Close
Kill filename
Call txtclear
Name filename & ".temp" As filename
List1.RemoveItem List1.ListIndex
Close #1
MsgBox ("删除记录成功!")
End If
End Sub
Private Sub Command6_Click()
Form1.Show
Unload Me
End Sub
Private Sub Form_Load()
filename = App.Path & "\ZG61202.dat"
rec_long = Len(s)
rec_total = LOF(1) / rec_long
For i = 1 To rec_total
Get #1, i, s
List1.AddItem
Next i
List1.ListIndex = -1
Close #1
End Sub
Private Sub List1_Click()
Text1.Text = List1.List(List1.ListIndex)
End Sub
Private Sub getdate()
= Text1.Text
s.address = Text2.Text
s.youbian = Text3.Text
s.ema = Text4.Text
s.qq = Text5.Text
s.mobile = Text6.Text
End Sub
Private Sub txtclear()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
End Sub
四、Form4全部代码
Dim Index As Integer
Private Sub Command1_Click()
Dim i As Integer, s As String
If List1.ListIndex = -1 Then
MsgBox ("请选择人名!")
ElseIf List1.Selected(List1.ListIndex) = True Then List2.Selected(List1.ListIndex) = True
s = List2.List(List2.ListIndex)
End If
For i = 0 To 10
Label4(i).Caption = Mid(s, i + 1, 1)
Next i
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Dim i As Integer
For i = 0 To 10
Label4(i).Caption = ""
Label4(i).Visible = False
Timer1.Enabled = False
Index = 0
End Sub
Private Sub Command3_Click()
Close #1
Form1.Show
Unload Me
End Sub
Private Sub Form_Load()
Dim i As Integer
filename = App.Path & "\ZG61202.dat"
rec_long = Len(s)
Call fileopen
For i = 1 To rec_total
Get #1, i, s
List1.AddItem
List2.AddItem s.mobile
Next i
List1.ListIndex = -1
For i = 0 To 10
Label4(i).Visible = False
Next i
End Sub
Private Sub fileopen()
Dim i As Integer
Open filename For Random As #1 Len = rec_long rec_long = Len(s)
rec_total = LOF(1) / rec_long
End Sub
Private Sub List1_Click()
Dim i As Integer
If List1.Selected(List1.ListIndex) = True Then List2.Selected(List1.ListIndex) = True
End If
Timer1.Enabled = False
For i = 0 To 10
Label4(i).Caption = ""
Label4(i).Visible = False
Index = 0
End Sub
Private Sub List2_Click()
If List2.Selected(List2.ListIndex) = True Then List1.Selected(List2.ListIndex) = True
End If
End Sub
Private Sub timer1_timer()
Dim i As Integer
If Index <> 11 Then
Label4(Index).Visible = True
Index = Index + 1
Else
For i = 0 To 10
Label4(i).Visible = False
Next i
Index = 0
End If
End Sub
Dim i As Integer
Print "姓名 " & " 地址 " & "邮编 " & " Email " & " QQ " & "手机号码 "
rec_long = Len(s)
Open filename For Random As #1 Len = rec_long
rec_total = LOF(1) / Len(s)
For i = 1 To rec_total
Get #1, i, s
Print
Print & s.address & s.youbian & s.ema & s.qq & s.mobile
Next i
Close #1
End Sub
Private Sub Command2_Click()
Close #1
Form1.Show
Unload Me
End Sub
六、frmLogin全部代码
Private Sub cmdCancel_Click()
'设置全局变量为 false
'不提示失败的登录
LoginSucceeded = False
Me.Hide
End Sub
Private Sub cmdOK_Click()
'检查正确的密码
If txtUserName = "admin" And txtPassword = "admin" Then '将代码放在这里传递
'成功到 calling 函数
'设置全局变量时最容易的
LoginSucceeded = True
Me.Hide
Else
MsgBox "无效的密码,请重试!", , "登录"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
bel1.Visible = False
bel2.Visible = False
bel3.Visible = True
End Sub。