歡迎來到裝配圖網! | 幫助中心 裝配圖網zhuangpeitu.com!
裝配圖網
ImageVerifierCode 換一換
首頁 裝配圖網 > 資源分類 > DOC文檔下載  

網上書店畢業(yè)論文

  • 資源ID:36992608       資源大小:2.58MB        全文頁數:39頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

網上書店畢業(yè)論文

網上書店Online BookStore System姓 名: 學 號: 指導教師: 專業(yè)名稱: 計算及應用技術 所在系部: 信息工程系 二一二年六月畢業(yè)論文(設計)開題報告畢業(yè)論文(設計)開題報告姓名 班級 指導教師 學號20103042畢業(yè)論文(設計)題目網上書店1.選題目的和意義:一、選題目的:隨著 Internet 技術的發(fā)展,人們的日常生活已經離不開網絡。未來社會人們的生活和工作將越來越依賴于數字技術的發(fā)展,越來越數字化、網絡化、電子化、虛擬化。電子商務也隨著網絡的發(fā)展日益和人們的生活貼近。網上購物也成為了電子商務的一個時尚,而網上書店是最普遍,也最流行的一個動態(tài)的電子商務網站,它使每一位顧客不用出門在家里就能夠通過上網來輕松購買自己喜愛的書籍。為此本人選擇網上書店系統的設計與實現此題目。二、選題意義:網上書店為人們提供了更廣闊的環(huán)境:人們不受時間的限制,不受空間的限制,不受傳統購物的諸多限制,可以隨時隨地在網上交易。更廣闊的市場:在網上這個世界將會變得很小,一個商家可以面對全球的消費者,而一個消費者可以在全球的任何一家商家購物。更快速的流通和低廉的價格:電子商務減少了商品流通的中間環(huán)節(jié),節(jié)省了大量的開支,從而也大大降低了商品流通和交易的成本。更符合時代的要求:如今人們越來越追求時尚、講究個性,注重購物的環(huán)境,網上購物,更能體現個性化的購物過程。具體安排進度:2011 年 3 月 1 日30 日,選好課題,查找資料,編寫提綱;2011 年 4 月 1 日20 日,了解論文的格式,咨詢指導老師從哪方面入手,進行寫的狀態(tài)形成初稿,形成初稿;2011 年 4 月 21 日5 月 10 日,提交初稿,在指導老師的指導下,形成二稿;2011 年 5 月 11 日5 月 31 日,提交二稿,在老師的指導下修改定稿并準備答辯。 2 摘要摘要JAVA 語言是目前 Internet 上大型的 WEB 應用程序開發(fā)時使用得最熱門的編程語言,本文描述了JAVA 和 JSP 技術的特點以及在互聯網上的使用情況,介紹這兩種技術的重要編程方法和兩者之關的聯系,同時也會應用相關的 Struts 框架,并完成一個基于這種技術的網上書店系統?!娟P鍵字】JAVA, Struts, Servlet, JSP, 網絡編程, 電子商務, 網上書店AbstractAt present JAVA is the hottest programming language for WEB development, This text described the characteristics of JAVA and JSP technology and the state of operating on Internet, It introduced the relationship between them and the important programming method of the double technology, And also show the Struts technology, And work out an online bookstore system base on this kind of technology. Keywords: JAVA, Struts, Servlet, JSP, web program, internet, bookshop 3 前 言 隨著 Internet 國際互聯網的發(fā)展,越來越多的企業(yè)開始建造自己的網站?;贗nternet 的信息服務,商務服務已經成為現代企業(yè)一項不可缺少的內容。很多企業(yè)都已不滿足于建立一個簡單的僅僅能夠發(fā)布信息的靜態(tài)網站?,F代企業(yè)需要的是一個功能強大的,能提供完善的電子商務服務的動態(tài)商務網站。JSP 是 Sun 公司推出的一種網站開發(fā)技術,Sun 公司借助自己在 Java 上的不凡造詣,又把人們引進 JSP 時代,JSP 即 Java Server Page,它可以在 Servlet 和JavaBean 的支持下,完成功能強大的 Web 應用程序。所以,在我的畢業(yè)設計中,我采用了 JSP 作為開發(fā)工具,構建了一個能實現簡單的小型動態(tài)商務網站網上書店。該系統能實現用戶的注冊、登錄功能;能夠實現商品的查詢,訂購等功能。該系統基本上具備一個網上商品銷售系統應該具備的功能,該設計項目基本上體現了構建一個動態(tài)商務網站所需要的技術。通過這次的畢業(yè)設計,我了解了目前流行的動態(tài)商務網站的構成和運作原理,掌握了用 JSP 構建動態(tài)網站的相關知識和技術原理,鍛煉了自己的動手實踐能力。更重要的是,通過這次的畢業(yè)設計,我培養(yǎng)出了刻苦鉆研的學習精神和嚴肅認真的學習態(tài)度,這對我以后的學習和工作有很大的益處。在這次畢業(yè)設計過程中,我得到了指導老師李家兵老師和其他同組同學的悉心指導。在此,我對他們表示衷心的感謝! 4 第一章第一章 概述概述1.11.1 開發(fā)背景開發(fā)背景隨著時代的發(fā)展,信息技術、Internet/Intranet 技術、數據庫技術的不斷發(fā)展完善,網絡進程的加快,傳統的購物方式也越來越不能滿足人們快節(jié)奏的生活需求,使得企業(yè)的 IT 部門已經認識到 Internet 的優(yōu)勢,電子商務就是在這樣一個背景下產生發(fā)展起來的。伴隨著電子商務技術的不斷成熟,電子商務的功能也越來越強大,注冊用戶可以在網上搜索購買到自己想要的各種商品,初步讓人們體會到了足不出戶,便可隨意購物的快感。我的畢業(yè)設計也就正是一個電子商務系統的開發(fā)-網上商品銷售系統。1.21.2 JSPJSP 簡介簡介JSP(Java Server Pages)是由 Sun Microsystems 公司倡導、許多公司參與一起建立的一種動態(tài)網頁技術標準,JSP 技術在 Servlet 技術基礎上發(fā)展起來的,它正在飛速發(fā)展中,現已成為 Java 服務器編程的重要組成部分。它雖然還未成型,但是它必將和 J2EE(Java 2 Enterprise Edition)一起發(fā)展。JSP 是結合 markup(HTML 和 XML)和 Java 代碼來處理一種動態(tài)頁面。每一頁第一次被調用時,通過 JSP 引擎自動被編譯成 Servlet,然后被執(zhí)行,以后每次調用時,執(zhí)行編譯過的 Servlet。JSP 提供了多種方式訪問 Java class、Servlet、Applets 和 Web Server,因此,Web 應用的功能可以分成多個明確定義公用接口的組件,通過 JSP 將它 5 們結合在一起。1.2.11.2.1 JSPJSP 的運行原理的運行原理在 JSP 第一次獲得來自于客戶端瀏覽器的請求時,JSP 文件將被 JSP 引擎(JSP engine)轉換成一個 Servlet,即將”.jsp”文件編譯成 Java Class 文件。當Servlet 引擎接收到請求后,如果設置了使用最新的 JSP,它就會去找 JSP 文件,檢查該文件在上次編譯后是否改動過。如果改動過,就會重新編譯生成新的 Servlet,最終將請求轉交給編譯好的 Servlet 引擎執(zhí)行。如圖 1-1:圖 1-1 JSP 運行原理Client客戶端客戶端請求請求(Request)Web Server響應響應(Response)Serverextension服務器擴展服務器擴展ServletengineJSPengineServlet 引引擎擎JSP 引擎引擎ClassloaderJavacomplierJSPparser類載入器類載入器Java 編譯器編譯器JSP 語法分析語法分析器器 6 在編譯時如果發(fā)現 JSP 文件有任何語法錯誤,轉換過程將中斷,并向客戶端發(fā)出出錯信息;如果編譯成功,則所轉換產生的 Servlet 代碼被編譯,然后該 Servlet 被JSP 引擎加載到內存中。此時 JSP 引擎還請求了 jspInit()方法的執(zhí)行,并對此Servlet 初始化。JspInit()方法在 Servlet 的生命周期中只被請求一次,然后將被調用來處理客戶端的請求和回復操作。對于所有隨后對該 JSP 文件的請求,服務器將檢查該 JSP 文件自最后一次被存取后是否經過修改。如果沒有修改,則將請求交還給還在內存中的 Servlet 的 jspService()方法,執(zhí)行回復操作。由于 Servlet 始終駐于內存,所以響應是非??斓?。Jsp 頁面在第一次訪問時由于要轉化和編譯,運行速度較慢,但是當第二次訪問該頁時,由于文件已經被編譯成字節(jié)碼文件了,所以速度非常得快。1.2.21.2.2 JSPJSP 頁面的組成頁面的組成JSP 頁面看上去像標準的 HTML 和 XML 頁面,并附帶有 JSP 引擎能夠處理和解析執(zhí)行的代碼與組件。通常,JSP 代碼和組件用于創(chuàng)建在最終頁面上顯示的文本。通常來說,JSP 頁面包括編譯指令,動作指令,聲明,表達式和程序段等內容。1.21.2.3.3 JavaBeanJavaBean 技術介紹技術介紹JavaBean 技術是一種基于 Java 的組件技術,JavaBean 組件可以用來執(zhí)行復雜的計算任務,或負責與數據庫的交互以及數據的提取等,是解決代碼重用問題的一種策 7 略。以前的組件無法實現真正的代碼重用,其主要原因就是它們對于處理平臺的依賴和對開發(fā)語言的依賴過重。由于 Java 語言在這些方面所具有的特點和優(yōu)勢,使得基于它的軟件 JavaBean 組件技術倍受人們的關注。它的任務就是:一次編寫,可以在任何地方執(zhí)行,可以在任何地方重用。JavaBean 組件可以在任何地方沖用包括了可以在應用程序、其他組件、文檔、Web 站點和應用程序構造器工具等多種方案中再利用。為了創(chuàng)建和使用 Java 軟件組件,JavaBean 被實現為一種獨立于平臺和結構的應用程序接口,它的實現可以忽略內部的結構及細節(jié)問題,只需要定義其外部的特征及對外功能就行。其中,屬性、方法和事件三種接口可以獨立對外進行開發(fā)。JavaBean 的實質就是一個.class 文件,也可以成為類文件。JavaBean 以 binary格式保存,可以保護 Java 源代碼不容易被他人抄襲。1.2.41.2.4 JSPJSP 的運行環(huán)境的運行環(huán)境要運行 Jsp,需要有支持 Jsp 的服務器。這里分 2 種情況:一種是自身就支持 Jsp的服務器,如 Jrun,Weblogic,JSWDK 等;而另一種則是在不支持 Jsp 的服務器上安裝Jsp 引擎的插件,如在 IIS,Apache 等服務器上安裝 WebSphere,tomcat,Resin 等插件。其中主流服務器是 Weblogic 和 tomcat.Weblogic 是一款功能強大的服務器軟件,配置比較簡單,而且 Jsp 的擴展功能較多,附帶了數據庫的 JDBC 驅動程序。 ,支持 JHTML(一種與 Jsp 十分相似的技術),是目前市場占有率最高的服務器。 8 Tomcat 服務器是 Apache Group Jakarta 小組開發(fā)的一個免費服務器軟件,適合于嵌入 Apache 中使用,而且,它的源代碼可以免費獲得,你可以自由地對它進行擴充。訪問的地址 http:/jakarta. apache.org/tomacat/index.html, Tomcat 服務器的兼容性很好,如 WebLogic 服務器采用其為 Web 服務器引擎,Jbuilder 將其作為標準的測試服務器,Sun 公司也將其作為 JSP 技術應用的示例服務器第二章第二章 需求需求分析分析2.12.1 系統說明系統說明本系統是一個中小型的電子商務系統-網上書店,可以為各類用戶提供方便的在線買書環(huán)境,符合目前國內流行的電子商務模式。用戶可以在系統中實現注冊、瀏覽商品、搜索查詢商品、下定單、處理定單等功能;管理員可以通過用戶管理、定單管理、商品管理、評論管理等管理功能來對系統進行維護更新。2.22.2 系統功能簡介系統功能簡介2.2.12.2.1 基本功能基本功能 游客可以瀏覽網站 用戶登陸 用戶能夠瀏覽網站 提供搜索引擎,使用戶能夠按特定的條件對所需商品進行搜索 9 用戶下定單購買商品2.2.22.2.2 用戶界面設計用戶界面設計第三章第三章 系統設計系統設計3.13.1 系統設計思想系統設計思想本系統采用三層架構設計,它的工作原理如圖 3-1 所示。圖 3-1 10 采用三層構架以后,用戶界面層通過統一的接口向業(yè)務層發(fā)送請求,業(yè)務層按自己的邏輯規(guī)則將請求處理之后進行數據庫操作,然后將數據庫返回的數據封裝成類的形式返回給用戶界面層。這樣用戶界面層甚至可以不知道數據庫的結構,它只要維護與業(yè)務層之間的接口即可。3.23.2 系統功能模塊化系統功能模塊化如圖 3-2 為本系統的功能模塊圖。用戶登錄在線購書查看購物車在線購書察看訂單信息察看圖書詳細購買圖書查詢察看圖書詳細資料購買查看訂單詳細繼續(xù)購書清空購物車提交購物車刪除已經選購的圖書修改購買數量購買 11 圖 3-23.33.3 數據庫設計數據庫設計數據庫在一個信息管理系統中占有非常重要的地位,數據庫結構設計的好壞將直接對應用系統的效率,以及實現的效果產生影響。合理的數據庫結構設計可以提高數據存儲的效率,保證數據的完整和一致。3.3.13.3.1 數據庫需求分析數據庫需求分析針對一般在線書店的需求,得出如下需求信息。用戶分為游客和已注冊用戶。訂單分為單張詳細訂單和總訂單。一個用戶可以購買多本圖書。一個用戶對應一張訂單。一個列表對應多張訂單。針對本系統功能分析,總結出如下的需求信息。用戶,包括數據項:用戶 ID、用戶名、密碼。圖書,包括數據項:圖書編號、圖書名、價格、圖書介紹。訂單列表,包括數據項:訂單編號、圖書編號、購書數量。訂單,包括數據項:訂單編號、用戶編號、下單時間。 12 3.3.23.3.2 數據庫概念結構數據庫概念結構從本系統中規(guī)劃出的實體有:用戶實體、圖書實體、訂單實體、訂單列表實體。用戶信息實體的 E-R 圖如圖 3-4 所示。圖書實體的 E-R 圖如圖 3-5 所示。訂單實體的 E-R 圖如圖 3-6 所示。訂單列表實體的 E-R 圖如圖 3-7 所示。3.3.33.3.3 數據庫邏輯機構設計數據庫邏輯機構設計在線書店數據庫中各個表的設計結果如下面的標和所示。表 3-8 為圖書信息列表。 13 表 3-8表 3-9 為用戶信息列表。表 3-9表 3-10 為訂單總表,記錄某個用戶的訂單信息。表 3-10表 3-11 為訂單表,記錄但張訂單的具體信息。表 3-11 14 第四章第四章 詳細設計詳細設計4.14.1 系統概述系統概述我設計的這個系統是一個由 JSP 實現的網上購書系統。它實現了基本的登錄驗證、查詢商品、分頁處理、購物車處理以及訂單處理功能,其主要界面見圖 4-1:圖 4-14.24.2 系統主要文件系統主要文件 這個購書系統主要有 2 類文件,一類是 Bean 文件,我把它們統一放在了 cart文件夾里,保存在 jakarta-tomcat-5.0.27commonclassescart 下, (這是 tomcat要求的默認存放 Bean 的路徑) ;另一類是 jsp 文件,保存在 jakarta-tomcat-5.0.27webappsROOT。 (這是 tomcat 的默認工作環(huán)境) 15 Bean 文件:CartManager.java,OrderEntity.java,OrderItemEntity.javaProductEntity.java,UserEntity.javaJsp 文 件:cart.jsp4.34.3 詳細代碼及說明詳細代碼及說明4.3.14.3.1 實現用戶實體的實現用戶實體的 BeanBean1)用戶作為實體,我把他的 id, 姓名,密碼作為其屬性在 Bean 里面做了定義,它們都是和數據庫里的 user 表相對應的,在這個 Bean 里封裝的方法也主要是對這個表進行操作.這個幾個屬性都被定義為類的私有成員,外界不可訪問private String id;private String userName;private String userPassword;2)構造函數里做了 2 件事情,第一:尋找數據庫連接驅動;第二:對上面的 3 個私有成員初始化:public static String sDBDriver = sun.jdbc.odbc.JdbcOdbcDriver;public static String sConnStr = jdbc:odbc:cart;public static Connection conn = null;public UserEntity(String id,String userName,String userPassword)try 16 Class.forName(sDBDriver); catch(java.lang.ClassNotFoundException e) System.err.println(UserEntity: + e.getMessage();this.id=id;this.userName=userName;this.userPassword=userPassword;3)這個類我封裝了 2 類方法:一是查找特定用戶名的所有記錄,代碼如下:public static UserEntity queryUser(String userName) throws SQLExceptiontry Class.forName(sDBDriver); catch(java.lang.ClassNotFoundException e) System.err.println(UserEntity: + e.getMessage();String sql=select id,user_name,user_password from user where user_name= ? ; 17 ResultSet rs = null;try conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt = conn.prepareStatement(sql);prepStmt.setString(1,userName);rs = prepStmt.executeQuery(); catch(SQLException ex) System.err.println(OrderItemEntity executeQuery: + ex.getMessage();UserEntity user=null;if(rs.next()user=new UserEntity(rs.getString(1),rs.getString(2),rs.getString(3);return user;該類封裝的另一種方法是:用戶名和密碼的獲得。這個主要是為了方便后面驗證用戶合法性使用public String getUserName() 18 return userName;public String getUserPassword()return userPassword;4.3.24.3.2 實現商品實體的實現商品實體的 BeanBean雖然我做的是一個購書系統,但考慮到系統的可擴展性,我把書當作一種商品來進行定義。同樣,參照數據庫里的 product 表,我給商品這個類定義了如下 4 個屬性,商品 id,商品名稱,商品價格,商品 note,其類型同樣是該類的私有屬性:private String id;private String productName;private String productPrice;private String productNote;1) 其構造函數和用戶實體類基本上一致,所以代碼及其說明我在這里就省略了。2) 對商品的操作也主要是 2 類,一類是對特定商品的查詢,其原理和查詢用戶是一樣的,但是有一點小小的區(qū)別,即查詢商品可以使查詢所有的商品,或者是查詢特定 id 的商品,我通過以下代碼把這 2 種查詢合在了queryProduct 這個函數里:String sql=select id,product_name,product_price,product_note from product ; 19 if(productIpareTo()!=0)sql=sql+ where id = ? ;Vector v=new Vector();ResultSet rs = null;其關于連接數據庫,查詢記錄的代碼和上面的大致雷同,所以在這里就省略了。顯示商品是分頁顯示的,其代碼如下:while(rs.next()+i;if(ipageCount*pageSize)if(i=(pageCount+1)*pageSize)v.add(new ProductEntity(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4);elsebreak;這一段代碼的主要功能是:每一頁最多顯示 pageSize 個商品,如果超過 pageSize個,就分頁顯示。PageSize 在后面將會定義,其值我設置為 10。 20 3) 第二類方法是查詢商品的 id,全稱,價格和 note. 例如查找商品的 ID:public String getProductId()return id; 4.3.34.3.3 實現訂購單實體的實現訂購單實體的 BeanBean 客戶每次購買一種商品都會產生一次訂購單,它包括訂單號,所購買的書號,所購買這種書的數量,這些構成了這個類的私有屬性:private String id;private String orderId;private String productId;private String productNum; 21 1) 客戶每次選中一種商品后,點擊放入購物車,就會產生一個訂單,其實現代碼如下:String sql=insert into order_item(order_id,product_id,product_num) values(?,?,?) ;ResultSet rs = null;try conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt = conn.prepareStatement(sql);prepStmt.setString(1,orderId);prepStmt.setString(2,productId);prepStmt.setString(3,productNum);prepStmt.executeUpdate();訂購單,書號,購買數量都是作為參數傳過來的。很明顯,新建一張訂購單其實就是在 order_item 表里插入一條新紀錄就可以了。其原理已經在上面說過來了,就不在此重復了。2)在后面的購物車里,一名顧客的最終消費總額就是根據這里一張張的訂購單得到的,所以查找特定訂單號的訂購單是這個類里面不可缺少的方法,它的算法實質上就是條件查詢,和前面的無條件查詢相比,我只把 sql 語句作了改動:String sql=select id,order_id,product_id,product_num from order_item where order_id= ? ; 22 3)第 3 個被封裝的方法是設置,獲得訂購單號,書號,定購數量,并且還可以獲得 session price.4.3.44.3.4 實現購物車實體的實現購物車實體的 BeanBean在現實生活中,人們去超市買東西,都是把商品放在一個購物籃里,等到把所有要買的東西選購完畢后,一起拿到收銀臺前付錢。我在程序里定義的購物車實體就是模擬這個功能.作為購物車,購物人,購物時間,所購書的總價格都是必不可少的:private String id;private String userName;private String orderDate;private String orderPrice;我覺得在這個Bean里面主要要解決的一個問題,如何解決一個新的購物車。當一個顧客買完書提交購物車后,我們必須插入一個新的購物車紀錄,這是由insertOrder()方法來實現的:其插入代碼如下:conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt = conn.prepareStatement(sql);String curDate=(java.util.Calendar.getInstance().getTime().toString();prepStmt.setString(1,userName);prepStmt.setString(2,curDate); 23 prepStmt.setString(3,orderPrice);prepStmt.executeUpdate();這里,插入的原理和前面是相同的,但是有一個地方需要解釋:即購物時間字段,是采用的java.util.Calendar.getInstance().getTime(),這是一個庫函數,被封裝在java.util,在這個類定義的開頭,我把這個庫文件包含進來:import java.util.*;這個方法返回的結果必須把轉化成 String,否則后面插入數據庫時會出現類型不匹配的錯誤。toString()就是用來實現類型轉換的。為了方便后面對這個購物車進行操作,我在這個方法里還獲得了該購物車的 id: String selectStatement =select id +from orderlist where user_name=? order by id desc ; PreparedStatement prepStmt = conn.prepareStatement(selectStatement); prepStmt.setString(1,userName); ResultSet rs = prepStmt.executeQuery(); rs.next(); String result=rs.getString(1);return result;在sql里,查詢特定用戶購物車的id號,并且按照降序排列。是因為,針對一個網上購書系統,顧客可以多次在這里購書,那么在購物車表單里,針對一個顧客會有很多條他的購物紀錄,而在數據庫里,各條記錄的id是安裝時間先后順序逐漸遞增的, 24 如果安裝降序排列,那么得到的第一條記錄則是最新插入的紀錄。result=rs.getString(1)表示只把該條記錄的第一個字段傳給result,即把購物車的id號傳給result。 4.3.54.3.5 實現購物實體的實現購物實體的 BeanBean1)買書的第一步便是用戶登錄,現在購書網站都要求已經注冊過的用戶才能購買書籍,這樣便于網站管理。checkUser(String userName,String userPassword)就是用來檢驗用戶的合法性的:public int checkUser(String userName,String userPassword) int result=0;UserEntity user=null; try user=UserEntity.queryUser(userName); catch(SQLException ex) System.err.println(ex.getMessage();if(user=null)return 0;String pass=user.getUserPassword(); 25 if(pareTo(userPassword)=0) result=1;this.userName=userName;return result;這個函數傳過來的 2 個參數分別是用戶登錄時候填寫的用戶名和密碼,前面已經介紹過,在 UserEntity 里面有一個查詢特定用戶名的記錄的方法,我根據用戶登錄上填寫的用戶名查詢記錄:queryUser(userName),并把結果賦給一個對象 user。把傳過來的密碼和和這個對象的密碼比較,pareTo(userPassword)=0,如果相同,則用戶是合法的,可以購買本網站的書籍,result=1;如果不相同,則說明他是非法登錄的,只能瀏覽網站,不能買書,result=0。Result 就是這個函數的返回值,是一個整型變量。2)證明是合法用戶后,就必須給這個用戶一個購物車,用戶每次選中一本書, 26 點擊“放入購物車”,就必須添加一個訂購單。這就相當于把用戶要買的書放入購物車里,insertOrder()就是用來實現這些的,其主要代碼如下:public void insertOrder()/insert intoDataBasetryif(orderPrice=0)return;OrderEntity oe=new OrderEntity(null,userName,null,Integer.toString(orderPrice);orderId=oe.insertOrder();for(int i=0;iorderItem.size();i+)OrderItemEntity oi=(OrderItemEntity)orderItem.elementAt(i);oi.setOrderId(orderId);oi.insertOrderItem(); catch(SQLException ex) System.err.println(InsertOrder executeQuery: + ex.getMessage(); orderItem.removeAllElements();orderPrice=0; 27 當 orderPrice=0,說明用戶還沒有開始買書,在這個時候創(chuàng)建購物車,并且獲得它的 id 號,保存在 orderId 這個變量里。一個客戶可以有很多張訂購單,但是購物車id 號是一樣的,所以在插入訂購單的時候,必須把其購物車的 id 號設置為 orderId。3)addOrderItem(String productId,String productPrice)實現的是購買一種商品多次:public void addOrderItem(String productId,String productPrice) for(int i=0;iorderItem.size();i+) OrderItemEntity oi=(OrderItemEntity)orderItem.elementAt(i);String pId=oi.getProductId();if(pIpareTo(productId)=0)int num=Integer.parseInt(oi.getProductNum();+num;oi.setProductNum(Integer.toString(num);this.orderPrice+=Integer.parseInt(productPrice);return; OrderItemEntity oiNew=new OrderItemEntity(null,null,productId,1,Integer.parseInt(productPrice);orderItem.add(oiNew);this.orderPrice+=Integer.parseInt(productPrice); 28 因為每點擊一次“放入購物車” ,只能購買相應的商品一次,并且數量之能為 1。但是購買的是同一個商品,其 productId 是一致的,要重新寫入一張訂購單,就必須把原來 productId 的訂購單修改一下就可以了。比較用戶確實是買的一樣 id 的書:pIpareTo(productId),如果是,則修改訂購單的數量,num+,把總價格加上本書的價格:this.orderPrice+=Integer.parseInt(productPrice); 通過以上的操作,把修改后的結果作為新的屬性重新插入成新的訂購單。4)在 CartManager 類里,還封裝了一個書查詢的方法,主要是調用了ProductEntity 類里的 queryProduct 方法。需要說明的地方是,先是查詢結果的時候分頁顯示的,每頁顯示的書籍的資料最多不超過 10 本。這是由 pageSize 這個變 29 量來實現的。關于這個變量,我把它定義成 CartManage 的私有成員:private int pageSize=10;public void setPageSize(int pageSize)this.pageSize=pageSize;4.3.64.3.6 前臺運行程序前臺運行程序 cart.jspcart.jsp通過這個 jsp 程序,我實現了 3 個功能:1:顯示主頁面;2:把主頁面里瀏覽者的資料和請求傳給后臺的 Bean 來處理;3:調用 Bean,來實現系統的登錄,查詢,分頁處理,購書等功能在程序的開頭有這樣 2 條語句:上面已經說明,我把所有的 Bean 文件都放在了 cart 里面,要使得能在 jsp 文件中使用它們,就必須用 import 把 cart 包含進來。下面我想介紹一下 useBean 這個動作,通過 useBean 動作我建立了一個類型為cartManager 的 Bean 對象 cartManager,我實現的所有功能都是通過調用這個對象的 30 方法來實現的。1)我把主頁面分為 3 個部分,每個部分作為一個表格來處理:實現登錄框的表格:實現登錄框的表格: 登錄用戶名:密  碼:實現書籍清單的表格:實現書籍清單的表格: 商品ID: 32 商品ID 商品名稱 商品價格 商品說明 當前第頁 實現購物信息的表格實現購物信息的表格: : 33 購物車 商品ID 數量 上面只列出了部分代碼,從上面的代碼里很容易發(fā)現一個共同點,就是它們都是用了標簽.我通過這個標簽,把前臺的數據傳給后臺的函數.form 有 2 個很重要的屬性,一是 action,它用來指明從客戶端保存的數據傳到哪里去,在我的程序里,它通常都只向 cart.jsp,然后在 cart.jsp 里,用 request 對象來接收這些數據,最終作為函數的參數使用;二是 method,它是指傳遞數據的方式,在這里我都是采用的 post 方式。Form 里面很重要的另外一個東西就是:input,它是與用戶進行交互的主要工具。根據不同的類型,可以有不同的作用。我使用了其空白框給用戶填寫數據,其 type=text,按鈕是 form 里必不可少的,type=submit,只有當用戶點擊確定按鈕,客戶端才會最終把這些數據傳給 cart,jsp 來處理。2)我在實現這個系統的時候,主要是根據用戶對頁面的點擊做出回應的,所以在cart.jsp 里我設置了一個 String op=request.getParameter(op);當 op 取不同的值的時候,就調用不同的函數完成不同的功能,其代碼如下: 34 if(op!=null&pareTo(login)=0)int result=cartManager.checkUser(request.getParameter(userName),request.getParameter(userPassword);if(result=1)loginInfo=登錄成功!歡迎你;elseloginInfo=登錄失敗!;/表示顧客點擊的是登錄,這個時候就調用cartManager類里的checkUser()方法,這里用的對象cartManager就是先前在開通通過uesBean動作定義的那個對象。UserName是剛剛通過登錄表格的form標簽傳過來的用戶名,它作為checkUser的實參。這個參數返回一個int值,1表示登錄成功,0表示登錄失敗。if(op!=null&pareTo(cart)=0)if(cartManager.getUserName().compareTo()!=0)cartManager.addOrderItem(request.getParameter(productId),request.getParameter(productPrice); 35 elseloginInfo=請先登錄!;/如果客戶點擊放入購物車,這時就會有2種情況,一種是這位顧客還沒有登錄,那么他是不能買書的;另外一種是登錄成功,那必須為這次采購插入一張訂購單。我是通過購物車類中的usename來識別這2種情況的。因為只要他登錄成功,系統就會為他創(chuàng)建一個購物車類的對象,那么他的username一定不為空,就執(zhí)行cartManager 對象的addOrderItem()方法,這個函數在調用的時候必須傳過去的參數是:書名號,書價格。如果比較的結果為空,則打印請先登錄的提示信息。if(op!=null&pareTo(cartDeleteItem)=0)cartManager.deleteOrderItem(request.getParameter(productId);/如果顧客把書放入購物車后又不想買了,就會執(zhí)行cartManager對象的 deleteOrderItem()方法,為什么這里不需要像上面一樣比較是否登錄呢?是因為顧客既然要刪除訂購單,那么肯定是成功買了書,根據上面可以知道,賣過書的顧客肯定是成功登錄過的。其中,productId是它的實參。if(op!=null&pareTo(submitOrder)=0&Integer.parseInt(cartManager.getOrderPrice()!=0) 36 cartManager.insertOrder();orderInfo=您的購物單已提交,ID是:+cartManager.getOrderId();/最后是顧客購買活動全部結束,提交購物車,這時插入這個購物車,并且核算金額。/set the product listcartManager.setPageSize(10);Vector vProduct=cartManager.queryProduct(pageCount);/ out.print(queryProductId:+cartManager.getQueryProductId()+);/set the orderItem listVector vOrderItem=cartManager.getOrderItem(); 37 第五章第五章 總結總結本文論述了一個基于 WEB 的網上商品銷售系統,基本上體現了電子商務各方面的優(yōu)點。我所設計的網上書店,主要是熟悉和掌握 JSP 的技術以及對電子商務進行初步的探討和設計。在幾個月的設計過程中,我初步了解了 JSP 的優(yōu)點和先進之處,也看到了 JSP 技術在電子商務應用上的光明前途。通過這次設計,我設計的網上書店基本完成了要求的諸項基本功能,實現了一個簡單的不同部分以數據為中心的模型,在方案的各部分在實際運作中能夠解決相應的問題。在設計和制作網上書店這一個整體項目的過程中,也培養(yǎng)了自己的綜合能力和從全局考慮的思想。將復雜的問題簡單化,作為電子商務應用的一個縮影,我所涉及的模塊項目完成了其后臺具有的基本功能,使自己對于電子商務的了解更加深入和明了。當然,其中也遺留下了一些待解決的問題,但出于自己水平有限,作為一個網上書店系統,該項目上有一些不完善和函待改進之處,特別是在網站信息的安全性上需要進一步加強。 38 參考文獻參考文獻1 汪孝宜、劉中兵、徐佳晶等編著,JSP 數據庫開發(fā)實例精粹,電子工業(yè)出版社,20052 姚曉春、鄭文清等編著,Java 編程技術教程,清華大學出版社,19993 吳逸賢、吳目誠編著,Java2 程序設計,科學出版社,20034 Http:/5 Http:/ (Jsp 中文網)

注意事項

本文(網上書店畢業(yè)論文)為本站會員(1777****777)主動上傳,裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(點擊聯系客服),我們立即給予刪除!

溫馨提示:如果因為網速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!