食品消費管理系統(tǒng)_第1頁
食品消費管理系統(tǒng)_第2頁
食品消費管理系統(tǒng)_第3頁
食品消費管理系統(tǒng)_第4頁
食品消費管理系統(tǒng)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 得分:課程設計報告2015 年 1 月 1 日食品消費卡管理系統(tǒng)設計姓 名班 級學 號課 程 名 稱指 導 教 師2 目錄一食 品 消 費 卡 管 理 系 統(tǒng) 應 用 分 析 . 31.1食 品 消 費 卡 管 理 系 統(tǒng) 的 應 用 背 景 . 31.2學 生 管 理 系 統(tǒng) 應 用 需 求 . 31.3 食品消費卡管理系統(tǒng)功能分析. 3二 總體設計 . 42.1 數據庫概念設計 . 42.2 應用軟件系統(tǒng)功能劃分. 4三系統(tǒng)詳細設計 . 63.1 數據庫關系模式設計. 63.2 軟件模塊設計 . 63.3 各模塊功能 . 6四 系統(tǒng)實現(xiàn) . 74.1 登錄界面設計 . 74.2 功能界

2、面和食品管理設計. 74.3 消費卡管理設計 . 84.4 消費記錄 . 84.5 餐廳管理 . 9五 實驗總結 . 10 3 1 食 品 消費卡 管 理 系統(tǒng)應 用分 析1.1食 品 消 費 卡 管 理 系 統(tǒng) 的 應 用 背 景依 據 現(xiàn) 階 段 食 堂 食 品 的 實 際 業(yè) 務 情 況 , 通 過 對 整 個 系 統(tǒng) 的 需 求分 析 、 概 念 模 型 設 計 、 邏 輯 模 型 設 計 到 物 理 數 據 庫 模 型 設 計 與 實 現(xiàn)等 各 環(huán) 節(jié) 進 行 分 析 與 描 述 。 從 而 以 此 為 基 礎 , 建 立 起 科 學 、 高 效 的管 理 系 統(tǒng) , 實 現(xiàn) 食 品

3、 管 理 , 餐 廳 管 理 以 及 消 費 管 理 的 功 能 。 最 終 達到 方 便 管 理 人 員 對 食 品 , 消 費 等 的 管 理 , 實 現(xiàn) 食 堂 管 理 的 高 效 化 和統(tǒng) 一 化 , 和 提 高 管 理 方 便 性 及 可 行 性 的 目 的 。1.2學 生 管 理 系 統(tǒng) 應 用 需 求1.2.1功 能 需求通過對學生使用消費卡在學校餐廳的消費流程進行分析,完成具有食品管理、消費管理、餐廳管理等相關功能的小型數據庫管理應用系統(tǒng)。完成人員、消費卡、餐廳、食品價目表的維護完成消費表的生成,并計算消費折扣。按人員、時間、餐廳統(tǒng)計計算消費總額按食品類別、時間、餐廳統(tǒng)計計算消

4、費總額等功能。1.2.2 數據處理需求系統(tǒng)主要處理需求有如下幾點: 1) 對基本信息管理:食品信息、學生信息、餐廳信息等;2) 對食品管理:食品登記、食品查詢、食品消費等;3) 對消費管理:消費登記、消費記錄查詢等。1.3 食品消費卡管理系統(tǒng)功能分析從數據庫獲得相應的權限后,登錄進去,然后對食品表,消費卡,餐廳表等進行增,刪,改,查的操作。功能流程圖如下:表 1 功能流程圖4 2 總體設計2.1 數據庫概念設計本系統(tǒng)主要有食品,餐廳和消費卡三個實體集,一個餐廳可以有多種食品,一種食品也可以在不同餐廳中, 這兩個實體集之間是多對多聯(lián)系;一個消費人員可以點多道菜, 每道菜可以被多個消費人員點, 這

