鋼琴網(wǎng)系統(tǒng)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  鋼琴網(wǎng)系統(tǒng)</b></p><p><b>  目 錄</b></p><p><b>  1 引言2</b></p><p>  1.1 設(shè)計(jì)背景2</p><p>  1.2 現(xiàn)狀分析3</p><p>  1.3

2、 實(shí)現(xiàn)功能3</p><p>  2 確定開(kāi)發(fā)環(huán)境4</p><p>  2.1 語(yǔ)言環(huán)境4</p><p>  2.2 開(kāi)發(fā)框架4</p><p>  2.3 開(kāi)發(fā)環(huán)境5</p><p>  2.3.1 語(yǔ)言環(huán)境、數(shù)據(jù)庫(kù)、服務(wù)器5</p><p>  2.3.2 symfony框架

3、環(huán)境6</p><p>  3 系 統(tǒng) 概 述8</p><p>  3.1 鋼琴網(wǎng)系統(tǒng)的作用8</p><p>  3.2鋼琴網(wǎng)系統(tǒng)設(shè)計(jì)思想8</p><p>  3.3 鋼琴網(wǎng)系統(tǒng)存在的問(wèn)題現(xiàn)狀9</p><p>  4 需 求 分 析10</p><p>  4.1 現(xiàn)狀分析

4、10</p><p>  4.2 系統(tǒng)的結(jié)構(gòu)10</p><p>  4.3 技術(shù)要求11</p><p>  4.4 運(yùn)行環(huán)境11</p><p>  5 鋼琴網(wǎng)系統(tǒng)設(shè)計(jì)12</p><p>  5.1鋼琴網(wǎng)系統(tǒng)結(jié)構(gòu)功能12</p><p>  5.2 網(wǎng)站結(jié)構(gòu)12</p&g

5、t;<p>  5.3數(shù)據(jù)庫(kù)的分析與設(shè)計(jì)14</p><p>  5.4 主要功能模塊14</p><p>  5.5鋼琴網(wǎng)系統(tǒng)實(shí)現(xiàn)15</p><p>  5.5.1 系統(tǒng)結(jié)構(gòu)15</p><p>  5.5.2 開(kāi)發(fā)工具15</p><p>  6 具體設(shè)計(jì)及實(shí)現(xiàn)16</p>

6、<p>  6.1系統(tǒng)用戶(hù)瀏覽模塊實(shí)現(xiàn)16</p><p>  6.2 用戶(hù)注冊(cè)、登錄和權(quán)限管理的實(shí)現(xiàn)18</p><p>  6.2.1登錄模塊18</p><p>  6.2.2注冊(cè)頁(yè)面19</p><p>  6.3實(shí)現(xiàn)用戶(hù)發(fā)布信息功能模塊19</p><p>  6.4系統(tǒng)運(yùn)行截圖19

7、</p><p>  6.4.1鋼琴網(wǎng)系統(tǒng)登錄界面19</p><p>  6.4.2考試系統(tǒng)考試主界面20</p><p>  6.4.3用戶(hù)瀏覽新聞、琴行等界面21</p><p>  6.3.4用戶(hù)提交信息界面22</p><p>  6.4.5后臺(tái)管理界面22</p><p>

8、  6.4.6查詢(xún)及結(jié)果界面23</p><p>  7 系統(tǒng)測(cè)試與調(diào)試23</p><p>  7.1 測(cè)試目的及任務(wù)23</p><p>  7.2 測(cè)試方法23</p><p>  7.3 系統(tǒng)調(diào)試23</p><p>  7.3.1 系統(tǒng)調(diào)試的常用方法23</p><p> 

9、 8 結(jié)果與分析24</p><p><b>  9 致 謝25</b></p><p>  10 參考文獻(xiàn)26</p><p><b>  11 附錄27</b></p><p><b>  1 引言</b></p><p>  互聯(lián)網(wǎng)現(xiàn)已成

10、為我們生活中不可缺少的部分,網(wǎng)絡(luò)以其無(wú)可比擬的時(shí)效性和廉價(jià)性吸引了無(wú)數(shù)商家的眼球?,F(xiàn)代商務(wù)網(wǎng)絡(luò)已經(jīng)成為必不可少的一種產(chǎn)品宣傳的方式。但是公司性的網(wǎng)站只是單純的產(chǎn)品展示,會(huì)讓用戶(hù)很難了解到除產(chǎn)品以外的其他信息,例如用戶(hù)在選擇產(chǎn)品的時(shí)候想知道大眾的意向,想在線和其他人交流,產(chǎn)品行業(yè)的最新動(dòng)態(tài)等,用戶(hù)想了解這些不得不轉(zhuǎn)向其他的網(wǎng)站瀏覽,這樣就大大降低了網(wǎng)站本身的商業(yè)價(jià)值。所以我這里將產(chǎn)品展示、用戶(hù)發(fā)布、瀏覽相關(guān)信息、用戶(hù)交流等都融合在鋼琴網(wǎng)系

11、統(tǒng)里。</p><p>  隨著計(jì)算機(jī)及其網(wǎng)絡(luò)技術(shù)的飛速發(fā)展和社會(huì)信息化水平的不斷提高,計(jì)算機(jī)在教育測(cè)量和評(píng)價(jià)過(guò)程也得到了廣泛的應(yīng)用。Internet正是順應(yīng)著這一新的趨勢(shì),以舉火燎原之勢(shì)席卷全球,深入人們生產(chǎn)生活的各個(gè)發(fā)面。與傳統(tǒng)產(chǎn)品展示系統(tǒng)相比,讓用戶(hù)可以發(fā)布自己的信息,一方面用戶(hù)可以得到經(jīng)濟(jì)上的回報(bào),另一方面直接的幫助了網(wǎng)站管理員豐富了網(wǎng)站的內(nèi)容。通過(guò)鋼琴網(wǎng)系統(tǒng),用戶(hù)可以直接通過(guò)瀏覽網(wǎng)站了解到最新的鋼琴價(jià)格

12、、琴行信息、自己所在地區(qū)的培訓(xùn)信息、鋼琴相關(guān)的服務(wù)信息,當(dāng)然用戶(hù)也可以發(fā)布自己的商業(yè)信息,這樣網(wǎng)站就不僅僅具有產(chǎn)品展示的商業(yè)價(jià)值,用戶(hù)也可以了解到更多相關(guān)的產(chǎn)業(yè)信息,在線交流分享自己的見(jiàn)解。這樣鋼琴網(wǎng)相比于普通的商業(yè)網(wǎng)站將更加具有用戶(hù)黏度,更加能吸引用戶(hù)的使用,網(wǎng)站本身的商業(yè)價(jià)值也將的到提升。</p><p><b>  1.1 設(shè)計(jì)背景</b></p><p>  

13、背景故事:王先生家住在武昌,工作穩(wěn)定,家庭幸福。最近王先生和妻子達(dá)成共識(shí),決定讓6歲的女兒練習(xí)鋼琴,于是準(zhǔn)備給女兒買(mǎi)一架鋼琴供女兒練習(xí)。王先生在網(wǎng)上搜索了一下,大多與鋼琴相關(guān)的信息都是一些商業(yè)性的宣傳網(wǎng)站,只有鋼琴的宣傳信息,覺(jué)得宣傳的意味太重,鋼琴的價(jià)格在中國(guó)也不算小數(shù)目,要買(mǎi)當(dāng)然要謹(jǐn)慎。于是不得不向熟人打聽(tīng),求助。到琴行買(mǎi)了鋼琴后,才發(fā)現(xiàn)要找搬家公司搬運(yùn)剛鋼琴,而琴行附帶的搬運(yùn)服務(wù)價(jià)格又很貴,于是不得不請(qǐng)琴行的搬運(yùn)車(chē)將鋼琴運(yùn)回家。鋼

