數(shù)據(jù)結(jié)構(gòu)(C++)課程設(shè)計(jì)報(bào)告--教學(xué)計(jì)劃編制問題_第1頁
數(shù)據(jù)結(jié)構(gòu)(C++)課程設(shè)計(jì)報(bào)告--教學(xué)計(jì)劃編制問題_第2頁
數(shù)據(jù)結(jié)構(gòu)(C++)課程設(shè)計(jì)報(bào)告--教學(xué)計(jì)劃編制問題_第3頁
數(shù)據(jù)結(jié)構(gòu)(C++)課程設(shè)計(jì)報(bào)告--教學(xué)計(jì)劃編制問題_第4頁
數(shù)據(jù)結(jié)構(gòu)(C++)課程設(shè)計(jì)報(bào)告--教學(xué)計(jì)劃編制問題_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.上海電力學(xué)院數(shù)據(jù)結(jié)構(gòu)(C+)課程設(shè)計(jì)題目: 教學(xué)計(jì)劃編制問題 姓 名: 石鑫磊 學(xué) 號(hào): 20113296 院系: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 專業(yè)年級(jí): 信息安全2011級(jí) 2013年07月04日一、設(shè)計(jì)題目大學(xué)的每個(gè)專業(yè)都要編制教學(xué)計(jì)劃。假設(shè)任何專業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)期,每學(xué)期的時(shí)間長度和學(xué)分上限都相等。每個(gè)專業(yè)開設(shè)的課程都是確定的,而且課程的開設(shè)時(shí)間的安排必須滿足先修關(guān)系。每個(gè)課程的先修關(guān)系都是確定的,可以有任意多門,也可以沒有。每一門課程恰好一個(gè)學(xué)期。試在這樣的情況下設(shè)置一個(gè)教學(xué)計(jì)劃編制程序。在大學(xué)的某個(gè)專業(yè)中選取幾個(gè)課程作為頂點(diǎn),通過各門課的先修關(guān)系來構(gòu)建個(gè)圖,該圖用鄰接表

2、來存儲(chǔ),鄰接表的頭結(jié)點(diǎn)存儲(chǔ)每門課的信息。本程序的目的是為用戶編排課程,根據(jù)用戶輸入的信息來編排出每學(xué)期要學(xué)的課程。二、需求分析(一)運(yùn)行環(huán)境(軟、硬件環(huán)境)設(shè)計(jì)環(huán)境和器材硬件:計(jì)算機(jī)軟件:Microsoft Visula C+在本課程設(shè)計(jì)中,系統(tǒng)開發(fā)平臺(tái)為Windows XP或Win 7,程序運(yùn)行環(huán)境為Visual C+ 6.0,程序設(shè)計(jì)語言為C+。Visual C+一般分為三個(gè)版本:學(xué)習(xí)版、專業(yè)版和企業(yè)版,不同版本適合于不同類型的應(yīng)用開發(fā)。實(shí)驗(yàn)中可以使用這三個(gè)版本的任意一種,在本課程設(shè)計(jì)中,以Visual C+ 6.0為編程環(huán)境。Visual C+以擁有“語法高亮”,IntelliSense

3、(自動(dòng)編譯功能)以及高級(jí)除錯(cuò)功能而著稱。比如,它允許用戶進(jìn)行遠(yuǎn)程調(diào)試和單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動(dòng)正在調(diào)試的程序。其編譯及建置系統(tǒng)以預(yù)編譯頭文件、最小重建功能及累加鏈接著稱。這些特征明顯縮短程式編輯、編譯及鏈接的時(shí)間花費(fèi),在大型軟件計(jì)劃上尤其顯著。Visual C+ 6.0秉承Visual C+ 以前版本的優(yōu)異特性,為用戶提供了一套良好的開發(fā)環(huán)境,主要包括文本編輯器、資源編輯器、工程創(chuàng)建工具和Debugger調(diào)試器等等。用戶可以在集成開發(fā)環(huán)境中創(chuàng)建工程,打開工程,建立、打開和編輯文本,編譯、鏈接、運(yùn)行和調(diào)試應(yīng)用程序。(二)輸入的形式和輸入值的范圍數(shù)據(jù)輸

