ASP.NET实验室预约系统的设计

时间:2024-04-30 11:30:40

摘  要

实验室预约系统的设计主要是基于B/S模型,在Windows系统下,运用ASP.NET平台和SQLServer2000数据库实现实验室预约功能。该设计主要实现了实验室的预约和管理功能。预约功能包括老师对实验室信息、实验项目和实验预约情况的查询以及对实验室的预约;学生对老师预约情况和实验项目预约情况的查询以及学生对实验的预约。管理功能包括教师、学生、管理员三者的登录、注册、个人资料管理,管理员对实验室的管理与对学生和教师预约信息的删除功能。最后通过调试、完善该系统,基本实现了高校实验室预约、管理功能,为各大学的实验室预约系统提供有用的模版参考。

关键词实验室预约;B/S;SQL Server2000数据库;VB.NET。

3.2  开发工具简介

3.2.1  .NET平台简介

.NET 是 Microsoft研发的,用于创建 XML Web 服务的平台,该平台将信息、设备和人以一种统一的、个性化的方式联系起来。借助于 .NET 平台,可以创建和使用基于 XML 的应用程序、进程和 Web 站点以及服务,它们之间可以按设计、在任何平台或智能设备上共享和组合信息与功能,以向单位和个人提供定制好的解决方案。.NET 是一个全面的产品家族,它建立在行业标准和 Internet 标准之上,提供开发(工具)、管理(服务器)、使用(构造块服务和智能客户端)以及 XML Web 服务体验(丰富的用户体验)。.NET 将成为您今天正在使用的 Microsoft 应用程序、工具和服务器的一部分,同时,新产品不断扩展 XML Web 的服务能力以满足您的所有业务需求。

3.2.2  SQL Serser2000简介

SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了。Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。SQL Server 2000, 是Microsoft 公司推出的SQL Server 数据库管理系统的新版本。该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好、与相关软件集成程度高等优点。可跨越从运行Microsoft Windows 98 的膝上型电脑,到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。

5.1  登录页面设计

5.1.1  登录页面

该页面是一个简单的登录界面,如图2。

图2 登录界面

当用户来到开始页面,输入用户名和密码,并且要在底下选择相应的登录身份,教师、学生还是管理员,然后点击登录。就开始执行登录检测代码,当代码在数据库搜索到信息时,就返回消息,登录成功,进入相应的界面,如果未搜索到消息,也返回一个信息。该页面通过简单的查询比较语句实现学生、教师、管理员三者的登录功能。在页面的右边有一个注册链接。当用户(教师,学生)进入登录界面时,如果没有账号,要先注册账号。首先选择注册身份,点击“注册”按钮,进入相应的注册界面。实现登录主要代码是通过一个IF语句实现三者身份的判断。部分代码如下:

        Dim conn As New SqlConnection

        Dim cmd As New SqlCommand

        Dim objReader As System.Data.SqlClient.SqlDataReader

        conn.ConnectionString = "Data Source=localhost;Initial Catalog=Booking;Integrated Security=SSPI;Packet Size=4096;User ID=sa;Password=''"

        conn.Open()

        cmd.Connection = conn         

………………

以上代码段是打开数据库代码,在以下的程序中经常用到。

        Dim name As String = TextBox1.Text

        Dim pwd As String = TextBox2.Text

        If RadioButtonList1.Items(0).Selected = True Then

            cmd.CommandText = "Select * from Teacher_information"

            objReader = cmd.ExecuteReader()

            Do While objReader.Read()

                Dim sqlname As String = objReader.GetString(1).Trim()

                Dim sqlpwd As String = objReader.GetString(3).Trim()

                If sqlname = name And sqlpwd = pwd Then

                    Session("names") = TextBox1.Text

                    Session("pwds") = TextBox2.Text

                    Response.Redirect("admintea.aspx")

                    Exit Do

                End If

            Loop

            Response.Redirect("error.aspx")

………………

以上这段是查询数据库里的数据进行比较,并且用一个Session控件记录用户名和密码,上面的代码是实现教师登录的代码段。实现学生、教师、管理员三者登录的选择要用到一个IF语句。当判断正确后,转到相关的页面。

