dim mycommand as sqlDataAdapter=new sqlDataAdapter(querystring,conn) mycommand.fill(ds) mydatagrid.datasource=new dataview(ds.tables(0)) mydatagrid.databind() if mydatagrid.items.count=0 then statues.style(\ statues.text=\登录失败,请检查用户名和密码!\ conn.close() else conn.close() dim username as string=ds.tables(0).rows(0).item(0) dim userpwd as string=ds.tables(0).rows(0).item(1) session(\ ‘将用户名及密码保存到Session对象。 session(\ response.redirect(\‘如登陆成功,跳转到all.aspx页面 end if
当登陆成功后跳转到all.aspx页面。all.aspx是学生查看自己信息的页面。学生信息的查询都是通过在数据库中调用学生的用户名及密码来实现。所以在进行学生信息查询时调用Seeion对象中的username 及userpwd 。这两项正好就是学生输入的数据所以保证了只有直到用户名及密码的用户才能进行学生信息的查询。
5.2.2 管理员登陆
管理员的登陆与学生登陆不同,它不需要学生用户及密码也可以查询到学生信息。同时还要保证非管理员用户不能浏览该查询页面。所以在管理员登陆页面设计了如下查询方式。
chall.apsx页面是管理员界面。它的主要内容如下图所示:
当访问chall.aspx页面是首先判断是否是管理员登陆,如果是则登陆成功否则跳转到管理员登陆页面。这样就保证了chall.aspx页面只有管理员访问。不仅如此chall.aspx所连接七个页面同样要保证只有管理员才能访问。所以在chall.aspx所连接页面都要判断是否是管理员访问。这样避免了非管理员通过复制网页地址的方法来访问。具体实现如下:在管理员登陆时将管理员的用户与密码记人Session
session(\ session(\
当访问chall.aspx中的每个页面是都要验证username 、userpwd是否是管理员。验证方式如下:
dim username as string=session(\ dim userpwd as string=session(\ dim conn1 as sqlconnection dim querystring0 as string
querystring0=\* from user_pass where(name='\and
passwd='\
conn1=new sqlconnection(\
\
dim ds0 as dataset=new dataset dim mycommand0 as sqlDataAdapter=new
sqlDataAdapter(querystring0,conn1)
mycommand0.fill(ds0)
mydatagrid10.datasource=new dataview(ds0.tables(0)) mydatagrid10.databind()
if mydatagrid10.items.count=0 then ‘判断用户名和密码分别是
response.redirect (\ session(\及 (\ conn1.close() 的记录是否存在如存在证明是管理员登
陆,如果不存在跳转到管理员登陆页面adminpage.aspx
else 。。。。。。。。。。。如果是管理员登陆则执行else以下的句 。。。。。。。。。。。
5.2.3投票系统
投票系统同样要求以管理员登陆后,有管理员来发布投票内容。学生可以通过主页进行投票并查看投票结果。
投票结果查看页面主要代码如下:
sub page_load(sender as object,e as eventargs) dim ds as dataset =new dataset() dim conn as sqlconnection
conn=new sqlconnection(\ dim mycommand as sqlDataAdapter
mycommand=new sqlDataAdapter(\
from vote)\
mycommand.fill(ds)
mydatagrid.datasource=new dataview(ds.tables(0)) mydatagrid.databind()
dim allvote as integer=val(ds.tables(0).rows(0).item(1)) label11.text=ds.tables(0).rows(0).item(0)
dim verygood as integer=ds.tables(0).rows(0).item(2) dim good as integer=ds.tables(0).rows(0).item(3) dim nomal as integer=ds.tables(0).rows(0).item(4) dim bad as integer=ds.tables(0).rows(0).item(5)
dim verygoodlength as string=verygood/allvote dim goodlength as string=good/allvote dim nomallength as string=nomal/allvote dim badlength as string=bad/allvote
allvote1.text=allvote.tostring() all.text=100
vg.text=left(verygoodlength*100,4) g.text=left(goodlength*100,4) n.text=left(nomallength*100,4) b.text=left(badlength*100,4)
tableall.width=100
table1.width=(verygoodlength)*100 table2.width=(goodlength)*100
table3.width=(nomallength)*100 table4.width=(badlength)*100 end sub
5.2.4 通知系统
通知系统和投票系统类似,都是只有管理员才有权限发布通知。同样的也是要对访问权限作出限定,如果用户没有登陆或是通过复制地址来访问同样的会自动跳转到管理员登陆页面。
通知系统通过asp.net的Datagrid控件,将通知显示于主页上。然后通过对Datagrid 控件的设置,在主页上只显示通知标题、通知发布时间、以及通知所属部门。通过点击通知标题的超级链接就可以查看到通知的具体内容。通知效果图如下所示:
5.2.5 论坛系统
与比较专业的论坛相比此论坛系统相对简单,或者说它更像是一个留言板,它具有基本的发贴于回复贴子的功能。论坛主题列表页面主要显示当前最新主题、发表时间、作者、点击次数及回复次数!具体样式见下图:
浏览帖子的页面如下:
6 学生干部管理系统测试文档
所谓测试就是为了发现程序中的错误而执行程序的过程。仅就测试而言,他的目标是发现软件中的错误,但是,发现错误并不是我们的最终目的。软件开发的根本目标是开发出高质量的完全符合用户需要的软件,因此,通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。以下就分为两种测试方式对软件进行测试。
6.1.黑盒测试(对功能的检测)
所谓黑盒测试就是在程序接口处进行测试,它只检测程序功能是否能按照需求分析所规定的功能进行,检测程序是否能适当的接收输入数据产生正确的输入信息。并且保持外部信息(如:数据库或文件)的完整性。所以说黑盒测试又称为功能测试。所以以下测试见对程序每个功能进行测试。
6.1.1 网页所有链接测试
网页整体样式如下图所示:
经测试,网页部分每个链接都能正常访问。在载入时间方面由于asp.net内部机制,以及服务器性能所限,在测试用机的载入时间有些延迟。不过相信通过提升服务器的性能可以使载入时间进一步缩短。
6.1.1学生干部登陆与注册模块测试
<1>登陆测试
如果在登陆框不如如任何数据,便登陆显示如下错误提示信息