[摘要] 本文在比較B/S和C/S結(jié)構(gòu)優(yōu)缺點(diǎn)的基礎(chǔ)上,提出B/S和C/S復(fù)合結(jié)構(gòu)的考勤系統(tǒng)架構(gòu)。并對C/S結(jié)構(gòu)的通訊模塊的實(shí)現(xiàn)方法進(jìn)行詳細(xì)闡述。
[關(guān)鍵詞] B/S; C/S; 考勤系統(tǒng)
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2011 . 14. 047
[中圖分類號]TP311 [文獻(xiàn)標(biāo)識碼]A [文章編號]1673 - 0194(2011)14- 0080- 03
0引言
B/S軟件體系結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu)(如圖1所示),是隨著Internet技術(shù)的興起而發(fā)展起來的。其用戶界面完全通過WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),在邏輯上分為三層:客戶層、應(yīng)用服務(wù)層和數(shù)據(jù)服務(wù)層。B/S的優(yōu)勢在于適用于Internet,維護(hù)工作量小,增強(qiáng)了系統(tǒng)的可擴(kuò)展性,更新方便,易于管理和維護(hù),但是它的運(yùn)行速度較慢,實(shí)時(shí)性差[1]。
C/S(Client/Server,客戶機(jī)/服務(wù)器)體系結(jié)構(gòu)如圖2所示。在這種架構(gòu)中,服務(wù)器一般是數(shù)據(jù)庫服務(wù)器,而客戶機(jī)一般是PC機(jī),兩者之間通過局域網(wǎng)相連。客戶機(jī)上運(yùn)行處理業(yè)務(wù)邏輯的應(yīng)用軟件,并且還負(fù)責(zé)圖形用戶界面的處理。它運(yùn)行速度快,數(shù)據(jù)安全性高,實(shí)時(shí)性較好[2]。
綜合考慮C/S架構(gòu)和B/S架構(gòu)各自的特點(diǎn),以及考勤管理系統(tǒng)中與終端通訊的實(shí)時(shí)性要求較高,故系統(tǒng)采用B/S和C/S復(fù)合結(jié)構(gòu)來實(shí)現(xiàn)。
1結(jié)構(gòu)概述
本文所開發(fā)的C/S通訊模塊安裝在工作站上,主要完成的任務(wù)是:實(shí)時(shí)執(zhí)行B/S模塊下達(dá)到數(shù)據(jù)庫中的命令;實(shí)時(shí)輪詢考勤機(jī);執(zhí)行工作站管理人員的命令;將相關(guān)信息寫入數(shù)據(jù)庫。系統(tǒng)架構(gòu)如圖3所示。
2C/S模塊數(shù)據(jù)庫表設(shè)計(jì)
根據(jù)C/S模塊在系統(tǒng)中的作用和功能,設(shè)計(jì)如下數(shù)據(jù)庫表:
(1) AttWkStation(工作站表):主要存放工作站信息。
WkStationID:工作站編號;
WkStationIP:工作站IP設(shè)置;
WkStationName:工作站名稱;
SerialPorts:可用串口;
PollCycle:輪詢周期,工作站按輪詢周期給管理的終端發(fā)信號,查看是否通訊正常;
ManageID:管理員編號。
(2) 考勤終端表(AttTerm):存放考勤終端(考勤機(jī))的相關(guān)信息,設(shè)計(jì)如下:
WorkStaionID:工作站編號,由此區(qū)分考勤機(jī)是屬于那個(gè)工作站管理的;
TermID:終端編號;
PortAddress:通訊端口地址;
PortSettings:通訊端口設(shè)置;
AuthorityIDs:可接受的授權(quán)卡類型組合,表明哪些卡可以在該考勤機(jī)上考勤。
(3) AttTermTask(終端任務(wù)表):存放由B/S模塊下達(dá)的需考勤機(jī)完成的命令,并將完成情況寫回,便于查詢。主要指令字段見表1。
其他相關(guān)字段如下:
OverStatus:B/S模塊寫入0,C/S通訊模塊執(zhí)行指令后,如成功寫入1,失敗寫入0;
ExcuteTime:C/S模塊寫入取出指令執(zhí)行的時(shí)間。
(4) 原始記錄表(AttData):記錄員工刷卡時(shí)間及刷卡終端號,設(shè)計(jì)如下:
TermNo:終端號;
EmployeeID:員工編號;
AttDate:簽名日期;
SignType:類型(1,手工簽到;0,讀取;2,計(jì)算機(jī)登記)。
3程序設(shè)計(jì)
本系統(tǒng)的C/S模塊采用C#語言在.NET平臺上開發(fā)。C#是一種應(yīng)用于開發(fā).NET應(yīng)用程序的專屬語言,它以C語言為基礎(chǔ),同時(shí)以C++對象模型,建構(gòu)其面向?qū)ο蟮恼Z言架構(gòu),支持完整的面向?qū)ο笤O(shè)計(jì)理論[3]。工作站與考勤機(jī)的通訊采用串口通訊,利用微軟的MSCOMM控件來實(shí)現(xiàn)。MSCOMM控件在.NET平臺上沒有集成,需要自己完成控件注冊,為方便使用,系統(tǒng)將MSCOMM控件的3個(gè)主要文件MSCOMM32.DEP、MSCOMM32.OCX、MSCOMM.SRG隨通訊模塊一起打包注冊。與B/S系統(tǒng)的交互采用SQL Server數(shù)據(jù)庫。程序核心代碼如下:
// 在ListView中顯示從數(shù)據(jù)庫中讀出的每臺工作站管理的考勤機(jī)列表并顯示在ListView控件中。
private void ListMachineInView()
{ myManuDB.iWorkStationNo.ToString("d3") + "' AND TermEnable='0'AND
DataSet myDataSet = new DataSet();
myDataSet = mydatacon.GetDataSet(myManuDB.strConnectionText, strCmdText);
DataTable myDataTable = myDataSet.Tables[0];
}
private void RealCmdTimer_Tick(object sender, System.EventArgs e)
{ myManuDB.ManageModuleCmd();
// 實(shí)時(shí)輪詢管理任務(wù)表,若有管理模塊下達(dá)的任務(wù)則先執(zhí)行管理模塊命令
}
private void RealDataRefresh()
{myManuDB.GetRealTimeData();
// 定時(shí)時(shí)間到后如果已開始實(shí)時(shí)考勤,則執(zhí)行實(shí)時(shí)讀取考勤記錄
}
private void GetRec_Click(object sender, System.EventArgs e)
{myManuDB. GetRecord (strSelMacNo ); // 獲取終端的記錄
}
private void DelMac_Click(object sender, System.EventArgs e)
{ myManuDB.GetRecord(sSelMacNo); // 刪除終端前先將終端記錄讀出保存
myManuDB. DelMac(strSelMacNo); // 刪除終端
}
private void InitialMac_Click(object sender, System.EventArgs e)
{myManuDB.InitialTermAtt(strSelMacNo); // 初始化終端
}
private void AutoSearchMachine_Click(object sender, System.EventArgs e)
{ myManuDB.SearchNewTerm(); // 自動搜索終端并顯示 ListMachineInView();
}
private void RegAll_Click(object sender, System.EventArgs e)
{myManuDB.WriteRegInMac(sTermNo);// 對所有終端寫注冊信息
}
// 數(shù)據(jù)庫連接操作例程:
public System.Data.SqlClient.SqlConnection IntekSqlCon;
IntekSqlCon.ConnectionString = "packet size=4096;user id=sa;data source=(local);persist security info=True;initial " +"catalog=web;password=intek";
4系統(tǒng)操作實(shí)例
5結(jié)論
本考勤系統(tǒng)是和英泰克智能卡公司合作開發(fā)的,所開發(fā)的考勤系統(tǒng)已投入實(shí)際使用。從使用效果來看,本文提出的考勤系統(tǒng)架構(gòu)以及C/S模塊的開發(fā)是合理的,取得較好的使用效果。
本文創(chuàng)新之處在于:設(shè)計(jì)了一種B/S和C/S結(jié)構(gòu)有效結(jié)合于一體的考勤系統(tǒng),并用C#語言在.NET Framework平臺上實(shí)現(xiàn)了C/S考勤通訊模塊,將混合架構(gòu)與單片機(jī)考勤終端融為一體。
主要參考文獻(xiàn)
[1] 葛方振,饒運(yùn)濤,何斌,魏雄. 基于三層B/S和C/S結(jié)構(gòu)考勤管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)與現(xiàn)代化,2005(1):88-89.
[2] 李謙,丁香乾,石碩,姜兆寧. 基于嵌入式系統(tǒng)平臺的智能終端的設(shè)計(jì)[J]. 微計(jì)算機(jī)信息,2007,23(8).
[3] 呂文達(dá). 精通C#程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2004:3-5.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文