基于ASP的学生团员档案管理系统Word下载.docx
《基于ASP的学生团员档案管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《基于ASP的学生团员档案管理系统Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
/巫连吉’下操作,同时选择的是在‘本地视图’下用ASPVBScript进行测试。
URL前缀是:
http:
//localhost/巫连吉/。
三、数据库的创建:
1、打开MicrosoftAccess,新建一个空Access数据库,并取名。
我这里一共建了admin、banjishezhi、setup、ty四个表,这些都是保存到‘D:
/巫连吉’文件夹下wulianji中;
2、分别双击各表使用设计器编辑表。
编辑各表的字段名、数据类型,注意把ID都设置为主键;
3、具体操作如下:
(1)、为了方便用户登陆该系统,而建立admin数据库表,制定登陆用户的姓名和密码等限制。
如下就是针对该表而编辑的字段名和数据类型:
(2)、建立banjishezhi表是说明有个班和班名都是什么。
下面就是针对这些问题而编辑的字段名和相对的数据类型(如下图):
(3)、建立setup表可以很方便的找到您要查询的符合该条件的所有团员信息。
它的字段名和数据类型编辑如下:
(4)、建立ty表是详细介绍团员的个人挡案信息(如:
团员姓名、性别、出生年月、入团时间和地点、是哪学年入该校及所在的班级等信息)。
下面是对该表编辑的字段名和数据类型所做的设计:
第二章系统前台设计
一、整个系统几部分组成及各部分要实现的功能
1、整个团员系统包括团员名册、查询统计、添加团员、用户管理(里面还有个添加管理用户界面)、参数设计、注销退出,共六大部分组成。
这使得整个系统达到完善的实现查询、添加、修改和管理等功能。
2、各部分要实现的功能:
(1)团员名册:
显示所有团员信息。
在这界面中可以对团员信息进行修改和删除该团员信息。
(2)查询统计:
这个界面是用来查询所符合条件的团员信息,其中包括按序号、姓名、班级、性别、团员出生年月范围、入团时间范围、哪个学年度里的哪的班级进行多方面查询。
这样使得查询更灵活方便。
(3)添加团员:
就是把新加入的团员信息添加到系统中以方便查询、修改和管理。
(4)用户管理:
制定登陆用户姓名和密码,及对该用户的信息进行修改,同时也可以添加新的用户。
(5)参数设计:
设计年级班级数目及是哪个年度的,这里还添加了按团员入团时间、地点查询功能。
(6)注销退出:
退出整个系统界面。
二、前台设计用到的技术
创建HTML基本页:
这是制作网页的主体,在这过程我主要使用了表格对页面的划分,图像的插入,有些图片还经过Photoshop的设计,还有页面之间的超链接技术,表单(在这里用上了与数据库上的连接)、按钮、列表/菜单、文本域、层的使用。
在制作系统版头时还运用到CSS样式,使得页面更加简单明了。
在这里用到的技术有:
1、表格:
在网页技术中,它占有重要的地位,它不但用于一般意思的格式化显示信息外,更多的还是划分网页的结构;
还能够记载表单式的资料、规范各种数据、输入列表式的文字,而且还可以用来排列文字和图片。
在说表格还可以转换成层,当作层来使用。
2、图像:
它是优化网页显示效果的一部分。
常用的图像格式有GIF和JPEG。
在网页中插入的图片可以是剪贴画、图片文件、艺术字、使用绘图工具绘制的图形、视频对象等。
但是要注意的是通常网页中使用的图片的容量不能超过30KB,每个网页图片的总容量不要超过60KB。
3、超链接:
在Dreamweaver中创建超链接的方式很方便,也很简单。
在网页中插入的超链接包括对当前网页书签的超链接、电子邮件地址的超链接、本站点其他网页以及其他站点的超链接。
通常进行超链接是通过URL表达链接路径的;
一般连接路径有三种表达方式:
绝对路径、相对路径和基于根目录的路径。
我在这里主要用了对文挡之间的超连接。
4、表单:
表单是由一类可输入和保存信息的项目组成的栏目。
在网页中,两个网页之间传递信息就好似需要用表单来实现,表单中可以保存输入的文字,选择的选项,甚至一些隐藏的信息。
目前网站与用户的交互主要是通过表单实现的。
表单有多种类型,主要包括提示站点访问者输入个人信息的用户登记表、网上购物的订购单、反馈意见表、允许访问者搜索Web站点的搜索查询表单等。
5、列表/菜单:
这里就是我们通常说的下拉菜单,其实它也是一种选择性的表单,不同的是,它是以下拉的方式显示,而且可以选择是单选还是多选。
6、文本:
网页中的文本对象是网页中最基本的元素。
输入的文本通常要经过格式化处理,使其美观、引人注目。
输入格式可以是直接通过键盘输入,也可以通过复制和粘贴命令将其他文挡中的文本信息复制到网页中。
7、层:
描述层是HTML中一种精确的布局方式,是属于容器的概念,每个层就是一个容器,在该层中可以放置文本、图象、表单、表格等,甚至于其他层,就像Photoshop、flash等软件一样,层与层之间是相互独立的,只有显示上下的相对关系。
层的概念使得一个网页可以有多个页面,但这些页面只能在同一个位置。
层位置的定位可以很精确,可以精确到像素。
多个层之间除了简单的对象叠加顺序外,还可以通过时间轴在屏幕上移动层,制作动画效果。
8、CSS样式:
CSS样式,即层叠样式,全称CascadingStyleSheets。
它是一种外置样式,这种样式是将全部的样式保存在一个CSS格式的文件中,这样如果网页需要使用某种样式,只要导出CSS格式即可。
CSS样式是个独立于网页的样式群体,每个CSS文件中可以有多个样式,不同的样式之间分开显示,而这个文件本身是个文本格式的文件,这样的好处在于如果仅仅需要修改网页的风格,而不是布局等内容,可以直接修改CSS文件,不必修改网页文件,也减少修改网页的麻烦和修改中产生错误的可能性。
第三章系统后台代码
一、数据库用到的操作对象
1、Connection对象
(1)、ADOConnection对象的主要作用是与数据库建立一个连接,它是ADO中最重要的一个对象。
建立Connection对象的格式是固定的,是set对象名=server.createobject(“adodb.connection”)
(2)Connection对象的方法有open方法和close方法。
Open方法的语法为对象名.openconnectionstring,其中connectionstring表示与数据源建立连接的相关信息。
这里的信息也可以用DSN代替。
但事实上,由于要事先建立DSN,而我们通常又没有直接控制服务器的权利,这就使得我们在申请网页的发布空间时,服务器管理员的工作量大大增加了,所以通常的服务器不会提供此种服务,从而导致DSN不太实际。
2、RecordSet对象
RecordSet对象保持查询返回的记录的位置,允许用户一次一项逐步扫描结果。
它的创建格式为set对象名=server
.createobject(“adodb.recordset”).查询格式为对象名.openselect语句,connection对象名,指针类型,记录锁定状态。
RecordSet对象的属性和方法有:
rs.CursorType:
指明记录指针的模式,缺省值为0,只能向后移动,为1时能向下又能向上移动。
Rs.locktype:
指明对记录指针的锁定状态,缺省值为1,不能修改,为3,可以同时被多个用户修改。
Rs.fields.count:
RecordSet对象的字段总数。
Rs(i).Name:
第I个字段的名称,I由0到rs.fields.count-1.
Rs(i):
读取第I个字段的数据,I由0到rs.fields.count-1.
Rs(“字段名称”):
读取指定字段的数据。
Rs.recordcount:
数据记录总数。
Rs.eof:
是否已指到最后一条记录之后。
Rs.bof:
是否已指到最前一条记录之前。
Rs.movenext:
将指针移到下一条记录。
Rs.moveprevious:
将指针移到上一条记录。
Rs.movefirst:
将指针移到第一条记录。
Rs.movelast:
将指针移到最后一条记录。
Rs.open:
从数据库中取数据记录。
Rs.close:
关闭RecordSet对象。
Rs.addnew:
增加一条新记录。
Rs.delete:
删除当前一条记录。
Rs.update:
更新记录。
3、Request对象:
Resquest对象代表由各客户程序发往HTTP的请求报文。
事实上,Request对象的功能是单向的,它只能接收客户端Web页面提交的数据,与Response对象的功能刚好相反。
Resquest接收数据时通过两个集合QueryString和Form来检索表单的数据,具体用哪一个集合,取决于Web页面提交数据的HTTP表单的Method属性,当Method属性值为“Get”时以QueryString,而Method属性值为“Post”时以Form。
当省略了具体的集合名称时,ASP将以下面的顺序来搜索集合:
QueryString->
Form->
Cookie->
ServerVariables。
<
html>
head>
/head>
body>
formaciton="
log.asp"
method="
Get"
name="
login"
>
inputtype=textname=logid>
inputtype=textname=password>
inputtype=submitname=submit1value="
提交"
/form>
/body>
/html>
当数据提交到服务器端的log.asp文件后,在log.asp中使用Request对象得到用户提交的数据,加以判断用户是否合法。
log.asp文件如下:
%dimUserdimPasswdUser=Request.QueryString("
logid"
)Passwd=Request.QueryString("
password"
)ifUser="
jeff"
thenifPasswd="
123456"
thenResponse.write"
登录成功!
"
elseResponse.write"
密码错误!
endifelseResponse.write"
用户名错误!
endif%>
上面这个例子中Method属性使用了Get方法,所以使用Request.QueryString接收数据,相反若Method属性使用了Post方法,则使用Request.Form接收数据。
而ServerVariables集合可用于提供有关随HTTP请求一起传递的头信息,它的引用格式为:
Request.ServerVariables("
关键字"
)其中的“关键字有:
REMOTE_ADDR->可以知道客户端的IPURL->得到系统的URL路径PATH_TRANSLATED->当前ActiveServerPage的真实地址HTTP_UA_OS->浏览器所在的操作系统
4、Response对象
Response对象用于向客户端浏览器发送数据,用户可以使用该对象将服务器的数据以HTML的格式发送到用户端的浏览器,它与Request组成了一对接收、发送数据的对象,这也是实现动态的基础。
下面介绍它常用的属性和方法。
Buffer属性该属性用于指定页面输出时是否要用到缓冲区,默认值为False。
当它为True时,直到整个ActiveServerPage执行结束后才会将结果输出到浏览器上。
如:
%Response.Buffer=True%>
Head>
title>
Buffer示例<
/title>
%fori=1to500response.write(i&
"
<
br>
)next%>
这页执行时,整个主页的所有内容会同时显示在浏览器上,这个主页会存在缓存区中直到脚本执行结束。
Expires属性该属性用于设置浏览器缓存页面的时间长度(单位为分),必须在服务器端刷新。
通过如下设置:
%Response.Expires=0%>
通过在ASP文件中加入这一行代码,要求每次请求是刷新页面,因为Response一收到页面就会过期。
Write方法该方法把数据发送到客户端浏览器,如:
%Response.write"
Hello,world!
%>
Redirect方法该方法使浏览器可以重新定位到另一个URL上,这样,当客户发出Web请求时,客户端的浏览器类型已经确定,客户被重新定位到相应的页面。
Redirect示例<
formjump.asp"
post"
selectname="
wheretogo"
optionselectedvalue="
fun"
Fun<
/option>
optionvalue="
news"
News<
sample"
Sample<
/select>
inputtype=submitname="
jump"
value="
Jump"
以上是提交的表单,下面是处理表单的文件formjump.asp:
%response.buff=true%>
%thisurl="
where=Request.form("
)SelectCasewherecase"
response.redirectthisurl&
/fun/default.asp"
case"
/news/default.asp"
/sample/default.asp"
EndSelect%>
这个例子当用户选择了以后,按"
按钮提交表单,服务器接到申请后调用formjump.asp判断后定位到相应的URL。
不过这里有一点要注意,HTTP标题已经写入到客户浏览器,任何HTTP标题的修改必须在写入页内容之前,遇到这种问题时,可以如下做:
在文件的开始<
@Language=..>
后写:
Response.Buffer=True在结尾定:
Response.Flush这里Flush是Response的一个方法,它必须是Buffer属性设置为True时才能使用,否则会产生一个运行模式错误。
另外一个Clear方法也是用于清除被缓存的页面,同样要Buffer属性设置为True时才能使用。
End方法该方法用于告知ActiveServer当遇到该方法时停止处理ASP文件。
如果Response对象的Buffer属性设置为True,这时End方法即把缓存中的内容发送到客户并清除冲区。
所以要取消所有向客户的输出民,可以先清除缓冲区,然后利用End方法。
%Response.buffer=trueOnerrorresumenextErr.clearifErr.number<
0thenResponse.ClearResponse.Endendif%>
5.Server对象
Server对象是ASP中一个很重要的对象,许多高级功能都是靠它来完成的。
它提供了对ActiveServerPages和方法的使用,在这我主要介绍几个常用的方法。
MapPath方法该方法返回指定文件的相对路径或物理路径。
若Path以一个(/)或(\)开始,则MapPath方法返回路径时将Path视为完整的虚拟路径。
若Path不是以斜杠开始,则MapPath方法返回同.asp文件中已有的路径相对的路径。
如:
test.asp文件位于C:
\inetpub\wwwroot\myhome下,C:
\inetpub\wwwroot为服务器的宿主目录,而test.asp包含如下脚本:
%Response.writeServer.MapPath(Request.ServerVariables("
PATH_INFO"
)%>
输出:
C:
\inetpub\wwwroot\myhome\test.asp要得到这个结果还可以用如下方法:
%Response.writeServer.MapPath("
myhome/test.asp"
CreateObject方法这个方法是Server对象中最重要的方法,在后面可以看到,许多功能都不得不用到它。
它用于创建已注册到服务器上的ActiveX组件。
这是一个非常的特性,因为通过使用ActiveX组件能够使你扩展ActiveX的能力。
用于创建服务器端的方法如下:
Server.CreateObject("
ComponentName"
)用来创建的组件可以是所有ActiveX能使用的内置组件,实际上是存在于服务器的所有ActiveX组件。
6.Session对象
Session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。
每一访问者都会单独获得一个Session。
在Web应用程序中,当一个用户访问该应用时,Session类型的变量可以供这个用户在该Web应用的所有页面中共享数据;
如果另一个用户也同时访问该Web应用,他也拥有自己的Session变量,但两个用户之间无法通过Session变量共享信息,而Application类型的变更则可以实现站点多个用户之间在所有页面中共享信息。
a>
SessionID属性该属性返回当前会话的唯一标志,为每一个Session分配不同的编号。
我曾在开发过程中就遇到对用户的控制问题。
它要实现的功能就是,针对某个网站的一个模块,当一个会员登录后正在看此模块时,另一个人用同样的会员名登录,就不能浏览这个模块。
也就是说一个会员名同时只能一个人浏览此模块。
我通过用会员名(假设为UserID,唯一)和SessionID来实现了控制。
当会员登录时,给这个会员一个Session记录登录状态如:
Session("
Status"
)="
Logged"
,同时把这个会员的Session.SessionID写入数据库。
当他要浏览此模块时,先判断其是否登录,若已经登录再判断它的SessionID是否与数据库记录的相同,如果不同则不能访问。
这样,当另一个用户用相同的会员名登录时,那么数据库中记录的就是新的SessionID,前者访问此模块时就不能通过检查。
这就实现了一个会员名同时只能一个人浏览某个模块。
这个功能在一些收费网站有很有特别作用,它防止了一个会员名给多个人浏览的问题,为公司保障了利益。
b>
.TimeOut属性该属性用来定义用户Session对象的时限。
如果用户在规定的时间内没有刷新网页,则Session对象就会终止。
一般默认为20分钟。
c>
.Abandon方法该方法是Session对象的唯一方法,可以清除Session对象,用来消除用户的Session对象并释放其所占的资源。
%Session.Abandon%>
d>
.Session_OnStart和Session_OnEnd事件和Application一样,当对象的例程每一次启动时触发Session_OnStart事件,然后运行Session_Onstart事件的处理过程。
也就是说,当服务器接收到应用程序中的URL的HTTP请求时,触发此事件,并建立一个Session对象。
同理,这个事件也必须定在Global.asa文件中。
当调用Session.Abandon方法时或者在TimeOut的时间内没有刷新,这会触发Session_OnEnd事件,然后执行里面的脚本。
Session变量与特定的用户相联系,针对某一个用户赋值的Session变量是和其他用户的Session变量完全独立的,不会存在相互影响。
Session应用一例:
与Application一样,一个被定义为Session类型的数组只能将整个数组作为一个对象,用户不能直接改变Session数组中某个元素的值。
为了创建一个Session数组,需先定义一个普通的数组,并对它的每一个元素赋初值,最后把它定义为一个Session数组。
%dimarray()array=array("
"
zhu"
male"
)Session("
info"
)=arrayResponse.writeSession("
)(0)&
-"
Response.writeSession("
)
(1)&
)
(2)&
%>
hr>
%array(0)="
jun"
array
(1)="
li"
array
(2)="
female"
Session("
Response.writeSes