在线视频服务系统的功能模块划分如下图(2-2)所示:
- 电影分类浏览
用户可以通过电影的类别进行浏览。显示近期热门电影,近期点机排行。用户能很方便的找到自己感兴趣的电影进行观看。
- 电影搜索
如果用户有很明确的目的,例如知道电影的名字,主演等相关信息,就可以利用此搜索功能。
- 电影推荐
如果用户对某个电影感兴趣,或认为比较好,就可以使用“电影推荐”功能,将信息发送给管理员。
- 站长推荐
如果管理员对某个电影特别感兴趣,可以把它推荐个来访的用户。
- 添加电影
所有的管理员都可以添加,但必须先进入登录页面。
- 分类管理
高级管理员和超级管理员可以对电影进行分类操作。
- 地址管理
该项功能只有超级管理员可以使用,可以添加电影服务器。
- 用户管理
可以添加删除各类用户,查看用户信息,查看用户的在线情况。
站点的网页内容是用HTML标记显示文件的编排效果,这是一种静态的内容显示方式,充其量HTML标记只是一种文件编排的语言,所谓的网页设计只是一种高级的文件编排功能。现在ASP程序让网页设计成为一种程序语言,在功能上足以开发完整的Web应用程序。此时,数据库正是Web应用程序后台不可缺少的系统支持,因为Web应用程序大多就是网页数据库。
在计算机的应用领域,数据才是公司或家庭计算机化的真正帮手。早期的程序设计员大都是靠替人设计数据库系统为生,众多的考勤系统、库存管理系统、进销存系统等等。简单地说这些都是数据库系统。
目前,数据库系统本身就是一套应用程序,用户在不编写任何程序代码的情况下都可以使用。只有在比较复杂的系统中,程序开发者才会编写语言设计客户所需的应用系统。
开发数据库系统的过程就是建立数据的使用界面和决策结构,目的是针对不同的需求使用数据库记录。至于数据库系统本身,其目的只是存取数据,作为应用系统保存数据的地方。
在转换到Web舞台后,数据库的本质并没有改变,只是数据的使用界面变成了网页,数据库成为网页内容的来源。网页数据库就是一个结合前台网页使用界面,加上后台Web服务器和数据库系统的一种全新的应用程序。
不仅如此,结合后台的数据库系统后,网页正式成为一个Web应用程序的开发环境,而不仅仅是一个展示的舞台。应用程序将彻底打破地域的限制,只要连上Internet的计算机都能够使用Web应用程序访问数据库的内容。
根据系统功能设计的要求以及功能模块的划分,可以给出《在线视频点播系统》的各个组成部分的数据项和数据结构。
对于电影的信息数据库,可以列出以下数据项和数据结构:
-
- 电影大类信息: ID(自动编号)、名称。
对于系统管理员信息数据库,可以列出以下数据项和数据结构:
-
- 系统管理员信息:管理员ID(自动编号)、管理员名称、管理员密码、管理员级别(数字)。
对于电影内容信息数据库,可以列出以下数据项和数据结构:
-
- 电影ID(自动编号)、电影名字、电影介绍、相关文章、点击次数、时间和日期、主演。
根据系统功能设计的要求以及功能模块的划分,各个系统的具体逻辑实现如下:
对于电影大类信息数据库,可以列出以下数据项和数据结构:
-
- 电影大类信息: ID(自动编号)名称。
它不需要外部数据支持。
对于系统管理员信息数据库,可以列出以下数据项和数据结构:
-
- 系统管理员信息:管理员ID(自动编号)、管理员名称、管理员密码、管理员级别(数字)。
它不需要外部数据支持。
对于电影内容信息数据库,可以列出以下数据项和数据结构:
-
- 电影ID(自动编号)、电影名称、电影介绍、相关文章、点击次数、时间和日期、主演。
需要外部数据支持:
根据系统要求,可以创建以下数据表:
-
- 电影大类信息表(type):
电影的ID使用的是自动编号,每增加一个新的大类,ID自动加1。电影大类名称的数据类型是文本,可以通过后台超级用户管理。
电影信息表的一些初始化数据如图所示:
3、管理员信息表
管理员信息表的结构如图所示:
在管理员信息表的设计中,除了管理员的ID,姓名和密码外,还设计了一个级别属性,“1”表示超级管理员,拥有所有权限,“2”表示高级管理员,高级管理员可以进行电影添加和电影管理,“3”表示初级管理员,只拥有电影添加的功能。
管理员信息表的一些初始化数据如图所示:
电影内容信息表:
电影内容信息表的一些初始化数据如图所示:
如图所示,给出了在线视频点播系统的首页效果:
视频点播系统的首页面重要包含三个部分。
A、一个是页面的顶部定义文件(top),它包含了个Flash 动画,主要代码如下:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="778" height="130" align="center">
<param name="_cx" value="20585">
<param name="_cy" value="3440">
<param name="FlashVars" value>
<param name="Movie" value="images/top.swf">
<param name="Src" value="images/top.swf">
<param name="WMode" value="Transparent">
<param name="Play" value="-1">
<param name="Loop" value="-1">
<param name="Quality" value="High">
<param name="SAlign" value>
<param name="Menu" value="-1">
<param name="Base" value>
<param name="AllowScriptAccess" value="always">
<param name="Scale" value="ShowAll">
<param name="DeviceFont" value="0">
<param name="EmbedMovie" value="0">
<param name="BGColor" value>
<param name="SWRemote" value>
<param name="MovieData" value>
<param name="SeamlessTabbing" value="1"><embed src="images/top.swf" width="500" height="90" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent">
</object>
B、页面的中间部分,即电影的分类导航,具体结构和代码说明如下:
公告部分代码:
</HEAD>
<tr>
<td width="100%" background="images/index-bg2.jpg" height="206">
<div align="center">
<center>
<table border="0" cellpadding="4" cellspacing="4" style="border-collapse: collapse" bordercolor="#111111" width="85%" id="AutoNumber6">
<tr>
<td width="100%">
<marquee direction="up" height="163" οnmοuseοut="this.start()" οnmοuseοver="this.stop()" scrollAmount="1" scrollDelay="100" align="left">
<%set rs1=server.createobject("adodb.recordset")
sql="select * from talk where id=id"
rs1.open sql,conn,1,3
talk=rs1("talk")
rs1.close
set rs1=nothing
%><%=talk%></marquee>
</td>
</tr>
</table>
最近更新代码:
<table border="0" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="80%" id="AutoNumber16">
<%
dim t
t=0
sql="select articleid,title,typeid,dateandtime,best from learning order by articleid desc"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
do while not rs.eof
t=t+1
%>
<tr>
<td align="center"><%=t%>.</td>
<td><a href="movie.asp?id=<%=rs("articleid")%>" target="_blank" class="left"><%content=rs("title")
if len(content)>13 then content=left(content,13)&"…"
response.write content
%></a>
</td>
<td align="center" width="18%"><%=Month(rs("dateandtime"))%>-<%=day(rs("dateandtime"))%></td>
</tr>
<tr>
<td colspan="3">
<img border="0" src="images/index-line3.gif" width="230" height="1" ></td>
</tr>
<%
if t>=13 then exit do
rs.movenext
loop
%>
</table>
电击排行榜代码:
<table border="0" cellpadding="2" style="border-collapse: collapse" bordercolor="#111111" width="80%" id="AutoNumber16">
<%
Set rst= Server.CreateObject("ADODB.Recordset")
rst.open "select articleid,title,hits from learning order by hits desc",conn,1,1
%>
<%
i=0
do while not rst.eof
i=i+1
%>
<tr>
<td align="center"><%=i%>.</td>
<td><a href="movie.asp?id=<%=rst("articleid")%>" target="_blank" class="left"><%content=rst("title")
if len(content)>12 then content=left(content,12)&"…"
response.write content
%></a>
</td>
<td align="center" width="16%"><%=rst("hits")%></td>
</tr>
<tr>
<td colspan="3">
<img border="0" src="images/index-line3.gif" width="230" height="1" ></td>
</tr>
<%
if i>=12 then exit do
rst.movenext
loop
rst.close
set rst=nothing
%>
</table>
各类电影代码:(以喜剧片为例)
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber22">
<%
sql="select * from learning WHERE domurl<>Null and typeid='喜剧片' and firstbest=1 order by dateandtime desc"
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,1
if rs.eof and rs.bof then
response.write ""
else
i=0
do while not rs.eof or rs.bof
%>
<tr>
<td width="35%">
<a href="movie.asp?id=<%=rs("articleid")%>" target="_blank"><img border="0" src="<%if rs("domurl")="" then%>img/w.gif<%else%><%=rs("domurl")%><%end if%>" width="66" height="66"><img src="../../My%20Documents/movie/20054161240351.jpg" width="180" height="225"></a></td>
<td width="65%">
<img border="0" src="images/index-dot2.gif" width="4" height="8">
<a href="movie.asp?id=<%=rs("articleid")%>" target="_blank" class="left"><b><%content=rs("title")
if len(content)>12 then content=left(content,12)&"-"
response.write content
%></b></a>
<br>
<span class="L20">主演:<%content=rs("name")
if len(content)>8 then content=left(content,8)&"…"
response.write content
%></span>
<br>
<span class="L20">观看次数: <%=rs("hits")%>次</span>
</td>
</tr>
<% i=i+1
if i>=1 then exit do
rs.movenext
loop
end if
rs.close
set rs=nothing
%>
</table>
管理员登录页面示例,如图所示:
管理员登录界面调用的各程序如下图所示:
管理员进入管理员登录界面,如果输入正确的用户名和密码,则进入管理系统界面(admin1.asp),否则,则进入系统出错提示页面(findaccount.asp)。
管理员登录界面实现方法
主要ASP程序如下:
</head>
<body ">
<div align="center">
<center><br>
<table border="0" cellspacing="1" width="295">
<tr>
<td width="365">
<form name=loginform οnsubmit="if (!formcheck()) return false;" method="post" action="FindAccount.asp">
<table width="296" border="0" cellspacing="0" cellpadding="1" bordercolordark="#6699FF" bordercolorlight="#FFFFFF" align="center" bgcolor="#53A9FF" height="160">
<tr>
<td width="292" bgcolor="#FFFFFF" height="158">
<div align="center">
<center>
<table width="261" border="0" cellpadding="0" cellspacing="0" height="163">
<tr>
<td colspan="2" width="276" height="18"></td>
</tr>
<tr>
<td colspan="2" class="bold" width="276" height="29">
<p align="center"><font size="3">管理员登录</font></p>
</td>
</tr>
<tr>
<td valign="middle" align="right" class="subject" width="76" height="34"><font size="2">用
名:</font></td>
<td valign="top" width="198" height="34"><font size="2"><input size="21" name="Name"></font></td>
</tr>
<tr>
<td valign="middle" align="right" class="subject" width="76" height="34"><font size="2">密
码:</font></td>
<td valign="top" align="left" width="198" height="34"><font size="2"><input type="password" size="21" name="Pwd"></font></td>
</tr>
<tr>
<td colspan="2" width="276" height="30"><font size="2">
<input type="submit" value="登录" class="buttonface" name="submit">
</font><input type="reset" value="重写" name="B2"></td>
</tr>
<tr>
<td colspan="2" align="right" width="276" height="18"></td>
</tr>
</table>
</center>
</div>
</td>
</tr>
</table>
</form>
<p align="center"> </td>
</tr>
</table>
</center>
</div>
</body>
</html>
</body>
</html>
未完待续。。。