計算機課程設計報告---網(wǎng)上書店訂單管理子系統(tǒng)_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  第1章 概要設計1</p><p>  1.1 題目的內(nèi)容與要求1</p><p>  1.2 數(shù)據(jù)庫概念模型設計1</p><p>  1.3 總體方案設計4</p><p>  第2章 詳細設計5<

2、;/p><p>  2.1數(shù)據(jù)庫邏輯模型設計5</p><p>  2.1.1書籍表(book)5</p><p>  2.1.2訂單表(listinfo)6</p><p>  2.1.3書單表(list)6</p><p>  2.1.4用戶表(user)7</p><p>  2.1

3、.5收貨人表(person)7</p><p>  2.1.6管理員表(admin)8</p><p>  2.2系統(tǒng)功能詳細設計8</p><p>  2.2.1登陸注冊系統(tǒng)模塊8</p><p>  2.2.2購物車模塊9</p><p>  2.2.3訂單查看模塊10</p><p

4、>  2.2.4訂單管理模塊11</p><p>  第3章 調(diào)試分析13</p><p>  3.1 MyEclipse和MySQL的連接問題13</p><p>  3.2 中文亂碼問題13</p><p>  3.3 服務器問題13</p><p>  第4章 使用說明14</p

5、><p>  4.1 登錄注冊系統(tǒng)界面14</p><p>  4.2 購物車界面16</p><p>  4.3 訂單查詢界面18</p><p>  4.4 訂單管理界面19</p><p><b>  參考文獻20</b></p><p>  附 錄(

6、程序清單)21</p><p><b>  第1章 概要設計</b></p><p>  1.1 題目的內(nèi)容與要求</p><p>  設計和實現(xiàn)一個簡單的網(wǎng)上書店訂單管理子系統(tǒng),功能包括:用戶下訂單能夠計算不同類型用戶(普通用戶和VIP用戶)的金額;訂單修改和取消訂單功能;訂單查詢功能,用戶可以按日期和類型查詢訂單信息;用戶注冊及登錄功

7、能。</p><p>  通過JSP與數(shù)據(jù)庫的連接來完成各種基本操作包括動態(tài)增加、修改、刪除訂單信息。要求表的設計合理,界面美觀實用。</p><p>  1.2 數(shù)據(jù)庫概念模型設計</p><p>  根據(jù)訂單管理程序的要求,概念模型一共有五個實體,分別為書籍實體,收貨人實體,用戶實體,訂單實體和管理員實體。其中,書籍實體包括書籍編號、書名、圖書作者、圖書出版社

8、、圖書價格、圖書簡介、圖書圖片七個屬性,書籍編號是書籍實體的主鍵;收貨人實體包括收貨人編號、姓名、地址、聯(lián)系電話四個屬性,收貨人編號是主鍵;用戶實體包括用戶編號、姓名、密碼、郵箱、類型五個屬性,用戶編號是主鍵;訂單實體包括訂單編號、用戶編號、日期、狀態(tài)、收貨人編號五個屬性,訂單編號是主鍵,用戶編號和收貨人編號分別是外鍵;管理員實體包括管理員編號,管理員名,管理員密碼三個屬性,其中管理員編號是主鍵。并且包含一個訂單和書籍的多對多的聯(lián)系,有

9、訂單號、書籍號、數(shù)量、狀態(tài),訂單號和書籍號是主鍵,訂單號和書籍號分別是外鍵。</p><p>  訂單管理系統(tǒng)的E-R圖如下圖1.1所示: </p><p>  圖1.1訂單系統(tǒng)E-R圖</p><p>  說明:從上圖可以看出,書籍實體與訂單實體之間是多對多的關系。</p><p>  用戶E-R圖如圖1.2所示:</p>&

10、lt;p>  圖1.2用戶E-R圖</p><p>  收貨人E-R如圖1.3所示:</p><p>  圖1.3 收貨人E-R圖</p><p>  管理員E-R圖如圖1.4所示:</p><p>  圖1.4 管理員E-R圖</p><p>  1.3 總體方案設計</p><p>

11、  根據(jù)題目要求,本系統(tǒng)可以分為四個功能模塊:購物車模塊、訂單信息查看模塊、登陸注冊模塊、訂單管理模塊。</p><p>  系統(tǒng)總體模塊圖如下圖1.4所示:</p><p>  圖1.4 系統(tǒng)總體模塊圖</p><p>  說明:上述模塊中,購物車模塊實現(xiàn)對訂單信息的動態(tài)增加、刪除、修改功能;訂單信息查看模塊實現(xiàn)對訂單信息的靜態(tài)查看;登陸注冊模塊實現(xiàn)用戶動態(tài)登錄和

