數(shù)據(jù)庫原理課程設計報刊訂閱管理系統(tǒng)_第1頁
數(shù)據(jù)庫原理課程設計報刊訂閱管理系統(tǒng)_第2頁
數(shù)據(jù)庫原理課程設計報刊訂閱管理系統(tǒng)_第3頁
數(shù)據(jù)庫原理課程設計報刊訂閱管理系統(tǒng)_第4頁
數(shù)據(jù)庫原理課程設計報刊訂閱管理系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、報刊訂閱管理系統(tǒng)目 錄1、開發(fā)背景22、需求分析23. 數(shù)據(jù)分析33.1 數(shù)據(jù)流圖33.2 數(shù)據(jù)字典3(1) 數(shù)據(jù)流的描述3(2)處理邏輯的描述5(3)處理邏輯的描述6(4)外部實體的描述74.概念模型設計74.1 部門e-r圖74.2 管理員e-r圖84.3 用戶e-r圖84.4 報刊信息e-r圖84.5訂單e-r圖94.6 報刊類別e-r圖94.7所有實體之間的的關系e-r圖95. 邏輯模型設計及優(yōu)化106.應用程序設計(前臺)136.1 登陸136.2 新用戶注冊136.3 報刊訂閱146.4 報刊訂閱訂單填寫146.5 訂單歷史記錄146.6 個人訂閱統(tǒng)計156.7 修改個人信息156

2、.8 修改密碼167. 課程設計心得體會168. 參考文獻179.附錄181、開發(fā)背景隨著社會不斷的發(fā)展,人們的生活水平越來越高,對知識的和對時事的渴求也越來越高,人們希望能夠方便快捷地訂閱各種報刊雜志。但是各種各樣的報刊名目和詳細信息以及訂閱,為相關企業(yè)的管理造成很大的麻煩。因此網上訂閱成為不可或缺的一部分。本系統(tǒng)就是面向一個企業(yè)的報刊訂閱管理系統(tǒng)。此系統(tǒng)是一種比較智能化的管理系統(tǒng),它面向所有企業(yè)部門的職工用戶,但具有比較高的安全性能。它能夠實現(xiàn)報刊訂閱的基本功能,包括新報刊信息的錄入、訂閱、查詢等操作以及后臺數(shù)據(jù)庫的備份和恢復。用戶合法注冊后必須輸入有效密碼才能成功進入此系統(tǒng),可以進行訂閱

3、報刊,查詢信息,統(tǒng)計信息等操作。對于非法操作,系統(tǒng)有識別和防護措施。 2、需求分析本系統(tǒng)主要有以下功能模塊:(1)登陸功能:登陸系統(tǒng)為身份驗證登錄。分為管理員登錄和一般用戶登錄。分別通過不同的用戶名和密碼進入報刊訂閱管理界面,新的用戶需要注冊。(2)錄入新信息功能:對于管理員,包括新用戶信息和新報刊信息的錄入功能,信息一旦提交就存入到后臺數(shù)據(jù)庫中;普通用戶自行注冊進行可以修改個人信息。(3)訂閱功能:用戶可以訂閱報刊,系統(tǒng)自動計算所需金額,并顯示在界面上;管理員不可訂閱報刊,必須以用戶身份訂閱報刊。(4)查詢功能:用戶可以查詢并顯示自己所訂閱的信息;管理員可以按人員、報刊、部門分類查詢。查詢出

4、的信息顯示在界面上,并且可以預覽和打印出結果。(5)統(tǒng)計功能:管理員可以按用戶、部門、報刊統(tǒng)計報刊的銷售情況,并對一些重要的訂閱信息進行統(tǒng)計;普通用戶可以統(tǒng)計出自己的訂閱情況,并且可以預覽和打印出結果。(6)系統(tǒng)維護功能:數(shù)據(jù)的安全管理,主要是依靠管理員對數(shù)據(jù)庫里的信息進行備份和恢復,數(shù)據(jù)庫備份后,如果出了什么意外可以恢復數(shù)據(jù)庫到當時備份的狀態(tài),這提高了系統(tǒng)和數(shù)據(jù)的安全性,有利于系統(tǒng)的維護3. 數(shù)據(jù)分析(只描述了用戶部分)3.1 數(shù)據(jù)流圖如圖3-1d002用戶名或密碼錯誤s001用戶p001用戶信息判斷d001用戶登錄 f001 用戶信息d003報刊信息目錄d00 4訂購歷史記錄p004查看訂