4、入的方式是鍵盤輸入。輸入的數(shù)據(jù)多是整型的或是浮點(diǎn)型的,還有一些字符(以中文的形式)。輸入的數(shù)值型的數(shù)據(jù)大都是小于100的數(shù)值。(三)輸出的形式描述輸出的是教學(xué)編制計(jì)劃,就是形如:“第二學(xué)期學(xué)的課程有:普通物理 線性代數(shù) 匯編語言”這樣的形式。(四)功能描述 輸入?yún)?shù)包括:學(xué)期總數(shù),一學(xué)期的學(xué)分上限,每門課的課程號(hào)(固定占3位的字母數(shù)字串)、學(xué)分和直接先修課的課程號(hào)。允許用戶指定下列兩種編排策略之一:一是使學(xué)生在各學(xué)期中的學(xué)習(xí)負(fù)擔(dān)盡量均勻;二是使課程盡可能地集中在前幾個(gè)學(xué)期中。若根據(jù)給定的條件問題無解,則報(bào)告適當(dāng)?shù)男畔ⅲ环駝t將教學(xué)計(jì)劃輸出到用戶指定的文件中。計(jì)劃的表格格式自行設(shè)計(jì)。(五)測試數(shù)據(jù)

5、學(xué)期總數(shù):6 學(xué)分上限:10該專業(yè)共開設(shè)12門課,課程號(hào)從0112,學(xué)分順序?yàn)?,3,4,2,2,4,4,4,7,5,2,3。三、概要設(shè)計(jì)(一)抽象數(shù)據(jù)類型定義描述(對(duì)各類的成員及成員函數(shù)進(jìn)行抽象描述,參見書或ppt及實(shí)驗(yàn))抽象數(shù)據(jù)類型:為實(shí)現(xiàn)上述功能需建立一個(gè)結(jié)點(diǎn)類,線性表類,圖類。ADT Graph數(shù)據(jù)對(duì)象V:V是具有相同特性的數(shù)據(jù)元素的集合,稱為頂點(diǎn)集.數(shù)據(jù)關(guān)系R:R=VRVR=(v,w)|v,wV,(v,w)表示v和w之間存在直接先修關(guān)系基本操作P:void creatpre(AlGraph *CGraph);void findindegree(AlGraph *CGraph,int

6、indegree);void layout1(AlGraph *CGraph,queue *q);void layout2(AlGraph *CGraph,queue *q);ADT Graph隊(duì)列的定義:ADT List數(shù)據(jù)對(duì)象:D=ai|aiElemSet,i=1,2,n,n>=0數(shù)據(jù)關(guān)系:R1=ai-1 ai|ai-1,aiD,i=2,n基本操作:void queue_init(queue *q);void queue_in(queue *q,int x);int queue_out(queue *q);int queue_empty(queue *q);ADT Stack(二)功

7、能模塊設(shè)計(jì)主程序:void main()int choice;queue q;Queue.queue_init(&q);AlGraph CGraph;CGraph=Graph.input();system("cls");Graph.output(CGraph);cout<<endl<<endl;Judgement.judgingcricle(&CGraph,&q);if(!WhetherCricle)while(1)cout<<"請(qǐng)選擇編排策略:t"<<endl;cout<&l

8、t;"1.使學(xué)生在各學(xué)期中的學(xué)習(xí)負(fù)擔(dān)盡量均勻;t"<<endl;cout<<"2.使課程盡可能地集中在前幾個(gè)學(xué)期中。t"<<endl;cout<<"請(qǐng)選擇:"cin>>choice;system("cls");if(choice=1) Edit.layout1(&CGraph,&q);else Edit.layout2(&CGraph,&q);cout<<"請(qǐng)選擇繼續(xù)編排策略或退出程序(0退出 1繼續(xù))

9、:t"<<endl;cin>>choice;system("cls");if(choice=0)break; (三)模塊層次調(diào)用關(guān)系本程序只有兩個(gè)模塊,調(diào)用關(guān)系簡單主程序模塊拓?fù)渑判蚰KTopSort流程圖:所有頂點(diǎn)是否處理完?將入度為0的頂點(diǎn)入棧是否為空?用數(shù)組OutLes保存每次入棧的入度為0的頂點(diǎn);并進(jìn)行相應(yīng)的調(diào)整。將當(dāng)前結(jié)點(diǎn)的后繼結(jié)點(diǎn)減1輸出課程名稱對(duì)每個(gè)學(xué)期的課程量進(jìn)行控制鄰接表類成員函數(shù)TopSort否是否是運(yùn)行結(jié)束鄰接表構(gòu)造函數(shù)ALGraph初始化頂點(diǎn)表初始化邊表,并在相應(yīng)的邊表中插入結(jié)點(diǎn)結(jié)束運(yùn)行 鄰接表ALGraph的構(gòu)造函