12、注冊;訂單管理功能模塊實現(xiàn)對某個訂單的取消。</p><p><b>  第2章 詳細設計</b></p><p>  2.1數(shù)據(jù)庫邏輯模型設計</p><p>  訂單系統(tǒng)的E-R圖表明訂單實體與書籍實體之間是多對多的關系,轉換后的關系模式有三個,分別是訂單、書籍和訂購項目,還有收貨人表和用戶表,具體屬性如下所示:</p>&

13、lt;p>  訂單(訂單編號,用戶編號,收貨人編號,日期,狀態(tài))</p><p>  此為訂單實體對應的關系模式。</p><p>  書籍(書號,書名,作者,出版社,價格,簡介,圖片)</p><p>  此為書籍實體對應的關系模式。</p><p>  收貨人(收貨人編號,姓名,地址,電話)</p><p>

14、  此為收貨人實體對應的關系模式。 </p><p>  用戶(用戶編號,用戶名,電子郵箱,類型,密碼)</p><p>  此為用戶實體對應的關系模式。</p><p>  管理員(編號,管理員名,密碼)</p><p>  此為管理員實體對應的關系模式。</p><p>  書單(訂單編號,書籍編號,數(shù)量,狀態(tài))&

15、lt;/p><p>  此為訂購關系對應的關系模式。該關系模式包含了聯(lián)系“訂購”所對應的書籍和訂單關系模式,書籍實體和訂單實體是通過訂購關系中的書籍編號和訂單號聯(lián)系在一起的,書籍實體與訂單實體之間是多對多的關系。</p><p>  2.1.1書籍表(book)</p><p>  書籍表如下表2.1所示:</p><p><b>  

16、表2.1 書籍表</b></p><p>  說明:此表用于存放書籍基本信息,包括書籍編號、書名、圖書作者、圖書出版社、圖書價格、圖書簡介、圖書圖片七個屬性。其中的書籍編號是該表的主鍵,其他的屬性都用于書籍信息的描述。</p><p>  2.1.2訂單表(listinfo)</p><p>  訂單表如下表2.2所示: </p><

17、;p><b>  表2.2 訂單表</b></p><p>  說明:用于存放訂單基本信息,包括訂單編號、用戶編號、日期、狀態(tài)、收貨人編號五個屬性。其中訂單編號是該表的主鍵,其他的屬性都用于訂單信息的描述。</p><p>  2.1.3書單表(list)</p><p>  書單表如下表2.3所示:</p><p&

18、gt;<b>  表2.3 訂購表</b></p><p>  說明:此表用于訂購信息,包括訂單號、書籍號、數(shù)量、狀態(tài),其中的訂單編號和訂單表中的訂單編號相同,兩表通過訂單編號相聯(lián)系;書籍號和書籍表中的書籍號相同,兩表通過書籍號相聯(lián)系,其他的屬性都用于書單信息的描述。</p><p>  2.1.4用戶表(user)</p><p>  用戶

19、表如下表2.4所示:</p><p><b>  表2.4 用戶表</b></p><p>  說明:此表用于用戶信息,包括用戶編號、姓名、密碼、郵箱、類型,用戶編號是主鍵,其他的屬性都用于用戶信息的描述。</p><p>  2.1.5收貨人表(person)</p><p>  收貨人表如下表2.5所示:</

20、p><p>  表2.5 收貨人表</p><p>  說明:此表用于收貨人信息,包括收貨人編號、姓名、地址、電話,其中收貨人編號是主鍵,其他的屬性都用于收貨人信息的描述。</p><p>  2.1.6管理員表(admin)</p><p>  管理員表如下表2.6所示:</p><p>  表2.6 管理員表<

21、;/p><p>  說明:此表用于管理員信息,包括收貨人編號、姓名、密碼,其中編號是主鍵,其他的屬性都用于管理員信息的描述。</p><p>  2.2系統(tǒng)功能詳細設計</p><p>  整個程序的實現(xiàn)過程分為四個模塊,登陸注冊系統(tǒng)模塊、購物車模塊、訂單信息查看模塊、訂單管理模塊。各模塊的功能以及具體的設計情況如下所述:</p><p>  2

22、.2.1登陸注冊系統(tǒng)模塊</p><p>  登錄注冊系統(tǒng)模塊的功能是:該模塊主要是檢測用戶是否能對訂單管理系統(tǒng)的使用。輸入用戶名和密碼后系統(tǒng)將進行驗證,如果符合就進入系統(tǒng),否則無法進入系統(tǒng)進行操作。這個模塊主要是為了保持系統(tǒng)的安全完整性,使系統(tǒng)看起來完整統(tǒng)一且具有一定的安全可靠性 </p><p>  圖2.1 登錄注冊模塊流程圖</p><p>  2.2.2購

