引言 目前随着国家对科研实验领域的投资逐渐加大 实 验室不仅是高等院校教育不可缺少的环节 也是社会科 研组织或者相关人员所必不可少的基地 本文探讨了一 种基于 Web 的开放性实验室预约系统 实现了使用人员 通过 Web 网络对实验室进行预约的功能 管理人员在网 上对预约申请进行审核 通过审核后申请者便可按照预 约时间使用实验室 2 网上预约系统的主要功能介绍 网上预约系统的主要功能主要有两大部分 前台用 户和后台管理员 前台用户是实验室预约系统的使用人 员 包括各个系室 教师 学生 外部人员等 根据用户的 不同身份和所在年级 可以预约的实验室有所不同 用户 需要先注册 然后根据注册的身份 预约实验室 根据用 户身份的不同 可以进行实验室设备查询 实验室预约 实验室取消预约 实验室预约查询等功能 而后台管理员 则是对所有用户进行管理 可以管理用户密码 验证用户 身份 划分用户等级实验室信息的编辑等 3 网上预约系统研究方法 本系统所用到的技术 前台网页用 Dreamweaver 设 计静态页面 ASP 网络编程技术实现动态页面 后台的数 据库管理采用微软的 MSSQLServer2000 实现 B/S 的交 互实验室预约系统 用户只需要上网就可以对实验室进 行查询 预约 研究方法 在做系统之初 对能想到的用户体验进行 设计 如有用户注册 登录 修改用户信息 实验室预约等 然后根据使用人群不同 进行抽样调研 广泛收集用户需 求 对预约系统进行进一步的需求分析 需求设计 确定完 需求之后 我们才能进行具体系统设计和系统实现 4 系统架构 4.1 数据流程设计 数据流程设计 我们只介绍管理员的实验室信息发 布流程图和学生预约实验室流程图这 2 个主要的实验室 预约过程活动 管理员对新实验室信息进行发布 学生根 据网站显示实验室情况 对未预约的实验室进行预约 流 程图如下 ![]() ![]() 2 功能模块设计 2.1 用户登录验证模块 不管是教师 学生 外部人员还是管理员登陆网站都 需要进行身份验证 下面我们介绍主要代码实现 如下 ASP 程序需要调用存储过程 login_check 该存 储过程在下面数据库模块进行详细介绍 m_pConn 对象建立存储过程连接 m_pConn->CommandText="login_check" 4 代表连接类型为存储过程 m_pConn->CommandType=4 追加参数 Setinput1=m_pConn->CreateParameter("username", 200,1,30,request("username")) m_pConn->Parameters.Appendinput1 Setinput2=m_pConn->CreateParameter("password", 200,1,10,request("password")) m_pConn->Parameters.Appendinput2 Setoutput=m_pConn->CreateParameter("rusult", 200,1,10,request("result")) m_pConn->Parameters.Appendoutput 执行存储过程 m_pConn->Execute(); 2.2 预约状况查询模块 用户登录后即可查询实验室预约情况 可以根据条 件进行查询 如对某个地理位置的实验室进行查询 2.3 预约模块 在期望的时间段提交预约申请 完成设备预约 等候 管理员审核 2.4 数据库操作模块 连接数据库 下面是通过数据源连接数据库的代码 为了数据库 的安全起见 我们在 Setting.asa 文件里写连接代码 然后 在页面上调用 本例中 DSN 数据源为数据源 labdatabase <SCRIPTLANGUAGE="VBSCRIPT" RUNAT="SERVER"> SubApplication_onStart Application("ConnectDataSourceString") ="DSN=labdatabase;UID=sa;PWD=;" SubApplication_onEnd Endsub</Script> 在 ASP 页面上调用 <%Dimconn,strconn Setconn=Server.CreateObjec( ADODB.Connection ) Conn.openApplication("ConnectDataSourceString")%> 2.4.2 建立存储过程(以用户登陆为例,其它类似) 建立存储过程 login_check CREATEprocedurelogin_check @username_invarchar(30), @password_invarchar(10), @result_outchar(3)OUTPUT as ifexists(select*fromuser_infowhereusername=@ username_inandpassword=@password_in |