5.1.2  注册页面

教师的注册代码和学生的注册代码及页面都相类似,主要都是实现数据信息的插入到数据库表格里。不同之处在于学生的用户名是学生的学号,这是一个唯一标识,不需要再自己起名字,并且他有一定的长度限制6-12之间,在这个长度区间内的值才是有效的,要是想输入固定长度值,可以修改代码信息来完成。用户名、密码、真实姓名,都是学生和老师必填字段,而学生还有一个必填字段,就是系别班级,它是教师授课预约里的一个字段。由于老师可能有重名的时候,所以老师的用户名是自己起的。在填写老师用户名后,可以检查是否已经被人用过,如果没用过可以继续使用,填写其他信息,如果用户名已存在数据库里就会弹出个提示,要重新输入用户名。当填写好信息后,点击提交就可以注册账号了,如果不小心填错一些信息,可以点击“重填”按钮,重新填写资料。把注册信息数据插入到数据库表格里的代码如下:

If S_ID.Text.Length < 5 Or S_ID.Text.Length > 13 Or S_name.Text.Length < 1 Or S_pwd.Text.Length < 1 Or S_class.Text.Length < 1 Then

            Label1.Visible = True

        Else

            cmd.CommandText = "Insert into Student_information values(@S_ID,@S_name,@S_pwd,@S_mail,@S_phone,@S_class,@S_native)"

            cmd.Parameters.Add(New SqlParameter("@S_ID", SqlDbType.Char, 10))

            cmd.Parameters.Add(New SqlParameter("@S_name", SqlDbType.VarChar, 6))

            cmd.Parameters.Add(New SqlParameter("@S_pwd", SqlDbType.VarChar, 15))

            cmd.Parameters.Add(New SqlParameter("@S_mail", SqlDbType.VarChar, 15))

            cmd.Parameters.Add(New SqlParameter("@S_phone", SqlDbType.Char, 10))

            cmd.Parameters.Add(New SqlParameter("@S_class", SqlDbType.Char, 15))

            cmd.Parameters.Add(New SqlParameter("@S_native", SqlDbType.VarChar, 5))

            cmd.Parameters("@S_ID").Value = Request("S_ID")

            cmd.Parameters("@S_name").Value = Request("S_name")

            cmd.Parameters("@S_pwd").Value = Request("S_pwd")

            cmd.Parameters("@S_mail").Value = Request("S_mail")

            cmd.Parameters("@S_phone").Value = Request("S_phone")

            cmd.Parameters("@S_class").Value = Request("S_class")

            cmd.Parameters("@S_native").Value = Request("S_native")

            cmd.ExecuteNonQuery()

            conn.Close()

            Label2.Text = "你已经注册成功"

            fh.Visible = True

        End If

注册界面如图3。

图3  注册界面

5.2  管理页面设计

5.2.1  教师管理主页面

该页面如图4。

图4  老师主页面

页面最上面一排显示用户的用户类别、用户名。下面是老师能够操作的各种功能,主要是各种查询功能。老师有三种信息查询功能:一是实验室信息查询。该查询主要是查询实验室房间信息,有什么设备、可以做什么样的实验项目、能容纳多少人、可用设备的台数等信息,为老师预约房间提供参考;二是实验项目查询,该查询就是查找某个实验项目能在哪些实验室里做实验,即显示能做某个项目的房间个别信息;三是实验室预约查询,就是当老师查到某个实验室时,想了解该房间已经预约的具体情况的操作,该房间里哪些课节已经预约了,哪些课节空闲。三个功能的实现代码都类似,都是通过SQL 语句来查找数据库里的相关信息,然后把查到的信息通过绑定控件显示到页面上,供查询者了解信息。同时还有几个链接按钮,用来跳转到实验预约,修改资料,信息查询等相关页面。

实验室信息查询的代码如下:

