计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

ASP影片租赁系统(一)毕业论文网(3)

2013-07-28 01:21
导读:bsp;strSQL="SELECT * FROM [UserInfo] WHERE UI_ID_N="Request("uid") objRS.Open strSQL,objConn,1,3 If objRS.BOF Or objRS.EOF Then ResultMsg("对不起,此用户不存在或已被删除!") objRS.Clos
bsp;strSQL="SELECT * FROM [UserInfo] WHERE UI_ID_N="&Request("uid")
 objRS.Open strSQL,objConn,1,3
 If objRS.BOF Or objRS.EOF Then
  ResultMsg("对不起,此用户不存在或已被删除!")
  objRS.Close
  CloseDatabase
  Response.End
 End If
 UserName=objRS("UI_Name_S")
 Email="<input type=text name=Email maxlength=50 size=30 value="&_
objRS("UI_Email_S")&">"
 QQ="<input type=text name=QQ maxlength=20 size=30 value="&objRS("UI_QQ_S")&">"
 IsProvider=objRS("UI_IsProvider_B")
 ProviderID=objRS("UI_PI_ID_FN")
 RentCount=objRS("UI_RentCount_N")
 CerRank=objRS("UI_CerRank_N")
 
 '如果用户是供应商,取得供应商信息
 strSQL="SELECT * FROM [ProviderInfo]"
 objRS.Open strsQL,objConn,1,3
 Provider="<select name=Provider><option value=0>不是供应商</option>"
 For i=1 To objRS.RecordCount
  If objRS("PI_ID_N")=ProviderID Then
   Provider=Provider&"<option value="&objRS("PI_ID_N")&" selected>"&_
objRS("PI_Name_S")&"</option>"
  Else
   Provider=Provider&"<option value="&objRS("PI_ID_N")&">"&_
objRS("PI_Name_S")&"</option>"
  End If
  objRS.MoveNext
 Next
 Provider=Provider&"</select>"
 objRS.Close

 
5.2.6 查看用户租赁信息截面及代码
用户租赁信息界面


用户可以在这里进行对自己租赁信息的查看,实现此功能,其代码,大致如下:

 ‘判断用户状态是否失效,若失效则返回错误ID 7
