版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
HUNANUNIVERSITY
課程實(shí)習(xí)報(bào)告
題目:教學(xué)計(jì)劃編制問題
學(xué)生姓名______________________________________
學(xué)生學(xué)號(hào)______________________________
專業(yè)班級(jí)______________________________
指導(dǎo)老師___________李曉鴻_________________
完成日期_____________________________________
背景
大學(xué)的每個(gè)專業(yè)都要制定教學(xué)計(jì)劃。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)
期,每學(xué)期的時(shí)間長(zhǎng)度和學(xué)分上限值均相等。每個(gè)專業(yè)開設(shè)的課程都是確定的,而且課程在
開設(shè)時(shí)間的安排必須滿足先修關(guān)系。每門課程有哪些先修課程是確定的,可以有任意多門,
也可以沒有。每門課恰好占一個(gè)學(xué)期。試在這樣的前提下設(shè)計(jì)一個(gè)教學(xué)計(jì)劃編制程序。
問題描述
若用有向網(wǎng)表示教學(xué)計(jì)劃,其中頂點(diǎn)表示某門課程,有向邊表示課程之間的先修關(guān)系(如
果A課程是B課程的先修課程,那么A到B之間有一條有向邊從A指向B)。試設(shè)計(jì)一個(gè)
教學(xué)計(jì)劃編制程序,獲取一個(gè)不沖突的線性的課程教學(xué)流程。(課程線性排列,每門課上課
時(shí)其先修課程己經(jīng)被安排)。
基本要求
(1)輸入?yún)?shù):課程總數(shù),每門課的課程號(hào)(固定占3位的字母數(shù)字串)和直接先
修課的課程號(hào).
(2)若根據(jù)輸入條件問題無解,則報(bào)告適當(dāng)?shù)男畔?;否則將教學(xué)計(jì)劃輸出到用戶指
定的文件中。
一、需求分析
根據(jù)課程間的依賴關(guān)系,制定課程安排計(jì)劃。按照用戶的輸入建立一個(gè)鄰接表,輸出拓
撲排序結(jié)果。按照用戶輸入的課程數(shù),學(xué)期數(shù),課程間的先后關(guān)系數(shù)目以及課程間兩兩間的
先后關(guān)系,程序執(zhí)行后會(huì)給出每學(xué)期應(yīng)學(xué)的課程順序。
(1)輸入的形式和輸入值的范圍:本程序要求首先輸入一個(gè)正整數(shù)值N,代表課程總數(shù),
然后依次輸入課程的代號(hào)(使用長(zhǎng)度為3位的字符串表示),每次輸入完該課程的代號(hào)后,
同時(shí)輸入先修的課程的代號(hào)。因此,用整數(shù)來存儲(chǔ)課程總數(shù),字符串來存儲(chǔ)課程代號(hào)。
(2)輸出的形式:根據(jù)輸入的數(shù)據(jù),進(jìn)行拓?fù)渑判?,若能成功,則輸出序列,表示應(yīng)學(xué)
的課程順序,若不能成功,則提示報(bào)錯(cuò)進(jìn)行課程調(diào)整。
(3)程序所能達(dá)到的功能:按照用戶的輸入,輸出拓?fù)渑判蚪Y(jié)果。按照用戶的輸入,給
出每學(xué)期應(yīng)學(xué)的課程。
(4)測(cè)試數(shù)據(jù):
輸入請(qǐng)輸入課程數(shù)目:〃提示輸入
6
請(qǐng)輸入課程:〃提示輸入
S1
是否有先修課程(T/F)
F//表示沒有
請(qǐng)輸入課程:〃提示輸入
S2
是否有先修課程(T/F)
T//表不有
先修課程是:〃提示輸入
S1
輸出課程排列完成,為S1,S3,S5,S2,S6,S7,S4//排列成功
課程有誤,請(qǐng)重新調(diào)整〃失敗
二、概要設(shè)計(jì)
L抽象數(shù)據(jù)類型
ADT圖
數(shù)據(jù)對(duì)象:V,R(圖是由一個(gè)頂點(diǎn)集V和一個(gè)弧集R構(gòu)成的數(shù)據(jù)結(jié)構(gòu))
數(shù)據(jù)關(guān)系:Graph=(V,R)
VR={<v,w>|v,wwV且P(v,w)}
基本操作:
intn()=0;//返回圖節(jié)點(diǎn)數(shù)
inte()=0;〃返回圖邊數(shù)
intfirst(int)=0;〃返回該節(jié)點(diǎn)的第一條鄰邊
voidsetEdge(intvl,intv2)〃力口邊
intnext(int,int)=0;〃返回下一條鄰邊
intgetMark(int)=0;〃有標(biāo)記嗎
voidsetMark(int,int)=0;//設(shè)置標(biāo)記
2.程序的流程
程序由三個(gè)模塊組成:
(1)初始化模塊:首先輸入課程總數(shù),輸入課程編號(hào)以及每個(gè)課程的先修課程,把
這種帶有先決條件的線性關(guān)系存入圖中;
(2)拓?fù)淠K:對(duì)圖做拓?fù)渑判颍?/p>
(3)輸出模塊:輸出拓?fù)渑判虻慕Y(jié)果,若成功,輸出排序后的序列,若不成功,則
輸出錯(cuò)誤。
3.算法的基本思想
(1)拓?fù)渌惴ǎ赫业降谝粋€(gè)入度為0的點(diǎn),從有向圖中刪去此頂點(diǎn)以及所有以它為尾的弧,
再在這些點(diǎn)中找入度為0的點(diǎn)。重復(fù)上述操作,直至圖空,或者圖不空但找不到無前驅(qū)的
頂點(diǎn)為止。如果圖空,則說明課程可以安排成功,輸出序列。如果不空,說明課程安排失敗,
輸出失敗。
(2)圖的存儲(chǔ):用鄰接矩陣來存儲(chǔ)
4.設(shè)計(jì)思路
先對(duì)課程編號(hào)及其先修課程編號(hào)進(jìn)行輸入。利用拓?fù)渑判驅(qū)φn程先后順序進(jìn)行分析,但
當(dāng)又向圖中存在環(huán)時(shí),無法查找該圖的一個(gè)拓?fù)渑判?,?dāng)圖中的所有頂點(diǎn)全部輸出,表示對(duì)
該圖排序成功,實(shí)現(xiàn)拓?fù)渑判蛩惴〞r(shí)。根據(jù)課程的先后關(guān)系,對(duì)個(gè)學(xué)期的課程進(jìn)行排序,輸
出。
三、詳細(xì)設(shè)計(jì)
(1)圖的存儲(chǔ):用鄰接矩陣來存儲(chǔ)
classGraphm:publicGraph
(
private:
intnumVertex,numEdge;
int**matrix;
int*mark;
public:
Graphm(intnumVert)
(
inti,j;
numVertex=numVert;
numEdge=0;
mark=newint[numVert];
for(i=0;i<numVertex;i++)
mark[i]=UNVISITED;
matrix=(int**)newint*[numVertex];
for(i=0;i<numVertex;i++)
matrix[i]=newint[numVertex];
for(i=0;i<numVertex;i++)
for(intj=0;j<numVertex;j++)matrix[i][j]=0;
)
(2)拓?fù)渌惴?。找到第一個(gè)入度為0的點(diǎn),從有向圖中刪去此頂點(diǎn)以及所有以
它為尾的弧,再在這些點(diǎn)中找入度為0的點(diǎn)。重復(fù)上述操作,直至圖空,或者
圖不空但找不到無前驅(qū)的頂點(diǎn)為止。如果圖空,則說明課程可以安排成功,輸
出序列。如果不空,說明課程安排失敗,輸出失敗。
voidtopsort(Graph*G,Queue<int>*Q){
intCount[G->n()];
intv,w;
for(v=0;v<G->n();v++)Count[v]=0;
for(v=0;v<G->n();v++)//Processedges
for(w=G->first(v);w<G->n();w=G->next(v,w))
Count[w]++;//Addtov2'scount
for(v=0;v<G->n();v++)//InitializeQ
if(Count[v]==0)//Noprereqs
Q->enqueue(v);
while(Q->length()!=0){
Q->dequeue(v);
printout(v);//PreVisitforV
for(w=G->first(v);w<G->n();w=G->next(v,w))
(
Count[w]―;//Onelessprereq
if(Count[w]==0)//Nowfree
Q->enqueue(w);
)
}
(3)圖的基本操作
intfirst(intv)
(
inti;
for(i=0;i<numVertex;i++)
if(matrix[v][i]!=0)
returni;
returni;
)
intnext(intvl,intv2)
(
inti;
for(i=v2+l;i<numVertex;i++)
if(matrix[vl][i]!=0)
returni;
returni;
)
voidsetEdge(intvl,intv2)
(
if(matrix[vl][v2]==0)
numEdge++;
matrix[vl][v2]=1;
)
intn()
(
returnnumVertex;
)
inte()
returnnumEdge;
intgetMark(intv)
(
returnmark[v];
)
voidsetMark(intv,intval)
(
mark[v]=val;
(4)算法的時(shí)空分析
鄰接矩陣的空間代價(jià)為?(IW2),減邊的拓?fù)渑判蛩惴〞r(shí)間待見為?(V+E)。
(5)函數(shù)的調(diào)用關(guān)系圖
<■提示用戶輸入課程總數(shù)
輸入課程代號(hào)和先修課程代號(hào)
主程序W
一拓?fù)渑判?/p>
輸出
(6)輸入和輸出的格式
輸入請(qǐng)輸入課程數(shù)目:〃提示輸入
6
請(qǐng)輸入課程:〃提示輸入
S1
是否有先修課程(T/F)
F//表示沒有
請(qǐng)輸入課程:〃提示輸入
S2
是否有先修課程(T/F)
T〃表示有
先修課程是:〃提示輸入
S1
輸出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西省晉城市部分學(xué)校2024-2025學(xué)年高二上學(xué)期12月月考英語(yǔ)試卷(含答案無聽力原文及音頻)
- 江蘇省鹽城市潘黃實(shí)驗(yàn)學(xué)校 蘇科版物理八年級(jí)上冊(cè) 八年級(jí)第一學(xué)期期末質(zhì)量檢測(cè)物 理(含答案)
- 河北省邢臺(tái)市部分高中2024-2025學(xué)年高三(上)期末物理試卷(含答案)
- 2024版海鮮干貨購(gòu)銷合同范本
- 2024版辦公室保潔人員雇傭協(xié)議
- 2024精簡(jiǎn)版聘用協(xié)議:高效規(guī)范格式版
- 福建省南平市劍津中學(xué)高一數(shù)學(xué)文月考試卷含解析
- 2024年一級(jí)造價(jià)師之建設(shè)工程技術(shù)與計(jì)量(交通)題庫(kù)含答案(a卷)
- 2024特色農(nóng)業(yè)產(chǎn)品銷售合同標(biāo)的
- 2024版醫(yī)院合同管理規(guī)定
- 2025年四川長(zhǎng)寧縣城投公司招聘筆試參考題庫(kù)含答案解析
- 2024年06月上海廣發(fā)銀行上海分行社會(huì)招考(622)筆試歷年參考題庫(kù)附帶答案詳解
- TSG 51-2023 起重機(jī)械安全技術(shù)規(guī)程 含2024年第1號(hào)修改單
- 計(jì)算機(jī)科學(xué)導(dǎo)論
- 浙江省杭州市錢塘區(qū)2023-2024學(xué)年四年級(jí)上學(xué)期英語(yǔ)期末試卷
- 《工程勘察設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)》(2002年修訂本)
- 2024年一級(jí)消防工程師《消防安全技術(shù)綜合能力》考試真題及答案解析
- 2024-2025學(xué)年六上科學(xué)期末綜合檢測(cè)卷(含答案)
- 安徽省森林撫育技術(shù)導(dǎo)則
- 2023七年級(jí)英語(yǔ)下冊(cè) Unit 3 How do you get to school Section A 第1課時(shí)(1a-2e)教案 (新版)人教新目標(biāo)版
- 泌尿科主任述職報(bào)告
評(píng)論
0/150
提交評(píng)論