23、物車模塊</p><p>  購物車模塊的功能是:該模塊主要實現(xiàn)的是訂單的添加和刪除,并通過它使得整個程序操作起來更簡單,容易,清晰。當用戶要訂購某本書時,用戶可將書籍放入購物車(沒有完成交易),用戶也可將放入購物車的書籍取出,實現(xiàn)刪除功能。用戶點擊“下一步”,將進入正式的訂單生成過程。</p><p>  圖2.2 購物車模塊流程圖</p><p>  2.2.3

24、訂單查看模塊</p><p>  訂單查看的功能是:能查看訂單的基本信息。</p><p>  訂單查看功能使用戶能按日期和處理狀態(tài)查看訂單。對訂單的各項數(shù)據(jù)進行統(tǒng)計分析,以便用戶掌握自己的訂單情況。</p><p>  圖2.3 訂單查看模塊流程圖</p><p>  2.2.4訂單管理模塊</p><p>  訂單

25、管理模塊的功能是:對沒有處理而已經(jīng)生成的訂單進行管理。</p><p>  當用戶想取消沒有處理的訂單的時候,可以通過本模塊對訂單進行取消。當用戶想對收貨人信息進行管理更新時,通過本模塊能有效進行管理。</p><p>  圖2.4 訂單管理模塊流程圖</p><p><b>  第3章 調(diào)試分析</b></p><p&g

26、t;  3.1 MyEclipse和MySQL的連接問題</p><p>  因為整個程序的實現(xiàn)需要與數(shù)據(jù)庫相連接,所以我遇到的最大問題是連接數(shù)據(jù)庫。對數(shù)據(jù)庫的操作占了相當大的比例,數(shù)據(jù)庫的操作效率直接影響了整個系統(tǒng)的效率。</p><p>  具體的解決方法有以下幾個: </p><p>  1. 建立數(shù)據(jù)庫連接池,對數(shù)據(jù)庫進行有效使用。</p>

27、<p>  2. 在數(shù)據(jù)庫操作代碼中使用預處理命令,有效處理不安全因素。</p><p>  在數(shù)據(jù)庫的連接中,使用MySQL的連接驅(qū)動使數(shù)據(jù)庫能正確的連接。</p><p>  3.2 中文亂碼問題</p><p>  在jsp和jsp頁面,jsp和servlet類,java類和數(shù)據(jù)庫之間傳遞數(shù)據(jù)時,常常出現(xiàn)中文亂碼問題,這是因為數(shù)據(jù)以不同的編碼在它們

28、之間傳遞。解碼方式的混亂也有很大原因。</p><p>  具體的解決方案是統(tǒng)一使用GB2312編碼,以使中文的正確顯示?;蛘咴趕ervlet類中使用“request.setChararsEncoding(“gb2312”)”。</p><p>  3.3 服務器問題</p><p>  由于本系統(tǒng)通過網(wǎng)頁的形式進行工作,并且要求動態(tài)顯示數(shù)據(jù),因此使用Tomcat

29、服務器。Tomcat服務器的工作端口默認為8080,但安裝了多個版本的服務器后,端口地址存在混亂,因此將主服務器的端口地址設為80,以便直接啟動瀏覽器后輸入網(wǎng)址直接訪問。</p><p><b>  第4章 使用說明</b></p><p>  4.1 登錄注冊系統(tǒng)界面</p><p>  圖4.1.1 登錄系統(tǒng)界面</p>

30、<p>  圖4.1.1說明:輸入正確的用戶名和密碼后,如果是管理員出現(xiàn)圖4.1.2的界面。</p><p>  圖4.1.2管理員登錄界面</p><p>  圖4.1.2說明:輸入正確的管理員名和口令后登錄管理界面。</p><p>  圖4.1.3管理員管理界面</p><p>  圖4.1.3說明:管理員通過本界面進行系統(tǒng)管

31、理。</p><p>  如果不是管理員將進入用戶中心,用戶通過本界面對自己的信息進行管理,如圖4.1.4。</p><p>  圖4.1.4用戶個人中心界面</p><p>  如果不是系統(tǒng)用戶或管理員,可通過圖4.1.5進行注冊。提交后進入用戶個人中心。</p><p>  圖4.1.5用戶注冊界面</p><p>