14、琴買(mǎi)回家后,需要聯(lián)系女兒的鋼琴老師,在浩如煙海的培訓(xùn)信息中想找到自己新人的培訓(xùn)信息可不簡(jiǎn)單,于是王先生花了整整一天的休息時(shí)間找來(lái)了鋼琴老師。女兒練琴還沒(méi)幾天,老師就反映鋼琴的音律有問(wèn)題,需要調(diào)律,于是又上網(wǎng)尋找鋼琴調(diào)律師。女兒練了半年,王先生覺(jué)得女兒很反感練習(xí)鋼琴,王先生和妻子也不愿意強(qiáng)迫孩子,于是花了上萬(wàn)元的鋼琴閑置在家。綜合一下,王先生從想給女兒買(mǎi)鋼琴開(kāi)始就面臨一系列的問(wèn)題:1.選擇合適的鋼琴,包括價(jià)格、品牌(涉及模塊:鋼琴選購(gòu)、琴

15、行信息);2.了解行業(yè)信息,例如了解品牌的行業(yè)口碑、性能等(涉及模塊:行業(yè)新聞、鋼琴選購(gòu)、用戶(hù)評(píng)價(jià)、留言等);3.決定買(mǎi)</p><p><b>  1.2 現(xiàn)狀分析</b></p><p>  目前國(guó)內(nèi)樂(lè)器市場(chǎng)潛力巨大,而鋼琴素有樂(lè)器之王的美稱(chēng),它作為一種高檔、優(yōu)雅的樂(lè)器自然受到大眾的追捧,銷(xiāo)售鋼琴所產(chǎn)生的商業(yè)利益也很大,商家也都在不遺余力的宣傳。商家所選擇的宣傳平

16、臺(tái)主要是自己企業(yè)的網(wǎng)站,這樣的宣傳成本低,維護(hù)難度相對(duì)較小,但是對(duì)于用戶(hù)的需求卻得不到滿(mǎn)足。用戶(hù)在涉足樂(lè)器這個(gè)行業(yè)的時(shí)候就像了解更多的相關(guān)信息,而學(xué)習(xí)的過(guò)程就是不斷的了解行業(yè)信息,和網(wǎng)友交流,觀察大眾的評(píng)價(jià)等等。所以我認(rèn)為可以將宣傳重點(diǎn)放在用戶(hù)的需求上,用戶(hù)在瀏覽宣傳資料的同時(shí)能夠自我成長(zhǎng),注重用戶(hù)的需求才是網(wǎng)站的生存之道,也是網(wǎng)站能不能實(shí)現(xiàn)商業(yè)價(jià)值的重要體現(xiàn)。因此我將鋼琴網(wǎng)的定位定位在門(mén)戶(hù)性質(zhì)的鋼琴網(wǎng)站,整合各種信息于一體,滿(mǎn)足用戶(hù)的

17、需求,甚至還可以擴(kuò)展到所有樂(lè)器的銷(xiāo)售宣傳和用戶(hù)交流。</p><p><b>  1.3 實(shí)現(xiàn)功能</b></p><p>  1.用戶(hù)瀏覽各種信息,包括鋼琴的選購(gòu)、行業(yè)新聞、服務(wù)信息、培訓(xùn)信息、琴行信息等等;</p><p>  2.用戶(hù)注冊(cè)成為注冊(cè)用戶(hù)(包括個(gè)人用戶(hù)和企業(yè)用戶(hù));</p><p>  3.注冊(cè)用戶(hù)發(fā)布

18、和管理(更新、刪除)自己發(fā)布的信息;</p><p>  4.用戶(hù)搜索想找自己想要的鋼琴(鋼琴搜索);</p><p>  5.按不同的需求選擇鋼琴(價(jià)格、型號(hào)、品牌等)</p><p>  6.管理員管理用戶(hù),授予用戶(hù)不同的權(quán)限;</p><p>  7. 上傳文件時(shí)重命名文件名(“當(dāng)前時(shí)間”+“_文件名”)sfValidatorFile類(lèi)

19、中修改generateFilename()方法;</p><p>  8.刪除物理文件;在刪除數(shù)據(jù)庫(kù)記錄的同時(shí)刪除服務(wù)器文件夾中的對(duì)應(yīng)物理文件</p><p>  9.管理員審核用戶(hù)發(fā)布的消息,更新網(wǎng)站內(nèi)容;</p><p><b>  2 確定開(kāi)發(fā)環(huán)境</b></p><p>  在系統(tǒng)實(shí)施之前很重要的一項(xiàng)工作就是確定

20、系統(tǒng)的開(kāi)發(fā)環(huán)境。系統(tǒng)規(guī)模的大小、需求、個(gè)人對(duì)編程語(yǔ)言的熟悉和愛(ài)好等等都決定著系統(tǒng)的開(kāi)發(fā)環(huán)境。</p><p><b>  2.1 語(yǔ)言環(huán)境</b></p><p>  PHP是一種易于學(xué)習(xí)和使用的服務(wù)器端腳本語(yǔ)言。只需要很少的編程知識(shí)你就能使用PHP建立一個(gè)真正交互的WEB站點(diǎn)。PHP是能讓你生成動(dòng)態(tài)網(wǎng)頁(yè)的工具之一。PHP代表:超文本預(yù)處理器(PHP: Hyperte

21、xt Preprocessor)。PHP是完全免費(fèi)的,不用花錢(qián),你可以從PHP官方站點(diǎn)(http://www.php.net)自由下載。PHP遵守 GNU公共許可(GPL),在這一許可下誕生了許多流行的軟件諸如Linux和Emacs。你可以不受限制的獲得源碼,甚至可以從中加進(jìn)你自己需要的特色。PHP在大多數(shù)Unix平臺(tái),GUN/Linux和微軟Windows平臺(tái)上均可以運(yùn)行。怎樣在Windows環(huán)境的PC機(jī)器或Unix機(jī)器上安裝PHP的

22、資料可以在PHP官方站點(diǎn)上找到,同時(shí)其學(xué)習(xí)和安裝過(guò)程很簡(jiǎn)單。</p><p>  雖然在大學(xué)的課程中沒(méi)有系統(tǒng)的學(xué)習(xí)過(guò)PHP語(yǔ)言,但是我實(shí)習(xí)的過(guò)程中使用的語(yǔ)言正式PHP,因此在實(shí)習(xí)的過(guò)程中我自學(xué)了PHP語(yǔ)言并且結(jié)合symfony的框架進(jìn)行開(kāi)發(fā)工作,另外一方面的原因是PHP國(guó)內(nèi)的技術(shù)力量并不是集中現(xiàn)在并不是分散在成熟企業(yè)中,而是主要分布在網(wǎng)絡(luò)新手,技術(shù)愛(ài)好者,部分中小企業(yè),教育機(jī)構(gòu),作為新手的我當(dāng)然想選擇一門(mén)簡(jiǎn)單易學(xué)

23、的語(yǔ)言,所以本次畢業(yè)論文我選擇的是PHP語(yǔ)言作為編程語(yǔ)言。</p><p><b>  2.2 開(kāi)發(fā)框架</b></p><p>  如今的PHP框架層出不窮,其中有些比其他的更加惹人耳目。我不是這方面的專(zhuān)家,甚至不能熟練地使用其中的一種,所以在這里我也不想討論哪些算是框架,哪些不算框架。這里我要選擇的是哪一中框架能讓我快速的學(xué)會(huì)使用并高效的進(jìn)行項(xiàng)目開(kāi)發(fā)。</p

24、><p>  隨著Ruby on Rails的火爆,PHP這個(gè)流行的Web應(yīng)用腳本語(yǔ)言也出現(xiàn)了大量的新一代開(kāi)發(fā)框架。與此同時(shí),國(guó)內(nèi)PHP開(kāi)發(fā)者也開(kāi)始緊跟國(guó)外發(fā)展,推出了不同的開(kāi)發(fā)框架。在RoR流行之前,PHP領(lǐng)域也有不少開(kāi)發(fā)框架,例如Mojavi、WACT、PHPMvc和Seagull等。這些框架雖然也采用了MVC模式、數(shù)據(jù)庫(kù)抽象層等技術(shù)。但由于當(dāng)時(shí)PHP本身不像現(xiàn)在這樣流行,所以這些框架都沒(méi)有得到大量應(yīng)用,最終歸于

25、沉寂。而在感受到RoR提供的快速開(kāi)發(fā)能力后,PHP社區(qū)像被注入了興奮劑。各種應(yīng)用技術(shù)和開(kāi)發(fā)框架層出不窮。</p><p>  Symfony正是這些新涌現(xiàn)的PHP框架中的佼佼者。ymfony是一個(gè)非常成熟的框架,大量利用了已有的開(kāi)源項(xiàng)目。Symfony使用Mojavi的核心代碼實(shí)現(xiàn)了框架的MVC模式,利用 Propel作為數(shù)據(jù)庫(kù)抽象層。Symfony不僅功能強(qiáng)大,而且對(duì)Ajax有全面的支持。加上官方網(wǎng)站提供的大量

26、文檔和教程,并擁有一個(gè)活躍的社區(qū),因 此受到許多開(kāi)發(fā)者的歡迎。</p><p>  對(duì)于希望選擇一個(gè)框架作為企業(yè)內(nèi)部系統(tǒng)基礎(chǔ)架構(gòu)的企業(yè)來(lái)說(shuō),Symfony的成熟度、豐富的文檔和活躍的社區(qū)都是值得考慮的。畢竟企業(yè)內(nèi)部系統(tǒng)更為看重的是穩(wěn)定性和長(zhǎng)期的支持。</p><p>  綜合以上原因和個(gè)人對(duì)各種框架的使用熟練程度,symfony理所當(dāng)然的成為了我的首選。</p><p&

27、gt;<b>  2.3 開(kāi)發(fā)環(huán)境</b></p><p>  2.3.1 語(yǔ)言環(huán)境、數(shù)據(jù)庫(kù)、服務(wù)器</p><p>  XAMPP(Apache+MySQL+PHP+PERL)是一個(gè)功能強(qiáng)大的建站集成軟件包。這個(gè)軟件包原來(lái)的名字是LAMPP,但是為了避免誤解,最新 的幾個(gè)版本就改名為 XAMPP 了。它可以在Windows、Linux、Solaris三種操作系統(tǒng)下安

28、裝使用,支持多語(yǔ)言:英文、簡(jiǎn)體中文、繁體中文、韓文、俄文、日文等。</p><p>  許多人通過(guò)他們自己的經(jīng)驗(yàn)認(rèn)識(shí)到安裝 Apache 服務(wù)器是件不容易的事兒。如果您想添加 MySQL、PHP 和 Perl,那就更難了。XAMPP 是一個(gè)易于安裝且包含 MySQL、PHP 和 Perl 的 Apache 發(fā)行版。XAMPP 的確非常容易安裝和使用:只需下載,解壓縮,啟動(dòng)即可安裝PHP、MySQL數(shù)據(jù)庫(kù)和Apac

29、he服務(wù)器,非常方便。</p><p>  2.3.2 symfony框架環(huán)境</p><p>  在安裝了Xampp之后,下面我們就可以著手安裝symfony框架了。Symfony是一個(gè)基于MVC模式的面向?qū)ο蟮腜HP5框架。Symfony允許在一個(gè)web應(yīng)用中分離事務(wù)控制,服務(wù)邏輯和表示層。同時(shí),它還包含了 很多工具和類(lèi)用以縮短開(kāi)發(fā)復(fù)雜的網(wǎng)絡(luò)應(yīng)用的時(shí)間?;谧罴裌eb開(kāi)發(fā)實(shí)踐,已經(jīng)有多