5、兩個實體集間關系是多對多關系;一個消費人員有一張消費卡,一張消費卡只能被一個人擁有,這兩個實體集之間關系是一對一。全局 e-r 圖如下:表 2 全局 e-r圖實體裝換為所對應的關系模式: 食品(食品編號,菜名,菜價,食品類型)餐廳(餐廳編號,餐廳名稱,日銷售額)消費卡(學號消費卡編號聯(lián)系方式)消費人員(學號姓名 班級 性別)聯(lián)系轉化為所對應的關系模式:使用(餐廳編號 , 消費卡編號)擁有(學號 , 消費卡編號)購買(食品編號,消費卡編號,學號)出售(餐廳編號 , 食品編號)2.2 應用軟件系統(tǒng)功能劃分1)消費卡管理5 顯示消費卡的相關信息,便于管理員進行下一步操作。2)菜單管理顯示菜單的相關信

6、息,便于管理員進行下一步操作。3)食品管理顯示食品表的相關信息,便于管理員進行下一步操作。4)餐廳管理顯示餐廳表的相關信息,便于管理員進行下一步操作。6 3 系統(tǒng)詳細設計3.1 數據庫關系模式設計實體完整性約束:食品信息(食品編號,菜名,菜價,食品類型)餐廳信息(餐廳編號,餐廳名稱,日銷售額)消費卡信息(學號 姓名 班級 性別 消費卡編號聯(lián)系方式)消費記錄信息(餐廳號,學號,菜數量,消費額,消費記錄)3.2 軟件模塊設計軟件分為四大模塊,分別為消費卡模塊,菜單模塊,食品模塊,登陸信息模塊,餐廳模塊。3.3 各模塊功能消費卡模塊功能:查詢,添加,刪除,修改消費卡信息菜單模塊功能:查詢,修改,添加

7、,刪除食品編號,菜名,菜價,食品類型。食品模塊功能:包含所有食品編號菜名菜價等。登陸信息模塊功能:使用登陸賬號,密碼登入食品消費卡管理系統(tǒng)。消費記錄模塊功能:查詢部分消費者的消費信息。7 4 系統(tǒng)實現(xiàn)4.1 登錄界面設計管理員登錄時, 只有輸入正確的賬號和密碼,才能進入, 正確的賬號和密碼存儲在數據庫中,賬號或密碼錯誤時,也會有相應的提示,登錄界面如下:表 3 登錄界面輸入正確的賬號和密碼,然后即可進入。4.2 功能界面和食品管理設計登錄進入之后,便會出現(xiàn)如下界面:表 4 主界面主界面顯示的是食品表的相關信息,由菜單欄和相應的按鈕組成, 可以清楚的看到食品表的結構和詳細信息,也可以進行食品表的

8、相關操作。8 4.3 消費卡管理設計消費卡管理的界面設計如下:表 5 消費卡界面通過上圖,我們可以清楚的看到消費卡表的詳細信息,通過查詢,添加,修改,刪除按鈕可以對表進行操作,滿足實際需求。4.4 消費記錄消費記錄界面設計如下:表 6 消費記錄在數據庫中,通過復雜查詢,可以得到上述的信息,通過上表,我們能夠詳細的看到每個同學的消費情況,可以方便管理員的管理。9 4.5 餐廳管理餐廳管理的界面設計如下:表 7 餐廳表通過上圖可知餐廳表的詳細信息, 管理員可通過相應的按鈕對餐廳表進行相關操作。10 5 實驗總結通過本次課程設計,明白了實驗的重要性,不管你的理論知識學習的如何,都必須通過不斷的練習才

9、能對知識有更深刻的理解。我不但加深了對數據庫基礎理論和基本知識的理解, 更是學習和實踐了如何對食品銷售管理系統(tǒng)數據庫進行設計。通過實戰(zhàn),更詳細的了解了系統(tǒng)開發(fā)的具體流程。通過對系統(tǒng)的需求分析、概念模型設計、邏輯模型設計到物理數據庫模型設計與實現(xiàn)等各環(huán)節(jié)的實施和設計, 學習和理解了開發(fā)和設計一個小型數據庫系統(tǒng)時設計數據庫系統(tǒng)模型的基本方法。 雖然實際設計操作過程中還是出存在很多不足,但是通過親自動手和動腦,運用數據庫解決實際問題的能力仍得到了一定提高。11 附錄package java; import java.io.ioexception; import java.util.propertie

