教學(xué)計(jì)劃編制問(wèn)題_第1頁(yè)
教學(xué)計(jì)劃編制問(wèn)題_第2頁(yè)
教學(xué)計(jì)劃編制問(wèn)題_第3頁(yè)
教學(xué)計(jì)劃編制問(wèn)題_第4頁(yè)
教學(xué)計(jì)劃編制問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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)介

目錄摘要 1前言 2正文 31. 問(wèn)題描述 32. 邏輯設(shè)計(jì) 33. 詳細(xì)設(shè)計(jì) 64. 稱序編碼 115. 程序調(diào)試與測(cè)試 146. 軟件安裝和使用說(shuō)明書 15設(shè)計(jì)總結(jié) 16參考文獻(xiàn) 17致謝 18摘要大學(xué)的每個(gè)專業(yè)都要制定教學(xué)方案。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)期,每學(xué)期的時(shí)間長(zhǎng)度和學(xué)分上限值均相等。每個(gè)專業(yè)開(kāi)設(shè)的課程都是確定的,而且課程在開(kāi)設(shè)時(shí)間的安排必須滿足先修關(guān)系。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒(méi)有。每門課恰好占一個(gè)學(xué)期。試在這樣的前提下設(shè)計(jì)一個(gè)教學(xué)方案編制程序。關(guān)鍵詞:數(shù)據(jù)、結(jié)構(gòu)、教學(xué)、方案前言 隨著科學(xué)技術(shù)和市場(chǎng)經(jīng)濟(jì)的迅速開(kāi)展,技術(shù)和產(chǎn)品的生命周期日益縮短,市場(chǎng)需求日益多樣化和個(gè)性化,社會(huì)對(duì)人才的需求也越來(lái)越呈現(xiàn)多樣化、專業(yè)化和個(gè)性化[1-2]。高等學(xué)校學(xué)歷教育的主要任務(wù)是傳授專業(yè)根底知識(shí)、培養(yǎng)可持續(xù)開(kāi)展的綜合素質(zhì)。學(xué)生畢業(yè)后,面對(duì)瞬變的人才市場(chǎng),常感到無(wú)所適從,而企業(yè)方面又常感到適宜的人才難求。順應(yīng)社會(huì)的需求,針對(duì)具體行業(yè)需求的定制式教學(xué)悄然興起。近年來(lái),伴隨著經(jīng)濟(jì)開(kāi)展軌道的變化,廣東省的一些企業(yè)向高校提出了定制式教學(xué)培訓(xùn)的要求。例如某摩托車生產(chǎn)企業(yè)為了開(kāi)拓海外市場(chǎng),要對(duì)原產(chǎn)品進(jìn)行改造,要求開(kāi)設(shè)機(jī)械設(shè)計(jì)理論課程,主要目的是提高技術(shù)隊(duì)伍人員的動(dòng)力學(xué)分析與綜合水平。定制式教學(xué)需求屬于同一工程領(lǐng)域,教學(xué)目標(biāo)呈現(xiàn)多樣化特征,所需根底涉及假設(shè)干門課程,但不是這些課程的簡(jiǎn)單組合,亦無(wú)法照搬學(xué)?,F(xiàn)成的教學(xué)方案。為了迅速響應(yīng)社會(huì)需求,需要研究面向定制式教學(xué)的多樣化教學(xué)方案設(shè)計(jì)方法。正文問(wèn)題描述根據(jù)問(wèn)題描述及要求,可知設(shè)計(jì)中需要定義先修關(guān)系的AOV網(wǎng)圖中的頂點(diǎn)及弧邊的結(jié)構(gòu)體,在運(yùn)行結(jié)果中將圖的信息顯示出來(lái),利用先修關(guān)系將課程排序,最后解決問(wèn)題——輸出每學(xué)期的課程。采用第二種策略:使課程盡可能地集中在前幾個(gè)學(xué)期中;根據(jù)教學(xué)方案中的課程及其關(guān)系和學(xué)分定義圖的頂點(diǎn)和邊的結(jié)構(gòu)體創(chuàng)立圖GrateGraph〔〕:結(jié)合先修關(guān)系的AOV網(wǎng),顯示代號(hào)所對(duì)應(yīng)課程及課程的先修課程拓?fù)渑判騎opologicalOrder(G):將課程排序后并決定出每學(xué)期所學(xué)課程,輸出圖G的信息Display(G):將圖的頂點(diǎn)和弧邊輸出。〔1〕輸入?yún)?shù)包括:學(xué)期總數(shù),一學(xué)期的學(xué)分上限,每門課的課程號(hào)〔固定占3位的字母數(shù)字串〕學(xué)分和直接先修課的課程號(hào)。〔2〕允許用戶指定以下兩種編排策略之一:一是使學(xué)生在各學(xué)期中的學(xué)習(xí)負(fù)擔(dān)盡量均勻;二是使課程盡可能地集中在前幾個(gè)學(xué)期中?!?〕假設(shè)根據(jù)給定的條件問(wèn)題無(wú)解,那么報(bào)告適當(dāng)?shù)男畔?;否那么將教學(xué)方案輸出到用戶指定的文件中。方案的表格格式自行設(shè)計(jì)邏輯設(shè)計(jì)CreatGraph(ALGraph*G)//構(gòu)件圖〔如下右圖〕voidFindInDegree(ALGraphG,intindegree[])//求圖中各節(jié)點(diǎn)的入度〔如下左圖〕voidTopologicalSort_1(ALGraphG,intnumterm,intuplcredit)//有向圖G采用鄰接表存儲(chǔ)結(jié)構(gòu)(如下左圖)voidTopologicalSort_2(ALGraphG,intnumterm,intuplcredit)//有向圖G采用鄰接表存儲(chǔ)結(jié)構(gòu)〔如下右圖〕主函數(shù):voidmain()