30、個(gè)網(wǎng)站完全采用此框架開(kāi)發(fā),symfony的目的是加速Web應(yīng)用的創(chuàng) 建與維護(hù)。它的特點(diǎn)如下:1.簡(jiǎn)單的模板功能;2.緩存管理;3.自定義URL; 4.多語(yǔ)言與I18N支持;5.采用對(duì)象模型與MVC分離;6.Ajax支持。 </p><p>  Symfony的安裝過(guò)程是在線完成的,其過(guò)程相當(dāng)復(fù)雜,在這里就不做贅述了,下面我將著重闡述一下symfony的各種特點(diǎn)在項(xiàng)目開(kāi)發(fā)中的應(yīng)用。</p><p

31、>  1.模板功能。在symfony的框架環(huán)境下,通過(guò)運(yùn)行symfony命令在模型層就能生成大量數(shù)據(jù)模型對(duì)數(shù)操作的方法,在視圖層可以用實(shí)例方便的調(diào)用這些方法。模板也是通過(guò)symfony命令得到的,它包含了查詢(xún)對(duì)應(yīng)頁(yè)面需要顯示的數(shù)據(jù)內(nèi)容,只需要一句簡(jiǎn)單的symfony命令就能快速的得到一些簡(jiǎn)單的頁(yè)面,如果想進(jìn)一步的開(kāi)發(fā)和美化,只需要在其基礎(chǔ)上進(jìn)行深化就可以了而不需要進(jìn)行繁瑣的編碼得到初始的系統(tǒng)框架,這樣就大大加快的開(kāi)發(fā)的效率。<

32、;/p><p>  2.緩存管理。symfony提供一套靈活的服務(wù)器端緩存系統(tǒng)。對(duì)YAML文件進(jìn)行的簡(jiǎn)單直觀的設(shè)置,就允許將整個(gè)頁(yè)面,動(dòng)作或局部模板的響應(yīng)結(jié)果,以及模板片斷保存到文件中。底層數(shù)據(jù)改變時(shí),可有選擇性得刪除部分緩存。刪除部分緩存的操作可以用命令行和特殊的動(dòng)作方法實(shí)現(xiàn)。symfony也提供一套簡(jiǎn)單的方法實(shí)現(xiàn)客戶(hù)端緩存,該方法利用了HTTP頭。本章將講述這些內(nèi)容,介紹如何監(jiān)控緩存帶來(lái)的性能提升。</p&

33、gt;<p>  3.自定義URL。自定義URL可以美化系統(tǒng)的URL外觀。我們都知道,url中的關(guān)鍵詞對(duì)搜索引擎排名中的重要作用。如果以關(guān)鍵詞為域名的網(wǎng)站,那排名就很容易排到前面去,所以這也從另一個(gè)角度說(shuō)明一個(gè)行業(yè)詞之類(lèi)的域名本身還具有seo價(jià)值。漂亮的URL外觀不僅能便于搜索引擎的收錄,而且在用戶(hù)體驗(yàn)方面也發(fā)揮著重要的作用,例如用戶(hù)可以直接從URL信息上了解自己瀏覽的是什么行業(yè)、什么類(lèi)型的網(wǎng)站等等。</p>

34、<p>  4.多語(yǔ)言與I18N支持。I18N就是Internationalization(國(guó)際化)的縮寫(xiě),其原因是I和n之間一共有18個(gè)字母。對(duì)于叫成熟的網(wǎng)站系統(tǒng)國(guó)際化是不可避免的。例如一個(gè)門(mén)戶(hù)型的網(wǎng)站,用戶(hù)人群不僅包括中國(guó)人,還包括很多外國(guó)人,為了符合特殊人群的閱讀習(xí)慣,語(yǔ)言國(guó)際化不可避免。</p><p>  5.采用對(duì)象模型與MVC分離。symfony完整實(shí)現(xiàn)了MVC三層,封裝了所有東西,包括

35、 $POST,$GET 數(shù)據(jù),異常處理,調(diào)試功能,數(shù)據(jù)檢測(cè);包含強(qiáng)大的緩存功能,自動(dòng)加載Class,symfony還具有很強(qiáng)大的view層操 作,能夠零碎的包含單個(gè)多個(gè)文件;非常強(qiáng)大的配置功能,使用yml配置能夠控制所有框架和程序運(yùn)行行為,能夠很隨意的定義各種自己的 class,并且symfony能夠自動(dòng)加載(auto load)這些class,能夠在程序中隨意調(diào)用;包含強(qiáng)大的多層級(jí)項(xiàng)目和應(yīng)用管理:Project --> Appl

36、ication --> Module --> Action,能夠滿(mǎn)足一個(gè)項(xiàng)目下多個(gè)應(yīng)用的需要。模型是指從現(xiàn)實(shí)世界中挖掘出來(lái)的對(duì)象模型,是應(yīng)用邏輯的反映。模型封裝了數(shù)據(jù)和對(duì)數(shù)據(jù)的操作,是實(shí)際進(jìn)行數(shù)據(jù)處理的計(jì)算的地方。視圖是應(yīng)用和用戶(hù)之間的接 口,它負(fù)責(zé)將應(yīng)用顯現(xiàn)給用戶(hù)和顯示模型的狀態(tài)。控制器負(fù)責(zé)視圖和模型之間的交互,控制對(duì)用戶(hù)輸入的響應(yīng)響應(yīng)方式和流程,它主要負(fù)責(zé)兩方面的動(dòng)作:把用戶(hù)的 請(qǐng)求分發(fā)到相應(yīng)的模型;將模型的改變及時(shí)反應(yīng)

37、到視圖上。MVC將這些對(duì)象分離以提高靈活性和復(fù)用性。</p><p>  6.Ajax支持。AJAX全稱(chēng)為“Asynchronous JavaScript and XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。Ajax應(yīng)用程序的優(yōu)勢(shì)在于: 1. 通過(guò)異步模式,提升了用戶(hù)體驗(yàn);2. 優(yōu)化了瀏覽器和服務(wù)器之間的傳輸,減少不必要的數(shù)據(jù)往返,減少了帶寬占用;3. Ajax引擎在客