10、s; public class config /step1:創(chuàng)建連接配置文件對象 private final static properties prop = new properties(); static try /step2:加載 perties配置文件prop.load(config.class.getresourceasstream(perties); catch (ioexception e) e.printstacktrace(); /step3:設置獲取配置文件7 個常量 public static final string c

11、lass_name = prop.getproperty(driverclassname); public static final string database_url = prop.getproperty(database_url); public static final string username = prop.getproperty(username); public static final string password = prop.getproperty(password); package java; import java.sql.*; public class d

12、atabasehelper /三大屬性,四大方法 /三大屬性是指 jdbc體系中的三個核心接口 private connection conn = null; private preparedstatement pstmt = null; private resultset rs = null; /四大方法 /method1:創(chuàng)建數據庫連接12 public connection getconnection() throws classnotfoundexception, sqlexception try /step1:加載連接驅動, java 反射原理 class.forname(confi

13、g.class_name); /step2:創(chuàng)建 connection接口對象,用于獲取數據庫連接對象。三個參數 url連接的字符串, username賬號, password 密碼 string url = config.database_url; system.out.println(url= + url); /step3:創(chuàng)建數據庫連接 conn = drivermanager.getconnection(url, config.username, config.password); catch (classnotfoundexception e) e.printstacktrace()

14、; conn=null; throw e; catch (sqlexception e) e.printstacktrace(); conn=null; throw e; return conn; /method2:關閉數據庫方法 public void closeconn() / 關閉順序: resultset preparedstatement connection /關閉: resultset if (rs != null) try rs.close(); catch (sqlexception e) / todo auto-generated catch block e.printst

15、acktrace(); 13 /關閉: preparedstatement if (pstmt != null) try pstmt.close(); catch (sqlexception e) / todo auto-generated catch block e.printstacktrace(); /關閉: connection if (conn != null) try conn.close(); catch (sqlexception e) / todo auto-generated catch block e.printstacktrace(); system.out.print

16、ln(數據庫連接已關閉 ); /method3:用于發(fā)送 增、刪、改的方法 public int executeupdate(final string sql, final object params)throws exception /step1:獲取數據庫連接 this.getconnection(); try /step3:創(chuàng)建 statement 接口對象 pstmt = conn.preparestatement(sql); /step4:動態(tài)為 pstmt 對象賦值參數 for (int i = 0; i params.length; i+) pstmt.setobject(i +

17、 1, paramsi); /step5:使用 statement 對象發(fā)送 sql 語句14 int affectedrows = pstmt.executeupdate(); /step6:返回結果 return affectedrows; catch (sqlexception e) / todo auto-generated catch block e.printstacktrace(); return -1; /method4:用于發(fā)送 查詢結果的方法 public resultset execquery(final string sql, final object params)t

18、hrows exception /step1:獲取數據庫連接 this.getconnection(); try /step3:創(chuàng)建 preparedstatement 接口對象 pstmt = conn.preparestatement(sql); /step4:動態(tài)為 pstmt 對象賦值參數 for (int i = 0; i params.length; i+) pstmt.setobject(i + 1, paramsi); /step5:使用 statement 對象發(fā)送 sql 語句 rs = pstmt.executequery(); /step6:返回結果 return rs

19、; catch (sqlexception e) / todo auto-generated catch block e.printstacktrace(); return null; public int getmaxid(string sql, object params) throws exception /step1:獲取數據庫連接15 this.getconnection(); try /step3:創(chuàng)建 preparedstatement 接口對象 pstmt = conn.preparestatement(sql); /step4:動態(tài)為 pstmt 對象賦值參數 for (in

20、t i = 0; i params.length; i+) pstmt.setobject(i + 1, paramsi); /step5:使用 statement 對象發(fā)送 sql 語句 rs = pstmt.executequery(); /step6:返回結果 return rs.getint(1); catch (sqlexception e) / todo auto-generated catch block e.printstacktrace(); return 0; finally this.closeconn(); driverclassname=com.microsoft.s

21、qlserver.jdbc.sqlserverdriver database_url=jdbc:sqlserver:/:1433;databasename=foodcard username=root password=123456 package sql; import java.databasehelper; 16 import com.zjl.entity.card; import java.sql.connection; import java.sql.sqlexception; import java.sql.statement; import java.util.

22、logging.level; import java.util.logging.logger; public class cardaction static databasehelper helper = new databasehelper(); static connection conn = null; public static int addcard() throws classnotfoundexception, sqlexception conn = helper.getconnection(); statement stmt=conn.createstatement(); st

23、ring sql=insert into card values (+card.cardid+,+card.useraccount+, +card.username+,+card.userclass+,+card.usersex+,+card.usertel+); stmt.executeupdate(sql); conn.close(); return 1; public static void updatedata() throws classnotfoundexception, sqlexception conn = helper.getconnection(); statement s

24、tmt=conn.createstatement(); string sql=update card set useraccount=+card.useraccount+,username=+card.username +,userclass=+card.userclass+,usersex=+card.usersex+,usertel=+card.usertel + where cardid=+card.cardid+; stmt.execute(sql); conn.close(); 17 public static void delrow() throws classnotfoundex

25、ception, sqlexception conn = helper.getconnection(); statement stmt=conn.createstatement(); string sql=delete from card where cardid=+card.cardid+; stmt.execute(sql); conn.close(); /* * to change this license header, choose license headers in project properties. * to change this template file, choos

26、e tools | templates * and open the template in the editor. */ package sql; import java.databasehelper; import java.sql.connection; import java.sql.resultset; import java.sql.statement; import javax.swing.jtable; import javax.swing.table.defaulttablemodel; public class gettabledata databasehelper hel

27、per = new databasehelper(); connection conn = null; public void getdata(jtable tableinfo,string tablename,int clonum) tableinfo.removeall(); try conn = helper.getconnection(); statement stmt=conn.createstatement(); string sql=select * from +tablename+; tableinfo = setmodellist(tableinfo, tablename);

28、 18 resultset res=stmt.executequery(sql); string str=new string100100; int row=0; while( res.next() ) row+; for(int j=1;j=clonum;j+) strrowj-1=res.getstring(j); conn.close(); / tablemodel model=tableinfo.getmodel(); defaulttablemodel model=(defaulttablemodel) tableinfo.getmodel(); for(int i=0;irow;i

29、+) model.addrow(stri+1); tableinfo.setmodel(model); catch(exception e) e.printstacktrace(); public void getrecorddata(jtable tableinfo,string tablename) tableinfo.removeall(); try conn = helper.getconnection(); statement stmt=conn.createstatement(); string sql=select card.cardid,card.username,food.v

30、name,food.belong,restaurant.rno,resta19 urant.rname,consume.cmoney,consume.ctime from consume join food on consume.vno=food.vno join card on consume.cinfo=card.cardid join restaurant on consume.rno=restaurant.rno; tableinfo = setmodellist(tableinfo, record); resultset res=stmt.executequery(sql); str

31、ing str=new string100100; int row=0; while( res.next() ) row+; for(int j=1;j=8;j+) strrowj-1=res.getstring(j); conn.close(); defaulttablemodel model=(defaulttablemodel) tableinfo.getmodel(); for(int i=0;irow;i+) model.addrow(stri+1); tableinfo.setmodel(model); catch(exception e) e.printstacktrace();

32、 public void querydata(jtable tableinfo,string tablename,int clonum,string noname,string no) try conn = helper.getconnection(); statement stmt=conn.createstatement(); 20 string sql=select * from +tablename+ where +noname+=+no+; tableinfo = setmodellist(tableinfo, tablename); resultset res=stmt.execu

33、tequery(sql); string str=new string100100; int row=0; while( res.next() ) row+; for(int j=1;j=clonum;j+) strrowj-1=res.getstring(j); conn.close(); / tablemodel model=tableinfo.getmodel(); defaulttablemodel model=(defaulttablemodel) tableinfo.getmodel(); for(int i=0;i= 0; index-) 21 tablemodel.remove

34、row(index); if(name.equals(food) table.setmodel(new javax.swing.table.defaulttablemodel( new object , new string 食品編號 , 菜名, 菜價, 食品類型 ) class types = new class java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.clas

35、s, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class ; boolean canedit = new boolean false, false, false, false, false, false, false, false, false, false, false, false, false ; public

36、 class getcolumnclass(int columnindex) return types columnindex; public boolean iscelleditable(int rowindex, int columnindex) return canedit columnindex; ); else if(name.equals(restaurant) table.setmodel(new javax.swing.table.defaulttablemodel( new object , new string 餐廳編號 , 餐廳名稱 , 日營業(yè)額 , 22 ) class

37、 types = new class java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.

38、class, java.lang.string.class ; boolean canedit = new boolean false, false, false, false, false, false, false, false, false, false, false, false, false ; public class getcolumnclass(int columnindex) return types columnindex; public boolean iscelleditable(int rowindex, int columnindex) return canedit

39、 columnindex; ); else if(name.equals(card) table.setmodel(new javax.swing.table.defaulttablemodel( new object , new string 消費卡編號 , 學生學號 , 學生姓名 , 學生班級 , 學生性別 ,聯(lián)系方式 ) class types = new class java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.strin

40、g.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, 23 java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class ; boolean canedit = new boolean false, false, false, false, false, false, false, false, false, fa

41、lse, false, false, false ; public class getcolumnclass(int columnindex) return types columnindex; public boolean iscelleditable(int rowindex, int columnindex) return canedit columnindex; ); else if(name.equals(record) table.setmodel(new javax.swing.table.defaulttablemodel( new object , new string 消費

42、卡編號 , 學生姓名 , 食品名稱 , 食品種類 , 餐廳編號 ,餐廳名稱 , 消費金額 , 消費日期 ) class types = new class java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class, java.l

43、ang.string.class, java.lang.string.class, java.lang.string.class, java.lang.string.class ; boolean canedit = new boolean false, false, false, false, false, false, false, false, false, false, false, false, false ; 24 public class getcolumnclass(int columnindex) return types columnindex; public boolea

44、n iscelleditable(int rowindex, int columnindex) return canedit columnindex; ); return table; /* * to change this license header, choose license headers in project properties. * to change this template file, choose tools | templates* and open the template in the editor.*/ package sql; import com.zjl.

45、entity.resaurant; import java.databasehelper; import java.sql.connection; import java.sql.sqlexception; import java.sql.statement; public class resaurantaction static databasehelper helper = new databasehelper();static connection conn = null; public static int addfood() throws classnotfoundexception

46、, sqlexception conn = helper.getconnection();statement stmt=conn.createstatement();string sql=insert into restaurant values (+resaurant.rno+,+resaurant.rname+,+resaurant.daysum+);25 stmt.executeupdate(sql);conn.close(); return 1; public static void updatedata() throws classnotfoundexception, sqlexce

47、ption conn = helper.getconnection(); statement stmt=conn.createstatement();string sql=update restaurant set rname=+resaurant.rname+,daysum=+resaurant.daysum + where rno=+resaurant.rno+;stmt.execute(sql); conn.close(); public static void delrow() throws classnotfoundexception, sqlexception conn = hel

48、per.getconnection();statement stmt=conn.createstatement();string sql=delete from restaurant where rno=+resaurant.rno+;stmt.execute(sql); conn.close(); package sql; import java.databasehelper; import java.sql.connection; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; import javax.swing.joptionpane; public class userlogin databasehelper helper = new databasehelper(); connection conn = null; 26 string getpwd; string authority=0; public string login(string name,string pwd) try conn = helper.getconne

溫馨提示

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

評論

0/150

提交評論