教學(xué)計(jì)劃編制問(wèn)題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告湖南工程學(xué)院_第1頁(yè)
教學(xué)計(jì)劃編制問(wèn)題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告湖南工程學(xué)院_第2頁(yè)
教學(xué)計(jì)劃編制問(wèn)題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告湖南工程學(xué)院_第3頁(yè)
教學(xué)計(jì)劃編制問(wèn)題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告湖南工程學(xué)院_第4頁(yè)
教學(xué)計(jì)劃編制問(wèn)題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告湖南工程學(xué)院_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余30頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)報(bào)告課程名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)課題名稱教學(xué)計(jì)劃編制問(wèn)題專業(yè)網(wǎng)絡(luò)工程班級(jí)0901學(xué)號(hào)2009031201XX姓名指導(dǎo)教師劉長(zhǎng)松陳華光李杰君2011年7月15日湖南工程學(xué)院課程設(shè)計(jì)任務(wù)書課程名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)課題教學(xué)計(jì)劃編制問(wèn)題專業(yè)班級(jí)網(wǎng)絡(luò)工程0901學(xué)生姓名XX學(xué)號(hào)學(xué)09031201XX指導(dǎo)老師劉長(zhǎng)松陳華光李杰君審批任務(wù)書下達(dá)日期:2011年6月26日任務(wù)完成日期:2011年7月15日設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求1.設(shè)計(jì)內(nèi)容:1)問(wèn)題描述大學(xué)的每個(gè)專業(yè)都要制訂教學(xué)計(jì)劃。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)期,每學(xué)期的時(shí)間長(zhǎng)度和學(xué)分上限均相等。每個(gè)專業(yè)開(kāi)設(shè)的課程都是確定的,而且課程在開(kāi)設(shè)時(shí)間

2、的安排必須滿足先修關(guān)系。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒(méi)有。每門課恰好占一個(gè)學(xué)期。試在這樣的前提下設(shè)計(jì)一個(gè)教學(xué)計(jì)劃編制程序。2)基本要求a.輸入?yún)?shù)包括:學(xué)期總數(shù),一學(xué)期的學(xué)分上限,每門課的課程號(hào)(固定占的字母數(shù)字串)、學(xué)分和直接先修課的課程號(hào)。b.允許用戶指定下列兩種編排策略之一:一是使學(xué)生在各學(xué)期中的學(xué)習(xí)負(fù)擔(dān)盡量均勻;二是使課程盡可能地集中在前幾個(gè)學(xué)期中。c.若根據(jù)給定的條件問(wèn)題無(wú)解,則報(bào)告適當(dāng)?shù)男畔?;否則,將教學(xué)計(jì)劃輸出到用戶指定的文件中。計(jì)劃的表格格式自行設(shè)計(jì)。3)測(cè)試數(shù)據(jù)學(xué)期總數(shù):6;學(xué)分上限:10;該專業(yè)共開(kāi)設(shè)課數(shù):12課程號(hào):從C01到012;學(xué)分順序:2

3、,3,4,3,2,3,4,4,7,5,2,3。先修關(guān)系如下圖:4)實(shí)現(xiàn)提示可設(shè)學(xué)期總數(shù)不超過(guò)12,課程總數(shù)不超過(guò)100。如果輸入的先修課程號(hào)不在該專業(yè)開(kāi)設(shè)的課程序列中,則作為錯(cuò)誤處理。應(yīng)建立內(nèi)部課程號(hào)與課程號(hào)之間的對(duì)應(yīng)關(guān)系。2.設(shè)計(jì)要求:課程設(shè)計(jì)報(bào)告規(guī)范1)需求分析a.程序的功能。b.輸入輸出的要求。2)概要設(shè)計(jì)a.程序由哪些模塊組成以及模塊之間的層次結(jié)構(gòu)、各模塊的調(diào)用關(guān)系;每個(gè)模塊的功能。b.課題涉及的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫(kù)結(jié)構(gòu);即要存儲(chǔ)什么數(shù)據(jù),這些數(shù)據(jù)是什么樣的結(jié)構(gòu),它們之間有什么關(guān)系等。3)詳細(xì)設(shè)計(jì)a.采用C語(yǔ)言定義相關(guān)的數(shù)據(jù)類型。b.寫出各模塊的類C碼算法。c.畫出各函數(shù)的調(diào)用關(guān)系圖、主要