cmd.CommandText = "Select * from Lab_information"

        objReader = cmd.ExecuteReader()

        Do While objReader.Read()

            Dim LabID As String = objReader.GetString(0).Trim()

            If LabID = TextBox1.Text Then

                name = LabID

                Exit Do

            End If

        Loop

        If TextBox1.Text = name Then

            bindlist1()

        Else

            Label2.Text = "此实验室尚未添加"

        End If

…………Datalist绑定代码如下:

Sub bindlist1()

        Dim conn As New SqlConnection

        Dim cmd As New SqlCommand

        Dim ds As New DataSet

        conn.ConnectionString = "Data Source=localhost;Initial Catalog=Booking;Integrated Security=SSPI;Packet Size=4096;User ID=sa;Password=''"

        conn.Open()

        cmd.Connection = conn

        Dim sqlstr As String = "select * from Lab_information where L_ID='" & Session("L_ID") + "'"

        cmd.CommandText = sqlstr

        Dim objadpt As New SqlDataAdapter(cmd)

        Dim tablename As String = "L_ID"

        objadpt.Fill(ds, tablename)

        Lab1.DataSource = ds.Tables(tablename)

        Lab1.DataBind()

        conn.Close()

End Sub

5.2.2  学生管理主页面

学生的这个界面主要是查询,是对老师和课程预约情况的查询。不过还有预约功能也在此页面实现,预约功能在后面5.3.1节介绍。学生管理页面如图5。

图5  学生主页面

最上面同样是学生的身份、学生的唯一标识。下面是查询功能选项卡,学生的查询主要有两个方面:一个是对实验项目的查询,它主要是查询某个实验项目的信息,主要包括有哪几位老师正在上这门实验课、都在什么实验室、什么时间上课这门课等等。二是老师查询,当知道了上某一门实验课的老师是哪一位时,就可以通过此项查询。由于现在大多数老师都不仅仅教授一门课程,所以有可能有多样的实验课,如老师既教数据库知识,又教操作系统,做实验时就既有操作系统实验课,又有数据库实验课,这时需要一个二级目录的查询,当先输入老师名字时,在后面就会用下拉表单列出老师实验课的信息,然后选择要查的实验课,电击“查询”按钮,才在底下显示具体信息,操作如图6。该操作的代码和老师的查询代码类似,只是在操作中有个下拉菜单的操作。由于要打开数据库,所以涉及数据库打开数据库代码如5.1.1节所叙述,此处不在重复。

图6  学生查询教师实验二级目录的实现

下拉菜单实现的代码如下:

Dim objReader As System.Data.SqlClient.SqlDataReader

        Session("True_name") = TextBox1.Text

     

        cmd.CommandText = "Select * from Tbooking_information"

        objReader = cmd.ExecuteReader()

        Do While objReader.Read()

            Dim sqlname As String = objReader.GetString(4).Trim()

            Dim sqlexper As String = objReader.GetString(3).Trim()

            If sqlname = TextBox1.Text Then

                exper.Items.Add("" & sqlexper + "")

            End If

        Loop

        TextBox2.Visible = False

            exper.Visible = True   

5.2.3  管理员管理主页面

管理员的这个页面主要有三个功能,一是添加房间信息,二是修改房间信息,三是删除学生和老师的预约信息。

(1)添加房间信息。在该页面,要输入实验室房间的详细信息,主要有房间号、实验室类别、总人数(总的计算机台数)、可用设备数(能够做实验的计算机台数)、都能够实现哪些项目的上机操作和备注,这一些必要的字段。此页面有三个按钮:一个是提交、一个是重填、一个是继续添加。提交就是把浏览器里输入的信息插入到数据库表格里,重填就是信息的清除,继续添加也是类似信息的清除。从操作过程知道此操作的代码段主要是信息的插入,所以在此不在列出此段代码。

(2)修改房间信息界面主要是实现对实验室的信息单项修改。要先填写房间号,系统根据这个填写的信息继续做后面的操作,可以修改实验室类别、总人数、可用设备数(上机人数)、实验项目、备注等各项。页面如图7。

图7  房间修改信息界面

(3)删除预约信息。页面如图8。

图8  管理员删除界面

