張金鳳 竇立君 張詩琪
摘要:該文詳細介紹了如何利用.Net的WinForm技術(shù)結(jié)合SQL Server數(shù)據(jù)庫來實現(xiàn)樓棟管理、宿舍基本信息管理、學(xué)生管理、衛(wèi)生檢查、離校信息管理等校園宿舍信息管理的信息管理系統(tǒng)。
關(guān)鍵詞:WinForm;宿舍管理;管理系統(tǒng)
中圖分類號: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 概述
高校學(xué)生數(shù)量越來越多,學(xué)生宿舍樓棟也越建越多,為了實現(xiàn)提高學(xué)校宿舍管理部門的工作效率、充分利用資源,減少不必要的人力、物力和財力的支出,方便宿舍管理部門的工作人員全面地掌握學(xué)生住宿情況,提高學(xué)生對宿舍管理的互動性等目的,設(shè)計和使用宿舍管理系統(tǒng)有相當(dāng)有必要的。結(jié)合我校宿舍管理實際情況,分析目前學(xué)生工作部在進行宿舍管理工作時存在的各種問題,提供一個較為方便的解決方案,使管理人員在日常管理工作過程中,工作效率得以提高,并使資源得以更有效配置,從而提高我校的高校日常管理水平,也讓學(xué)校、宿舍更好的為學(xué)生服務(wù)提供的便利。
2 系統(tǒng)功能設(shè)計
系統(tǒng)設(shè)計工作應(yīng)該自頂向下地進行。首先設(shè)計總體結(jié)構(gòu),然后逐層深入,直至進行每一個模塊的設(shè)計?;诳傮w設(shè)計,進行第二步詳細設(shè)計,主要分為以下步驟,首先確定每個模塊詳細執(zhí)行過程,尤其是內(nèi)部執(zhí)行過程,涵蓋了控制流、局部數(shù)據(jù)組織等,通常情況下,其設(shè)計難度不算太大,關(guān)鍵在于能否合適恰當(dāng)?shù)膩碇饌€描述模塊的各自執(zhí)行過程,我們常常使用層次圖來簡潔明了的表示系統(tǒng)中各模塊之間的關(guān)系。
經(jīng)過與宿舍管理科室工作人員的需求調(diào)研之后,結(jié)合系統(tǒng)設(shè)計的原則分析宿舍管理系統(tǒng)共分為十二個模塊,分別為系統(tǒng)管理模塊、樓棟管理模塊、宿舍管理模塊、學(xué)生管理模塊、衛(wèi)生檢查模塊、晚/夜歸管理模塊、離校信息管理模塊、外來人員管理模塊、系統(tǒng)查詢模塊、班主任進出宿舍管理模塊、日常業(yè)務(wù)模塊、統(tǒng)計報表模塊。
系統(tǒng)管理模塊用于管理員信息的管理,例如增加/刪除用戶,用戶信息修改,密碼修改等。
樓棟管理模塊用于管理樓棟信息,例如樓棟編號、宿舍數(shù)、管理員、聯(lián)系電話等信息,包含添加、刪除和查詢功能。
宿舍管理模塊用于管理宿舍信息,例如宿舍的編號、居住人數(shù)、聯(lián)系電話、專業(yè)等,管理員對宿舍信息的添加、刪除和查詢。由于宿舍號相當(dāng)多,對于宿舍號可以事先設(shè)置一個生成規(guī)則自動生成。
學(xué)生管理模塊用于管理住宿在宿舍中的學(xué)生信息,包含學(xué)生的學(xué)號、姓名、宿舍號、床鋪號、專業(yè)、聯(lián)系電話等。管理員添加、刪除和查詢學(xué)生信息。
衛(wèi)生檢查模塊用于登記學(xué)生宿舍管理科進行宿舍衛(wèi)生檢查結(jié)果,為之后評選優(yōu)秀宿舍及其他評優(yōu)中提供參考數(shù)據(jù)。
晚歸、夜歸模塊即登記夜不歸宿或晚歸學(xué)生信息,包含學(xué)生學(xué)號、宿舍號、晚歸時間、晚歸原因等。通過這個模塊可以清楚地登記每個學(xué)生的晚歸、夜歸情況,以便及時通報相關(guān)學(xué)院,督促學(xué)生準時回到宿舍。
離校信息管理部分登記了學(xué)生的學(xué)號、宿舍號、離校時間、返校時間等,留作檔案以查詢。
外來人員登記部分用于管理外來人員,由管理員登記外來人員的姓名、到訪宿舍、訪問學(xué)生、訪問時間等,留作檔案。
日常業(yè)務(wù)部分,即管理物品損壞或收費項目等。
3 數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫的設(shè)計,是信息管理系統(tǒng)開發(fā)和運行中的核心技術(shù),也是建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的技術(shù)。具體地說,數(shù)據(jù)庫設(shè)計(Database Design)是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫邏輯模式和物理結(jié)構(gòu),并據(jù)此建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求,包括信息管理要求和數(shù)據(jù)操作要求。這是我們在軟件開發(fā)初期的主要研究方向,目標是為用戶和各種應(yīng)用系統(tǒng)提供一個信息基礎(chǔ)設(shè)施和高效率的運行環(huán)境。
通過以上系統(tǒng)功能的分析,得出系統(tǒng)數(shù)據(jù)關(guān)系模型,如圖2所示。根據(jù)數(shù)據(jù)關(guān)系模型在Microsoft SQL Server2008中建立系統(tǒng)的數(shù)據(jù)庫。
4 關(guān)鍵代碼設(shè)計
功能分析和數(shù)據(jù)庫設(shè)計完成之后,對管理系統(tǒng)來說剩下的就是代碼設(shè)計。代碼設(shè)計對整個系統(tǒng)來說也是相當(dāng)重要,所有的功能都要通過代碼來實現(xiàn),且同樣的功能可以許多實現(xiàn)的方法,關(guān)鍵是代碼要高效。模塊化設(shè)計也可以實現(xiàn)代碼的重用,同時也方便系統(tǒng)的局部調(diào)試。這里僅對系統(tǒng)部分關(guān)鍵代碼作簡要介紹。
4.1 數(shù)據(jù)庫連接設(shè)計
系統(tǒng)的所有數(shù)據(jù)都存儲在數(shù)據(jù)庫中,系統(tǒng)運行過程中是離開與數(shù)據(jù)庫進行交互的。所以設(shè)計一個公用的數(shù)據(jù)庫操作類是十分必要的。隨時系統(tǒng)設(shè)計時采用的是Microsoft SQL Server2008,但考慮到最終用戶可能使用的是其他數(shù)據(jù)庫,因此系統(tǒng)在設(shè)計數(shù)據(jù)庫操作類時針對目前常用的數(shù)據(jù)庫(MySql,Oracle,MSSQL等)都作了預(yù)處理,這樣在系統(tǒng)部署時可以靈活使用目前常用的數(shù)據(jù)庫。該類的主要代碼如下:
namespace DBUtility
{ public class DBHelper // 數(shù)據(jù)庫操作
{ public enum DatabaseTypes // 枚舉:數(shù)據(jù)庫類型
{ Sql, MySql, Oracle, OleDb }
…
public DBHelper(DatabaseTypes databaseType, string connectionString)
{ DatabaseType = databaseType;
this._connectionString = connectionString; }
public DatabaseTypes DatabaseType // 數(shù)據(jù)庫類型
{ 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 // 數(shù)據(jù)庫連接字符串
{ get { return _connectionString; }
set { _connectionString = value; } }
public DbConnection CreateConnection() // 創(chuàng)建數(shù)據(jù)庫連接
{ switch (_databaseType)
{ case DatabaseTypes.MySql:
#if MYSQL return new MySqlConnection(_connectionString);
#else throw new SystemException("DBUtility未打開MYSQL編譯開關(guān)。");
#endif
… }
}
#region === 數(shù)據(jù)庫執(zhí)行方法 ===
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 數(shù)據(jù)導(dǎo)出
當(dāng)系統(tǒng)運行一段時間之后,系統(tǒng)會積累大量數(shù)據(jù)。通過對相關(guān)數(shù)據(jù)的分析,用戶可以得到自己想要的結(jié)果。因此,數(shù)據(jù)導(dǎo)出是系統(tǒng)常用的功能。目前Excel文件格式是最常用的數(shù)據(jù)交換格式,系統(tǒng)在設(shè)計數(shù)據(jù)導(dǎo)出時也采用了此格式。相關(guān)代碼如下:
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; (下轉(zhuǎn)第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); //寫入列內(nèi)容
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 結(jié)語
系統(tǒng)操作簡單、方便,導(dǎo)航界面清晰、簡潔,使用戶可以一目了然地找到自己所需操作的模塊,輕松進行增減刪改操作,不需要花費大量時間來熟悉界面和操作,為用戶節(jié)省了許多時間。并且考慮到宿舍管理人員的平均年齡,盡可能地使操作簡單快捷,便于其熟悉和使用,符合人性化的要求,本校的試用過程取得了很好的效果,提高的宿舍管理人員的工作效率。
參考文獻:
[1] 劉甫迎,劉光會,王蓉.C#程序設(shè)計教程[M].2版.北京:北京電子工業(yè)出版社,2008.
[2] 胡孔法.數(shù)據(jù)庫原理及應(yīng)用[M].北京:機械工業(yè)出版社,2008.
[3] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M]..北京:高等教育出版社,2006.
[4] 陳俞.信息系統(tǒng)分析與設(shè)計[M].北京:高等教育出版社,2005.