4、函數(shù)的流程圖。4)調(diào)試分析以及設(shè)計(jì)體會(huì)a.測(cè)試數(shù)據(jù):準(zhǔn)備典型的測(cè)試數(shù)據(jù)和測(cè)試方案,包括正確的輸入及輸出結(jié)果和含有錯(cuò)誤的輸入及輸出結(jié)果。b程序調(diào)試中遇到的問(wèn)題以及解決問(wèn)題的方法。c.課程設(shè)計(jì)過(guò)程經(jīng)驗(yàn)教訓(xùn)、心得體會(huì)。5)使用說(shuō)明用戶使用手冊(cè):說(shuō)明如何使用你編寫的程序,詳細(xì)列出每一步的操作步驟。6)書寫格式見(jiàn)附帶說(shuō)明。7)附錄a.參考書目b.源程序清單(帶注釋)考核方式指導(dǎo)老師負(fù)責(zé)驗(yàn)收程序的運(yùn)行結(jié)果,并結(jié)合學(xué)生的工作態(tài)度、實(shí)際動(dòng)手能力、創(chuàng)新精神和設(shè)計(jì)報(bào)告等進(jìn)行綜合考評(píng),并按優(yōu)秀、良好、中等、及格和不及格五個(gè)等級(jí)給出每位同學(xué)的課程設(shè)計(jì)成績(jī)。具體考核標(biāo)準(zhǔn)包含以下幾個(gè)部分:平時(shí)出勤(占10%)系統(tǒng)需求分析

5、、功能設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及程序總體結(jié)構(gòu)合理與否(占10%)程序能否完整、準(zhǔn)確地運(yùn)行,個(gè)人能否獨(dú)立、熟練地調(diào)試程序(占40%)設(shè)計(jì)報(bào)告(占30%)注意:不得抄襲他人的報(bào)告(或給他人抄襲),一旦發(fā)現(xiàn),成績(jī)?yōu)榱惴帧*?dú)立完成情況(占10%)。課程驗(yàn)收要求運(yùn)行所設(shè)計(jì)的系統(tǒng)?;卮鹩嘘P(guān)問(wèn)題。提交課程設(shè)計(jì)報(bào)告。提交電子文檔(源程序、設(shè)計(jì)報(bào)告文檔)。依內(nèi)容的創(chuàng)新程度,完善程序情況及對(duì)程序講解情況打分。、進(jìn)度安排第19周星期一星期二星期三星期四星期五上午8:0012:00下午13:3017:30晚上18:0020:00第20周星期一星期二星期三星期四星期五上午8:0012:00下午13:3017:30晚上18:0

6、020:00附:課程設(shè)計(jì)報(bào)告裝訂順序:封面、任務(wù)書、目錄、正文、評(píng)分、附件(A4大小的圖紙及程序清單)。正文的格式:一級(jí)標(biāo)題用3號(hào)黑體,二級(jí)標(biāo)題用四號(hào)宋體加粗,正文用小四號(hào)宋體;行距為22。正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖);三、主要功能的實(shí)現(xiàn)(至少要有一個(gè)主要模塊的流程圖);四、程序調(diào)試;五、總結(jié);六、附件(所有程序的原代碼,要求對(duì)程序?qū)懗霰匾淖⑨專?。正文總字?jǐn)?shù)要求在5000字以上(不含程序原代碼)。1、需求分析01.1 程序的功能:01.2 輸入輸出的要求:.02、概要設(shè)計(jì)02.1 程序模塊功能圖02.2 數(shù)據(jù)結(jié)構(gòu)13、詳細(xì)設(shè)計(jì)23.1 采用C語(yǔ)言

7、定義相關(guān)的數(shù)據(jù)類型23.2 各模塊的類C碼算法23.3 各函數(shù)的調(diào)用關(guān)系圖、主要函數(shù)的流程圖84、調(diào)試分析以及設(shè)計(jì)體會(huì)104.1 測(cè)試數(shù)據(jù):104.2 程序調(diào)試中遇到的問(wèn)題以及解決問(wèn)題的方法:114.3 課程設(shè)計(jì)過(guò)程經(jīng)驗(yàn)教訓(xùn)、心得體會(huì):115、使用說(shuō)明136.參考書目187、附錄197.1.源程序清單(帶注釋)191、需求分析1.1 程序的功能:編制教學(xué)計(jì)劃。大學(xué)的每個(gè)專業(yè)都要制訂教學(xué)計(jì)劃。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)期,每學(xué)期的時(shí)間長(zhǎng)度和學(xué)分上限均相等。每個(gè)專業(yè)開(kāi)設(shè)的課程都是確定的,而且課程在開(kāi)設(shè)時(shí)間的安排必須滿足先修關(guān)系。每門課程有哪些先修課程是確定的,可以有任意多門,也可

