運(yùn)動(dòng)會(huì)計(jì)分系統(tǒng)課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  計(jì)算機(jī)科學(xué)與工程學(xué)院</p><p><b>  數(shù)字媒體與技術(shù)專業(yè)</b></p><p>  《數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)》報(bào)告</p><p>  學(xué)生班級: </p><p>  學(xué)生學(xué)號: </p><p>  學(xué)生姓名:

2、 </p><p>  指導(dǎo)教師: </p><p>  2011 年 9 月 1  日</p><p><b>  目錄</b></p><p>  第一章 課程設(shè)計(jì)的目的和要求1</p><p>  1.1課程

3、設(shè)計(jì)的目的1</p><p>  1.2課程設(shè)計(jì)問題描述1</p><p>  1.3課程設(shè)計(jì)基本要求1</p><p>  1.4課程設(shè)計(jì)測試數(shù)據(jù)1</p><p>  第二章 課程設(shè)計(jì)任務(wù)內(nèi)容2</p><p>  第三章 詳細(xì)設(shè)計(jì)說明3</p><p>  3.1數(shù)據(jù)類型定義

4、3</p><p>  3.2程序功能圖及功能說明4</p><p>  3.2.1程序功能圖4</p><p>  3.2.2程序功能說明4</p><p>  3.3程序流程圖5</p><p><b>  3.4算法設(shè)計(jì)6</b></p><p>  第四章

5、 程序測試7</p><p>  4.1多組數(shù)據(jù)輸入與輸出7</p><p>  4.2操作過程10</p><p>  第五章 課程設(shè)計(jì)心得與體會(huì)11</p><p><b>  第六章 致謝12</b></p><p>  附錄一 參考文獻(xiàn)13</p><p&g

6、t;  附錄二 程序清單14</p><p><b>  運(yùn)動(dòng)會(huì)計(jì)分系統(tǒng)</b></p><p>  第一章 課程設(shè)計(jì)的目的和要求</p><p><b>  1.1課程設(shè)計(jì)目的</b></p><p>  數(shù)據(jù)結(jié)構(gòu)作為一門學(xué)科主要研究數(shù)據(jù)的各種邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),以及對數(shù)據(jù)的各種操作。因此,主要

7、有三個(gè)方面的內(nèi)容:數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu);對數(shù)據(jù)的操作(或算法)。通常,算法的設(shè)計(jì)取決于數(shù)據(jù)的邏輯結(jié)構(gòu),算法的實(shí)現(xiàn)取決于數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是信息的一種組織方式,其目的是為了提高算法的效率,它通常與一組算法的集合相對應(yīng),通過這組算法集合可以對數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)進(jìn)行某種操作。</p><p>  在當(dāng)今信息時(shí)代,信息技術(shù)己成為當(dāng)代知識經(jīng)濟(jì)的核心技術(shù)。我們時(shí)刻都在和數(shù)據(jù)打交道。比如人們在外出工作時(shí)找

8、最短路徑,在銀行查詢存款、通過互聯(lián)網(wǎng)查新聞、以及遠(yuǎn)程教育報(bào)名等,所有這些都在與數(shù)據(jù)發(fā)生關(guān)系。實(shí)際上,現(xiàn)實(shí)世界中的實(shí)體經(jīng)過抽象以后,就可以成為計(jì)算機(jī)上所處理的數(shù)據(jù)。</p><p>  數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中所出現(xiàn)的計(jì)算機(jī)操作對象以及它們之間的關(guān)系和操作的學(xué)科。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)軟件和計(jì)算機(jī)硬件之間的一門計(jì)算機(jī)專業(yè)的核心課程,它是計(jì)算機(jī)程序設(shè)計(jì)、數(shù)據(jù)庫、操作系統(tǒng)、編譯原理及人工智能

9、等的重要基礎(chǔ),廣泛的應(yīng)用于信息學(xué)、系統(tǒng)工程等各種領(lǐng)域。</p><p>  學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了將實(shí)際問題中所涉及的對象在計(jì)算機(jī)中表示出來并對它們進(jìn)行處理。通過課程設(shè)計(jì)可以提高學(xué)生的思維能力,促進(jìn)學(xué)生的綜合應(yīng)用能力和專業(yè)素質(zhì)的提高。課程設(shè)計(jì)的目的:</p><p>  1)要求學(xué)生達(dá)到熟練掌握C語言的基本知識和技能。</p><p>  2)了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的

10、設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力。</p><p>  3)提高程序設(shè)計(jì)和調(diào)試能力。學(xué)生通過上機(jī)實(shí)習(xí),驗(yàn)證自己設(shè)計(jì)的算法的正確性。學(xué)會(huì)有效利用基本調(diào)試方法,迅速找出程序代碼中的錯(cuò)誤并且修改。</p><p>  4)培養(yǎng)算法分析能力。分析所設(shè)計(jì)算法的時(shí)間復(fù)雜度和空間復(fù)雜度,進(jìn)一步提高程序設(shè)計(jì)水平。</p><p>  5)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)