5、購歷史記錄p002報刊目錄查詢 f002 報刊信息 d003報刊信息目錄 f003 p003報刊訂購 訂購信息(.)圖3-13.2 數(shù)據(jù)字典(1) 數(shù)據(jù)流的描述數(shù)據(jù)流編號: d001數(shù)據(jù)流名稱: 用戶登錄 簡述:用戶要登錄系統(tǒng)才能進行報刊訂閱操作數(shù)據(jù)流來源:用戶數(shù)據(jù)流去向:用戶信息判斷數(shù)據(jù)流組成:報刊代號、報刊名稱、報刊年價、出版社等數(shù)據(jù)流量:1000/天高峰流量:3000/天數(shù)據(jù)流編號: d002數(shù)據(jù)流名稱:用戶名或密碼錯誤 簡述:用戶名或密碼錯誤,需要重新登錄數(shù)據(jù)流來源:用戶信息判斷數(shù)據(jù)流去向:用戶數(shù)據(jù)流組成:用戶名、密碼等數(shù)據(jù)流量:1000/天高峰流量:3000/天數(shù)據(jù)流編號: d003

6、數(shù)據(jù)流名稱:報刊信息目錄 簡述:所有報刊信息數(shù)據(jù)流來源:用戶信息判斷數(shù)據(jù)流去向:報刊訂購數(shù)據(jù)流組成:訂單號、報刊代號、用戶名、金額等數(shù)據(jù)流量:1000/天高峰流量:3000/天數(shù)據(jù)流編號: d004數(shù)據(jù)流名稱:訂購歷史記錄 簡述:用戶訂購了報刊后即可查詢自己的訂購記錄數(shù)據(jù)流來源:報刊目錄查詢數(shù)據(jù)流去向:報刊訂購數(shù)據(jù)流組成:訂單號、報刊代號、用戶名、金額等數(shù)據(jù)流量:1000/天高峰流量:3000/天(2)處理邏輯的描述處理邏輯編號:p001處理邏輯名稱:用戶信息判斷 簡述:判斷用戶信息的合法性輸入的數(shù)據(jù)流:報刊目錄查詢處理描述: 根據(jù)用戶輸入的登錄信息,驗證用戶信息,驗證通過后繼續(xù)下移處理查看報

7、刊目錄信息,驗證不通過則返回給用戶指明為非注冊用戶。輸出的數(shù)據(jù)流: d001報刊目錄信息、d002無效提示信息處理頻率: 10次/天處理邏輯編號:p002處理邏輯名稱:報刊目錄查詢 簡述:列出各種報刊信息供用戶選擇訂購輸入的數(shù)據(jù)流:報刊訂購處理描述:用戶可以選擇報刊類別進行查詢,也可以不分條件查詢全部信息,由用戶自己選擇所需進行訂購。輸出的數(shù)據(jù)流: d003 報刊訂購處理頻率: 10次/天處理邏輯編號:p003處理邏輯名稱:報刊訂購 簡述:填寫訂購詳細信息輸入的數(shù)據(jù)流:報刊目錄查詢處理描述:用戶選擇好某一報刊,點擊訂購,彈出一個填寫訂購單頁面,用戶填寫訂購詳細信息。輸出的數(shù)據(jù)流: 數(shù)據(jù)流向管理

8、員處理頻率: 10次/天處理邏輯編號:p004處理邏輯名稱:查看訂購歷史記錄 簡述:查看自己的報刊訂購歷史記錄輸入的數(shù)據(jù)流:報刊訂購處理描述:用戶訂購了報刊之后,即可查看訂購歷史記錄(訂購流程完)。輸出的數(shù)據(jù)流: 用戶處理頻率: 10次/天(3)處理邏輯的描述數(shù)據(jù)存儲編號:f001數(shù)據(jù)存儲名稱:用戶信息 簡述:用戶的基本信息數(shù)據(jù)存儲組成:用戶編號、用戶賬號、密碼、真實姓名、性別、年齡、電話、地址、部門編號。關鍵字:用戶編號相關聯(lián)的處理:p001數(shù)據(jù)存儲編號:f002數(shù)據(jù)存儲名稱:報刊信息 簡述:報刊的基本信息數(shù)據(jù)存儲組成:報刊代號、報刊名稱、報刊年價格、出版社、出版周期、報刊類別。關鍵字:報刊

