大數(shù)據(jù)庫課程設(shè)計報刊訂閱管理系統(tǒng)
《大數(shù)據(jù)庫課程設(shè)計報刊訂閱管理系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《大數(shù)據(jù)庫課程設(shè)計報刊訂閱管理系統(tǒng)(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、文檔 數(shù)據(jù)庫課程設(shè)計 題 目 報刊訂閱管理系統(tǒng) 專業(yè)班級 計算機科學與技術(shù)07級11班 學 號 3104006476 姓 名 合 作 者 隨著時代的開展,計算系軟件和系統(tǒng)的成熟,報刊如果簡單方面訂閱成為一個影響多數(shù)人生活的問題。而建立報刊訂閱系統(tǒng)是一個很好的解決方法。經(jīng)過三年的學習,我們對計算機方面的知識有了很大的提升,本著理論聯(lián)系實際的宗旨,通過學校提供的這次課程設(shè)計實踐的機會,在指導教師的幫助下,歷經(jīng)兩周時間,我自行設(shè)計一套報刊訂
2、閱系統(tǒng),在下面的各章中,我將以這套報刊訂閱系統(tǒng)為例,談?wù)勂溟_發(fā)過程和所涉與到的問題。 設(shè)計目的 應(yīng)用對數(shù)據(jù)庫系統(tǒng)原理的理論學習,通過上機實踐的方式將理論知識與實踐更好的結(jié)合起來,鞏固所學知識。 實踐和鞏固在課堂教學中學習的關(guān)于DB2的有關(guān)知識,熟練掌握對于給定結(jié)構(gòu)的數(shù)據(jù)庫的創(chuàng)建、根本操作、程序系統(tǒng)的建立和調(diào)試以與系統(tǒng)評價。 實踐和鞏固在課堂教學中學習的關(guān)于關(guān)系數(shù)據(jù)庫原理的有關(guān)知識和數(shù)據(jù)庫系統(tǒng)的建立方法,熟練掌握對于給定實際問題,為了建立一個關(guān)系數(shù)據(jù)庫信息管理系統(tǒng),必須得經(jīng)過系統(tǒng)調(diào)研、需求分析、概念設(shè)計、邏輯設(shè)計、物理設(shè)計、系統(tǒng)調(diào)試、維護以與系統(tǒng)評價的一般過程,為畢業(yè)設(shè)計打下根底。 設(shè)
3、計容 選擇課題并且對課題的相關(guān)信息有一定的了解,對于我選的課題來說,我必須了解報刊訂閱系統(tǒng)的構(gòu)造以與訂閱人的信息還有報刊的相關(guān)信息。通過這些信息制成表格,輸入到數(shù)據(jù)庫中,使之能夠進展查詢、修改、刪除并且與報刊訂閱系統(tǒng)執(zhí)行一樣的操作。需求分析階段就是要研究我所作的報刊訂閱系統(tǒng)的具體分類和實施過程流圖。概念設(shè)計階段要完成數(shù)據(jù)抽象與局部視圖設(shè)計還有視圖的集成。邏輯結(jié)構(gòu)設(shè)計階段要把E-R圖轉(zhuǎn)化為關(guān)系模式并且把我輸入的六表結(jié)合在一起完成一個總關(guān)系表。最后就是要運行和實施數(shù)據(jù)庫。要把查詢結(jié)果與過程抓幾圖。 32 / 32 第二章需求分析 需求分析的任務(wù) 調(diào)查報刊訂閱系統(tǒng)應(yīng)用領(lǐng)域涉與的
4、容,對涉與到領(lǐng)域的各個應(yīng)用的信息要求和操作要求進展詳細分析,形成需求分析說明書。最重要的是調(diào)查、收集信息、分析訂閱人信息和報刊訂閱流程。處理要求、數(shù)據(jù)的安全性與完整性要求。 要求系統(tǒng)能有效、快速、安全、可靠和無誤的完成上述操作。并要求客戶機的界面要簡單明了,易于操作,服務(wù)器程序利于維護。 需求分析的過程 現(xiàn)在隨著網(wǎng)絡(luò)、計算機以與數(shù)據(jù)庫的快速開展,報刊的訂閱也不再是傳統(tǒng)低效的紙筆記錄了,已經(jīng)轉(zhuǎn)向網(wǎng)絡(luò)。本系統(tǒng)就是面向一個企業(yè)的報刊訂閱管理系統(tǒng)。此系統(tǒng)是一種比擬智能化的管理系統(tǒng),它面向所有企業(yè)部門的職工用戶,但具有比擬高的安全性能。 它能夠?qū)崿F(xiàn)報刊訂閱的根本功能,包括新報刊信息的錄入、訂閱、
5、查詢等操作以與后臺數(shù)據(jù)庫的備份和恢復(fù)。用戶合法注冊后必須輸入有效密碼才能成功進入此系統(tǒng),可以進展訂閱報刊,查詢信息,統(tǒng)計信息等操作。對于非法操作,系統(tǒng)有識別和防護措施 本系統(tǒng)主要有以下功能模塊: l 〔1〕登陸功能:登陸系統(tǒng)為身份驗證登錄。分為管理員登錄和一般用戶登錄。分別通過不同的用戶名和密碼進入報刊訂閱管理界面。 l 〔2〕錄入新信息功能:對于管理員,包括新用戶信息和新報刊信息的錄入功能,信息一旦提交就存入到后臺數(shù)據(jù)庫中;普通用戶自行注冊進展錄入個人信息。 l 〔3〕訂閱功能:用戶可以訂閱報刊,系統(tǒng)自動計算所需金額,并顯示在界面上;管理員不可訂閱報刊,必須以用戶身份訂閱報刊。 l
6、 〔4〕查詢功能:用戶可以查詢并顯示自己所訂閱的信息;管理員可以按人員、報刊、部門分類查詢。查詢出的信息顯示在界面上。 l 〔5〕統(tǒng)計功能:管理員可以按用戶、部門、報刊統(tǒng)計報刊的銷售情況,并對一些重要的訂閱信息進展統(tǒng)計;普通用戶可以統(tǒng)計出自己的訂閱情況。 l 〔6〕系統(tǒng)維護功能:管理員可以對用戶、報刊、部門、訂閱等信息進展添加、刪除、更改等維護工作;管理員還要經(jīng)常備份數(shù)據(jù)庫,以備出現(xiàn)故障后恢復(fù)。用戶可以更改自己的注冊信息,但用戶名不能更改。 系統(tǒng)框架 報刊訂閱管理系統(tǒng)主要是由登錄、錄入、訂閱、信息查詢、統(tǒng)計、系統(tǒng)維護等主要模塊構(gòu)成。 本系統(tǒng)的結(jié)構(gòu)功能圖: 概
7、念結(jié)構(gòu)設(shè)計 概念結(jié)構(gòu)設(shè)計的方法與步驟 概念結(jié)構(gòu)獨立于數(shù)據(jù)庫邏輯結(jié)構(gòu)和支持數(shù)據(jù)庫的DBMS。概念結(jié)構(gòu)即概念模型,其主要特點是: (1)概念模型是反映現(xiàn)實世界的一個真實模型。 概念模型應(yīng)能真實,充分反映現(xiàn)實世界,能滿足用戶對數(shù)據(jù)的處理要求。 (2)概念模型應(yīng)能易于理解。 概念模型只有被用戶理解后,才可以與設(shè)計者交換意見,參與數(shù)據(jù)庫的設(shè)計。 (3)概念模型應(yīng)當易于更改。 由于現(xiàn)實世界會發(fā)生變化,這就需要改變概念模型,易于更改的概念模型有利于修改和擴大。 (4)概念模型應(yīng)易于向數(shù)據(jù)模型轉(zhuǎn)換。 概念模型最終要轉(zhuǎn)換為數(shù)據(jù)模型。設(shè)計概念模型時應(yīng)當注意,使其有利于向特定的數(shù)據(jù)模型轉(zhuǎn)換。
8、概念結(jié)構(gòu)設(shè)計的方法 設(shè)計概念結(jié)構(gòu)通常有四類方法: (1)自頂向下:即首先定義全局概念結(jié)構(gòu)的框架,然后逐步細化。 (2)自底向上:即首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來得到全局概念模式。 (3)逐漸擴:首先定義最重要的核心概念結(jié)構(gòu),然后向外擴大,以滾雪球的方式逐步生成其他的概念結(jié)構(gòu),直至總體概念結(jié)構(gòu)。 (4)混合策略:即將自頂向下和自底向上相結(jié)合,用自頂向下策略設(shè)計一個全局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計的各局部概念結(jié)構(gòu)。 其中最經(jīng)常采用的策略是自底向上的方法。即自頂向下地進展需求分析,然后再自底向上地設(shè)計概念結(jié)構(gòu)。這個報刊訂閱系統(tǒng)就用這種方法。 概念
9、結(jié)構(gòu)設(shè)計的步驟 第一步是進展局部視圖的設(shè)計:由于高層的數(shù)據(jù)流圖只能反映系統(tǒng)的概貌,而中層流圖能較好的反映系統(tǒng)中各局部應(yīng)用的子系統(tǒng)組成。因此我們先逐一的設(shè)計分E-R圖。 第二步是進展視圖的集成:各子系統(tǒng)的E-R圖設(shè)計好之后,下一步就是要將所有的分E-R圖合成一個系統(tǒng)的總E-R圖,一般有兩個方式,多個分E-R圖一次集成,另一種是一次集成兩個分E-R圖。我想采用一次集成兩個分E-R圖的方式。 3.2 數(shù)據(jù)抽象與局部視圖設(shè)計 本系統(tǒng)采用E-R圖〔實體-關(guān)系圖〕的方法進展數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計。 系統(tǒng)E-R圖如下所示: 各實體屬圖: 部門: 用戶: 管理員:
10、 報刊: 關(guān)系表E-R圖: 訂閱: 管理: 視圖的集成 經(jīng)過逐步細化再進展每兩個一集成初步形成一個E-R圖,最后得到圖3.8總體概念結(jié)構(gòu)E-R圖: 第四章 邏輯結(jié)構(gòu)設(shè)計 E-R圖向關(guān)系模型的轉(zhuǎn)換 部門〔部門號,部門名〕 用戶〔用戶名,密碼,真實,性別,〕 管理員〔管理員名,密碼〕 報刊〔報刊代號,報刊名,類型,出版報社價〕 訂閱〔用戶名,報刊代號,訂閱年限,訂閱數(shù)量,所需金額〕 此段核心程序用于實現(xiàn)Book表與數(shù)據(jù)的連接與其用戶訂閱報刊的功能。 void CBookDlg::FillList() {
11、 CString sCmdText="Select * From paper"; _RecordsetPtr m_pRecordSet; try { m_pRecordSet.CreateInstance("ADODB.Recordset"); m_pRecordSet->Open((_variant_t)sCmdText,(_variant_t)sConn,adOpenStatic, adLockOptimistic,adCmdText); while (!m_pRecordSet->adoEOF) { InsertDataToList
12、((LPCTSTR)(_bstr_t)m_pRecordSet->GetCollect("Pname"), (LPCTSTR)(_bstr_t)m_pRecordSet->GetCollect("Ptype"), (LPCTSTR)(_bstr_t)m_pRecordSet->GetCollect("Ppublish"), (LPCTSTR)(_bstr_t)m_pRecordSet->GetCollect("Pprice")); m_pRecordSet->MoveNext(); } m_pRecordSet->Close(); }
13、 catch (__error e) { CString sTemp; sTemp.Format("%s",e.ErrorMessage()); MessageBox(sTemp); } } void CBookDlg::InsertDataToList(CString Pname, CString Ptype,CString Ppublish, CString Pprice) { int index=m_list.GetItemCount(); LV_ITEM IvItem; IvItem.mask=LVIF_TEXT; IvIt
14、em.iItem=index; IvItem.iSubItem=0; IvItem.pszText=(char*)(LPCTSTR)Pname; m_list.InsertItem(&IvItem); m_list.SetItemText(index,1,Ptype); m_list.SetItemText(index,2,Ppublish); m_list.SetItemText(index,3,Pprice); } int CBookDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::O
15、nCreate(lpCreateStruct) == -1) return -1; /* // TODO: Add your specialized creation code here CRect parentRect; CRect selfRect; this->GetParent()->GetClientRect(parentRect); this->GetClientRect(selfRect); parentRect.right=parentRect.left+selfRect.right-selfRect.left; parentRect
16、.bottom=parentRect.top+selfRect.bottom-selfRect.top; this->MoveWindow(parentRect); */ // TODO: Add your specialized creation code here return 0; } void CBookDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here m_SelectedInd
17、exOfList=-1; LPNMITEMACTIVATE lpNMItemActivate = (LPNMITEMACTIVATE)pNMHDR; if(lpNMItemActivate != NULL) { m_SelectedIndexOfList = lpNMItemActivate->iItem; } //假設(shè)存在被選中的行 if (m_SelectedIndexOfList!=-1) { m_name=m_list.GetItemText(m_SelectedIndexOfList,0); m_type =m_list.GetItemT
18、ext(m_SelectedIndexOfList,1); m_publish=m_list.GetItemText(m_SelectedIndexOfList,2); m_price=m_list.GetItemText(m_SelectedIndexOfList,3); UpdateData(false); } *pResult = 0; } ////////////////////////////////////////////////////////////////////////// //不如人意 void CBookDlg::OnButtonBoo
19、k() { UpdateData(true); if (m_name=="" ||m_publish==""||m_num=="") { MessageBox("數(shù)據(jù)填寫不完整,無法訂閱刊物!","提醒!"); return; } try { // int num=atoi((LPCTSTR)m_num); ////////////////////////////////////////////////////////////////////////// _bstr_t sCmdText="Insert book (Aname,Pnam
20、e,Bint) Values ("+ ConvertCsToCs(hostname)+","+ConvertCsToCs(m_name)+","+ConvertCsToCs(m_num)+")"; _variant_t RecordAffected; m_oConn->Execute(sCmdText,&RecordAffected,adCmdText); MessageBox("您的訂閱成功,歡迎下次再來訂閱!","提醒!"); return; } catch (__error e) { CString sTip; sTip.For
21、mat("%s",e.ErrorMessage()); } } ////////////////////////////////////////////////////////////////////////// CString CBookDlg::ConvertIntToCString(int ID) { CString sDes; sDes.Format("%d",ID); return sDes; } CString CBookDlg::ConvertCsToCs(CString ch) { ch+="'"; CString ch2="'";
22、 ch2+=ch; return ch2; } 此段程序主要用于數(shù)據(jù)庫中的Uuser表連接,并實現(xiàn)用戶登錄與訂閱報刊的信息。 void CUserDlg::OnOK() { // TODO: Add extra validation here int i=0; // TODO: Add extra validation here UpdateData(); OpenConn(); // CString sCmdText="select * From Uuser"; _RecordsetPtr m_pRecordSet; try {
23、 m_pRecordSet.CreateInstance("ADODB.Recordset"); m_pRecordSet->Open((_variant_t)sCmdText,(_variant_t)sConn,adOpenStatic, adLockOptimistic,adCmdText); while (!m_pRecordSet->adoEOF) { bool status=InsertDataToRoomList((LPCTSTR)(_bstr_t)m_pRecordSet->GetCollect("Uname"), (LPCTSTR)
24、(_bstr_t)m_pRecordSet->GetCollect("Upass")); if(status!=0) { i=1; CDialog::OnOK(); CBookDlg* BDlg=new CBookDlg(this); BDlg->hostname=m_user; BDlg->DoInter(); } m_pRecordSet->MoveNext(); } m_pRecordSet->Close(); } catch (__error e)
25、 { CString sTemp; sTemp.Format("%s",e.ErrorMessage()); MessageBox(sTemp); } if(i==0) { MessageBox("輸入的用戶名和密碼錯誤!請重新輸入!"); } } void CUserDlg::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel(); } bool CUserDlg::OpenConn() { // 連接到MS SQL Serve
26、r //_ConnectionPtr m_oConn; HRESULT m_hr; bool IsOpen=false; try { m_hr=m_oConn.CreateInstance(__uuidof(Connection)); m_oConn->CursorLocation=adUseClient; if (!SUCCEEDED(m_hr)) { MessageBox("連接數(shù)據(jù)庫失敗"); return false; } m_hr=m_oConn->Open(_bstr_t(
27、sConn),"","",-1); return true; } catch(__error e)///捕捉異常 { CString errormessage; errormessage.Format("連接數(shù)據(jù)庫失敗!\r\n錯誤信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///顯示錯誤信息 return false; } } bool CUserDlg::InsertDataToRoomList(CSt
28、ring Uname, CString Upass) { if(m_user=="") return 0; CString a = Uname.Left(strlen(m_user)); CString b = Upass.Left(strlen(m_upass)); int i=strcmp(m_user,a); int j=strcmp(m_upass,b); if(i==0) { if(j==0) return 1; } else return 0; } 此段程序用于實現(xiàn)主界面的位圖效果顯示,首先創(chuàng)建存設(shè)備環(huán)境
29、,裝入了位圖資源后, 將位圖對象選入設(shè)備環(huán)境, 讀取位圖信息將存中的位圖復(fù)制到屏幕上,就顯示出主界面的位圖效果。 void CPubView::OnDraw(CDC* pDC) { CPubDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CDC MemDC; MemDC.CreatepatibleDC(pDC); Bitmap Bitmap; Bitmap.LoadBitmap(IDB_MYBITMAP); CBit
30、map *pOldBitmap=MemDC.SelectObject(&Bitmap); BITMAP bm; Bitmap.GetObject(sizeof(BITMAP), &bm); pDC->BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &MemDC,0, 0, SRCCOPY); MemDC.SelectObject(pOldBitmap);} 4、運行結(jié)果: 登錄管理員界面
31、 注冊新用戶“xuesheng〞 管理員增加報刊“西南周報〞 “xuesheng〞登錄用戶界面 用戶訂閱西南周末20份 管理員界面顯示用戶“xuesheng“成功訂閱〞 西南周報20份 總結(jié) 通過這次的數(shù)據(jù)庫課程設(shè)計我學習并掌握了很多知識與操作。歷時兩個星期的設(shè)計令我受益匪淺,也對數(shù)據(jù)庫這門學科有了更進一步的認識與熟悉。 一個好的軟件的設(shè)計必須有一個好的需求分析。我結(jié)合自己的設(shè)計理念,設(shè)計出了六個表,分
32、別是:部門表〔department〕,用戶表〔CONSUMER〕,管理員表〔ADMINISTRATOR〕,管理關(guān)系表〔manage〕,報刊表〔MAGAZINE〕,訂閱表〔SUBSCRIBE〕。在各個表中我添加了假設(shè)干個屬性,而這些屬性恰恰是我們最想知道的信息。當創(chuàng)建完這些表和屬性后,我開始按照教師給的模板和要求寫論文,寫論文的過程中溫習了用DB2運行截圖,相較于我這是比擬難的步驟。我花了很長的時間才弄懂如何使用。我根據(jù)教師以前給的實驗指導書一步一步的從頭到尾開始學習操作應(yīng)用DB2。弄懂了DB2后,我就開始根據(jù)教師的要求進展報刊訂閱各個操作。另外,我還自學了用visio畫E-R圖和模式圖,也有所收獲。完成之后,很有成就感,學到了很多,希望以后還可以有這樣的課程設(shè)計讓我進步。由于本人能力不足,難免會使系統(tǒng)出現(xiàn)一些不足之處,但由于限于時間,本系統(tǒng)只能做出其中的一局部功能。希望教師評點批評
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外研版(一起)英語一年級上冊Module-5課件
- 外研版(一起)五上Module-10《Unit-1-You-should-tidy-your課件
- 認識線段課件
- 患者病情評估培訓完整
- 早產(chǎn)兒的護理教學
- 我們吃的食物安全嗎
- 鹽酸硫酸—浙教版九級科學上冊課件1
- 人工智能遺傳算法
- 硬質(zhì)景觀的細部處理龍湖
- 人教版小學二年級上冊數(shù)學8的乘法口訣
- 郵輪旅游世界郵輪產(chǎn)業(yè)經(jīng)濟的發(fā)展
- 如何繪制出高品質(zhì)的學科思維導圖
- 美國癲癇學會驚厥性癲癇持續(xù)狀態(tài)治療指南解讀
- 城市公共空間設(shè)計理論及方法課件
- (課件)正弦定理公開課