11、計(jì)、程序編碼、測試等基本方法和技能。</p><p>  1.2課程設(shè)計(jì)問題描述</p><p>  參加運(yùn)動(dòng)會(huì)的系有n個(gè),其中系編號從1至n。比賽分成w個(gè)女子項(xiàng)目和m個(gè)男子項(xiàng)目。運(yùn)動(dòng)會(huì)比賽項(xiàng)目編號是:男子1……m,女子m+1……m+w。在比賽的結(jié)果中,不同的項(xiàng)目取前五名或者取前三名的積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生

12、自己設(shè)定。(m<=20,n<=20)</p><p>  1.3課程設(shè)計(jì)基本要求</p><p> ?。?)能夠方便快捷的輸入各個(gè)項(xiàng)目的前三名或前五名的成績</p><p>  (2)能夠按系編號、系總分、男女團(tuán)體總分進(jìn)行排序并輸出</p><p> ?。?)能夠精確的統(tǒng)計(jì)各系的總分</p><p> ?。?/p>

13、4)能夠按系編號查詢系某個(gè)項(xiàng)目的基本情況,能夠按項(xiàng)目編號查詢?nèi)〉们叭蚯拔迕南?lt;/p><p>  1.4課程設(shè)計(jì)測試數(shù)據(jù)</p><p>  按1鍵進(jìn)入添加系的界面,根據(jù)提示,再輸入:汽車系。再輸入:8,成功添加了一個(gè)系。再輸入:2進(jìn)入運(yùn)動(dòng)項(xiàng)目添加界面,根據(jù)提示,再輸入:跳高;1;0;1;2;3。之后輸入0。再次進(jìn)入系統(tǒng)界面</p><p>  按3鍵查看系統(tǒng)中

14、輸出的結(jié)果</p><p>  按4鍵查看系統(tǒng)中輸出的結(jié)果</p><p>  按5鍵查看系統(tǒng)中輸出的結(jié)果</p><p>  按6鍵查看系統(tǒng)中輸出的結(jié)果</p><p>  按7鍵根據(jù)提示輸入項(xiàng)目編號并查看系統(tǒng)中輸出的結(jié)果</p><p>  按8鍵根據(jù)提示輸入系編號并查看系統(tǒng)中輸出的結(jié)果</p>&l

15、t;p>  第二章 課程設(shè)計(jì)任務(wù)內(nèi)容</p><p>  可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績</p><p>  可以按系編號、系總分、男女團(tuán)體總分排序輸出</p><p>  可以統(tǒng)計(jì)出各系的總分</p><p>  可以按系編號查詢系某個(gè)項(xiàng)目的情況</p><p>  可以按項(xiàng)目編號查詢?nèi)〉们叭蚯拔迕?/p>

16、系</p><p>  數(shù)據(jù)存入文件中,并且可以隨時(shí)查詢</p><p><b>  系統(tǒng)操作規(guī)定:</b></p><p>  輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)院(系)的名稱和運(yùn)動(dòng)會(huì)項(xiàng)目的名稱</p><p>  輸出形式:有中文提示,各學(xué)院(系)分?jǐn)?shù)為整形</p><p>  界面要求:有合理的

17、操作提示,每個(gè)功能都可以設(shè)立菜單,并且根據(jù)提示,可以完成相關(guān)的功能要求</p><p>  存儲(chǔ)結(jié)構(gòu):學(xué)生自己可以根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中,實(shí)時(shí)保存</p><p>  第三章 詳細(xì)設(shè)計(jì)說明</p><p><b>  3.1數(shù)據(jù)類型定義</b></p><p>  (1)運(yùn)動(dòng)

18、項(xiàng)目定義:</p><p>  typedef struct Sport //運(yùn)動(dòng)項(xiàng)目結(jié)構(gòu)</p><p><b>  {</b></p><p>  char name[20]; //運(yùn)動(dòng)項(xiàng)目名稱</p><p>  int isboy; //0為女項(xiàng)目,1為男項(xiàng)目</p

19、><p>  int is3; //0為取前五名,1為取前五名</p><p>  int number; //項(xiàng)目編號</p><p>  int first; //第一名系的編號</p><p>  int second; //第二名系的編號</p&

20、gt;<p>  int third; //第三名系的編號</p><p>  int fourth; //第四名系的編號</p><p>  int fifth; //第五名系的編號</p><p>  Sport *next;</p><p><b>

21、;  }Sport;、</b></p><p>  運(yùn)動(dòng)項(xiàng)目結(jié)構(gòu)體定義如下:char型的數(shù)組,int型的number,first,second,third,fourth,fifth以及sport類型的指針next。</p><p><b>  (2)系的定義:</b></p><p>  typedef struct Departm

22、ent //系的結(jié)構(gòu)</p><p><b>  {</b></p><p>  char name[20]; //系的名稱</p><p>  int number; //系的編號</p><p>  int boy; //男子團(tuán)體總分</p>

23、<p>  int girl; //女子團(tuán)體總分</p><p>  Department *next; </p><p>  }Department;</p><p>  將系自定義為一個(gè)結(jié)構(gòu)體命名為Department;系的結(jié)構(gòu)體定義如下:char型的數(shù)組,int型的變量unmber ,int型的變量boy,girl以及