38、戶(hù)端運(yùn)行,承擔(dān)了一部分本來(lái)由服務(wù)器承擔(dān)的工作,從而減少了大用戶(hù)量下的服務(wù)器負(fù)載。</p><p><b>  3 系 統(tǒng) 概 述</b></p><p>  3.1 鋼琴網(wǎng)系統(tǒng)的作用</p><p>  鋼琴網(wǎng)的作用是方便用戶(hù)獲取鋼琴相關(guān)的各種服務(wù)信息,例如鋼琴的選購(gòu),鋼琴相關(guān)的各種服務(wù)信息、行業(yè)信息等等。鋼琴網(wǎng)還可以供企業(yè)級(jí)用戶(hù)發(fā)布和展示自己

39、的產(chǎn)品信息,獲取商業(yè)利益。</p><p>  用戶(hù)對(duì)象涉及面很大,主要包括想培養(yǎng)孩子鋼琴興趣的家長(zhǎng),對(duì)鋼琴知識(shí)和曲譜有興趣的學(xué)生,有能力做鋼琴服務(wù)行業(yè)的個(gè)人和企業(yè),鋼琴樂(lè)器銷(xiāo)售的企業(yè)甚至是賦閑在家的鋼琴老師,與鋼琴相關(guān)的在這里應(yīng)有盡有。</p><p>  3.2鋼琴網(wǎng)系統(tǒng)設(shè)計(jì)思想</p><p>  鋼琴網(wǎng)系統(tǒng)主要包括系統(tǒng)的登陸、用戶(hù)瀏覽、用戶(hù)發(fā)布信息、后臺(tái)管理

40、系統(tǒng)和在管理員審核用戶(hù)發(fā)布的信息等。</p><p>  首先是系統(tǒng)登陸功能,在symfony框架開(kāi)發(fā)中大量運(yùn)用到了插件(plugin)。這里我用的是sfGuardPlugin,它是專(zhuān)用來(lái)管理用戶(hù)權(quán)限管理,分組的插件,它的方便就是很方便的管理用戶(hù),安全性也很好,但是不足的就是沒(méi)有用戶(hù)注冊(cè)的頁(yè)面,因此我通過(guò)閱讀相關(guān)文檔手動(dòng)加上了用戶(hù)注冊(cè)頁(yè)面。</p><p>  用戶(hù)瀏覽信息的設(shè)計(jì)主要是用戶(hù)

41、界面和體驗(yàn)的設(shè)計(jì)。用戶(hù)在瀏覽信息時(shí)怎么樣才能讓用戶(hù)最大量的獲得相關(guān)信息,相關(guān)的信息在一個(gè)頁(yè)面就可以看到,從而節(jié)約大量的操作,這里我采用組件的形式,將可以重用的信息單獨(dú)封裝成組件,在需要用的地方直接調(diào)用即可,同時(shí)又減少了工作量(重復(fù)編碼)。</p><p>  用戶(hù)發(fā)布信息是先通過(guò)分析各種用戶(hù)可能想發(fā)布的信息,將其抽象成數(shù)據(jù)庫(kù)的表結(jié)構(gòu),將注冊(cè)用戶(hù)提交的信息存儲(chǔ)在數(shù)據(jù)庫(kù)中,通過(guò)管理員審核將其發(fā)布在鋼琴網(wǎng)上。</

42、p><p>  后臺(tái)管理系統(tǒng)的設(shè)計(jì)。感謝Symfony框架強(qiáng)大的自動(dòng)完成功能。通過(guò)運(yùn)行相應(yīng)命令symfony可以根據(jù)數(shù)據(jù)庫(kù)定義生成后臺(tái)管理程序,能實(shí)現(xiàn)大部分的管理要求,而且可以加入自定義的管理動(dòng)作。</p><p>  管理員是很和注冊(cè)用戶(hù)發(fā)布的信息的設(shè)計(jì)。通過(guò)在各種發(fā)布信息的表結(jié)構(gòu)中預(yù)定義一個(gè)show屬性,用戶(hù)提交信息的時(shí)候默認(rèn)為0,網(wǎng)站管理員通過(guò)后臺(tái)管理界面對(duì)需要審核的信息進(jìn)行審核,同意發(fā)

43、布的信息將其show屬性修改為1,在前臺(tái)程序中查詢(xún)條件中加入條件為show屬性為1的信息進(jìn)行查詢(xún),顯示。</p><p>  3.3 鋼琴網(wǎng)系統(tǒng)存在的問(wèn)題現(xiàn)狀</p><p>  因?yàn)殚_(kāi)發(fā)經(jīng)驗(yàn)的不足,鋼琴網(wǎng)還存在著很大的改進(jìn)空間。例如用戶(hù)的提交流程略顯繁瑣,用戶(hù)使用流程不優(yōu)化,有些也確實(shí)是技術(shù)上的原因,種種這些都需要未來(lái)花大力氣來(lái)學(xué)習(xí)和修改。總結(jié)了一下,系統(tǒng)還存在著如下的問(wèn)題需要改進(jìn):&l

44、t;/p><p>  1.在批量上傳對(duì)象的多張圖片時(shí),如果最多一次可以上傳四張圖片,而用戶(hù)實(shí)際只上傳了一張圖片。剩下的三張圖片雖然沒(méi)有選擇上傳的文件,但是也保存到了數(shù)據(jù)庫(kù)中,其中文件名的字段為空,這樣現(xiàn)任不合理。</p><p>  2.搜索引擎的局限性;現(xiàn)在已經(jīng)做好的搜索引擎只能搜索鋼琴對(duì)象而不能搜索全站的信息(例如新聞、琴行等),而且還存在的問(wèn)題就是輸入中文搜索的時(shí)候搜索不到任何內(nèi)容,問(wèn)題

45、可能出在將數(shù)據(jù)庫(kù)的記錄存儲(chǔ)到data/piano.dev.index目錄下的文件中時(shí)對(duì)字符格式進(jìn)行了轉(zhuǎn)化,中文字符被轉(zhuǎn)換成了其他的字符類(lèi)型,所以在搜索中文字符關(guān)鍵字的時(shí)候就搜索不到記錄對(duì)象。</p><p>  3.權(quán)限的管理流程的問(wèn)題;當(dāng)一個(gè)企業(yè)用戶(hù)想要發(fā)表自己的企業(yè)信息時(shí),先要注冊(cè)一個(gè)企業(yè)用戶(hù)類(lèi)型的賬戶(hù),經(jīng)過(guò)管理員的審核之后才授予其相應(yīng)發(fā)布權(quán)限,當(dāng)權(quán)限授予之后,用戶(hù)發(fā)表的信息還要得到管理員的審核才能發(fā)布到前臺(tái)

46、顯示,整個(gè)過(guò)程稍嫌繁瑣,用戶(hù)注冊(cè)提交信息列成還需要進(jìn)一步的優(yōu)化。 </p><p><b>  4 需 求 分 析</b></p><p><b>  4.1 現(xiàn)狀分析</b></p><p>  用戶(hù)對(duì)象涉及面很大,主要包括想培養(yǎng)孩子鋼琴興趣的家長(zhǎng),對(duì)鋼琴知識(shí)和曲譜有興趣的學(xué)生,有能力做鋼琴服務(wù)行業(yè)的個(gè)人和企業(yè),鋼琴樂(lè)器

47、銷(xiāo)售的企業(yè)甚至是賦閑在家的鋼琴老師,與鋼琴相關(guān)的在這里應(yīng)有盡有。</p><p>  目前國(guó)內(nèi)樂(lè)器市場(chǎng)潛力巨大,而鋼琴素有樂(lè)器之王的美稱(chēng),它作為一種高檔、優(yōu)雅的樂(lè)器自然受到大眾的追捧,銷(xiāo)售鋼琴所產(chǎn)生的商業(yè)利益也很大,商家也都在不遺余力的宣傳。商家所選擇的宣傳平臺(tái)主要是自己企業(yè)的網(wǎng)站,這樣的宣傳成本低,維護(hù)難度相對(duì)較小,但是對(duì)于用戶(hù)的需求卻得不到滿(mǎn)足。用戶(hù)在涉足樂(lè)器這個(gè)行業(yè)的時(shí)候就像了解更多的相關(guān)信息,而學(xué)習(xí)的過(guò)程

