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