8、以沒(méi)有。每門課恰好占一個(gè)學(xué)期。1.2 輸入輸出的要求:a輸入?yún)?shù)包括:學(xué)期總數(shù),一學(xué)期的學(xué)分上限,每門課的課程號(hào)(固定占3位的字母數(shù)字用)、學(xué)分和直接先修課的課程號(hào)。b.允許用戶指定下列兩種編排策略之一:一是使學(xué)生在各學(xué)期中的學(xué)習(xí)負(fù)擔(dān)盡量均勻;二是使課程盡可能地集中在前幾個(gè)學(xué)期中。c.若根據(jù)給定的條件問(wèn)題無(wú)解,則報(bào)告適當(dāng)?shù)男畔?;否則,將教學(xué)計(jì)劃輸出到用戶指定的文件中。計(jì)劃的表格格式自行設(shè)計(jì)。2、概要設(shè)計(jì)2.1 程序模塊功能圖main()主函雙nitialNode()初始化課程節(jié)點(diǎn)menu()主菜單圖2.1-1功能模塊圖2.2 數(shù)據(jù)結(jié)構(gòu)inttermtime=0;學(xué)期總數(shù)intlimitgrad

9、e=0;學(xué)分上線charstr1004;/課程號(hào)intscore100=0;/課程學(xué)分inttotalcourse=0;/課程總數(shù)structnode課程節(jié)點(diǎn)intvariable;/標(biāo)志屬不屬于同一個(gè)學(xué)期所修intprevious;前修課程intnext;后學(xué)課程structnode*courselink100;后修課程的指針*coursenode100=NULL;/課程數(shù)目節(jié)點(diǎn)3、詳細(xì)設(shè)計(jì)3.1 采用C語(yǔ)言定義相關(guān)的數(shù)據(jù)類型FILE*fp/保存到文件inttermtime=0;學(xué)期總數(shù)intlimitgrade=0;學(xué)分上線charstr1004;/課程號(hào)intscore100=0;/課程