48、就是不斷的了解行業(yè)信息,和網(wǎng)友交流,觀察大眾的評(píng)價(jià)等等。所以我認(rèn)為可以將宣傳重點(diǎn)放在用戶(hù)的需求上,用戶(hù)在瀏覽宣傳資料的同時(shí)能夠自我成長(zhǎng),注重用戶(hù)的需求才是網(wǎng)站的生存之道,也是網(wǎng)站能不能實(shí)現(xiàn)商業(yè)價(jià)值的重要體現(xiàn)。因此我將鋼琴網(wǎng)的定位定位在門(mén)戶(hù)性質(zhì)的鋼琴網(wǎng)站,整合各種信息于一體,滿(mǎn)足用戶(hù)的需求,甚至還可以擴(kuò)展到所有樂(lè)器的銷(xiāo)售宣傳和用戶(hù)交流。</p><p>  本系統(tǒng)所使用的開(kāi)發(fā)語(yǔ)言PHP5是位于服務(wù)器端的腳本運(yùn)行環(huán)境

49、,通過(guò)這種環(huán)境,用戶(hù)可以創(chuàng)建和運(yùn)行動(dòng)態(tài)的交互式 Web 服務(wù)器應(yīng)用程序,如交互式的動(dòng)態(tài)網(wǎng)頁(yè),包括使用 HTML 表單收集和處理信息,上傳與下載等等。更重要的是,PHP5支持面向?qū)ο蟮木幊陶Z(yǔ)言,能夠很好的抽象顯示業(yè)務(wù)邏輯,加快開(kāi)發(fā)速率。Symfony框架在歐洲已經(jīng)是很成熟的中型站點(diǎn)開(kāi)發(fā)框架,其可以根據(jù)定義好的數(shù)據(jù)模型自動(dòng)生成對(duì)該模型的各種操作方法和模型對(duì)象之間的關(guān)系關(guān)聯(lián)方法。從而節(jié)省大量的硬編碼時(shí)間,加快開(kāi)發(fā)速率,這也是我為什么選擇sym

50、fony框架的主要原因。</p><p><b>  4.2 系統(tǒng)的結(jié)構(gòu)</b></p><p>  symfony框架提供了一種將各種單獨(dú)的數(shù)據(jù)模型設(shè)置成單獨(dú)的模塊一面影響各自之間的數(shù)據(jù)處理。這里鋼琴網(wǎng)的系統(tǒng)可以大致分為四大模塊:1.用戶(hù)注冊(cè)、登錄模塊(sfGuardPlugin),2.顯示信息,用戶(hù)瀏覽模塊;3.用戶(hù)發(fā)布信息模塊;4后臺(tái)管理模塊,其中后臺(tái)管理又分為

51、信息管理和用戶(hù)管理。</p><p><b>  4.3 技術(shù)要求</b></p><p>  1.語(yǔ)言基礎(chǔ),熟悉PHP5的語(yǔ)言特性和其各種函數(shù)的使用;</p><p>  2.?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ),理解數(shù)據(jù)模型之間的各種邏輯關(guān)系,例如一對(duì)一、一對(duì)多、多對(duì)多關(guān)系的數(shù)據(jù)庫(kù)表示、程序語(yǔ)言的實(shí)現(xiàn)等;</p><p>  3.編程思想

52、,對(duì)MVC的編程思想有很深的認(rèn)識(shí);它不同于傳統(tǒng)的面向過(guò)程的開(kāi)發(fā),它將程序嚴(yán)格的劃分為三層,即模型層、控制層、視圖層。各層之間相互依存,但是作用各不相同。</p><p>  4.外語(yǔ)基礎(chǔ)(英文),因?yàn)閲?guó)內(nèi)關(guān)于symfony框架的參考文章很有限,大部分的參考文獻(xiàn)是來(lái)自于國(guó)外的網(wǎng)站、論壇,因此在研究symfony框架時(shí)要具備一定的英文閱讀能力。</p><p><b>  4.4 運(yùn)

53、行環(huán)境</b></p><p>  為了保證系統(tǒng)運(yùn)行的效率和可靠性,系統(tǒng)Web服務(wù)器端應(yīng)具有較高的軟硬件配置,客戶(hù)端的要求不是很高。此應(yīng)用程序可廣泛運(yùn)行于互聯(lián)網(wǎng)。其運(yùn)行要求如下:</p><p>  服務(wù)器端: Apache,IE 5.5/6.0,MySQL數(shù)據(jù)庫(kù),symfony1.2 ,php5.14以上。</p><p>  客戶(hù)端: Windows

54、98/2000/XP,Internet Explorer(IE)等</p><p>  本系統(tǒng)在WindowsXP +Apache+FireFox3.04下調(diào)試通過(guò)。</p><p><b>  5 鋼琴網(wǎng)系統(tǒng)設(shè)計(jì)</b></p><p>  5.1鋼琴網(wǎng)系統(tǒng)結(jié)構(gòu)功能</p><p>  鋼琴網(wǎng)系統(tǒng)包括:用戶(hù)瀏覽信息,注

55、冊(cè)、登錄和管理自己發(fā)布的信息。系統(tǒng)用戶(hù)可以選擇注冊(cè)和不注冊(cè)兩種方式使用。對(duì)于為注冊(cè)用戶(hù)只提供瀏覽功能,對(duì)注冊(cè)用戶(hù)提供發(fā)布和刪除自己的信息。其中注冊(cè)用戶(hù)又分為個(gè)人用戶(hù)和企業(yè)用戶(hù),個(gè)人用戶(hù)可以發(fā)布自己的服務(wù)信息,企業(yè)用戶(hù)可以發(fā)布自己的產(chǎn)品、服務(wù)信息。用戶(hù)登錄后可以打不自己的信息,等待網(wǎng)站管理員的審核,現(xiàn)實(shí)用戶(hù)發(fā)布的信息。系統(tǒng)的具體功能框架如圖4-1所示:</p><p>  圖5-1 鋼琴網(wǎng)系統(tǒng)功能框架圖</

56、p><p><b>  5.2 網(wǎng)站結(jié)構(gòu)</b></p><p>  功能需求已經(jīng)確定,下面根據(jù)系統(tǒng)的功能需求確定整個(gè)網(wǎng)站結(jié)構(gòu)。鋼琴網(wǎng)系統(tǒng)的網(wǎng)站結(jié)構(gòu)如下圖所示:</p><p>  圖5-2 網(wǎng)站結(jié)構(gòu)圖</p><p>  5.3數(shù)據(jù)庫(kù)的分析與設(shè)計(jì)</p><p>  因?yàn)殇撉倬W(wǎng)中數(shù)據(jù)的涵蓋面很大,包

57、括新聞、鋼琴、琴行、服務(wù)信息、用戶(hù)等數(shù)十個(gè)主要對(duì)象和其附屬對(duì)象,例如新聞表,其附屬表包括新聞分類(lèi)表和評(píng)論表。而我所選取的開(kāi)發(fā)框架symfony將數(shù)據(jù)庫(kù)的定義全部寫(xiě)在schema.yml文件中,在該文件中可以定義各種實(shí)體的數(shù)據(jù)庫(kù)表結(jié)構(gòu),包括實(shí)體的主鍵、外鍵定義,實(shí)體之間的關(guān)系定義等。然后再運(yùn)行相關(guān)命令,根據(jù)在schema.yml文件中定義的數(shù)據(jù)模型生成互相關(guān)聯(lián)的數(shù)據(jù)模型,這樣就可以在控制層方便的實(shí)現(xiàn)各個(gè)實(shí)體之間的關(guān)系。</p>

58、<p>  5.4 主要功能模塊</p><p>  系統(tǒng)主要功能模塊及功能圖如下:</p><p>  圖5-3 鋼琴模塊圖</p><p>  圖5-4 曲譜模塊圖</p><p>  5.5鋼琴網(wǎng)系統(tǒng)實(shí)現(xiàn)</p><p>  5.5.1 系統(tǒng)結(jié)構(gòu)</p><p>  由于該

59、系統(tǒng)面向總校和分布于全國(guó)各地的教學(xué)中心,因此在系統(tǒng)結(jié)構(gòu)上采用B/S結(jié)構(gòu)相結(jié)合的多層軟件體系結(jié)構(gòu)。域網(wǎng)內(nèi)部快速的信息處理, B/S結(jié)構(gòu)具有較好的網(wǎng)絡(luò)擴(kuò)展性和兼容性,以B/S結(jié)構(gòu)能滿(mǎn)足地理位置分散、通訊介質(zhì)各異的應(yīng)用。采用多層體系結(jié)構(gòu)可以將數(shù)據(jù)庫(kù)、業(yè)務(wù)邏輯、用戶(hù)界面分離開(kāi),這樣做的優(yōu)點(diǎn)是:可伸縮性好、可管理性強(qiáng)、可重用性好、部署應(yīng)用程序的代價(jià)比較小。</p><p>  5.5.2 開(kāi)發(fā)工具</p>&

