版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、常州信息職業(yè)技術(shù)學(xué)院軟件開發(fā)與項(xiàng)目管理學(xué)生作品作品題目: 班級(jí)信息管理系統(tǒng)中服務(wù)端的設(shè)計(jì)與實(shí)現(xiàn) 作品作者: 歐林華 指導(dǎo)教師: 余永佳 完成時(shí)間: 2014.06.20 一、選題背景在信息化的今天,信息對(duì)于我們是不可缺少的,在高校的日常教學(xué)管理活動(dòng)中,老師和學(xué)生之間會(huì)產(chǎn)生許許多多的信息的交流。傳統(tǒng)的信息通訊工具主要是以手機(jī)為主,其次還有通過網(wǎng)絡(luò)來進(jìn)行信息的交互。通過調(diào)查可以發(fā)現(xiàn),高校中學(xué)生使用手機(jī)的人數(shù)在總?cè)藬?shù)中占據(jù)了很大的比重,而智能手機(jī)更是得到學(xué)生們的青睞。如今的智能手機(jī)更能強(qiáng)大拓展能力強(qiáng),且便于攜帶,因此,許多老師都會(huì)選擇手機(jī)來與學(xué)生進(jìn)行交互。但是有時(shí)也會(huì)遭遇這些的困擾。通過手機(jī)短信給學(xué)
2、生發(fā)送信息時(shí),如果學(xué)生不回復(fù)的話,那么老師就無法知曉這則消息是否被該學(xué)生閱讀過;使用一些現(xiàn)有的聊天工具,如飛信、QQ、微信,常規(guī)的還有手機(jī)短息。同上述一樣。在得不到對(duì)方回復(fù)的情況下,老師還是無法正確的判斷這則消息是否被閱讀了。所以老師不知道自己想要傳達(dá)的信息有沒有真正傳達(dá)到學(xué)生那里;而如果使用電話來告知,這個(gè)方式比起上述兩種方法有著很大的區(qū)別。打電話通知比起上面兩個(gè)方法顯得比較正式、嚴(yán)肅,帶有很強(qiáng)的目的性。但是這個(gè)方式有著很大的缺陷,這種方式只能一個(gè)一個(gè)的進(jìn)行通知,不僅效率不高,而且花費(fèi)的代價(jià)也是比較大。所以我們根據(jù)上述的情況,結(jié)合高校中學(xué)生手機(jī)的使用情況,開發(fā)出一款能在老師和學(xué)生之間都能使用
3、的通訊軟件。該通訊軟件由一個(gè)教師端和一個(gè)學(xué)生端組成。老師操作教師端向一個(gè)或者多個(gè)學(xué)生發(fā)送信息,學(xué)生操作學(xué)生端可以查看信息的狀態(tài),能按照相應(yīng)的條件進(jìn)行排序,可以對(duì)教師端發(fā)送過來的信息進(jìn)行反饋,還能夠同教師端進(jìn)行實(shí)時(shí)交流聊天。而這些客戶端之間又是由服務(wù)器來進(jìn)行連接通訊的。有了這樣一款軟件,極大的方便了老師的教學(xué)任務(wù),更有利于學(xué)生及時(shí)了解學(xué)校下發(fā)的各種信息。二、系統(tǒng)開發(fā)技術(shù)2.1 基于TCP協(xié)議的Socket通信1、架構(gòu)基于TCP協(xié)議的Socket通信。架構(gòu)類似于C/S架構(gòu),一個(gè)Socket通信服務(wù)器,多個(gè)Socket通信客戶端。Socket通信服務(wù)器啟動(dòng)時(shí),會(huì)建立一個(gè)偵聽Socket,偵聽Sock
4、et主要負(fù)責(zé)監(jiān)聽數(shù)據(jù)流轉(zhuǎn),當(dāng)有數(shù)據(jù)轉(zhuǎn)入時(shí)偵聽Socket會(huì)將偵聽到的Socket連接傳給接受Socket,然后由接受Socket完成接受、發(fā)送消息,如果Socket存在異常,則連接中斷。在實(shí)際開發(fā)項(xiàng)目中,往往要求Socket通信服務(wù)器能提供高效、穩(wěn)定的服務(wù),一般會(huì)用到以下技術(shù):雙工通信、完成端口、SAEA、池、多線程、異步等。特別是池,用的比較多,“池”一般包括一下幾種:(1)、Buffer池,用于集中管控Socket緩沖區(qū),防止內(nèi)存碎片。SAEA池,用于集中管控Socket,重復(fù)利用Socket。(2)SQL池,用于分離網(wǎng)絡(luò)服務(wù)層與數(shù)據(jù)訪問層(SQL的執(zhí)行效率遠(yuǎn)遠(yuǎn)低于網(wǎng)絡(luò)層執(zhí)行效率)。(3)
5、線程池,用于從線程池中調(diào)用空閑線程執(zhí)行業(yè)務(wù)邏輯,進(jìn)一步提高網(wǎng)絡(luò)層運(yùn)行效率。圖2-1 Socket通信示意圖2、通訊主服務(wù)器的接受Socket作為一端,客戶端Socket為一端,這兩個(gè)端口通過TCP協(xié)議建立連接,通信基礎(chǔ)系統(tǒng)負(fù)責(zé)管理此連接,這種基于TCP/IP協(xié)議,并且能夠建立穩(wěn)定連接的點(diǎn)對(duì)點(diǎn)通信,它的特點(diǎn)是安全性高,穩(wěn)定性強(qiáng)且數(shù)據(jù)不會(huì)丟失。它有發(fā)送消息和接受消息兩個(gè)主要功能。 Socket的Send方法,并不是像大家想象中的從端口A發(fā)送消息到端口B這么直接,它只是把端口A中的數(shù)據(jù)轉(zhuǎn)存到基礎(chǔ)系統(tǒng)的發(fā)送緩沖區(qū),然后再由基礎(chǔ)系統(tǒng)把發(fā)送緩沖區(qū)中的數(shù)據(jù)發(fā)送到已經(jīng)連接的另一端口B。值得一說的是,這里的數(shù)據(jù)
6、轉(zhuǎn)存與同步發(fā)送消息的轉(zhuǎn)存是不一樣的,同步發(fā)送的轉(zhuǎn)存,是直接拷貝數(shù)據(jù)到基礎(chǔ)系統(tǒng)緩沖區(qū),拷貝完成后返回,在拷貝的過程中,執(zhí)行線程會(huì)IO等待。 此種拷貝與Socket自帶的Buffer空間無關(guān),但異步發(fā)送消息的轉(zhuǎn)存,是將Socket自帶的Buffer空間內(nèi)的所有數(shù)據(jù),拷貝到基礎(chǔ)系統(tǒng)發(fā)送緩沖區(qū),并立即返回,執(zhí)行線程無需IO等待。這樣一來,異步發(fā)送在處理完端口A數(shù)據(jù)開始發(fā)送之前必須執(zhí)行SetBuffer方法,拷貝完成后,會(huì)觸發(fā)你自定義回調(diào)函數(shù)ProcessSend,在ProcessSend方法中,再調(diào)用SetBuffer方法,重新初始化Buffer空間。圖2-2 Socket通信數(shù)據(jù)交互示意圖2.2 開
7、發(fā)語言本次實(shí)驗(yàn)采用C#作為開發(fā)語言,C#是一種面向?qū)ο蟮母呒?jí)程序設(shè)計(jì)語言。選擇它是因?yàn)镃#看起來與Java類似,又和C有著千絲萬縷的關(guān)系,所以對(duì)于我個(gè)人來講,主要的原因之一是技術(shù)上難點(diǎn)會(huì)小很多。C#和Java在單一繼承、接口上有相同的特點(diǎn),還有十分相似的語法,以及需要編譯成中間代碼在運(yùn)行的處理方式。但是C#與Java又有著明顯的不同,它借鑒了Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)是直接集成的,而且它是微軟公司 .NET windows網(wǎng)絡(luò)框架的主角。就目前來看,國(guó)內(nèi)大多公司均采用.NET框架,可想而知C#的能力是有多么的強(qiáng)大。C#出生于2000年7月,由微軟公司研發(fā)維護(hù),他是一種為.
8、NET框架定制語言,有著簡(jiǎn)單、全面、支持性好的特點(diǎn)并吸收了C+、Visual Basic、Delphi、Java等語言的優(yōu)點(diǎn),體現(xiàn)了當(dāng)今最新的程序設(shè)計(jì)技術(shù)的功能和精華。在語法風(fēng)格上C#繼承了C語言,同時(shí)又繼承了C+的面向?qū)ο筇匦?。不同的是,C#的對(duì)象模型已經(jīng)面向Internet進(jìn)行了重新設(shè)計(jì),使用的是.NET框架的類庫(kù);C# 移除了C語言中對(duì)“指針”數(shù)據(jù)類型的支持,使得程序不能隨便訪問內(nèi)存地址空間,從而更加穩(wěn)定;C#不再支持多重繼承,有效的避免了以往類層次結(jié)構(gòu)中由于多重繼承帶來的可怕后果,作為補(bǔ)償?shù)氖撬峁┝藢?duì)接口的支持,這樣其在功能上又很完善而且可控性更強(qiáng)。.NET框架為C#提供了一個(gè)強(qiáng)大易
9、用、邏輯結(jié)構(gòu)一致的程序設(shè)計(jì)環(huán)境。同時(shí),穩(wěn)定和安全性也是我們最為關(guān)心的。為了使程序比以往更加穩(wěn)定、安全,公共語言運(yùn)行時(shí)(Common Language Runtime)又為C#提供了一個(gè)托管的運(yùn)行時(shí)環(huán)境。其特點(diǎn)有:1、 語言規(guī)范簡(jiǎn)潔。2、 保留了C+的強(qiáng)大功能。3、 應(yīng)用開發(fā)效率高。4、 語言自由性高。5、 強(qiáng)大豐富的Web服務(wù)器組件。6、 支持跨平臺(tái)。7、 與XML相融合。8、 應(yīng)用廣泛較主流,有微軟的技術(shù)支持。2.3 數(shù)據(jù)傳輸網(wǎng)絡(luò)軟件,離不開數(shù)據(jù)傳輸,在這里,我們采用JSON格式作為數(shù)據(jù)傳輸協(xié)議。JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,這種
10、純文本的數(shù)據(jù)格式不依賴于系統(tǒng),更能夠滿足各種主流編程語言的需求。 JSON 可以將 JavaScript 對(duì)象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后只需在函數(shù)之間傳遞這個(gè)字符串,或者在異步應(yīng)用程序中將字符串從 Web 客戶機(jī)傳遞給服務(wù)器端程序,得到數(shù)據(jù)后程序可以很容易的進(jìn)行解析。這個(gè)字符串如果站在開發(fā)者角度理解起來不是很直觀,他不像XML一樣結(jié)構(gòu)清晰標(biāo)簽明確,但是 JavaScript 很容易解釋它,消耗資源更少,而且因?yàn)榻Y(jié)構(gòu)精簡(jiǎn),他的體積也是適中的,在網(wǎng)絡(luò)數(shù)據(jù)傳輸上有著極大的優(yōu)勢(shì)。 JSON雖然結(jié)構(gòu)精簡(jiǎn)但他卻可以表示比鍵、值對(duì)更復(fù)雜的結(jié)構(gòu)。它可以表示數(shù)組和復(fù)雜的對(duì)象,而不僅僅是鍵和值的簡(jiǎn)單列表。
11、因此JSON 作為傳輸數(shù)據(jù)庫(kù)的記錄類型得到廣泛的應(yīng)用,在本次項(xiàng)目中自然而然的采用了。下圖為直接返回 JSON 運(yùn)行模式。圖2-3 JSON格式數(shù)據(jù)生成與解析示意圖目前作為移動(dòng)終端,采用這種輕量級(jí)的文本格式進(jìn)行數(shù)據(jù)傳輸,在傳輸速率和消耗資源上都比其他文本格式有優(yōu)勢(shì)。在這里有一點(diǎn)需要說明,考慮到數(shù)據(jù)輕量以及安全性,還應(yīng)當(dāng)對(duì)數(shù)據(jù)進(jìn)行加密壓縮等處理,在本項(xiàng)目中,因?yàn)闀r(shí)間和技術(shù)上的原因,暫時(shí)沒有做上述處理,這方面還有待加強(qiáng)。2.4 Android開發(fā)在Google及其開放手機(jī)聯(lián)盟推出基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)Android之后,Google又不惜重金舉辦了Android開發(fā)者大賽,吸引了眾多開
12、發(fā)者。Android功能強(qiáng)大,最主要的是其開放性,開發(fā)商可以方便的進(jìn)行定制開發(fā)并且不用付出高額的版權(quán)費(fèi)用,這對(duì)于開發(fā)上來說很有吸引力。全球范圍內(nèi)的電信行業(yè)、手機(jī)制造商因此毫不猶豫地加入到Android開放手機(jī)聯(lián)盟中來。更多的移動(dòng)設(shè)備廠商看到了Android的光明前景,并紛紛加入其中,Android甚至已經(jīng)涉足上網(wǎng)本市場(chǎng)。Android端(客戶端)的主要功能是數(shù)據(jù)的展示,其中需要從服務(wù)器端下載數(shù)據(jù)到本地,本地經(jīng)過數(shù)據(jù)分析后進(jìn)行業(yè)務(wù)處理,最后按照一定的呈現(xiàn)方式綁定到UI界面上。三、系統(tǒng)分析3.1 需求分析3.1.1 引言“需求分析”,就是對(duì)需要解決的問題進(jìn)行詳細(xì)分析,弄清楚需要解決的問題。開發(fā)人員
13、需要了解自己做什么,顧客需要告訴開發(fā)人員自己需要什么,而需求分析就是連接開發(fā)人員和顧客之間的重要紐帶。只有真正理解顧客的需求,才能設(shè)計(jì)出顧客所需要的軟件,開發(fā)成本設(shè)定和掌控上也會(huì)事半功倍。 “磨刀不誤砍柴工”,只有真正理解了顧客的需求,才能順利開發(fā)出顧客真正需要的產(chǎn)品,如果忽略需求分析只專注于開發(fā)進(jìn)度,很可能造成南轅北轍,讓開發(fā)變得毫無意義。需求分析為軟件的開發(fā)起到了決策的作用,提供了開發(fā)的方向,并指明了開發(fā)的策略,在軟件開發(fā)及維護(hù)中均起到了舉足輕重的作用。 建設(shè)目標(biāo)旨在于通過這次調(diào)研能夠讓高校日常教學(xué)實(shí)現(xiàn)信息化管理,方便教師與學(xué)生之間的共同和日常教學(xué)活動(dòng)方便高效的實(shí)施。實(shí)現(xiàn):班主任能夠準(zhǔn)確下
14、發(fā)學(xué)校公告信息到學(xué)生,學(xué)生對(duì)公告信息有不理解可以通過本軟件單獨(dú)方便的向老師咨詢,以免錯(cuò)重要信息。3.1.3 建設(shè)內(nèi)容1、 移動(dòng)終端軟件移動(dòng)終端軟件,是基于Android移動(dòng)操作系統(tǒng)開發(fā),可以安裝到手機(jī)、平板電腦上的一款終端軟件,軟件開發(fā)完畢后,提供給在校學(xué)生和教師,同時(shí)提供對(duì)應(yīng)的用戶名、密碼,用戶可以通過本軟件,進(jìn)行相關(guān)的信息發(fā)送和反饋,并可以進(jìn)行實(shí)時(shí)聊天,通過賬號(hào)管理,用戶可以查看歷史發(fā)送和接受的信息。2、 移動(dòng)數(shù)據(jù)網(wǎng)關(guān)接口移動(dòng)數(shù)據(jù)網(wǎng)關(guān)接口,是連接服務(wù)端和移動(dòng)終端軟件的橋梁,移動(dòng)終端向服務(wù)端發(fā)送的請(qǐng)求通過網(wǎng)關(guān)接口轉(zhuǎn)達(dá)到服務(wù)端,服務(wù)端響應(yīng)請(qǐng)求并做出數(shù)據(jù)的處理,然后通過網(wǎng)管接口返回給移動(dòng)終端響應(yīng)
15、的數(shù)據(jù)。3、 移動(dòng)終端與數(shù)據(jù)網(wǎng)關(guān)后臺(tái)服務(wù)后臺(tái)服務(wù)主要負(fù)責(zé)對(duì)客戶端請(qǐng)求的響應(yīng),包括數(shù)據(jù)邏輯處理,數(shù)據(jù)庫(kù)的讀取,和移動(dòng)終端操作的記錄顯示。3.1.4 解決方案以3G無線網(wǎng)絡(luò)為數(shù)據(jù)傳輸媒介,基于智能移動(dòng)終端設(shè)備,定制開發(fā)專門的移動(dòng)終端軟件,對(duì)在校學(xué)生和教師提供移動(dòng)方式的班級(jí)管理、信息發(fā)送和即時(shí)聊天的專業(yè)應(yīng)用與服務(wù)?;竟ぷ鬟\(yùn)行模式如下:圖3-1 系統(tǒng)框架1、 教師端:發(fā)送重要信息給學(xué)生,在程序里還提供了教師用戶選擇自己所帶班級(jí)下哪一些學(xué)生進(jìn)行發(fā)送;必要的還需要提供教師用戶管理班級(jí):增加班級(jí)、刪除班級(jí)、修改班級(jí)信息、增刪班級(jí)人員以及班級(jí)人員的管理。2、 學(xué)生端:接受教師發(fā)送的信息;必要的還需提供學(xué)生用
16、戶修改個(gè)人信息。其中:學(xué)生可以和教師實(shí)時(shí)聊天,鑒于時(shí)間較短為了簡(jiǎn)化難度本次實(shí)驗(yàn)功能提供教師和學(xué)生之間的實(shí)時(shí)聊天。3.1.5 用例分析根據(jù)需求描述中的兩個(gè)角色,包含教師和學(xué)生,教師操作較多,學(xué)生相對(duì)較少。老師可以對(duì)向?qū)W生發(fā)送通知(可以選擇具體接收對(duì)象),可以查看看學(xué)生對(duì)信息的反饋;對(duì)于歷史通知老師還可以查看已發(fā)送的通知(可以按時(shí)間和重要程度進(jìn)行篩選),可以刪除歷史通知以此來管理個(gè)人信息。學(xué)生則可以查看老師發(fā)送的通知,還可以對(duì)這條通知進(jìn)行反饋。當(dāng)學(xué)生對(duì)接收到的通知不理解時(shí),這款軟件還提供了實(shí)時(shí)聊天的功能。這里我們采用賬號(hào)進(jìn)行用戶和權(quán)限的管理,所有數(shù)據(jù)都存在于服務(wù)器數(shù)據(jù)庫(kù),即便用戶更換設(shè)備也不會(huì)發(fā)生
17、歷史數(shù)據(jù)丟失的情況。各個(gè)操作以及關(guān)系可以詳見下面的用例圖:圖3-2 用例圖3.2 系統(tǒng)分析根據(jù)調(diào)研后的需求分析,本軟件需要提供:1、 老師:向?qū)W生發(fā)布信息、管理班級(jí)成員、查看歷史發(fā)布的信息、查詢歷史發(fā)布的信息、發(fā)布?xì)v史的管理等功能模塊;2、 學(xué)生:查看收到的信息、查看信息后的反饋。3.2.1 系統(tǒng)功能結(jié)構(gòu)圖3-3 系統(tǒng)功能結(jié)構(gòu)1、 發(fā)布通知管理員用戶(班主任)發(fā)布一條信息,可以選擇接受對(duì)象,設(shè)定信息屬性。2、 查看信息管理員用戶(班主任)可以查看發(fā)送過的某一條信息的具體內(nèi)容、重要級(jí)別、發(fā)送到哪些學(xué)生、學(xué)生的讀取情況等信息。3、 查詢信息管理員用戶(班主任)可以按需求篩選當(dāng)前顯示哪些已發(fā)送的信息
18、,篩選規(guī)則包括按時(shí)間段顯示、按重要級(jí)別顯示。4、 賬號(hào)管理管理員用戶(班主任)可以給自己所帶班級(jí)下的學(xué)生分配帳號(hào)和密碼用于登錄,也可以修改自己的基本信息。5、 成員管理管理員用戶(班主任)可以管理班級(jí)下的學(xué)生,添加一個(gè)學(xué)生、刪除一個(gè)學(xué)生。6、 學(xué)生查看信息學(xué)生查看老師發(fā)過來的通知,學(xué)生閱讀后,自動(dòng)記錄到信息的屬性中標(biāo)為已讀,便于教師篩選。7、 反饋信息學(xué)生看到信息有疑問或有意見的可以向教師給予反饋。 編制流程整個(gè)系統(tǒng)遵守用戶界面美觀大方,操作簡(jiǎn)捷,盡可能將簡(jiǎn)單、明了的界面展現(xiàn)給用戶,用戶只需要簡(jiǎn)單地點(diǎn)擊相關(guān)操作按鈕即可以完成相關(guān)復(fù)雜的數(shù)據(jù)處理過程。考慮到客戶端硬件配置不如PC且用戶體驗(yàn)是移動(dòng)應(yīng)
19、用較為重要的指標(biāo),所以數(shù)據(jù)邏輯處理盡量在服務(wù)端,而移動(dòng)端只需要將數(shù)據(jù)呈現(xiàn)即可。系統(tǒng)整體流程結(jié)構(gòu)圖服務(wù)端:YNY開始監(jiān)聽客戶端請(qǐng)求按照約定進(jìn)行邏輯判斷讀取數(shù)據(jù)庫(kù),獲得數(shù)據(jù)判斷請(qǐng)求參數(shù)是否符合約定N將讀取的數(shù)據(jù)轉(zhuǎn)換成Json格式傳回客戶端結(jié)束是否退出打服務(wù)端口圖3-4 系統(tǒng)邏輯流程圖客戶端:整個(gè)系統(tǒng)遵守用戶界面美觀大方,操作簡(jiǎn)捷,后臺(tái)管理易于操作,盡量減少格式化錄入數(shù)據(jù)的要求,盡可能將簡(jiǎn)單、明了的界面展現(xiàn)給用戶,用戶只需要簡(jiǎn)單地點(diǎn)擊相關(guān)操作按鈕即可以完成相關(guān)復(fù)雜的數(shù)據(jù)處理過程,如圖所示。輸入賬號(hào)密碼登錄進(jìn)入首頁,查看歷史記錄管理班級(jí)/成員發(fā)布通知與學(xué)生進(jìn)行實(shí)時(shí)聊天圖3-5 客戶端設(shè)計(jì)示意四、數(shù)據(jù)庫(kù)
20、設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)說明:數(shù)據(jù)庫(kù)采用Microsoft SQL Server 2005。SQL Server 2005是一個(gè)全面的數(shù)據(jù)庫(kù)平臺(tái),使用集成的商業(yè)智能 (BI)工具提供了企業(yè)級(jí)的數(shù)據(jù)管理。SQL Server 2005數(shù)據(jù)庫(kù)引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲(chǔ)功能,使您可以構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)應(yīng)用程序。SQL Server 2005 數(shù)據(jù)引擎是該企業(yè)數(shù)據(jù)管理解決方案的核心。此外,它還集成了分析、報(bào)表、集成和通知功能。SQL Server 2005 是SQL Server 2000的升級(jí)版,最為一款主流數(shù)據(jù)庫(kù)管理引擎,05版延續(xù)了00版的易操作性這樣使得用戶
21、可以很方便過度到新版本,體驗(yàn)新版本提供的優(yōu)秀功能。4.1 表命名規(guī)則1、 表命名時(shí),采用26個(gè)英文字母(區(qū)分大小寫)和0 9這十個(gè)自然數(shù),加上下劃線_組成,共63個(gè)字符。不能出現(xiàn)其它字符(注釋除外)。2、 表名用模塊英文命名模塊名,可以是英文單詞也可以是漢字的拼音首字母。例如:userinfo(用戶信息)3、 字段命名規(guī)則,字段名用英語單詞簡(jiǎn)寫,或?qū)I(yè)術(shù)語填寫。例如:cid(班級(jí)編號(hào))4.2 表清單表4-1數(shù)據(jù)庫(kù)表清單表名功能說明userinfo用戶表,記錄人員信息表,用戶名和密碼,權(quán)限classinfo班級(jí)表,記錄班級(jí)信息。classmember班級(jí)成員表,關(guān)聯(lián)用戶表和班級(jí)表,并表明班級(jí)成員
22、角色notice信息表,記錄通知信息,發(fā)送者、類別等nticeinfo信息狀態(tài)表:記錄信息發(fā)送到的班級(jí)、接受者ID和是否已讀等4.3 表關(guān)系圖4-1 表關(guān)系圖4.4 邏輯設(shè)計(jì)本系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì):1、 用戶表:記錄人員信息、用戶名、密碼和權(quán)限等表4-2 用戶表設(shè)計(jì)字段名稱數(shù)據(jù)類型說明pidINTEGER用戶編號(hào),主鍵numINTEGER用戶登錄帳號(hào)passwordNVARCHAR用戶登錄密碼permissionINTEGER用戶身份,1代表老師,0代表學(xué)生nameNVARCHAR用戶姓名phonenumNVARCHAR電話號(hào)碼emailNVARCHAR常用郵箱地址addrNVARCHAR住址cl
23、ientidNVARCHAR客戶端編號(hào)2、 班級(jí)表:記錄班級(jí)信息表4-3 班級(jí)表設(shè)計(jì)字段名稱數(shù)據(jù)類型說明cidINTEGER班級(jí)編號(hào),主鍵cnameNVARCHAR班級(jí)名稱3、 班級(jí)成員表:關(guān)聯(lián)用于表和班級(jí)表,并表明班級(jí)成員角色表4-4 班級(jí)成員表設(shè)計(jì)字段名稱數(shù)據(jù)類型說明cidINTEGER班級(jí)編號(hào),外鍵:班級(jí)表cidpidINTEGER班級(jí)成員人員編號(hào),外鍵:人員表pididentitINTEGER班級(jí)成員身份,1:管理員,0:普通成員4、 信息表:記錄通知信息、發(fā)送者、信息類別等表4-5 信息表設(shè)計(jì)字段名稱數(shù)據(jù)類型說明midINTEGER通知的編號(hào)cidINTEGER班級(jí)編號(hào),記錄這條信息
24、發(fā)送到哪個(gè)班,外鍵:班級(jí)表cidpidINTEGER發(fā)送者編號(hào),外鍵:用戶表pidimportantBOOLEAN重要性,true代表重要,false代表普通titleNVARCHAR通知標(biāo)題msgTEXT通知內(nèi)容timeDATETIME通知發(fā)送時(shí)間5、 信息狀態(tài)表:記錄信息發(fā)送到的班級(jí)、接受者編號(hào)和是否信息是否已讀表4-6 信息狀態(tài)表設(shè)計(jì)字段名稱數(shù)據(jù)類型說明midINTEGER通知編號(hào),外鍵:信息表midcidINTEGER班級(jí)編號(hào),外鍵:班級(jí)表cidrecvINTEGER接受者編號(hào),外鍵:用戶表pidisreadBOOLEAN是否已讀,true代表已讀,false代表為徒feedbackT
25、EXT接受者對(duì)這條通知的反饋五、系統(tǒng)實(shí)現(xiàn)過程5.1 開發(fā)平臺(tái)由于系統(tǒng)采用目前比較流行的工具開發(fā),所以整個(gè)軟件的技術(shù)比較先進(jìn)。針對(duì)目前,整個(gè)軟件開發(fā)所需的環(huán)境如下:操作系統(tǒng):windows2003及更高版本開發(fā)工具:Visual Studio 2010(Visual C#)及更高版本數(shù)據(jù)庫(kù):MS Sql Server2005及更高版本客戶端:Eclipse5.2 系統(tǒng)框架1、客戶端:圖5-1 客戶端系統(tǒng)物理構(gòu)成主要模塊說明:(1)、添加一個(gè)班級(jí)。(2)、添加班級(jí)成員。(聊天界面的設(shè)計(jì)和功能的設(shè)計(jì)。(4)、通知界面,主要負(fù)責(zé)歷史通知的查詢篩選和刪除,和查看通知的引導(dǎo)。(5)、SocketClien
26、t.java網(wǎng)絡(luò)交互模塊,主要負(fù)責(zé)網(wǎng)絡(luò)鏈接中必要的參數(shù)處理和發(fā)送請(qǐng)求Json的設(shè)定。2、服務(wù)端:服務(wù)端系統(tǒng)主要分為兩大部分:前臺(tái)顯示和后臺(tái)管理。前臺(tái)顯示:記錄并展示用戶操作日志。后臺(tái):邏輯處理和響應(yīng)客戶端請(qǐng)求。系統(tǒng)框架如下圖所示:圖5-2 服務(wù)端系統(tǒng)物理構(gòu)成主要模塊說明:(1)、DBHelper.cs:數(shù)據(jù)庫(kù)管理器,主要負(fù)責(zé)鏈接數(shù)據(jù)庫(kù)的連接;(2)、LogonResponseManager.cs:用戶登錄管理器,主要負(fù)責(zé)用戶登錄請(qǐng)求的相應(yīng),校驗(yàn)用戶名和密碼以及相關(guān)操作;(3)、Program.cs:主要負(fù)責(zé)Socket鏈接配置;:發(fā)送相應(yīng)管理器,主要負(fù)責(zé)向控制窗口打印用戶操作日志;:主要負(fù)責(zé)業(yè)
27、務(wù)邏輯處理;:Socket請(qǐng)求參數(shù)集;:Socket響應(yīng)參數(shù)集。5.3 系統(tǒng)實(shí)現(xiàn) 前臺(tái)展示前臺(tái)主要負(fù)責(zé)展示用戶操作日志,下面是幾個(gè)主要操作的展示:1、 服務(wù)器啟動(dòng):圖5-3 服務(wù)器啟動(dòng)圖5-4 處理用戶登錄請(qǐng)求2、 處理獲取通知請(qǐng)求:圖5-5 處理教師用戶獲取歷史通知 客戶端程序整體設(shè)計(jì)理念1、 用戶體驗(yàn)度處理:客戶端數(shù)據(jù)處理采用實(shí)時(shí)數(shù)據(jù)的方式,因?yàn)榧夹g(shù)和時(shí)間上的關(guān)系,客戶端的數(shù)據(jù)并沒有做本地緩存處理。當(dāng)用登陸系統(tǒng)后,系統(tǒng)會(huì)直接下載歷史數(shù)據(jù)并綁定到UI上。為了增加軟件友好度,我們?cè)跀?shù)據(jù)下載上利用了線程處理的方式。在加載網(wǎng)絡(luò)數(shù)據(jù)的過程中用戶并不能也沒有必要看到數(shù)據(jù)加載的每一步實(shí)現(xiàn),所以為了避免程
28、序假死,我們?cè)谔幚肀容^耗時(shí)的功能都是放在子線程里實(shí)現(xiàn),UI線程會(huì)展現(xiàn)一個(gè)等待對(duì)話框,這樣用戶在等待耗時(shí)操作時(shí)不會(huì)覺得無聊。2、 功能設(shè)計(jì)原則:在功能設(shè)計(jì)上,需要充分考慮用戶使用感受,整個(gè)系統(tǒng)功能比較多,不過這些功能我們都劃分出了幾個(gè)模塊,每個(gè)模塊里包含了相關(guān)的功能,各個(gè)模塊具有較低的耦合度,這樣的設(shè)計(jì)符合 服務(wù)端程序整體設(shè)計(jì)理念服務(wù)端數(shù)據(jù)處理需要精簡(jiǎn)運(yùn)算頻率,處理客戶端請(qǐng)求需要訪問數(shù)據(jù)庫(kù),雖然服務(wù)端程序運(yùn)行在PC機(jī)上,相對(duì)于移動(dòng)端其數(shù)據(jù)處理能力要好上很多,但是為了應(yīng)付并發(fā)請(qǐng)求,對(duì)于壓力較大的服務(wù)器來說在處理數(shù)據(jù)時(shí)還是需要精簡(jiǎn)步驟,用最簡(jiǎn)單的處理方式來處理復(fù)雜的計(jì)算或數(shù)據(jù)查詢。因?yàn)榉?wù)端在對(duì)數(shù)據(jù)
29、庫(kù)進(jìn)行操作時(shí)消耗的系統(tǒng)資源相對(duì)較大,我們?cè)谔幚頂?shù)據(jù)庫(kù)查詢時(shí)只查詢需要的字段,忽略當(dāng)次請(qǐng)求無需的字段,這樣盡可能的減少資源消耗。 業(yè)務(wù)邏輯處理流程說明:這里列舉一些基本的業(yè)務(wù)邏輯處理流程1、 啟動(dòng)服務(wù)器:開始加載套接字庫(kù),創(chuàng)建套接字結(jié)束綁定套接字到一個(gè)IP地址和一個(gè)端口上將套接字設(shè)置為監(jiān)聽模式,等待連接請(qǐng)求向控制臺(tái)打印出“服務(wù)器啟動(dòng)”字樣圖5-6 服務(wù)啟動(dòng)流程圖2、 用戶登錄請(qǐng)求的處理:當(dāng)客戶端用戶登錄后,會(huì)向服務(wù)端發(fā)送用戶名和密碼校驗(yàn)請(qǐng)求,服務(wù)端監(jiān)聽到請(qǐng)求后獲取客戶端請(qǐng)求參數(shù)(用戶名、密碼和用戶身份)進(jìn)行校驗(yàn)傳入?yún)?shù)是否有效:YN開始監(jiān)聽到客戶端的請(qǐng)求結(jié)束獲得客戶端傳入的用戶名密碼鏈接數(shù)據(jù)庫(kù)進(jìn)行用戶名密碼校驗(yàn)向控制臺(tái)打印“XXX用戶登錄”用戶名密碼正確返回用戶登錄成功,并返回登錄此用戶信息返回用戶登錄失敗向控制臺(tái)打印“XXX登錄失敗”圖5-7 處理登錄請(qǐng)求流程圖其中:校驗(yàn)用戶名和密碼,實(shí)現(xiàn)方式如下:N開始打開數(shù)據(jù)庫(kù)連接結(jié)束根據(jù)用戶名和密碼進(jìn)行數(shù)據(jù)庫(kù)查詢根據(jù)查詢條件,獲得的數(shù)據(jù)存在Y返回此用戶存在返回此用戶不存在圖5-8 校驗(yàn)用戶名密碼流程圖3、 處理客戶端請(qǐng)求:說明:這里只說明“教師用戶獲取發(fā)送過的通知”一個(gè)請(qǐng)求的實(shí)現(xiàn),用來作為請(qǐng)求標(biāo)識(shí),這里需要根據(jù)來判斷客戶端發(fā)出的是哪一個(gè)請(qǐng)求。(具體請(qǐng)求消息的介紹參閱下文“數(shù)據(jù)交互流程”中的說明)YYN開始取得傳入的請(qǐng)求參數(shù)結(jié)束取得參數(shù):請(qǐng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)庫(kù)擴(kuò)大補(bǔ)充協(xié)議書
- 第9課-2023-2024學(xué)年初中信息技術(shù)七年級(jí)上冊(cè)(人教版)-說課稿-制作電子表格
- 變更扶養(yǎng)協(xié)議書
- 北京房屋租賃合同2008
- 防火應(yīng)急疏散演練幼兒園
- 天津市南開區(qū)2024-2025學(xué)年高一上學(xué)期11月期中考試語文試題(含答案)
- 遼寧省錦州市某校2024-2025學(xué)年高二上學(xué)期期中質(zhì)量檢測(cè)英語試卷(無答案)
- 糖尿病的演講
- 《纖維繩索彎曲疲勞試驗(yàn)方法》
- 飼料級(jí)磷酸鹽相關(guān)項(xiàng)目投資計(jì)劃書范本
- 北師大版七年級(jí)生物上冊(cè)教案(全冊(cè)完整版)
- 家禽常見用藥的技巧課件
- 防腐油漆施工工藝
- 南方S82T操作手冊(cè)
- 設(shè)備采購(gòu)安裝工程結(jié)算書
- [精品]臺(tái)灣地區(qū)零售藥店的現(xiàn)狀與發(fā)展趨勢(shì)
- 焙燒爐煙氣換熱器的設(shè)計(jì)方案
- 中學(xué)語文學(xué)科課改實(shí)驗(yàn)匯報(bào)材料
- 血漿置換及臨床的應(yīng)用業(yè)內(nèi)特制
- 雨蝶(李翊君)原版正譜鋼琴譜五線譜樂譜.docx
- 綜合實(shí)踐活動(dòng)五年級(jí)下冊(cè)課件-制作木蜻蜓14張ppt課件
評(píng)論
0/150
提交評(píng)論