24、Department類型的指針next。</p><p>  3.2程序功能圖及功能說明</p><p>  3.2.1程序功能圖</p><p><b>  圖2 程序功能圖</b></p><p>  3.2.2程序功能說明</p><p><b>  如上圖標(biāo)示:</b>

25、;</p><p><b>  1直接輸入系別名稱</b></p><p>  2直接輸入運(yùn)動(dòng)項(xiàng)目的名稱,編號,及男女項(xiàng)目代碼,以便之后執(zhí)行的簡單快捷</p><p>  3直接跳轉(zhuǎn)到“按系別輸出總分”的界面,查看按系別編號輸出的總分</p><p>  4直接跳轉(zhuǎn)到“按總分排序”的界面,查看按總分排列的順序</p

26、><p>  5直接跳轉(zhuǎn)到“按男團(tuán)體輸出總分”的界面,查看按男團(tuán)體總分排列的順序</p><p>  6直接跳轉(zhuǎn)到“按女團(tuán)體輸出總分”的界面,查看按女團(tuán)體總分排列的順序</p><p>  7輸入所要查出的項(xiàng)目的編號,即可查看所排列的順序</p><p>  8輸入所要查出的系別的標(biāo)號,即可查看所排列的順序</p><p>

27、;  0退出鍵,保存文本,關(guān)閉程序</p><p><b>  3.3程序流程圖</b></p><p><b>  圖1 程序流程圖</b></p><p>  如上圖所示:本系統(tǒng)在第一次運(yùn)行時(shí),將直接輸出菜單,如果不是第一次運(yùn)行,則在系統(tǒng)運(yùn)行的初期會(huì)進(jìn)行數(shù)據(jù)的讀取。然后,可以根據(jù)輸出的菜單對需要進(jìn)行的功能進(jìn)行選擇,選擇

28、完畢后將該功能進(jìn)行運(yùn)行。例如:輸入運(yùn)動(dòng)項(xiàng)目,輸入系別,按系別編號出總分,按男女團(tuán)體總分?jǐn)?shù)輸出,按項(xiàng)目標(biāo)號查詢,按系別標(biāo)號查詢,退出。運(yùn)行完畢后,將數(shù)據(jù)輸出到屏幕,如果要結(jié)束系統(tǒng)則自動(dòng)將數(shù)據(jù)保存到相應(yīng)的文本,否則繼續(xù)輸出菜單。</p><p><b>  3.4算法設(shè)計(jì)</b></p><p>  主要算法的設(shè)計(jì)思想:</p><p>  本程序

29、主要是使用鏈表來實(shí)現(xiàn)操作。一個(gè)運(yùn)動(dòng)會(huì)包括運(yùn)動(dòng)項(xiàng)目和參加運(yùn)動(dòng)會(huì)的成員。因此構(gòu)造兩個(gè)鏈表Department,Sport。根據(jù)輸入的不同選擇不同的功能,有輸入運(yùn)動(dòng)項(xiàng)目,輸入系別,按系別編號輸出總分,按總分排序,按男團(tuán)體總分排序,按女團(tuán)體總分排序,按項(xiàng)目標(biāo)號查詢,按系別標(biāo)號查詢,退出。為了操作的方便,并且能夠保存輸入數(shù)據(jù),所以通過文件操作來實(shí)現(xiàn)數(shù)據(jù)的寫和讀。每次添加新的數(shù)據(jù)后都要輸入0退出,數(shù)據(jù)才能保存。對于總分的排序使用了冒泡排序。為了使整

30、個(gè)程序看起來更加友好,又添加了程序啟動(dòng)畫面。</p><p><b>  3.5相關(guān)知識</b></p><p>  鏈表是一種物理存儲(chǔ)單元上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成。每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地

31、址的指針域。 相比于線性表順序結(jié)構(gòu),鏈表比較方便插入和刪除操作。</p><p>  冒泡排序,是指計(jì)算機(jī)的一種排序方法,它的時(shí)間復(fù)雜度為O(n^2),雖然不及堆排序、快速排序的O(nlogn,底數(shù)為2),但是有兩個(gè)優(yōu)點(diǎn):1.“編程復(fù)雜度”很低,很容易寫出代碼;2.具有穩(wěn)定性,這里的穩(wěn)定性是指原序列中相同元素的相對順序仍然保持到排序后的序列,而堆排序、快速排序均不具有穩(wěn)定性。不過,一路、二路歸并排序、不平衡二叉樹

32、排序的速度均比冒泡排序快,且具有穩(wěn)定性,但速度不及堆排序、快速排序。冒泡排序是經(jīng)過n-1趟子排序完成的,第i趟子排序從第1個(gè)數(shù)至第n-i個(gè)數(shù),若第i個(gè)數(shù)比后一個(gè)數(shù)大(則升序,小則降序)則交換兩數(shù)。</p><p><b>  第四章 程序測試</b></p><p>  4.1多組數(shù)據(jù)輸入與輸出</p><p><b>  圖3 程序

