第7章 asp编程实例.pdf

上传人:qwe****56 文档编号:70021250 上传时间:2023-01-14 格式:PDF 页数:67 大小:518.42KB
返回 下载 相关 举报
第7章 asp编程实例.pdf_第1页
第1页 / 共67页
第7章 asp编程实例.pdf_第2页
第2页 / 共67页
点击查看更多>>
资源描述

《第7章 asp编程实例.pdf》由会员分享,可在线阅读,更多相关《第7章 asp编程实例.pdf(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、用 ASP 实现网上“五子棋”大赛 “五子棋”是大家都非常熟悉的一种益智类游戏,相关的游戏软件也非常多,在此我向大家隆重推出一款新的纯“网络版”的五子棋,它利用 ASP 做为开发环境,因此在 Internet 上对战的时候无需下载客户端软件,只要你有一个浏览器就可以了。你也可以在局域网上进行这个游戏。对于 ASP,我不想做过多的说明,在以前的文章中,我已经说过很多。游戏的过程是这样的,我们首先登录,然后可以选择战场,有“金星”、“木星”、“水星”、“火星”、“土星”等五个战场,如果你自认为是一个高手,可以选择金星,否则可以依次选择其它几个星球做为战场。如果这个星球上没有擂主,你就应该以擂主的身

2、份进入,然后别人就可以和你进行对战了。当然,如果所有的星球上都已经开始了战争,那么你就只能等一会儿了。如果你是以擂主身份进入的,你可以等待别人来和你对战,如果你是以攻擂手的身份登录,你可以很快的和擂主展开战斗。开始战斗后,由擂主执黑先行,然后由攻擂手出招,如此这般。当最后决出胜负的时候,会有相应的提示。该站点有几个主要的文件是:Index.asp 登录文件:Index0.asp 中间文件:Match.asp 比赛文件:Back0.jpg white0.jpg black0.jpg 中间用到的图形文件,分别指的棋盘,白子和黑子,如下图:在程序的初始化的时候,将棋盘上分成若干的表格,将背景图片放入

3、其中,形成一个棋盘,然后在放上一个棋子后,再将图片换上相应的白子或黑子就可以了。先看看登录文件:%Language=VBScript%HTML HEAD META NAME=GENERATOR Content=Microsoft Visual Studio 6.0 title星球大战之“五子连珠”大赛!/title /HEAD BODY p align=centerfont size=6星球大战/font/P table border=1 width=80%align=center trtd星球/tdtd擂主/tdtd大战/tdtd攻擂/td/tr tr td金星/td td%if appli

4、cation(first1)=then%form action=index0.asp?flag=First1 method=post INPUT id=text1 name=txtFirst1 size=10INPUT id=submit1 name=submit1 type=submit value=进入 /form%else response.write application(first1)end if%/td td大战/td td%if application(second1)=then%form action=index0.asp?flag=second1 method=post I

5、NPUT id=text1 name=txtSecond1 size=10INPUT id=submit1 name=submit1 type=submit value=进入 /form%else response.write application(Second1)end if%/td /tr tr td木星/td td%if application(first2)=then%form action=index0.asp?flag=First2 method=post INPUT id=text1 name=txtFirst2 size=10INPUT id=submit1 name=sub

6、mit1 type=submit value=进入 /form%else response.write application(first2)end if%/td td大战/td td%if application(second2)=then%form action=index0.asp?flag=second2 method=post INPUT id=text1 name=txtSecond2 size=10INPUT id=submit1 name=submit1 type=submit value=进入 /form%else response.write application(Sec

7、ond2)end if%/td /tr tr td金星/td td%if application(first3)=then%form action=index0.asp?flag=First3 method=post INPUT id=text1 name=txtFirst3 size=10INPUT id=submit1 name=submit1 type=submit value=进入 /form%else response.write application(first3)end if%/td td大战/td td%if application(second3)=then%form ac

8、tion=index0.asp?flag=second3 method=post INPUT id=text1 name=txtSecond3 size=10INPUT id=submit1 name=submit1 type=submit value=进入 /form%else response.write application(Second3)end if%/td /tr tr td金星/td td%if application(first4)=then%form action=index0.asp?flag=First4 method=post INPUT id=text1 name=

9、txtFirst4 size=10INPUT id=submit1 name=submit1 type=submit value=进入 /form%else response.write application(first4)end if%/td td大战/td td%if application(second4)=then%form action=index0.asp?flag=second4 method=post INPUT id=text1 name=txtSecond4 size=10INPUT id=submit1 name=submit1 type=submit value=进入

10、 /form%else response.write application(Second4)end if%/td /tr tr td金星/td td%if application(first5)=then%form action=index0.asp?flag=First5 method=post INPUT id=text1 name=txtFirst5 size=10INPUT id=submit1 name=submit1 type=submit value=进入 /form%else response.write application(first5)end if%/td td大战/

11、td td%if application(second5)=then%form action=index0.asp?flag=second5 method=post INPUT id=text1 name=txtSecond5 size=10INPUT id=submit1 name=submit1 type=submit value=进入 /form%else response.write application(Second5)end if%/td /tr /table /BODY /HTML 这个文件不用做过多的说明,就是一个大的表格,大家可以从那里进入,如果某个位置已经被使用,则它会变

12、成该大 侠的名字,不允许重复登录。在登录后进入 index0.asp,这是一个中间交换文件,在里面进行一些变量的处理及赋值,然后再进入match.asp,进行正式的比赛。我们来看一下 index0.asp 的内容:%Language=VBScript%if Request.Form(txt&request.querystring(flag)then response.write in!&session(nice)=Request.Form(txt&request.querystring(flag)response.write session(nice)&response.write appli

13、cation(request.querystring(flag)if application(request.querystring(flag)=then application(request.querystring(flag)=session(nice)session(class)=right(request.querystring(flag),1)if left(request.querystring(flag),1)=f then application(session(nice)=false elseif left(request.querystring(flag),1)=s the

14、n application(session(nice)=false application(application(first&session(class)=true end if Response.Redirect match.asp end if end if%HTML /HTML 该程序中,用 session(“nice”)来记录您登录的大名,以后的处理中,很多都要用到它,用它来区分很多的用户。如果您是从擂主的位置进入,则您的权利是 first,否则是 second,用 session(class)来记录位于哪个战场场,“金”“木”“水”“火”“土”分别表示为 1、2、3、4、5,因为有

15、多个战场可能同时开战,如果不能正确地区分开,则可能导致一片混乱。application(session(nice)是一个逻辑型变量,用真假来表示您是否可以出棋,如果是假,您要等待一个,如果是真,您就可以下棋了。只有一个战场上的两个人都进入了以后,擂主方可以下棋,而且只有当擂主出子以后,攻擂手才可以下棋。准备好以后,下面就进入赛场,请看文件 match.asp html head meta http-equiv=Content-Type content=text/html;charset=gb2312 meta name=GENERATOR content=Microsoft FrontPage

16、 4.0 meta name=ProgId content=FrontPage.Editor.Document META http-equiv=refresh content=3 title连珠大赛./title /head%Response.Write 擂主:&application(first&session(class)&攻擂:&application(second&session (class)if Request.QueryString(pos)then application(pos&session(class)&Request.QueryString(pos)=true end

17、if%body%Response.Write application(aaa)if application(first&session(class)=session(nice)then color=black if Request.QueryString(pos)then if session(last)=then session(last)=abc if session(last)Request.QueryString(pos)then application(application(first&session(class)=false if application(second&sessi

18、on(class)then application (application(second&session(class)=true session(last)=Request.QueryString(pos)END IF end if else if application(second&session(class)=session(nice)then color=white if Request.QueryString(pos)then if session(last)=then session(last)=abc if session(last)Request.QueryString(po

19、s)then application(application(first&session(class)=true application(application(second&session(class)=false session(last)=Request.QueryString(pos)END IF end if else if application(second&session(class)=then application(second&session(class)=session(nice)color=white if Request.QueryString(pos)then i

20、f session(last)=then session(last)=abc if session(last)Request.QueryString(pos)then application(application(first&session(class)=true application(application(second&session(class)=false session(last)=Request.QueryString(pos)END IF end if else color=end if end if end if Response.Write table width=400

21、 height=400 border=0 cellspacing=0 cellpadding=0 for i=1 to 16 Response.Write tr for j=1 to 16 if application(pos&session(class)&cstr(i)&_&cstr(j)=then application(color&session(class)&_&Request.QueryString (pos)=color Response.Write td width=25 height=25 response.write application(application(first

22、&session(class)if application(session(nice)=true then response.write a href=match.asp?pos=&cstr(i)&_&cstr(j)&img border=0 src=back0.jpg width=25 height=25/a else response.write img border=0 src=back0.jpg width=25 height=25 end if response.write/td else Response.Write td width=25 height=25img border=

23、0 src=&application(color&session(class)&_&cstr(i)&_&cstr (j)&0.jpg width=25 height=25/td&chr(13)end if next Response.Write/tr next Response.Write/table 判断输赢 if application(first&session(class)=session(nice)then m=black h=white else h=black m=white end if 横向判断-for i=1 to 15 win=false loss=false five_

24、me=0 five_he=0 for j=1 to 15 if application(color&session(class)&_&cstr(i)&_&cstr (j)=m then five_me=five_me+1 five_he=0 elseif application(color&session(class)&_&cstr(i)&_&cstr(j)=h then five_me=0 five_he=five_he+1 else five_me=0 five_he=0 end if if five_me=5 then win=true loss=false exit for elsei

25、f five_he=5 then win=false loss=true exit for end if next if win or loss then exit for next if win then response.write 你赢了!application(application(first&session(class)=false application(application(second&session(class)=false end if if loss then response.write 对不起,你输了!application(application(first&s

26、ession(class)=false application(application(second&session(class)=false end if 列向判断|for j=1 to 15 win=false loss=false five_me=0 five_he=0 for i=1 to 15 if application(color&session(class)&_&cstr(i)&_&cstr (j)=m then five_me=five_me+1 five_he=0 elseif application(color&session(class)&_&cstr(i)&_&cst

27、r(j)=h then five_me=0 five_he=five_he+1 else five_me=0 five_he=0 end if if five_me=5 then win=true loss=false exit for elseif five_he=5 then win=false loss=true exit for end if next if win or loss then exit for next if win then response.write 你赢了!application(application(first&session(class)=false ap

28、plication(application(second&session(class)=false end if if loss then response.write 对不起,你输了!application(application(first&session(class)=false application(application(second&session(class)=false end if 斜向判断/for i=1 to 11 win=false loss=false five_me=0 five_he=0 for j=i+4 to 1 step-1 if application(

29、color&session(class)&_&cstr(j)&_&cstr (i+5-j)=m then five_me=five_me+1 five_he=0 elseif application(color&session(class)&_&cstr(j)&_&cstr(i+5-j)=h then five_me=0 five_he=five_he+1 else five_me=0 five_he=0 end if if five_me=5 then win=true loss=false exit for elseif five_he=5 then win=false loss=true

30、 exit for end if next if win or loss then exit for next if win then response.write 你赢了!application(application(first&session(class)=false application(application(second&session(class)=false end if if loss then response.write 对不起,你输了!application(application(first&session(class)=false application(appl

31、ication(second&session(class)=false end if 斜向判断 for i=1 to 11 win=false loss=false five_me=0 five_he=0 for j=12-i to 15 if application(color&session(class)&_&cstr(13-i-j)&_&cstr(j)=m then five_me=five_me+1 five_he=0 elseif application(color&session(class)&_&cstr(13-i-j)&_&cstr(j)=h then five_me=0 fi

32、ve_he=five_he+1 else five_me=0 five_he=0 end if if five_me=5 then win=true loss=false exit for elseif five_he=5 then win=false loss=true exit for end if next if win or loss then exit for next if win then response.write 你赢了!application(application(first&session(class)=false application(application(se

33、cond&session(class)=false end if if loss then response.write 对不起,你输了!application(application(first&session(class)=false application(application(second&session(class)=false end if%/body /html 如果某点没有棋子,则加上一个超连接,根据擂主与攻擂手的区别放上一个不同颜色的棋子。最后的一段是用来判断输与赢,分为横,列和两个斜线方向。具体内容看一下就可以明白。最后要说的一点就是 global.asa,这是站点上的一

34、个核心文件,为了在退出棋局后,将位置留给别人,需要在 sesison_onend 中加入代码进行处理,如下:script language=vbscript runat=server sub application_onstart session.timeout=1 end sub sub session_onstart if application(num)=then application(num)=0 end if application(num)=application(num)+1 end sub /script script language=vbscript runat=serv

35、er sub session_onend if application(num)=then application(num)=0 end if application(num)=application(num)-1 if application(first1)=session(nice)then application(first1)=elseif application(second1)=session(nice)then application(second1)=elseif application(first2)=session(nice)then application(first2)

36、=elseif application(second2)=session(nice)then application(second2)=elseif application(first3)=session(nice)then application(first3)=elseif application(second3)=session(nice)then application(second3)=elseif application(first4)=session(nice)then application(first4)=elseif application(second4)=session

37、(nice)then application(second4)=elseif application(first5)=session(nice)then application(first5)=elseif application(second5)=session(nice)then application(second5)=end if for i=1 to 15 for j=1 to 15 application(color&session(class)&_&cstr(i)&_&cstr (J)=application(pos&session(class)&cstr(i)&_&cstr(j

38、)=next next application(session(nice)=end sub /script 以上就是几个主要的文件,大家可以一试。什么,想做围棋?把棋盘改一下就可以了。祝大家成功!用 ASP 构建音乐服务器 -音乐服务器(Music Server)是指一个提供音乐在线服务的服务器,它包括高端提供门户服务的网站、Web 数据库和低端的操作平台、硬件设施。目前,在 Internet 和 Intranet 上有不少这样的站点,特别是在一些高速宽带的局域网中(如校园网),音乐服务器给上网的朋友提供了休闲娱乐的好去处,同时也给网站带来了较高的访问率。-像其他站点一样,音乐服务器包括网站和

39、硬件两个部分。硬件性能和服务器效率是成正比的,因而如何构建网站才是一个音乐服务器的关键。从目前来看,网站基本有两种类型:一种是运行在 Unix/Linux 环境下,采用 Perl/C/Php/Java 等作 CGI 编程语言;一种是运行在 Win NT Server 平台上,采用 ASP/WinCGI 作后台语言。前者运行效率高,但结构复杂,比较适合大型站点;后者编程难度相对较低,而且采用 ODBC 驱动接口,数据库连接方便,特别适合作音乐服务器。-本文将以 ASP 5.0 为编程环境、Mircosoft Access 97 为 Web 数据库、Win NT Server 4.0为运行平台,举

40、例说明音乐服务器的构建步骤。-一个基本的音乐服务器包括音乐在线欣赏、音乐排行榜、音乐主题检索和音乐下载等四个部分。下面将主要从技术角度来讨论如何实现以上功能。音乐主题数据库的规划 -音乐主题数据库是 Web 站点存储所需音乐资料的仓库,它的规划在很大程度上影响了整个网站的结构和效率。数据库中可以单独建成一张表单,也可以以主键和外键的形式建成多张表单。本例中为说明上的便利,建成如下单表框架:(music.mdb)音乐在线欣赏 -在线欣赏是指客户端利用播放器播放服务器端的音乐文件。其原理是当客户端向服务器提交音乐选单后,服务器生成相应的.m3u 文件,并将该文件通过 Http 协议下行至客户端;客

41、户端将被激发调用相应的播放器执行该文件,从而实现了音乐在线欣赏功能。目前支持.m3u 文件的播放器有 Winamp、Realplayer G2、Musicmatch 等。当这些播放器软件被正确安装在客户端时,就可以自动播放.m3u 文件。所以解决问题的关键在于后台如何生成.m3u文件并下行到客户端。以下利用 ASP 中内置的 FileSystem 组件给出一种解决方案,并给出相应程序。dim choose,path,mydb,myset,SQL,fs,mp3 获得 list.htm 表单中选中的歌曲项 对应的 id 号,并赋给字串变量 choose choose=“(for i=3 to re

42、quest.form.count choose=chooserequest.form(i)“,next choose=left(choose,len(choose)1)“)判断 choose 变量,如果不包含任何 id 号,说明 list.htm 中没有选中任何歌曲,终止程序 if choose=“()then response.redirect(“list.htm)response.end end if 设置文件路径,需要把 temp 目录的权限设为 对 internet 匿名用户具有 read write 权限 path=“E:inetpubwwwroottemp 创建文件对象 Set f

43、s=CreateObject(“Scripting.FileSystemObject)Set mp3=fs.CreateTextFile(path“listen.m3u,True)创建数据库对象 set mydb=server.createobject(“adodb.connection)mydb.open“music 检索数据库,获得歌曲信息 SQL=“select mp3name,url from dbname“where id in choose set myset=tdb.execute(SQL)do while not myset.eof 生成点播歌曲文件列表 mp3.Write(“

44、http:/myset(“url)chr(10)myset.movenext loop 更新数据库中的当天点播次数和 总共点播次数 SQL=“update music set click=click1,this=this1 where id in choose mydb.execute(SQL)取消对象 set myset=nothing mydb.close set mydb=nothing mp3.close set mp3=nothing 将该文件下载给用户 response.redirect(“listen.m3u)response.end -注意:利用这种方法时,要控制.m3u 文件

45、 Http 头的内容。在 Winnt 中可利用 IIS 设置.m3u文件类型的 Mine 内容。具体操作如下:启动 IIS 选中音乐服务器所在的 Web 站点 点击“属性”按钮 在出现的属性选项卡中点击“Http 标题”卡 点击“文件类型”按钮 点击“新增类型”按钮 在“相应的扩展名”中填入“.m3u”,在“内容类型”中填入“audio/mpegurl”然后一路确定即可。音乐排行榜 -音乐排行榜是音乐服务器不可缺少的一项内容,其重要性不亚于一个站点的 Pageview。它可以向歌迷即时提供信息、引导欣赏、动态地反映潮流趋势。在众多的音乐服务器中,排行榜也是竟相推陈出新的地方,具有很高的点击率。

46、一般说来,排行榜包括总共点播次数、当天点播次数、总共下载次数等内容。具体的实现方法比较简单。在单表中可以利用如下SQL 语句:select from music order by total_click。若是多表,则可以利用带 join 子句的联合查询 SQL 语句。如果要限定查询记录数,可采用 count()集合函数。如在本例中,如果要查询当天点播次数前 20 名的歌曲,可采用如下语句:select top 20 from music order by total_click desc。排行榜的功能主要取决于主题数据库的规划如何,你可以根据需要增删字段,以实现相应功能(如增加进榜时间、歌手资

47、料、名次变化等等),所涉及的 SQL 语句也不会过于复杂。总之,排行榜是体现一个音乐网站特色所在,可以自由发挥。音乐主题检索 -提到检索,很多人立刻联想到 Yahoo、Soho 等著名站点,并且颇有神秘之感。其实,搜索引擎在数据库中并非难事,因为数据库内置的数据引擎已经提供了很好的基础。搜索效率的高低取决于数据库的性能和 SQL 语句的效率。在前台,可以提供一系列的检索项目和条件选项。在后台,则根据前台提交的表单,生成相应的查询语句在数据库中执行,并将查询结果返回。比如在前台提交的表单为:检索项目=“歌手姓名”,内容=“张学友”,匹配条件=“全字匹配”,则后台生成的 SQL 语句为:selec

48、t from music where singer=张学友 order by edition,id asc,这样就可以检索出张学友的所有歌曲信息,并按专集分类返回。又如前台要查询的歌手姓名为“齐秦”,且歌曲名称带有“雨”字的所有歌曲(即要求模糊匹配),则后台生成的SQL语句为:select from music where singer=齐秦 and mp3name like 雨 order by id asc,将返回“冬雨”、“太阳雨”、“无情的雨无情的你”等等。只要运用适当的技巧和灵活的 SQL 语句,就可以让你的主题检索发挥得淋漓尽致。音乐下载功能 -提供音乐下载功能,同样是音乐服务器的

49、一个基本功能,特别是对远程用户,将喜爱的歌曲下载后才能欣赏。一般有两种方式提供下载,一种是直接通过 Http 和浏览器下载,另一种是将曲库开辟为 Ftp 目录,通过 ftp 协议下载。本例中采用前一种方式,并且在数据库中对下载次数进行跟踪记录。有些站点还根据需要对歌曲进行压缩加密,将密码提供给正式用?彩且惶蹩扇?馈纠?谐绦蛉缦拢?获得歌曲标志号 id id=request(“id)set tdb=server.createobject(“adodb.connection)tdb.open“music SQL=“select mp3url from music where id=id set t

50、set=tdb.execute(SQL)if tset.eof then response.end else 更新数据库中歌曲的下载次数 SQL=“update music set total_down=total_down 1 where id=id tdb.execute(SQL)downfile=tset(“url)tdb.close set tset=nothing set tdb=nothing end if if downfile=“or isnull(downfile)then response.end downfile=“http:/downfile 下载相应歌曲 respon

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