10、數(shù)四、詳細(xì)設(shè)計(jì)教學(xué)計(jì)劃編制系統(tǒng)主要是處理課程之間的依賴關(guān)系。表列出了若干門計(jì)算機(jī)系本科課程,其中有些課程不要求先修課程,例如,C1是獨(dú)立于其他課程的基礎(chǔ)課,而有些課程卻需要有先修課程,比如,學(xué)完程序設(shè)計(jì)語言C+和離散數(shù)學(xué)后才能學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)。課程代號(hào)課程名稱先修課程C1高等數(shù)學(xué)無C2計(jì)算機(jī)科學(xué)導(dǎo)論無C3離散數(shù)學(xué)C1C4程序設(shè)計(jì)語言C+C1、C2C5數(shù)據(jù)結(jié)構(gòu)C3、C4C6計(jì)算機(jī)原理C2、C4C7數(shù)據(jù)庫原理C4、C5、C6先修課程規(guī)定了課程之間的依賴關(guān)系,這種關(guān)系可以用AOV網(wǎng)來表示,其中頂點(diǎn)表示課程,弧表示依賴關(guān)系。C1C7C6C4C5C3C2程序的主要功能是實(shí)現(xiàn)課程的排序,以滿足同一學(xué)期所修的課

11、程相互之間無依賴關(guān)系,并且已修完其所有先修課程。本程序需要基于圖的基本操作來實(shí)現(xiàn)算法的基本思想: 1、圖的構(gòu)建:建立一個(gè)結(jié)點(diǎn)類,類的元素有字符型變量用來存儲(chǔ)字母,整形變量用來存儲(chǔ)位置,該類型的指針,指向下一個(gè)元素。建立一個(gè)線性表類,完成線性表的構(gòu)建。建立一個(gè)圖類,完成圖的信息的讀取,(如有n個(gè)點(diǎn),則建立n個(gè)線性表,將每個(gè)結(jié)點(diǎn)與其指向的結(jié)點(diǎn)組成一個(gè)線性表,并記錄線性表的長度)。2、Topsort算法:先計(jì)算每個(gè)點(diǎn)的入度,保存在數(shù)組中。找到第一個(gè)入度為0的點(diǎn),將該點(diǎn)所連的各點(diǎn)的入度減一。再在這些點(diǎn)中找入度為0 的點(diǎn)。如果找到,重復(fù)上述操作。如果找不到,則跳出while循環(huán),再搜索其他的點(diǎn),看入度是

12、否為0。再重復(fù)上述操作,如果所有的入度為0的點(diǎn)都被尋找到,但個(gè)數(shù)少于輸入頂點(diǎn)的個(gè)數(shù),說明該圖存在環(huán)。3、 鄰接表類的定義鄰接表是一種順序存儲(chǔ)與鏈接存儲(chǔ)相結(jié)合的存儲(chǔ)方法。在鄰接表中存在兩種結(jié)點(diǎn)結(jié)構(gòu):頂點(diǎn)表結(jié)點(diǎn)和邊表結(jié)點(diǎn)。頭結(jié)點(diǎn)表結(jié)點(diǎn) nextarcadjvexfirstarcvex五、調(diào)試分析包括調(diào)試過程中遇到的問題及解決的方法、算法的時(shí)間空間復(fù)雜性分析、經(jīng)驗(yàn)體會(huì)。(一)實(shí)驗(yàn)過程中出現(xiàn)的問題及解決方法我在實(shí)驗(yàn)過程中遇到的最大難題是兩個(gè)課程排序算法的編寫。剛開始的時(shí)候沒有任何的思路,網(wǎng)上也只有拓?fù)渑判虻乃惴ǎ瑢?duì)于課程設(shè)計(jì)要求的排序算法沒有任何頭緒。經(jīng)過請(qǐng)教老師和同學(xué)以及翻閱了一些相關(guān)書籍,并在網(wǎng)上