10、學(xué)分inttotalcourse=0;/課程總數(shù)structnode課程節(jié)點(diǎn)intvariable;/標(biāo)志屬不屬于同一個(gè)學(xué)期所修intprevious;前修課程intnext;后學(xué)課程structnode*courselink100;后修課程的指針*coursenode100=NULL;/課程數(shù)目節(jié)點(diǎn)3.2 各模塊的類C碼算法A.初始化課程節(jié)點(diǎn)voidinitialNode()初始化課程節(jié)點(diǎn)inti;intj;printf("n正在初始化。n");for(i=0;i<100;i+)后修課程的指針置零;同學(xué)期學(xué)習(xí)的課程置零;前修課程置零;后修課程置零;for(j=0;j

11、<100;j+)coursenodei->courselinkj=NULL;)printf("n初始化完畢。n");)B.建立課程順序voidcreateNode()建立課程順序inti;inttemp;intflag;for(i=0;i<totalcourse;i+)printf("n請(qǐng)輸入%d的深入課程數(shù)目:",i+1);scanf("%d",&(coursenodei->next);printf("n請(qǐng)輸入%d的深入課程課程代號(hào)分別是什么(用空格分開(kāi)):”,i+1);for(temp=0

12、;temp<coursenodei->next;temp+)scanf("%d",&flag);coursenodei->courselinktemp=coursenodeflag-1;coursenodeflag-1->previous+;)printf("n課程彳t號(hào)t前修課程數(shù)t深入課程數(shù)n");for(temp=0;temp<totalcourse;temp+)printf("%dtt%dtt%dn",temp+1,coursenodetemp->previous,coursenod

13、etemp->next);)C.排課程voidsortNode()排課程(inti,j,flag=0,session=1;FILE*fp;if(fp=fopen("d:course.txt","a")=NULL)如果文件已經(jīng)存在,可以追加學(xué)生信息(if(fp=fopen("d:course.txt","w")=NULL)/文件不存在時(shí),創(chuàng)建新文件,輸入學(xué)生信息(printf("文件打開(kāi)失敗!n");return;)printf("nn");printf("課程

14、彳t號(hào)t課程號(hào)t課程學(xué)分n");fprintf(fp,"課程彳t號(hào)t課程號(hào)t課程學(xué)分n");while(1)(flag=1;for(i=0;i<totalcourse;i+)if(課程數(shù)目節(jié)點(diǎn)為空)if(同學(xué)期學(xué)習(xí)課程為空)if(前修課程為0)printf("%dtt%st%dn",i+1,stri,scorei);fprintf(fp,"%dt%st%dn",i+1,stri,scorei);for(j=0;j<coursenodei->next;j+)(前修課程數(shù)目節(jié)點(diǎn)減一;coursenodei-&g

15、t;courselinkj->variable=1;coursenodei->courselinkj=NULL;coursenodei->next=0;釋放數(shù)目結(jié)點(diǎn);flag=0;if(flag!=0)break;else(if(session<=termtime)printf("第d學(xué)期課程結(jié)束nn",session);fprintf(fp,"第d學(xué)期課程結(jié)束nn",session);session+;elseprintf("學(xué)習(xí)時(shí)間不夠!n");exit(0);if(session<=termtime

16、);for(i=0;i<totalcourse;i+)if(課程節(jié)目數(shù)不為O)coursenodei->variable=0;)fclose(fp);關(guān)閉文件指針)D,輸入基本信息voidinputBasicInformation()輸入基本信息inti;printf("請(qǐng)輸入學(xué)期總數(shù):");scanf("%d",&termtime);if(termtime>=12)printf("n對(duì)不起,學(xué)期總數(shù)不能超過(guò)12n");exit(0);)printf("n請(qǐng)輸入學(xué)分上限:");scanf(

17、"%d",&limitgrade);printf("n請(qǐng)輸入課程總數(shù):");scanf("%d",&totalcourse);for(i=0;i<totalcourse;i+)printf("請(qǐng)輸入第%d門課程號(hào)(三個(gè)字符,回車結(jié)束):",i+1);scanf("%s",&stri);stri3='0'printf("請(qǐng)輸入第%d門課程學(xué)分(回車結(jié)束):”,i+1);scanf("%d",&scorei);if(

18、學(xué)分高于上限)printf("n對(duì)不起,課程學(xué)分不能超過(guò)學(xué)分上限n");exit(0);6printf("n您所輸入的數(shù)據(jù)如下,請(qǐng)核實(shí):n");printf("課程彳t號(hào)t課程號(hào)t課程學(xué)分n");for(i=0;i<totalcourse;i+)printf("%dtt%st%dn",i+1,stri,scorei);E.清空信息voidcls()inti=0;學(xué)期數(shù)置零;學(xué)分上限置零;for(i=0;i<100;i+)stri0='0'score100=0;總課程數(shù)置零;printf(

19、"n原來(lái)數(shù)據(jù)已經(jīng)清空n");F.菜單voidmenu()printf("*教學(xué)計(jì)劃編制*n“);printf("n1輸入課程安排基本信息printf("n2建立課程順序");printf("n3排列課程順序");printf("n4原來(lái)數(shù)據(jù)清空");printf("n5退出");)");G.主函數(shù)voidmain()(intn;initialNode();while(1)(menu();printf("n請(qǐng)輸入您要選擇的操作序號(hào),按回車鍵確認(rèn):"

20、);scanf("%d",&n);switch(n)(case 1: inputBasicInformation();break;case 2: createNode();break;case 3: sortNode();break;case 4: cls();break;case 5: exit(0);default:printf("輸入錯(cuò)誤,請(qǐng)輸入列表中存在的序號(hào)!n");)3.3各函數(shù)的調(diào)用關(guān)系圖、主要函數(shù)的流程圖開(kāi)始圖2.3-1流程圖圖4.1-1104、調(diào)試分析以及設(shè)計(jì)體會(huì)4.1測(cè)試數(shù)據(jù):學(xué)期總數(shù):6;學(xué)分上限:10;該專業(yè)共開(kāi)設(shè)課數(shù):1