60、lt;p>  鋼琴網(wǎng)系統(tǒng)使用的編程語(yǔ)言是PHP語(yǔ)言,數(shù)據(jù)庫(kù)為MySQL,服務(wù)器為Apache和symfony的開(kāi)發(fā)框架。PHP雖然不是真正的面向?qū)ο蟮恼Z(yǔ)言,但是在PHP5之后加入了面向?qū)ο蟮奶匦裕宜鳛橐环N開(kāi)源的語(yǔ)言,經(jīng)過(guò)世界范圍內(nèi)使用者的豐富和完善,在安全性和穩(wěn)定性上已經(jīng)能夠滿(mǎn)足大中型項(xiàng)目的需求。MySQL數(shù)據(jù)庫(kù)主要應(yīng)用在中型規(guī)模的項(xiàng)目,目前企業(yè)級(jí)的項(xiàng)目大多數(shù)都是用MySQL數(shù)據(jù)庫(kù)。Symfony的框架適合于大中型企業(yè)級(jí)的項(xiàng)

61、目開(kāi)發(fā),其開(kāi)發(fā)過(guò)程完全體現(xiàn)了MVC的開(kāi)發(fā)思想,結(jié)合鋼琴網(wǎng)的定位——綜合性的門(mén)戶(hù)網(wǎng)站,所以這里我采用了symfony的框架進(jìn)行開(kāi)發(fā),其活躍的社區(qū)和數(shù)目繁多的插件都是我選擇symfony框架的原因。</p><p><b>  6 具體設(shè)計(jì)及實(shí)現(xiàn)</b></p><p>  6.1系統(tǒng)用戶(hù)瀏覽模塊實(shí)現(xiàn)</p><p>  前面提到鋼琴網(wǎng)系統(tǒng)的實(shí)現(xiàn)是

62、利用MVC的設(shè)計(jì)模式來(lái)實(shí)現(xiàn)其體系結(jié)構(gòu)的,它將交互式應(yīng)用分為三層:模型(model)、視圖(view)和控制器(controller)三個(gè)部分。其中模型層是依據(jù)schma.yml文件中定義的數(shù)據(jù)庫(kù)模型通過(guò)運(yùn)行相關(guān)命令生成的。其中封裝了對(duì)象模型的數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行的操作。視圖是用戶(hù)和應(yīng)用之間的接口,它負(fù)責(zé)兩個(gè)方面:將用戶(hù)的請(qǐng)求分發(fā)到相應(yīng)的模型和將模型的改變及時(shí)反映到視圖上,而視圖的作用就是作為用戶(hù)的操作界面和應(yīng)用的輸出。</p>

63、<p>  系統(tǒng)用戶(hù)可以瀏覽的信息大致可以分為新聞、鋼琴信息、服務(wù)信息和曲譜信息,其在前臺(tái)顯示的原理大致相同,這里我以鋼琴信息瀏覽的實(shí)現(xiàn)為例子進(jìn)行說(shuō)明。當(dāng)管理員在后臺(tái)發(fā)布了一個(gè)鋼琴信息并將其存入了數(shù)據(jù)庫(kù),那么在前臺(tái)界面怎么得到鋼琴的信息并將其顯示出來(lái)呢?</p><p>  對(duì)于鋼琴對(duì)象的數(shù)據(jù)和對(duì)其的操作全部封裝在模型層,模型層包括對(duì)鋼琴對(duì)象的添加、刪除、修改、查詢(xún)、處理和它相關(guān)聯(lián)對(duì)象之間的關(guān)系等等的

64、方法。模型層是通過(guò)schema.yml文件中的數(shù)據(jù)定義在symfony框架中運(yùn)行相關(guān)命令得到的,這里我著重就控制層和視圖層說(shuō)明一下其實(shí)現(xiàn)用戶(hù)瀏覽的實(shí)現(xiàn)方式。</p><p>  1. 首先是鋼琴主頁(yè)面,在鋼琴模塊的控制層里面的executeIndex()方法負(fù)責(zé)從模型層得到所有符合查詢(xún)條件的鋼琴對(duì)象,代碼如下:</p><p>  public function executeIndex(

65、sfWebRequest $request)</p><p><b>  {</b></p><p>  $c = new Criteria();</p><p>  $c->addAscendingOrderByColumn(PianoPeer::ID);//按鋼琴的ID號(hào)排序</p><p>  $c->

66、add(PianoPeer::SHOW, 1);//查詢(xún)所有show字段為1的鋼琴</p><p>  $this->piano_list = PianoPeer::doSelect($c);//將查詢(xún)到的鋼琴對(duì)象集放在piano_list對(duì)象中</p><p>  $this->pager = new sfPropelPager('Piano',6);//運(yùn)用

67、pager對(duì)象定義每頁(yè)最多顯示6個(gè)鋼琴對(duì)象</p><p>  $this->pager->setCriteria($c);</p><p>  $this->pager->setPage($this->getRequestParameter('page', 1));</p><p>  $this->pager-

68、>init();</p><p><b>  }</b></p><p>  視圖層(indexSuccess.php)代碼:</p><p>  <div class="piano_b" ></p><p>  <h2>鋼琴選購(gòu)</h2></p>

69、<p><b>  <br></b></p><p>  <?php foreach ($pager->getResults() as $piano): ?></p><p>  <div class="piano_b_1" style="float:left;width:20%;&quo

70、t;></p><p>  <a href="<?php echo url_for('piano_show',$piano) ?>"><img src="/uploads/pianos/<?php echo $piano->getLogo() ?>" alt="<?php echo $pi

71、ano->getName() ?> logo" border="0" height=100 width="110" /></a></p><p>  <p><a href="<?php echo url_for('piano_show',$piano) ?>">

72、<?php echo $piano->getBrand().$piano->getName()."@@@".$piano->getPrice(); ?></a></p></p><p><b>  </div></b></p><p>  2.顯示鋼琴對(duì)象屬性的頁(yè)面:</p&g

73、t;<p>  當(dāng)用戶(hù)點(diǎn)擊了一個(gè)鋼琴的鏈接,URL將其ID號(hào)傳遞到show()方法,按照該ID號(hào)查詢(xún)得到ID好為當(dāng)前ID號(hào)的鋼琴,再通過(guò)調(diào)用鋼琴模型里的方法獲取該鋼琴的各個(gè)屬性??刂茖哟a:</p><p>  public function executeShow(sfWebRequest $request)</p><p><b>  {</b>&l

74、t;/p><p>  $this->piano = $this->getRoute()->getObject();</p><p>  $c = new Criteria();</p><p>  $c->add(PianopicturePeer::PIANO_ID, $request->getParameter('id')

75、);</p><p>  $c->addAscendingOrderByColumn(PianopicturePeer::ID);</p><p>  $c->setLimit(8);</p><p>  $this->pianopictures = PianopicturePeer::doSelect($c);</p><p&

76、gt;  $this->services = $this->piano->getServices();</p><p>  $this->user = $this->piano->getUser();</p><p><b>  }</b></p><p>  6.2 用戶(hù)注冊(cè)、登錄和權(quán)限管理的實(shí)現(xiàn)</

77、p><p>  在symfony框架的項(xiàng)目開(kāi)發(fā)中大量運(yùn)用到了插件,插件是世界各地的程序愛(ài)好者或軟件從業(yè)人員按照其規(guī)定的編碼標(biāo)準(zhǔn)開(kāi)發(fā)的,能夠方便的移植到項(xiàng)目開(kāi)發(fā)中的已完成的應(yīng)用。如果在項(xiàng)目中自己獨(dú)立開(kāi)發(fā)像登錄模塊這樣安全性要求較高的模塊難免存在安全性的隱患,而在symfony的插件體制中,可以允許項(xiàng)目大量運(yùn)用已存在的并且運(yùn)行很穩(wěn)定的插件,而且還加快了項(xiàng)目開(kāi)發(fā)的速度,所以這里我選取的是在symfony框架項(xiàng)目開(kāi)發(fā)中運(yùn)用得

78、非常頻繁的一款插件sfGuardPlugin,它提供了用戶(hù)登錄、權(quán)限管理等功能,還能根據(jù)實(shí)際需求擴(kuò)展其用途。</p><p><b>  6.2.1登錄模塊</b></p><p>  登錄模塊的實(shí)現(xiàn)代碼:</p><p><b>  <html></b></p><p><b&g

79、t;  <head></b></p><p>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></p><p>  <link href="/css/pinao.css" rel="st