詳細(xì)設(shè)計(jì)1、圖的鄰接表的存儲(chǔ)表示,即結(jié)構(gòu)體的定義typedefstructArcNode{ intAdjOfV;//該弧所指向的頂點(diǎn)的位置 structArcNode*next;//指向下一條弧的指針}ArcNode;typedefcharVertexType[MAXOfNAME];typedefstruct//鏈接表{ VertexTypedata;//頂點(diǎn)信息 intgrades;//存儲(chǔ)學(xué)分信息 ArcNode*first;//指向第一條依附該頂點(diǎn)的弧的指針}VNode,AdjList[MAX_VER];//頭結(jié)點(diǎn)typedefstruct{ AdjListver;//vertices存儲(chǔ)課程名 intvexnum,arcnum;//圖的當(dāng)前頂點(diǎn)數(shù)和弧數(shù)}ALGraph;

2、利用前插法,建立圖的鄰接鏈表printf("請(qǐng)輸入以下課程的先修課程(無(wú)先修課程輸入0結(jié)束后也輸入0)\n");for(h=0;h<G.vexnum;++h)//構(gòu)造表結(jié)點(diǎn)鏈表,利用前插法{printf("%s的先修課程:",G.ver[h].data);scanf("%s",va);getchar();while(va[0]!='0'){i=LocateVex(G,va);//弧頭j=h;//弧尾p=(ArcNode*)malloc(sizeof(ArcNode));p->AdjOfV=j;p->next=G.ver[i].first;//插在表頭G.ver[i].first=p;scanf("%s",va);getchar();}}

3、輸出圖的頂點(diǎn)和邊printf("%d個(gè)頂點(diǎn)",G.vexnum);for(i=0;i<G.vexnum;++i)printf("%4s",G.ver[i].data);printf("\n%d條弧邊:\n",G.arcnum);for(i=0;i<G.vexnum;i++){p=G.ver[i].first;while(p) {printf("%s>%s\n",G.ver[i].data,G.ver[p->AdjOfV].data);p=p->next;}}

4、通過(guò)棧實(shí)現(xiàn)拓?fù)渑判?/p>