21、2課程號(hào):從C01到C12;學(xué)分順序:2,3,4,3,2,3,4,4,7,5,2,3先修關(guān)系如下圖:測(cè)試數(shù)據(jù)先修關(guān)系圖正確輸入測(cè)試數(shù)據(jù)后,如果系統(tǒng)符合要求,正確排序,則如圖4.1-2所示。圖4,1-2正確的測(cè)試結(jié)果4.2 程序調(diào)試中遇到的問(wèn)題以及解決問(wèn)題的方法:我們?cè)趯?shí)驗(yàn)過(guò)程中遇到的最大難題是課程排序算法的編寫。剛開(kāi)始的時(shí)候沒(méi)有任何的思路,網(wǎng)上也只有拓?fù)渑判虻乃惴?,?duì)于課程設(shè)計(jì)要求的排序算法沒(méi)有任何頭緒。經(jīng)過(guò)請(qǐng)教老師和同學(xué)以及翻閱了一些相關(guān)書籍,并在網(wǎng)上的搜索有了排序算法的大體思路。經(jīng)過(guò)幾天的修改,終于寫出了符合要求的排序算法。4.3 課程設(shè)計(jì)過(guò)程經(jīng)驗(yàn)教訓(xùn)、心得體會(huì)每一次讀懂別人的代碼都是一種

22、提高。每一次減少一個(gè)Error都是一種進(jìn)步。每當(dāng)一個(gè)模塊編譯完成都是一種成就。這次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)著實(shí)是一件難事,平常很少動(dòng)手編程序,課堂上也沒(méi)太多關(guān)注把思路轉(zhuǎn)化為代碼。以至于最后要實(shí)現(xiàn)圖的輸入輸出時(shí),明明知道可以用鄰接表或者拓?fù)渑判?,但就是不知道寫代碼。經(jīng)過(guò)一個(gè)星期的課程設(shè)計(jì),過(guò)程曲折可謂一語(yǔ)難盡。整天都是對(duì)著電腦,不然就是翻閱資料。在此期間我失落11過(guò),也曾一度熱情高漲。點(diǎn)點(diǎn)滴滴令我回味無(wú)長(zhǎng)。這次課程設(shè)計(jì)使我體會(huì)到只有做到細(xì)心耐心,恒心才能做好事情。通過(guò)本次課程設(shè)計(jì),對(duì)圖的概念有了一個(gè)新的認(rèn)識(shí),在學(xué)習(xí)離散數(shù)學(xué)的時(shí)候,總覺(jué)得圖是很抽象的東西,但是在學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)教程這門課程之后,我慢慢地體

23、會(huì)到了其中的奧妙,圖能夠在計(jì)算機(jī)中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說(shuō)權(quán)值、頂點(diǎn)個(gè)數(shù)等,這也就說(shuō)明了想要把生活中的信息轉(zhuǎn)化到計(jì)算機(jī)中必須用數(shù)字來(lái)完整的構(gòu)成一個(gè)信息庫(kù),而圖的存在,又涉及到了頂點(diǎn)之間的聯(lián)系。圖分為有向圖和無(wú)向圖,而無(wú)向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計(jì)算機(jī)中表示一個(gè)雙向權(quán)值不同的圖,這是一件很巧妙的事情。在計(jì)算機(jī)中實(shí)現(xiàn)一個(gè)很簡(jiǎn)單的想法就需要涉及到很多專業(yè)知識(shí),為了完成設(shè)計(jì),在前期工作中,基本都是以學(xué)習(xí)C語(yǔ)言為主,所以浪費(fèi)了很多時(shí)問(wèn),比如說(shuō)在程序中,刪除頂點(diǎn)和增加頂點(diǎn)的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可

24、見(jiàn)在調(diào)用知識(shí)點(diǎn),我沒(méi)有掌握好。不過(guò),有了這次課程設(shè)計(jì)的經(jīng)驗(yàn)和教訓(xùn),我能夠很清楚的對(duì)自己定一個(gè)合適的水平,而且在這次課程設(shè)計(jì)中我學(xué)會(huì)了運(yùn)用兩個(gè)新的函數(shù)sprintf()和包涵在#include頭文件中的輸入函數(shù)。這次的課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很非常重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在整個(gè)設(shè)計(jì)過(guò)程中,構(gòu)思是很花費(fèi)時(shí)間的。調(diào)試時(shí)經(jīng)常會(huì)遇到這樣那樣的錯(cuò)誤,有的是因?yàn)榇中脑斐傻恼Z(yǔ)法錯(cuò)誤。當(dāng)然,很多也時(shí)用錯(cuò)了方法,總是實(shí)現(xiàn)不了。同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所