9、代號相關聯(lián)的處理:p002數(shù)據(jù)存儲編號:f003數(shù)據(jù)存儲名稱:訂購信息 簡述:訂購的基本信息數(shù)據(jù)存儲組成:訂單號、用戶賬號、報刊代號、訂閱份數(shù)、訂閱年限、金額、訂單處理狀態(tài)。關鍵字:訂單號相關聯(lián)的處理:p004(4)外部實體的描述外部實體編號:s001外部實體名稱:用戶簡 述:需要訂閱報刊的用戶輸入的數(shù)據(jù)流:d002輸出的數(shù)據(jù)流:d0014.概念模型設計4.1 部門e-r圖部門實體的e-r圖如下圖 4-1所示: 圖 4-1 部門4.2 管理員e-r圖管理員實體的e-r圖 4-2如下圖所示:圖 4-2 部門4.3 用戶e-r圖用戶實體的e-r圖 4-3 如下圖所示: 圖 4-3 用戶4.4 報刊

10、信息e-r圖 報刊信息實體的e-r圖如下圖 4-4所示:圖 4-4 報刊信息4.5訂單e-r圖訂單實體的e-r圖如下圖 4-5 所示: 圖 4-5 報刊訂單4.6 報刊類別e-r圖報刊類別實體的e-r圖如下圖 4-6 所示:圖 4-6 報刊類別4.7所有實體之間的的關系e-r圖所有實體之間的的關系e-r圖如下圖 4-7所示:圖 4-7 實體之間關系圖5. 邏輯模型設計及優(yōu)化表一 department表序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵允許空默認值說明1depidint40是是否部門id2depnamenvarchar500是部門名稱表二 loginusers表序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵

11、允許空默認值說明1loginidint40是是否用戶登錄編號2userlevelnvarchar500是用戶等級權限3usernonvarchar500是用戶賬號4passwordvarchar500是密碼表三 newsinfo表序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵允許空默認值說明1newsidvarchar500是否報刊代號2newsnamenvarchar500是報刊名稱4newswholepricefloat80是一年定價5newspressnvarchar500是出版社6newsmaketimevarchar500是出版周期7kindidvarchar500是報刊分類編號表四 newsk

12、ind表序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵允許空默認值說明1kindidvarchar500是否報刊分類編號2kindnamenvarchar500是報刊分類名稱表五 subscribe表序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵允許空默認值說明1sidvarchar500是否訂單編號2usernovarchar500是用戶賬號3newsidvarchar500是報刊代號4syearint40是訂閱年限5snumberint40是訂閱數(shù)量6smoneyfloat80是訂閱金額7stateint40是訂單處理狀態(tài):0:未處理,1:已處理表六 userinfo表序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵允許空默認

13、值說明1idint40是是否用戶編號2usernovarchar500是用戶賬號(工號)3passwordvarchar500是用戶密碼4realnamenvarchar500是真實姓名5sexnvarchar500是性別6ageint40是年齡7telnvarchar500是電話8addressnvarchar500是地址9depidint40是部門id10newidvarchar500是報刊代號6.應用程序設計(前臺)6.1 登陸如圖 6-1:圖 6-1 登錄6.2 新用戶注冊如圖 6-2:圖 6-2 新用戶注冊6.3 報刊訂閱如圖 6-3:圖 6-3 報刊訂閱6.4 報刊訂閱訂單填寫如圖

14、 6-4:圖 6-4 報刊訂閱訂單6.5 訂單歷史記錄如圖 6-5:圖 6-5 訂單歷史記錄6.6 個人訂閱統(tǒng)計如圖 6-6:圖 6-6 個人訂閱統(tǒng)計6.7 修改個人信息如圖 6-7圖 6-7 修改個人信息6.8 修改密碼如圖 6-8:圖 6-8 修改密碼7. 課程設計心得體會從選題開始,需求分析、數(shù)據(jù)庫設計、編碼、測試等等,再到我們的課題:報刊訂閱管理系統(tǒng),基本完善,經過整整兩個星期。在這兩個星期里,我利用所學的知識,自己動手實踐寫代碼,做設計,并逐步地實現(xiàn)這個小小的管理系統(tǒng)。整個過程中遇到了不少問題,也解決了不少問題,當然也收獲了不少。首先在怎么設計數(shù)據(jù)庫時,就花了一兩天時間,雖然涉及到的

