目录第一章绪论 (1)第二章功能需求分析 (2)第一节社会与技术背景 (2)第二节客户功能需求分析 (2)第三节系统运行的软、硬件环境 (2)第四节系统的具体功能要求 (2)第三章系统设计 (3)第一节采用的软件及开发平台 (3)第二节目的详细设计 (3)第三节项目的总体框架 (4)3.3.1 流程图 (4)3.3.2 登录界面 (5)第四章技术实现 (6)4.1 主要功能模块的具体实现 (6)4.1.1判断文件是否存在: (6)4.1.2标准模块sub过程jiami: (8)4.1.3列表框中可记住登录成功的用户名: (8)4.1.4登录功能代码: (9)4.1.5 退出程序代码: (11)4.1.6选择已成功登录的用户名: (11)4.1.7修改密码代码: (12)4.1.8返回登录窗体代码: (13)4.2主要难题的解决方法 (13)4.3 亮点或创新点 (13)第五章总结与体会 (14)第六章参考文献 (15)第一章绪论计算机和网络技术的出现和发展改变了世界,也改变了人们的生活.作为新世纪的大学生,我们应当站在时代发展的前列,掌握计算机语言,调整知识结构和能力结构,充满活力和创新意识才能适应社会发展的要求.作为计算机高级语言之一,visual basic 是Microsoft公司推出的可视化开发工具,由于其功能强大,内容十分丰富,随着版本的不断升级,已经成为应用程序开发人员的首选工具之一。
在当今科技社会,随着网络,信息技术的飞速发展,登录界面设计的设计已经变成一个网站登录的重要研究课题,本次课题设计有助于对登录界面设计的探索和改进,以便于以后能设计出更好的登录界面,推进网络技术和网站的建设。
本次课题重点解决了判断用户输入的帐号和密码是否正确及用户修改密码问题本程序设计简单,功能基本齐全,使用简捷便利,对硬件要求不高,可在windows环境下运行,能实现登录及修改密码的功能。
.由于笔者水平所限,本论文在书写过程中又难免还存在不妥之处,敬请读者予以批评指正。
牛涛2008.07.21第二章功能需求分析第一节社会与技术背景计算机和网络技术的遍地生花,使作为其技术支撑的软件成为当今社会中一个比较重要的课题,因此用于开发软件的高级语言也成为了重头戏。
在世界范围内用于编写软件的高级语言有c , c++,visual basic ,java等。
其中visual basic最初是Microsoft公司于1991年推出的一种面向对象的,以事件驱动方式编写程序的,可视化开发工具。
随着windows操作平台的不断成熟,版本不断升级,最新版本为2008版。
visual basic易学实用,方便快捷,开发周期短,广泛而强大的功能越来越被广大编程人员青睐。
第二节客户功能需求分析信息在当今社会起着重要作用,因此也使一些人无视法律的存在,盗取他人信息,严重损害了他人生命财产安全。
因此在进入注册过的网站或网页时,就有必要进行登录,只有输入正确的用户名和密码才能进入。
这样做就有效的遏制住了盗窃他人信息的犯罪行为,保护了网站注册会员的利益。
总之把登录界面设计好十分重要。
第三节系统运行的软、硬件环境本程序对硬件的要求不高,可在大多数的高中低档终端机上流畅运行,适用于windows 操作系统,如windows95 ,windows98,windows2000,windows xp等。
第四节系统的具体功能要求1:输入正确的用户名和密码才能登录2:当用户输入密码错误3次时,计算机自动关机3:登录成功后可修改密码4:列表框中可记住登录成功的用户名,方便用户再次登录第三章系统设计第一节采用的软件及开发平台采用的软件及开发平台:1. 采用软件: vb 6.0 企业版2. 开发平台: windows第二节目的详细设计本程序共有两个窗体,一个标准模块,一个为登录帐号窗体,另一个是修改密码窗体。
系统载入时先判断磁盘中是否含有保存用户名和加密后的用户密码的文件,若有则打开该文件;若没有则生成一分这样的文件,然后再打开。
登录窗体主要实现登录,退出,进入修改密码窗体,列表框中可记住登录成功的用户名,方便用户再次登录等四个大的功能。
包含1个列表框控件,2个标签控件,2个文本框控件,3个命令按钮控件。
修改密码窗体主要实现修改密码和返回登录窗体两个大的功能。
包含3个标签控件,3个文本框控件,2个命令按钮控件。
标准模块实现给用户密码加密功能,含有一个sub加密过程jiami,利用ASCII码进行加密第三节项目的总体框架3.3.1 流程图3.3.2 登录界面窗提界面如下图:登录窗体:修改密码窗体:第四章技术实现4.1 主要功能模块的具体实现4.1.1判断文件是否存在:判断磁盘中是否含有保存用户名和加密后的用户密码的文件,若有则打开该文件;若没有则生成一分这样的文件,然后再打开。
Option ExplicitOption Base 1Private Sub Form_Load()Dim i As Integer, j As IntegerIf Dir("c:\password\") = "" Then '判断文件"c:\password\"是否存在MkDir "c:\password\" '如果文件不存在,则创建该文件Open "c:\password\password.txt" For Output As #1 '打开文件"c:\password\",作为1号文件user(1, 1) = "asdfg": user(1, 2) = "12345" '此二维数组用来存放用户名user(2, 1) = "hjklm": user(2, 2) = "67890"user(3, 1) = "qwertd": user(3, 2) = "123aq"user(4, 1) = "yuiop": user(4, 2) = "123sw"user(5, 1) = "zxcvbas": user(5, 2) = "123de"user(6, 1) = "mnbvc": user(6, 2) = "1901sa"user(7, 1) = "zxcds": user(7, 2) = "qwasz"user(8, 1) = "rewq235": user(8, 2) = "qwe1234"user(9, 1) = "derfv": user(9, 2) = "a12325"user(10, 1) = "sdfgh9853": user(10, 2) = "lkjh90"user(11, 1) = "nm&hgk": user(11, 2) = "asd098"user(12, 1) = "gfdrt!6": user(12, 2) = "lopi678"user(13, 1) = "aswer*kl": user(13, 2) = "hjk675"user(14, 1) = "oiuy#nn": user(14, 2) = "sdf345"user(15, 1) = "poik$12": user(15, 2) = "11234hji"user(16, 1) = "jkl*897": user(16, 2) = "zx678kl"user(17, 1) = "hklop345": user(17, 2) = "pol098"user(18, 1) = "asd123~": user(18, 2) = "zxc657"user(19, 1) = "hjuyt&TG": user(19, 2) = "5678hj"user(20, 1) = "aszxDRT": user(20, 2) = "0987opq"Call jiami(user) '调用标准过程给用户的密码加密For i = 1 To UBound(user, 1)Write #1, user(i, 1), user(i, 2) '把用户名和加密后的用户密码写入到1号文Next iClose #1Open "c:\password\password.txt" For Input As #2 '以2号把文件打开i = 1DoInput #2, user1(i, 1), user1(i, 2) '把用户名和加密后的密码写入到2号文件中i = i + 1Loop Until EOF(2) '直到光标在文章末尾Close #2ElseOpen "c:\password\password.txt" For Input As #2 '文件存在i = 1Do While Not EOF(2) '光标不在文章末尾Input #2, user1(i, 1), user1(i, 2) '把用户名和加密后的密码写入到2号文件中i = i + 1LoopClose #2End Ifcmdmend.Enabled = False 'cmdmend按钮不可用End Sub4.1.2标准模块sub过程jiami:利用ASCII码给用户密码进行加密:Option ExplicitOption Base 1Public user(20, 2) As String '定义一个全局二维数组user(20, 2)Public user1(20, 2) As String '定义一个全局二维数组user1(20, 2)Public subscript As Integer '定义一个全局变量subscriptPublic Sub jiami(user() As String 'sub加密过程jiamiDim i As Integer, j As Integer, code As StringFor i = 1 To UBound(user, 1)code = ""For j = 1 To Len(user(i, 2))code = code & Chr(Asc(Mid(user(i, 2), j, 1)) + 2) '利用算法给数组user加密Next juser(i, 2) = codeNext iEnd Sub4.1.3列表框中可记住登录成功的用户名:j = listuser.ListCountIf listuser = " " Then '列表框为空listuser.AddItem txtuser.Text '把文本框txtuser.Text中用户名添加到列表框中ElseFor k = 0 To jIf Trim(listuser.List(k)) = Trim(txtuser.Text) Then '判断列表框中是否有该用户Exit ForEnd IfNext kIf k > listuser.ListCount Thenlistuser.AddItem txtuser.Text '把txtuser.Text中用户名添加到列表框中End IfEnd If4.1.4登录功能代码:判断用户名和密码十分正确及记录输入错误密码次数,超过三次关机Private Sub cmdentry_Click() '“登录”按钮Dim a(1, 2) As StringStatic q(35765) As StringDim i As Integer, j As Integer, k As IntegerStatic y As IntegerStatic n As Integera(1, 1) = txtuser.Text '利用二维数组中元素a(1,1)存放输入的用户名a(1, 2) = txtcode.Text '利用二维数组中元素a(1,1)存放输入的If q(1) = "" Then '判断前后两次的用户名是否相同y = 1q(1) = a(1, 1)Elsey = y + 1q(y) = a(1, 1)If q(y) <> q(y + 1) Then n = 0End IfFor i = 1 To UBound(user, 1) '判断用户名是否存在If a(1, 1) = user1(i, 1) ThenCall jiami(a) '调用标准过程给用户输入的密码加密If a(1, 2) = user1(i, 2) Then '判断加密后的密码与文件中存放的加密后的密码是否相同MsgBox "恭喜您,登陆成功!"subscript = i '记下存放该拥护的数组的一维下标j = listuser.ListCountIf listuser = " " Then '列表框为空listuser.AddItem txtuser.Text '把文本框txtuser.Text中用户名添加到列表框中ElseFor k = 0 To jIf Trim(listuser.List(k)) = Trim(txtuser.Text) Then '判断列表框中是否有该用户名Exit ForEnd IfNext kIf k > listuser.ListCount Thenlistuser.AddItem txtuser.Text '把txtuser.Text中用户名添加到列表框中End IfEnd Iftxtuser.Text = ""txtcode.Text = ""txtuser.SetFocuscmdmend.Enabled = True 'cmdmend按钮可用Exit ForElseMsgBox "您的密码错误,请重新输入!" '提示密码错误txtcode.Text = ""txtcode.SetFocusn = n + 1 '记住登录时输入的密码错误的次数If n = 3 Then Shell "C:\WINDOWS\system32\shutdown.exe -s -t 0" '登录时输入的密码错误的次数超过3次,电脑自动关机Exit ForEnd IfEnd IfNext iIf i > 20 Then MsgBox "帐号错误,重新输入!" '提示帐号错误End Sub4.1.5 退出程序代码:Private Sub cmdexit_Click() '“退出”按钮listuser.Clear '清空列表框End '退出程序End SubPrivate Sub cmdmend_Click()Form1.HideForm2.ShowEnd Sub4.1.6选择已成功登录的用户名:把选中的表现添加到文本框Private Sub Listuser_Clicktxtuser.Text = listuser.Text '把选中的表现添加到文本框txtuser.Text中txtcode.SetFocusEnd Sub4.1.7修改密码代码:Option Base 1Private Sub cmdok_Click() '"确定"按钮Dim a(1, 2) As String, b(1, 2) As String, c As String, d As String, i As Integera(1, 2) = txtsource.Text '用a(1, 2)存放文本框txtsource.Text中用户输入的原密码b(1, 2) = txtcryp1.Text '用b(1, 2)文本框txtcryp1.Text中用户输入的新密码c = txtcryp2.Text '用c 文本框txtcryp2.Text中用户确认的新密码Call jiami(a) '对原密码进行加密If a(1, 2) = user1(subscript, 2) And b(1, 2) = c Then '判断原密码是否正确及b(1,2)和c是否相等Call jiami(b) '对新密码进行加密user1(subscript, 2) = b(1, 2) '把加密后的新密码赋值给存放加密后的原密码的数组元素Open "c:\password\password.txt" For Output As #3 '以2号把文件打开For i = 1 To 20Write #3, user1(i, 1), user1(i, 2) '把用户名和加密后的密码写到3号文件中Next iClose #3MsgBox "密码更改成功!", , " 更改密码" '提示修改密码成功ElseMsgBox "原密码或确认密码错误!", , "重新输入" '提示修改密码错误End Iftxtsource.Text = ""txtcryp1.Text = ""txtcryp2.Text = ""End Sub4.1.8返回登录窗体代码:Private Sub cmdback_Click() ' "返回"按钮Form1.ShowForm2.HideEnd Sub4.2主要难题的解决方法1:判断文件是否存在查找书本,上网搜索相关资料,向同学老师请教,最终知解决方法如下例所示If Dir(“d:\ydh\”) =””thenMsgbox “对不起!所要打开的文件不存在” ,,”打开文件错误”ElseOpen “d:\ydh\score.txt”for input as # 1End if2: 判断用户名是否相同:输入一个用户名,密码错误后又输入一个用户名,记录密码错误次数的n 应变为0利用数组来存放前后两次输入的用户名是否相同,从而判断n的取值4.3 亮点或创新点1. 登路成功后可修改密码2. 可在列表框中添加已登录成功的用户名,并可以从中选择第五章总结与体会刚拿到这个题目时。