25、學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固。根據(jù)我在課程設(shè)計(jì)中遇到得問(wèn)題,我將在以后的學(xué)習(xí)過(guò)程中注意以下幾點(diǎn)。首先需要認(rèn)真上好專業(yè)實(shí)驗(yàn)課,多在實(shí)踐中鍛煉自己。其次寫程序的過(guò)程中要考慮周到,嚴(yán)密。再次,在做設(shè)計(jì)的時(shí)候要有信心,有耐心,切勿浮躁。然后,認(rèn)真的學(xué)習(xí)課本知識(shí),掌握課本中的知識(shí)點(diǎn),并在此基礎(chǔ)上學(xué)會(huì)靈活運(yùn)用。最后,在課余時(shí)間里多寫程序,熟練掌握在調(diào)試程序的過(guò)程中所遇到的常見(jiàn)錯(cuò)誤,以便能節(jié)省調(diào)試程序的時(shí)間。每個(gè)實(shí)驗(yàn)通常都要花費(fèi)很久的時(shí)間才能理清一個(gè)程序的思路,而且要不斷的調(diào)試程序才能把程序調(diào)試正確,同時(shí)還要做到界面的輸出也是需要美化的。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多專業(yè)知識(shí)問(wèn)1

26、2題,最后在老師的辛勤指導(dǎo)下,也完成了課程設(shè)計(jì)。通過(guò)這次的課程設(shè)計(jì),讓我更加了解到數(shù)據(jù)結(jié)構(gòu)的重要性。以及它對(duì)我們專業(yè)的發(fā)展發(fā)揮的作用。對(duì)我們而言,知識(shí)上的收獲很重要,但精神上的豐收更加可喜。讓我知道了學(xué)無(wú)止境的道理。我們每一個(gè)人永遠(yuǎn)不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財(cái)富,經(jīng)歷是一份擁有。這次課程設(shè)計(jì)必將成為我人生旅途上一個(gè)非常美好的回憶!同時(shí)在做課程設(shè)計(jì)時(shí)要能夠從多方面去考慮,去研究,用多種算法去實(shí)現(xiàn)要求。此次課程設(shè)計(jì),學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問(wèn)題,出現(xiàn)差錯(cuò)的隨機(jī)應(yīng)變,這些都讓我受益非淺,今后的制作應(yīng)該能夠更輕松,自己也都

27、能夠解決并高質(zhì)量的完成項(xiàng)目。我覺(jué)得作為一名網(wǎng)絡(luò)工程專業(yè)的學(xué)生,數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)是很有意義的.更重要的是如何把自己平時(shí)所學(xué)的東西應(yīng)用到實(shí)際中.雖然自己對(duì)于這門課懂的并不多,很多基礎(chǔ)的東西都還沒(méi)有很好的掌握,覺(jué)得很難,也沒(méi)有很有效的辦法通過(guò)自身去理解,但是靠著這一個(gè)多禮拜的“學(xué)習(xí)",在同學(xué)的幫助和講解下,漸漸對(duì)這門課逐漸產(chǎn)生了些許的興趣,自己開(kāi)始主動(dòng)學(xué)習(xí)并逐步從基礎(chǔ)慢慢開(kāi)始弄懂它。我認(rèn)為這個(gè)收獲應(yīng)該說(shuō)是相當(dāng)大的。覺(jué)得課程設(shè)計(jì)反映的是一個(gè)從理論到實(shí)際應(yīng)用的過(guò)程,但是更遠(yuǎn)一點(diǎn)可以聯(lián)系到以后畢業(yè)之后從學(xué)校轉(zhuǎn)到踏上社會(huì)的一個(gè)過(guò)程。同學(xué)問(wèn)的討論、互助,以及自身的動(dòng)腦和努力,都是以后工作中需要的。

28、5、使用說(shuō)明使用VC+打開(kāi)schedule.c文件,接著編譯,無(wú)錯(cuò)誤,然后重建也沒(méi)有錯(cuò)誤,最后執(zhí)行該文件。顯示如圖5-1:13Sschedue-口ftV:umi4-5ckedu>.cX圖5-1程序編譯正確要求輸入學(xué)期總數(shù)、一個(gè)學(xué)期的學(xué)分上限、需要編排課程總數(shù)、課程名、課程號(hào)、該課程的學(xué)分,按照出現(xiàn)的每一步來(lái)輸入該課程設(shè)計(jì)所提供的相關(guān)數(shù)據(jù)。如圖5-2所示。14圖5-2輸入課程安排基本信息要求依次輸入各課程的深入(后續(xù))課程代號(hào),按照出現(xiàn)的每一步來(lái)輸入該課程設(shè)計(jì)所提供的相關(guān)數(shù)據(jù)。如圖5-3所示。15蘆舞魯詈分別是什么遹揄入5的深入迷清輸入B的深入課(用空格分開(kāi)):請(qǐng)錦飛的探Aj果程琛程代號(hào)分

