网学网ASP类作品编辑为广大网友搜集整理了:ASP图书馆管理系统的设计绩等信息,祝愿广大网友取得需要的信息,参考学习。
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn | ||||||||||||||||||||||||||||||||
4.3设计部分的具体分析 (1)用户注册登陆系统: 只有一个网站的合法用户才可以在这个网站中进行一些合法的图书查询、借阅等。所以必须先通过注册成为该网站的合法成员,登陆成功后才可以操作。因此在这个系统中我考虑要完成用户注册,用户登陆这两个部分。 在程序中我一般都是先用 HTML语言写一个首页,让用户在其上的文本框中键入信息并点击“提交”来触发其后的ASP程序,让它对提交的信息进行处理。下面只是写出了解决功能的程序段,具体的程序及注释和流程图见附录。 数据表user 情况如下:
程序的基本描述: a.密码框和文本框: 密码框和文本框的作用分别在于让用户输入文本和密码。它们区别在于,文本框可以把输入的内容显示出来,而密码框不显示内容,而是用“*”来代替。 文本输入框的显示为:<input name="username" type="text" class="inputstyle" id="username"> 密码输入框的显示为:<input name="password" type="password" class="inputstyle" id="password"> b.登陆中的程序段 该部分的设计思路是首先判断是否有submit事件触发,然后对提交的数据进行处理(出于安全性的考虑我们已经在会员注册的时候给密码使用md5加密),把可能引起安全隐患的字符过滤,登陆中用一个if语句来判断该用户是否为合法用户的。如果输入的用户名和密码都是正确的,那么就登陆成功了,反之则失败了。程序段为: if NOT isempty(request("LoginSubmit")) then dim username,password username=replace(trim(request("username")),"''","") password=md5(replace(trim(request("password")),"''","")) set rs=server.CreateObject("adodb.recordset") rs.Open "select * from [user] where username=''"&username&"'' and password=''"&password&"'' " ,conn,1,3 if not(rs.bof and rs.eof) then if password=rs("password") then response.Cookies(cookieName)("username")=trim(request("username")) rs("lastvst")=now() rs("loginnum")=rs("loginnum")+1 rs.Update rs.Close set rs=nothing response.redirect "search.asp" else call MsgBox("对不起,您的用户名或密码有误!","Back","None") end if else call MsgBox("对不起,您的用户名或密码有误!","Back","None") end if end if
c. 注册中的程序段 在注册中,首先应判断必填内容是否为空,即用户名、密码、确认密码、E-Mail。判断是否为空,以及两次输入的密码是否一致,若为空或者不一致,则javascript提示重新输入,若不为空再从数据库里进行查询,如果输入的用户名或者E-Mail在数据库中存在(即已有用户使用了该用户名或者E-Mail),还要重新输入。若都符合了条件,那么注册就成功了。 <script language="JavaScript"> <!-- function check() { if(checkspace(document.userinfo.username.value)) { document.userinfo.username.focus(); alert("用户名不能为空,请重新输入!"); return false; } if(checkspace(document.userinfo.username.value) || document.userinfo.username.value.length < 2) { document.userinfo.username.focus(); alert("用户名长度不能小于2,请重新输入!"); return false; } if(checkspace(document.userinfo.password.value) || document.userinfo.password.value.length < 6) { document.userinfo.password.focus(); alert("密码长度不能小于6,请重新输入!"); return false; } if(document.userinfo.password.value != document.userinfo.password1.value) { document.userinfo.password.focus(); document.userinfo.password.value = ''''; document.userinfo.password1.value = ''''; alert("两次输入的密码不同,请重新输入!"); return false; } //email合法性判断 if(document.userinfo.useremail.value.length!=0) { if (document.userinfo.useremail.value.charAt(0)=="." || document.userinfo.useremail.value.charAt(0)=="@"|| document.userinfo.useremail.value.indexOf(''@'', 0) == -1 || document.userinfo.useremail.value.indexOf(''.'', 0) == -1 || document.userinfo.useremail.value.lastIndexOf("@")==document.userinfo.useremail.value.length-1 || document.userinfo.useremail.value.lastIndexOf(".")==document.userinfo.useremail.value.length-1) { alert("Email地址格式不正确!"); document.userinfo.useremail.focus(); return false; } } else { alert("Email不能为空!"); document.userinfo.useremail.focus(); return false; } } function checkspace(checkstr) { var str = ''''; for(i = 0; i < checkstr.length; i++) { str = str + '' ''; } return (str == checkstr); } </script> ‘如果用户提交注册 if NOT isempty(request("RegSubmit")) then set rs=server.CreateObject("adodb.recordset") rs.open "select username,useremail from [user] where username=''"&trim(request("username"))&"'' or useremail=''"&trim(request("useremail"))&"''",conn,1,1 ‘输入的用户名或Email地址已存在 if not rs.eof and not rs.bof then call MsgBox("您输入的用户名或Email地址已存在,请返回重新输入!","Back","None") end if rs.close ‘增加记录 rs.open "select * from [user]",conn,1,3 rs.addnew rs("username")=trim(request("username")) rs("password")=md5(trim(request("password"))) rs("useremail")=trim(request("useremail")) rs("usertel")=trim(request("tel")) rs("userqq")=trim(request("userqq")) rs("adddate")=now() rs("lastvst")=now() rs("loginnum")=0 rs.update rs.close set rs=nothing ‘设置cookie response.Cookies(cookieName)("username")=trim(request("username")) ‘设置cookie有效期为1天 response.Cookies(cookieName).expires=date+1 session.Timeout=1 call MsgBox("注册成功!请进入查询!","GoUrl","login.asp") end if ii. 程序实现过程中出现的问题及解决方法 a.中文输入输出问题 在文本框中输入内容可能会在输出的时候出现乱码,可以在页面中加入下面的代码 <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> b. 会话功能的实现 可以利用cookie对登陆的用户认证。我们可以通过用户登陆的页面,让用户进行登陆。把用户的用户名传递保存到cookie中去。当进入后面的用户服务页面时,后面的程序就可以直接从cookie中读出用户名进行相应的有效验证。 c.安全方面 从安全上考虑,我们给会员密码进行了md5不可逆加密,在会员登陆的时候采用了过滤单引号以防止用户饶过密码认证。 (2) 图书查询借阅模块 数据表lent 情况如下:
程序的基本描述: 图书查询借阅模块是本系统中最重要的一个部分,在这里实现了按照图书名称,作者名称,出版社、出版时间、价格范围和图书类别的查询,还可以有排序方法和排序方式的选择。找到图书之后,如果该书在馆的话就可以借阅了。 a.查询内容的判断 在会员查询的时候需要对一些信息进行判断,如果用户没输入任何查询条件,或者输入的信息不合法则作出提示。 <script language=javascript> var whitespace = " \t\n\r"; ‘判断是否有空格字符 function IsWhitespace (s) {var i; if (IsEmpty(s)) return true; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (whitespace.indexOf(c) == -1) return false; } return true; } function IsEmpty(s) { return ((s == null) || (s.length == 0)) } //判断是否为时期型的函数 function IsDate(fDate) { var arrDaysInMonth=new Array(12); arrDaysInMonth[1]=31; arrDaysInMonth[2]=29; arrDaysInMonth[3]=31; arrDaysInMonth[4]=30; arrDaysInMonth[5]=31; arrDaysInMonth[6]=30; arrDaysInMonth[7]=31; arrDaysInMonth[8]=31; arrDaysInMonth[9]=30; arrDaysInMonth[10]=31; arrDaysInMonth[11]=30; arrDaysInMonth[12]=31; if (IsEmpty(fDate)) return true var NameList=fDate.split("-"); if (NameList.length!=3) return false if ( NameList[1]>arrDaysInMonth[NameList[1]] ) return false if ( (NameList[1]==2) && (NameList[2]>DaysInFebruary(NameList[0]) ) ) return false return true } function search() { var name = document.forms[''frmdata''].elements[''name''].value; var author = document.forms[''frmdata''].elements[''author''].value; var manufacturer = document.forms[''frmdata''].elements[''manufacturer''].value; var smallprice = document.forms[''frmdata''].elements[''smallprice''].value; var largeprice = document.forms[''frmdata''].elements[''largeprice''].value; var enabledate = document.forms[''frmdata''].elements[''enabledate''].value; var expiredate = document.forms[''frmdata''].elements[''expiredate''].value; if (!IsWhitespace(enabledate)) { if (!IsDate(enabledate)) { alert("出版日期 开始日期格式错误!"); return false; } } if (!IsWhitespace(expiredate)) { if (!IsDate(expiredate)) { alert("出版日期 结束日期格式错误!"); return false; } } var allNotEmpty = (!IsWhitespace(name)) || (!IsWhitespace(author)) || (!IsWhitespace(manufacturer)) || (!IsWhitespace(smallprice)) || (!IsWhitespace(largeprice))|| (!IsWhitespace(enabledate)) || (!IsWhitespace(expiredate)); ‘如果查询的条件都为空 | ||||||||||||||||||||||||||||||||
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT | ||||||||||||||||||||||||||||||||
本文选自计算机毕业设计http://myeducs.cn |