15、數(shù)據(jù)表只有六個,但每個表都相對獨立有相互關聯(lián)。在設計的時候必須要考慮到表與表之間的關系,字段與字段之間的關聯(lián)。盡量做到數(shù)據(jù)冗余低,達到第三范式。根據(jù)需求分析,經過翻來覆去的思考之后,才建好一個初步的數(shù)據(jù)庫。一旦數(shù)據(jù)庫建好之后,后面的進程就快了。主要是編碼過程。因為沒什么流程可言,所有在寫代碼的時候也沒有考慮什么流程問題,只是實現(xiàn)簡單的增刪查改功能。當然由于之前沒怎么用過c/s的winform來實現(xiàn)功能,所以在編碼的過程中還一邊寫一邊查資料,慢慢地摸索著。記得遇到一個窗體之間傳值的問題,這個b/s的web頁面?zhèn)髦档牟僮鞣绞胶艽蟛煌?。于是在網上找到幾種方法,也試了兩種方法,可能技術不到家,還是沒見

16、效果,最后用了一種最笨的方法,就是在父窗體定義一個全局變量,然后子窗體需要那個變量的話就可以通過引用父窗體的那個全局變量。不過這個方法還是有一定的不足,盡管發(fā)現(xiàn)了但是現(xiàn)在還不知怎么去解決這個問題。還有之前沒怎么做過報表,通過這個小系統(tǒng)的練習,我也了解的rdlc報表的制作以及實現(xiàn),這也是一個小收獲。當然由于時間有限,還沒來得及做大量的測試,這其中肯定還有不少的bug以及錯誤可能還沒發(fā)現(xiàn),還需下一階段繼續(xù)完善??偟膩碚f,能夠在短短的兩星期內做出一個東西出來,盡管不是很復雜,盡管很垃圾,但通過自己的大腦及雙手把他實現(xiàn),也算不錯了。8. 參考文獻 1 錢雪忠.數(shù)據(jù)庫原理及應用.北京郵電大學出版社.20

17、102 3 其他網絡資源9.附錄 /登錄關鍵代碼(login.cs)/private void btnlogin_click(object sender, eventargs e) messageshow.text = ; name = txtusername.text.tostring().trim(); password = txtpassword.text.tostring().trim(); pass = md5.md5(password); string str = select * from loginusers where userno= + name + ; dataset d

18、s = db.getdataset(str); datatable dt = ds.tables0; if (dt.rows.count 0) string level = ; string loginname = ; for (int i = 0; i 0) messageshow.text = ; messageshow.visible = true; messageshow.text = 登錄成功!正在連接.; /system.threading.thread.sleep(2000);/登錄延時2秒 var mainuser = new usermain(); this.visible

19、= false; mainuser.show(); /部門綁定關鍵代碼/ public void binddept() string str = select distinct depname from department; dataset ds = db.getdataset(str); combregdept.datasource = ds.tables0.defaultview; combregdept.displaymember = depname; /級聯(lián)綁定/ private void combkind_selectedindexchanged(object sender, ev

20、entargs e) if (combkind.selectedindex -1) string kindid = combkind.selectedvalue.tostring(); /string kindid = db.getkindid(kind); string str = select distinct newsname from newsinfo where kindid= + kindid + ; dataset ds = db.getdataset(str); combnewsname.datasource = ds.tables0.defaultview; combnews

21、name.displaymember = newsname; /序號自動增長/ private void datagridview1_rowpostpaint(object sender, datagridviewrowpostpainteventargs e) using (solidbrush b = new solidbrush(datagridview1.rowheadersdefaultcellstyle.forecolor) e.graphics.drawstring(convert.tostring(e.rowindex + 1, system.globalization.cul

22、tureinfo.currentuiculture), e.inheritedrowstyle.font, b, e.rowbounds.location.x + 20, e.rowbounds.location.y + 4); /窗體之間傳值/ public static string newsid = subscribe.newsid.tostring();/接收從subscribe窗體中傳newsid這個值過來 public static string userno = l.tostring();/接收從login窗體中傳name這個值過來/自動生成訂單號/ publi

23、c static string getno(string str) string m = system.datetime.now.tostring(yyyy-mm-dd); string new_no = ; using (sqldatareader reader = db.getdatareader(str) if (reader.read() if (reader0.tostring() = string.empty) new_no = bk- + lsy- + m + - + 1.tostring(0000); return new_no; else string k = bk-lsy-

24、 + m + -; int newno = 0; string no = reader0.tostring(); if (k = no.substring(0, no.length - 4) newno = convert.toint32(no.substring(no.length - 4, 4) + 1; return k + newno.tostring(0000); else new_no = bk- + lsy- + m + - + 1.tostring(0000); return new_no; /md5密碼加密類/ public static string md5(string tomd5) byte result = encoding.default.getbytes(tomd5); md5cryptoserviceprovider md5 = new md5cryptoserviceprovider(); byte output = md5

溫馨提示

  • 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

提交評論