13、的搜索有了排序算法的大體思路。經(jīng)過三天的修改,終于寫出了符合要求的排序算法。(二)實(shí)驗(yàn)體會(huì)上機(jī)實(shí)踐是學(xué)生對(duì)本門課程所學(xué)知識(shí)的一種全面、綜合的能力訓(xùn)練,是與課堂聽講、自學(xué)和練習(xí)相輔相成必不可少的一個(gè)教學(xué)環(huán)節(jié),也是對(duì)課堂教學(xué)效果的一種檢驗(yàn)。通常,實(shí)習(xí)題中的問題比平時(shí)的習(xí)題復(fù)雜得多,也更接近實(shí)際。實(shí)習(xí)題注重原理與應(yīng)用的結(jié)合,目的讓學(xué)生學(xué)會(huì)如何把書上學(xué)到的知識(shí)運(yùn)用于解決實(shí)際問題的過程中去,培養(yǎng)從事軟件開發(fā)設(shè)計(jì)工作所必需的基本技能。同時(shí),通過實(shí)踐能使書上的知識(shí)變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的作用。平時(shí)的練習(xí)較偏重于如何編寫功能單一的“小”算法,而實(shí)習(xí)題是軟件設(shè)計(jì)的綜合訓(xùn)練,包括問題分析,總體結(jié)

14、構(gòu)設(shè)計(jì),用戶界面設(shè)計(jì),程序設(shè)計(jì)基本技能和技巧,可以多人合作,有利于一整套軟件工程規(guī)范的訓(xùn)練和科學(xué)作風(fēng)的培養(yǎng)。此外,實(shí)踐環(huán)節(jié)中有很重要的一點(diǎn),就是機(jī)器是比任何教師都嚴(yán)格的主考官。經(jīng)過此次課程設(shè)計(jì),我認(rèn)識(shí)到了理論與實(shí)踐結(jié)合的重要性,僅僅只是從課本上學(xué)到算法原理是遠(yuǎn)遠(yuǎn)不夠的。在實(shí)踐中,我們總會(huì)出現(xiàn)許多錯(cuò)誤。這就要求我們以一個(gè)腳踏實(shí)地的態(tài)度來處理問題。我深刻地認(rèn)識(shí)到自己寫程序的不足,使我們學(xué)到了好多有用的知識(shí),讓我們明白了C+語言的語句用法。六、測試結(jié)果要求輸入學(xué)期總數(shù)、一個(gè)學(xué)期的學(xué)分上限、需要編排課程總數(shù)、課程名、課程號(hào)、該課程的學(xué)分,按照出現(xiàn)的每一步來輸入該課程設(shè)計(jì)所提供的相關(guān)數(shù)據(jù)。學(xué)期總數(shù):6;

15、學(xué)分上限:10;該專業(yè)共開設(shè)12門課,課程號(hào)從01到12,學(xué)分順序?yàn)?,3,4,2,2,4,4,4,7,5,2,3。然后還要輸入課程先修課程總數(shù),可以算出有16種關(guān)系,分別輸出。接著程序會(huì)根據(jù)這些數(shù)據(jù),自動(dòng)生成建立好的鄰接表,用戶可以根據(jù)系統(tǒng)顯示的選擇編排策略進(jìn)行選擇,有兩種編排策略,最后結(jié)果體現(xiàn)在實(shí)驗(yàn)的正確測試結(jié)果里。輸入的內(nèi)容如下:課程編號(hào) 課程名稱    學(xué)分    先決條件01     計(jì)算機(jī)基礎(chǔ)      2     

16、; 無02    離散數(shù)學(xué)   3         0103   數(shù)據(jù)結(jié)構(gòu)      4     01,02 04   匯編語言       2        0105   語言的設(shè)計(jì)和分析 2

17、60;       03,04 06  計(jì)算機(jī)原理     4        1007  編譯原理     4      05,03 08  操作系統(tǒng)       4      03,0609  高等數(shù)學(xué)

18、60;      7     無 10  普通物理       5      0911  線性代數(shù)       2         0912  數(shù)值分析       3     

19、09,11,01七 、附錄:程序設(shè)計(jì)源代碼#include<iostream>#include<string>#include<cstdio>#include<cstdlib>using namespace std;#define null 0#define MAX_COURSE_NUM 100/最大課程個(gè)數(shù)typedef struct char c3; cid; /課程號(hào)typedef struct Course cid id3; char name30; float xf; Course;/課程typedef struct PreCourse

20、 int adjvex;struct PreCourse *nextarc; PreCourse;/先修的課程節(jié)點(diǎn)typedef structCourse course;PreCourse *firstarc;CourseNode;/課程節(jié)點(diǎn)typedef structCourseNode coursesMAX_COURSE_NUM;/鄰接表int xqs;int num;float xfsx;AlGraph;/課程圖typedef struct int dataMAX_COURSE_NUM;int f,r;queue;int WhetherCricle=0;int jxq; class Qu