32、;  4.2 購物車界面</p><p>  圖4.2.1購物車界面</p><p>  圖4.2.1說明:在如書籍功能中將書籍放入購物車后出現(xiàn)的界面,用戶可通過本界面對購物車中的書籍進行操作:改變數(shù)量,刪除。如果用戶確定交易后,點擊“下一步”按鈕,進入圖4.2.2的界面。</p><p>  圖4.2.2收貨人界面</p><p>  說

33、明:用戶正確填寫信息后,點擊“提交”,進入如圖4.2.3的訂單界面。</p><p>  圖4.2.3訂單界面</p><p>  4.3 訂單查詢界面</p><p>  圖4.3.1訂單查詢界面</p><p>  圖4.3.1說明:在此界面中,可通過點擊相應按鈕使用相應功能,如點擊“日期訂單查詢”將進入以日期為檢索條件的查詢結果界面,如

34、圖4.3.2.</p><p>  圖4.3.2日期訂單查詢界面</p><p>  圖4.3.2說明:在左端輸入相應日期點擊“提交”按鈕后或在相應的日期后點擊“查看”按鈕后,出現(xiàn)如圖4.3.3的界面,以使用戶能查看詳細的訂單情況。</p><p>  圖4.3.3日期訂單詳細界面</p><p>  圖4.3.3說明:點擊相應的訂單編號或收

35、貨人姓名,將進入更加詳細的查看。如圖4.3.4和圖4.3.5。</p><p>  圖4.3.5訂單詳細界面</p><p>  圖4.3.5收貨人詳細界面</p><p>  4.4 訂單管理界面</p><p>  圖4.4訂單管理界面</p><p>  圖4.4說明:在此界面中用戶可通過“取消訂單”按鈕對還沒

36、有進行處理的訂單進行取消。</p><p><b>  參考文獻</b></p><p>  [1] 王珊,薩師煊 . 數(shù)據(jù)庫系統(tǒng)概論[M], 北京:高等教育出版社,2002</p><p>  [2] 徐林林, Java Web 編程從入門到實踐[M], 北京: 清華大學出版社, 2010</p><p>  [3]

37、陳華, Ajax 從入門到精通 [M], 北京: 清華大學出版社, 2008</p><p>  [4] 王軍 等, JSP 網(wǎng)站開發(fā)典型模塊與實例精講[M], 北京: 電子工業(yè)出版社,2006</p><p>  [5] 張海藩, 軟件工程導論[M], 北京: 清華大學出版社, 2003</p><p>  附 錄(程序清單)</p><p

38、>  LoginServlet.java(登錄)</p><p>  String userName=request.getParameter("name");</p><p>  String userPwd=request.getParameter("pwd");</p><p>  System.out.print

39、(userName+":"+userPwd);</p><p>  User user=new User();</p><p>  user.setUserName(userName);</p><p>  user.setUserPwd(userPwd);</p><p>  UserDaoIml ud=new User

40、DaoIml();</p><p>  User nu=ud.UserLogin(user);</p><p>  if(nu==null){</p><p>  response.sendRedirect("LoginError.html");</p><p><b>  }else{</b><

41、;/p><p>  session.setAttribute("userId", nu.getUserId());</p><p>  System.out.println(nu.getUserId());</p><p>  session.setAttribute("userName", userName);</p>

42、;<p>  session.setAttribute("userType", nu.getUserType());</p><p>  if(nu.getUserType()>=4){</p><p>  response.sendRedirect("../admin/AdminLogin.jsp");</p>&

43、lt;p><b>  }else{</b></p><p>  response.sendRedirect("../user/UserInfo.jsp");</p><p><b>  }</b></p><p><b>  }</b></p><p>

44、;  ResServlet.java(注冊)</p><p>  String userName=request.getParameter("name");</p><p>  String userPwd=request.getParameter("pwd");</p><p>  String userEmail=requ

45、est.getParameter("email");</p><p>  String userSex=request.getParameter("sex");</p><p>  int usersex;</p><p>  if(userSex.equals("M"))</p><p

46、>  usersex=1;</p><p>  else usersex=0;</p><p>  User user=new User();</p><p>  user.setUserName(userName);</p><p>  user.setUserEmail(userEmail);</p><p>

47、;  user.setUserPwd(userPwd);</p><p>  user.setUserSex(usersex);</p><p>  UserDaoIml ud=new UserDaoIml();</p><p>  ud.UserRes(user);</p><p>  int userId=ud.findUserId(us

48、er);</p><p>  session.setAttribute("userId", userId);</p><p>  session.setAttribute("userName", userName);</p><p>  session.setAttribute("userType", 0)

