教學(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è)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

課程設(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)2009031201XX指導(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è)開設(shè)的課程都是確定的,而且課程在開設(shè)時(shí)間的安排必須滿足先修關(guān)系。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒(méi)有。每門課恰好占一個(gè)學(xué)期。試在這樣的前提下設(shè)計(jì)一個(gè)教學(xué)計(jì)劃編制程序.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ì)。3)測(cè)試數(shù)據(jù)學(xué)期總數(shù):6;學(xué)分上限:10;該專業(yè)共開設(shè)課數(shù):12課程號(hào):從C01到C12;學(xué)分順序:2,3,4,3,2,3,4,4,7,5,2,3.先修關(guān)系如下圖:11942121011365784)實(shí)現(xiàn)提示可設(shè)學(xué)期總數(shù)不超過(guò)12,課程總數(shù)不超過(guò)100。如果輸入的先修課程號(hào)不在該專業(yè)開設(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ì)程序由哪些模塊組成以及模塊之間的層次結(jié)構(gòu)、各模塊的調(diào)用關(guān)系;每個(gè)模塊的功能。課題涉及的數(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)系圖、主要函數(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)書寫格式見附帶說(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)需求分析、功能設(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)。②回答有關(guān)問(wèn)題。③提交課程設(shè)計(jì)報(bào)告。④提交電子文檔(源程序、設(shè)計(jì)報(bào)告文檔)。⑤依內(nèi)容的創(chuàng)新程度,完善程序情況及對(duì)程序講解情況打分。二、進(jìn)度安排第19周星期一星期二星期三星期四星期五上午8:00~12:00√下午13:30~17:30√√√晚上18:00~20:00√第20周星期一星期二星期三星期四星期五上午8:00~12:00√下午13:30~17:30晚上18:00~20: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字以上(不含程序原代碼)。目錄TOC\o"1—3"\h\z\u216261、需求分析 1216761.1程序的功能: 1260731。2輸入輸出的要求: 1314162、概要設(shè)計(jì) 1107152。1程序模塊功能圖 1159682。2數(shù)據(jù)結(jié)構(gòu) 265213、詳細(xì)設(shè)計(jì) 37373。1采用C語(yǔ)言定義相關(guān)的數(shù)據(jù)類型 3185583。2各模塊的類C碼算法 3236413.3各函數(shù)的調(diào)用關(guān)系圖、主要函數(shù)的流程圖 9297314、調(diào)試分析以及設(shè)計(jì)體會(huì) 11282584。1測(cè)試數(shù)據(jù): 11183624.2程序調(diào)試中遇到的問(wèn)題以及解決問(wèn)題的方法: 12319104.3課程設(shè)計(jì)過(guò)程經(jīng)驗(yàn)教訓(xùn)、心得體會(huì): 1239635、使用說(shuō)明 1494406.參考書目 2048497、附錄 21138697。1.源程序清單(帶注釋) 21PAGE11、需求分析1。1程序的功能:編制教學(xué)計(jì)劃。大學(xué)的每個(gè)專業(yè)都要制訂教學(xué)計(jì)劃。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)期,每學(xué)期的時(shí)間長(zhǎng)度和學(xué)分上限均相等。每個(gè)專業(yè)開設(shè)的課程都是確定的,而且課程在開設(shè)時(shí)間的安排必須滿足先修關(guān)系。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒(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()main()主函數(shù)initialNode()初始化課程節(jié)點(diǎn)createNode()建立課程順序sortNode()課程inputBasicInformation()輸入基本信息cls()清空信息menu()主菜單圖2.1—1功能模塊圖2.2數(shù)據(jù)結(jié)構(gòu)inttermtime=0; //學(xué)期總數(shù)intlimitgrade=0; //學(xué)分上線charstr[100][4]; //課程號(hào)intscore[100]={0}; //課程學(xué)分inttotalcourse=0; //課程總數(shù)structnode //課程節(jié)點(diǎn){ intvariable; //標(biāo)志屬不屬于同一個(gè)學(xué)期所修 intprevious; //前修課程 intnext; //后學(xué)課程 structnode*courselink[100]; //后修課程的指針}*coursenode[100]={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é)分上線charstr[100][4]; //課程號(hào)intscore[100]={0}; //課程學(xué)分inttotalcourse=0; //課程總數(shù)structnode //課程節(jié)點(diǎn){ intvariable; //標(biāo)志屬不屬于同一個(gè)學(xué)期所修 intprevious; //前修課程 intnext; //后學(xué)課程 structnode*courselink[100]; //后修課程的指針}*coursenode[100]={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<100;j++) coursenode[i]->courselink[j]=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”,&(coursenode[i]-〉next)); printf("\n請(qǐng)輸入%d的深入課程課程代號(hào)分別是什么(用空格分開):",i+1); for(temp=0;temp<coursenode[i]->next;temp++) { scanf("%d",&flag); coursenode[i]-〉courselink[temp]=coursenode[flag—1]; coursenode[flag—1]->previous++; } } printf("\n課程代號(hào)\t前修課程數(shù)\t深入課程數(shù)\n"); for(temp=0;temp<totalcourse;temp++) { printf("%d\t\t%d\t\t%d\n",temp+1,coursenode[temp]—〉previous,coursenode[temp]-〉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("文件打開失敗!\n”);return; } } printf("\n—————-———--——--—————-——\n”); 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(課程數(shù)目節(jié)點(diǎn)為空) if(同學(xué)期學(xué)習(xí)課程為空) if(前修課程為0) { printf("%d\t\t%s\t%d\n”,i+1,str[i],score[i]); fprintf(fp,"%d\t%s\t%d\n",i+1,str[i],score[i]); for(j=0;j〈coursenode[i]—>next;j++) { 前修課程數(shù)目節(jié)點(diǎn)減一; coursenode[i]->courselink[j]—>variable=1; coursenode[i]—〉courselink[j]=NULL; } coursenode[i]—>next=0; 釋放數(shù)目結(jié)點(diǎn); flag=0; } if(flag!=0)break; else { if(session<=termtime) {printf(”第%d學(xué)期課程結(jié)束\n—-——-———--—-——--————————-—--—\n”,session); fprintf(fp,"第%d學(xué)期課程結(jié)束\n————————-————--———————-—--——\n",session);session++;} else { printf("學(xué)習(xí)時(shí)間不夠!!!\n”); exit(0); }if(session〈=termtime); } for(i=0;i<totalcourse;i++) if(課程節(jié)目數(shù)不為O) coursenode[i]->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ò)12\n"); exit(0); } printf("\n請(qǐng)輸入學(xué)分上限:”); scanf("%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”,&str[i]); str[i][3]='\0’; printf(”請(qǐng)輸入第%d門課程學(xué)分(回車結(jié)束):”,i+1); scanf("%d”,&score[i]); if(學(xué)分高于上限) { printf("\n對(duì)不起,課程學(xué)分不能超過(guò)學(xué)分上限\n"); exit(0); } } printf(”\n您所輸入的數(shù)據(jù)如下,請(qǐng)核實(shí):\n”); printf(”課程代號(hào)\t課程號(hào)\t課程學(xué)分\n"); for(i=0;i〈totalcourse;i++) { printf("%d\t\t%s\t%d\n”,i+1,str[i],score[i]); }}E.清空信息voidcls(){ inti=0; 學(xué)期數(shù)置零; 學(xué)分上限置零; for(i=0;i〈100;i++) { str[i][0]='\0’; score[100]=0; }總課程數(shù)置零; printf("\n原來(lái)數(shù)據(jù)已經(jīng)清空\(ché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):");scanf(”%d”,&n);switch(n) { case1:inputBasicInformation();;break;case2:createNode();;break;case3:sortNode();;break;case4:cls();break;case5:exit(0);default:printf("輸入錯(cuò)誤,請(qǐng)輸入列表中存在的序號(hào)!\n”); } } }3。3各函數(shù)的調(diào)用關(guān)系圖、主要函數(shù)的流程圖開始設(shè)輔助數(shù)組indegree記錄圖的各頂點(diǎn)的入度值,并將indegree數(shù)組各變量賦初值。輸入圖的頂點(diǎn)數(shù)、邊數(shù)建立一個(gè)棧,存儲(chǔ)圖的頂點(diǎn)的序號(hào)用鄰接表法建圖,并計(jì)算出indegree數(shù)組中各變量值開始設(shè)輔助數(shù)組indegree記錄圖的各頂點(diǎn)的入度值,并將indegree數(shù)組各變量賦初值。輸入圖的頂點(diǎn)數(shù)、邊數(shù)建立一個(gè)棧,存儲(chǔ)圖的頂點(diǎn)的序號(hào)用鄰接表法建圖,并計(jì)算出indegree數(shù)組中各變量值根據(jù)indegree數(shù)組將入度為0的頂點(diǎn)入棧count對(duì)輸出頂點(diǎn)計(jì)數(shù)0=>count棧不空刪除棧頂元素,賦給icount++將與第i個(gè)頂點(diǎn)鏈接的各頂點(diǎn)入度減1輸出第i個(gè)頂點(diǎn)值頂點(diǎn)入度為0頂點(diǎn)序號(hào)入棧count<G.vexnum輸出“拓?fù)渑判虺晒Α陛敵觥巴負(fù)渑判虿怀晒Α苯Y(jié)束圖2。3—1流程圖4、調(diào)試分析以及設(shè)計(jì)體會(huì)4.1測(cè)試數(shù)據(jù):學(xué)期總數(shù):6;學(xué)分上限:10;該專業(yè)共開設(shè)課數(shù):12課程號(hào):從C01到C12;學(xué)分順序:2,3,4,3,2,3,4,4,7,5,2,3。先修關(guān)系如下圖:1194212101136578圖4。1-1測(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ò)程中遇到的最大難題是課程排序算法的編寫。剛開始的時(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ì):每一次讀懂別人的代碼都是一種提高。每一次減少一個(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ì)著電腦,不然就是翻閱資料。在此期間我失落過(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)教程》這門課程之后,我慢慢地體會(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í)間,比如說(shuō)在程序中,刪除頂點(diǎn)和增加頂點(diǎn)的模塊中都有和建圖模塊相互重復(fù)的函數(shù),但是由于技術(shù)的原因,只能做一些很累贅的函數(shù),可見在調(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ì)以前所學(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ò)程中所遇到的常見錯(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)題,最后在老師的辛勤指導(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)該能夠更輕松,自己也都能夠解決并高質(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)生了些許的興趣,自己開始主動(dòng)學(xué)習(xí)并逐步從基礎(chǔ)慢慢開始弄懂它.我認(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é)間的討論、互助,以及自身的動(dòng)腦和努力,都是以后工作中需要的。

5、使用說(shuō)明使用VC++,打開schedule.c文件,接著編譯,無(wú)錯(cuò)誤,然后重建也沒(méi)有錯(cuò)誤,最后執(zhí)行該文件.顯示如圖5-1:圖5—1程序編譯正確要求輸入學(xué)期總數(shù)、一個(gè)學(xué)期的學(xué)分上限、需要編排課程總數(shù)、課程名、課程號(hào)、該課程的學(xué)分,按照出現(xiàn)的每一步來(lái)輸入該課程設(shè)計(jì)所提供的相關(guān)數(shù)據(jù)。如圖5—2所示。圖5-2輸入課程安排基本信息要求依次輸入各課程的深入(后續(xù))課程代號(hào),按照出現(xiàn)的每一步來(lái)輸入該課程設(shè)計(jì)所提供的相關(guān)數(shù)據(jù)。如圖5—3所示。圖5—3建立課程順序各項(xiàng)信息輸入完畢后,在主選菜單中選擇3,系統(tǒng)將自動(dòng)排出課程。如圖5—4所示。圖5-4排列課程數(shù)據(jù)同時(shí),系統(tǒng)會(huì)將教學(xué)編制計(jì)劃自動(dòng)保存到d:\course。txt下,如圖5-5、5-6所示。圖5—5保存目錄圖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。參考書目A?!稊?shù)據(jù)結(jié)構(gòu)教程》李春葆等編著清華大學(xué)出版社B.《數(shù)據(jù)結(jié)構(gòu)教程上機(jī)實(shí)驗(yàn)指導(dǎo)》李春葆等編著清華大學(xué)出版社7、附錄7。1.源程序清單(帶注釋)#include"stdio.h”#include"malloc。h"#include"iostream.h"#include”stdlib。h”inttermtime=0; //學(xué)期總數(shù)intlimitgrade=0; //學(xué)分上線charstr[100][4]; //課程號(hào)intscore[100]={0}; //課程學(xué)分inttotalcourse=0; //課程總數(shù)structnode //課程節(jié)點(diǎn){ intvariable; //標(biāo)志屬不屬于同一個(gè)學(xué)期所修 intprevious; //前修課程 intnext; //后學(xué)課程 structnode*courselink[100]; //后修課程的指針}*coursenode[100]={NULL}; //課程數(shù)目節(jié)點(diǎn)voidinitialNode(); //初始化課程節(jié)點(diǎn)voidcreateNode(); //建立課程順序voidsortNode(); //排課程voidinputBasicInformation(); //輸入基本信息voidcls(); //清空信息voidmenu(); //主菜單voidinitialNode() //初始化課程節(jié)點(diǎn){ inti; intj; printf(”\n正在初始化。。。。。。.\n”); for(i=0;i〈100;i++) { coursenode[i]=(structnode*)malloc(sizeof(structnode)); coursenode[i]—〉variable=0; coursenode[i]—〉previous=0; coursenode[i]—>next=0; for(j=0;j<100;j++) coursenode[i]-〉courselink[j]=NULL; } printf("\n初始化完畢.。。...。\n"); }voidcreateNode() //建立課程順序{ inti; inttemp; intflag; for(i=0;i〈totalcourse;i++) { printf("\n請(qǐng)輸入%d的深入課程數(shù)目:”,i+1); scanf(”%d”,&(coursenode[i]->next)); printf("\n請(qǐng)輸入%d的深入課程課程代號(hào)分別是什么(用空格分開):",i+1); for(temp=0;temp<coursenode[i]-〉next;temp++) { scanf("%d”,&flag); coursenode[i]-〉courselink[temp]=coursenode[flag—1]; coursenode[flag—1]—〉previous++; } } printf("\n課程代號(hào)\t前修課程數(shù)\t深入課程數(shù)\n"); for(temp=0;temp<totalcourse;temp++) { printf(”%d\t\t%d\t\t%d\n”,temp+1,coursenode[temp]->previous,coursenode[temp]—>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:\\course.txt",”w”))==NULL)//文件不存在時(shí),創(chuàng)建新文件,輸入學(xué)生信息 { printf("文件打開失敗!\n");return; } } printf("\n-——————--——-—-—-——-—--————--—\n”); 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(coursenode[i]!=NULL) if(coursenode[i]-〉variable==0) if(coursenode[i]->previous==0) { printf("%d\t\t%s\t%d\n”,i+1,str[i],score[i]); fprintf(fp,”%d\t%s\t%d\n”,i+1,str[i],score[i]); for(j=0;j<coursenode[i]-〉next;j++) { coursenode[i]->courselink[j]—>previous-=1; coursenode[i]-〉courselink[j]->variable=1; coursenode[i]-〉courselink[j]=NULL; } coursenode[i]—>next=0; free(coursenode[i]); flag=0; k++; } if(flag!=0){ if(k!=totalcourse) { printf(”\n課程排序不合理,有死循環(huán)!”); exit(0); } break; } else { if(session<=termtime) { printf("第%d學(xué)期課程結(jié)束\n—--—————-—--—-——————-————--\n",session); fprintf(fp,"第%d學(xué)期課程結(jié)束\n——————--——--——-—-——-—-——--\n”,session); session++; } else { printf("學(xué)習(xí)時(shí)間不夠!!!\n”); exit(0); }if(session〈=termtime); } for(i=0;i〈totalcourse;i++) if(coursenode[i]!=NULL) coursenode[i]->variable=0; } fclose(fp); //關(guān)閉文件指針}voidinputBasicInformation() //輸入基本信息{ inti; printf("請(qǐng)輸入學(xué)期總數(shù):"); scanf(”%d",&termtime); if(termtime>=12) { printf(”\n對(duì)不起,學(xué)期總數(shù)不能超過(guò)12\n"); exit(0); } printf(”\n請(qǐng)輸入學(xué)分上限:”); scanf("%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); sc

溫馨提示

  • 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)論