29、別是什么(用空格分開(kāi));8請(qǐng)輸入虧的深入課程數(shù)目僧請(qǐng)輸入”的深入課程課程代號(hào)分別是什么1用空格分開(kāi)).5請(qǐng)輸入4的深入課程觸目打清輸人3的深入課程課程代號(hào)分別是什么(用空格分開(kāi)):«清輸入3的深入課程數(shù)日;1請(qǐng)輸入之的深入課程課程代號(hào)分別是什么(用空格分開(kāi))3請(qǐng)輸入2的深入課程數(shù)目式請(qǐng)輸入1的深入理程講程代號(hào)分別是什久(用空格分開(kāi)):。2m12請(qǐng)輸入的深入課程數(shù)目;44蜀評(píng)據(jù)清空請(qǐng)輸入您要選擇的操作序號(hào),技回左雇瀛,2請(qǐng)輸入?的深入評(píng)程搜目4請(qǐng)碩人?的深入評(píng)孽建程代號(hào)分別是什么請(qǐng)輸入8的深入評(píng)程姓目通£用空格分開(kāi)),H*人入深深的時(shí)0?人入十"士"青青程

30、日需呈呈*!*高3TT代號(hào)分別是什么二3(用空格分開(kāi)):請(qǐng)輸入學(xué)的深入課程課程代號(hào)疔別是什么(用空格分開(kāi))1181112請(qǐng)輸入T0的深入課程數(shù)§:1色輸入川的深入課程課程代號(hào)分別是什么(用空格分開(kāi));建X輸入"的深入課程數(shù)目;1,輸入11的深入課程課程代號(hào)分別是什么(用空格分開(kāi));6球髀入課囂解頒是聯(lián)魂薩分開(kāi)).16,輸入12的深入課程數(shù)目4圖5-3建立課程順序各項(xiàng)信息輸入完畢后,在主選菜單中選擇3,系統(tǒng)將自動(dòng)排出課程。如圖5-4所示。產(chǎn)一=-*'C:U&W0AdministrdtorXDe5kt。p底部Debugschedule.exe*請(qǐng)輸入您要飛彳的操

31、作序號(hào)-王口王口王居3口王丁.<才高*高于課“列專航干翼排原退斷*1234S車息蘭d前基安居清課程代號(hào)17課程號(hào)課程學(xué)分10金學(xué)期課程結(jié)束c&2C04C18ellc8iC07c89i學(xué)期課程結(jié)束領(lǐng),二I打開(kāi)打印刷烹新建文件夾卿rE期舉型4國(guó)IdsnstfllLdat桌武題間幽botsqm.ddt2OI1/2/1622:42O1V7/410:2£2011/5/522:312011/3/30L859據(jù)該文件(&t)奘士:X7,l;川文件3cS35匚班,cSG12cl2用3學(xué)期課程結(jié)束BC08第4學(xué)期課程結(jié)束圖5-4排列課程數(shù)據(jù)同時(shí),系統(tǒng)會(huì)將教學(xué)編制計(jì)劃自動(dòng)保存到d:

32、course.txtT,如圖5-5、5-6所示。一卜社鬻丸kPROGRAM(0>>TI+>Ip圖5-5保存目錄17文件舊強(qiáng)駕舊限(6查BY幫助(彳宗甘rnr-mrETEEF,一mF9.,1111247I輾c01Tc079期2d-oo_ulilt-2&R24II3581年第1學(xué)鬟課程結(jié)束:.c084第二學(xué)理理程結(jié)束圖5-6course文件內(nèi)容如果信息輸入錯(cuò)誤,或者需要更換新的信息,可以在主選菜單中選擇清空信息選項(xiàng),系統(tǒng)將自動(dòng)刪除原有數(shù)據(jù)。如圖5-7所示。圖5-7數(shù)據(jù)清空在主選菜單中選擇5退出后,系統(tǒng)將自動(dòng)關(guān)閉6.參考書目李春葆等編著清華大學(xué)出版社李春葆等編著清華大學(xué)出版

33、社A.數(shù)據(jù)結(jié)構(gòu)教程B.數(shù)據(jù)結(jié)構(gòu)教程上機(jī)實(shí)驗(yàn)指導(dǎo)187、附錄7.1.源程序清單(帶注釋)#include"stdio.h"#include"malloc.h"#include"iostream.h"#include"stdlib.h"inttermtime=0;學(xué)期總數(shù)intlimitgrade=0;/學(xué)分上線charstr1004;/課程號(hào)intscore100=0;/課程學(xué)分inttotalcourse=0;/課程總數(shù)structnode/課程節(jié)點(diǎn)intvariable;/標(biāo)志屬不屬于同一個(gè)學(xué)期所修intprev

34、ious;/前修課程intnext;/后學(xué)課程structnode*courselink100;/后修課程的指針*coursenode100=NULL;/課程數(shù)目節(jié)點(diǎn)voidinitialNode();/初始化課程節(jié)點(diǎn)voidcreateNode();/建立課程順序voidsortNode();/排課程voidinputBasicInformation();/輸入基本信息voidcls();清空信息voidmenu();主菜單19voidinitialNode()(/初始化課程節(jié)點(diǎn)inti;intj;printf("n正在初始化。n");for(i=0;i<100;i

35、+)(coursenodei=(structnode*)malloc(sizeof(structnode);coursenodei->variable=0;coursenodei->previous=0;coursenodei->next=0;for(j=0;j<100;j+)coursenodei->courselinkj=NULL;printf("n初始化完畢。n");voidcreateNode()/建立課程順序(inti;inttemp;intflag;for(i=0;i<totalcourse;i+)(printf("

36、n請(qǐng)輸入的深入課程數(shù)目:",i+1);scanf("%d”,&(coursenodei->next);printf("n請(qǐng)輸入d的深入課程課程代號(hào)分別是什么(用空格分開(kāi)):",i+1);for(temp=0;temp<coursenodei->next;temp+)20scanf("%d",&flag);coursenodei->courselinktemp=coursenodeflag-1;coursenodeflag-1->previous+;printf("n課程代號(hào)t前修

37、課程數(shù)t深入課程數(shù)n");for(temp=0;temp<totalcourse;temp+)(printf("%dtt%dtt%dn",temp+1,coursenodetemp->previous,coursenodetemp->next);voidsortNode()/排課程(inti,j,flag=0,session=1,k=0;FILE*fp;if(fp=fopen("d:course.txt","a")=NULL)如果文件已經(jīng)存在,可以追加學(xué)生信息(if(fp=fopen("d:cou

38、rse.txt","w")=NULL)/文件不存在時(shí),創(chuàng)建新文件,輸入學(xué)生信息(printf("文件打開(kāi)失敗!n");return;21printf("nn");printf("課程代號(hào)t課程號(hào)t課程學(xué)分n");fprintf(fp,"課程代號(hào)t課程號(hào)t課程學(xué)分n");while(1)(flag=1;for(i=0;i<totalcourse;i+)if(coursenodei!=NULL)if(coursenodei->variable=0)if(coursenodei-

39、>previous=0)(printf("%dtt%st%dn",i+1,stri,scorei);fprintf(fp,"%dt%st%dn",i+1,stri,scorei);for(j=0;j<coursenodei->next;j+)(coursenodei->courselinkj->previous-=1;coursenodei->courselinkj->variable=1;coursenodei->courselinkj=NULL;coursenodei->next=0;free(c

40、oursenodei);flag=0;k+;if(flag!=0)if(k!=totalcourse)printf("n課程排序不合理,有死循環(huán)!");exit(0);22)break;)else(if(session<=termtime)(printf("第d學(xué)期課程結(jié)束nn",session);fprintf(fp,"第d學(xué)期課程結(jié)束nn",session);session+;)else(printf("學(xué)習(xí)時(shí)間不夠!n");exit(0);if(session<=termtime);)for(i=0;i<totalcourse;i+)if(coursenodei!=NULL)coursenodei->variable=0;fclose(fp);/關(guān)閉文件指針voidinputBasicInformation()/輸入基本信息23inti;printf("請(qǐng)輸入學(xué)期總數(shù):");scanf("%

溫馨提示

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

評(píng)論

0/150

提交評(píng)論