21、euepublic:void queue_init(queue *q);void queue_in(queue *q,int x);int queue_out(queue *q);int queue_empty(queue *q);Queue;void Queue:queue_init(queue *q)/隊(duì)初始化q->f=q->r=0;void Queue:queue_in(queue *q,int x)/入隊(duì)if(q->r+1)%MAX_COURSE_NUM=q->f)cout<<"隊(duì)滿t"<<endl;exit(0);q

22、->r=(q->r+1)%MAX_COURSE_NUM;q->dataq->r=x;int Queue:queue_out(queue *q)/出隊(duì)if(q->f=q->r)cout<<"隊(duì)空t"<<endl;exit(0);q->f=(q->f+1)%MAX_COURSE_NUM;return q->dataq->f;int Queue:queue_empty(queue *q)/隊(duì)判空 1為空if(q->f=q->r)return 1;else return 0;class

23、Graphpublic:AlGraph input();void output(AlGraph CGraph);void creatpre(AlGraph *CGraph);Graph;void Graph:creatpre(AlGraph *CGraph)/建立先修關(guān)系system("cls");int choice;int i,n; int j;PreCourse *p,*q;cout<<endl<<"建立先修關(guān)系:t"<<endl;cout<<endl<<"輸入的每一門課程號(hào)的編

24、號(hào):t"<<endl;for(i=0;i<CGraph->num;i+)if(i%4=0)cout<<endl;cout<<"("<<i+1<<")"/輸入課程的編號(hào)printf("%st",CGraph->coursesi.course.id);cout<<endl;cout<<"n請(qǐng)根據(jù)以上的編號(hào),輸入每一門課程的先修課程號(hào)的編號(hào)(輸入0 表示沒有或結(jié)束):t"<<endl;for(i=0

25、;i<CGraph->num;i+)printf("%s的先修課程:",CGraph->coursesi.course.id);cin>>j;n=0;while(j)/判斷輸入的課程編號(hào)是否正確while(j<1|j>CGraph->num|j=i+1)if(j=i+1)cout<<"先修課程號(hào)不可能是本課程號(hào)n"elsecout<<"輸入的先修課程號(hào)不在該專業(yè)開設(shè)的課程序列中"<<endl;cout<<"請(qǐng)重新輸入:"

