ASP基于BS影片租赁管理系统(源代码+论文)
收藏
资源目录
压缩包内文档预览:(预览前20页/共44页)
编号:438687
类型:共享资源
大小:729.29KB
格式:RAR
上传时间:2015-06-03
上传人:小***
认证信息
个人认证
林**(实名认证)
福建
IP属地:福建
20
积分
- 关 键 词:
-
asp
基于
bs
影片
租赁
管理
系统
源代码
论文
- 资源描述:
-
ASP基于BS影片租赁管理系统(源代码+论文),asp,基于,bs,影片,租赁,管理,系统,源代码,论文
- 内容简介:
-
目录第一章 前言2第二章编程环境基础知识32.1 利用ADO访问数据库32.2ASP与CGI的比较4第三章需求分析63.1功能需求分析63.2性能需求分析63.2.1软件63.2.2硬件6第四章总体设计74.1数据库的设计74.1.1数据库的需求分析74.1.2概念结构的设计74.1.3数据库逻辑结构的设计104.1.4物理结构的设计104.2功能模块的划分14第五章 详细设计145.1模块详细的设计155.1.1模块接口155.2页面设计及代码185.2.1注册页面及代码分析185.2.2用户登陆界面及代码分析205.2.3 影片浏览界面及代码225.2.4用户信息界面及代码分析265.2.5 用户资料界面及代码305.2.6 查看用户租赁信息截面及代码355.2.7 用户预定影片界面及代码385.2.8 用户注销的代码分析40第六章节调试41结论42结束语42致谢43参考文献43第一章 前言互联网发展速度迅猛,电子商务成为21世纪商务发展道路上的一大热点,随着宽带网络的普及及互联网应用方式的发展,电子商务正以前所未有的速度对传统的商务方式及理论造成可很大的冲击。并对以往的商务方式所进行的行业进行可很大程度的渗透。电子商务以其低廉的成本,相对方便的应用,以及互联网络所带来的前所未有的宣传效应,正成为商务活动发展的一个至关重要的平台。因此我们想开发一个在线的影片租赁系统,以此来表达我们对电子商务发展的拥护和对其前景的看好第二章编程环境基础知识2.1 利用ADO访问数据库ADO(ActiveX Data Objects)是一种操作Microsoft所支持的数据库的新技术。在ASP中,ADO可以看作是一个服务器组件(Server Component),更简单点说,是一系列的对象,应用这些功能强大的对象,即可轻松完成对数据库复杂的操作。本文中个性化页面的实现便大量地用到了ADO技术。具体的操作步骤可以归纳为以下几步:1创建数据库源名(DSN)2创建数据库链接(Connection)3创建数据对象4操作数据库5关闭数据对象和链接每一步的作法如下:1、创建数据源名DSN(Date Source Name)即数据源名称。我们知道,ODBC是一种访问数据库的方法,只要系统中有相应的ODBC驱动程序,任何程序就可以通过ODBC操纵驱动程序的数据库。比如我们系统中有Access的ODBC驱动程序,那么即使我们没有Access软件,也可以在我们的程序中对一个Access的MDB数据库加、删、改记录。而且我们根本不用知道这个数据库是放在哪里的。我们只要写出SQL语句,ODBC驱动程序就会帮我们做一切事情。我们在给ODBC驱动程序传SQL指令时,即是用DSN来告诉它到底操作的是哪一个数据库。如果数据库的平台变了,比如我们改用了SQL Server的数据库,只要其中表的结构没变,我们就不用改写我们的程序,只要重新在系统中配置DSN就行了。由此可见,DSN是应用程序和数据库之间的桥梁。2、创建数据库链接(Connection)链接用以保持一些关于正在访问的数据的一些状态信息,以及链接者信息。ASP文件中如果要访问数据,必须首先创建与数据库的链接,其语法如下:set Conn=Server.createObject(“ADOBD.CONNECTION”)这条语句创建了链接对象Conn,接下来:connstr=Provider=Microsoft.Jet.OLEDB.4.0;Data.Source=&Server.MapPath(&db&)conn.Open connstr这条语句打开链接,用到了DSN,本例为“connstr”。以上两个步骤缺一不可,因为链接对象的创建与打开是两回事,只有打开了才真正可以使用。3、创建数据对象(Record Set)ADO中的数据对象通常保存的是查询结果。Record Set是ADO中最复杂的对象,有许多属性和方法。Record Set保存的是一行行的记录,并标有一个当前记录。以下是创建方法:Set Record Set=Conn.Execute(sqtStr)这条语句创建并打开了对象Record Set,其中Con是先前创建的链接对象,rs是一个字串,代表一条标准的SQL语句。例如:rs=“SELECT * FROM shop_books”Set Record Set=mConn.Execute(rs)这条语句执行后,对象Record Set中就保存了表tab1中的所有记录。4、操作数据库我们通过调用链接对象的Execute方法来将查询结果返回给一个数据对象或进行插入、删除等操作。例如:rs=“INSERT INTO tab1 VALUES(1,2)”mConn.Execute(rs)/执行插入操作5、关闭数据对象和链接对象在使用了ADO对象之后要关闭它,因为它使用了一定的服务器资源。通过调用方法close实现关闭,然后再释放它。Record Set.closeSet Record Set=Nothing/关闭创建的数据对象mConn.closeSet mConn=Nothing/关闭创建的链接对象2.2ASP与CGI的比较CGI(Common Gateway Interface,通用网关接口)也是Internet上一种功能强大的Web页面技术,其工作方式有别于ASP。我们现对二者进行比较。Active Server Pages开发Web应用程序的特点:1 完全嵌入HTML,与HTML、Script语言完美结合。2 无须手动编译和链接程序。3 面向对象,并可扩展ActiveX Server组件功能。4 使用脚本语言(JavaScript、VBScript或PERL)编写。5 存取数据库轻松容易(使用ADO组件)。6 可使用任何语言编写自己的ActiveX Server组件。7 无浏览器兼容问题。8 程序代码隐藏,客户端仅能看到ASP输出的HTML文件。9 缩短Web开发时间。相比之下,使用CGI开发Web应用程序具有以下缺点:1 不易与HTML文件集成。2 须使用其他较复杂的语言来开发CGI程序。3 程序开发时间较长。4 存取数据库不容易。5 每个CGI程序被不同用户执行时都得重新执行一次,并占去Server的一个端口(Port),降低Server效率。可见,ASP在数据库访问、与HTML的集成、提高服务器的效率等诸多方面都优于CGI,更适应Web应用程序开发的需要,因此本文选择了ASP作为个性化页面生成器的开发工具。第三章需求分析3.1功能需求分析传统的影片出租方式是以客户到固定的店面进行挑选,确定后找店员进行登记,交押金以后才能把片子带走,这种出租方式过程中的一些过程非常烦琐,给客户和店主带来的许多的不便。比如:商店的选址,客户在遇到业务繁忙的情况等等,这就容易造成一些本来可以避免的错误的发生。因此,我们在开发在线的影片租赁系统的时,应对传统出租过程中的一些问题进行分析,并对其进行修改。综上所述,影片租赁系统客户界面部分在开发的时候主要的功能、大致如下:客户界面部分用户的登陆和注册个人信息的查看修改影片的浏览影片的预定租赁信息的查看3.2性能需求分析3.2.1软件开发环境为:OS(操作系统) Windows XP专业版服务器:IIS 5.X开发工具为:ASP ACCESS数据库 Dreamweaver 运行环境的基本需求: IE浏览器3.2.2硬件OS最低运行环境: CPU PENTIUN 300MHZ内存 128MB硬盘 20GBDreamweaver最低运行环境:WinXP, Win2000, NT, Win9X软件理想的运行环境:Windonws Xp专业版CPU PENTIUN 300MHZ内存 128MB硬盘 20GB第四章总体设计依据需求分析所确定的系统目标进行总体设计4.1数据库的设计4.1.1数据库的需求分析用户的需求主要体现在对各总细心的浏览的,查询,保存和更新的操作上,这就要求数据库设计上能够满足用户的这些需求,并且在结构的设计上能够做到简单明了,并保证系统的工作效率因此,影片的租赁系统客户管理部分在数据设计时,经过上述的需求分析,应该设计如下的数据项用户信息:用户名 密码 真实姓名 身份证 详细住址,电话 E-MAIL影片信息:片名 类型 简介,图片 影片ID 状态影片类型:类型ID 类型名称租赁信息:影片ID 用户ID 租借时间 租期 押金 结算时间 退还金额系统信息: 版权 关于 联系人4.1.2概念结构的设计为了方便设计与识别,以后E-R图中 代表实体 代表属性。实体与属性实体: 用户 影片类型 影片 租借信息 属性: 用户:用户名 密码 真实姓名 身份证 详细住址 电话 E-MAIL影片类型: 类型编号 名称影片: 影片ID 片名 简介 图片 租借信息:影片ID 用户ID 租借时间 租期 押金 结算时间 退还金额 错误信息实体之间联系的分析用户分为普通用户和管理员用户影片从属与影片类型一个用户可以拥有多个预定和租借关系一部影片也可以同时拥有多个用户租赁和预定一个租赁关系只能拥有一个相对应的租赁信息E-R图 总E-R图租赁影片属于影片类型还片时间错误信息起租时间押金租期客户退还金额影片实体E-R图影片影片ID名称类型简介图片状态影片分类E-R图影片类型编号名称系统信息E-R图系统信息版权联系人关于用户信息E-R图租赁信息E-R图4.1.3数据库逻辑结构的设计影片租赁系统中所有的数据都存贮在ACCESS数据库中将上面的数据库感念结构转化为ACCESS数据库所支持的关系数据模型关系模式影片:(影片ID 名称 类型 简介 图片 状态)用户: (用户ID 用户名 密码 真实姓名 身份证 详 细住址 电话 E-MAIL)影片类型: (编号 名称)租赁信息:(影片ID 用户ID 租借时间 租期 押金 退 还时间 退还金额 错误信息)范式分析在数据库逻辑结构设计上,会接触到关系模型数据库关系的最常用的三个范式。数据库关系的完善程度,很大程度上决定了数据库逻辑结构设计的成败,因此,对实体与属性之间的范式分析,是很有必要的。各个实体与属性之间的范式分析如下:数据库表中的字段都是单一属性的,不可再分数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖4.1.4物理结构的设计命名规则:1.没一个表把一个缩写用做表的一部分,如Viddeoinfo被缩写成VI2.所有的列名后面都有一个后缀,用来表示大致的数据类型,如S代表字符串类型,N代表数值数据类型等等3.主键包含一个后缀ID4.外键包含其父键的主键名称及后缀F由上面对实体与属性之间的关系分析与范式分式,得出了系统的物理结构如下: 租价方案表字段名描述键类型长度空值默认值PMT_ID_N租价方案IDautocountNot NullPMT_Price_N日租价singleNot Null0PMT_Deposit_N押金singleNot NullPMT_Description_N租价方案描述varchar50Not Null0PMT_LateFee_N滞纳金singleNot Null0。 供应商信息表字段名描述键类型长度空值默认值PI_ID_N供应商IDautocountNot NullPI_Name_S名称varchar50Not NullPI_Description_S描述varchar250 系统信息表字段名描述键类型长度空值默认值SI_Owner_S系统使用者varchar250SI_Copyright_N版权所有者varchar200SI_About_S关于varchar250SI_Logo_SLogo地址varchar250SI_Content_S联系人Emailvarchar250 租赁信息表字段名描述键类型长度空值默认值TAC_ID_N租赁号auto countNot NullTAC_VI_ID_FN租赁影片IDintNot NullTAC_UI_ID_FN租赁用户IDintNot NullTAC_ReserveTime_D预定时间datetimeNot NullTAC_TimeOut_B是否超时datetimeNot NullFalseTAC_Return_B是否返还booleanNot NullFalseTAC_StartTime_D起租时间datetimeTAC_Lease_N租期int1TAC_EndTime_D结租时间datetimeTAC_UserPayment_N用户付款数single0TAC_Status_N租赁状态intNot Null影片承载介质表字段名描述键类型长度空值默认值TI_ID_N介质IDautocountNot NullTI_Description_S介质名varchar100Not Null影片信息表字段名描述键类型长度空值默认值VI_ID_N影片IDautocountNot NullVI_TI_ID_FN影片介质IDintNot NullVI_VS_ID_FN影片类型IDintNot NullVI_PMT_ID_FN租价方案IDintNot NullVI_PI_ID_FN供应商IDintNot NullVI_Title_S影片名varchar50Not NullVI_Content_S内容big varcharVI_Director_S导演varchar100VI_Playactor_S演员varchar100VI_Issuer_S发行商varcharVI_Rank_N评价intNot Null1VI_RentCount_N出租次数intNot Null0VI_Count_N浏览计数intNot Null0VI_Status_N影片状态intNot Null1VI_AddTime_D添加时间datetimeNot NullNow()VI_Img_S图片地址varchar150影片类型表字段名描述键类型长度空值默认值VS_ID_N影片类型IDautocountNot NullVS_Description_S描述varchar50Not NullVS_Count_N类型浏览技术intNot Null0VS_RentCount_N类型租赁计数intNot Null0 用户信息表字段名描述键类型长度空值默认值UI_ID_N用户IDautocountNot NullUI_PI_ID_FN供应商IDintNot Null0UI_Name_S用户名varchar20Not NullUI_Password_S密码varchar100Not NullUI_IsLock_B用户是否锁定booleanNot NullFalseUI_CerRank_N信用级别intNot Null0UI_IsProvider_B用户是否为供应商booleanNot NullFalseUI_Email_SEmailvarchar50Not NullUI_QQ_SQQvarchar20UI_IsAdmin_B用户是否为管理员booleanNot NullFalseUI_RentCount_N用户租赁计数intNot Null0注意:键类型中,“”标注的为主键;“”标注的为外键。4.2功能模块的划分由于我做的主要是客户界面的设计,因此,经过上面的分析,由实体与属性之间的关系,以及对实际租赁过程的分析,得出客户界面的功能大致如下:第五章 详细设计5.1模块详细的设计Index.asp 系统初始界面功能:用户可在这里浏览,租赁影片,可以进行登陆,注册Login.asp 用户登陆模块功能:用户可以进行登陆Logout.asp 用户用户注销登陆模块功能 用户可以进行用户帐号的注销Reg.asp 用户注册模块功能 用户可以进行帐号的注册BookMovie.asp 用户预定影片模块 功能 用户可以在这里进行影片的预定Disprent.asp 显示租赁信息模块 功能: 可以显示租赁信息Dispmovie.asp 显示影片信息 功能: 用户可以在这里浏览影片5.1.1模块接口在用户登陆主界面的时候,调用模块与被调用的模块,及调用的数据库文件之间的关系如下:调用模块名 index.asp被调用模块名 login.asp reg.asp dispmovie.sap NavBar.aspindex为首页 在这上面有用户的登陆注册,和影片的浏览,用户在点注册的时候的就调用了reg.sap,在点登陆的时候就调用了login.asp,在点注销的时候就调用了logout.asp,在用户打开页面的时候,可以浏览影片,这时候就要调用dispmovie.asp输入,输出部分在用户进行登陆的时候,用户名和密码为输入项,由login.asp收并连入数据库与userinfo进行比较核对,看是否为已经注册的用户用户登陆login.asp。用户不是注册用户的话,可以进行注册,这时候调用reg.asp,又它把用户的注册信息输入数据库userinfo用户注册reg.asp在打开系统时,且没注册时用户可以浏览影片,这时候调用dispmovie.asp,从数据库videoinfo调出影片的信息浏览影片dispmovie.asp也可以点影片的类型名称进行浏览影片,这时间调用的是NavBar.asp,由它连入数据库VideoStyle,调出数据项影片类型名称NavBar.asp当用户登陆时,如果帐号密码输入不正确的话,这时候调用chkerr.asp,并连入数据库ErrCode,输出信息提醒用户用户登陆chkerr.asp用户登陆以后可以在这里进行用户的管理,已租,预定的影片和到期影片的查看和影片的浏览,注销,和影片的分类浏览。调用的模块是Login.asp,被调用的是modifyUser.asp Disprent.asp Dispmovie.asp logout.asp 输入输出部分当用户在点击用户管理时,调用modifyUser.asp,由它连入数据库userinfo,当用户修改了信息的时候,又由modifyUser.asp把修改后的信息存入userinfo中用户管理modifyUser.asp当用户在点击已租,到期影片的查看的时候,调用的是login.asp,由它连入数据库Tenancy已租,到期影片的查看login.asp当用户点注销的时候,调用的是logout.asp注销logout.asp用户在浏览和租赁影片的时候调用的是head.asp被调用的是NavBar.asp BookMovie.asp Dispmovie.asp输入输出部分:当用户浏览影片的时候,调用的Dispmovie.asp,由它连入数据库VideoInfo,并把信息输出影片浏览Dispmovie.asp当用户点击影片分类浏览影片的时候,调用的是NavBar.asp,由它连入数据库,并把信息输出影片分类NavBar.asp当用户在预定影片的时候调用的是BookMovie.asp,由它连入数据库Tenancy,并把数据输出预定影片BookMovie.asp5.2页面设计及代码 5.2.1注册页面及代码分析代码分析:当用户在点击注册,填写了注册信息,点注册按钮的时候,执行的代码如下:如果检测到浏览器传递的值IsReg不为空,则执行代码;如果为空,则显示页面代码部分If Request(IsReg) Then 判断用户输入的合法性用户名、密码、确认密码、Email不能为空If Request(UserName)= Or Request(UserPassword)=&_ Or Request(ConfirmPassword)= Or Request(Email)= ThenResultMsg(必填的项目没有填写,请返回重新填写完整的信息!)Response.EndEnd If用户名不能为一排空格Dim tmpUserNameFor i=1 To Len(Request(UserName)tmpUserName=tmpUserName& NextIf tmpUserName=Request(UserName) ThenResultMsg(请不要输入空格代替必填项目,请返回重新填写完整的信息!)Response.EndEnd If密码与确认密码的输入必须匹配If Request(UserPassword)Request(ConfirmPassword) ThenResultMsg(两次输入的密码不匹配,请返回重新输入!)Response.EndEnd IfEmail必须符合格式If IsValidEmail(Request(Email)=False ThenResultMsg(Email输入不符合规范,请返回重新输入!)Response.EndEnd If若QQ号不为空,则输入必须为数字If Request(QQ) ThenIf IsNumeric(Request(QQ)=False ThenResultMsg(QQ号码必须为数字,请返回重新输入!)Response.EndEnd IfEnd If用户名与密码中不能包含SQL字符“”If InStr(Request(UserName),)0 Or InStr(Request(UserPassword),)0 ThenResultMsg(字符“”为非法输入,请去掉此字符!)Response.EndEnd If用户名、密码、Email和QQ的字符数量不能超过数据库项目的数据类型的限制If Len(Request(UserName)20 Or Len(Request(UserPassword)20&_ Or Len(Request(Email)50 Or Len(Request(QQ)20 ThenResultMsg(输入超出了最大字符数量限制(用户名20字符以内”&_”,密码20字符以内,Email 50字符以内,QQ 20字符以内。))Response.EndEnd If取得用户输入Dim UserName,UserPassword,Email,QQUserName=Server.HTMLEncode(Request(UserName)根据用户名判断用户是否已存在strSQL=SELECT UI_Name_S FROM UserInfo”&_” WHERE UI_Name_S=&Request(UserName)&Set objRS=Server.CreateObject(ADODB.RecordSet)objRS.Open strSQL,objConn,1,3如果没有找到任何用户,则输出操作信息If Not objRS.BOF Or Not objRS.BOF ThenResultMsg(所注册的用户名已存在,请更换用户重新注册!)Response.EndEnd IfobjRS.Close将用户信息写入数据库strSQL=INSERT INTO UserInfo (UI_PI_ID_FN,UI_Name_S,UI_Password_S”&_”,UI_IsLocked_B”,UI_CerRank_N,UI_IsProvider_B,UI_Email_S,UI_QQ_S,”&_”UI_IsAdmin_B,UI_RentCount_N)VALUES(0,&UserName&,&UserPassword&_,False,0,False,&Email&,&QQ&,False,0)objConn.Execute(strSQL)ResultMsg(您的注册已成功!)Set objRS=NothingCloseDatabaseElse5.2.2用户登陆界面及代码分析用户登录时,需要检测用户名和用户密码;用户名和密码通过检测后,需要判断用户是否被锁定。检测通过后,还需要遍历数据库中的数据,找出有没有用户的租赁超过了期限,如果超过了则在数据库中进行标注。代码分析:%Dim strSQL,objRSSet objRS=Server.CreateObject(ADODB.RecordSet)取得用户文件名、密码Dim UserName,UserPassword过滤SQL字符,防止SQL漏洞注入UserName=ChkSQL(Request(UserName) UserPassword= Request(UserPassword)在数据库中查找用户strSQL=SELECT * FROM UserInfo WHERE UI_Name_S=&UserName&objRS.Open strSQL,objConn,1,3判断用户是否存在若用户不存在则通过GetErr()函数提交并显示错误代码If objRS.BOF Or objrs.EOF ThenobjRS.Close Set objRS=NothingResponse.Write GetErr(3)Response.EndElse若用户存在,则检测用户密码的正误If objRS(UI_Password_S)UserPassword ThenobjRS.CloseSet objRS=NothingResponse.Write GetErr(4)Response.EndEnd IF判断用户是否被锁定If objRS(UI_IsLocked_B)=True ThenobjRS.CloseSet objRS=NothingResponse.Write GetErr(5)Response.EndEnd If建立用户私有变量Session.Timeout =30Session(UserID)=objRS(UI_ID_N)objRS.Close每当有用户登录则刷新数据库,判断是否有影片的预订超时或超期未还strSQL=SELECT TAC_ReserveTime_D,TAC_StartTime_D FROM Tenancy”&_” WHERE TAC_StartTime_D IS NULLobjRS.Open strSQL,objConn,1,3For i=1 To objRS.RecordCount有超时的预订则删除If IsNull(objRS(TAC_StartTime_D)=True And&_ DateDiff(h,objRS(TAC_ReserveTime_D),Now()12 ThenobjRS.DeleteEnd IfobjRS.MoveNextNextobjRS.ClosestrSQL=SELECT * FROM Tenancy WHERE TAC_StartTime_D”&_” IS NOT NULL AND TAC_EndTime_D IS NULLobjRS.Open strSQL,objConn,1,3Dim MsgUserFor i=1 To objRS.RecordCount有超期租赁的则标注If DateDiff(d,DateAdd(d,objRS(TAC_Lease_N),&_objRS(TAC_StartTime_D),Now()=objRS(TAC_Lease_N) ThenstrSQL=UPDATE Tenancy SET TAC_TimeOut_B=True,”&_”TAC_MsgUser_B=True WHERE TAC_ID_N=&objRS(TAC_ID_N)objConn.Execute(strSQL)End IfobjRS.MoveNextNextobjRS.Close跳转回主页Response.Redirect index.aspEnd If%5.2.3 影片浏览界面及代码用户在浏览此页面的时候,可以执行的功能主要有影片的浏览,查找,查看影片的状态,可以查看影片被点击的次数,因此,在代码设计的时候主要是围绕这几个功能进行的。用户浏览,查找,查看影片状态的代码:影片租赁系统%FindMovie=Request(FindMovie)FindMovie=Replace(FindMovie,)判断用户是否查找电影If FindMovie Then如果返回的查找电影名称的字符串非空,则根据用户的输入查找电影名称如果返回的是数字,则根据电影ID查找If IsNumeric(FindMovie) ThenstrSQL=SELECT * FROM VideoInfo WHERE VI_ID_N=&FindMovieElseSelect Case Request(FindType)Case Title strSQL=SELECT * FROM VideoInfo WHERE VI_Title_S LIKE”&_“ %&FindMovie&%Case DirectorstrSQL=SELECT * FROM VideoInfo WHERE VI_Director_S LIKE “&_”%&FindMovie&%Case PlayactorstrSQL=SELECT * FROM VideoInfo WHERE VI_Playactor_S LIKE “&_”%&FindMovie&%Case IssuerstrSQL=SELECT * FROM VideoInfo WHERE VI_Issuer_S LIKE “&_”%&FindMovie&%Case ElsestrSQL=SELECT * FROM VideoInfo WHERE VI_Title_S LIKE “&_”%&FindMovie&%End SelectEnd If判断用户是否在特定的区域浏览电影If IsNumeric(Request(ViewArea) AND Request(ViewArea)0 ThenstrSQL=strSQL& AND VI_VS_ID_FN=&Request(ViewArea)End IfElsestrSQL=SELECT * FROM VideoInfo ORDER BY VI_AddTime_D DESCIf IsNumeric(Request(ViewArea) AND Request(ViewArea)0 ThenstrSQL=SELECT * FROM VideoInfo WHERE”&_” VI_VS_ID_FN=&Request(ViewArea)& ORDER BY VI_AddTime_D DESCEnd IfEnd IfSet objRS=Server.CreateObject(ADODB.RecordSet)objRS.PageSize=3objRS.Open strSQL,objConn,1,3如果从数据库中没有读取到任何电影的信息,则返回信息If objRS.BOF Or objRS.EOF ThenResponse.Write 没有找到要查找的影片!”&_”返回Response.Write strSQL&Response.EndEnd IfResponse.Write Response.Write Response.Write 浏览电影:Response.Write %Call ChangePage(index.asp)Response.Write 查找影片:Response.Write Response.Write 名称导演”&_”演员发行商Response.Write Response.Write Response.Write 共&ObjRS.RecordCount&部电影Response.Write 读取指定页面容量的内容For i=1 to objRS.PageSizeResponse.Write ”&_”Response.Write ”&_”&objRS(VI_Title_S)&(ID:&objRS(VI_ID_N)&)Response.Write 内容:&_Left(objRS(VI_Content_S),100)&_导演:&objRS(VI_Director_S)&_演员:&objRS(VI_PlayActor_S)&_发行商:&objRS(VI_Issuer_S)&_评价:&objRS(VI_Rank_N)&Response.Write 状态:浏览 &_objRS(VI_Count_N)&次/出租&objRS(VI_RentCount_N)&”次”利用Select Case判断影片的状态Select Case objRS(VI_Status_N)Case 1Response.Write 待租Case 2Response.Write 未发行Case 3Response.Write 已出租Case 4Response.Write 被预定End SelectResponse.Write objRS.MoveNext如果记录已到末尾则退出循环If objRS.EOF Then Exit ForNextResponse.Write Response.Write objRS.Close%用户查看影片被点的次数的代码分析影片租赁系统%If IsNumeric(Request(id)=False ThenResponse.Write GetErr(11)Response.EndEnd IfstrSQL=SELECT * FROM VideoInfo,Payment WHERE VI_ID_N=&Request(id)&_ AND VI_PMT_ID_FN=PMT_ID_NSet objRS=Server.CreateObject(ADODB.RecordSet)objRS.Open strSQL,objConn,1,3更新影片点击数strSQL=UPDATE VideoInfo SET VI_Count_N=&objRS(VI_Count_N)+1&_ WHERE VI_ID_N=&objRS(VI_ID_N)objConn.Execute(strSQL)objRS.CloseResponse.Write %5.2.4用户信息界面及代码分析用户信息界面用户可以在此界面进行用户信息的查看,已租影片,要到期的影片的查看,用户的管理的功能,因此,代码的设计如下:用户要进行以上功能的时候,首先应该判断用户是否为注册用户,次判断的代码如下:If IsEmpty(Session(UserID)=True Then若没有登录则显示登陆框Response.Write Response.Write Response.Write 用户信息:访客,&_您的IP是&Request.ServerVariables(REMOTE_ADDR)& Response.Write Response.Write Response.Write 用户名:Response.Write 密码: Response.Write ”&_”&_”没有注册?Response.Write Response.Write Else若果登录,则读取用户信息通过SQL多表查询读取用户已预订或者已租的影片代码如下:strSQL=SELECT * FROM Tenancy,VideoInfo WHERE TAC_UI_ID_FN=&_Session(UserID)& AND VI_ID_N=TAC_VI_ID_FN AND (TAC_Status_N=4 OR “&_”TAC_Status_N=3)Set objRS=Server.CreateObject(ADODB.RecordSet)objRS.Open strSQL,objConn,1,3读取已预订影片及已租影片的信息Dim Rent,Prearrange,MsgRent,OvertimeRentIf objRS.BOF Or objRS.EOF ThenRent=您还没有租影片MsgRent=您还没有租影片OvertimeRent=您还没有租影片Prearrange=您还没有预订影片ElseFor i=1 To objRS.RecordCount通过Select Case语句将已预订与已租影片分类Select Case objRS(TAC_Status_N)Case 3If DateDiff(h,Now(),DateAdd(h,&_objRS(TAC_Lease_N)*24,&_objRS(TAC_StartTime_D)24 Then如果租出的影片在返还时间24小时以外,则显示为“已租影片”Rent=Rent&objRS(VI_Title_S)&还剩&_DateDiff(h,Now(),DateAdd(h,&_objRS(TAC_Lease_N)*24,&_objRS(TAC_StartTime_D)&小时ElseIf DateDiff(h,Now(),DateAdd(h,&_objRS(TAC_Lease_N)*24,&_objRS(TAC_StartTime_D)=0 Then如果租出的影片离返还时间不到24小时,则显示为“要到期影片”MsgRent=MsgRent&objRS(VI_Title_S)&还剩&DateDiff(h,Now(),&_DateAdd(h,objRS(TAC_Lease_N)*24,&_objRS(TAC_StartTime_D)&小时Else如果租出的影片已经超过归还期限,则显示为“超期影片”OvertimeRent=OvertimeRent&objRS(VI_Title_S)&已过期&_DateDiff(h,DateAdd(h,&_objRS(TAC_Lease_N)*24,&_objRS(TAC_StartTime_D),Now()&小时!End IfCase 4显示预订时间If DateDiff(h,objRS(TAC_ReserveTime_D),Now()=12 ThenPrearrange=Prearrange&objRS(VI_Title_S)&End IfEnd SelectobjRS.MoveNextNextEnd IfobjRS.Close显示用户IP,及页面代码如下:Response.Write 欢迎您的来访!&_您的IP是&Request.ServerVariables(REMOTE_ADDR)&_5.2.5 用户资料界面及代码用户资料管理界面用户在此界面可以进行对用户个人信息的修改,实现功能,其代码大致如下:If IsEmpty(Session(UserID)=True ThenResponse.Write GetErr(7)Response.EndEnd If根据IsModify判断是执行程序还是显示页面If Request(IsModify) Then判断要更改的用户是否存在Set objRS=Server.CreateObject(ADODB.RecordSet)strSQL=SELECT UI_ID_N FROM UserInfo WHERE UI_ID_N=&Request(uid)objRS.Open strSQL,objConn,1,3If objRS.BOF Or objRS.EOF ThenResponse.Write ResultMsg(要修改的用户没有找到!)objRS.CloseSet objRS=NothingCloseDatabaseResponse.EndEnd IfobjRS.Close检查输入的合法性密码If Request(ChangePassword) ThenIf Request(Password)= ThenResultMsg(如果选择了更改密码,则必须输入密码!)Response.EndEnd IfIf Len(Request(Password)20 ThenResultMsg(密码请不要超过20个字符!)Response.EndEnd IfIf InStr(Request(Password),)0 ThenResultMsg(字符“”为非法输入,请去掉此字符!)Response.EndEnd IfEnd IfEmailIf IsValidEmail(Request(Email)=False ThenResultMsg(Email输入不符合规范,请返回重新输入!)Response.EndEnd IfQQIf Request(QQ) ThenIf IsNumeric(Request(QQ)=False ThenResultMsg(QQ号码必须为数字,请返回重新输入!)Response.EndEnd IfEnd If当管理员修改时判断If Request(ChangeBy)=admin Then判断用户是否为管理员strSQL=SELECT UI_IsAdmin_B FROM UserInfo WHERE UI_ID_N=&_Session(UserID)objRS.Open strSQL,objConn,1,3If objRS(UI_IsAdmin_B)=False ThenobjRS.CloseResponse.Write GetErr(8)CloseDatabaseResponse.EndEnd IfobjRS.Close供应商If IsNumeric(Request(Provider)=False Or Request(Provider)= ThenResponse.Write GetErr(1)Response.EndEnd If管理员If Request(IsAdmin)true AND Request(IsAdmin)false ThenResponse.Write GetErr(1)Response.EndEnd If锁定If Request(IsLocked)true AND Request(IsLocked)false ThenResponse.Write GetErr(1)Response.EndEnd If信用等级If IsNumeric(Request(CerRank)=False Or Request(CerRank)= ThenResultMsg(信用等级不能留空!)Response.EndEnd IfEnd If取得用户信息如果用户填了新密码,则加密此密码以便更新If Request(ChangePassword) ThenUserPassword=(Request(Password)End IfEmail=Request(Email)QQ=Request(QQ)ProviderID=Request(Provider)如果ProviderID0则说明用户是供应商If ProviderID0 ThenIsProvider=TrueElseIsProvider=FalseEnd IfIsAdmin=Request(IsAdmin)IsLocked=Request(IsLocked)CerRank=Request(CerRank)根据情况建立SQL语句更新数据库If Request(ChangeBy)=admin ThenIf Request(ChangePassword) ThenstrSQL=UPDATE UserInfo SET UI_PI_ID_FN=&ProviderID&_,UI_Password_S=&UserPassword&,UI_IsLocked_B=&IsLocked&_,UI_CerRank_N=&CerRank&,UI_IsProvider_B=&IsProvider&_,UI_Email_S=&Email&,UI_QQ_S=&QQ&,UI_IsAdmin_B=&IsAdmin&_ WHERE UI_ID_N=&Request(uid)ElsestrSQL=UPDATE UserInfo SET UI_PI_ID_FN=&ProviderID&_,UI_IsLocked_B=&IsLocked&,UI_CerRank_N=&CerRank&_,UI_IsProvider_B=&IsProvider&,UI_Email_S=&Email&,UI_QQ_S=&_QQ&,UI_IsAdmin_B=&IsAdmin& WHERE UI_ID_N=&Request(uid)End IfElseIf Request(ChangePassword) ThenstrSQL=UPDATE UserInfo SET UI_Password_S=&UserPassword&_,UI_Email_S=&Email&,UI_QQ_S=&QQ& WHERE UI_ID_N=&_Request(uid)ElsestrSQL=UPDATE UserInfo SET UI_Email_S=&Email&,UI_QQ_S=&_QQ& WHERE UI_ID_N=&Request(uid)End IfEnd IfobjConn.Execute(strSQL)输出结果Response.Write ResultMsg(用户信息更新完毕!)CloseDatabaseResponse.EndElse判断输入是否合法If IsNumeric(Request(uid)=False Or Request(uid)= ThenResponse.Write GetErr(1)Response.EndEnd If判断用户是否为管理员Dim strSQL,objRSDim IsAdminstrSQL=SELECT UI_ID_N,UI_IsAdmin_B FROM UserInfo WHERE UI_ID_N=&_Session(UserID)Set objRS=Server.CreateObject(ADODB.RecordSet)objRS.Open strSQL,objConn,1,3IsAdmin=objRS(UI_IsAdmin_B)objRS.Close若用户不是管理员则判断其修改的是否为自己的信息If IsAdmin=False ThenIf Cint(Request(uid)Cint(Session(UserID) ThenResponse.Write GetErr(8)CloseDatabaseResponse.EndEnd IfEnd If取得用户信息Dim UserName,Email,QQDim Provider,IsProvider,ProviderIDDim IsLocked,IsAdmin2Dim RentCount,CerRankstrSQL=SELECT * FROM UserInfo WHERE UI_ID_N=&Request(uid)objRS.Open strSQL,objConn,1,3If objRS.BOF Or objRS.EOF ThenResultMsg(对不起,此用户不存在或已被删除!)objRS.CloseCloseDatabaseResponse.EndEnd IfUserName=objRS(UI_Name_S)Email=QQ=IsProvider=objRS(UI_IsProvider_B)ProviderID=objRS(UI_PI_ID_FN)RentCount=objRS(UI_RentCount_N)CerRank=objRS(UI_CerRank_N)如果用户是供应商,取得供应商信息strSQL=SELECT * FROM ProviderInfoobjRS.Open strsQL,objConn,1,3Provider=不是供应商For i=1 To objRS.RecordCountIf objRS(PI_ID_N)=ProviderID ThenProvider=Provider&_objRS(PI_Name_S)&ElseProvider=Provider&_objRS(PI_Name_S)&End IfobjRS.MoveNextNextProvider=Provider&objRS.Close5.2.6 查看用户租赁信息截面及代码用户租赁信息界面用户可以在这里进行对自己租赁信息的查看,实现此功能,其代码,大致如下: 判断用户状态是否失效,若失效则返回错误ID 7If IsEmpty(Session(UserID)=True ThenResponse.Write GetErr(7)Response.EndEnd If判断数据的传输是否正确If IsNumeric(Request(id)=False Or Request(id)= ThenResponse.Write GetErr(1)Response.EndElse判断并标注超期的影片strSQL=SELECT * FROM Tenancy WHERE TAC_StartTime_D IS NOT NULL AND”&_” TAC_EndTime_D IS NULLSet objRS=Server.CreateObject(ADODB.RecordSet)objRS.Open strSQL,objConn,1,3Dim MsgUser检测是否有超期的影片For i=1 To objRS.RecordCount若有则标注TAC_TimeOut_B=TrueIf DateDiff(d,DateAdd(d,objRS(TAC_Lease_N),objRS(TAC_StartTime_D)&_,Now()objRS(TAC_Lease_N) ThenstrSQL=UPDATE Tenancy SET TAC_TimeOut_B=True,TAC_MsgUser_B”&_”=True WHERE TAC_ID_N=&objRS(TAC_ID_N)objConn.Execute(strSQL)End IfobjRS.MoveNextNextobjRS.Close用户是否是管理员Dim IsAdminstrSQL=SELECT UI_IsAdmin_B FROM UserInfo WHERE UI_ID_N=&_Session(UserID)objRS.Open strSQL,objConn,1,3IsAdmin=objRS(UI_IsAdmin_B)objRS.Close若用户不是管理员,则判断其所浏览的交易记录是否是自己的If IsAdmin=False ThenstrSQL=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 ThenResponse.Write GetErr(12)objRS.CloseSet objRS=NothingCloseDatabaseResponse.EndEnd If若用户更改的不是自己的交易记录,则输出错误信息If objRS(TAC_UI_ID_FN)Session(UserID) ThenResponse.Write GetErr(1)objRS.CloseSet objRS=NothingCloseDatabaseResponse.EndEnd IfobjRS.CloseEnd 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_NobjRS.Open strSQL,objConn,1,3若没有找到交易记录则输出错误信息If objRS.BOF Or objRS.EOF ThenResponse.Write GetErr(12)Response.EndobjRS.CloseSet objRS=NothingCloseDatabaseEnd If超期天数Dim tmpTimeoutIf IsNull(objRS(TAC_StartTime_D)=False ThentmpTimeout=DateDiff(d,DateAdd(d,objRS(TAC_Lease_N)&_,objRS(TAC_StartTime_D),Now()If tmpTimeout=0 ThentmpTimeout=0End IfElsetmpTimeout=0End If刷新影片状态记录If IsNull(objRS(TAC_StartTime_D)True ThenIf tmpTimeoutobjRS(TAC_Lease_N) Then若影片超出租期未还,则设定影片状态为超期strSQL=UPDATE Tenancy SET TAC_TimeOut_B=True WHERE “&_”TAC_ID_N=&Request(id)objConn.Execute(strSQL)End IfEnd If获取并判断用户租金Dim tmpUserPaymentIf IsNull(objRS(TAC_StartTime_D)True ThenIf objRS(TAC_TimeOut_B)=True ThentmpUserPayment=objRS(PMT_Price_N)*DateDiff(d,&_objRS(TAC_StartTime_D),Now()+objRS(PMT_LateFee_N)*tmpTimeoutElsetmpUserPayment=objRS(PMT_Price_N)*objRS(TAC_Lease_N)End IfElsetmpUserPayment=0End If管理选项Dim tmpCtrIf IsNull(objRS(TAC_StartTime_D)=True ThentmpCtr=取消预订End IFIf IsAdmin=True ThentmpCtr=tmpCtr&用户起租/结算End If%5.2.7 用户预定影片界面及代码用户预定影片界面此模块主要是提醒预定的相关信息,其功能实现的代码大致如下:If IsEmpty(Session(UserID)=True ThenResponse.Write GetErr(7)Response.End End IfIf IsNumeric(Request(id)=False Or Request(id)= Or &_IsNumeric(Request(DayToRent)=False Or Request(DayToRent)= ThenResponse.Write GetErr(11)Response.EndEnd If用户是否是管理员Dim IsAdminstrSQL=SELECT UI_IsAdmin_B FROM UserInfo WHERE UI_ID_N=&Session(UserID)Set objRS=Server.CreateObject(ADODB.RecordSet)objRS.Open strSQL,objConn,1,3IsAdmin=objRS(UI_IsAdmin_B)objRS.Close判断此影片是否已租出strSQL=SELECT VI_Status_N FROM VideoInfo WHERE VI_ID_N=&_Request(id)& AND VI_Status_N=3objRS.Open strSQL,objConn,1,3If Not objRS.BOF Or Not objRS.EOF ThenResultMsg(对不起!此影片已被出租!)Response.EndSet objRS=NothingCloseDatabaseEnd IfobjRS.Close如果用户不是管理员则判断是否有超期未还的影片If IsAdminTrue ThenstrSQL=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,3If Not objRS.BOF Or Not objRS.EOF ThenCall ResultMsg(您有超期未还的影片!请您归还影片后再做预订!)Response.EndSet objRS=NothingCloseDatabaseEnd IfobjRS.CloseEnd IfIf Request(IsBook) ThenDim tmpTimetmpTime=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,Fal
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。