If IsEmpty(Session("UserID"))=True Then
 Response.Write GetErr(7) (转载自科教范文网http://fw.nseac.com)
 Response.End
End If
‘判断数据的传输是否正确
If IsNumeric(Request("id"))=False Or Request("id")="" Then
 Response.Write GetErr(1)
 Response.End
Else
 '判断并标注超期的影片
 strSQL="SELECT * FROM [Tenancy] WHERE TAC_StartTime_D IS NOT NULL AND”&_
” TAC_EndTime_D IS NULL"
 Set objRS=Server.CreateObject("ADODB.RecordSet")
 objRS.Open strSQL,objConn,1,3
 Dim MsgUser
 ‘检测是否有超期的影片
 For i=1 To objRS.RecordCount
  ‘若有则标注TAC_TimeOut_B=True
  If DateDiff("d",DateAdd("d",objRS("TAC_Lease_N"),objRS("TAC_StartTime_D"))&_
,Now())>objRS("TAC_Lease_N") Then
   strSQL="UPDATE [Tenancy] SET TAC_TimeOut_B=True,TAC_MsgUser_B”&_
”=True WHERE TAC_ID_N="&objRS("TAC_ID_N")
   objConn.Execute(strSQL)
  End If
  objRS.MoveNext
 Next
 objRS.Close
 '用户是否是管理员
 Dim IsAdmin
 strSQL="SELECT UI_IsAdmin_B FROM [UserInfo] WHERE UI_ID_N="&_
Session("UserID")
 objRS.Open strSQL,objConn,1,3
 IsAdmin=objRS("UI_IsAdmin_B")
 objRS.Close
 '若用户不是管理员,则判断其所浏览的交易记录是否是自己的
 If IsAdmin=False Then
  strSQL="SELECT TAC_UI_ID_FN FROM [Tenancy] WHERE TAC_ID_N="&_
Request("id")
  objRS.Open strSQL,objConn,1,3
  ‘若交易记录不存在则输出错误信息
  If objRS.BOF Or objRS.EOF Then
   Response.Write GetErr(12)
   objRS.Close
   Set objRS=Nothing
   CloseDatabase
Response.End
  End If
  ‘若用户更改的不是自己的交易记录,则输出错误信息 (转载自http://www.NSEAC.com中国科教评价网)
  If objRS("TAC_UI_ID_FN")<>Session("UserID") Then
   Response.Write GetErr(1)
   objRS.Close
   Set objRS=Nothing
   CloseDatabase
   Response.End
  End If
  objRS.Close
 End If
 ‘读取交易记录的相关信息
 strSQL="SELECT * FROM [Tenancy],[UserInfo],[VideoInfo],[Payment],[TypeInfo] “&_
”WHERE TAC_ID_N="&Request("id")&" AND TAC_VI_ID_FN=VI_ID_N”&_
” AND TAC_UI_ID_FN=UI_ID_N AND VI_TI_ID_FN=TI_ID_N AND”&_
” VI_PMT_ID_FN=PMT_ID_N"
 objRS.Open strSQL,objConn,1,3
 ‘若没有找到交易记录则输出错误信息
 If objRS.BOF Or objRS.EOF Then
  Response.Write GetErr(12)
  Response.End
  objRS.Close
  Set objRS=Nothing
  CloseDatabase
 End If
 '超期天数
 Dim tmpTimeout
 If IsNull(objRS("TAC_StartTime_D"))=False Then
  tmpTimeout=DateDiff("d",DateAdd("d",objRS("TAC_Lease_N")&_
,objRS("TAC_StartTime_D")),Now())
  If tmpTimeout<=0 Then
   tmpTimeout=0
  End If
 Else
  tmpTimeout=0
 End If
 '刷新影片状态记录
 If IsNull(objRS("TAC_StartTime_D"))<>True Then
  If tmpTimeout>objRS("TAC_Lease_N") Then
   '若影片超出租期未还,则设定影片状态为超期
   strSQL="UPDATE [Tenancy] SET TAC_TimeOut_B=True WHERE “&_
”TAC_ID_N="&Request("id")
   objConn.Execute(strSQL)
  End If
 End If
 '获取并判断用户租金
 Dim tmpUserPayment
 If IsNull(objRS("TAC_StartTime_D"))<>True Then (转载自http://zw.NSEaC.com科教作文网)
  If objRS("TAC_TimeOut_B")=True Then
   tmpUserPayment=objRS("PMT_Price_N")*DateDiff("d",&_
objRS("TAC_StartTime_D"),Now())+objRS("PMT_LateFee_N")*tmpTimeout
  Else
   tmpUserPayment=objRS("PMT_Price_N")*objRS("TAC_Lease_N")
  End If
 Else
  tmpUserPayment=0
 End If
 '管理选项
 Dim tmpCtr
 If IsNull(objRS("TAC_StartTime_D"))=True Then
  tmpCtr="[<a href=modifyRent.asp?action=CancelBooked&id="&_
Request("id")&">取消预订</a>]"
 End IF
 If IsAdmin=True Then
  tmpCtr=tmpCtr&"&nbsp;[<a href=modifyRent.asp?action=CtrRent&id="&_
Request("id")&">用户起租/结算</a>]"
 End If
%>
 
 
5.2.7 用户预定影片界面及代码
用户预定影片界面

 

此模块主要是提醒预定的相关信息,其功能实现的代码大致如下:

If IsEmpty(Session("UserID"))=True Then
 Response.Write GetErr(7)
 Response.End
End If

If IsNumeric(Request("id"))=False Or Request("id")="" Or &_
IsNumeric(Request("DayToRent"))=False Or Request("DayToRent")="" Then
 Response.Write GetErr(11)
 Response.End
End If

'用户是否是管理员
Dim IsAdmin
strSQL="SELECT UI_IsAdmin_B FROM [UserInfo] WHERE UI_ID_N="&Session("UserID")
Set objRS=Server.CreateObject("ADODB.RecordSet")
objRS.Open strSQL,objConn,1,3
IsAdmin=objRS("UI_IsAdmin_B")
objRS.Close

'判断此影片是否已租出
strSQL="SELECT VI_Status_N FROM [VideoInfo] WHERE VI_ID_N="&_
Request("id")&" AND VI_Status_N=3"
objRS.Open strSQL,objConn,1,3
If Not objRS.BOF Or Not objRS.EOF Then
 ResultMsg("对不起!此影片已被出租!")

(转载自中国科教评价网http://www.nseac.com

 Response.End
 Set objRS=Nothing
 CloseDatabase
End If
objRS.Close

'如果用户不是管理员则判断是否有超期未还的影片
If IsAdmin<>True Then
 strSQL="SELECT TAC_ID_N FROM [Tenancy] WHERE TAC_UI_ID_FN="&_
Session("UserID")&" AND (TAC_TimeOut_B=True AND TAC_Return_B=False)"
 objRS.Open strSQL,objConn,1,3
 If Not objRS.BOF Or Not objRS.EOF Then
  Call ResultMsg("您有超期未还的影片!请您归还影片后再做预订!")
  Response.End
  Set objRS=Nothing
  CloseDatabase
 End If
 objRS.Close
End If

If Request("IsBook")<>"" Then
 Dim tmpTime
 tmpTime=Now()
 '将用户的预订写入数据库
 strSQL="INSERT INTO [Tenancy] (TAC_VI_ID_FN,TAC_UI_ID_FN,”&_
”TAC_ReserveTime_D,TAC_TimeOut_B,TAC_MsgUser_B,TAC_Return_B,”&_
”TAC_StartTime_D,TAC_Lease_N,TAC_EndTime_D,TAC_UserPayment_N,”&_
”TAC_Status_N) VALUES("&Request("id")&","&Session("UserID")&",'"&tmpTime&_
"',False,False,False,NULL,"&Request("DayToRent")&",NULL,0,4)"
 objConn.Execute(strSQL)
 '读取交易号号(TAC_ID_N)
 strSQL="SELECT * FROM [Tenancy] WHERE TAC_UI_ID_FN="&Session("UserID")&_
" AND TAC_ReserveTime_D=#"&tmpTime&"#"
 objRS.Open strSQL,objConn,1,3
 '写入影片状态
 strSQL="UPDATE [VideoInfo] SET VI_Status_N=4 WHERE VI_ID_N="&_
objRS("TAC_VI_ID_FN")
 objConn.Execute(strSQL)
 Response.Write "<link href=style.css rel=stylesheet type=text/css>"
 Response.Write "<br>"
 Response.Write "<p align=center><b>您的预订已成功!</b>您的预订ID为:”&_
”<b><font color=red>"&objRS("TAC_ID_N")&"</font></b><br>”&_

(转载自http://zw.nseac.coM科教作文网)

”请您带此ID前去店铺取影片![<a href=vbscript:window.close()>”&_
”关闭</a>]</p>"
 objRS.Close
 Set objRS=Nothing
 CloseDatabase
Else
 Dim MovieTitle
 strSQL="SELECT * FROM [VideoInfo] WHERE VI_ID_N="&Request("id")
 Set objRS=Server.CreateObject("ADODB.RecordSet")
 objRS.Open strSQL,objConn,1,3
 MovieTitle=objRS("VI_Title_S")
 objRS.Close
 Set objRS=Nothing
 CloseDatabase
%>

5.2.8 用户注销的代码分析
此模块的作用是注销用户的登录。其原理是结束用户的私有变量Session(“UserID”)。
此模块的具体实现方法如下:

<%
‘结束用户私有变量
Session.Abandon
‘重定向网页
Response.Redirect "index.asp"
%>

第六章节调试
判断数据是否符合规范
数据是否符合规范,一般从数据的类型、数据的长度、数据是否为空、数据是否存在特殊字符来进行判断。
数值数据类型,可以使用IsNumeric()函数进行判断。如果传入的数据不是数值类型,则此函数返回值为False,反之则为True。
数据长度的判断,可以使用Len()函数进行判断。此函数的作用是获得传入数据的长度。比如要判断UserName这个变量内容的长度是否大于20个字符,则可以使用Len(UserName)>20来判断。也可以使用其来判断空值:Len(UserName)=0。
空值的判断,可以使用Len(),也可以直接使用Request(“UserName”)=””来判断。有的读者会问,为什么不是使用IsEmpty()来判断?这是因为,IsEmpty()判断的是是否存在这个数据,也就是说,假如Dim UserName ,但是没有给UserName赋值,IsEmpty()函数返回的也是False。这点需要格外注意
在此一般遇到的问题如下:
1.数据库中的空值是一个很抽象的概念,空值是为Null,它和没有值不同。打个比方,比如说有一个瓶子。瓶子里边除了空气其他什么都没有,这是没有值;另外一个瓶子,里边是真空的,这叫空值。反应到程序上,也就是UI_Name_S=”” 与 UI_Name_S IS NULL是不同的两回事。假如我们要找出数据库中所有没有QQ号的用户,例:

(转载自中国科教评价网www.nseac.com )


strSQL=”SELECT * FROM [UserInfo] WHERE UI_QQ_S IS NULL”
其否定是IS NOT NULL。
2.对查询的值使用ORDER BY字句进行排序时,所排序的列必须在查询当中列出。例:
strSQL=”SELECT VI_Title_S, VI_AddTime_D FORM [VideoInfo] ORDER BY VI_AddTime_D”
对数据库中多张关系表进行查询时,若有字段重名,则一定要指定具体的字段名成。假如数据库中有User及Admin两表,User为父表,Admin为子表,通过ID关系,都包含有一个名为Status的字段,现在要列出所有Admin的Name及Status,则:
strSQL=”SELECT Name,[Admin].Status FROM [User],[Admin] WHERE [User].ID=[Admin].ID”
3,在进行调试的时候,我遇到了一个页面打不开,说是缺少一个可更新的查询,后来经过老师的指导,得到了解决的方法:
主要是数据库没有使用正确的方法的打开,正确的方法如下:
SQL=”UPDATE Products set unitprice =2:”
Set conn=server.createobject (“adodb.connection”)
Conn.mode=3     ‘3=admodereadwrite
Conn.open”mydsn”
Conn.execute(sql)
Conn.close
 
                   

结论

 至此,影片租赁系统中的客户界面部分已经完成了,本部分采用了软件工程的设计思想,本系统无人拷贝.在开发影片租赁系统客户部分的时候,从中明白了一个完善的系统的,数据库设计和安全体制的重要性。通过这次开发,使我对ASP与数据库的开发有了新的认识与了解

 影片租赁系统客户部分的编写是在赵老师的知道下完成,虽然过程中的是比较苦的,但是再完成后,又觉得吃苦是必要的

结束语

 经过两个多月的设计和开发,影片租赁系统客户部分基本开发完毕。其功能基本符合 现实工作中的实际需求,能够完成影片的查找与租赁等功能,使影片出租者方便进行影片的出租管理,和影片的管理,实现了影片管理的半自动化 (科教范文网http://fw.ΝsΕΑc.com编辑)
    但是由于时间较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,出错处理不够等多方面问题。这些都有待进一步改善。
 在本次设计中,我从指导老师邓老师身上学到了很多东西。老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他们无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他们耐心的辅导

 

致谢

 在这次毕业设计过程中,我学到了很多的知识,也掌握了很多设计和操作技巧,尽管仍有很多不足,但我会不断改进,继续进步。在设计过程中,我得到了很多朋友的帮助和邓老师的指点,才得以顺利完成,他们给我提供了很多有关网页设计的书和材料,并抽出时间帮我修改与纠正,在此表示衷心的感谢!


参考文献

软件工程的开发

数据库开发实例精粹等书籍

网络设计程序ASP

网络数据库应用教程等书籍

上一篇:ASP在线教育系统(一)毕业论文网 下一篇:没有了