学生公寓是每一位在校学生生活、学习、相互交流的主要场所,如何提供一个良好的学生公寓的管理体系,对学校和同学而言至关重要。以往的学生公寓管理基本上还处于人工操作的阶段,随着计算机技术和网络技术的日益广泛应用,采用计算机以及网络来管理学生公寓,有着很好的前景。
学生公寓管理系统基于B/S模式开发,使用ASP动态网页制作技术作为主要的前台开发语言,实现前后台的数据交互;后台选用SQL Server 2000作为数据库服务器。该学生公寓管理系统主要划分了管理员和学生两种权限,实现的功能有学生信息的管理,宿舍信息的管理,宿舍的分配功能,管理员值班记录,留言板功能等。系统具有界面友好,操作简便的特性。
该学生公寓管理系统主要实现了后勤部门对学校宿舍的管理功能。系统分为管理员模块和学生模块两个部分。
管理员模块实现的功能有:
- 学生信息管理功能:主要是添加系,专业,班级和学生的具体信息,来创建以班级,专业,系等为单位的学生信息。包括添加,删除和修改功能,还有学生的总体查看和个别查询功能。
- 宿舍楼信息管理功能:分为宿舍楼信息的添加删除和修改功能:添加修改功能具体实现为每栋楼的楼名,层,房间,床位的添加和修改;删除功能执行一次删除整栋楼。
- 宿舍楼分配功能:可以手动的调整学生到哪个宿舍,也可以实现自动分配的功能。
- 交流信息功能:管理员发布一些通知帖子;管理员对学生帖子的回复,删除等管理。
- 值班信息登记:值班员发布值班时间,人,值班情况,备注等。
学生模块实现的功能有:
- 学生模块分为信息交流模块:方便大家交流。
- 宿舍信息浏览模块:可以查看各宿舍的信息。
- 详细设计
- 学生信息管理功能
- 院系管理模块
管理员登录后,选择点击“院系管理”的添加模块。可以手动添加一个系名称。系统通过insert语句添加到“系”表中。也可以从列表中手动删除一个系的名称。删除功能要慎用,因为是一个不可逆操作。若选择修改功能,从select下拉列表中选择想要修改的系的名称,在更改为的文本框里输入要更改的名称,点击修改按钮后,通过update语句,重新写入“系”表中,完成修改功能。如果没有选择要修改的系,系统会弹出alert框提示:没有选择主分类名;如果选择要修改的系后没有填写修改的名称,系统会弹出alert框提示:请填写修改后的名称。
- 专业管理模块
专业管理分为添加和修改两个功能。添加功能里可以添加一个专业,也可以删除一个专业。添加专业时。先要选择系统中已经存在的系,然后在系中添加专业,同时添加专业的届别信息。删除专业时,也是要先选择专业所在的系,在从该系所有的专业列表中选择所要删除的专业名称,点击删除按钮进行删除。修改功能,要先选择所要修该的专业,然后在该专业所有系的列表中选择想要修改的专业和届别,然后手动填写改后的系,专业和届别的信息。点击修改按钮后完成修改。
- 班级信息的添加
班级管理也分为添加和修改两个功能。实现的功能和原理和院系管理,专业管理一样。
- 学生管理的添加
学生信息管理有学生信息的添加,查看和学生的查找3个功能。
-
- 学生信息的添加要求添加学生的基本信息,包括:姓名,密码(管理员统一设定初始密码),学号,性别,所在系,班级,专业,届别,分配的宿舍楼楼号,楼层,房间号,床位号。所有信息不能为空。
其中学号必须唯一标识一个学生:
if (dolookup("学生","ID","xh='"&xh&"'"))&""<>"" the MessageBox("学生号重复")
性别默认为男。
系,班级,专业和届别我们在已经添加的信息中选择。
宿舍的安排,我们默认每个新添加的学生,都初始给安排一个床位。
在宿舍信息管理模块中,我们已经设置每栋楼属于男生宿舍还是女生宿舍,所以学生的性别和宿舍允许入住的学生性别不能冲突:
if dolookup("寝室楼","sex","id="&BuildNo)<>Sex then
MessageBox("该楼不准入住异性")
在添加学生入住的楼层,房间和床位时,要符合系统中宿舍信息的实际,例如一个宿舍床位号为1-4,则不能给学生安排到5床:
if cint(dolookup("寝室楼","ManPerRoom","id="&BuildNo))<cint(BedNo) then
MessageBox("床位号不对")
GoBack()
Quit
end if
已经有人入住的床位,我们不能再次安排学生:
' BuildNo=Request.Form ("BuildNo")
'StepNO=Request. Form ("StepNO")
'RoomNo=Request. Form ("RoomNo")
'BedNo=Request. Form ("BedNo")
if (dolookup("学生","id","BuildNo="&BuildNo&" and StepNO="&StepNO&" and RoomNo="&RoomNo&" and BedNo="&BedNo)&"")<>"" then
MessageBox("床位好像有人住了...")
当以上所有的条件都满足后,我们才可以向数据库中添加信息:
conn.execute"Insert into 学生(Name,xh,ClassNo,Sex,BuildNo,StepNO,RoomNo,BedNo) values ( '"&Name&"', '"&xh&"', '"&ClassNo&"', '"&Sex&"', '"&BuildNo&"', '"&StepNO&"', '"&RoomNo&"', '"&BedNo&"')"
response.write"<SCRIPT language=JavaScript>alert('添加成功!');"
-
- 学生信息的查看
读出全部的学生信息。
-
- 学生信息的查找功能为了实现快速查找某个人的功能,可以按照姓名查找,也可以按照学号查找。利用select语句实现。
- 宿舍楼信息管理和宿舍分配
- 学生信息的查找功能为了实现快速查找某个人的功能,可以按照姓名查找,也可以按照学号查找。利用select语句实现。
宿舍楼的添加要包括以下信息:宿舍楼名称,层数和每层楼的房间数,以及房间内的床位数。宿舍楼类型:男或者女。我们在填写完层数和每层的房间数后。系统会自动实现排列房间的名称:如我们设置宿舍楼1栋,层数为2,每层房间数为3,房间床位为4,类型为女,那么系统中就建立起一个女生宿舍1栋,里面1层为101,102,103,二层为201,202,203。删除功能实现的是删除整栋宿舍。
宿舍楼的修改可以重置宿舍楼名称,层数和每层楼的房间数,以及房间内的床位数。宿舍楼类型。
宿舍分配功能为分为自动分配和管理员手动分配两种。
自动分配功能减少了管理员大量的劳动。宿舍分配功能本着相同班级的同学分在相邻的寝室。在一个班级分完后,宿舍没有住满,那么相邻班级的同学补满这个房间后,继续往下分。相同专业,相同系分在相邻宿舍。
代码实现为:
conn.execute "Update 学生 set BuildNo=0,StepNO=0,RoomNo=0,BedNo=0"
SelectBuild
'列举所有房间
Sub SelectBuild ( )
Dim sSql1
sSql1="select * from 寝室楼"
Set myRst=server.createobject ("ADODB.Recordset")
myRst.open sSql1, conn, 1, 1
While not myRst.eof
id=myRst ("ID")
StepCount=myRst ("StepCount")
RoomPerStep=myRst ("RoomPerStep")
ManPerRoom=myRst ("ManPerRoom")
Sex=myRst ("Sex")
For iStep =1 to StepCount
'循环楼层
for iRoom=1 to RoomPerStep
'循环楼房
For iBad=1 to ManPerRoom
'循环 床位
SutendClass ID, iStep, iRoom, iBad, sex
Next
Next
Next
myRst.movenext
Wend
myRst.close
End Sub
Sub SutendClass (BuildNo, StepNO, RoomNo, BedNo, sex)
'列举出所有女学生
Dim sSq
sSq="Select * From 学生 where sex="&sex&" order by ClassNo desc"
'sSq="select * from 学生 where ClassNo="&sID &" order by sex "
'dp sSq
Set rs=server.createobject ("ADODB.Recordset")
Rs.open sSq, conn, 3, 3
While not rs.eof
if dolookup("学生","BuildNo","id="&Rs("id"))="0" then
if(dolookup("学生","id","BuildNo="&BuildNo&"and StepNO="&StepNO&"andRoomNo="&RoomNo&" and BedNo="&BedNo)&"")="" then
Rs ("BuildNo") =BuildNo
Rs ("StepNO") =StepNO
Rs ("RoomNo") =RoomNo
Rs ("BedNo") =BedNo
rs.update
End if
End if
rs.movenext
wend
rs.Close ()
End sub
手动分配功能:
手动分配功能主要是为了方便个别同学调整寝室的情况。我们选择“调整寝室”功能后,会要求填写要调整到的宿舍的信息,然后提交后实现调整功能。
如果选择“清除寝室”后,那么在寝室信息一栏中,显示的是暂未分配寝室:
if dolookup("寝室楼","name","id="&rs("BuildNo"))&""="" then
echo "暂未分配寝室"
如果选择“删除”,将删除这个同学的整个信息。
分页和页面跳转功能:
page_start= (pagecount-1)*rs.pagesize
If pagecount=1 then page_start=1
page_end=rs.pagesize*pagecount
If pagecount*rs.pagesize=>rs.recordcount then page_end=rs.recordcount end if%>
共有[<font><%=rs.recordcount%></font>]学生以下是[<font><%=page_start%>~<%=page_end%></font>]</font><a href="adduser.asp" target="mainFrame"> </a></td>
<td height="25" colspan="4" ><% response.write"<form name=go2to form method=Post action='edituser.asp? Key="+key+"'>"
Response. write "<font color=ffffff>◆ </font>"
If pagecount=1 then
response.write "<font class=ver>首页 上一页</font> "
else
response.write "<a href=edituser.asp? page=1&key="+key+"><font class=ver>首页</font></a> "
response.write "<a href=edituser.asp? page="+cstr(pagecount-1)+"&key="+key+"><font color='0000BE'>上一页</font></a> "
End if
If rs.PageCount-pagecount<1 then
response.write "<font class=ver>下一页 尾页</font>"
Else
response.write "<a href=edituser.asp? page="+cstr(pagecount+1)+"&key="+key+"><font class=ver>下一页</font></a> "
response.write "<a href=edituser.asp? page="+cstr(rs.PageCount)+"&key="+key+"><font class=ver>尾页</font></a>"
End if
Response. Write"<font class=ver>
页次:<font class=ver>"&pagecount&"</font>/"&rs.pagecount&"页</font>"
response.write "<font class=ver> 转到第<input type='text' name='page' size=2 maxLength=3 style='font-size: 9pt; color:#00006A; position: relative; height: 18' value="&PageCount&">页</font> "
response.write "<input class=button1 type='button' value='确 定' οnclick=check()%></td>
-
-
- 值班信息
-
以往学生公寓的宿舍管理员值班信息都是由管理员记录在本子上。麻烦且不方便资料的管理。所以在这个系统中,我们设置了这个模块。这个模块分为两个部分:值班表的查看和删除;宿舍管理员填写值班信息。管理员在填写值班表时要填写值班人的名字和值班情况。在值班表的查看页面中会显示下面的信息:
表3-1 管理员值班信息表
值班人 | 值班期间情况 | 发布人 | 提交时间 | |
楼管01 | 一切正常 | admin | 2007-6-8 下午 08:23:00 | 删除 |
楼管02 | 网络3班A(学号)晚归;原因:病 | admin | 2007-6-8 下午 08:23:00 | 删除 |
其中发布人,提交时间由系统自动获取。
-
-
- 留言板
-
留言有学生权限和管理员权限两种登录方式。这个模块设置的目的是为了管理员能够发布一些通知等。同时也方便了学生和学校,后勤间的交流。学生权限登录后,主界面是发表留言按钮和按照发表时间顺序显示帖子的标题,发表时间,发表人等。点开标题,可以查看帖子的详细信息或者回复。管理员权限登录后,主界面可以发表留言,按照时间显示留言的标题,发表人,发表时间,也可以修改留言和删除留言。
-
-
- 宿舍信息浏览模块
-
这个页面不需要以任何身份登录就可以浏览。实现方式是以表格方式显示学生住宿情况信息。进入这个页面,首先显示的是每栋宿舍楼的信息,如:
名称:女生寝室一号楼-楼层数2-每层房间数5-房间床位:4-性别类型:女
点击链接进去后以表格形式显示每个宿舍楼的房间号和房间入住人数:
表3-2 宿舍楼信息显示表
名称:女生寝室一号楼-楼层数2-每层房间数5-房间床位:4-性别类型:女 | |||||
楼层1 寝室: 人数 | 101 4 | 102 4 | 103 4 | 105 2 | 106 4 |
楼层2 寝室: 人数 | 201 4 | 202 4 | 203 4 | 205 1 | 206 0 |
点击人数的链接,进入每个宿舍入住的学生的详细信息(以205为例):
表3-3 宿舍房间信息显示表
学号 | 姓名 | 系 | 专业 | 届别 | 班级 |
01 | aa | 网络 | 网络 | 2003 | 3 |
-
-
- 登陆,密码修改和退出
-
管理员和用户两种角色,我们都要求设置账号和密码。所以在进入系统中,要选择相应的权限登陆,才有相应的操作权限。我们给每种权限设置了初始密码。为了安全保证,相应的设置了密码修改页面。在以自己的权限登陆后,可以修改自己的密码。同时,建议在关闭系统前,要先登出。
- 数据库设计
根据系统需要,我们在数据库中建立了9张表,分别是管理员账号表(adminuser),系信息表(系),专业信息表(专业),班级信息表(班级),学生信息表(学生),宿舍楼信息表(寝室楼),值班登记信息表(message),论坛信息表(mybbs),宿舍入住人员信息表(qryclass)。以下是各个表的详细信息:
表3-4 adminuser
属性名 | 类型 | 说明 |
username | Nvarchar(50) | 管理员帐号 |
password | Nvarchar(50) | 管理员密码 |
管理员账号表(administers)主要是用来存放管理员的账号和密码的。在管理员值班信息发布和管理员权限对留言板的操作中,我们也会用到,系统自动从该表中读取管理员的ID,作为发布人的身份显示。
表3-5 系
属性名 | 类型 | 说明 |
name | Nvarchar(50) | 系名 |
系信息表数据较少,存储系的名字。考虑到系统中系信息的处理情况,没有设置ID号。初始数据来自宿舍楼管理中添加功能;修改和删除功能可以改动表中数据。系中的数据被专业管理,班级管理多次使用。当我们在添加,删除一个班级或者专业的时候,必须先选择这个专业所属的系,从系中选择这个专业,才能进行添加或者删除工作。在学生信息管理中,我们也必须明确填写该生所在系别。在宿舍信息管理中,自动分配宿舍按照班级——专业——系顺次读取的方式分配宿舍。手动分配宿舍也要调用系表中的数据。
表3-6 专业
属性名 | 类型 | 说明 |
xino | Nvarchar(50) | 专业编号 |
name | Nvarchar(50) | 专业名 |
ibname | Nvarchar(50) | 届名 |
因为很多时候,我们以届为单位对学生操作,所以在专业信息表中,我们定义一个届名(jbname)这样的字段。在已经存在的系中,我们向里面添加专业;专业的信息构造完整后,我们再向专业里面添加班级。按照学校的实际情况来设计的。初始数据来自宿舍楼管理中添加功能;修改和删除功能可以改动表中数据。不管是是对学生,班级,还是宿舍的操作,我们都要用到专业表中的数据。
表3-7 班级
属性名 | 类型 | 说明 |
zyno | Nvarchar(50) | 专业号 |
name | Nvarchar(50) | 班级名称 |
班级表初始数据来自宿舍楼管理中添加功能;修改和删除功能可以改动表中数据,班级表的设置和实现的功能和专业表类似。在这里不做详细说明。
表3-8 学生
属性名 | 类型 | 说明 |
name | Nvarchar(50) | 学生名字 |
psw | Nvarchar(50) | 密码 |
xh | Nvarchar(50) | 学号 |
classno | Int(4) | 班级 |
sex | Int(4) | 性别 |
buildno | Int(4) | 宿舍楼号 |
stempno | Int(4) | 宿舍层号 |
roomno | Int(4) | 宿舍房间号 |
bedno | Int(4) | 床位号 |
学生信息表初始数据来自宿舍楼管理中添加功能;修改和删除功能可以改动表中数据。其中密码(psw)为系统给学生设置的初始密码,学生登陆后可以重新修改;学生信息表被学生管理中的查看,查找功能调用;被宿舍管理中的自动分配和手动分配功能调用;被宿舍浏览功能中调用;在留言板学生登陆中自动读取帖子发表人的身份为登陆者ID。
表3-9 寝室楼
属性名 | 类型 | 说明 |
Name | Nvarchar(50) | 宿舍楼名称 |
Stepcount | Int(4) | 宿舍楼层 |
Roomperstep | Int(4) | 宿舍楼房间号 |
manperroom | Int(4) | 每个房间床位数 |
sex | Int(4) | 性别 |
寝室楼信息表初始数据来自宿舍楼管理中添加功能;修改和删除功能可以改动表中数据。宿舍楼信息表在自动分配和手动分配功能中也可以改变宿舍楼的信息。在查看和宿舍楼信息浏览中我们要用到该表信息。
表3-10 message
属性名 | 类型 | 说明 |
subject | Nvarchar(50) | 楼管姓名 |
message | Nvarchar(50) | 值班情况记录 |
idate | Nvarchar(50) | 值班时间 |
senduser | Nvarchar(50) | 发布者帐号身份 |
Message表中存储管理员值班情况记录数据。楼管姓名,值班情况记录来自管理员值班登记的填写内容,值班时间来自提交值班记录时自动获取的时间,发布者账号身份来自楼管登陆时使用的ID号。表中的数据被管理员值班表功能中,查看管理员值班表的时候调用。
表3-11 mybbs
属性名 | 类型 | 说明 |
title | Int(255) | 帖子名 |
content | Ntext(16) | 内容 |
replayid | Int(4) | 回复的顺序数 |
date | datetime | 时间 |
tuser | Nvarchar(50) | 姓名 |
Mybbs表记录留言板帖子的帖子名,内容,回复的顺序数,时间,姓名。该表数据被学生模块的留言板功能模块和管理员权限的留言管理两个模块调用。表中的属性tuser来自登陆者的id。可以是学生也可是管理员。
表3-12 qryclass
属性名 | 类型 | 说明 |
classno | Int(255) | 班级id |
classname | Ntext(16) | 班级名称 |
buildno | Int(4) | 宿舍楼名称 |
stepno | datetime | 楼层名称 |
roomno | Nvarchar(50) | 房间名称 |
bedno | Nvarchar(50) | 床位号 |
name | Nvarchar(50) | 学生姓名 |
sex | Nvarchar(50) | 性别 |
该表存贮宿舍楼中入住入住人员信息。
主界面采用html中的frame设计:
<frameset frameborder="NO" border="0" framespacing="0" rows="*">
<frameset cols="198,937*" frameborder="NO" border="0" frame spacing="0">
<frame name="leftFrame" scrolling="yes" src="left. asp">
<frame name="mainframe" src="administerIndex.asp">
</frameset>
</frameset>
<Noframes>
</noframes>
其中leftframe ,以表格的形式显示控制面板。点击控制面板中的按钮,相应的功能页面会在mainframe框架中显示。例如我们点击 “院系管理”中的添加功能,则调用关联文件"xi_add.asp",在mainframe中显示这个文件的内容。代码实现如下:
<tr>
<td >
<a href="xi_add.asp" target="mainFrame"><font >添加</font></a> | <a href="xi_edit.asp" target="mainFrame"><font >修改</font></a>
</td>
</tr>
使用Frames结构设计的HTML文件,能够将整个窗口分成几个独立的小窗口,每一个窗口可分别载入不同的文件,好处是每个窗口是可以相互沟通的。有时用得恰到好处,感觉很棒。
该系统基于B/S模式开发,使用ASP实现前后台的数据交互,后台选用SQL Sever 2000作为数据库服务器。该系统分为管理员权限和学生权限两个模块,主要实现了院系,专业,班级的信息的添加,修改和删除等功能;按照学号或者姓名查找学生信息的功能;宿舍信息的创建,修改和删除等功能;宿舍分配功能,包括个别宿舍手动调整,和大量宿舍的自动分配功能。另外还实现了管理员值班登记功能和简易留言板功能。系统经过调试和试运行,能够正常运行。但是因为初次开发,系统中难免会存在各种问题,有待进一步完善。
学生公寓是每一位在校同学学习、生活和交流的地方,良好的管理体系对学校和同学都至关重要。该系统的研发,使后勤和管理人员脱离了人工操作阶段,适应了现代化物管的需要,减轻了工作人员繁重而冗长的工作量。同时也方便了数据的存储,增加了安全性。本毕业设计也锻炼了我综合运用以前所学知识的能力和实际动手能力。