第一篇:數(shù)據(jù)庫課程設計總結
課 程 設 計 報 告
課程名稱數(shù)據(jù)庫課程設計—總結題目個人CD盤管理系統(tǒng)_________________________________
指導教師設計起止日期
學院計算機學院
系別專業(yè)計算機科學與技術
學生姓名班級/學號 成績___________________
課程設計總結:
經(jīng)過近2個月的設計,CD盤管理系統(tǒng)基本開發(fā)完成,該系統(tǒng)是一個簡單的關于數(shù)據(jù)庫與現(xiàn)實相結合的管理系統(tǒng),它集各種功能用于一身,在系統(tǒng)的各個模塊中體現(xiàn)了它的功能,針對音樂愛好者的需求方面進行設計的,方便了用戶的一些信息操作,為音樂愛好者節(jié)省了管理成本,提高管理效率。該系統(tǒng)的界面簡單大方,非常方便用戶的操作,同時,也為以后系統(tǒng)的擴展留出了足夠的空間。
在此次設計中后臺主要采用了servlet和JavaBean技術,數(shù)據(jù)庫則加入了存儲過程和觸發(fā)器的控制。我進一步理解了servlet和JavaBean的工作機制和所提供的便利,也感受到了存儲過程和觸發(fā)器所帶來的方便。
servlet具有以下的優(yōu)勢:方便Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數(shù)據(jù)、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態(tài)等。* 功能強大在Servlet中,許多使用傳統(tǒng)CGI程序很難完成的任務都可以輕松地完成。例如,Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫連接池之類的功能很容易實現(xiàn)。
2可移植性好Servlet用Java編寫,Servlet API具有完善的標準。因此,為IPlanet
Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。3 節(jié)省投資不僅有許多廉價甚至免費的Web服務器可供個人或小規(guī)模網(wǎng)站使用,而且對于現(xiàn)有的服務器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。
JavaBean具有以下特點:
用戶可以使用JavaBean將功能、處理、值、數(shù)據(jù)庫訪問和其他任何可以用java代碼創(chuàng)造的對象進行打包,并且其他的開發(fā)者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。JavaBean可分為兩種:一種是有用戶界面(UI,User Interface)的JavaBean;還有一種是沒有用戶界面,主要負責處理事務(如數(shù)據(jù)運算,操縱數(shù)據(jù)庫)的JavaBean。JSP通常訪問的是后一種JavaBean。
存儲過程的能力大大增強了SQL語言的功能和靈活性。存儲過程可以用流控制語
句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的運算。可保證數(shù)據(jù)的安全性和完整性。通過存儲過程可以使沒有權限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而保證數(shù)據(jù)的安全。通過存儲過程可以使相關的動作在一起發(fā)生,從而可以維護數(shù)據(jù)庫的完整性。在運行存儲過程前,數(shù)據(jù)庫已對其進行了語法和句法分析,并給出了優(yōu)化執(zhí)行方案。這種已經(jīng)編譯好的過程可極大地改善SQL語句的性能。由于執(zhí)行SQL語句的大部分工作已經(jīng)完成,所以存儲過程能以極快的速度執(zhí)行。可以降低網(wǎng)絡的通信量。使體現(xiàn)企業(yè)規(guī)則的運算程序放入數(shù)據(jù)庫服務器中,以便集中控制。當企業(yè)規(guī)則發(fā)生變化時在服務器中改變存儲過程即可,無須修改任何應用程序。企業(yè)規(guī)則的特點是要經(jīng)常變化,如果把體現(xiàn)企業(yè)規(guī)則的運算程序放入應用程序中,則當企業(yè)規(guī)則發(fā)生變化時,就需要修改應用程序工作量非常之大(修改、發(fā)行和安裝應用程序)。如果把體現(xiàn)企業(yè)規(guī)則的運算放入存儲過程中,則當企業(yè)規(guī)則發(fā)生變化時,只要修改存儲過程就可以了,應用程序無須任何變化。
觸發(fā)器可通過數(shù)據(jù)庫中的相關表實現(xiàn)級聯(lián)更改;不過,通過級聯(lián)引用完整性約束可以更有效地執(zhí)行這些更改。觸發(fā)器可以強制比用 CHECK 約束定義的約束更為復雜的約束。與 CHECK 約束不同,觸發(fā)器可以引用其它表中的列。例如,觸發(fā)器可以使用另一個表中的 SELECT 比較插入或更新的數(shù)據(jù),以及執(zhí)行其它操作,如修改數(shù)據(jù)或顯示用戶定義錯誤信息。觸發(fā)器也可以評估數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對策。一個表中的多個同類觸發(fā)器(INSERT、UPDATE 或 DELETE)允許采取多個不同的對策以響應同一個修改語句。
在本系統(tǒng)的設計過程中,首先通過對CD盤管理系統(tǒng)功能進行詳細的分析,得到系統(tǒng)功能模塊圖,然后根據(jù)系統(tǒng)功能分析,圍繞它進行系統(tǒng)的設計,介紹開發(fā)環(huán)境和開發(fā)技術,再可行性分析、功能和性能需求,然后得出系統(tǒng)業(yè)務流圖、數(shù)據(jù)流圖、E-R圖,并進行數(shù)據(jù)庫的設計和模塊化的實現(xiàn)。由于之前有稍微接觸過Java Web方面的知識,再加上利用自己的課余時間的學習,做起來感覺沒太多的困難。經(jīng)過這次系統(tǒng)設計過程,加深了我對數(shù)據(jù)庫操作的認識,更加熟悉了Java Web的構架,如servlet,struts,SOA等等。完成本設計后,才知道平日里書本上所學的東西太少,僅是些概念知識,沒運用到實踐中來,知識是無法得到升華的。只有不斷地學習才能夠跟上科技和知識的發(fā)展步伐。
第二篇:數(shù)據(jù)庫課程設計總結
篇一:數(shù)據(jù)庫課程設計個人總結 數(shù)據(jù)庫課程設計個人總結
姓名:邢王秀 學號:200924101215 班級:09計本<2>班
一個月的時間非常快就過去了,這一個月我不敢說自己有多大的進步,獲得了多少知識,但起碼是了解了項目開發(fā)的部分過程。雖說上過數(shù)據(jù)庫相關的課程,但是沒有親身經(jīng)歷過相關的設計工作細節(jié)。這次課程設計給我提供了一個很好的機會。
通過這次課程設計發(fā)現(xiàn)這其中需要的很多知識我們沒有接觸過,上網(wǎng)查找資料的時候發(fā)現(xiàn)我們以前所學到的僅僅是皮毛,還有很多需要我們掌握的東西我們根本不知道。同時也發(fā)現(xiàn)有很多已經(jīng)學過的東西我們沒有理解到位,不能靈活運用于實際,不能很好的用來解決問題,這就需要自己不斷的大量的實踐,通過不斷的自學,不斷地發(fā)現(xiàn)問題,思考問題,進而解決問題。在這個過程中我們將深刻理解所學知識,同時也可以學到不少很實用的東西。
這次的數(shù)據(jù)庫課程設計,我們組負責的企業(yè)信息文檔管理系統(tǒng)的設計。這課題是自擬的。我們組實行的分工合作。我主要是負責數(shù)據(jù)庫功能模塊設計這部分。
從各種文檔的閱讀到需求分析、概要設計、數(shù)據(jù)庫總體設計、代碼編寫與調試,我們都準備了好長時間。組內分工合作的整個過程,我親身體驗了一回系統(tǒng)的設計開發(fā)過程,分工合作的好處。很多東西書上寫的很清楚,貌似看著也很簡單,思路非常清晰。但真正需要自己想辦法去設計一個系統(tǒng)的時候才發(fā)現(xiàn)其中的難度。經(jīng)常做到后面突然就發(fā)現(xiàn)自己一開始的設計有問題,然后又回去翻工,在各種反復中不斷完善自己的想法。
我想有這樣的問題不止我一個,事后想想是一開始著手做的時候下手過于輕快,或者說是根本不了解自己要做的這個系統(tǒng)是給誰用的。因為沒有事先做過仔細的用戶調查,不知道整個業(yè)務的流程,也不知道用戶需要什么功能就忙著開發(fā),這是作為設計開發(fā)人員需要特別警惕避免的,不然會給后來的工作帶來很大的麻煩,甚至可能會需要全盤推倒重來。所以以后的課程設計要特別注意這一塊的設計。
經(jīng)過組內討論,我們確定的課題是企業(yè)信息文檔管理系統(tǒng)。說實話,我對這個系統(tǒng)不是很了解。通過上網(wǎng)查找資料、相關文獻的閱讀,我對該系統(tǒng)有了大體的了解。
在需求分析過程中,我們通過上網(wǎng)查資料,去圖書館查閱相關資料,結合我們的生活經(jīng)驗,根據(jù)可行性研究的結果和用戶的需要,分析現(xiàn)有情況及問題。在一個月的時間里,不斷地對程序及各模塊進行修改、編譯、調試、運行,其間遇到很多問題,經(jīng)過組內討論。最終把它解決了。通過這次課程設計,我對數(shù)據(jù)庫的設計更加熟練了。
通過本次課程設計,對sql語言,數(shù)據(jù)庫的創(chuàng)建、修改、刪除方法有了一定的了解,通過導入表和刪除表、更改表,學會了數(shù)據(jù)庫的基本操作。很多事情不是想象中的那么簡單的,它涉及到的各種實體、屬性、數(shù)據(jù)流程、數(shù)據(jù)處理等等。很多時候感覺后面的設計根本無法繼續(xù),感覺像是被前面做的各種圖限制了。在做關系模型轉換的時候碰到有些實體即可以認為是實體又可以作為屬性,為了避免冗余,盡量按照屬性處理了。
通過本次課程設計,我覺得不管做什么,始終都要相信自己。不要畏懼,不要怕遇到困難,什么都要去嘗試,有些你開始認為很難的事在你嘗試之后你可能會發(fā)現(xiàn)原來它并沒有你你想象的那么難。如果沒有自信,沒有目標,沒有信心就很難把事情做好,當其他人都在迷茫的時候,自己一定要堅信目標。從學習這個專業(yè),到以后從事這方面的工作都需要不斷地去學習去實踐,這次實踐可以給我們敲一個警鐘,我們面臨畢業(yè),面臨擇業(yè),需要這些實踐經(jīng)驗,在困難面前要勇于嘗試,這是這次課程設計給我的最大感想!
通過這次畢業(yè)設計的完成,使我對自己所學知識進一步的了解,同時通過實踐發(fā)現(xiàn)自己的不足,對知識的掌握及運用存在諸多的不完善。本系統(tǒng)也存在著很多不足,如系統(tǒng)十分簡單,實現(xiàn)功能也不夠完善,安全性問題也沒有很好的解決。所以在今后的學習中我會繼續(xù)努力,完善自我,同學的幫助、指導老師的用心輔導和學校的精心安排使這個課題能夠順利進行。但是,由于時間倉促以及本人水平有限,本系統(tǒng)還有很多不完善之處,也難免存在錯漏,懇請老師諒解。篇二:數(shù)據(jù)庫課程設計總結報告
漳州師范學院 數(shù)據(jù)庫課程設計
個人日程管理系統(tǒng)
姓 名: 某某
學 號:
系 別: 計算機科學與工程
專 業(yè): 計算機科學技術專業(yè)
年 級: 08級
指導教師: 陳志翔、王桃發(fā) 2011年 05 月 23 4 篇三:數(shù)據(jù)庫課程設計報告
《數(shù)據(jù)庫類課程設計》 系統(tǒng)開發(fā)報告
學 號:111007133 姓 名:邢小迪
題 目: 企業(yè)員工薪資管理
指導教師: 王紅梅
提交時間: 2013年6月01日
計算機科學與應用系 目 錄 一 緒論
二 員工薪資管理系統(tǒng)概述·······························1 ? 現(xiàn)狀分析········································1 ? 系統(tǒng)目標········································2 ? 系統(tǒng)特點········································3 三 員工薪資管理系統(tǒng)數(shù)據(jù)庫設計·························3 ? 需求分析 ·······································3 ? 數(shù)據(jù)庫物理結構分析 ····························4 ? 數(shù)據(jù)庫概念結構設計 ····························6 ? 數(shù)據(jù)庫邏輯結構設計····························9 四 員工薪資管理系統(tǒng)數(shù)據(jù)庫功能模塊的創(chuàng)建···········12 五 總結·············································21 ? 體會·········································21 ? 參考文獻·····································22 一 緒論
隨著計算機技術的飛速發(fā)展和經(jīng)濟體制改革的不斷深入,傳統(tǒng)企業(yè)管理方法、手段以及工作效率已不能適應新的發(fā)展需要,無法很好地完成員工工資管理工作。提高公司企業(yè)管理水平的主要途徑是更新管理者的思想,增強對管理活動的科學認識。基于 sql server數(shù)據(jù)庫技術建立一個通用工資管理系統(tǒng),該系統(tǒng)為提供了查詢、增加記錄、刪除等功能,功能比較的齊全,并對工資進行了統(tǒng)計如津貼管理、報表統(tǒng)計等。基本上能滿足管理員和公司的要求。此次數(shù)據(jù)庫課程設計的主要設計如下:
原理分析、程序設計過程、程序實現(xiàn)和程序調試以及數(shù)據(jù)庫的設計。
需求分析、概要結構設計、邏輯結構設計、物理結構設計和數(shù)據(jù)庫的實施和維護。
二 員工薪資管理系統(tǒng)概述
1、現(xiàn)狀分析
隨著企業(yè)人員數(shù)量增加,企業(yè)的工資管理工作也變得越來越復雜。早期的工資統(tǒng)計和發(fā)放都是使用人工方式處理紙質材料,不僅花費財務人員大量的時間且不易保存,往往由于個人的因素抄寫不慎或計算疏忽,出現(xiàn)工資發(fā)放錯誤的現(xiàn)象。早期工資管理多采取紙質材料和具有較強的時間限制。隨著我國國民經(jīng)濟建設的蓬勃發(fā)展和具有中國特色的社會主義市場經(jīng)濟體制的迅速完善,各個行業(yè)都在積極使用現(xiàn)代化的手段,不斷改善服務質量,提高工作效率,這些都在很大程度上給企業(yè)提出越來越嚴峻的挑戰(zhàn),對企業(yè)體系無論是在行政職能、企業(yè)管理水平以及優(yōu)質服務上都提出更高的要求。建設一個科學高效的信息管理系統(tǒng)是解決這一問題的必由之路。企業(yè)內部財務管理是該企業(yè)運用現(xiàn)代化技術創(chuàng)造更多更高的經(jīng)濟效益的主要因素之一。工資管理作為企業(yè)內部的一種財務管理也是如此,由于企業(yè)職工人數(shù)較多,每一位職工的具體實際情況也不盡相同,各項工資條款的發(fā)放,如果沒有一個完整的管理系統(tǒng)對企業(yè)和員工的工作都帶來許多的不便。基于以上原因,企業(yè)工資管理系統(tǒng)使用電腦安全保存、快速計算、全面統(tǒng)計,實現(xiàn)工資管理的系統(tǒng)化、規(guī)范化、自動化。
2、系統(tǒng)目標
員工薪資管理系統(tǒng)的主要目的是利用計算機對員工的各種工資信息進行日常的管理,如查詢、修改、添加、刪除以及存儲等,迅速準確地完成各種工資信息的統(tǒng)計計算和匯總工作,針對系統(tǒng)服務對象的具體要求,設計了企業(yè)工資管理系統(tǒng)。企業(yè)工資管理系統(tǒng)主要有以下幾大功能:
(1)對單位人員的變動進行處理。一個單位的職工不會是一成不變的,總是在不斷的變化:有調出、有調入、也有職工在本單位內部調動。因此,設計系統(tǒng)是應考慮到這些情況。(2)對職工的工資進行計算、修改。可以對職工的工資檔案進行個別、部分和批量修改,同時,能對各職工的工資進行計算,即計算基本工資、崗位工資及實發(fā)金額等。(3)查詢統(tǒng)計功能。要求即可以單項查詢,比如查看某個職工的工資情況等;也可以多項查詢,比如某個部門所有的員工的工資信息。
(4)對用戶管理功能。一個系統(tǒng)的應用有管理員和普通用戶,他們對系統(tǒng)的權限受到限制。
3、系統(tǒng)特點
(1)本系統(tǒng)使工資管理基本實現(xiàn)了信息化,系統(tǒng)設計的各種查詢要求代替了原來了人工查詢,即節(jié)省了人力,又減輕了員工的工作量,最重要的是由計算機操作,可以提高數(shù)據(jù)的準確性,避免人為的錯誤,方便管理。
(2)本系統(tǒng)設置了系統(tǒng)數(shù)據(jù)備份功能,定期的系統(tǒng)備份可以在數(shù)據(jù)庫受到意外的或有意的破壞的情況下,系統(tǒng)得以恢復,減少損失。(3)本系統(tǒng)的界面設計簡潔明了,采用了流行的菜單設計,對于不是計算機專業(yè)的管理人員,只需閱讀操作說明書,就能方便的使用本系統(tǒng)。
三 員工薪資管理系統(tǒng)數(shù)據(jù)庫設計
1、需求分析
本系統(tǒng)定位于中小型單位,暫時考慮單機環(huán)境下的實現(xiàn);
第三篇:數(shù)據(jù)庫課程設計個人總結
數(shù)據(jù)庫課程設計個人總結
姓名:邢王秀學號:200924101215班級:09計本<2>班
一個月的時間非常快就過去了,這一個月我不敢說自己有多大的進步,獲得了多少知識,但起碼是了解了項目開發(fā)的部分過程。雖說上過數(shù)據(jù)庫相關的課程,但是沒有親身經(jīng)歷過相關的設計工作細節(jié)。這次課程設計給我提供了一個很好的機會。
通過這次課程設計發(fā)現(xiàn)這其中需要的很多知識我們沒有接觸過,上網(wǎng)查找資料的時候發(fā)現(xiàn)我們以前所學到的僅僅是皮毛,還有很多需要我們掌握的東西我們根本不知道。同時也發(fā)現(xiàn)有很多已經(jīng)學過的東西我們沒有理解到位,不能靈活運用于實際,不能很好的用來解決問題,這就需要自己不斷的大量的實踐,通過不斷的自學,不斷地發(fā)現(xiàn)問題,思考問題,進而解決問題。在這個過程中我們將深刻理解所學知識,同時也可以學到不少很實用的東西。
這次的數(shù)據(jù)庫課程設計,我們組負責的企業(yè)信息文檔管理系統(tǒng)的設計。這課題是自擬的。我們組實行的分工合作。我主要是負責數(shù)據(jù)庫功能模塊設計這部分。
從各種文檔的閱讀到需求分析、概要設計、數(shù)據(jù)庫總體設計、代碼編寫與調試,我們都準備了好長時間。組內分工合作的整個過程,我親身體驗了一回系統(tǒng)的設計開發(fā)過程,分工合作的好處。很多東西書上寫的很清楚,貌似看著也很簡單,思路非常清晰。但真正需要自己想辦法去設計一個系統(tǒng)的時候才發(fā)現(xiàn)其中的難度。經(jīng)常做到后面突
然就發(fā)現(xiàn)自己一開始的設計有問題,然后又回去翻工,在各種反復中不斷完善自己的想法。
我想有這樣的問題不止我一個,事后想想是一開始著手做的時候下手過于輕快,或者說是根本不了解自己要做的這個系統(tǒng)是給誰用的。因為沒有事先做過仔細的用戶調查,不知道整個業(yè)務的流程,也不知道用戶需要什么功能就忙著開發(fā),這是作為設計開發(fā)人員需要特別警惕避免的,不然會給后來的工作帶來很大的麻煩,甚至可能會需要全盤推倒重來。所以以后的課程設計要特別注意這一塊的設計。
經(jīng)過組內討論,我們確定的課題是企業(yè)信息文檔管理系統(tǒng)。說實話,我對這個系統(tǒng)不是很了解。通過上網(wǎng)查找資料、相關文獻的閱讀,我對該系統(tǒng)有了大體的了解。
在需求分析過程中,我們通過上網(wǎng)查資料,去圖書館查閱相關資料,結合我們的生活經(jīng)驗,根據(jù)可行性研究的結果和用戶的需要,分析現(xiàn)有情況及問題。在一個月的時間里,不斷地對程序及各模塊進行修改、編譯、調試、運行,其間遇到很多問題,經(jīng)過組內討論。最終把它解決了。通過這次課程設計,我對數(shù)據(jù)庫的設計更加熟練了。
通過本次課程設計,對SQL語言,數(shù)據(jù)庫的創(chuàng)建、修改、刪除方法有了一定的了解,通過導入表和刪除表、更改表,學會了數(shù)據(jù)庫的基本操作。
很多事情不是想象中的那么簡單的,它涉及到的各種實體、屬性、數(shù)據(jù)流程、數(shù)據(jù)處理等等。很多時候感覺后面的設計根本無法繼續(xù),感覺像是被前面做的各種圖限制了。在做關系模型轉換的時候碰到有
些實體即可以認為是實體又可以作為屬性,為了避免冗余,盡量按照屬性處理了。
通過本次課程設計,我覺得不管做什么,始終都要相信自己。不要畏懼,不要怕遇到困難,什么都要去嘗試,有些你開始認為很難的事在你嘗試之后你可能會發(fā)現(xiàn)原來它并沒有你你想象的那么難。如果沒有自信,沒有目標,沒有信心就很難把事情做好,當其他人都在迷茫的時候,自己一定要堅信目標。從學習這個專業(yè),到以后從事這方面的工作都需要不斷地去學習去實踐,這次實踐可以給我們敲一個警鐘,我們面臨畢業(yè),面臨擇業(yè),需要這些實踐經(jīng)驗,在困難面前要勇于嘗試,這是這次課程設計給我的最大感想!
通過這次畢業(yè)設計的完成,使我對自己所學知識進一步的了解,同時通過實踐發(fā)現(xiàn)自己的不足,對知識的掌握及運用存在諸多的不完善。本系統(tǒng)也存在著很多不足,如系統(tǒng)十分簡單,實現(xiàn)功能也不夠完善,安全性問題也沒有很好的解決。所以在今后的學習中我會繼續(xù)努力,完善自我,同學的幫助、指導老師的用心輔導和學校的精心安排使這個課題能夠順利進行。但是,由于時間倉促以及本人水平有限,本系統(tǒng)還有很多不完善之處,也難免存在錯漏,懇請老師諒解。
第四篇:數(shù)據(jù)庫課程設計
需求分析
在銀行業(yè)務模擬中用隨機函數(shù)產(chǎn)生隨機數(shù),求客戶在銀行的平均時間,客戶來到銀行后加入兩個隊列,客戶辦理的業(yè)務有兩種,一是取款和貸款,二是存款和還款。概要設計
typedef struct service { int num;//客戶號 string type;//到達或離開 int beginTime;int endTime;int money;//正數(shù)為存款,負數(shù)為取款 struct service* next;}service;typedef struct //隊列 { service* head;service* rear;}queue;int total;//初始時銀行現(xiàn)存資金總額 int closeTime;//營業(yè)結束時間
int arriveTime;//兩個到達事件之間的間隔上限 int dealTime;//客戶交易的時間上限 int dealMoney=5000;//交易額上限 int currentTime=0;//當前時間 int totalTime=0;//客戶逗留總時間 int counter=0;//客戶總數(shù) int number=1;//初始客戶序列號 int currentTimeOfDeal=0;int theArriveTime=0;queue eq;//事件隊列 queue fq;//隊列一
queue sq;//對列二 //初始化三個隊列 service* temped;int Time;void push(queue &q,int a)// 插入元素a為Q的新的隊尾元素 void pop(queue &q)// 若隊列不空,出對列函數(shù) service* front(queue &q)//返回隊首元素 service* back(queue &q)//返回隊尾元素
service* searchAndDel(queue &q,int m)//在對列中尋找可處理元素 bool state=1;//用于判斷是否有窗口在處理
void arrive()//“到達”函數(shù) 隨機產(chǎn)生顧客,進入隊列一產(chǎn)生到達事件 進入事件隊列
void putMoney()//存款函數(shù) void getMoney()//取款函數(shù)
void findAndDeal()//在對列中尋找可處理元素,對其進行處理 運行環(huán)境
Window XP Visual C++ 開發(fā)工具和編程語言
Visual C++ C++ 詳細設計
1.隊列的鏈式表示和實現(xiàn) typedef struct service { int num;//客戶號
string type;//到達或離開 int beginTime;int endTime;int money;//正數(shù)為存款,負數(shù)為取款 struct service* next;}service;typedef struct //隊列 { service* head;service* rear;}queue;2.插入一個元素為隊尾元素 void push(queue &q,int a){ service* p=new service;p->money=a;p->next=NULL;if(q.head==NULL)//列隊為空,初始化 { q.head=p;q.rear=p;} else //隊列不為空,插入元素a { q.rear->next=p;q.rear=q.rear->next;} } 3.返回函數(shù)
service* front(queue &q)//返回隊首元素 { return q.head;} service* back(queue &q)//返回隊尾元素 { return q.rear;} 4.在對列中尋找可處理元素
service* searchAndDel(queue &q,int m){ service* sign=q.head;//標記頭節(jié)點 service* p;while(q.head!=NULL){ if((-(q.head->money)) { p=q.head;q.head=q.head->next;//首節(jié)點后移一位,返回原首節(jié)點 return p;} } if((-(q.head->money))>m)//隊首元素不能被處理 { if(q.head==q.rear){ } return NULL;else //首節(jié)點移到隊列尾部 { q.rear->next=q.head;q.rear=q.rear->next;q.head=q.head->next;q.rear->next=NULL;} } if(q.head==sign)//隊列循環(huán)一周時停止 return NULL;} return NULL;} 5.到達函數(shù) void arrive()//到達“函數(shù) 隨機產(chǎn)生顧客,進入隊列一產(chǎn)生到達事件 進入事件隊列 { push(fq,(rand()%(2*dealMoney)-dealMoney));//隨機產(chǎn)生顧客加入第一隊列 back(fq)->beginTime=currentTime;back(fq)->num=number;push(eq,(back(fq)->money));//將產(chǎn)生事件加入事件隊列 back(eq)->beginTime=currentTime;back(eq)->type=”到達“;back(eq)->num=number;++number;} 6存款函數(shù) void putMoney(){ total+=front(fq)->money;//更新資金總額 push(eq,front(fq)->money);//加入事件隊列 離開 back(eq)->type=”離開“;back(eq)->num=front(fq)->num;back(eq)->endTime=(front(fq)->beginTime+rand()%dealTime+1);++counter;//更新客戶總數(shù) totalTime+=(back(eq)->endTime-front(fq)->beginTime);//更新逗留時間 pop(fq);//刪除第一隊列第一個業(yè)務 currentTimeOfDeal=back(eq)->endTime;state=0;} 7取款函數(shù) void getMoney()//取款函數(shù) { if((-fq.head->money)>total)//資金短缺 加入第二隊列 { push(sq,front(fq)->money);back(sq)->beginTime=front(fq)->beginTime;back(sq)->num=front(fq)->num;pop(fq);6 } else { total=total+back(fq)->money;push(eq,front(fq)->money);//加入事件隊列離開 back(eq)->type=”離開“;back(eq)->num=front(fq)->num;back(eq)->endTime=(front(fq)->beginTime+rand()%dealTime+1);back(eq)->beginTime=0;currentTimeOfDeal=back(eq)->endTime;++counter;//更新客戶總數(shù) totalTime+=(back(eq)->endTime-back(fq)->beginTime);//更新逗留時間 pop(fq);//刪除第一隊列第一個業(yè)務 state=0;} } 8.在對列中尋找可處理元素,對其進行處理 void findAndDeal(){ while((temped=searchAndDel(sq,total))&&NULL!=temped)//查找可處理取款 { total+=temped->money; totail=total+temped->money;push(eq,temped->money);//加入事件隊列訓 離開 back(eq)->type=”離開“;back(eq)->num=temped->num;randomTemp=rand()%dealTime+1; //更 新資 金總額 7 back(eq)->endTime=currentTime+randomTemp;currentTimeOfDeal+=randomTemp;++counter;//更新客戶總數(shù) totalTime+=(back(eq)->endTime-temped->beginTime);//更新逗留時間 delete temped;//刪除節(jié)點 temped=NULL;} state=0;} 9 主函數(shù) int main(){ int m;cin>>m;if(m=111111){ cout<<”歡迎進入系統(tǒng)< srand(time(NULL));//初始化隨機函數(shù) cout<<”輸入銀行的初始存款:n“;cin>>total;cout<<”輸入銀行的營業(yè)時間:n“;cin>>closeTime;8 cout<<”輸入最大到達時間間隔:n“;cin>>arriveTime;cout<<”輸入最大的處理時間:n“;cin>>dealTime;theArriveTime+=rand()%arriveTime+1;//首次到達時間 while(currentTime } cout< } if(state==1&&fq.head!=NULL){ } if(fq.head->money>=0){ } else getMoney();putMoney();findAndDeal();arrive();theArriveTime+=rand()%arriveTime+1;9 <<”事件類型“<<”tt“ <<” 時間“<<”t“ <<” 處理金額“< } cout<<”未處理客戶:“<<”“< < < cout< } } cout<<”銀行當前余額:"< 在用隨即函數(shù)rand產(chǎn)生隨機數(shù)的時候,對其初始化用srand(time(NULL),為了使得產(chǎn)生的隨機數(shù)是整數(shù)要在后面加一 測試結果 如圖一所示為輸入密碼進入系統(tǒng)后 圖一輸入密碼進入系統(tǒng)后 如圖二為輸入銀行的初始存款,營業(yè)時間,兩個到達事件的最大間隔,客戶交易的最大時間 圖二輸入各項信息后 如圖三所示產(chǎn)生的客戶信息 圖三 客戶的信息(到達時間和離開時間,平均在的時間) 參考文獻 [1] 吳文虎,程序設計基礎(第二版),北京,清華大學出版社 [2] 譚浩強,C語言程序設計,北京,清華大學出版社 [3] 邊肇祺,模式識別(第二版),北京:清華大學出版社 [4] 李永忠,幾種小波變換的圖像處理技術,西北民族學院學報,自然科學版 [5] 嚴蔚敏,吳偉民,米寧,數(shù)據(jù)結構題集(c語言版),清華大學出版社 心得體會 轉眼之間,來到大學已經(jīng)一年半的時間了,對程序的學習也有了初步的認識,在大一的時候學習了程序設計,大二緊接著又學了數(shù)據(jù)結構,在這次的課程設計中,遇到了一些問題,通過老師和同學的幫助得到了解決,并且對程序設計的認識又提高了一個層次,在以后的學習中,對經(jīng)常出現(xiàn)的問題會更加注意。 這次的課程設計給了我很大的幫助,在過程中學到了很多的知識,對程序的規(guī)范性以及有效性更加的重視。在以后編程序的過程中會更加注意程序的完善性,使程序的功能更加的齊全,而這也是作為一個程序設計師必須要具備的。認識到只有多多的練習才能更好的運用所學習的知識。在大學里要充分的利用各種資源,提高自己的水平。 數(shù)據(jù)庫課程設計 第一章 引言 開發(fā)的意義 設計應用系統(tǒng)的任務及目標 設計開發(fā)及運行的軟硬件環(huán)境 第二章 系統(tǒng)分析與設計 系統(tǒng)需求分析 數(shù)據(jù)庫概念結構設計 數(shù)據(jù)庫邏輯結構設計 數(shù)據(jù)庫物理結構設計 系統(tǒng)總體結構設計 第三章 系統(tǒng)開發(fā)及實現(xiàn) 設計開發(fā)采用的技術及設計效果 第四章 總結第五篇:數(shù)據(jù)庫課程設計