80、ylesheet" type="text/css"/></p><p><b>  </head></b></p><p>  <form action="<?php echo url_for('@sf_guard_signin') ?>" method="

81、post"></p><p>  <?php echo $form['username']->renderRow(array('class'=>'text1')); ?></p><p>  <?php echo $form['password']->renderRow(ar

82、ray('class'=>'text1')); ?></p><p>  <?php echo $form['remember']->renderRow(); ?></p><p>  <!--<input type="submit" value="登 錄" /

83、>--></p><p>  <input type="image" src="/images/Index2_13.jpg" style="vertical-align:middle;"/><span style="color:#bd1d11; margin-left:5px;">|</spa

84、n><a href="####" style="color:#d31f11;margin-left:10px;">忘記密碼</a></p><p><b>  </form></b></p><p><b>  </html></b></p>

85、<p><b>  6.2.2注冊(cè)頁(yè)面</b></p><p>  在sfGuardPlugin插件中并沒(méi)有提供用戶(hù)注冊(cè)的功能,所以這里我自建了一張用于存儲(chǔ)用戶(hù)詳細(xì)信息的sf_guard_user_profile表,用戶(hù)注冊(cè)時(shí)用到的表單是由兩個(gè)表單部分組成的:sf_guard_user表單和sf_guard_user_profile表單,該插件提供了擴(kuò)展功能的接口。感謝sfGu

86、ardPlugin,因?yàn)閟fGuardUserForm.class是繼承自sfGuardUserAdminForm.class的,而在sfGuardUserAdminForm.class中已經(jīng)為我們要?jiǎng)?chuàng)建的模型sfGuardUserProfile預(yù)定義好了接口,在sfGuardUserAdminForm.class中已經(jīng)存在判斷sfGuardUserProfile是否存在的判斷語(yǔ)句,如果存在就是用mergeForm()方法將userpr

87、ofile的Form嵌入到User表單中,所以在使用new新創(chuàng)建用戶(hù)的時(shí)候,$form可以直接包含用戶(hù)詳細(xì)信息的創(chuàng)建。</p><p>  6.3實(shí)現(xiàn)用戶(hù)發(fā)布信息功能模塊</p><p>  根據(jù)系統(tǒng)設(shè)計(jì)用戶(hù)可以在鋼琴網(wǎng)中發(fā)布自己的企業(yè)信息、服務(wù)信息,當(dāng)管理員授予注冊(cè)用戶(hù)相應(yīng)權(quán)限后該用戶(hù)可以在對(duì)應(yīng)頁(yè)面提交自己的信息。Symfony框架中的表單是根據(jù)模型生成的,例如用戶(hù)發(fā)布的信息表單被抽象成

88、了InfoForm.class.php類(lèi),在該類(lèi)中可以自定義該表單的屬性和外觀等。</p><p><b>  6.4系統(tǒng)運(yùn)行截圖</b></p><p>  6.4.1鋼琴網(wǎng)系統(tǒng)登錄界面</p><p>  鋼琴網(wǎng)系統(tǒng)登錄界面如圖6-1所示。</p><p>  圖6-1鋼琴網(wǎng)系統(tǒng)登錄界面</p><

89、;p>  6.4.2考試系統(tǒng)考試主界面</p><p>  鋼琴網(wǎng)主頁(yè)如圖6-2所示。</p><p>  圖6-2 鋼琴網(wǎng)主頁(yè)</p><p>  6.4.3用戶(hù)瀏覽新聞、琴行等界面 </p><p>  新聞主頁(yè)界面如圖6-3所示。</p><p>  圖6-3 新聞主頁(yè)界面</p><p

90、>  用戶(hù)瀏覽新聞界面如圖6-4所示。</p><p>  圖6-4 用戶(hù)瀏覽新聞界面</p><p>  6.3.4用戶(hù)提交信息界面</p><p>  用戶(hù)提交鋼琴信息界面如圖6-5所示。</p><p>  圖6-5 提交鋼琴信息</p><p>  6.4.5后臺(tái)管理界面</p><p

91、>  后臺(tái)管理界面如圖6-6所示。</p><p>  圖6-6后臺(tái)管理界面</p><p>  6.4.6查詢(xún)及結(jié)果界面</p><p>  查詢(xún)及結(jié)果界面顯示如圖6-7所示。</p><p>  圖6-7查詢(xún)及結(jié)果界面</p><p><b>  7 系統(tǒng)測(cè)試與調(diào)試</b></p&

92、gt;<p>  7.1 測(cè)試目的及任務(wù)</p><p>  測(cè)試的任務(wù)是發(fā)現(xiàn)系統(tǒng)中所存在的尚未解決的問(wèn)題,只有及時(shí)的發(fā)現(xiàn)問(wèn)題才能有效的解決問(wèn)題。測(cè)試的目標(biāo)是暴露程序中的錯(cuò)誤,因此測(cè)試在程序設(shè)計(jì)中有著極其重要的地位。</p><p>  測(cè)試階段的根本任務(wù)是發(fā)現(xiàn)并改正軟件中的錯(cuò)誤。設(shè)計(jì)測(cè)試方案是測(cè)試階段的關(guān)鍵技術(shù)問(wèn)題,其基本目標(biāo)是選用盡可能少的高效測(cè)試數(shù)據(jù),作到盡可能完善的測(cè)

93、試,從而盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。</p><p><b>  7.2 測(cè)試方法</b></p><p>  黑盒測(cè)試和白盒測(cè)試是軟件測(cè)試的兩類(lèi)不同方法。測(cè)試任何產(chǎn)品都有兩種方法:如果已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能可以通過(guò)測(cè)試來(lái)檢驗(yàn)是否每個(gè)功能都能正常使用;如果知道產(chǎn)品內(nèi)部工作過(guò)程,可以通過(guò)測(cè)試來(lái)檢驗(yàn)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明說(shuō)的規(guī)定正常進(jìn)行。</p>

94、<p><b>  7.3 系統(tǒng)調(diào)試</b></p><p>  7.3.1 系統(tǒng)調(diào)試的常用方法</p><p>  一般來(lái)說(shuō),調(diào)試可以通過(guò)以下幾種方式:一個(gè)是從頭至尾將程序運(yùn)行一邊找到錯(cuò)誤,二是回溯法,再一個(gè)就是原因排除法。無(wú)論采用什么方法,調(diào)試的根本目標(biāo)都是尋找軟件錯(cuò)誤的原因并改正之。這個(gè)目標(biāo)是通過(guò)把系統(tǒng)地評(píng)估,直覺(jué)和運(yùn)氣組合起來(lái)實(shí)現(xiàn)的。</p&

95、gt;<p>  軟件測(cè)試是在軟件投入運(yùn)行之前,對(duì)軟件需求分析,設(shè)計(jì)規(guī)格說(shuō)明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。它是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程,或者說(shuō)軟件測(cè)試是根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試?yán)樱▽?duì)系統(tǒng)進(jìn)行操作,看是否能有其預(yù)期的輸出結(jié)果)并利用這些測(cè)試?yán)尤ミ\(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過(guò)程。</p><p>  軟檢測(cè)試是軟件交給用戶(hù)使用之前一個(gè)必不可少的過(guò)

96、程。它在軟件開(kāi)發(fā)過(guò)程中橫跨兩個(gè)階段:通常在編寫(xiě)出每個(gè)模塊后就對(duì)它做單元測(cè)試,模塊的編寫(xiě)者與測(cè)試者是同一個(gè)人。在每個(gè)模塊都完成單元測(cè)試之后,對(duì)軟件系統(tǒng)進(jìn)行各種綜合測(cè)試,通常由專(zhuān)門(mén)的測(cè)試人員承擔(dān)這項(xiàng)工作。 </p><p><b>  8 結(jié)果與分析</b></p><p>  通過(guò)對(duì)鋼琴網(wǎng)系統(tǒng)的測(cè)試和調(diào)試,現(xiàn)有的系統(tǒng)還訊在這諸多的問(wèn)題,這些問(wèn)題主要包括兩個(gè)方面:一是設(shè)計(jì)

97、經(jīng)驗(yàn)不足導(dǎo)致業(yè)務(wù)邏輯的不合理;二是開(kāi)發(fā)技術(shù)的欠缺,一些功能在現(xiàn)有的開(kāi)發(fā)工具是能夠?qū)崿F(xiàn)的但是目前還沒(méi)有完全開(kāi)發(fā)出來(lái);總結(jié)一下現(xiàn)有的鋼琴網(wǎng)系統(tǒng)還存在這如下幾個(gè)問(wèn)題:</p><p>  1.批量上傳的問(wèn)題。在批量上傳對(duì)象的多張圖片時(shí),如果最多一次可以上傳4張圖片,而實(shí)際用戶(hù)之上傳了一張圖片。剩下的三張圖片雖然沒(méi)有“瀏覽”,但是也對(duì)保存到數(shù)據(jù)庫(kù)中,其中文件名字段為空,這樣顯然不合理;</p><p&