33、頁面圖</b></p><p>  圖3為本程序的頁面圖,為了使程序更加人性化,加入了“程序讀取,請耐心等待”的字樣。</p><p><b>  圖4 程序菜單圖</b></p><p>  圖4為本程序的菜單,顯示了本程序的主要功能,可以讓使用者輕松,快捷的,選擇所要進(jìn)行的操作。</p><p>  圖5

34、 程序輸入系別圖</p><p>  如圖5所示,在菜單中選擇“1”按回車鍵,彈出輸入一個(gè)系,輸入“計(jì)算機(jī)”,編號“1”單擊回車鍵,返回菜單。</p><p>  圖6程序輸入運(yùn)動(dòng)項(xiàng)目圖</p><p>  圖7程序輸入運(yùn)動(dòng)項(xiàng)目圖</p><p>  如圖6,圖7所示,在菜單中選擇“2”,按回車鍵,彈出“輸入一個(gè)運(yùn)動(dòng)項(xiàng)目”,輸入“100米”,

35、編號“1” 類型“0”等操作之后。按回車鍵,返回菜單。</p><p>  圖8 程序輸入系別編號查詢圖</p><p>  如圖8所示,在菜單中選擇“8”,按回車鍵,彈出“輸入系的編號”,輸入“2”,按回車鍵,彈回菜單。</p><p><b> ?。?)輸入:4</b></p><p>  輸出: 系名

36、 編號 男團(tuán)總分 女團(tuán)總分 總分</p><p>  法律系 4 1 0 1</p><p>  電子系 3 2 7 9</p><p>  數(shù)學(xué)系 5 6 5 11</p>

37、;<p>  旅游系 1 5 9 14</p><p>  歷史系 2 9 7 16</p><p>  中文系 6 15 11 26</p><p>  計(jì)算機(jī)系 7 2

38、1 11 32</p><p><b> ?。?)輸入:6</b></p><p>  輸出: 法律系 4 0 0 0</p><p>  電子系 3 3 1 4</p><p&g

39、t;  數(shù)學(xué)系 5 6 3 9</p><p>  旅游系 1 7 7 14</p><p>  歷史系 2 9 9 18</p><p>  中文系 6 15

40、 11 26</p><p>  計(jì)算機(jī)系 7 21 11 32</p><p><b> ?。?)輸入:8</b></p><p>  輸出:請輸入系的編號:</p><p><b>  再輸入2回車</b></p>&

41、lt;p><b>  則輸出:</b></p><p>  系名:中文系 男子團(tuán)體總分:3 女子團(tuán)體部分:10 總分:13</p><p> ?。?)輸入:0 退出</p><p><b>  4.2操作過程</b></p><p>  (1)用戶進(jìn)入程序啟動(dòng)界面,等load完成后進(jìn)入主

42、菜單.主菜單有以下9個(gè)選項(xiàng)。</p><p><b>  1.輸入系別</b></p><p><b>  2.輸入運(yùn)動(dòng)項(xiàng)目</b></p><p>  3.按系別編號輸出總分</p><p><b>  4.按總分排序</b></p><p>  5.

43、按男團(tuán)體總分排序</p><p>  6.按女團(tuán)體總分排序</p><p><b>  7.按項(xiàng)目編號查詢</b></p><p><b>  8.按系別編號查詢</b></p><p><b>  0.退出</b></p><p>  (2)輸入0至8

44、中的一個(gè)數(shù)。</p><p>  (3)輸入1,進(jìn)行添加系操作,分別輸入系的名稱和編號。</p><p>  (4)輸入2,進(jìn)行添加運(yùn)動(dòng)項(xiàng)目操作,分別輸入項(xiàng)目名稱,編號,項(xiàng)目類型,名次選</p><p><b>  取,排名情況。</b></p><p>  (5)輸入0,則退出系統(tǒng),并且保存輸入的信息.每次添加完都要輸

45、入0退出系統(tǒng)</p><p><b>  才有效。</b></p><p>  (6)輸入3,輸出按系編號總分排名。</p><p>  (7)輸入4,輸出按總分排名。</p><p>  (8)輸入5,輸出按男團(tuán)體總分排序。</p><p>  (9)輸入6,輸出按女團(tuán)體總分排序。</p&

46、gt;<p>  (10)輸入7,進(jìn)入按項(xiàng)目編號查詢界面.輸入要查詢的項(xiàng)目編號。</p><p>  (11)輸入8,進(jìn)入按系別編號查詢界面,輸入要查詢的系的編號。</p><p>  第五章 課程設(shè)計(jì)心得與體會(huì)</p><p>  二周的課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識,也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何

47、完成一件事情。</p><p>  經(jīng)過二周的課程設(shè)計(jì),過程曲折可謂一語難盡。整天都是對著電腦,不然就是翻閱資料。在此期間我失落過,也曾一度熱情高漲。點(diǎn)點(diǎn)滴滴令我回味無長。這次課程設(shè)計(jì)使我體會(huì)到只有做到細(xì)心耐心,恒心才能做好事情。</p><p>  這次的課程設(shè)計(jì),加強(qiáng)了我們動(dòng)手、思考和解決問題的能力。鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運(yùn)用本課程所學(xué)知識的能力。培養(yǎng)了我選用參考書,查