此操作是按分类操作的,分四类:一个删除房间信息,它又分删除一个房间信息和删除多个房间信息,当填写房间号或房间号的区间时,就可以执行此操作。二是删除房间的预约信息,可以删除一个房间或多个房间的预约信息。三是删除老师的预约信息,当输入老师姓名时就删除老师的预约信息。四是删除学生的预约信息,删除学生预约信息通常是一个班或一个专业的,所以主要是使用区间,删除一段学号的学生预约信息。当点击删除时,如果成功就会在后面显示删除成功。否则,就提示输入错误字段。在页面下面是简单的介绍如何操作删除功能的。

此页面有个‘继续操作’按钮,当点击它时,就会清空上面的填入信息,同时还有个链接按钮,用来返回到管理员的主界面。删除功能很简单,就是先打开数据库,用一条delete语句,删除相应的数据库表格里的某一列字段或整个字段,就可以完成此操作。代码如下:

Dim conn As New SqlConnection

        Dim cmd As New SqlCommand

        Dim ds As New DataSet

        conn.ConnectionString = "Data Source=localhost;Initial Catalog=Booking;Integrated Security=SSPI;Packet Size=4096;User ID=sa;Password=''"

        conn.Open()

        cmd.Connection = conn

        cmd.CommandText = "delete  from Lab_information where L_ID >='" & TextBox8.Text + "'and L_ID<='" & Textbox9.Text + "'"

        Label3.Text = "删除成功"

        cmd.ExecuteNonQuery()

        conn.Close()

5.3  预约页面的实现

5.3.1  学生预约页面

这个在学生的管理主页面上,如图5学生主页面。主要是向数据库里学生预约表格里填加一些学生预约信息。在输入框里输入学生要预约的房间号,授课教师的真实姓名,学生的学号,实验项目,执行此操作的时间,点提交就可以实现学生的预约。下面有三个按钮,一个是重填,一个是预约,一个是取消预约,当点取消预约时,系统会根据当前用户输入的信息(用户名或学号等)执行预约信息删除操作。

5.3.2  教师预约页面

教师预约的页面是一个单独的页面,在此页面上方同样是用户类别和用户标识,下面输入框是要预约所填写的必要信息字段,有预约实验室的房间号、上课的星期、课节、实验项目名称、教师真实姓名、完成实验项目的上课周次、预约信息的时间、教师授课的班级。星期和课节字段是两个下拉框的表格,通过下拉框选择是星期几,第几节课。代码也是插入数据的代码,在此不在重复代码段。页面如图9。

图9  教师预约界面

5.4  其它页面的实现

5.4.1  个人资料管理页面

此功能是学生、教师、管理员三者都需要实现的。所以他们实现的方式相同,管理资料的页面也相同。如管理员的个人资料管理页面如图10。

图10  管理员资料管理界面

密码框里要填入旧的密码,新密码和对新密码的确认,才能修改信息。邮箱和电话是当用户登录后就显示出来的,你可以根据自己信息对它们进行相关的修改,点修改按钮,进行此操作,无论成功与否都有提示,实现代码如下:

If pwd1.Text = Session("pwds") Then

            If pwd2.Text = pwd3.Text Then

                cmd.CommandText = "UPDATE Teacher_information SET T_pwd='" & pwd2.Text + "' where T_name='" & Session("names") + "'"

                Label1.Text = "修改成功"

            Else

                Label1.Text = "密码不一致"

            End If

        Else

            Label1.Text = "旧密码不正确"

        End If

5.4.2  退出系统功能的实现

此操作就是删除在登录记录的Session值,学生、教师、管理员的退出系统功能都是如此实现。把Session的值设置为空,返回到开始界面即可。代码简单明了,如管理员的代码如下:

Session("namea") = ""

        Session("pwda") = ""

        Response.Redirect("homepage.aspx")

5.5  主页面格调代码实现

主页面的格调主要是用HTML代码实现。它主要包括实现主题背景的颜色、图片的插入、各种表格属性的设计和嵌套、字体的对齐方式等各方面内容。