第一篇:1206401數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)
1206402數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)
一、課程設(shè)計(jì)的目的
1.鞏固和加深對(duì)數(shù)據(jù)結(jié)構(gòu)課程所學(xué)知識(shí)的理解,了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法;
2.初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;
3.提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法,獨(dú)立分析和解決問(wèn)題的能力; 4.訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng);
二、課程設(shè)計(jì)的要求(應(yīng)完成的工作)
完成并上交的成果的內(nèi)容必須由以下兩個(gè)部分組成,缺一不可(該部分以電子文件形式上交):
1.上交源程序:學(xué)生按照課程設(shè)計(jì)的具體要求所開(kāi)發(fā)的所有源程序(以“學(xué)號(hào)姓名.cpp”來(lái)命名);
2.課程設(shè)計(jì)報(bào)告:(保存為word2003文檔中,文件名要求按照“學(xué)號(hào)姓名.doc”命名,即文件名為“1206402**張三”.doc)按照課程設(shè)計(jì)的具體要求建立的功能模塊,每個(gè)模塊要求按照如下幾個(gè)內(nèi)容認(rèn)真完成:
需求分析:在該部分中敘述模塊的劃分和各個(gè)模塊的功能要求;
概要設(shè)計(jì):在此說(shuō)明每個(gè)部分的算法設(shè)計(jì)說(shuō)明(使用專業(yè)流程圖描述算法),每個(gè)程序中使用的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說(shuō)明(如果指定存儲(chǔ)結(jié)構(gòu)請(qǐng)寫(xiě)出該存儲(chǔ)結(jié)構(gòu)的定義)。
詳細(xì)設(shè)計(jì)及代碼實(shí)現(xiàn):各個(gè)模塊實(shí)現(xiàn)的源程序,對(duì)每個(gè)題目要有相應(yīng)的源程序(可以是一組源程序,每個(gè)功能模塊采用不同的函數(shù)實(shí)現(xiàn)),源程序要按照寫(xiě)程序的規(guī)則來(lái)編寫(xiě)。要結(jié)構(gòu)清晰,重點(diǎn)函數(shù)的重點(diǎn)變量,重點(diǎn)功能部分要加上清晰的程序注釋。
調(diào)試分析:測(cè)試數(shù)據(jù),測(cè)試輸出的結(jié)果(截圖說(shuō)明),時(shí)間復(fù)雜度分析,和每個(gè)模塊設(shè)計(jì)和調(diào)試時(shí)存在問(wèn)題的思考(問(wèn)題是哪些?問(wèn)題如何解決?),算法的改進(jìn)設(shè)想。
課程總結(jié):總結(jié)可以包括:課程設(shè)計(jì)過(guò)程的收獲、遇到問(wèn)題、遇到問(wèn)題解決問(wèn)題過(guò)程的思考、程序調(diào)試的思考、對(duì)數(shù)據(jù)結(jié)構(gòu)這門(mén)課程的思考、在課程設(shè)計(jì)過(guò)程中對(duì)《數(shù)據(jù)結(jié)構(gòu)》課程的認(rèn)識(shí)等內(nèi)容。
另外,報(bào)告還必須打印成紙質(zhì)文檔,字體小四,行距1.25倍。注意:去掉不該保留的內(nèi)容,如提示、說(shuō)明等。
三、題目參考、見(jiàn)另文件。
四、時(shí)間安排、17周,每天半天的時(shí)間必須到機(jī)房完成設(shè)計(jì)。
五、設(shè)計(jì)地點(diǎn)、實(shí)驗(yàn)樓407
六、組織管理、機(jī)房?jī)?nèi)按學(xué)號(hào)順序坐位,錯(cuò)位的后果自負(fù)。要求到機(jī)房的時(shí)間內(nèi)不定時(shí)抽查出勤狀況,缺勤者按一定比例扣減最后得分。
七、考核評(píng)分。
根據(jù)提交的設(shè)計(jì)文檔(包括程序主要完成的功能、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、算法設(shè)計(jì)及專業(yè)流程圖、主要代碼、程序中有何創(chuàng)新、有何收獲和所存在的不足以及需要改進(jìn)的地方)和代碼(程序的功能實(shí)現(xiàn))進(jìn)行考核。要求:
1.設(shè)計(jì):思路清晰,設(shè)計(jì)可行。
2.文檔:文檔排版正確,思路清晰流暢,流程圖符合規(guī)范并構(gòu)圖效果好。3.代碼:結(jié)構(gòu)清晰,注釋得當(dāng),運(yùn)行成功。
4.界面要求:每個(gè)功能應(yīng)該設(shè)立菜單,有合理的提示,根據(jù)提示,可以完成相關(guān)的功能要求。
5.封面使用統(tǒng)一格式,要求封面布局合理美觀。
6.A類選題最高分值可以到A,B類選題最高分值只能到B。根據(jù)各項(xiàng)情況,酌情加減分。
參考文獻(xiàn)
[1]嚴(yán)蔚敏、吳偉民主編《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)清華大學(xué)出版社 2002 [2]嚴(yán)蔚敏、吳偉民《數(shù)據(jù)結(jié)構(gòu)習(xí)題集》(C語(yǔ)言版)清華大學(xué)出版社 [3]譚浩強(qiáng)編著 《面向?qū)ο蟪绦蛟O(shè)計(jì)》(C++)清華大學(xué)出版社
附:課程設(shè)計(jì)報(bào)告內(nèi)容要求(示例)附:課程設(shè)計(jì)報(bào)告內(nèi)容要求(示例)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告
1206402 22 林曉蘇
一、設(shè)計(jì)時(shí)間
2014年6月9日-----2014年6月13日
二、設(shè)計(jì)地點(diǎn)
湖南城市學(xué)院實(shí)驗(yàn)樓計(jì)算機(jī)407機(jī)房
三、設(shè)計(jì)目的
1.鞏固和加深對(duì)數(shù)據(jù)結(jié)構(gòu)課程所學(xué)知識(shí)的理解,了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法;
2.初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;
3.提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法,獨(dú)立分析和解決問(wèn)題的能力; 4.訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng);
5.培養(yǎng)查閱資料,獨(dú)立思考問(wèn)題的能力。四.設(shè)計(jì)小組成員 120640222林曉蘇 五.指導(dǎo)老師
陳強(qiáng)、黃靜 六.設(shè)計(jì)課題
編制一個(gè)課程管理系統(tǒng)
七.基本思路及關(guān)鍵問(wèn)題的解決方法(需求分析和概要設(shè)計(jì))需要建立相應(yīng)的存儲(chǔ)結(jié)構(gòu),要用到拓?fù)渑判蛟诖髮W(xué)的某個(gè)專業(yè)中選取幾個(gè)課程作為頂點(diǎn),通過(guò)各門(mén)課的先修關(guān)系來(lái)構(gòu)建個(gè)圖, 該圖用鄰接表來(lái)存儲(chǔ),鄰接表的頭結(jié)點(diǎn)存儲(chǔ)每門(mén)課的信息.本程序的目的是為用戶編排課程,根據(jù)用戶輸入的信息來(lái)編排出每學(xué)期要學(xué)的課 程.針對(duì)計(jì)算機(jī)系本科課程結(jié)構(gòu)之前開(kāi)設(shè)。
八.算法及流程圖(詳細(xì)設(shè)計(jì))
九.調(diào)試過(guò)程中出現(xiàn)的問(wèn)題及相應(yīng)解決辦法(調(diào)試分析)試調(diào)過(guò)程中曾經(jīng)出現(xiàn)過(guò)相應(yīng)的代碼無(wú)法被識(shí)別的問(wèn)題。解決方法:經(jīng)過(guò)排查之后發(fā)現(xiàn)時(shí)因?yàn)樵诓辉摶剀嚨牡胤交剀?,使得一個(gè)可以被識(shí)別的詞變成兩端無(wú)法被識(shí)別的詞。
十.課程設(shè)計(jì)心得體會(huì)(課程總結(jié))本次實(shí)驗(yàn)中出現(xiàn)的問(wèn)題很多,但是基本上的可以避免的。同時(shí)我也深深地領(lǐng)會(huì)到實(shí)踐的重要性。課程雖然是枯燥的,但是應(yīng)用到實(shí)踐中確實(shí)靈活的。
十一.源程序(核心代碼部分加上清晰的程序注釋);
ADT Graph{ 數(shù)據(jù)對(duì)象V:V是具有相同特性的數(shù)據(jù)元素的集合,稱為頂點(diǎn)集.數(shù)據(jù)關(guān)系R: R={VR} VR={(v,w)|v,w∈V,(v,w)表示v和w之間存在直接先修關(guān)系} 基本操作
P: void CreatGraph(ALGraph *);void FindInDegree(ALGraph , int *);void TopologicalSort_1(ALGraph G,int numterm,int maxcredit);void TopologicalSort_2(ALGraph G,int numterm,int maxcredit);}ADT Graph 棧的定義: ADT Stack{ 數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,…n,n>=0} 數(shù)據(jù)關(guān)系:R1={基本操作: void InitStack(SqStack *S);int StackEmpty(SqStack S);void Push(SqStack *S, int);int Pop(SqStack *S, int *e);}ADT Stack 3.2模塊劃分 4.1數(shù)據(jù)類型的定義 1typedef struct ArcNode{ int adjvex;struct ArcNode *nextarc;}ArcNode;typedef struct VNode{ char name[24];//課程名 int classid;//課程號(hào)
#define MAX_VERTEX_NUM 100 //最大課程總數(shù) ai-1 ai
|ai-1,ai∈D,i=2,…,n} int credit;//課程的學(xué)分 int indegree;//該結(jié)點(diǎn)的入度 int state;//該節(jié)點(diǎn)的狀態(tài)
ArcNode *firstarc;//指向第一條依附該頂點(diǎn)的弧針 }VNode,AdjList[MAX_VEXTEX_NUM];4 typedef struct{ AdjList vertices;int vexnum, arcnum;}ALGraph;鄰接表的基本操作
void CreatGraph(ALGraph *);創(chuàng)建鄰接表 void FindInDegree(ALGraph , int *);求一個(gè)結(jié)點(diǎn)的入度 void TopologicalSort_1(ALGraph G,int numterm,int maxcredit);拓?fù)渑判騺?lái)編排課程 void TopologicalSort_2(ALGraph G,int numterm,int maxcredit);2.
#define STACk_INIT_SIZE 100 //存儲(chǔ)空間的初時(shí)分配量 #define STACKINCREMENT 10 //存儲(chǔ)空間的分配增量 typedef int ElemType;typedef struct{ AdjList vertices;int vexnum, arcnum;}ALGraph;基本操作
void InitStack(SqStack *S);棧的初始化
int StackEmpty(SqStack S);判斷棧是否為空
void Push(SqStack *S, int);入棧操作
int Pop(SqStack *S, int *e);出棧操作
int Sort(SqStack *S,int *t);參考文獻(xiàn) [1]嚴(yán)蔚敏、吳偉民主編《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)清華大學(xué)出版社 2002 [2]嚴(yán)蔚敏、吳偉民《數(shù)據(jù)結(jié)構(gòu)習(xí)題集》(C語(yǔ)言版)清華大學(xué)出版社 [3]譚浩強(qiáng)編著 《面向?qū)ο蟪绦蛟O(shè)計(jì)》(C++)清華大學(xué)出版社
第二篇:(任務(wù)書(shū))數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)教學(xué)任務(wù)書(shū)
一、課程設(shè)計(jì)的目的
數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中所出現(xiàn)的計(jì)算機(jī)操作對(duì)象以及它們之間的關(guān)系和操作的學(xué)科。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)軟件和計(jì)算機(jī)硬件之間的一門(mén)計(jì)算機(jī)專業(yè)的核心課程,它是計(jì)算機(jī)程序設(shè)計(jì)、數(shù)據(jù)庫(kù)、操作系統(tǒng)、編譯原理及人工智能等的重要基礎(chǔ),廣泛的應(yīng)用于信息學(xué)、系統(tǒng)工程等各種領(lǐng)域。
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了將實(shí)際問(wèn)題中所涉及的對(duì)象在計(jì)算機(jī)中表示出來(lái)并對(duì)它們進(jìn)行處理。通過(guò)課程設(shè)計(jì)可以提高學(xué)生的思維能力,促進(jìn)學(xué)生的綜合應(yīng)用能力和專業(yè)素質(zhì)的提高。通過(guò)此次課程設(shè)計(jì)主要達(dá)到以下目的:
? 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力; ? 初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能; ? 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力;
? 訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。
二、課程設(shè)計(jì)的基本要求
1、獨(dú)立思考,獨(dú)立完成:每人任選一題,在課程設(shè)計(jì)中各任務(wù)要求獨(dú)立完成,遇到問(wèn)題大家可以相互討論,互相調(diào)試檢查,但不可以拷貝。
2、按照課程設(shè)計(jì)的具體要求建立的功能模塊,每個(gè)模塊要求按照如下幾個(gè)內(nèi)容認(rèn)真完成;
其中包括:
a)需求分析:
在該部分中敘述,每個(gè)模塊的功能要求
b)概要設(shè)計(jì)
在此說(shuō)明每個(gè)部分的算法設(shè)計(jì)說(shuō)明(可以是描述算法的流程圖),每個(gè)程序中使用的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說(shuō)明(如果指定存儲(chǔ)結(jié)構(gòu)請(qǐng)寫(xiě)出該存儲(chǔ)結(jié)構(gòu)的定義。
c)詳細(xì)設(shè)計(jì)
各個(gè)算法實(shí)現(xiàn)的源程序(可放在附錄中),對(duì)每個(gè)題目要有相應(yīng)的源程序(可以是一組源程序,每個(gè)功能模塊采用不同的函數(shù)實(shí)現(xiàn))
源程序要按照寫(xiě)程序的規(guī)則來(lái)編寫(xiě)。要結(jié)構(gòu)清晰,重點(diǎn)函數(shù)的重點(diǎn)變量,重點(diǎn)功能部分要加上清晰的程序注釋。
d)調(diào)試分析
測(cè)試數(shù)據(jù),測(cè)試輸出的結(jié)果,時(shí)間復(fù)雜度分析,和每個(gè)模塊設(shè)計(jì)和調(diào)試時(shí)存在問(wèn)題的思考(問(wèn)題是哪些?問(wèn)題如何解決?),算法的改進(jìn)設(shè)想等。
4、每人實(shí)現(xiàn)的結(jié)果必須進(jìn)行檢查和演示;程序源代碼和程序的說(shuō)明文件必須上交,作為考核內(nèi)容的一部分;(上交時(shí)每人交一份,文件夾的取名規(guī)則為:“學(xué)號(hào) 姓名”,如“11207210188 張麗”。該文件夾下至少包括:“源代碼”和“課程設(shè)計(jì)報(bào)告”,統(tǒng)一放在服務(wù)器的文件夾“D: / 3
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)
/11級(jí)專升本數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)”中)。
5、課程設(shè)計(jì)報(bào)告要對(duì)重點(diǎn)函數(shù)及結(jié)構(gòu)進(jìn)行說(shuō)明。報(bào)告格式參照(報(bào)告示例)。
6、報(bào)告提交
時(shí)間:第16周星期五之前,遲交無(wú)成績(jī)。
形式:課程設(shè)計(jì)報(bào)告(要求書(shū)寫(xiě)課程設(shè)計(jì)報(bào)告)和電子文檔。
三、課程設(shè)計(jì)內(nèi)容:
1.大數(shù)相乘問(wèn)題
例如:輸入第一個(gè)數(shù)為:***172586,輸入第二個(gè)數(shù)為:***7則程序運(yùn)行后輸出***172586****7=正確答案。2.矩陣的運(yùn)算
采用十字鏈表表示稀疏矩陣,并實(shí)現(xiàn)矩陣的加減法和乘法運(yùn)算, 要求:要檢查有關(guān)運(yùn)算的條件,并對(duì)錯(cuò)誤的條件產(chǎn)生報(bào)警。3. 訂票系統(tǒng)
設(shè)計(jì)航班信息,訂票信息的存儲(chǔ)結(jié)構(gòu),設(shè)計(jì)程序完成如下功能:
錄入:可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)查詢:可以查詢某個(gè)航線的情況(如,輸入航班號(hào),查詢起降時(shí)間,起飛抵達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉(cāng));可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況;
訂票:(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果該航班已經(jīng)無(wú)票,可以提供相關(guān)可選擇航班;
退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;
客戶資料有姓名,證件號(hào),訂票數(shù)量及航班情況,訂單要有編號(hào)。修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件 6. 賓館訂房和退房系統(tǒng)
假設(shè)一個(gè)賓館有n個(gè)標(biāo)準(zhǔn)的客房,每個(gè)標(biāo)準(zhǔn)客房有m個(gè)標(biāo)準(zhǔn)間,利用鏈表、棧或者隊(duì)列等數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)出具有訂房和退房等功能的管理系統(tǒng)。7. 建立二叉樹(shù)和線索二叉樹(shù)
分別用以下方法建立二叉樹(shù): 1)用先序遍歷的輸入序列 2)用層次遍歷的輸入序列 3)用先序和中序遍歷的結(jié)果
最后對(duì)所建立的二叉樹(shù)進(jìn)行中序線索化,并對(duì)此線索樹(shù)進(jìn)行中序遍歷(不使用棧)。8.校園導(dǎo)航問(wèn)題
設(shè)計(jì)要求:設(shè)計(jì)你的學(xué)校的平面圖,至少包括10個(gè)以上的場(chǎng)所,每?jī)蓚€(gè)場(chǎng)所間可以有不同的路,且路長(zhǎng)也可能不同,找出從任意場(chǎng)所到達(dá)另一場(chǎng)所的最佳路徑(最短路徑)。9.馬的遍歷問(wèn)題
設(shè)計(jì)程序完成如下要求:在中國(guó)象棋棋盤(pán)上,對(duì)任一位置上放置的一個(gè)馬,均能選擇一個(gè)合適的路線,使得該棋子能按象棋的規(guī)則不重復(fù)地走過(guò)棋盤(pán)上的每一位置。
要求:依次輸出所走過(guò)的各位置的坐標(biāo)。/ 3
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)
11.設(shè)計(jì)一個(gè)模擬計(jì)算器來(lái)完成表達(dá)式的計(jì)算
要求對(duì)包含加、減、乘、除、括號(hào)運(yùn)算符的任意整型表達(dá)式進(jìn)行求解,操作數(shù)可以是多位數(shù)。12.八皇后問(wèn)題
設(shè)計(jì)程序完成如下要求:在8×8的國(guó)際象樣棋盤(pán)上,放置8個(gè)皇后,使得這8個(gè)棋子不能互相被對(duì)方吃掉。
要求:依次輸出各種成功的放置方法。13.圖的遍歷過(guò)程演示
設(shè)計(jì)程序完成如下功能:對(duì)給定的圖結(jié)構(gòu)和起點(diǎn),產(chǎn)生深度優(yōu)先遍歷和廣度優(yōu)先遍歷序列,并給出求解過(guò)程的動(dòng)態(tài)演示。14.構(gòu)造n個(gè)城市連接的最小生成樹(shù)
一個(gè)地區(qū)的n個(gè)城市間的距離網(wǎng),用Prim算法或Kruskal算法建立最小生成樹(shù),并計(jì)算得到的最小生成樹(shù)的代價(jià)?;疽螅?/p>
1)城市間的距離網(wǎng)采用鄰接矩陣表示,鄰接矩陣的存儲(chǔ)結(jié)構(gòu)定義采用課本中給出的定義,若兩個(gè)城市之間不存在道路,則將相應(yīng)邊的權(quán)值設(shè)為自己定義的無(wú)窮大值。要求在屏幕上顯示得到的最小生成樹(shù)中包括了哪些城市間的道路,并顯示得到的最小生成樹(shù)的代價(jià)。
2)表示城市間距離網(wǎng)的鄰接矩陣(要求至少6個(gè)城市,10條邊)15. 藥店的藥品銷售統(tǒng)計(jì)系統(tǒng)
設(shè)計(jì)一系統(tǒng),實(shí)現(xiàn)醫(yī)藥公司定期對(duì)銷售各藥品的記錄進(jìn)行統(tǒng)計(jì),可按藥品的編號(hào)、單價(jià)、銷售量或銷售額做出排名。
基本要求:在本設(shè)計(jì)中,首先從數(shù)據(jù)文件中讀出各藥品的信息記錄,存儲(chǔ)在順序表中。各藥品的信息包括:藥品編號(hào)、藥名、藥品單價(jià)、銷出數(shù)量、銷售額。對(duì)各藥品的藥名、單價(jià)、銷售量或銷售額進(jìn)行排序時(shí),可采用多種排序方法,如直接插入排序、冒泡排序、快速排序,直接選擇排序、堆排等方法。
四、上交作業(yè)及成績(jī)?cè)u(píng)定
1、上交要求
上交設(shè)計(jì)報(bào)告和源程序。其中設(shè)計(jì)報(bào)告要以手寫(xiě)報(bào)告的形式上交;電子版內(nèi)容包括程序源碼和設(shè)計(jì)報(bào)告的電子文檔。整個(gè)班級(jí)的設(shè)計(jì)均放在一個(gè)文件夾中。
2、課程設(shè)計(jì)報(bào)告注意事項(xiàng):
1)運(yùn)行結(jié)果請(qǐng)截圖(Alt + PrtSc);
2)系統(tǒng)功能模塊介紹請(qǐng)請(qǐng)采用流程圖形式; 3)課程設(shè)計(jì)總結(jié)可以從以下幾個(gè)方面書(shū)寫(xiě) : 課程設(shè)計(jì)的收獲、遇到問(wèn)題及其解決過(guò)程、程序調(diào)試技巧、在課程設(shè)計(jì)過(guò)程中對(duì)《數(shù)據(jù)結(jié)構(gòu)》課程的認(rèn)識(shí)等內(nèi)容。
3、評(píng)分標(biāo)準(zhǔn)
根據(jù)完成任務(wù)的情況、課程設(shè)計(jì)報(bào)告書(shū)的質(zhì)量和課程設(shè)計(jì)過(guò)程中的工作態(tài)度等按照30%、50%、20%加權(quán)綜合打分。成績(jī)?cè)u(píng)定實(shí)行百分制。上機(jī)程序檢查未通過(guò)者、無(wú)設(shè)計(jì)報(bào)告者以及嚴(yán)重抄襲他人設(shè)計(jì)者,成績(jī)?yōu)椴患案瘛?/p>
/ 3
第三篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)
一、《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》的目標(biāo)
課程設(shè)計(jì)是《數(shù)據(jù)結(jié)構(gòu)》課程的一個(gè)重要的實(shí)踐環(huán)節(jié),它可加深學(xué)生對(duì)該課程所學(xué)內(nèi)容的進(jìn)一步的理解與鞏固,達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,提高學(xué)生組織數(shù)據(jù)及編寫(xiě)大型程序的能力,培養(yǎng)基本的對(duì)基本數(shù)據(jù)結(jié)構(gòu)的理解和運(yùn)用,良好的程序設(shè)計(jì)方法、提高編碼及調(diào)試程序技能的能力,為整個(gè)專業(yè)的學(xué)習(xí)以及軟件設(shè)計(jì)水平的提高打下良好的基礎(chǔ)。
二、設(shè)計(jì)內(nèi)容
每位學(xué)生可以從《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)備選題目》中選擇一個(gè)題目自行完成。要求每班中題目不能重復(fù)。
三、設(shè)計(jì)要求
1.學(xué)生必須仔細(xì)閱讀《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)》,認(rèn)真主動(dòng)完成課設(shè)的要求。有問(wèn)題及時(shí)主動(dòng)通過(guò)各種方式與指導(dǎo)教師聯(lián)系溝通。
2.學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時(shí)間,安排好課設(shè)的時(shí)間計(jì)劃,并在課設(shè)過(guò)程中不斷檢測(cè)自己的計(jì)劃完成情況,及時(shí)向教師匯報(bào)。
3.課程設(shè)計(jì)按照教學(xué)要求需要兩周時(shí)間完成,學(xué)院安排設(shè)計(jì)時(shí)
間學(xué)生不得缺席。
4、每位學(xué)生必須認(rèn)真、獨(dú)立完成設(shè)計(jì)任務(wù),發(fā)現(xiàn)抄襲者或雷同者,一律按零分處理。
5、程序設(shè)計(jì)語(yǔ)言可選擇C或C++。
6、程序要正確且具有一定的健壯性,不會(huì)因?yàn)橛脩舻妮斎脲e(cuò)誤引起程序運(yùn)行錯(cuò)誤而中斷執(zhí)行,對(duì)輸入值的類型、大小范圍、字符串的長(zhǎng)度等,進(jìn)行正確性檢查,對(duì)不合法的輸入值給出出錯(cuò)信息,指出錯(cuò)誤類型,等待重新輸入。
四、上交相關(guān)內(nèi)容要求
上交的成果的內(nèi)容必須由以下三個(gè)部分組成,缺一不可。
1. 上交源程序:學(xué)生按照課程設(shè)計(jì)的具體要求所開(kāi)發(fā)的所有源程序(應(yīng)該放到一個(gè)文件夾中);
2. 上交程序的說(shuō)明文件:(保存在.txt中)在說(shuō)明文檔中應(yīng)該寫(xiě)明上交程序所在的目錄,上交程序的主程序文件名,如果需要安裝,要有程序的安裝使用說(shuō)明;
3. 課程設(shè)計(jì)報(bào)告:(保存在word 文檔中,文件名要求按照“學(xué)號(hào)_姓名_課程設(shè)計(jì)報(bào)告題目”起名,如文件名為“001_張三_二叉樹(shù)動(dòng)態(tài)演示”.doc)。報(bào)告要求文字工整通順、圖表規(guī)范、思路清楚、內(nèi)容正確。設(shè)計(jì)報(bào)告必須按照規(guī)定格式規(guī)范,A4紙雙面打印、裝訂。
將以上三個(gè)部分放在一個(gè)文件夾里,文件夾名要求按照"學(xué)號(hào)_姓名_課程設(shè)計(jì)報(bào)告題目”.zip命名。每個(gè)班將所有學(xué)生的文件夾收集起來(lái)刻成光盤(pán)上交。
五、時(shí)間安排
設(shè)計(jì)時(shí)間為兩周(7.07—7.18),7月16日—7月18日答辯。考核方式
成績(jī)按五分制,包括課程設(shè)計(jì)過(guò)程、課程設(shè)計(jì)結(jié)果、課程設(shè)計(jì)報(bào)告三部分。其中:
課程設(shè)計(jì)過(guò)程:20%
包括設(shè)計(jì)態(tài)度(10分)、出勤(10分)
課程設(shè)計(jì)結(jié)果:40%
其中:程序正確性:30分,運(yùn)行效果:10分,答辯:10分。課程設(shè)計(jì)報(bào)告:40%
其中:正確性:20分,完整性:10分,規(guī)范性:10分。
六、設(shè)計(jì)報(bào)告格式
見(jiàn)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告模板》。
第四篇:《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)教學(xué)任務(wù)書(shū).
愚昧從來(lái)沒(méi)有給人帶來(lái)幸福;幸福的根源在于知識(shí)?!罄?《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)教學(xué)任務(wù)書(shū) 計(jì)算機(jī)2007-1 課程設(shè)計(jì)周數(shù):第20周 指導(dǎo)老師:劉文娟
一、課程設(shè)計(jì)的目的 數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中所出現(xiàn)的計(jì)算機(jī)操作對(duì)象以及它們之間的關(guān)系和操作的學(xué)科。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學(xué)、計(jì)算機(jī)軟件和計(jì)算機(jī)硬件之間的一門(mén)計(jì)算機(jī)專業(yè)的核心課程,它是計(jì)算機(jī)程序設(shè)計(jì)、數(shù)據(jù)庫(kù)、操作系統(tǒng)、編譯原理及人工智能等的重要基礎(chǔ),廣泛的應(yīng)用于信息學(xué)、系統(tǒng)工程等各種領(lǐng)域。
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了將實(shí)際問(wèn)題中所涉及的對(duì)象在計(jì)算機(jī)中表示出來(lái)并對(duì)它們進(jìn)行處理。通過(guò)課程設(shè)計(jì)可以提高學(xué)生的思維能力,促進(jìn)學(xué)生的綜合應(yīng)用能力和專業(yè)素質(zhì)的提高。通過(guò)此次課程設(shè)計(jì)主要達(dá)到以下目的: * 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力; * 初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能; * 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力; * 訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。
二、課程設(shè)計(jì)的基本要求
1、獨(dú)立思考,獨(dú)立完成:課程設(shè)計(jì)中各任務(wù)的設(shè)計(jì)和調(diào)試要求獨(dú)立完成,遇到問(wèn)題可以討論,但不可以拷貝。
2、做好上機(jī)準(zhǔn)備:每次上機(jī)前,要事先編制好準(zhǔn)備調(diào)試的程序,認(rèn)真想好調(diào)試步驟和有關(guān)環(huán)境的設(shè)置方法,準(zhǔn)備好有關(guān)的文件。
3、按照課程設(shè)計(jì)的具體要求建立的功能模塊,每個(gè)模塊要求按照如下幾個(gè)內(nèi)容認(rèn)真完成;
其中包括:
a)需求分析:
在該部分中敘述,每個(gè)模塊的功能要求
b)概要設(shè)計(jì)
在此說(shuō)明每個(gè)部分的算法設(shè)計(jì)說(shuō)明(可以是描述算法的流程圖),每個(gè)程序中使用的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說(shuō)明(如果指定存儲(chǔ)結(jié)構(gòu)請(qǐng)寫(xiě)出該存儲(chǔ)結(jié)構(gòu)的定義)。
c)詳細(xì)設(shè)計(jì)
各個(gè)算法實(shí)現(xiàn)的源程序,對(duì)每個(gè)題目要有相應(yīng)的源程序(可以是一組源程序,每個(gè)功能模塊采用不同的函數(shù)實(shí)現(xiàn))
源程序要按照寫(xiě)程序的規(guī)則來(lái)編寫(xiě)。要結(jié)構(gòu)清晰,重點(diǎn)函數(shù)的重點(diǎn)變量,重點(diǎn)功能部分要加上清晰的程序注釋。
d)調(diào)試分析
測(cè)試數(shù)據(jù),測(cè)試輸出的結(jié)果,時(shí)間復(fù)雜度分析,和每個(gè)模塊設(shè)計(jì)和調(diào)試時(shí)存在問(wèn)題的思考(問(wèn)題是哪些?問(wèn)題如何解決?),算法的改進(jìn)設(shè)想。
e)課程設(shè)計(jì)總結(jié):(保存在word文檔中)總結(jié)可以包括:課程設(shè)計(jì)過(guò)程的收獲、遇到問(wèn)題、遇到問(wèn)題解決問(wèn)題過(guò)程的思考、程序調(diào)試能力的思考、對(duì)數(shù)據(jù)結(jié)構(gòu)這門(mén)課程的思考、在課程設(shè)計(jì)過(guò)程中對(duì)《數(shù)據(jù)結(jié)構(gòu)》課程的認(rèn)識(shí)等內(nèi)容;
4、每組實(shí)現(xiàn)的結(jié)果必須進(jìn)行檢查和演示;程序源代碼和程序的說(shuō)明文件必須上交,作為考核內(nèi)容的一部分;(上交時(shí)每人交一份,文件夾的取名規(guī)則為:“學(xué)號(hào) 姓名”,如“200413498 高魁”。該文件夾下至少包括:“源代碼”、“課程設(shè)計(jì)報(bào)告”、“可執(zhí)行文件”。由學(xué)習(xí)委員收集刻盤(pán)按規(guī)定時(shí)間統(tǒng)一上交)。
5、報(bào)告提交 時(shí)間:第20周星期五檢查,第20周星期五下午5點(diǎn)之前由學(xué)習(xí)委員收集上交,遲交無(wú)成績(jī)。形式:課程設(shè)計(jì)報(bào)告(要求打?。┖碗娮游臋n(統(tǒng)一刻盤(pán))。
三、課程設(shè)計(jì)內(nèi)容:
1、排序算法演示系統(tǒng) 【問(wèn)題描述】 設(shè)計(jì)一個(gè)測(cè)試程序比較幾種內(nèi)部排序算法的關(guān)鍵字比較次數(shù)和移動(dòng)次數(shù)以取得直觀感受?!净疽蟆?1實(shí)現(xiàn)各種內(nèi)部排序。包括冒泡排序,直接選擇排序,希爾排序,快速排序,堆排序。(2 待排序的元素的關(guān)鍵字為整數(shù)。其中的數(shù)據(jù)要用隨機(jī)數(shù)產(chǎn)生(如10000個(gè),至少用5組不同的數(shù)據(jù)做比較,再使用各種算法對(duì)其進(jìn)行排序,記錄其排序時(shí)間,再匯總比較。(3 演示程序以人機(jī)對(duì)話的形式進(jìn)行。每次測(cè)試完畢顯示各種比較指標(biāo)值的列表,用餅圖或條形圖進(jìn)行表示,以便比較各種排序的優(yōu)劣。(4 界面友好,易與操作。采用菜單方式進(jìn)行選擇?!具x做內(nèi)容】(1 對(duì)不同表長(zhǎng)進(jìn)行比較;(2 驗(yàn)證各算法的穩(wěn)定性;(3 輸出界面的優(yōu)化。(4 使用漢字顯示。
2、校園導(dǎo)游咨詢系統(tǒng) 【問(wèn)題描述】 設(shè)計(jì)一個(gè)校園導(dǎo)游程序,為來(lái)訪的客人提供各種信息查詢服務(wù)?!净疽蟆?1 設(shè)計(jì)安徽理工大學(xué)的校園平面圖,所含景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號(hào)、簡(jiǎn)介等信息;以邊表示路徑,存放路徑長(zhǎng)度等相關(guān)信息。(2 為來(lái)訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。(3 為來(lái)訪客人提供圖中任意景點(diǎn)的問(wèn)路查詢,即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的一條最短的簡(jiǎn)單路徑。【選做內(nèi)容】(1 系統(tǒng)功能的完善;(2 提供求任意兩個(gè)景點(diǎn)之間的所有路徑的功能;(3 提供校園圖中多個(gè)景點(diǎn)的最佳訪問(wèn)路線查詢,即求途經(jīng)這多個(gè)景點(diǎn)的最佳(短)路徑。(4 使用漢字顯示。
3、通訊錄 【問(wèn)題描述】 設(shè)計(jì)散列表實(shí)現(xiàn)通訊錄查找系統(tǒng)。【基本要求】(1 設(shè)每個(gè)記錄有下列數(shù)據(jù)項(xiàng):電話號(hào)碼、用戶名、地址;(2 從鍵盤(pán)輸入各記錄,分別以電話號(hào)碼為關(guān)鍵字建立散列表;(3 采用線性探測(cè)再散列法解決沖突;(4 查找并顯示給定電話號(hào)碼的記錄;(5 通訊錄信息文件保存;(6 要求人機(jī)界面友好,使用圖形化界面; 【選做內(nèi)容
】(1 系統(tǒng)功能的完善;(2 設(shè)計(jì)不同的散列函數(shù),比較沖突率;(3 在散列函數(shù)確定的前提下,嘗試各種不同類型處理沖突的方法,考察平均查找長(zhǎng)度的變化。(4 使用漢字顯示。【實(shí)現(xiàn)提示】 如果不用界面編程,可用以下函數(shù)實(shí)現(xiàn): 主函數(shù):根據(jù)選單的選項(xiàng)調(diào)用各函數(shù),并完成相應(yīng)的功能。Menu(的功能:顯示英文提示選單。Quit(的功能:退出選單。Create(的功能:創(chuàng)建新的通訊錄。Append(的功能:在通訊錄的末尾寫(xiě)入新的信息,并返回選單。Find(:查詢某人的信息,如果找到了,則顯示該人的信息,如果沒(méi)有則提示通訊錄中沒(méi)有此人的信息,并返回選單。Alter(的功能:修改某人的信息,如果未找到要修改的人,則提示通訊錄中沒(méi)有此人的信息,并返回選單。Delete(的功能:刪除某人的信息,如果未找到要?jiǎng)h除的人,則提示通訊錄中沒(méi)有此人的信息,并返回選單。List(的功能:顯示通訊錄中的所有記錄。Save(的功能:保存通訊錄中的所有記錄到指定文件中。Load(的功能:從指定文件中讀取通訊錄中的記錄。
4、哈夫曼編碼/譯碼器 【問(wèn)題描述】 設(shè)計(jì)一個(gè)哈夫曼編碼/譯碼系統(tǒng),對(duì)一個(gè)文本文件中的字符進(jìn)行哈夫曼編碼,生成編碼文件(壓縮文件,后綴名.cod);反過(guò)來(lái),可將一個(gè)壓縮文件譯碼還原為一個(gè)文本文件(.txt?!净疽蟆?1 輸入一個(gè)待壓縮的文本文件名,統(tǒng)計(jì)文本文件中各字符的個(gè)數(shù)作為權(quán)值,生成哈夫曼樹(shù);(2 將文本文件利用哈夫曼樹(shù)進(jìn)行編碼,生成壓縮文件(后綴名cod),(3 輸入一個(gè)待解壓的壓縮文件名稱,并利用相應(yīng)的哈夫曼樹(shù)將編碼序列譯碼;(4 顯示指定的壓縮文件和文本文件;(5 界面友好,易與操作。采用菜單方式進(jìn)行選擇?!具x做內(nèi)容】(1 把哈夫曼編碼用二進(jìn)制位緊縮到一個(gè)變量中,利用位運(yùn)算進(jìn)行真正的數(shù)據(jù)壓縮,并求壓縮比。(2 顯示哈夫曼樹(shù);(3 使用漢字顯示。愚昧從來(lái)沒(méi)有給人帶來(lái)幸福;幸福的根源在于知識(shí)。——左拉
5、二叉樹(shù)遍歷算法集成 功能要求:(1)界面友好,易于操作??刹捎貌藛位蚱渌藱C(jī)對(duì)話方式進(jìn)行選擇。(2)實(shí)現(xiàn)各種二叉樹(shù)的遍歷。包括先序遍歷、中序遍歷、后序遍歷的遞歸或非遞歸算法。(3)要求能查找任一結(jié)點(diǎn)在某種遍歷序列中的前驅(qū)和后繼。(4)演示程序以人機(jī)對(duì)話的形式進(jìn)行。每次測(cè)試完畢正確顯示各種遍歷序列。在上交資料中請(qǐng)寫(xiě)明:存儲(chǔ)結(jié)構(gòu)、基本算法(可以使用程序流程圖)、源程序、測(cè)試數(shù)據(jù)和結(jié)果、算法的時(shí)間復(fù)雜度、另外可以提出算法的改進(jìn)方法;
6、航班信息的查詢與檢索 功能要求:(1)界面友好,易于操作??刹捎貌藛位蚱渌藱C(jī)對(duì)話方式進(jìn)行選擇。(2)實(shí)現(xiàn)對(duì)飛機(jī)航班信息進(jìn)行排序與查找??砂春桨嗟暮桨嗵?hào)、起點(diǎn)站、到達(dá)站、起飛時(shí)間以及到達(dá)時(shí)間等信息進(jìn)行查詢。每個(gè)航班記錄包括八項(xiàng):航班號(hào)、起點(diǎn)站、到達(dá)站、班期、起飛時(shí)間、到達(dá)時(shí)間、飛機(jī)型號(hào)以及票價(jià)。除了票價(jià)為數(shù)值型外,其它的均定義為字符串。航班號(hào) 起點(diǎn)站 終點(diǎn)站 班期 起飛時(shí)間 到達(dá)時(shí)間 飛機(jī)型號(hào) 票價(jià) CA1544 合肥 北京 1.3.5 1055 1240 733 960 MU5341 上海 廣州 每日 1420 1615 M90 1280 CZ3869 重慶 深圳 2.4.6 0855 1035 733 1010
7、學(xué)生成績(jī)管理系統(tǒng)(圖書(shū)管理系統(tǒng)、個(gè)人賬簿管理系統(tǒng))功能要求:(1)界面友好,易于操作??刹捎貌藛位蚱渌藱C(jī)對(duì)話方式進(jìn)行選擇。(2)實(shí)現(xiàn)對(duì)學(xué)生成績(jī)信息進(jìn)行排序與查找。可按學(xué)生學(xué)號(hào)、姓名等信息進(jìn)行查詢。每個(gè)學(xué)生信息包含:學(xué)號(hào),姓名,班級(jí),語(yǔ)文,數(shù)學(xué),英語(yǔ),物理,化學(xué)等項(xiàng)。學(xué)生信息的存儲(chǔ)結(jié)構(gòu)可以選擇順序結(jié)構(gòu),也可以選擇鏈?zhǔn)浇Y(jié)構(gòu)。
8、表達(dá)式求值 功能要求:
當(dāng)用戶輸入一個(gè)合法的表達(dá)式后,能夠返回正確的結(jié)果。能夠計(jì)算的運(yùn)算符包括:加、減、乘、除、括號(hào);能夠計(jì)算的數(shù)要求在實(shí)數(shù)范圍內(nèi)。能執(zhí)行多重括號(hào)嵌套運(yùn)算。對(duì)于異常表達(dá)式給出錯(cuò)誤提示。(要求使用靜態(tài)棧數(shù)據(jù)結(jié)構(gòu)。)
9、飛機(jī)訂票系統(tǒng) 功能要求:(1)錄入:可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)(2)查詢:可以查詢某個(gè)航線的情況(如,輸入航班號(hào),查詢起降時(shí)間,起飛抵達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉(cāng));可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況;(3)訂票:(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果該航班已經(jīng)無(wú)票,可以提供相關(guān)可選擇航班;(4)退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號(hào),訂票數(shù)量及航班情況,訂單要有編號(hào)。(5)修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件
10、多項(xiàng)式運(yùn)算 功能要求:(1)輸入并建立多項(xiàng)式;(2)輸出多項(xiàng)式,輸出形式為整數(shù)序列n,c1,e1,c2,e2,......,cn,en,其中n是多項(xiàng)式的 項(xiàng)數(shù),ci和ei分別是第i項(xiàng)的系數(shù)和指數(shù),序列按指數(shù)降序排列;(3)多項(xiàng)式a和b相加,建立多項(xiàng)式a+b;輸出相加的多項(xiàng)式(4)多項(xiàng)式a和b相減,建立多項(xiàng)式a-b。輸出相加的多項(xiàng)式(5)用帶表頭結(jié)點(diǎn)的單鏈表存儲(chǔ)多項(xiàng)式。
11、猴子選大王 問(wèn)題描述: n只猴子要
選大王,選舉方法是:所有猴子按1,2,...,n編號(hào)圍坐一圈,從第1號(hào)開(kāi)始按1,2,...,m報(bào)數(shù),凡
報(bào)到m號(hào)的退出圈外,如此循環(huán)報(bào)數(shù),直到圈內(nèi)剩下一只猴子時(shí),這只猴子就是大王?;疽螅?/p>
分別選擇順序表和單向循環(huán)鏈表作為存儲(chǔ)結(jié)構(gòu)模擬整個(gè)過(guò)程,并依次輸出出列的各猴子的編號(hào)和最終所選出猴王的編號(hào)。
12、停車場(chǎng)管理 問(wèn)題描述: 設(shè)停車場(chǎng)是一個(gè)可以停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)大門(mén)可以供車輛進(jìn)出。車輛按到達(dá)停車場(chǎng)時(shí)間的早晚依次從停車場(chǎng)最里向大門(mén)口處停放(最先到達(dá)的第一輛車放在停車場(chǎng)的最里面)。如果停車場(chǎng)已放滿n輛車,則后來(lái)的車只能在停車場(chǎng)大門(mén)外的便道上等待,一旦停車場(chǎng)內(nèi)有車開(kāi)走,則排在便道上的第一輛車就進(jìn)入停車場(chǎng)。停車場(chǎng)內(nèi)如有某輛車要開(kāi)走,在它之后進(jìn)入停車場(chǎng)的車都必須先退出停車場(chǎng)為它讓路,待其開(kāi)出停車場(chǎng)后,這些車輛再依原來(lái)的次序進(jìn)場(chǎng)。每輛車在離開(kāi)停車場(chǎng)時(shí),都應(yīng)根據(jù)它在停車場(chǎng)內(nèi)停留的時(shí)間長(zhǎng)短交費(fèi)。如果停留在便道上的車未進(jìn)停車場(chǎng)就要離去,允許其離去,不收停車費(fèi),并且仍然保持在便道上等待的車輛次序。編制一程序模擬該停車場(chǎng)的管理。提示:
停車場(chǎng)采用棧式結(jié)構(gòu),停車場(chǎng)外的便道采用隊(duì)列結(jié)構(gòu)(即便道就是等候隊(duì)列)。
13、文本編輯器
功能要求:運(yùn)用鏈表與數(shù)組來(lái)處理字符串的各項(xiàng)操作。如插入,刪除,查找,替換,顯示等等。
提示:對(duì)于自定義的文本文件“*.txt”,其每一行表示一個(gè)結(jié)點(diǎn)用單鏈表來(lái)實(shí)現(xiàn),可以進(jìn)行一行的修改,刪除,添加等;每一行中的字符可用一維數(shù)組來(lái)存儲(chǔ),這樣可以利用數(shù)組的特性方便地進(jìn)行插入,刪除,替換,甚至可以進(jìn)行排序操作!
14、迷宮問(wèn)題 問(wèn)題描述:
在迷宮中求從入口到出口的一條簡(jiǎn)單路徑。提示:
迷宮用一個(gè)二維字符數(shù)組maze來(lái)表示,用x表示縱坐標(biāo),y表示橫坐標(biāo)。(1)定義探索迷宮的四個(gè)方向:RIGHT為向右,DOWN向下,LEFT向左,UP向上,用Switch語(yǔ)句根據(jù)當(dāng)前的位置坐標(biāo)來(lái)判斷下一步要探索的方向求出下一步要走的位置坐標(biāo)。(2)探索迷宮的四個(gè)方向的坐標(biāo)表示:RIGHT(x,y+1), DOWN(x+1,y, LEFT(x,y-1, UP(x-1,y。(3)對(duì)每個(gè)方向探索時(shí),用0表示可通過(guò),用1表示不能通過(guò)是障礙,對(duì)探索過(guò)的位置加以標(biāo)記。把每一個(gè)可以通過(guò)的位置坐標(biāo)放入棧中,最后打印輸出路徑。(4)根據(jù)二維字符數(shù)組和加標(biāo)記的位置坐標(biāo),輸出迷宮的圖形。
15、電梯模擬運(yùn)行 問(wèn)題描述:
模擬我校九層教學(xué)樓的電梯系統(tǒng)。該樓有一個(gè)自動(dòng)電梯,能在每層停留。九個(gè)樓層由下至上依次稱為第一層、第二層、......第九層,其中第一層是大樓的進(jìn)出層,即是電梯的“本壘層”,電梯“ 空閑”時(shí),將來(lái)到該層候命。
乘客可隨時(shí)地進(jìn)出于任何層。對(duì)于每個(gè)人來(lái)說(shuō),他有一個(gè)能容忍的最長(zhǎng)等待時(shí)間,一旦等候電梯時(shí)間過(guò)長(zhǎng),他將放棄。
模擬時(shí)鐘從0開(kāi)始,時(shí)間單位為0.1秒。人和電梯的各種動(dòng)作均要消耗一定的時(shí)間單位(簡(jiǎn)記為t),比如:有人進(jìn)出時(shí),電梯每隔40t檢測(cè)一次,若無(wú)人進(jìn)出,則關(guān)門(mén);關(guān)門(mén)和開(kāi)門(mén)各需要20t;每個(gè)人進(jìn)出電梯均需要25t;如果電梯在某層精致時(shí)間超過(guò)300t,則駛回1層候命?;疽螅?/p>
按時(shí)序顯示系統(tǒng)狀態(tài)的變化過(guò)程,即發(fā)生的全部人和電梯的動(dòng)作序列。
(1)用系統(tǒng)計(jì)時(shí),每當(dāng)有新的動(dòng)作要輸入時(shí)要暫停計(jì)時(shí),等輸入完成后即可繼續(xù)計(jì)時(shí)。
(2)輸入各個(gè)動(dòng)作,最后,輸入完畢后,可以保存所有動(dòng)作序列,并有序輸出。
四、上交作業(yè)及成績(jī)?cè)u(píng)定
1、上交要求
上交設(shè)計(jì)報(bào)告和相關(guān)光盤(pán)。其中設(shè)計(jì)報(bào)告要以打印文稿的形式上交。光盤(pán)內(nèi)容包括程序源碼設(shè)計(jì)報(bào)告的電子文檔。整個(gè)班級(jí)的設(shè)計(jì)均刻在一張光盤(pán)上。(上交時(shí)每人交一份,文件夾的取名規(guī)則為:“學(xué)號(hào) 姓名”,如“200711111 王文”。該文件夾下至少包括:“源代碼”、“課程設(shè)計(jì)報(bào)告”、“可執(zhí)行文件”。由學(xué)習(xí)委員收集刻盤(pán)按規(guī)定時(shí)間統(tǒng)一上交)。
2、評(píng)分標(biāo)準(zhǔn)
根據(jù)完成任務(wù)的情況(必須進(jìn)行系統(tǒng)演示、課程設(shè)計(jì)報(bào)告書(shū)的質(zhì)量和課程設(shè)計(jì)過(guò)程中的工作態(tài)度等按照30%、50%、20%加權(quán)綜合打分。成績(jī)?cè)u(píng)定實(shí)行優(yōu)秀、良好、中等、及格和不及格五個(gè)等級(jí)。上機(jī)程序檢查未通過(guò)者、無(wú)設(shè)計(jì)報(bào)告者以及嚴(yán)重抄襲他人設(shè)計(jì)者,成績(jī)?yōu)椴患案?。?shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)----計(jì)2007-1 1 /7 愚昧從來(lái)沒(méi)有給人帶來(lái)幸福;幸福的根源在于知識(shí)?!罄?/p>
第五篇:《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)任務(wù)書(shū)2
二.本組課題及任務(wù) 1.課題名:約瑟夫環(huán)問(wèn)題 2.任務(wù): ⑴ 編寫(xiě)算法 ⑵ 記錄開(kāi)發(fā)日志 ⑶ 文檔編寫(xiě) ⑷ 程序代碼編寫(xiě) ⑸ 調(diào)試 運(yùn)行 3.程序功能簡(jiǎn)介 1)界面友好
2)能完操作方法(流程)3)執(zhí)行報(bào)數(shù),儲(chǔ)存出列人的序號(hào),刪除出列人的信息以及把出列人的密碼賦給m; 4)輸出正確的排列順序 4.主體內(nèi)容
設(shè)計(jì)分析:基本思想
通過(guò)我們對(duì)約瑟夫問(wèn)題的分析,我們認(rèn)為利用單向循環(huán)鏈表就能解決這個(gè)問(wèn)題。因?yàn)榧s瑟夫環(huán)的大小有輸入決定,所以要進(jìn)行動(dòng)態(tài)內(nèi)存分配。
為了實(shí)現(xiàn)上述操作,應(yīng)以單向循環(huán)鏈表為存儲(chǔ)結(jié)構(gòu)?;静僮鳎?new_code()操作結(jié)果:構(gòu)造空鏈表,若成功就初始化每個(gè)人的相關(guān)信息 delete_code()
初始條件:線性鏈表存在
操作結(jié)果:釋放指向出列的人的結(jié)點(diǎn),并重新報(bào)數(shù)
本程序包含三個(gè)模塊: ⑴ 主程序模塊;
⑵ 構(gòu)造鏈表并輸入每個(gè)人信息模塊; ⑶ 釋放結(jié)點(diǎn)模塊; 5.程序說(shuō)明
本程序完成的是:編號(hào)為1,2,....,N的N個(gè)人按順時(shí)針?lè)较驀蝗?每人持有一個(gè)密碼(正整數(shù)).一開(kāi)始任選一個(gè)正整數(shù)作為報(bào)數(shù)上限值M,從第一個(gè)人開(kāi)始按順時(shí)針?lè)较蜃?開(kāi)始順序報(bào)數(shù),報(bào)到M時(shí)停止報(bào)數(shù).報(bào)M的人出列,將他的密碼作為新的M值,從他在順時(shí)針?lè)较蛏系南乱粋€(gè)人開(kāi)始重新從1報(bào)數(shù),如此下去,直至所有人全部出列為止.程序輸出出列順序.6.操作方法(流程)(1)打開(kāi)VC++ 6.0中文版。(2)輸入自己編寫(xiě)好的源程序代碼。
(3)運(yùn)行程序,并找出程序中的錯(cuò)誤,加以改正,直到能成功運(yùn)行(4)輸入測(cè)試數(shù)據(jù),分析實(shí)驗(yàn)結(jié)果 7.設(shè)計(jì)體會(huì)
通過(guò)約瑟夫環(huán)算法的課題設(shè)計(jì)讓我理解了循環(huán)隊(duì)列,不單單只是書(shū)本上文字的循環(huán)隊(duì)列的概念,更多是自己能夠通過(guò)實(shí)際的操作對(duì)循環(huán)隊(duì)列有了更深的了解。上機(jī)的編程的過(guò)程是對(duì)數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)的進(jìn)一步的鞏固。學(xué)習(xí)過(guò)程體驗(yàn)到了學(xué)習(xí)的樂(lè)趣,實(shí)驗(yàn)課題使我認(rèn)識(shí)到平時(shí)學(xué)習(xí)的漏洞和知識(shí)的缺乏,為以后的學(xué)習(xí)敲了一下警鐘,數(shù)據(jù)結(jié)構(gòu)是門(mén)基礎(chǔ),要學(xué)習(xí)扎實(shí)才行 數(shù)據(jù)結(jié)構(gòu)是在整個(gè)計(jì)算機(jī)科學(xué)與技術(shù)領(lǐng)域上廣泛被使用的術(shù)語(yǔ)。它用來(lái)反映一個(gè)數(shù)據(jù)的內(nèi)部構(gòu)成,即一個(gè)數(shù)據(jù)由那些成分?jǐn)?shù)據(jù)構(gòu)成,以什么方式構(gòu)成,呈什么結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)有邏輯上的數(shù)據(jù)結(jié)構(gòu)和物理上的數(shù)據(jù)結(jié)構(gòu)之分。邏輯上的數(shù)據(jù)結(jié)構(gòu)反映成分?jǐn)?shù)據(jù)之間的邏輯關(guān)系,而物理上的數(shù)據(jù)結(jié)構(gòu)反映成分?jǐn)?shù)據(jù)在計(jì)算機(jī)內(nèi)部的存儲(chǔ)安排。數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)存在的形式。
數(shù)據(jù)結(jié)構(gòu)是信息的一種組織方式,其目的是為了提高算法的效率,它通常與一組算法的集合相對(duì)應(yīng),通過(guò)這組算法集合可以對(duì)數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)進(jìn)行某種操作。數(shù)據(jù)結(jié)構(gòu)課程的主要目的是介紹一些常用的數(shù)據(jù)結(jié)構(gòu),闡明數(shù)據(jù)結(jié)構(gòu)內(nèi)在的邏輯關(guān)系,討論它們?cè)谟?jì)算機(jī)中的存儲(chǔ)表示,并結(jié)合各種數(shù)據(jù)結(jié)構(gòu),討論對(duì)它們實(shí)行的各種運(yùn)算的實(shí)現(xiàn)算法。很多算法實(shí)際上是對(duì)某種數(shù)據(jù)結(jié)構(gòu)施行的一種變換,研究算法也就是研究在實(shí)施變換過(guò)程中數(shù)據(jù)結(jié)構(gòu)的動(dòng)態(tài)性質(zhì)。
學(xué)習(xí)的過(guò)程需要合作,而且在合作中提到自己的編程水平,借鑒他人好的地方,改掉原先自己不足,書(shū)本知識(shí)的與實(shí)際的聯(lián)系,使自己的編程不在局限于原來(lái)的紙上談兵,更多的是積累了經(jīng)驗(yàn),培養(yǎng)了能力 8.附錄
(1)程序中主要變量、函數(shù)(指自定義函數(shù)及程序中用到的部分不常用系統(tǒng)函數(shù))列表(含簡(jiǎn)要說(shuō)明);實(shí)現(xiàn)主要功能的(本人任務(wù)部分)核心源程序 #include
{ bool IsOn;
int num;
int psw;
List*pnext;}*PList;enum
Status{ERROR_OK=0,ERROR_MEMORY_FALIED,ERROR_INPUT_NUM,ERROR_NOPERSON,ERROR_NUM};void GetErrorMsg(const Status &errorCode)
{ char msg[256];switch(errorCode){ case ERROR_OK: strcpy(msg,“執(zhí)行成功!”);break;case ERROR_MEMORY_FALIED: strcpy(msg,“內(nèi)存錯(cuò)誤:沒(méi)有足夠大的內(nèi)存!”);break;case ERROR_INPUT_NUM: strcpy(msg,“輸入數(shù)據(jù)錯(cuò)誤!”);break;case ERROR_NUM: strcpy(msg,“數(shù)據(jù)錯(cuò)誤!”);break;case ERROR_NOPERSON: strcpy(msg,“錯(cuò)誤:此編號(hào)的人不存在!”);break;default: strcpy(msg,“未知錯(cuò)誤!”);} cout<
return ERROR_NUM;
PList pTemp=new List;
pls=pTemp;pls->num=1;pls->IsOn=true;for(int i=1;i
{ if(num<=0)
return ERROR_INPUT_NUM;PList pTemp=pls;for(int i=1;i!=num;i++){
pTemp=pTemp->pnext;} if(num==i){ cin>>pTemp->psw;if(pTemp->psw<=0)return ERROR_INPUT_NUM;else return ERROR_OK;} else return ERROR_INPUT_NUM;} Status ShowResult(const PList&pls,const int &m){ if(m<=0)
return ERROR_INPUT_NUM;if(pls==NULL)
return ERROR_NUM;int num=0;
PList pTemp=pls;do{ num++;pTemp=pTemp->pnext;}while(pTemp!=pls);int i=0,j,ps=m;while(i!=num){
if(i==0)
ps--;for(j=0;j
pnext;
}while(!pTemp->IsOn);}
pTemp->IsOn=false;
cout<<“第”<num< ps=pTemp->psw; i++; } return ERROR_OK;//返回成功 } void main(){ cout<<“*************************************”< 數(shù) 據(jù) 輸 入int iTemp; Status errorCode;cout<<“**********Step1:*********”< GetErrorMsg(errorCode); }while(!(ERROR_OK==errorCode)); cout<<“************Step2:***********”< for(int i=1;i<=iTemp;i++){ cout<<“請(qǐng)輸入第”< while(errorCode!=ERROR_OK) { GetErrorMsg(errorCode); cout<<“請(qǐng)輸入第”< 密 碼 輸 入 環(huán) 中 人 數(shù) 輸 入} cout<<“**********Step3:*********”< do{ cout<<“請(qǐng)輸入初始密碼:”;cin>>iTemp;cout<<“**********程序執(zhí)行結(jié)果***********”< errorCode=ShowResult(pls,iTemp); GetErrorMsg(errorCode); }while(ERROR_OK!=errorCode);} 9.測(cè)試數(shù)據(jù): 當(dāng)n=7,7個(gè)人的密碼依次為:3,1,7,2,4,8,4,首先m值為6,則這正確的出列順序?yàn)?,1,4,7,2,3,5 初 始 密 碼 輸 入