48、閱手冊及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問題、解決問題的能力。通過實(shí)際編譯系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法。通過課程設(shè)計(jì),培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟(jì)觀念和全局觀念。而且做課程設(shè)計(jì)同時(shí)也是對課本知識的鞏固和加強(qiáng),平時(shí)看課本時(shí),有些問題就不是很能理解,做完課程設(shè)計(jì),那些問題就迎刃而解了。而且還可以記住很多東西。認(rèn)識來源于實(shí)踐,實(shí)踐是認(rèn)識的動(dòng)力和最終目的,實(shí)踐是檢驗(yàn)真理的

49、唯一標(biāo)準(zhǔn)。所以這個(gè)期末測試之后的課程設(shè)計(jì)對我們的作用是非常大的。</p><p>  這次的課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很非常重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在整個(gè)設(shè)計(jì)過程中,構(gòu)思是很花費(fèi)時(shí)間的。調(diào)試時(shí)經(jīng)常會(huì)遇到這樣那樣的錯(cuò)誤,有的是因?yàn)榇中脑斐傻恼Z法錯(cuò)誤。當(dāng)然,很多也時(shí)用錯(cuò)了方法,總

50、是實(shí)現(xiàn)不了。同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。</p><p>  根據(jù)我在課程設(shè)計(jì)中遇到得問題,我將在以后的學(xué)習(xí)過程中注意以下幾點(diǎn):</p><p>  1、認(rèn)真上好專業(yè)實(shí)驗(yàn)課,多在實(shí)踐中鍛煉自己。</p><p>  2、寫程序的過程中要考慮周到,嚴(yán)密。</p><p>  3、在做

51、設(shè)計(jì)的時(shí)候要有信心,有耐心,切勿浮躁。</p><p>  4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點(diǎn),并在此基礎(chǔ)上學(xué)會(huì)靈活運(yùn)用。</p><p>  5、在課余時(shí)間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯(cuò)誤,以便能節(jié)省調(diào)試程序的時(shí)間。</p><p>  每個(gè)實(shí)驗(yàn)通常都要花費(fèi)很久的時(shí)間才能理清一個(gè)程序的思路,而且要不斷的調(diào)試程序才能把程序調(diào)試正確,同時(shí)

52、還要做到界面的輸出也是需要美化的。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多專業(yè)知識問題,最后在老師的辛勤指導(dǎo)下,也完成了課程設(shè)計(jì)。</p><p>  通過這次的課程設(shè)計(jì),讓我更加了解到數(shù)據(jù)結(jié)構(gòu)的重要性。以及它對我們專業(yè)的發(fā)展發(fā)揮的作用。對我們而言,知識上的收獲很重要,但精神上的豐收更加可喜。讓我知道了學(xué)無止境的道理。我們每一個(gè)人永遠(yuǎn)不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你

53、。挫折是一份財(cái)富,經(jīng)歷是一份擁有。這次課程設(shè)計(jì)必將成為我人生旅途上一個(gè)非常美好的回憶!同時(shí)在做課程設(shè)計(jì)時(shí)要能夠從多方面去考慮,去研究,用多種算法去實(shí)現(xiàn)要求。此次課程設(shè)計(jì),學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問題,出現(xiàn)差錯(cuò)的隨機(jī)應(yīng)變,這些都讓我受益非淺,今后的制作應(yīng)該能夠更輕松,自己也都能夠解決并高質(zhì)量的完成項(xiàng)目。</p><p><b>  第六章 致謝</b></p>

