軟件工程圖書銷售系統(tǒng)課設報告_第1頁
軟件工程圖書銷售系統(tǒng)課設報告_第2頁
軟件工程圖書銷售系統(tǒng)課設報告_第3頁
軟件工程圖書銷售系統(tǒng)課設報告_第4頁
軟件工程圖書銷售系統(tǒng)課設報告_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

沈陽理工大學課程設計專用紙№.PAGE22沈陽理工大學目錄TOC\o"1-3"\u目錄 11問題定義 22可行性研究 32.1項目概述 32.2可行性分析的前提 32.2.1項目的目標 32.2.2項目的環(huán)境 32.3可選的方案 32.3.1方案一 32.3.2方案二 32.4所建議的系統(tǒng) 32.4.1系統(tǒng)說明 32.4.2高層數(shù)據(jù)流圖 42.5經(jīng)濟可行性 42.6技術(shù)可行性 42.7操作可行性 53需求分析 63.1需求概述 63.2需求模型 63.2.1數(shù)據(jù)模型 63.2.2功能模型 73.2.3行為模型 73.2.4數(shù)據(jù)字典 84總體設計 94.1系統(tǒng)體系結(jié)構(gòu) 94.2模塊詳細說明 94.3數(shù)據(jù)庫設計 95詳細設計 125.1人機界面設計 125.2過程設計 136測試 216.1白盒測試 216.2黑盒測試 217結(jié)論 22參考文獻 231問題定義人們傳統(tǒng)的都在書城里尋找和購買自己所需要和喜歡的圖書。但由于時間和精力的限制經(jīng)常去書城是不太方便的。另外在書店中面對大量的圖書也會有無從下手的感覺。人們更需要一種輕松、快捷的購物環(huán)境。而商家面對顧客的這種需求,為了保留現(xiàn)有的客源,同時擴大銷售范圍,降低廣告成本,也需要采用一種新的運營方式,網(wǎng)上購書就是這樣應運而生的。網(wǎng)上圖書訂購系統(tǒng)本著讓圖書訂購與管理做到快捷、方便、簡單、擺脫用手工操作處理圖書訂購的問題,工作非常繁瑣,需要大量的人力、物力和財力,極大的浪費了資源的劣勢而設計,它可以使管理員從繁重的手工操作中解脫出來。網(wǎng)上圖書訂購系統(tǒng)是一項非常有意義的開發(fā)工作,其發(fā)展的潛力巨大,它的建立使顧客節(jié)省了大量的時間且給商家?guī)砝?,實現(xiàn)通過互連網(wǎng)而進行的圖書管理,其發(fā)展前景和影響意義也將是非常深遠的。2可行性研究2.1項目概述人們傳統(tǒng)的都在書城里尋找和購買自己所需要和喜歡的圖書。但由于時間和精力的限制經(jīng)常去書城是不太方便的。另外在書店中面對大量的圖書也會有無從下手的感覺。人們更需要一種輕松、快捷的購物環(huán)境。而商家面對顧客的這種需求,為了保留現(xiàn)有的客源,同時擴大銷售范圍,降低廣告成本,也需要采用一種新的運營方式,網(wǎng)上購書就是這樣應運而生的。2.2可行性分析的前提2.2.1項目的目標制作一個網(wǎng)上圖書訂購系統(tǒng),能讓商家將圖書信息在網(wǎng)上進行展示,以供顧客選擇。從而達到節(jié)省顧客購買、挑選圖書的時間。2.2.2項目的環(huán)境當今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。計算機進行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了是購買圖書變得快捷方便而設計的。2.3可選的方案2.3.1方案一使用數(shù)據(jù)庫語言MySQL建圖書信息表及會員信息表,連接至VisualStudio2010編寫的網(wǎng)上書店中。2.3.2方案二使用基于JAVA系統(tǒng)的開發(fā)軟件 NetBeans建立內(nèi)置的數(shù)據(jù)庫圖書信息表為基礎,再建立J2EE項目bookstore。2.4所建議的系統(tǒng)2.4.1系統(tǒng)說明1.數(shù)據(jù)庫本軟件開發(fā)使用的數(shù)據(jù)庫是MySQL,MySQL是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司。在2008年1月16號被Sun公司收購。目前MySQL被廣泛地應用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。2.JavaJava是由SunMicrosystems公司推出的Java面向?qū)ο蟪绦蛟O計語言(以下簡稱Java語言)和Java平臺的總稱。由JamesGosling和同事們共同研發(fā),并在1995年正式推出。Java最初被稱為Oak,是1991年為消費類電子產(chǎn)品的嵌入式芯片而設計的。1995年更名為Java,并重新設計用于開發(fā)Internet應用程序。用Java實現(xiàn)的HotJava瀏覽器(支持Javaapplet)顯示了Java的魅力:跨平臺、動態(tài)Web、Internet計算。從此,Java被廣泛接受并推動了Web的迅速發(fā)展,常用的瀏覽器均支持Javaapplet。另一方面,Java技術(shù)也不斷更新。Java自面世后就非常流行,發(fā)展迅速,對C++語言形成有力沖擊。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。2.4.2高層數(shù)據(jù)流圖圖2.1圖書購買數(shù)據(jù)流圖2.5經(jīng)濟可行性開發(fā)一個圖書訂購系統(tǒng)所需的人力和物力并不是很大。而一旦系統(tǒng)正常運行后,擴大了銷售的范圍,在銷售量和經(jīng)營利潤上是無可估量的2.6技術(shù)可行性構(gòu)成WEB頁面的主要工具是HTML,以它作為WEB的基礎。利用ASP技術(shù),服務器可以執(zhí)行用戶為VBScript或JavaSeript編寫的嵌入HTML文檔總程序。WEB頁面通過ASP可以訪問數(shù)據(jù)庫,存取服務器的有關(guān)資源,使得Web頁面具有強大的交互能力。采用可直接插入到HTML文檔中的JavaSeript,它具有Java的許多特性,但比Java更為簡單有效,而且不需要編譯。應用程序可通過調(diào)用ODBC(開放式數(shù)據(jù)庫連接)這一數(shù)據(jù)庫編程接口的接口函數(shù)來訪問來自不同數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)。以ADO(ActiveXDateObjects)作為Web服務器端的內(nèi)置組件,允許編寫程序通過MicrosoftSQLServer或MicrosoftAccess系統(tǒng),訪問并操縱數(shù)據(jù)庫服務器中的數(shù)據(jù)。2.7操作可行性本系統(tǒng)開發(fā)的開發(fā)宗旨是以便捷為中心。隨著internet的普及和推廣,上網(wǎng)對于大部分人已經(jīng)不陌生,通過撥號或?qū)拵藗兛梢暂p松上網(wǎng),簡易的網(wǎng)上操作對于用戶來說已不是件難事。3需求分析3.1需求概述1.用戶注冊及登錄2.用戶查詢圖書3.提交訂單4.確認支付5.網(wǎng)店管理員統(tǒng)計訂單6.圖書管理及會員管理3.2需求模型3.2.1數(shù)據(jù)模型圖3.1總ER圖圖3.2圖書信息ER圖3.2.2功能模型圖3.3P1:圖書管理功能模型3.2.3行為模型主屏Do:要求事務類型等待輸入信息檢測賬戶提示已使用主屏Do:要求事務類型等待輸入信息檢測賬戶提示已使用新開賬戶結(jié)束Do:提示成功會員選擇注冊信息賬戶賬戶未使用圖3.4賬戶注冊過程狀態(tài)圖圖3.5購書過程狀態(tài)圖3.2.4數(shù)據(jù)字典表3.1圖書數(shù)據(jù)字典圖書信息=書籍編號+書籍類別+書籍名稱+書籍價格+書籍簡介+書籍折扣+庫存數(shù)量書籍編號=0{數(shù)字}10書籍類別=0{字母}20書籍名稱=0{字母}40書籍價格=0{數(shù)字}10書籍簡介=0{字母}80書籍折扣=[數(shù)字]庫存數(shù)量=0{數(shù)字}1004總體設計網(wǎng)上圖書訂閱系統(tǒng)4.1系統(tǒng)體系結(jié)構(gòu)網(wǎng)上圖書訂閱系統(tǒng)1.0顧客1.0顧客2.0網(wǎng)店管理員1.1注冊1.2登錄1.4提交訂單1.3查詢圖書1.1注冊1.2登錄1.4提交訂單1.3查詢圖書1.5確認支付2.1統(tǒng)計訂單2.2圖書管理2.3會員管理圖4.1系統(tǒng)層次圖4.2模塊詳細說明表4.1查詢圖書的IPO表(P1圖書管理中)系統(tǒng)名稱:網(wǎng)上圖書訂閱系統(tǒng)設計人:李芳慧、朱燕宇、孔繁鷥模塊名:查詢圖書日期:模塊編號:1.3調(diào)用:用戶被調(diào)用:輸入:用戶查詢的圖書名稱輸出:用戶查詢的圖書信息處理:輸入用戶所查詢的圖書名稱,輸出相對應的圖書信息注釋:表4.2網(wǎng)上書店的IPO表(D1:圖書信息存儲)系統(tǒng)名稱:網(wǎng)上圖書訂閱系統(tǒng)設計人:李芳慧、朱燕宇、孔繁鷥模塊名:圖書管理日期:模塊編號:2.2調(diào)用:網(wǎng)店管理被調(diào)用:輸入:圖書庫存信息輸出:各類圖書數(shù)量處理:統(tǒng)計所有賣出圖書與剩余圖書的數(shù)量,并進行統(tǒng)計處理注釋:4.3數(shù)據(jù)庫設計1.數(shù)據(jù)設計:(1)圖書信息(數(shù)據(jù)庫表、查詢結(jié)果)表4.3圖書信息數(shù)據(jù)庫表列名數(shù)據(jù)類型可否為空描述idvarchar(40)NOTNULL書籍ID(主鍵)namevarchar(100)NOTNULL書籍名稱authorvarchar(40)NOTNULL作者pricedecimal(8,2)NOTNULL售價editionvarchar(40)NOTNULL版次pubcomvarchar(40)NOTNULL出版社imagenamevarchar(100)NOTNULL圖片名稱descriptionvarchar(255)NULL描述category_idvarchar(40)NULL分類ID(外鍵)(2)共享數(shù)據(jù)a.查詢結(jié)果和選中的圖書信息b.作為session參數(shù)在NetBeans7.3版本中建立內(nèi)置的數(shù)據(jù)庫BookStore,建立表MYBOOKLIB,輸入的測試數(shù)據(jù)如下:圖4.2圖書數(shù)據(jù)庫表展示2、EJB接口設計MybooklibFacade管理圖書信息(封裝數(shù)據(jù)庫)search(Stringkey):根據(jù)關(guān)鍵字從數(shù)據(jù)庫中查找出圖書信息記錄(數(shù)組);條件:書名、作者、出版社名中包含關(guān)鍵字;根據(jù)書號,找出圖書信息記錄具體算法如下:publicArrayList<Bookstore>search(Stringkey){List<Bookstore>all=this.findAll();if(all.isEmpty()){returnnull;}ArrayList<Bookstore>result=newArrayList<Bookstore>();for(Bookstorecurrent:all){if(current.getTitle().toLowerCase().contains(key)||current.getAuthor().toLowerCase().contains(key)||current.getPress().toLowerCase().contains(key)){result.add(current);}}returnresult;}5詳細設計5.1人機界面設計圖5.1首頁界面展示輸入java關(guān)鍵字,點擊“查詢”:圖5.2圖書目錄頁面如果還需要查詢其他圖書,點擊“重新查詢”便回到了查詢頁面,此時,輸入關(guān)鍵字“李金明”并點擊“查詢”后,就會從數(shù)據(jù)庫中查詢所有書名、作者或者出版社名稱中含有關(guān)鍵字的結(jié)果并顯示在頁面上:圖5.3圖書查詢頁面5.2過程設計在NetBeans7.3中先建立數(shù)據(jù)庫Mybooklib,并且輸入測試數(shù)據(jù)。單擊“文件/新建項目/JavaEE/企業(yè)應用程序”,輸入項目名稱bookstore,確定后會建立J2EE項目bookstore。在bookstore-war節(jié)點單擊右鍵,新建JSP文件。1.圖書查詢頁search.jsp代碼:<%--Document:SearchCreatedon:2013-5-18,10:33:29Author:Administrator--%><%@pagecontentType="text/html"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>網(wǎng)上書店</title></head><bodystyle="background:url('image/7.jpg')no-repeat"><br><br><br><br><center><h1><b><fontcolor=Fuchsia>歡迎來到網(wǎng)上書店^^</font></b></h1><br><br><br><br><br><br><br><h2><fontcolor=Lime>請輸入您要查詢圖書的關(guān)鍵字(書名、作者或出版社)</font></h2></center><p><FORMmethod="post"action="CtrlServlet"><center><inputtype="text"name="key"><P><inputtype="hidden"name="page"value="index"/><inputtype="submit"name="Query"value="模糊查詢"></center></FORM></body></html>2.圖書目錄頁directory.jsp代碼:<%--Document:DirectoryCreatedon:2013-5-27,12:46:35Author:Administrator--%><%@pageimport="book.Mybooklib"%><%@pageimport="java.util.ArrayList"%><%@pagecontentType="text/html"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>圖書查詢結(jié)果</title></head><bodystyle="background:url('image/5.jpg')no-repeat"><center><h1><fontcolor="Purple">查詢結(jié)果</font></h1><%ArrayList<Mybooklib>result=(ArrayList<Mybooklib>)session.getAttribute("directory");if(result==null||result.isEmpty()){%><fontcolor="Maroon"><h2>抱歉,目前沒有您需要的圖書</h2></font><p><formname="重新查詢"action="index.jsp"><inputtype="submit"name="submit"value="重新查詢"/></form><%}else{%><formaction="CtrlServlet"><fontcolor="Aqua"><h2>符合查詢關(guān)鍵字的圖書如下</h2></font><tableborder="1"><tr><th></th><th>書名</th><th>作者</th><th>出版社</th><th>價格</th></tr><%for(Mybooklibcurrent:result){%><tr><td><inputtype="checkbox"name="<%=current.getIsbn()%>"value="<%=current.getIsbn()%>"/><td><%=current.getTitle()%></td><td><%=current.getAuthor()%></td><td><%=current.getPress()%></td><td><%=current.getPrice()%></td></tr><%}%></table><br><inputtype="hidden"name="page"value="Directory"/><inputtype="submit"name="submit"value="加入購物車"/></form><fontcolor="Aqua"><h2>如需更多圖書……</h2></font><formname="重新查詢"action="index.jsp"><inputtype="submit"name="submit"value="重新查詢"/></form><%}%></center></body></html>3.在bookstore-ejb節(jié)點單擊右鍵,新建“通過數(shù)據(jù)庫生成實體類”,選擇數(shù)據(jù)源“新建數(shù)據(jù)源”,將Mybooklib數(shù)據(jù)庫添加到數(shù)據(jù)源中,選擇表源Mybooklib,點擊下一步即可根據(jù)前面建立的數(shù)據(jù)庫Mybooklib創(chuàng)建實體類,創(chuàng)建包book,將實體類命名為Mybooklib。會自動生成實體類Mybooklib.java,代碼如下:/**Tochangethistemplate,chooseTools|Templates*andopenthetemplateintheeditor.*/packagebook;importjava.io.Serializable;importjavax.persistence.Basic;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.Id;importjavax.persistence.NamedQueries;importjavax.persistence.NamedQuery;importjavax.persistence.Table;importjavax.validation.constraints.NotNull;importjavax.validation.constraints.Size;importjavax.xml.bind.annotation.XmlRootElement;/****@authorAdministrator*/@Entity@Table(name="MYBOOKLIB")@XmlRootElement@NamedQueries({@NamedQuery(name="Mybooklib.findAll",query="SELECTmFROMMybooklibm"),@NamedQuery(name="Mybooklib.findByIsbn",query="SELECTmFROMMybooklibmWHEREm.isbn=:isbn"),@NamedQuery(name="Mybooklib.findByTitle",query="SELECTmFROMMybooklibmWHEREm.title=:title"),@NamedQuery(name="Mybooklib.findbymohu",query="SELECTmFROMMybooklibmWHEREm.titleLIKE:keyORm.authorLIKE:keyORm.pressLIKE:key"),@NamedQuery(name="Mybooklib.findByAuthor",query="SELECTmFROMMybooklibmWHEREm.author=:author"),@NamedQuery(name="Mybooklib.findByPress",query="SELECTmFROMMybooklibmWHEREm.press=:press"),@NamedQuery(name="Mybooklib.findByPrice",query="SELECTmFROMMybooklibmWHEREm.price=:price")})publicclassMybooklibimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@Id@Basic(optional=false)@NotNull@Size(min=1,max=100)@Column(name="ISBN")privateStringisbn;@Size(max=100)@Column(name="TITLE")privateStringtitle;@Size(max=100)@Column(name="AUTHOR")privateStringauthor;@Size(max=100)@Column(name="PRESS")privateStringpress;//@Max(value=?)@Min(value=?)//ifyouknowrangeofyourdecimalfieldsconsiderusingtheseannotationstoenforcefieldvalidation@Column(name="PRICE")privateDoubleprice;publicMybooklib(){}publicMybooklib(Stringisbn){this.isbn=isbn;}publicStringgetIsbn(){returnisbn;}publicvoidsetIsbn(Stringisbn){this.isbn=isbn;}publicStringgetTitle(){returntitle;}publicvoidsetTitle(Stringtitle){this.title=title;}publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.author=author;}publicStringgetPress(){returnpress;}publicvoidsetPress(Stringpress){this.press=press;}publicDoublegetPrice(){returnprice;}publicvoidsetPrice(Doubleprice){this.price=price;}@OverridepublicinthashCode(){inthash=0;hash+=(isbn!=null?isbn.hashCode():0);returnhash;}@Overridepublicbooleanequals(Objectobject){//TODO:Warning-thismethodwon'tworkinthecasetheidfieldsarenotsetif(!(objectinstanceofMybooklib)){returnfalse;}Mybooklibother=(Mybooklib)object;if((this.isbn==null&&other.isbn!=null)||(this.isbn!=null&&!this.isbn.equals(other.isbn))){returnfalse;}returntrue;}@OverridepublicStringtoString(){return"book.Mybooklib[isbn="+isbn+"]";}}4.在bookstore-ejb節(jié)點單擊右鍵,選擇新建“實體類的會話Bean”并勾選“本地”,即可自動建立實體類Mybooklib.java的會話Bean:MybooklibFacade,代碼如下:/**Tochangethistemplate,chooseTools|Templates*andopenthetemplateintheeditor.*/packagebook;importjavax.ejb.Stateless;importjavax.persistence.EntityManager;importjavax.persistence.PersistenceContext;/****@authorAdministrator*/@StatelesspublicclassMybooklibFacadeextendsAbstractFacade<Mybooklib>implementsMybooklibFacadeLocal{@PersistenceContext(unitName="bookstore-ejbPU")privateEntityManagerem;@OverrideprotectedEntityManagergetEntityManager(){returnem;}publicMybooklibFacade(){super(Mybooklib.class);}}實現(xiàn)的遠程接口代碼如下:/**Tochangethistemplate,chooseTools|Templates*andopenthetemplateintheeditor.*/packagebook;importjava.util.ArrayList;importjava.util.List;importjavax.ejb.Local;/****@authorAdministrator*/@LocalpublicinterfaceMybooklibFacadeLocal{voidcreate(Mybooklibmybooklib);voidedit(Mybooklibmybooklib);voidremove(Mybooklibmybooklib);Mybooklibfind(Objectid);List<Mybooklib>findAll();ArrayList<Mybooklib>search(Stringkey);List<Mybooklib>findRange(int[]range);List<Mybooklib>findbymohu(Objecta);intcount();}5.點擊右鍵,選擇“插入代碼/business方法”,將方法名命名為search,數(shù)據(jù)類型為ArrayList,參數(shù)名稱為key,數(shù)據(jù)類型為String,此時便在MybooklibFacade和MybooklibFacadeLocal中添加了方法publicArrayList<Mybooklib>search(Stringkey),在其中填入從數(shù)據(jù)庫中根據(jù)關(guān)鍵字key模糊查找圖書的方法,代碼如下:

溫馨提示

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

評論

0/150

提交評論