98、gt;  2.搜索引擎的局限性?,F(xiàn)已經(jīng)做好的搜索引擎只能搜索鋼琴對(duì)象而不能搜索全站的內(nèi)容(新聞、琴行等),而且還存在的問(wèn)題就是輸入中文的時(shí)候搜索不到任何內(nèi)容,問(wèn)題可能出在將數(shù)據(jù)庫(kù)記錄存儲(chǔ)到data/piano.dev.index目錄下的文件中時(shí)進(jìn)行了字符轉(zhuǎn)換,中文字符轉(zhuǎn)換成了其他字符類(lèi)型,所以在搜索中文關(guān)鍵字的時(shí)候搜索不到記錄對(duì)象;</p><p>  3.頁(yè)面跳轉(zhuǎn)的問(wèn)題。例如用戶(hù)提交表單之后轉(zhuǎn)向哪里,全站的用戶(hù)

99、提交后的頁(yè)面跳轉(zhuǎn)已經(jīng)做了修改,可能還存在個(gè)別地方的遺漏,我這里重點(diǎn)要說(shuō)的跳轉(zhuǎn)問(wèn)題是:當(dāng)未登錄用戶(hù)訪問(wèn)到一個(gè)頁(yè)面需要相應(yīng)權(quán)限才能訪問(wèn)時(shí),用戶(hù)登錄后應(yīng)該返回到他登錄之前所訪問(wèn)的頁(yè)面而不是主頁(yè)。</p><p>  4.設(shè)計(jì)的局限性。在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候,只考慮到了讓用戶(hù)發(fā)布琴行、品牌信息、鋼琴信息,但是在添加琴行信息時(shí)要添加與鋼琴品牌之間的關(guān)系,也就是說(shuō)要添加該琴行銷(xiāo)售的哪些鋼琴的品牌,如果用戶(hù)提交的品牌信息不夠全

100、面或者管理員編輯的品牌信息不夠全面,發(fā)布琴行信息的用戶(hù)就無(wú)法建立與某一品牌之間的聯(lián)系,因?yàn)閿?shù)據(jù)庫(kù)中沒(méi)有其想要與之建立聯(lián)系的品牌信息,這樣用戶(hù)就必須到品牌模塊添加新的品牌信息,這樣的操作很不方便。</p><p>  5.權(quán)限的管理流程的問(wèn)題。以前考慮權(quán)限管理的時(shí)候想著只要能實(shí)現(xiàn)就行,可是現(xiàn)在可以實(shí)現(xiàn)權(quán)限管理了卻發(fā)現(xiàn)存在著很大的問(wèn)題。當(dāng)一個(gè)企業(yè)用戶(hù)想要發(fā)布一個(gè)琴行信息時(shí),其先要注冊(cè),然后等待管理員核實(shí)、授權(quán)后才能發(fā)

101、布琴行信息,提交成功后還要等待系統(tǒng)管理員激活所發(fā)布的信息,整個(gè)過(guò)程稍顯繁瑣,很容易造成用戶(hù)的流失。</p><p>  6.后臺(tái)界面。后臺(tái)界面一直覺(jué)得很不友好,而且單頁(yè)顯示的信息量也很少,造成管理上的不方便;</p><p>  7.根據(jù)管理員在后臺(tái)批量激活用戶(hù)發(fā)布信息的方法也可以實(shí)現(xiàn)批量授予新注冊(cè)用戶(hù)權(quán)限的功能。</p><p><b>  9 致 謝

102、</b></p><p>  鋼琴網(wǎng)系統(tǒng)及畢業(yè)論文是在我的畢業(yè)指導(dǎo)老師的親切關(guān)懷和悉心指導(dǎo)下完成的。她嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。從論文題目的選擇到項(xiàng)目的最終完成,老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持。兩年多來(lái),老師不僅在學(xué)業(yè)上給我以精心指導(dǎo),同時(shí)還在思想、生活上給我以無(wú)微不至的關(guān)懷,在此謹(jǐn)老師老師致以誠(chéng)摯的謝意和崇高的敬意。 </p>&

103、lt;p>  在此,我還要感謝在一起愉快的度過(guò)和我同寢室的各位可愛(ài)的同學(xué),正是由于你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至本次畢業(yè)論文的順利完成。特別感謝我的和我一個(gè)班的楊莉同學(xué),她對(duì)本課題做了不少工作,包括開(kāi)發(fā)系統(tǒng)時(shí)給我的巨大啟發(fā)和后期的測(cè)試工作,都給予我不少的幫助。</p><p>  在論文即將完成之際,我的心情無(wú)法平靜,從開(kāi)始進(jìn)入課題到論文的順利完成,有多少可敬的師長(zhǎng)、同學(xué)、朋友給了我

104、無(wú)言的幫助,在這里請(qǐng)接受我誠(chéng)摯的謝意!最后我還要感謝培養(yǎng)我長(zhǎng)大含辛茹苦的父母,謝謝你們!</p><p><b>  10 參考文獻(xiàn)</b></p><p>  [1] 法比安.波唐西耶 江樂(lè)等譯.《symfony權(quán)威指南》. 2008-07出版 電子工業(yè)出版社</p><p>  [2] 王軍 譯.《PHP5 in practice》. 2

105、007-07出版.人民郵電出版社</p><p>  [3] 法比安.波唐西耶.《Practical symfony》. 2008-07出版 電子工業(yè)出版社</p><p>  [4] 奎格利.《PHP與MySQL案例剖析》. 2007-12出版.人民郵電出版社</p><p>  [5] 聶慶鵬.《PHP+MySQL動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)與全程實(shí)例》. 2007-10出版

106、. 清華大學(xué)出版社</p><p>  [6] 杜江.《PHP5與MySQL5 Web開(kāi)發(fā)技術(shù)詳解》(含光盤(pán)). 2007-11出版.電子工業(yè)出版社 </p><p>  [7] Luke Welling.《php和mysql web開(kāi)發(fā)》(原書(shū)第4版). 2009-02出版.機(jī)械工業(yè)出版社 </p><p>  [8] 陳爭(zhēng)航.《PHP5+MySQL5 Web應(yīng)用

107、開(kāi)發(fā)寶典》.2008-01出版.電子工業(yè)出版社</p><p>  [9] 梅隆尼.《PHP、MySQL和Apache編程導(dǎo)學(xué)》(原書(shū)第4版). 2009-01出版.機(jī)械工業(yè)出版社</p><p>  [10] 翁燁暉.《PHP5+MySQL網(wǎng)站開(kāi)發(fā)基礎(chǔ)與應(yīng)用》. 2008-09出版.清華大學(xué)出版社</p><p>  [11] 黃炳強(qiáng).《PHP5+MySQL網(wǎng)站開(kāi)

108、發(fā)實(shí)例精講》(附盤(pán)). 2007-07出版.人民郵電出版社</p><p>  [12] 丁月光,孫更新,閆吉輝.《PHP+MySQL動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)》(附盤(pán)). 2008-11出版.清華大學(xué)出版社</p><p>  [13] 陸昌輝.《PHP Web開(kāi)發(fā)快速入門(mén)及實(shí)例精選》. 2008-04出版.電子工業(yè)出版社 </p><p>  [14] 李立功 趙揚(yáng).《MY

109、SQL程序設(shè)計(jì)與數(shù)據(jù)庫(kù)管理》. 2001-02出版.科學(xué)出版社 </p><p>  [15] 趙增敏.《PHP+MySQL+Dreamweaver8動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)從基礎(chǔ)到實(shí)踐》(含光盤(pán)). 2007-07出版.電子工業(yè)出版社</p><p><b>  11 附錄</b></p><p><b>  參考的網(wǎng)站有:</b>

110、</p><p>  http://www.csdn.net/ 中國(guó)程序員網(wǎng)站的ASP技術(shù)論壇.</p><p>  http://www.programfan.com/ 編程愛(ài)好者網(wǎng)站的ASP技術(shù)文章.</p><p>  http://www.5ud.com/ 無(wú)憂網(wǎng)站的網(wǎng)絡(luò)考試系統(tǒng).</p><p>  http://www.ccafc

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論