54、<p>  在此感謝對我?guī)椭^的同學(xué)們,謝謝你們對我的幫助和支持,讓我感受到兄弟的友情。課程設(shè)計(jì)強(qiáng)化了我的對于數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識的認(rèn)識,并且將知識逐步實(shí)踐化,使得自己對c有了更深刻的理解。</p><p>  并真誠地感謝我的數(shù)據(jù)結(jié)構(gòu)任課老師—xx老師。</p><p><b>  附錄一 參考文獻(xiàn)</b></p><p>  [1

55、]譚浩強(qiáng).《C++程序設(shè)計(jì)》.北京:清華大學(xué)出版社,2004年</p><p>  [2]嚴(yán)蔚敏,吳偉民.《數(shù)據(jù)結(jié)構(gòu)與算法分析(C++版)(第2版)》.北京:清華大學(xué)出版社,2006年</p><p>  [3 Clifford A. Shaffer,張銘 著《數(shù)據(jù)結(jié)構(gòu)與算法分析(C++版)(第2版)》.北京: 電子工業(yè)出版社,2010年</p><p>

56、<b>  附錄二 程序清單</b></p><p>  #include<iostream.h></p><p>  #include<iomanip.h></p><p>  #include<string.h></p><p>  #include<fstream.h>

57、;</p><p>  #include<stdlib.h></p><p>  #include<ctype.h></p><p>  #include<stdio.h></p><p>  #include<conio.h></p><p>  typedef str

58、uct Department //系的結(jié)構(gòu)</p><p><b>  {</b></p><p>  char name[20]; //系的名稱</p><p>  int number; //系的編號</p><p>  int boy; //男子團(tuán)體總

59、分</p><p>  int girl; //女子團(tuán)體總分</p><p>  Department *next; }Department;</p><p>  typedef struct Sport //運(yùn)動(dòng)項(xiàng)目結(jié)構(gòu)</p><p><b>  {</b></p>&

60、lt;p>  char name[20]; //運(yùn)動(dòng)項(xiàng)目名稱</p><p>  int isboy; //0為女項(xiàng)目,1為男項(xiàng)目</p><p>  int is3; //0為取前五名,1為取前五名</p><p>  int number; //項(xiàng)目編號</p>

61、<p>  int first; //第一名系的編號</p><p>  int second; //第二名系的編號</p><p>  int third; //第三名系的編號</p><p>  int fourth; //第四名系的編號</p>&l

62、t;p>  int fifth; //第五名系的編號</p><p>  Sport *next;</p><p><b>  }Sport;</b></p><p>  int getint(int a) //字符轉(zhuǎn)換成數(shù)字</p><p><b>  {</b

63、></p><p>  return (int)(a-'0');</p><p><b>  }</b></p><p>  Department * head1;</p><p>  //-------啟動(dòng)畫面函數(shù)----------</p><p>  void Cove

64、r() </p><p>  { system("color 1b");</p><p>  char line[]={"程序讀取中 請耐心等待..."};</p><p>  char bar[]={"...."};</p><p>  int i,j,k=0,x=0,y=0

65、; </p><p>  for(i=0;i<=strlen(line)/2;)</p><p><b>  {</b></p><p>  system("cls");</p><p>  for(j=0;j<9;j++) //改變行坐標(biāo)</p><p>

66、  cout<<endl;</p><p>  for(j=0;j<(75-strlen(line))/2;j++) //改變列坐標(biāo)</p><p>  cout<<" ";</p><p>  for(j=1;j<=i;j++) //進(jìn)度顯示器</p><p>  co

67、ut<<"●";</p><p>  for(x=strlen(line)/2;x>i;x--)</p><p>  cout<<"○";</p><p><b>  if(k==4)</b></p><p><b>  i++;</b

68、></p><p>  cout<<endl; </p><p>  for(j=0;j<(75-strlen(line))/2;j++) //行坐標(biāo)定位</p><p>  cout<<" ";</p><p>  cout<<line; //輸出線

69、條</p><p>  cout<<endl;</p><p>  for(j=0;j<(65-strlen(bar))/2;j++)</p><p>  cout<<" ";</p><p>  cout<<(i+7)*5<<"% Loading"

70、;</p><p>  cout.write(bar,k);</p><p>  cout<<endl;</p><p>  for(j=0;j<10;j++)</p><p>  cout<<endl;</p><p>  for(j=0;j<24;j++)</p>

71、<p>  cout<<" ";</p><p>  cout<<"程序設(shè)計(jì)員:數(shù)字媒體 09702班 田野 "<<endl;</p><p>  for(j=0;j<24;j++)</p><p>  cout<<" ";</p>

72、<p>  for(j=0;j<=18;j++)</p><p>  cout<<"─";</p><p>  cout<<endl;</p><p>  for(j=0;j<10000000;j++);//延時(shí)效果</p><p><b>  k++;</

73、b></p><p><b>  if(k>4)</b></p><p><b>  k=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void dep

74、artment_add() //添加系</p><p><b>  {</b></p><p>  Department * p;</p><p>  int mark=0;</p><p>  p=new Department;</p><p>  cout<<&quo

75、t;請輸入系的名稱:";</p><p>  cin>>p->name;</p><p><b>  char c;</b></p><p>  while (mark!=1)</p><p><b>  {</b></p><p>  cout&

76、lt;<"請輸入系的編號:";</p><p><b>  cin>>c; </b></p><p>  if (!isdigit(c))//是否為數(shù)字</p><p><b>  {</b></p><p>  cout<<"數(shù)據(jù)非法&q

77、uot;<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  mark=1;</b></p><p> 

78、 p->number=c;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  p->boy=0;</b></p><p>  p->girl=0;</p><p>  p->

79、;next=head1->next;</p><p>  head1->next=p;</p><p>  cout<<"成功添加了一個(gè)系"<<endl;</p><p><b>  }</b></p><p>  int department_getlong(De

80、partment *first)//得到鏈表長度</p><p><b>  {</b></p><p><b>  int i=0;</b></p><p>  while (first->next!=NULL)</p><p><b>  {</b></p>

81、;<p><b>  i++;</b></p><p>  first=first->next;</p><p><b>  }</b></p><p><b>  return i;</b></p><p><b>  }</b>&l

82、t;/p><p>  void department_write()//將系數(shù)據(jù)寫入文本</p><p><b>  {</b></p><p>  Department * p;</p><p><b>  p=head1;</b></p><p>  p=p->next

