電子相冊系統(tǒng)需求分析.doc
中原工學(xué)院軟件學(xué)院 二級(jí)實(shí)踐課題設(shè)計(jì)任務(wù)書姓 名 劉亞敏 計(jì)算機(jī)信息管理 專業(yè) 112 班題 目相冊管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)設(shè)計(jì)任務(wù)要求設(shè)計(jì)一個(gè)簡單的相冊管理程序,能實(shí)現(xiàn)新建、打開相冊,導(dǎo)入照片、幻燈片放映、旋轉(zhuǎn)圖片等功能??蓪?shí)現(xiàn)按相冊創(chuàng)建時(shí)間、照片上傳時(shí)間、照片描述等查看相冊。要求使用數(shù)據(jù)庫記錄照片信息,并用文件夾及文件操作管理相冊及照片。時(shí)間進(jìn)度第1周:( 2012.06.112012.06.17 ):系統(tǒng)需求分析,進(jìn)行界面設(shè)計(jì);設(shè)計(jì)系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)進(jìn)行分析、設(shè)計(jì),并通過畫E-R圖的方式來幫助實(shí)現(xiàn)數(shù)據(jù)庫結(jié)構(gòu)的完整設(shè)計(jì),列出數(shù)據(jù)庫數(shù)據(jù)表,之后以列出的關(guān)系模型為依據(jù)進(jìn)行第2周:( 2012.06.18 2012.06.24 ):對(duì)系統(tǒng)進(jìn)行詳細(xì)的分析設(shè)計(jì),根據(jù)不同的功能模塊,對(duì)其進(jìn)行相應(yīng)的編碼及測試;第3周:( 2012.06.25 2012.07.01 ):對(duì)系統(tǒng)進(jìn)行測試和糾錯(cuò),進(jìn)一步完善其功能,之后進(jìn)行報(bào)告總結(jié),交與老師驗(yàn)收。原 主始 要資 參料 考與 文 獻(xiàn)01 李紅.數(shù)據(jù)庫原理與應(yīng)用,高等教育出版,2003年3月。02 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò).電子工業(yè)出版社,2008年1月。03白以恩.計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)及應(yīng)用M. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2000.189258指導(dǎo)教師簽字: 年 月 日摘 要由于市場競爭的需要,交流方式的多樣化,用戶的可選擇的方式也就不斷增加,對(duì)于軟件研發(fā)者,軟件功能的多樣化和完善才是競爭的資本。由于信息交流的多樣化,特別是電子信息技術(shù)的發(fā)展,同時(shí),隨著數(shù)據(jù)庫技術(shù),客戶/服務(wù)器技術(shù)等的發(fā)展,使得電子相冊系統(tǒng)的功能更加完善。電子相冊管理系統(tǒng)的特點(diǎn)是從相冊管理的角度出發(fā),通過數(shù)據(jù)庫將幾乎所有與之相關(guān)的數(shù)據(jù)統(tǒng)一管理起來,從而形成了集成的信息集。電子相冊管理系統(tǒng)較好的用戶界面,信息共享,信息管理使得管理人員和用戶使用更加的便捷,而且電子相冊系統(tǒng)的可操作性非常強(qiáng),針對(duì)不同教育程度的人群。電子相冊系統(tǒng)容納的信息量非常大,主要通過文字和圖片等方式展示出來,針對(duì)當(dāng)前信息交流和管理類型的軟件較多的原因,電子相冊系統(tǒng)通過簡單的幾個(gè)功能模塊就實(shí)現(xiàn)了用戶的登錄、注冊、信息更新、信息共享、信息管理等功能。且在不同的功能模塊中,分工明確,不同的功能模塊通過控件聯(lián)系起來。從而使得用戶之間的交流更加的多樣化。關(guān)鍵詞:相冊管理;數(shù)據(jù)庫設(shè)計(jì);界面設(shè)計(jì)。 目 錄摘 要3第1章 緒 論51.1課題背景51.2相冊管理系統(tǒng)的現(xiàn)狀51.3 課題研究內(nèi)容5第2章 需求分析62.1 相冊需求分析62.2 需求分析的任務(wù)概述62.2.1 目錄62.2.2用戶的特點(diǎn)62.2.3假定和約束62.2.4需求約定72.2.5功能詳細(xì)描述72.3 系統(tǒng)環(huán)境需求72.3.1 開發(fā)環(huán)境需求72.3.2 運(yùn)行環(huán)境需求7第3章 概要設(shè)計(jì)83.1 數(shù)據(jù)庫概要設(shè)計(jì)83.1.1 實(shí)體及其屬性83.1.2 E-R模型8第4章 詳細(xì)設(shè)計(jì)94.1 數(shù)據(jù)庫的詳細(xì)設(shè)計(jì)94.2結(jié)構(gòu)化分析與設(shè)計(jì)104.2.1數(shù)據(jù)主要功能的數(shù)據(jù)流程圖104.2.2系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)124.3系統(tǒng)詳細(xì)設(shè)計(jì)124.3.1相冊登錄管理124.3.2相冊信息管理13第5章 運(yùn)行及測試175.1系統(tǒng)測試概要175.2 系統(tǒng)維護(hù)19第6章 結(jié)束語20附錄 系統(tǒng)相關(guān)代碼22第1章 緒 論1.1課題背景由于市場競爭的需要,交流方式的多樣化,用戶的可選擇的方式也就不斷增加,對(duì)于軟件研發(fā)者,軟件功能的多樣化和完善才是競爭的資本。由于信息交流的多樣化,特別是電子信息技術(shù)的發(fā)展,同時(shí),隨著數(shù)據(jù)庫技術(shù),客戶/服務(wù)器技術(shù)等的發(fā)展,使得相冊系統(tǒng)的功能更加完善。相冊管理系統(tǒng)的特點(diǎn)是從相冊管理的角度出發(fā),通過數(shù)據(jù)庫將幾乎所有與之相關(guān)的數(shù)據(jù)統(tǒng)一管理起來,從而形成了集成的信息集。相冊管理系統(tǒng)較好的用戶界面,信息共享,信息管理使得管理人員和用戶使用更加的便捷,而且相冊系統(tǒng)的可操作性非常強(qiáng),針對(duì)不同教育程度的人群。相冊系統(tǒng)容納的信息量非常大,主要通過文字和圖片等方式展示出來,針對(duì)當(dāng)前信息交流和管理類型的軟件較多的原因,相冊系統(tǒng)通過簡單的幾個(gè)功能模塊就實(shí)現(xiàn)了用戶的登錄、注冊、信息更新、信息共享、信息管理等功能。且在不同的功能模塊中,分工明確,不同的功能模塊通過控件聯(lián)系起來。從而使得用戶之間的交流更加的多樣化。1.2相冊管理系統(tǒng)的現(xiàn)狀現(xiàn)有系統(tǒng)主要是由人工進(jìn)行管理和維護(hù),工作量較大,不能滿足人們對(duì)時(shí)間和效率的要求,導(dǎo)致這種相冊模式已不再適應(yīng)日益增長的相冊工作管理量。迫切需要找到一種更加智能的相冊管理以及注冊系統(tǒng)。1.3 課題研究內(nèi)容希望能夠以最低的成本,并且能夠在最短的時(shí)間期限內(nèi)研發(fā)出具有登錄、注冊、信息共享、信息管理等功能的相冊管理系統(tǒng)。該課題以某商標(biāo)注冊所的客戶管理需求為出發(fā)點(diǎn),實(shí)現(xiàn)了以下功能:1) 登錄模塊2) 相冊管理模塊3) 相片管理模塊第2章 需求分析2.1 相冊需求分析在完成了針對(duì)相冊管理軟件市場的前期調(diào)查,同時(shí)與多位軟件使用者進(jìn)行了全面深入地探討和分析的基礎(chǔ)上,提出了這份軟件需求規(guī)格說明書。此需求規(guī)格說明書對(duì)相冊管理系統(tǒng)軟件做了全面細(xì)致的用戶需求分析,明確所要開發(fā)的軟件應(yīng)具有的功能、性能與界面,使系統(tǒng)分析人員及軟件開發(fā)人員能清楚地了解用戶的需求,并在此基礎(chǔ)上進(jìn)一步提出概要設(shè)計(jì)說明書和完成后續(xù)設(shè)計(jì)與開發(fā)工作。本說明書的預(yù)期讀者為用戶、業(yè)務(wù)或需求分析人員、測試人員、項(xiàng)目管理人員。2.2 需求分析的任務(wù)概述2.2.1 目錄1、開發(fā)目標(biāo)人們交流的方式多種多樣,但是,我們在交流的同時(shí)希望更多的了解對(duì)方的信息,本軟件即是根據(jù)此需求進(jìn)行開發(fā)的。2、應(yīng)用目標(biāo)讓用戶能夠通過注冊信息,登錄并更新及查詢自己的信息,在此基礎(chǔ)上,用戶還能夠有效的掌握和共享其它資源,但是不能更新。從而促進(jìn)了信息管理的規(guī)范化和集成化,使得用戶之間的交流更加的便捷。2.2.2用戶的特點(diǎn)本軟件產(chǎn)品的最終用戶來源廣泛,相同之處則是為了增進(jìn)與他人之間的交流,管理人員則可以隨時(shí)更新軟件的項(xiàng)目,以及查詢和維護(hù)信息。本軟件面向大眾,用戶使用過程中的操作也不復(fù)雜。2.2.3假定和約束本軟件產(chǎn)品為大眾用戶使用,然而,本軟件在功能上還不夠完善,因此對(duì)于用戶的需求還無法完全實(shí)現(xiàn)。2.2.4需求約定本相冊管理系統(tǒng)主要能實(shí)現(xiàn)新建、打開相冊,導(dǎo)入照片、幻燈片放映、旋轉(zhuǎn)圖片等功能。可實(shí)現(xiàn)按相冊創(chuàng)建時(shí)間、照片上傳時(shí)間、照片描述等查看相冊,并用文件夾及文件操作管理相冊及照片。方便性和上傳照片快速性創(chuàng)造條件,對(duì)用戶的登陸注冊以及管理實(shí)現(xiàn)計(jì)算機(jī)管理,實(shí)現(xiàn)數(shù)據(jù)的及時(shí)保存預(yù)處理。2.2.5功能詳細(xì)描述相冊管理系統(tǒng)主體分為三大部分:用戶登陸和使用相冊和退出本系統(tǒng)。 <1> 用戶通過對(duì)用戶名和密碼的校驗(yàn)才可以登錄,會(huì)出現(xiàn)一個(gè)相冊管理系統(tǒng)主界面,里面包含了用戶可以做的所有操作。<2>在相冊主界面部分可以上傳相片,瀏覽相片,新建相冊,刪除相冊等。 <3>退出本系統(tǒng)就徹底的退出了相冊管理系統(tǒng)。2.3 系統(tǒng)環(huán)境需求2.3.1 開發(fā)環(huán)境需求 硬件需求:CPU PIII 500以上的PC服務(wù)器,內(nèi)存1GB以上,硬盤8GB以上。操作系統(tǒng):Windows XP 軟件需求:Microsoft Visual Studio 2005 開發(fā)環(huán)境,SQL Server 2005數(shù)據(jù)庫2.3.2 運(yùn)行環(huán)境需求硬件需求:CPU PIII 500 以上的PC服務(wù)器,內(nèi)存1CB以上,硬盤8GB以上。操作系統(tǒng):Windows XP; 軟件需求:.NET Framework v2.0。第3章 概要設(shè)計(jì)3.1 數(shù)據(jù)庫概要設(shè)計(jì) 對(duì)于企業(yè)客戶關(guān)系管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì),本文將從以下幾個(gè)方面進(jìn)行描述:首先是概念模型描述,包括對(duì)系統(tǒng)的實(shí)體屬性分析及系統(tǒng)的E-R圖,然后是系統(tǒng)的邏輯結(jié)構(gòu)設(shè)計(jì),即給出系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)表結(jié)構(gòu)及描述。3.1.1 實(shí)體及其屬性 整個(gè)系統(tǒng)各實(shí)體可用以下關(guān)系來表示(其中主鍵已用下劃線標(biāo)識(shí)):l 用戶(用戶賬號(hào),用戶名,用戶密碼)l 相冊(用戶名,相冊編號(hào),相冊名,創(chuàng)建時(shí)間,相冊簡述)l 相片(相冊編號(hào),相片編號(hào),相片名,創(chuàng)建時(shí)間,相片簡述)3.1.2 E-R模型用戶名 在分析過系統(tǒng)各實(shí)體之間的聯(lián)系后可得出系統(tǒng)的整體概念模型,用E-R圖表示出來,如圖3.1所示的。用戶編號(hào)用戶密碼用戶查看相冊屬性相片相片編號(hào)相片名字相冊簡介創(chuàng)建時(shí)間相冊名字相冊編號(hào)相片簡介創(chuàng)建時(shí)間圖3.1 E-R圖第4章 詳細(xì)設(shè)計(jì)為了方便用戶的操作,系統(tǒng)采用了模塊化設(shè)計(jì)的思想,通過各模塊的不同組合以實(shí)現(xiàn)不同的增、刪、改、查功能。最終,使該系統(tǒng)能夠具有規(guī)范化的格式、完整的信息量和易于查詢等的特點(diǎn)。4.1 數(shù)據(jù)庫的詳細(xì)設(shè)計(jì)依據(jù)數(shù)據(jù)庫的概要設(shè)計(jì),最后總結(jié)出數(shù)據(jù)庫結(jié)構(gòu)的主要數(shù)據(jù)表包括:用戶信息表,相冊信息表,相片信息表。以下將給出系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)的邏輯模型,即各數(shù)據(jù)表的結(jié)構(gòu)。1、用戶信息表 用戶信息表存儲(chǔ)用戶的相關(guān)信息,表結(jié)構(gòu)如表4.2所示表4.1 用戶信息表結(jié)構(gòu)列名數(shù)據(jù)類型長度允許空是否為主鍵用戶名char7否是用戶密碼char7否否用戶編號(hào)int否否2、相冊信息表 相冊信息表存儲(chǔ)相冊的相關(guān)信息,表結(jié)構(gòu)如表4.3所示表4.2 相冊信息表結(jié)構(gòu)列名數(shù)據(jù)類型長度允許空是否為主鍵用戶賬號(hào)char7否否相冊號(hào)char6否是相冊名char20否否創(chuàng)建日期smalldatetime否否3、相片信息表 相片信息表存儲(chǔ)相片的相關(guān)信息,表結(jié)構(gòu)如表4.4所示表4.3相片信息表結(jié)構(gòu)列名數(shù)據(jù)類型長度允許空是否為主鍵相冊號(hào)Char6否否相片號(hào)char7否否相片名char10否是相片簡介Int6否否4.2結(jié)構(gòu)化分析與設(shè)計(jì)4.2.1數(shù)據(jù)主要功能的數(shù)據(jù)流程圖1.登錄功能是否登錄取消服務(wù),退出界面YesNo用戶進(jìn)入登錄首界面輸入用戶編號(hào)及密碼進(jìn)入用戶個(gè)人界面系統(tǒng)查詢匹配YesNo2.用戶功能進(jìn)入個(gè)人檔案用戶界面選擇相應(yīng)操作進(jìn)入個(gè)人相冊查看、修改相應(yīng)數(shù)據(jù)選擇相應(yīng)操作打開相冊上傳相片刪除相冊瀏覽相片4.2.2系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)系統(tǒng)功能總結(jié)構(gòu)圖 相冊管理系統(tǒng)用戶登錄系統(tǒng)用戶信息管理系統(tǒng)相冊管理系統(tǒng)注 冊信息完善相片編輯及其他功能4.3系統(tǒng)詳細(xì)設(shè)計(jì)以下是系統(tǒng)各主要功能模塊的界面設(shè)計(jì)及實(shí)現(xiàn)。4.3.1相冊登錄管理進(jìn)入相冊的用戶必須先登錄,輸入正確的用戶名和登錄密碼,點(diǎn)擊“登錄”。 用戶在登錄界面填寫完用戶名及密碼后,單擊登錄按鈕,不是所有的用戶名和密碼都能進(jìn)入,輸入的用戶名和密碼需與數(shù)據(jù)庫中的用戶表內(nèi)的記錄一致,需進(jìn)行判斷。登錄頁面如圖4.1所示圖4.1 登錄頁面4.3.2相冊信息管理 用戶通過身份驗(yàn)證后進(jìn)入相應(yīng)功能頁面。點(diǎn)擊界面“登錄”按鈕,用戶在進(jìn)入系統(tǒng)后可以進(jìn)行相應(yīng)操作,其中包括新建相冊等,新建相冊需要把輸入的信息添加到數(shù)據(jù)庫中,相冊才可以建立成功。進(jìn)入“相冊管理界面”,可查看“相冊信息”。如圖4.2所示。圖4.2相冊管理頁面在該頁面通過選擇相冊查詢?nèi)?“美麗風(fēng)景”、“絢麗夜空”、“傷感人物”、“可愛動(dòng)物”、“魅力星座”等相冊信息,選擇其中的一個(gè)相冊,點(diǎn)擊打開對(duì)于相冊進(jìn)行查詢、編輯,系統(tǒng)都提供了查詢功能,點(diǎn)擊某一條相冊,點(diǎn)擊 “打開相冊”按鈕,將進(jìn)入該相冊中,可對(duì)相片進(jìn)行編輯,旋轉(zhuǎn),黑白化在該界面中單擊新建相冊集彈出相冊新建界面,其中包括相冊編號(hào)、相冊名、相冊描述,在這其中填入相應(yīng)數(shù)據(jù)后單擊新建相冊即可創(chuàng)建該相冊,同時(shí)在數(shù)據(jù)庫和前臺(tái)都有相應(yīng)更新;在列表式下拉框中選中某個(gè)相冊名后單擊“打開相冊”即可打開該相片管理界面,如圖4.3所示:43 相冊信息管理頁面在“相冊管理”頁面中,單擊“進(jìn)入相冊查詢”按鈕,彈出“相冊查詢”頁面,輸入相冊名,單擊“顯示結(jié)果”,在ListBox控件中,顯示相冊的相關(guān)信息,如圖4.4所示:圖4.4相冊查詢頁面第5章 運(yùn)行及測試5.1系統(tǒng)測試概要在編碼的過程中,需要通過不斷的對(duì)系統(tǒng)進(jìn)行調(diào)試,才能對(duì)其功能做出完善性的補(bǔ)充。所以測試在此期間起了相當(dāng)大的作用。 以下給出用戶登錄及客戶信息管理模塊的若干主要測試用例。如表5.1所示。l 登錄功能;實(shí)現(xiàn)用戶登錄,根據(jù)登錄者的不同,進(jìn)入不同界面。l 用戶注冊功能;實(shí)現(xiàn)用戶注冊功能,在注冊時(shí)填寫相應(yīng)的用戶個(gè)人信息(用戶名、密碼、等)l 用戶信息管理功能;實(shí)現(xiàn)用戶個(gè)人信息的管理,用戶對(duì)于個(gè)人信息可以隨時(shí)的修改。l 系統(tǒng)設(shè)置管理;用戶根據(jù)需要修改系統(tǒng)相關(guān)設(shè)置表5.1 測試用例序號(hào)功能模塊測試功能點(diǎn)操作步驟及數(shù)據(jù)期望結(jié)果實(shí)際結(jié)果1.登錄輸入正確用戶名密碼在登錄頁面輸入用戶名及密碼,點(diǎn)擊“登錄”按鈕正常登錄,顯示相應(yīng)功能頁面正確2.輸入正確的用戶名和錯(cuò)誤的密碼在登錄頁面輸入用戶名及密碼,點(diǎn)擊“登錄”按鈕不能正常登錄,系統(tǒng)給出提示系統(tǒng)給出提示:“密碼錯(cuò)誤,請(qǐng)重新輸入”3.用戶名或密碼空白在登錄頁面不輸入用戶名及密碼,直接點(diǎn)擊“登錄”按鈕系統(tǒng)給出提示系統(tǒng)給出提示“請(qǐng)輸入用戶名及密碼”4.相冊信息管理相冊信息的查詢根據(jù)相冊的名稱、創(chuàng)建時(shí)間等信息進(jìn)行對(duì)相冊進(jìn)行分類查詢按用戶要求顯示相冊列表按創(chuàng)建時(shí)間或相冊名字顯示相冊列表5.相冊信息的新建單擊相冊管理器中的新建相冊,彈出新建相冊界面,輸入相冊詳細(xì)信息,單擊“新建相冊”即創(chuàng)建相冊成功按用戶要求創(chuàng)建出相應(yīng)的相冊創(chuàng)建的相冊信息和用戶所填數(shù)據(jù)6.相片信息管理相片信息的新建點(diǎn)擊添加相片,在文件夾中選中要上傳的相片,填寫相片相應(yīng)信息,然后上傳上傳用戶希望看到的相片相冊列表和數(shù)據(jù)庫中出現(xiàn)相應(yīng)上傳的照片相片信息的修改點(diǎn)擊打開相片,在相片管理器重進(jìn)行對(duì)相片的,浮雕化、向左向右旋轉(zhuǎn)等功能單擊相應(yīng)的按鈕出現(xiàn)相應(yīng)想過單擊放大或縮小等按鍵會(huì)出現(xiàn)相應(yīng)的結(jié)果5.2 系統(tǒng)維護(hù)本系統(tǒng)主要采取三種方式維護(hù):1 改正性維護(hù)在軟件初期使用,由于某種原因,軟件存在一些錯(cuò)誤或缺陷。需要由軟件開發(fā)小組按用戶要求對(duì)系統(tǒng)進(jìn)行改正性維護(hù)。2 適應(yīng)性維護(hù)當(dāng)系統(tǒng)長時(shí)間使用后,隨著用戶的增加,系統(tǒng)在某些方面的速度可能不如剛開始的時(shí)候,所以對(duì)這個(gè)問題我們要做出適當(dāng)維護(hù)。3 完善性維護(hù)在系統(tǒng)使用后,該應(yīng)用系統(tǒng)可能不適應(yīng)業(yè)務(wù)的發(fā)展。用戶對(duì)軟件提出了新的需求和性能要求。第6章 結(jié)束語 通過長達(dá)將近兩周的軟件工程課程設(shè)計(jì),我們團(tuán)隊(duì)不但學(xué)會(huì)了軟件工程設(shè)計(jì)的基本步驟,而且也學(xué)會(huì)了如何培養(yǎng)自己的團(tuán)隊(duì)協(xié)作能力。在開發(fā)初期,團(tuán)隊(duì)必須使用統(tǒng)一的開發(fā)平臺(tái),由小組長統(tǒng)一部署,將小組分為幾個(gè)部分,大家分工合作再匯總以提高課程設(shè)計(jì)完成的效率,不懂的問題大家也可以相互幫忙解決,不懂的問題就要問,問老師問同學(xué),也可以上網(wǎng)搜索,千萬不要一個(gè)人在那里瞎想,因?yàn)槲覀兪且粋€(gè)團(tuán)隊(duì),我們要提高效率必須要相互幫助、良好的協(xié)作!前期工作做完了后,我們一定要進(jìn)行測試工作,每個(gè)人寫的代碼難免會(huì)出現(xiàn)一些問題,測試期間就是對(duì)這些問題進(jìn)行修改,然后總結(jié)經(jīng)驗(yàn)和教訓(xùn)!總之,在這次的設(shè)計(jì)過程中,我們學(xué)到的不僅是知識(shí),還認(rèn)識(shí)到許多事情。這次設(shè)計(jì)使我們的編程水平提高了一大步,使我們充分的認(rèn)識(shí)到合作的可貴。由于這次設(shè)計(jì)涉及到數(shù)據(jù)庫、軟件工程、C#,我們學(xué)到了不少編程工具與數(shù)據(jù)庫連接的知識(shí),對(duì)數(shù)據(jù)庫的操作有了進(jìn)一步的了解。這次設(shè)計(jì)對(duì)我們的綜合能力是一次很好的鍛煉,但是我們必須承認(rèn)自己的能力和知識(shí)還很膚淺。所以今后我們的學(xué)習(xí)道路還是很漫長的。最后,在這里我們要衷心的感謝我們的指導(dǎo)老師楊衛(wèi)明,謝謝他的悉心指導(dǎo)和熱心幫助。由于我們的水平有限,加之時(shí)間短暫,故電子相冊管理系統(tǒng)中還有許多不足之處,望老師加以批評(píng)指正,我們會(huì)在以后的課程設(shè)計(jì)中不斷改進(jìn),不斷完善。參考文獻(xiàn)01 李紅.數(shù)據(jù)庫原理與應(yīng)用,高等教育出版,2003年3月。02 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò).電子工業(yè)出版社,2008年1月。03白以恩.計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)及應(yīng)用M. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2000.189258附錄 系統(tǒng)相關(guān)代碼系統(tǒng)的主要代碼如下:用戶登錄:public partial class Login : Form public Login() InitializeComponent(); private void button1_Click(object sender, EventArgs e) if (textBox1.Text = "" | textBox2.Text = "") MessageBox.Show("用戶或密碼有空值!", "信息提示"); else string mysql; SqlConnection myconn = dataconnection.createConn(); /SqlConnection mysqlconn = new SqlConnection(); /string connString = "database=photo;integrated security=SSPI;server=RJXY302-29SQL2005" /mysqlconn.ConnectionString = connString; /mysqlconn.Open(); mysql = "Select * from us where user=" + textBox1.Text.Trim() + "and passageword=" + textBox2.Text.Trim() + "" SqlCommand mycmd = new SqlCommand(mysql, myconn ); int i = Convert.ToInt32(mycmd.ExecuteScalar(); if (i <=0) Form myform = new main (); myform.Show(); this.Hide(); else MessageBox.Show("用戶或密碼錯(cuò)誤!", "信息提示"); myconn.Close(); private void Form8_Load(object sender, EventArgs e) this.AcceptButton = this.button1; public string Getusename() return textBox1.Text.Trim(); private void textBox1_TextChanged(object sender, EventArgs e) 相冊管理界面: public partial class oppic : Form public oppic() InitializeComponent(); private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) private void oppic_Load(object sender, EventArgs e) int i; DirectoryInfo dinfo = new DirectoryInfo("f:相冊庫" + this.Text); FileSystemInfo fsinfo = dinfo.GetFileSystemInfos(); for (i = 0; i < fsinfo.Length; i+) listBox1.Items.Add(fsinfoi.ToString(); listBox1.SelectedIndex = 0; pictureBox1.Image = Image.FromFile("f:相冊庫" + this.Text + "" + listBox1.SelectedItem.ToString(); comboBox2.Items.Add("垂直翻轉(zhuǎn)"); comboBox2.Items.Add("水平翻轉(zhuǎn)"); comboBox2.Items.Add("90度水平翻轉(zhuǎn)"); comboBox2.Items.Add("180度水平翻轉(zhuǎn)"); private void listBox1_SelectedIndexChanged(object sender, EventArgs e) pictureBox1.Image = Image.FromFile("f:相冊庫" + this.Text + "" + listBox1.SelectedItem.ToString(); private void toolStripButton9_Click(object sender, EventArgs e) FileInfo Finfo = new FileInfo(listBox1.Text); Finfo.Delete(); private void button3_Click(object sender, EventArgs e) /private void pictureBox2_MouseMove(object sender, MouseEventArgs e) / / if (image != null) / / Cursor.Current = mycur; / Graphics gra = pictureBox1.CreateGraphics(); / Rectangle sourceRec = new Rectangle(e.X - 10, e.Y - 10, 30, 30); / Rectangle destRec = new Rectangle(e.X - 20, e.Y - 20, 50, 50); / gra.DrawImage(image, destRec, sourceRec, GraphicsUnit.Pixel); / / else / MessageBox.Show("選擇需要顯示的圖片"); / /Graphics graphics; / Image image1 = Image.FromFile("e相冊庫云臺(tái)山"); / private void button5_Click(object sender, EventArgs e) / / graphics.Clear(this.BackColor); / int width = Convert.ToInt32(Convert.ToDouble(comboBox1.Text)*image1.Width); / int height = Convert.ToInt32(Convert.ToDouble(comboBox1.Text)*image1.Height); / graphics.DrawImage(image1,180,26,width,height); / / private void button9_Click(object sender, EventArgs e) / / graphics.DrawImage(image,new Point(180,26); / / Cursor mycur = new Cursor("E:相冊庫云臺(tái)山"); / Bitmap image; / private void button4_Click(object sender, EventArgs e) / / openFileDialog1.Filter = "Jpeg File(*.jpg)|*.jpg" / if (openFileDialog1.ShowDialog() = DialogResult.OK) / / image = new Bitmap(openFileDialog1.FileName); / pictureBox1.Image = image; / pictureBox1.Height = image.Height; / pictureBox1.Width = image.Width; / / / private void button6_Click(object sender, EventArgs e) Bitmap bmp1 = new Bitmap(pictureBox1.Image); switch (comboBox2.SelectedItem.ToString() case "垂直翻轉(zhuǎn)": bmp1.RotateFlip(RotateFlipType.Rotate180FlipXY); break; case "水平翻轉(zhuǎn)": bmp1.RotateFlip(RotateFlipType.Rotate90FlipXY); break; case "90度水平翻轉(zhuǎn)": bmp1.RotateFlip(RotateFlipType.Rotate90FlipX); break; case "180度水平翻轉(zhuǎn)": bmp1.RotateFlip(RotateFlipType.Rotate180FlipX); break; pictureBox2.Image = bmp1; private void button7_Click(object sender, EventArgs e) Graphics g = pictureBox2.CreateGraphics(); g.Clear(pictureBox2.BackColor); Bitmap bmap = new Bitmap(pictureBox1.Image); bmap.SetResolution(300f, 300f); g.DrawImage(bmap,pictureBox2.ClientRectangle,0,0,bmap.Width,bmap.Height,GraphicsUnit.Pixel); g.Dispose(); private void button8_Click(object sender, EventArgs e) private void button4_Click(object sender, EventArgs e) if (openFileDialog1.ShowDialog() = DialogResult.OK) pictureBox1.Image = Image.FromFile(openFileDialog1.FileName); private void button5_Click(object sender, EventArgs e) Bitmap bmp = new Bitmap(pictureBox1.Image); for (int i = 0; i < bmp.Width - 1; i+) for (int j = 0; j < bmp.Height - 1; j+) Color color = bmp.GetPixel(i, j); Color colorLeft = bmp.GetPixel(i + 1, j + 1); int r = Math.Max(67, Math.Min(255, Math.Abs(color.R - colorLeft.R + 128); int g = Math.Max(67, Math.Min(255, Math.Abs(color.G - colorLeft.G + 128); int b = Math.Max(67, Math.Min(255, Math.Abs(color.B - colorLeft.B + 128); Color colorResult = Color.FromArgb(255, r, g, b); bmp.SetPixel(i, j, colorResult); pictureBox2.Image = bmp; private void button3_Click_1(object sender, EventArgs e) this.Close(); private void button8_Click_1(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e) / FileInfo Finfo = new FileInfo("E:相冊庫" + this.Text + "" + listBox1.SelectedItem.ToString(); / Finfo.Delete(); private void button2_Click(object sender, EventArgs e) Bitmap oldBitmap = new Bitmap(this.pictureBox1.Image); Bitmap newBitmap = new Bitmap(pictureBox1.Image); int Height = newBitmap.Height; int width = newBitmap.Width; Color color; int r, g, b, Result = 0; for (int i = 0; i < width; i+) for (int j = 0; j < Height; j+) color = oldBitmap.GetPixel(i, j); r = color.R; g = color.G; b = color.B; Result = (int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b); newBitmap.SetPixel(i, j, Color.FromArgb(Result, Result, Result); this.pictureBox2.Image = newBitmap; private void button8_Click_2(object sender, EventArgs e) Bitmap myBitmap = new Bitmap(pictureBox1.Image); Graphics g = pictureBox2.CreateGraphics(); g.Clear(pictureBox1.BackColor); Point P1 = new Point(10, 10); Point P2 = new Point(100,10); Point P3 = new Point(50,100); Point P = P1,P2,P3; g.DrawImage(myBitmap,P); g.Dispose(); private void button9_Click(object sender, EventArgs e) Bitmap oldBitmap = new Bitmap(pictureBox1.Image); Bitmap newBitmap = (Bitmap)oldBitmap.Clone(); int height = newBitmap.Height; int width = newBitmap.Width; Color pixel; int Laplacian = -1,-1,-1,-1,9,-1,-1,-1,-1 ; for (int x = 1; x < width -1; x+) for (int y = 1; y < height - 1; y+) int r = 0, g = 0, b = 0; int Index = 0; for (int col = -1; col <= 1; col+) for (int row = -1; row <= 1; row+) pixel = oldBitmap.GetPixel(x + row, y + col); r += pixel.R * LaplacianIndex; g += pixel.G * LaplacianIndex; b += pixel.B * LaplacianIndex; Index+; r = r > 255 ? 255 : r; r = r < 0 ? 0 : r; g = g > 255 ? 255: g; g = g < 0 ? 0 : g; b = b > 255 ? 255 : b; b = b < 0 ? 0 : b; newBitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b); this.pictureBox2.Image = newBitmap; private void button10_Click(object sender, EventArgs e) Bitmap myBitmap = new Bitmap(pictureBox1.Image); int Height = myBitmap.Height; int Width = myBitmap.Width; Bitmap bitmap = (Bitmap)myBitmap.Clone(); Color pixle; int Gauss = 1,2,1,2,4,2,1,2,1 ; for(int x = 1;x < Width -1; x+) for (int y = 1; y < Height - 1; y+) int r = 0, g = 0, b = 0; int Index = 0; for (int col = -1; col <= 1; col+) for (int row = -1; row <= 1; row+) pixle = myBitmap.GetPixel(x + row, y + col); r += pixle.R * GaussIndex; g += pixle.G * GaussIndex; b += pixle.B * GaussIndex; Index+; r /= 16; g /= 16; b /= 16; r = r > 255 ? 255 : r; r = r < 0 ? 0 : r; g = g > 255 ? 255 : g; g = g < 0 ? 0 : g; b = b > 255 ? 255 : b; b = b < 0 ? 0 : b; bitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b); this.pictureBox2.Image = bitmap; 相冊查詢:public partial class PS : Form public PS()