高校新生入学宿舍管理系统的设计与实现

2014-07-16 09:37
重庆三峡学院学报 2014年3期
关键词:数据表床位寝室

钱 立 邓 绯

(四川职业技术学院计算机科学系,四川遂宁 629000)

近几年高等职业院校的新生规模都比较大,这给新生的报到注册带来了不少问题,其中之一便是新生的寝室安排.在以往的学生宿舍安排中,常常依靠人工查询的方式,手动分配宿舍,其效率很低,出错率也比较高.为了提高新生报到入住的效率,四川职业技术学院开发了以下的宿舍管理系统.

1 系统需求分析

系统应具有的基本功能:

(1)宿舍寝室床位生成和寝室预分配处理;

(2)新生注册后,宿管科能自动分配寝室,并提供有限的床位选择机会;

(3)可根据情况调整寝室分配;

(4)能对新生入住情况进行查询统计;

(5)能以Excel表格方式导出新生入住详细情况.

2 数据库设计

2.1 ER分析

宿舍分男生和女生宿舍,每个宿舍有多个寝室,每个寝室有6个床位.每个专业有男女生,入住到多个寝室中.每个寝室属于某个专业,但特殊情况下,一个寝室可混住多个专业的学生,ER图见图1.

图1

2.2 数据表设计

根据ER图可设计两张重要的数据表,见表1:

表1 数据表

3 系统设计分析及实现

系统采用Brower/Server体系结构,即建设宿舍管理系统网站,客户联网使用WEB浏览器来进行新生入住宿舍管理等操作.本系统采用微软Dot Net Framework开发平台和MS SQL Server2005数据库服务器,运行于IIS服务器.

3.1 预设置专业寝室算法及入住分配算法

先根据本校宿舍情况,将不同的宿舍设置为男女生宿舍,由此生成寝室和床位.再根据学校新生录取情况来预先分配寝室,录取情况包括各专业录取人数,男女生人数.初始分配寝室算法非常简单,即如果某专业的男生人数恰好是6的整数倍,那么就分配整数个寝室;如果有余数,余数若大于等于3,则多分整数加 1个寝室,否则就分配整数个寝室.床位分配算法:来一位新生,便用激光扫描枪输入该生高考报名号,然后根据其专业和性别找到一个可用的寝室,列出空闲的床位待选择,选择后则分配完成.

3.2 实际情况分析

在新生实际报到过程中,常出现这样几个现象:

(1)新生并未按预先录取的人数报到;

(2)新生报到后调整专业;

(3)由于特殊情况,新生需要调整床位.

由于以上原因,某专业的男女生人数可能比预先的少或多.若比预先的少,则会产生空闲寝室;若多,则预先分配的寝室不够用,则必须要求系统根据实际情况调整各专业宿舍寝室分配.还有新生入住后又调换专业需要调整寝室,或者新生要求调整床位.完成的系统具备了这几种调整功能,见图2.

图2

3.3 入住情况查询分析及数据导出

根据设计要求,系统提供了多种查询和统计功能,如查询某专业有哪些寝室,某寝室住了哪些学生或者定位学生.在新生寝室分配过程中,若遇到专业寝室不够,则需要调整.先需要分析目前的入住情况,给出分配的寝室已入住多少,还有多少空余,再根据情况调整.新生报到结束后,方便以后工作,将入住详细情况导出,专业辅导员就能清楚地掌握学生宿舍分布.系统实现的功能如图3.

图3

4 关键技术

4.1 AJAX页面异步刷新

AJAX是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新,简单说就是在不重新加载整个网页的情况下,对网页某部分进行更新.

在学校颁发的大学新生录取通知书上面有一个条形码,该条形码是一个 14位数字的新生报到号.该条形码可通过条码扫描枪迅速确定学生信息,并根据性别和专业安排宿舍寝室和床位.这个操作仅仅在5秒钟内就可完成.为了达到操作准确迅速,一步到位的目的,在新生报到寝室分配页面上采用了AJAX技术,加快了页面响应速度.编程过程如下:

(1)在页面标签内增加JS代码,包含一个分配床位的js方法assigneRoomBed().

(2)在页面body中的触发按钮上调用该js方法,将服务器为新生自动分配好的寝室床位信息显示在myDiv标签上.

(3)XMLHttpRequest对象用于在后台与服务器交换数据[1].在页面的js方法assigneRoomBed()中,首先要创建该对象,后使用该对象完成异步数据发送和接收.

