基于.Net的学生宿舍管理系统的实现
2017-03-06张金凤窦立君张诗琪
张金凤 窦立君 张诗琪
摘要:该文详细介绍了如何利用.Net的WinForm技术结合SQL Server数据库来实现楼栋管理、宿舍基本信息管理、学生管理、卫生检查、离校信息管理等校园宿舍信息管理的信息管理系统。
关键词:WinForm;宿舍管理;管理系统
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)30-0082-02
Implementation of Student Dormitory Management System based on .Net
DOU Li-jun1, ZHANG Jing-feng2, ZHANG Shi-qi2
(1.Nanjing Vocational Institute of Transport Technology, Nanjing 211188, China; 2.Nanjing Forestry University, Nanjing 210037, China)
Abstract:This paper introduces the information management system of how to use .Net WinForm technology combined with SQL Server database to realize the building managment, dormitory management basic information management, student management, health examination, leaving campus dormitory information management information management.
Key words:WinForm; Dormitory management; management system
1 概述
高校學生数量越来越多,学生宿舍楼栋也越建越多,为了实现提高学校宿舍管理部门的工作效率、充分利用资源,减少不必要的人力、物力和财力的支出,方便宿舍管理部门的工作人员全面地掌握学生住宿情况,提高学生对宿舍管理的互动性等目的,设计和使用宿舍管理系统有相当有必要的。结合我校宿舍管理实际情况,分析目前学生工作部在进行宿舍管理工作时存在的各种问题,提供一个较为方便的解决方案,使管理人员在日常管理工作过程中,工作效率得以提高,并使资源得以更有效配置,从而提高我校的高校日常管理水平,也让学校、宿舍更好的为学生服务提供的便利。
2 系统功能设计
系统设计工作应该自顶向下地进行。首先设计总体结构,然后逐层深入,直至进行每一个模块的设计。基于总体设计,进行第二步详细设计,主要分为以下步骤,首先确定每个模块详细执行过程,尤其是内部执行过程,涵盖了控制流、局部数据组织等,通常情况下,其设计难度不算太大,关键在于能否合适恰当的来逐个描述模块的各自执行过程,我们常常使用层次图来简洁明了的表示系统中各模块之间的关系。
经过与宿舍管理科室工作人员的需求调研之后,结合系统设计的原则分析宿舍管理系统共分为十二个模块,分别为系统管理模块、楼栋管理模块、宿舍管理模块、学生管理模块、卫生检查模块、晚/夜归管理模块、离校信息管理模块、外来人员管理模块、系统查询模块、班主任进出宿舍管理模块、日常业务模块、统计报表模块。
系统管理模块用于管理员信息的管理,例如增加/删除用户,用户信息修改,密码修改等。
楼栋管理模块用于管理楼栋信息,例如楼栋编号、宿舍数、管理员、联系电话等信息,包含添加、删除和查询功能。
宿舍管理模块用于管理宿舍信息,例如宿舍的编号、居住人数、联系电话、专业等,管理员对宿舍信息的添加、删除和查询。由于宿舍号相当多,对于宿舍号可以事先设置一个生成规则自动生成。
学生管理模块用于管理住宿在宿舍中的学生信息,包含学生的学号、姓名、宿舍号、床铺号、专业、联系电话等。管理员添加、删除和查询学生信息。
卫生检查模块用于登记学生宿舍管理科进行宿舍卫生检查结果,为之后评选优秀宿舍及其他评优中提供参考数据。
晚归、夜归模块即登记夜不归宿或晚归学生信息,包含学生学号、宿舍号、晚归时间、晚归原因等。通过这个模块可以清楚地登记每个学生的晚归、夜归情况,以便及时通报相关学院,督促学生准时回到宿舍。
离校信息管理部分登记了学生的学号、宿舍号、离校时间、返校时间等,留作档案以查询。
外来人员登记部分用于管理外来人员,由管理员登记外来人员的姓名、到访宿舍、访问学生、访问时间等,留作档案。
日常业务部分,即管理物品损坏或收费项目等。
3 数据库设计
数据库的设计,是信息管理系统开发和运行中的核心技术,也是建立数据库及其应用系统的技术。具体地说,数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。这是我们在软件开发初期的主要研究方向,目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。
通过以上系统功能的分析,得出系统数据关系模型,如图2所示。根据数据关系模型在Microsoft SQL Server2008中建立系统的数据库。
4 关键代码设计
功能分析和数据库设计完成之后,对管理系统来说剩下的就是代码设计。代码设计对整个系统来说也是相当重要,所有的功能都要通过代码来实现,且同样的功能可以许多实现的方法,关键是代码要高效。模块化设计也可以实现代码的重用,同时也方便系统的局部调试。这里仅对系统部分关键代码作简要介绍。
4.1 数据库连接设计
系统的所有数据都存储在数据库中,系统运行过程中是离开与数据库进行交互的。所以设计一个公用的数据库操作类是十分必要的。随时系统设计时采用的是Microsoft SQL Server2008,但考虑到最终用户可能使用的是其他数据库,因此系统在设计数据库操作类时针对目前常用的数据库(MySql,Oracle,MSSQL等)都作了预处理,这样在系统部署时可以灵活使用目前常用的数据库。该类的主要代码如下:
namespace DBUtility
{ public class DBHelper // 数据库操作
{ public enum DatabaseTypes // 枚举:数据库类型
{ Sql, MySql, Oracle, OleDb }
…
public DBHelper(DatabaseTypes databaseType, string connectionString)
{ DatabaseType = databaseType;
this._connectionString = connectionString; }
public DatabaseTypes DatabaseType // 數据库类型
{ get { return _databaseType; }
set { _databaseType = value;
switch (value)
{ case DatabaseTypes.OleDb: _dbHelper = new OleDbHelper(); break;
case DatabaseTypes.MySql: _dbHelper = new MySqlHelper(); break;
case DatabaseTypes.Oracle: _dbHelper = new OracleHelper();break;
case DatabaseTypes.Sql: default: _dbHelper = new SqlHelper(); break; } }
}
public string ConnectionString // 数据库连接字符串
{ get { return _connectionString; }
set { _connectionString = value; } }
public DbConnection CreateConnection() // 创建数据库连接
{ switch (_databaseType)
{ case DatabaseTypes.MySql:
#if MYSQL return new MySqlConnection(_connectionString);
#else throw new SystemException("DBUtility未打开MYSQL编译开关。");
#endif
… }
}
#region === 数据库执行方法 ===
public DbDataReader GetPageList(string tblName, string fldSort, string condition, int first, int last) { return _dbHelper.GetPageList(_connectionString, tblName, fldSort, condition, first, last); }
…
#endregion
}}
4.2 数据导出
当系统运行一段时间之后,系统会积累大量数据。通过对相关数据的分析,用户可以得到自己想要的结果。因此,数据导出是系统常用的功能。目前Excel文件格式是最常用的数据交换格式,系统在设计数据导出时也采用了此格式。相关代码如下:
private void daochuExcl_Click(object sender, EventArgs e)
{ SaveFileDialog dlg = new SaveFileDialog(); //实例化
dlg.Filter = "Execl files (*.xls)|*.xls";
dlg.FilterIndex = 0;
dlg.RestoreDirectory = true;
dlg.CreatePrompt = true; (下转第90页)
(上接第83页)
dlg.Title = "保存为Excel文件";
if (dlg.ShowDialog() == DialogResult.OK)
{ Stream myStream;
myStream = dlg.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
string columnTitle = "";
try
{ //写入列标题
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{ if (i > 0)
{ columnTitle += "\t"; }
columnTitle += dataGridView1.Columns[i].HeaderText; }
sw.WriteLine(columnTitle); //写入列内容
for (int j = 0; j < dataGridView1.Rows.Count; j++)
{ string columnValue = "";
for (int k = 0; k < dataGridView1.Columns.Count; k++)
{ if (k > 0)
{ columnValue += "\t"; }
if (dataGridView1.Rows[j].Cells[k].Value == null)
columnValue += "";
else
columnValue += dataGridView1.Rows[j].Cells[k]
.Value.ToString().Trim(); }
sw.WriteLine(columnValue); }
sw.Close(); myStream.Close(); }
catch (Exception ex)
{ MessageBox.Show(ex.ToString()); }
finally
{ sw.Close(); myStream.Close(); }
}}
5 结语
系统操作简单、方便,导航界面清晰、简洁,使用户可以一目了然地找到自己所需操作的模块,轻松进行增减删改操作,不需要花费大量时间来熟悉界面和操作,为用户节省了许多时间。并且考虑到宿舍管理人员的平均年龄,尽可能地使操作简单快捷,便于其熟悉和使用,符合人性化的要求,本校的试用过程取得了很好的效果,提高的宿舍管理人员的工作效率。
参考文献:
[1] 刘甫迎,刘光会,王蓉.C#程序設计教程[M].2版.北京:北京电子工业出版社,2008.
[2] 胡孔法.数据库原理及应用[M].北京:机械工业出版社,2008.
[3] 王珊,萨师煊.数据库系统概论[M]..北京:高等教育出版社,2006.
[4] 陈俞.信息系统分析与设计[M].北京:高等教育出版社,2005.