83、;</p><p>  ofstream outfile("Department.txt",ios::out);</p><p>  outfile<<department_getlong(p)+1<<" ";</p><p>  while (p!=NULL)</p><p>

84、<b>  {</b></p><p>  outfile<<p->name<<" "<<p->number<<" "<<p->boy<<" "<<p->girl<<" ";</p>

85、<p>  p=p->next;</p><p><b>  }</b></p><p>  outfile.close();</p><p>  cout<<"Write Success!"<<endl;</p><p><b>  }</

86、b></p><p>  void department_read()//從文本讀入系數(shù)據(jù)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  ifstream infile ("Department.txt",io

87、s::in);</p><p>  infile>>i;</p><p>  while(i>0)</p><p><b>  {</b></p><p>  Department * p;</p><p>  p=new Department;</p><p

88、>  infile>>p->name>>p->number>>p->boy>>p->girl;</p><p>  p->next=head1->next;</p><p>  head1->next=p;</p><p><b>  i--;</b>

89、;</p><p><b>  }</b></p><p>  cout<<"Department Data Read Success!"<<endl;</p><p><b>  }</b></p><p>  void department_outpu

90、t(Department *p)//輸出系</p><p><b>  {</b></p><p>  cout<<" 系名    編號 男團(tuán)總分 女團(tuán)總分 總分\t\n";</p><p><b>  while(p)</b></p><p><b>  