(4)在ASP.net服务器端使用Http Handler来处理这个异步请求[2],根据传送过来的新生报名号stuBaoID,查询数据库,确定性别和专业,再自动分配出寝室和床位号,最后以文本字符串响应给客户页面,下面是伪代码.

//1.根据新生报名号查询数据库,确定出该生专业和性别

//2.根据专业和性别,以及预先专业寝室分配情况进行自动分配寝室和床号

//3.以文本字符串做出异步响应

context.Response.Write("某新生分配的寝室和床号信息");

4.2 采用NPOI技术导出宿舍报表Excel

NPOI是POI项目的.NET版本,POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目.NPOI是构建在POI 3.x版本之上的,使用它可以在没有安装Office的情况下对Word/Excel文档进行读写操作[3].

该项目提供给开发者使用的对象主要位于NPOI.HSSF.UserModel空间下,主要有HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell,对应的接口为位于 NPOI.SS.UserModel空间下的IWorkbook、ISheet、IRow、ICell,分别对应 Excel文件、工作表、行、单元格.导出数据过程如下:

(1)先构造宿舍寝室入住的学生信息表StuRoom

这个表属于一个临时数据存放表,每次导出数据时,该表将清空.表结构设计如表2.

表2 寝室学生信息表StuRoom

(2)从SQL Server 2005的数据表StuRoom中读出数据到DataTable对象中

在进行数据导出操作时,根据先前重要数据表Room和StuRoomBed中的数据,整理出每个寝室有哪些学生存入 StuRoom表中.再通过 ADO.net数据库连接技术读出该表数据到DataTable对象中.

(3)从DataTable对象中导出数据为Excel表

public static void ExportToExcel(DataTable table,string fileName){

MemoryStream ms = new MemoryStream();

IWorkbook workbook = new HSSFWorkbook();

ISheet sheet = workbook.CreateSheet());

IRow headerRow = sheet.CreateRow(0);

//处理表头

foreach (DataColumn column in table.Columns){

headerRow.CreateCell(column.Ordinal).Set

CellValue(column.Caption);

//处理表中数据

int rowIndex = 1;

foreach (DataRow row in table.Rows){

IRow dataRow = sheet.CreateRow(rowIndex);

foreach (DataColumn column in table.Columns){

dataRow.CreateCell(column.Ordinal).Set

CellValue(row[column].ToString());

}

rowIndex++;

}

workbook.Write(ms);ms.Flush();

ms.Position = 0;

FileStream fs = new FileStream(fileName,FileMode.Create, FileAccess.Write);

byte[]data = ms.ToArray();

fs.Write(data, 0, data.Length);

fs.Flush();

data = null;

}

以上代码导出Excel报表思路是:先构造一个内存流,再通过NPOI依次创建工作簿、工作表、数据行和单元格,并为单元格正确赋值,接着将整个工作表内容写入到内存流中,最后将内存流数据导出到一个Excel文件中.

5 结 语

根据宿舍入住分配管理要求开发的这个系统基本能满足要求,即宿舍寝室及床位的生成,专业寝室预分配,进行自动安排寝室和有限选择床位,调整寝室或床位,能进行适当统计和入住情况数据导出.另外,该系统还设计了寝室室长设置,毕业和退学寝室床位的回收等功能.但由于四川职业技术学院存在宿舍较少,而新生较多的矛盾,以至于寝室常不够用,只能采用查询空余寝室床位安插新生.对于男女生在同一幢宿舍混住,即上面楼层住男生,下面楼层住女生这样的情况尚未考虑,这是该系统的一大缺陷.但总的说来,这套系统能较好地进行新生入住信息化管理,提高了办事效率.

[1]夏慧军,魏雪辉.深入浅出ajax[M].北京:电子工业出版社,2007.

[2][美]matthew macdonald;mario szpuszta.ASP.NET3.5高级程序设计:第2版[M].博思工作室,译.北京:人民邮电出版社,2008.

[3]NPOI官网.http://npoi.codeplex.com[EB/OL].

猜你喜欢
数据表床位寝室
寝室“奇葩”操作大赏
寝室闹鬼记
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
基于列控工程数据表建立线路拓扑关系的研究
上海市医疗机构床位分类研究:基于德尔菲专家咨询法
医院何以床位论英雄?
区域养老床位预测方法探析
寝室“活宝”征集令等
养老床位欠缺与闲置并存