49、;</p><p>  response.sendRedirect("../user/UserInfo.jsp");</p><p>  ListAddServlet.java(購物車系統(tǒng))</p><p>  HttpSession session=request.getSession();</p><p>  requ

50、est.setCharacterEncoding("gb2312");</p><p>  if(session.getAttribute("userId")==null){</p><p>  response.sendRedirect("../user/UserLogin.html");</p><p>

51、;<b>  }</b></p><p><b>  else{</b></p><p>  int userId=Integer.parseInt(String.valueOf(session.getAttribute("userId")));</p><p>  int bookId=Integer

52、.parseInt(request.getParameter("bookId"));</p><p>  ListInfo li=new ListInfo();</p><p>  Listbook lb=new Listbook();</p><p>  ListInfoDaoIml lidi=new ListInfoDaoIml();<

53、/p><p>  if(lidi.findListIdByUserId(userId)==0){</p><p>  li.setUserId(userId);</p><p>  li.setListS("undo");</p><p>  int listid=lidi.num()+1;</p><p&

54、gt;  li.setListId(listid);</p><p>  lidi.addListInfo(li);</p><p>  ListDaoIml ldi=new ListDaoIml();</p><p>  lb.setBookId(bookId);</p><p>  lb.setBookNum(1);</p>

55、<p>  lb.setListId(listid);</p><p>  ldi.addList(lb);</p><p>  session.setAttribute("listId", listid);</p><p><b>  }else{</b></p><p>  lb.se

56、tListId(lidi.findListIdByUserId(userId));</p><p>  lb.setBookId(bookId);</p><p>  lb.setBookNum(1);</p><p>  ListDaoIml ldi=new ListDaoIml();</p><p>  ldi.addList(lb);&

57、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p>  Findlistbydate.java(訂單查詢)</p><p>  request.setCharacterEncoding("gb2312");</p><

58、;p>  String lists=request.getParameter("date");</p><p>  response.sendRedirect("../list/date_list_show.jsp?date="+lists+"&page=1");</p><p>  ListInfo.java(訂單

59、對象)</p><p>  public class ListInfo {</p><p>  int listId;</p><p>  int userId;</p><p>  String listDate;</p><p>  String listS;</p><p>  int p

60、ersonId;</p><p>  public int getListId() {</p><p>  return listId;</p><p><b>  }</b></p><p>  public void setListId(int listId) {</p><p>  this

61、.listId = listId;</p><p><b>  }</b></p><p>  public int getUserId() {</p><p><b>  ………</b></p><p><b>  }</b></p><p>  Da

62、tabaseadmin.java(數(shù)據(jù)庫操作類)</p><p><b>  try {</b></p><p>  Class.forName("com.mysql.jdbc.Driver");</p><p>  str = "jdbc:mysql://localhost:3306/";</p&

63、gt;<p>  String sql = str + name + "?characterEncoding=gbk";</p><p>  conn = DriverManager.getConnection(sql, "root", "123456a");</p><p>  } catch (ClassNotF

64、oundException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStackTrace();</p><p>  } catch (SQLException e) {</p><p>  // TODO Auto-generated catch b

65、lock</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  ListInfoDao.java(數(shù)據(jù)對象映射類)</p><p>  public int addListInfo(ListInfo li);</p><p>  

66、public void updataListInfo(ListInfo li);</p><p>  public void delListInfo(int listId);</p><p>  public List showListInfoByUserIdOfUndo(int userId);</p><p>  public List showListInfo

67、ByUserIdOfDo(int userId);</p><p>  public int findListIdByUserId(int userId);</p><p>  public int findListIdByUserIdofUndo(int userId);</p><p>  public int num();</p><p&g

68、t;  public int findPersonNo(int listId);</p><p>  public ListInfo show(int listId);</p><p>  public ListInfo findByUserId(int userId);</p><p>  public List showAllList();</p>

69、<p>  public void UpdataListS(ListInfo li);</p><p>  public void del(int listId);</p><p>  public int countlistbyuser(int userId);</p><p>  public int countlistbybook(int book

70、Id);</p><p>  public List countlistbydate();</p><p>  public List countlistbylsits();</p><p>  public List booklistshow(int bookId);</p><p>  public List userlistshow(i

71、nt userId);</p><p>  public List datelistshow(String date);</p><p>  public List listsshow(String lists);</p><p>  public List datelistshowbyuser(int userId);</p><p>  

72、public List listsshowbyuser(int userId);</p><p>  public List listsshowbyuserofundo(int userId);</p><p>  public List listsshowbyuserwithoutundo(int userId);</p><p>  public List da

溫馨提示

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

評論

0/150

提交評論