91、{</b></p><p>  cout<<p->name<<" \t"<<getint(p->number)<<"\t"<<p->boy<<"\t"<<p->girl<<"\t "<<

92、;(p->girl+p->boy)<<endl;</p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  int department_isexist(int a)//檢驗(yàn)系是否存在&

93、lt;/p><p><b>  {</b></p><p><b>  int b=0;</b></p><p>  Department *p;</p><p><b>  p=head1;</b></p><p>  p=p->next;</

94、p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  if(p->number==a)</p><p><b>  {</b></p><p><b>  return 1;</b

95、></p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b>

96、</p><p>  void department_show(int a)//輸出所有系</p><p><b>  {</b></p><p>  Department *p;</p><p><b>  p=head1;</b></p><p>  p=p->ne

97、xt;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  if(p->number==a)</p><p><b>  {</b></p><p>  cout<<p-&g

98、t;name<<" ";</p><p><b>  return;</b></p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>

99、  cout<<" 無   ";</p><p><b>  }</b></p><p>  void department_search(int a)//按編號搜索系</p><p><b>  {</b></p><p>  Department *p;</

100、p><p><b>  p=head1;</b></p><p>  p=p->next;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  if(p->number==a)<

101、/p><p><b>  {</b></p><p>  cout<<"系名:"<<p->name<<" "<<"男子團(tuán)體總分:"<<p->boy<<" "<<"女子團(tuán)體總分:"

102、<<p->girl<<" "<<"總分:"<<(p->boy+p->girl)<<" ";</p><p><b>  return;</b></p><p><b>  }</b></p>&l

103、t;p>  p=p->next;</p><p><b>  }</b></p><p>  cout<<"無此編號";</p><p><b>  }</b></p><p>  void department_addmark(int a,int b,i

104、nt c)//a為分?jǐn)?shù),b為系編號,c=1表示男,c=0表示女</p><p><b>  {</b></p><p>  Department *p;</p><p><b>  p=head1;</b></p><p>  p=p->next;</p><p>&l

105、t;b>  while(p)</b></p><p><b>  {</b></p><p>  if(p->number==b)</p><p><b>  {</b></p><p>  if(c=='1')</p><p><

106、;b>  {</b></p><p>  p->boy=p->boy+a;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  p

107、->girl=p->girl+a;</p><p><b>  }</b></p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  

108、}</b></p><p>  void department_order(Department *temp,int type) //type=0按總分,type=1按男總分,type=2按女總分,</p><p><b>  {</b></p><p>  Department *p,*q,*small,*temp1;</p

109、><p>  temp1=new Department;</p><p>  temp1->next=NULL;</p><p><b>  p=temp;</b></p><p><b>  while(p) </b></p><p><b>  {</b

110、></p><p><b>  small=p;</b></p><p>  q=p->next;</p><p><b>  while(q) </b></p><p><b>  {</b></p><p>  switch(type)&

111、lt;/p><p><b>  {</b></p><p><b>  case 0:</b></p><p>  if((q->boy+q->girl)<(small->girl+small->boy)) </p><p><b>  {</b>&l

112、t;/p><p><b>  small=q; </b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  if(q->

113、;boy<small->boy) </p><p><b>  {</b></p><p><b>  small=q; </b></p><p><b>  }</b></p><p><b>  break;</b></p>

114、<p><b>  case 2:</b></p><p>  if(q->girl<small->girl) </p><p><b>  {</b></p><p><b>  small=q; </b></p><p><b>  }

115、</b></p><p><b>  break;</b></p><p><b>  default:</b></p><p>  cout<<"error"<<endl;</p><p><b>  }</b><

116、/p><p>  if(small!=p) </p><p><b>  {</b></p><p>  temp1->boy=p->boy; </p><p>  p->boy=small->boy; </p><p>  small->boy=temp1->bo

117、y;</p><p>  temp1->girl=p->girl; </p><p>  p->girl=small->girl; </p><p>  small->girl=temp1->girl;</p><p>  strcpy(temp1->name,p->name);</p&g

118、t;<p>  strcpy(p->name,small->name); </p><p>  strcpy(small->name,temp1->name);</p><p>  temp1->number=p->number; </p><p>  p->number=small->number; &

119、lt;/p><p>  small->number=temp1->number; //將系的名字互換</p><p><b>  }</b></p><p>  q=q->next;</p><p><b>  }</b></p><p>  p=p-&g

120、t;next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Sport * head2;</p><p>  int sport_isexist(int a) //檢查運(yùn)動(dòng)項(xiàng)目(編號)是否已經(jīng)存在</p><p>

121、<b>  {</b></p><p><b>  int b=0;</b></p><p><b>  Sport *p;</b></p><p><b>  p=head2;</b></p><p>  p=p->next;</p>

122、<p><b>  while(p)</b></p><p><b>  {</b></p><p>  if(p->number==a)</p><p><b>  {</b></p><p><b>  return 1;</b>&l

123、t;/p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p

124、><p>  void sport_add() //添加項(xiàng)目</p><p><b>  {</b></p><p>  Sport * p;</p><p>  int mark=0;</p><p>  p=new Sport;</p><p>  cout&

125、lt;<"請輸入項(xiàng)目名稱:";</p><p>  cin>>p->name;</p><p><b>  char c;</b></p><p>  while (mark!=1)</p><p><b>  {</b></p><p

126、>  cout<<"請輸入項(xiàng)目編號:";</p><p><b>  cin>>c; </b></p><p>  if (!isdigit(c))</p><p><b>  {</b></p><p>  cout<<"數(shù)據(jù)

127、非法"<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if(sport_isexist(c))</p><p><

128、;b>  {</b></p><p>  cout<<"該編號已存在"<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b><

129、;/p><p><b>  mark=1;</b></p><p>  p->number=c;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p&

130、gt;<p><b>  mark=0;</b></p><p>  while (mark!=1)</p><p><b>  {</b></p><p>  cout<<"請輸入項(xiàng)目類型(0為女子項(xiàng)目,1為男子項(xiàng)目):";</p><p><b

131、>  cin>>c;</b></p><p>  p->isboy=(int)(c-'0');//字符轉(zhuǎn)換成數(shù)字</p><p>  if (!isdigit(c))</p><p><b>  {</b></p><p>  cout<<"數(shù)據(jù)非

132、法"<<endl;</p><p><b>  }</b></p><p>  else if(p->isboy<0||p->isboy>1)</p><p><b>  {</b></p><p>  cout<<"數(shù)據(jù)非法&qu

133、ot;<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  mark=1;</b></p><p>  

134、p->isboy=c;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  mark=0;</b></p><p>  while (mark!=1)</p><p><b>  {

135、</b></p><p>  cout<<"請輸入項(xiàng)目名次情況(0為取前3名,1為取前5名):";</p><p><b>  cin>>c;</b></p><p>  p->is3=(int)(c-'0');</p><p>  if (!

136、isdigit(c))</p><p><b>  {</b></p><p>  cout<<"數(shù)據(jù)非法"<<endl;</p><p><b>  }</b></p><p>  else if(p->is3<0||p->is3>

137、;1)</p><p><b>  {</b></p><p>  cout<<"數(shù)據(jù)非法"<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p>

138、<b>  {</b></p><p><b>  mark=1;</b></p><p><b>  p->is3=c;</b></p><p><b>  }</b></p><p><b>  }</b></p>

139、;<p><b>  mark=0;</b></p><p>  while (mark!=1)</p><p><b>  {</b></p><p>  cout<<"請輸入第一名的系的編號:";</p><p><b>  cin>

140、>c; </b></p><p>  if (!isdigit(c))</p><p><b>  {</b></p><p>  cout<<"數(shù)據(jù)非法"<<endl;</p><p><b>  }</b></p>&l

141、t;p><b>  else</b></p><p><b>  {</b></p><p>  if(!department_isexist(c))</p><p><b>  {</b></p><p>  cout<<"該系不存在,請先添加&q

142、uot;;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  mark=1;</b></p><p>  p->first

143、=c;</p><p>  if(p->is3=='0')</p><p>  department_addmark(5,c,p->isboy);</p><p><b>  else</b></p><p>  department_addmark(7,c,p->isboy);<

144、/p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  mark=0;</b></p><p>  while (mark!=1)<

145、/p><p><b>  {</b></p><p>  cout<<"請輸入第二名的系的編號:";</p><p><b>  cin>>c; </b></p><p>  if (!isdigit(c))</p><p><b

146、>  {</b></p><p>  cout<<"數(shù)據(jù)非法"<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p&

溫馨提示

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

最新文檔

評論

0/150

提交評論