信息管理程序.docx
《信息管理程序.docx》由会员分享,可在线阅读,更多相关《信息管理程序.docx(47页珍藏版)》请在冰豆网上搜索。
信息管理程序
第8章信息管理系统
学习指导
用网络进行信息管理是Web最重要的应用之一,本系统主要功能是管理相关信息。
可以说,凡是人们能想象得到的信息管理,都可以在网络中进行。
企业和事业、单位、组织机构等可以通过网络管理信息,使办公人员详细得到他们所关心的信息,以其便利、快速的特点取得用户的信任而不断提高效率和效益。
本章介绍的网络管理主要包括人、财、物的管理。
通过本章的简单查询、通讯录、图书借阅和会员管理等设计与开发的介绍,使读者进一步了解信息系统开发的程序设计方法,体会到网络信息管理的强大功能。
学习代码介绍以后,加深对ASP基本语法的了解,基本读懂程序的源代码,最终设计、开发出按自己想象的各种类型信息管理系统。
由于信息管理系统大同小异,系统的程序通用性较强,一般不用自己编写源代码,因此学习本章方法是结合学习过的知识,通过本章上机实习,在别人的工作基础上进行适当修改就可以了。
学习本章的方法是要亲自动手修改源代码,在应用中学习程序设计的方法,具体做法在上机实习一节作了较为详细的介绍。
通过本章学习,要求能够做到:
●读懂各个文件,知道每条语句的语法和作用。
●会设计简单的数据库,数据表和组织字段,会从其它表格中导入数据。
●了解每个文件的输入、输出以及所作的处理。
●搞清楚文件之间的接口,掌握从一个页面跳转到另一页面的方法。
●会模仿设计各个模块,开发出满足各种不同要求的网络信息管理系统。
8.1数据库信息查询模块(ch8/code/idcard)
数据库信息查询使我们以最快的速度找到存储在数据库中满足特定条件的记录,它是网络信息处理的最基本技术和最重要的应用。
最简单查询系统由2个文件组成,一个是数据库,一个是查询页面。
我们以身份证查询为例来说明查询系统的基本思想、结构及设计方法。
8.1.1数据库结构
建立本模块数据库xfz.asp,文件扩展名用.asp,主要为了安全起见。
如果要查看数据库,只要把数据库文件名中的扩展名更改成.mdb就行,在查看完成后,再把扩展名更改过来。
数据库只有一个数据表xfz,数据表包括bm,dq2个字段,主要建立身份证前6位和所管辖的派出所之间的对应关系,如图8-1所示。
8.1.2查询页面(ch8/code/idcade/index.asp)
查询页面的功能是让浏览者输入要查询的身份证号码,输出一些有关个人身份的信息,如管辖的派出所,出生年月,性别等。
1.IPO(输入·处理·输出)图
输入:
身份证号码。
处理:
对输入的身份证号检验,检验合格后连接到数据库xfz.mdb,根据身份证号码前6位得出原户籍地所管辖的派出所;再细分身份证有15位和18位两种情况,当位数为15位时,7-12位得到出生日期,最后一位得到性别;当位数为18位时,7-14位得到出生日期,倒数第2位得到性别;最后1位计算出校验码。
输出:
查询号码,原户籍地,出生年月,性 别。
2.代码解析
●对输入的身份证号检验。
先检查输入的身份证号码位数是否15位或18位,再分为15位和18位位两种情况,分别把出生年,月,日性别赋值给yy,mm,dd,aa,再检查月份和日期的值是否符合要求。
<%
xian=request("xian")
lenx=len(xian)
ifxian<>""then
ifnotIsNumeric(left(xian,15))andxian<>""then
response.write""
endif
iflenx=15orlenx=18then
iflenx=15then
yy="19"&mid(xian,7,2)
mm=mid(xian,9,2)
dd=mid(xian,11,2)
aa=mid(xian,15,1)
endif
iflenx=18then
yy=mid(xian,7,4)
mm=mid(xian,11,2)
dd=mid(xian,13,2)
aa=mid(xian,17,1)
endif
ifcint(mm)>12orcint(dd)>31then
response.write""
endif
else
responsewrite""
endif
endif
%>
●连接数据库。
创建ADODB连接对象,连接数据库sfz.asp,打开连接。
<%
onerrorresumenext
onnstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&server.mappath("sfz.asp")
setconn=server.createobject("ADODB.CONNECTION")
conn.openconnstr
%>
●执行查询操作。
创建记录集对象,设置SQL查询,执行SQL命令。
<%
setrs=server.createobject("adodb.recordset")
sql="select*fromsfzwherebm="&left(xian,6)
rs.opensql,conn,3,3
ifnotrs.eofthen
%>
●判断性别,把结果赋值给xb。
<%
ifaamod2=0then
xb="女"
else
xb="男"
endif
%>
●显示查询结果,以表格的形式显示变量的值。
查询号码: <%=xian%> |
原户籍地: <%=rs("dq")%>
|
出生年月: <%=yy&"年"&mm&"月"&dd&"日"%>
|
性 别: <%=xb%> | ●新身份证校验位检查处理。
<%
iflenx=18then
ifmid(xian,18,1)<>cstr(sfzjy(xian))then
response.write""
response.write"提示:
身份证校验位错误!
"
else
response.write""
response.write"结果:
身份证号码校验为合法号码!
"
endif
else
response.write""
response.write"新身份证:
"&left(xian,6)&"19"&right(xian,9)_
&cstr(sfzjy(xian))
endif
%>
●关闭记录集,释放变量,取消数据库连接。
<%
rs.close
setrs=nothing
conn.close
setconn=nothing
%>
●计算校验位。
<%
FUNCTIONsfzjy(num)
iflen(num)=15then
cID=left(num,6)&"19"&right(num,9)
elseiflen(num)=17orlen(num)=18then
cID=left(num,17)
endif
nSum=mid(cID,1,1)*7
nSum=nsum+mid(cID,2,1)*9
nSum=nsum+mid(cID,3,1)*10
nSum=nsum+mid(cID,4,1)*5
nSum=nsum+mid(cID,5,1)*8
nSum=nsum+mid(cID,6,1)*4
nSum=nsum+mid(cID,7,1)*2
nSum=nsum+mid(cID,8,1)*1
nSum=nsum+mid(cID,9,1)*6
nSum=nsum+mid(cID,10,1)*3
nSum=nsum+mid(cID,11,1)*7
nSum=nsum+mid(cID,12,1)*9
nSum=nsum+mid(cID,13,1)*10
nSum=nsum+mid(cID,14,1)*5
nSum=nsum+mid(cID,15,1)*8
nSum=nsum+mid(cID,16,1)*4
nSum=nsum+mid(cID,17,1)*2
check_number=12-nsummod11
Ifcheck_number=10then
check_number="X"
Endif
Ifcheck_number=12then
check_number="1"
Endif
Ifcheck_number=11then
check_number="0"
Endif
sfzjy=check_number
Endfunction
%>
8.1.3简单查询系统的设计(ch8/code/score)
最简单数据库查询系统只由两个文件组成,一个是集查询条件输入与显示于一体的主文件,还有一个储存供查询用的数据库。
我们以学生成绩查询为例来说明最简单数据库查询系统的设计。
1.数据库设计
数据库设计相当简单,只要你把与成绩相关的信息设计成各个字段,设计好以后录入到数据表中就可以。
要掌握把其它表格转换成Access数据库的方法。
例如,把Excel表格转换成Access数据表。
在Access新建数据库中,打开【文件】菜单【获取外部数据】子菜单,打开“导入”对话框,找到要导入的表,再按照“导入数据表向导”逐步进行,就能完成导入工作。
2.查询页面设计(ch8/code/score/searcht.asp)
查询页面的主要源代码如下。
<%Response.Buffer=True%>'设置服务器缓冲为True
查询分数查询分数
'表格中的表单供输入需要查询的信息
姓名关键字: | ** | |
<%
'如果没有输入姓名就不执行下列语句
IfTrim(Request("name"))<>""Then
Dimdb,connstr
connstr="Dbq="&Server.Mappath("address.mdb")&";Driver={MicrosoftAccessDriver(*.mdb)}"
Setdb=Server.CreateObject("ADODB.Connection")
db.Openconnstr
Dimrs,strSql
'建立Recordset对象
Setrs=Server.CreateObject("ADODB.Recordset")
'以姓名为关键字查找
strSql="Select*FromguestWherenameLike'%"&_Trim(Request("name"))&"%'"
rs.OpenstrSql,db,1
'应用Count属性,要用键盘指针
Ifrs.RecordCount<=0Then
Response.Write"对不起,没有找到信息"
Else
Response.Write"共找到"&rs.RecordCount&"条记录"
%>
'列表显示查询结果
姓名
学号
班级
分数
章
<%
DoWhileNotrs.Eof
'下面将利用表格输出名单
Response.Write"
"Response.Write"
"&rs("name")&" | "Response.Write"
"&rs("num")&" | "Response.Write"
"&rs("specialy")&" | "Response.Write"
"&rs("score")&" | "Response.Write"
"&rs("chap")&" | "Response.Write"
"
rs.MoveNext
Loop
EndIf
EndIf
%>
Response.Buffer=True语句应放首行,指在服务器输出页面时先缓冲,如果不设置Response.Buffer=True,则服务器将随时解释,随时发送数据,在客户端出现页面不完成现象。
3.简单查询模块的应用
我们可以利用文件夹score中源代码作如下修改,就可以开发出查询模块。
数据库可以依照设计要求进行修改,增加和删除一些字段。
如果仍以name为关键字查询,只需修改列表显示查询结果中表格中表头各项的名字;和利用表格输出名单中数据库的字段名两部分内容。
如果以其它关键字查询,只需利用替换,把name替换成查询表单中输入文本框的name。
8.2人员管理(ch7/code/mate)
人员管理中最典型的应用是通讯录。
通讯录记录同学、同事、同乡、客户、朋友的一些联系信息,作为相互联系的地址和方法,供查找使用。
如对功能作一些改进,还可以成为交友网站。
通讯录的主要功能是通讯地址查询,可用于客户系统,也可用于人事管理,如再扩充其功能,还可成为网上交友系统。
8.2.1功能需求分析与模块划分
通讯录系统考虑到信息是可变的,应该有显示、添加、删除、修改和查询个人信息功能。
通讯录应包括所有个人相关的信息,如姓名、年龄、性别、地址、电话、电子邮箱等信息。
按照功能有显示成员页面(list.asp),添加成员页面和文件(add_form.htm,add.asp)、删除成员页面(delete.asp)、修改成员准入(change.asp)页面、修改成员表单update.asp和执行更新文件(update_form.asp),查询成员页面(search.asp),各页面的链接页面用(menu.htm)。
全部页面用框架结构,链接用页面(menu.htm)放在左边,其它要显示的页面则放在右边。
8.2.2数据库设计
建立本模块数据库mate.mdb,只有一个数据表mates。
数据表mates包括ID,name,tel,email,home,age,intro,password等共8个字段。
8.2.3主要页面与文件介绍
1.显示成员页面(ch8/code/mate/list.asp)
(1)IPO图
输入:
无
处理:
●建立与数据库连接odbc_connection.asp,建立Recordset对象查询纪录。
●利用表格显示当前页的所有记录,分页,输出有关页数信息,从1到总页数循环,如不是当前页,就加上超链接。
输出:
成员列表。
(2)代码解析
●建立Recordset对象。
<%
Dimrs,strSql
Setrs=Server.CreateObject("ADODB.Recordset")
strSql="Select*FrommatesOrderByname"'以姓名为序排列
rs.OpenstrSql,db,1'因为要分页显示,所以用键盘指针
%>
●查询记录,如果非空就显示记录,如果是空的,给出提示信息。
Ifrs.BofOrrs.EofThen
Response.Write"现在还没有数据"
Else
'以下主要为了分页显示
Dimpage_size'定义每页多少条记录变量
Dimpage_no'定义当前是第几页变量
Dimpage_total'定义总页数变量
page_size=10'每页显示10条记录
'如果第一次打开,则page_no为1,否则由传回的参数决定
IfRequest.QueryString("page_no")=""Then
page_no=1
Else
'用Cint将字符串变为整数
page_no=Cint(Request.QueryString("page_no"))
EndIf
rs.PageSize=page_size'设置每页多少条记录
page_total=rs.PageCount'返回总页数
rs.AbsolutePage=page_no
●利用表格显示当前页的所有记录。
DimI
I=page_size'该变量用来控制显示当前页记录
DoWhileNotrs.EofAndI>0'循环直到当前页结束或文件结尾
I=I-1
●下面将利用表格输出名单。
Response.Write""
Response.Write"
"&rs("name")&" | "
Response.Write"
"&rs("tel")&" | "
Response.Write"
"&rs("email")&"'>"&rs("email")& | "
Response.Write"
"&rs("home")&" | "
Response.Write"
"&rs("age")&" | "
Response.Write"
"&rs("intro")&" | "
Response.Write""
rs.MoveNext
Loop
●输出有关页数信息,从1到总页数循环,如不是当前页,就加上超链接。
ForI=1Topage_total
IfI=page_noThen
Response.WriteI&" "
Else
Response.Write"page_no="&I&"'>"&I&" "
EndIf
Next
EndIf
●关闭对象。
rs.Close
Setrs=nothing
db.Close
Setdb=nothing
2.添加成员页面
添加成员模块由表单(ch8/code/mate/add_form.htm)和执行添加操作的文件(ch7/code/mate/add.asp)组成。
添加成员表单add_form.htm是普通表单,把它发送到执行添加操作的add.asp页面,代码相当简单,这里只讲解add.asp文件。
(1)IPO图
输入:
个人信息。
处理:
●简单的表单检查,获取表单传过来的信息。
●建立与数据库连接odbc_connection.asp,将要插入内容送数据库。
●判断插入过程有无错误,并给出相应插入结果信息。
输出:
操作结果。
(2)代码解析
●简单表单检查。
IfTrim(Request("name"))=""OrTrim(Request("password"))=""Then
Response.Write"对不起,姓名和密码必须输入"
Response.Write"
返回,重新填写"
●从表单获取信息。
Dimnam,password,tel,email,home,age,intro
name=Request("name")
password=Request("password")
tel=Request("tel")
home=Request("home")
email=Request("email")
age=Request("age")
intro=Request("intro")
●将数据填入数据库中。
DimstrSql,sqla,sqlb
sqla="InsertIntousers(name,password"
sqlb="Values('"&name&"','"&password&"'"
Iftel<>""Then
sqla=sqla&",tel"
sqlb=sqlb&",'"&tel&"'"
EndIf
Ifhome<>""Then
sqla=sqla&",home"
sqlb=sqlb&",'"&home&"'"
EndIf
Ifemail<>""Then
sqla=sqla&",email"
sqlb=sqlb&",'"&email&"'"
EndIf
Ifage<>""Then
sqla=sqla&",age"
sqlb=sqlb&","&cInt(age)'age是数字类型,请注意添加方法.
EndIf
Ifintro<>""Then
sqla=sqla&",intro"
sqlb=sqlb&",'"&intro&"'"
EndIf
strSql=sqla&")"&sqlb&")"
db.Execute(strSql)
●判断插入过程有无错误,并给出相应信息。
Ifdb.Errors.Count>0Then
Response.Write"保存过程中发生错误,必须重新填写"
Response.Write"
返回,重新填写"
E