intTopologicalOrder(ALGraphG,AdjListR,structNamename[]){ inti,k,j=0,count,indegree[MAX_VER]; SqStackS; ArcNode*p; FindInDegree(G,indegree);//對(duì)各頂點(diǎn)求入度 InitStack(S);//初始化棧 for(i=0;i<G.vexnum;++i)//建零入度頂點(diǎn)棧S if(!indegree[i])Push(S,i);//入度為0者進(jìn)棧 count=0;//對(duì)輸出頂點(diǎn)計(jì)數(shù) while(!StackEmpty(S)) { Pop(S,i); printf("%s(%d學(xué)分),",G.ver[i].data,G.ver[i].grades); R[j++]=G.ver[i];//將當(dāng)前的拓?fù)湫蛄斜4嫫饋?lái) ++count;//輸出i號(hào)頂點(diǎn)并計(jì)數(shù) for(p=G.ver[i].first;p;p=p->next)//對(duì)i號(hào)頂點(diǎn)的每個(gè)鄰接點(diǎn)的入度減1 { k=p->AdjOfV; if(!(--indegree[k]))//假設(shè)入度減為0,那么入棧 Push(S,k); } } if(count<G.vexnum) { printf("此有向圖有回路無(wú)法完成拓?fù)渑判?); return0; } elseprintf("為一個(gè)拓?fù)湫蛄?); printf("\n"); intq=1,Z=0; while(q<=TotalOfTerms) { intC=R[Z].grades; printf("\n第%d個(gè)學(xué)期應(yīng)學(xué)課程:",q); while(C<=MaxScores) { C=C+R[Z+1].grades; if(Z<G.vexnum) { CmpOfStr(R[Z].data,name,N);/*讓C1~C12分別與12門課程對(duì)應(yīng)起來(lái)*/ ++Z; } } printf("\n"); if(q==TotalOfTerms)printf("\nOKOver!"); q++; } return1;/**/}稱序編碼抽象數(shù)據(jù)類型圖的定義如下:ADTGraph{數(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:voidCreatGraph(ALGraph*);voidFindInDegree(ALGraph,int*);voidTopologicalSort_1(ALGraphG,intnumterm,intmaxcredit);voidTopologicalSort_2(ALGraphG,intnumterm,intmaxcredit);}ADTGraph棧的定義:ADTStack{

數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,…n,n>=0}

數(shù)據(jù)關(guān)系:R1={﹤ai-1ai﹥|ai-1,ai∈D,i=2,…,n}根本操作:voidInitStack(SqStack*S);intStackEmpty(SqStackS);voidPush(SqStack*S,int);intPop(SqStack*S,int*e);}ADTStack主程序intmain()

//主函數(shù){

intnumterm;

//學(xué)期總數(shù)

intuplcredit;//一個(gè)學(xué)期的學(xué)分上限

intselectway;

ALGraphG;

printf("請(qǐng)輸入學(xué)期總數(shù):\n");

scanf("%d",&numterm);

printf("請(qǐng)輸入一個(gè)學(xué)期的學(xué)分上限:\n");

scanf("%d",&uplcredit);

CreatGraph(&G);

printf("請(qǐng)選擇編排策略:1.課程盡可能集中到前幾個(gè)學(xué)期;2.課程盡量均勻分布\n");

scanf("%d",&selectway);

if(selectway==1)

TopologicalSort_1(G,numterm,uplcredit);

if(selectway==2)

TopologicalSort_2(G,numterm,uplcredit);

system("pause");

return0;}本程序只有兩個(gè)模塊,調(diào)用關(guān)系簡(jiǎn)單.

主程序模塊

拓?fù)渑判蚰K。程序調(diào)試與測(cè)試軟件安裝和使用說(shuō)明書使用VC++,翻開(kāi)教學(xué)方案編制問(wèn)題.cpp文件,接著編譯,無(wú)錯(cuò)誤,然后重建也沒(méi)有錯(cuò)誤,最后執(zhí)行該文件。顯示如以下圖:要求輸入學(xué)期總數(shù)、一個(gè)學(xué)期的學(xué)分上限、需要編排課程總數(shù)、課程名、課程號(hào)、該課程的學(xué)分,按照出現(xiàn)的每一步來(lái)輸入該課程設(shè)計(jì)所提供的相關(guān)數(shù)據(jù)。然后還要輸入課程先修課程總數(shù),依據(jù)教科書圖7.26,可以算出有16種關(guān)系,分別輸出如以下圖所示。接著程序會(huì)根據(jù)這些數(shù)據(jù),自動(dòng)生成建立好的鄰接表,用戶可以根據(jù)系統(tǒng)顯示的選擇編排策略進(jìn)行選擇,有兩種編排策略,最后結(jié)果表達(dá)在實(shí)驗(yàn)的正確測(cè)試結(jié)果里〔如上圖〕。

設(shè)計(jì)總結(jié)經(jīng)過(guò)此次課程設(shè)計(jì),我深刻地認(rèn)識(shí)到自己寫程序的缺乏,認(rèn)識(shí)到了僅僅只是從課本上學(xué)到算法原理是遠(yuǎn)遠(yuǎn)不夠的,理論與實(shí)踐結(jié)合才是最重要的。實(shí)驗(yàn)中,我總是不經(jīng)意間出現(xiàn)各種錯(cuò)誤,這就要求今后的我要以腳踏實(shí)地的態(tài)度來(lái)思考處理問(wèn)題。總

溫馨提示

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