26、cin>>j;p=(PreCourse *)malloc(sizeof(PreCourse);p->adjvex=j-1;p->nextarc=null;if(n=0)CGraph->coursesi.firstarc=p;q=CGraph->coursesi.firstarc;n+;elseq->nextarc=p;q=p;n+;cin>>j;cout<<"(1)重新建立先修關(guān)系t"<<"(2)確定n"cout<<"請(qǐng)選擇:"cin>&g

27、t;choice;if(choice=1)creatpre(CGraph);jxq=0;AlGraph Graph:input()/輸入并建立課程圖AlGraph CGraph;int xqzs=0,kczs=0; int i;int choice;float xf,xfsx=0;cout<<"教學(xué)計(jì)劃編制n"<<endl;cout<<"輸入?yún)?shù):n"cout<<"1.學(xué)期總數(shù):"cin>>xqzs;CGraph.xqs=xqzs;cout<<"2.專業(yè)

28、共開設(shè)課程數(shù):"cin>>kczs;CGraph.num=kczs;cout<<"3.學(xué)分上限(每個(gè)學(xué)期的學(xué)分上限都一樣):"cin>>xfsx;CGraph.xfsx=xfsx;cout<<"4.每門課的課程號(hào)(固定占3位的字母數(shù)字串)、課程名、學(xué)分"<<endl;for(i=0;i<kczs;i+)/輸入課程號(hào),課程名,學(xué)分cout<<"課程號(hào):"scanf("%s",CGraph.coursesi.course.id);c

29、out<<"課程名:"scanf("%s",CG);cout<<"學(xué)分:"cin>>xf;cout<<endl;while(xf>xfsx|xf<=0)/判斷輸入的學(xué)分是否合格cout<<"輸入的學(xué)分有誤,請(qǐng)重新輸入學(xué)分:"cin>>xf;CGraph.coursesi.course.xf=xf;CGraph.coursesi.firstarc=null;cout<<&q

30、uot;(1)重新輸入t"<<"(2)確定"<<endl;cout<<"請(qǐng)選擇:"cin>>choice;if(choice=1)system("cls");input();else creatpre(&CGraph);/建立先修關(guān)系return CGraph;void Graph:output(AlGraph CGraph)/輸出先修關(guān)系int i,j,n;PreCourse *p;cout<<"先修關(guān)系如下:n"<<end

31、l;cout<<"課程編號(hào)t"<<"課程名稱t"<<"先決條件"<<endl;for(i=0;i<CGraph.num;i+)printf("%stt%stt",CGraph.coursesi.course.id,CG);j=0;p=CGraph.coursesi.firstarc;while(p)n=p->adjvex;printf(" %s ",CGraph.coursesn.cou

32、rse.id);p=p->nextarc;j+;if(j=0)cout<<" 無"cout<<endl;class Judgementpublic:void findindegree(AlGraph *CGraph,int indegree);void judgingcricle(AlGraph *CGraph,queue *q2);Judgement;void Judgement:findindegree(AlGraph *CGraph,int indegree)int i;PreCourse *p;for(i=0;i<CGraph-&

33、gt;num;i+)indegreei=0;p=CGraph->coursesi.firstarc;while(p)indegreei+;p=p->nextarc;void Judgement:judgingcricle(AlGraph *CGraph,queue *q2)/判斷是否有環(huán)和課程入隊(duì)int indegreeMAX_COURSE_NUM;/入度int i,m,j,pd=0;float xf=0;PreCourse *p;queue q;Queue.queue_init(&q);/隊(duì)初始化findindegree(CGraph,indegree);/找入度for(

34、i=0;i<CGraph->num;i+)if(indegreei=0&&(xf+CGraph->coursesi.course.xf)<=CGraph->xfsx)Queue.queue_in(&q,i);indegreei-;xf+=CGraph->coursesi.course.xf;m=0;xf=0;Queue.queue_in(&q,-1); /把-1入隊(duì) 用來判斷jxq+;while(1)i=Queue.queue_out(&q);Queue.queue_in(q2,i);if(i!=-1)m+;for(j

35、=0;j<CGraph->num;j+)if(j!=i)if(indegreej=0&&(xf+CGraph->coursesj.course.xf)<=CGraph->xfsx)Queue.queue_in(&q,j);indegreej-;xf+=CGraph->coursesj.course.xf;elsep=CGraph->coursesj.firstarc;while(p)if(p->adjvex=i)indegreej-;if(indegreej=0&&(xf+CGraph->course

36、sj.course.xf)<=CGraph->xfsx)Queue.queue_in(&q,j);indegreej-;pd=1;xf+=CGraph->coursesj.course.xf;p=p->nextarc;elseif(pd)pd=0;Queue.queue_in(&q,-1);jxq+;xf=0;else break;if(jxq>CGraph->xqs)cout<<endl<<"錯(cuò)誤報(bào)告:n"<<"在"<<CGraph->xqs<

37、;<"學(xué)期內(nèi)是無法修完這些課程"<<endl;exit(0);if(m<CGraph->num)cout<<"n錯(cuò)誤報(bào)告:"<<endl;cout<<"存在循環(huán),因此課程安排不了"<<endl;WhetherCricle=1;Queue.queue_in(q2,-1);class Editpublic:void layout1(AlGraph *CGraph,queue *q);void layout2(AlGraph *CGraph,queue *q);E

38、dit;void Edit:layout1(AlGraph *CGraph,queue *q)cout<<"n學(xué)生在各學(xué)期中的學(xué)習(xí)負(fù)擔(dān)盡量均勻:n"<<endl;int i,j,k,xq=1,ck20;float xf;float m=CGraph->num/CGraph->xqs*1.0f;queue q1=*q;int n;int x;n=0;ck0=-1;for(i=0;i<20;i+)j=Queue.queue_out(&q1);cki=j;if(j=-1) i-;if(Queue.queue_empty(&q1) break;for(x=0;x<CGraph->xqs;x+)if(ck0!=-1)cout<<"n第"<<xq+<<"學(xué)期學(xué):"xf=0;for(i=0;i<m;i+)k=ckn;printf(" %s ",CGraph->coursesk.course.id);n+;xf+=CGraph->coursesk.course.xf;cout<<"獲得學(xué)分是:"<<xf<<endl;v

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論