-
大小: 193KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-10
- 語言: 其他
- 標簽: 數(shù)據(jù)結構??
資源簡介
任務:大學的每個專業(yè)都要制定教學計劃。假設任何專業(yè)都有固定的學習年限,每學年含兩學期,每學期的時間長度和學分上限值均相等,每個專業(yè)開設的課程都是確定的,而且課程在開設時間的安排必須滿足先修關系。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒有。每門課恰好占一個學期。試在這樣的前提下設計一個教學計劃編制程序。
目標:(1)輸入?yún)?shù)包括:學期總數(shù),一學期的學分上限,每門課的課程號(固定占3位的字母數(shù)字串)、學分和直接先修課的課程號。
(2)允許用戶指定下列兩種編排策略之一:一是使學生在各學期中的學習負擔盡量均勻;二是使課程盡可能地集中在前幾個學期中。
(3)若根據(jù)給定的條件問題無解,則報告適當?shù)男畔ⅲ环駝t將教學計劃輸出到用戶指定的文件中。計劃的表格格式自行設計。

代碼片段和文件信息
#include
#include
#define?null?0
#define?MAXNODE?64 //最大課程個數(shù)
typedef?struct???
?{
char?c[3];
?}cid; ?//課程號
typedef?struct?Course??
?{??
???cid?id[3]; //課程號
???char?name[30]; //課程名
???float??xf; //學分
?}Course; //課程
typedef?struct?PreCourse????????
{
int?adjvex; //課程在數(shù)組中的下標
struct??PreCourse?*pre; ?//指向下一先修的課程節(jié)點
}PreCourse; //先修的課程節(jié)點
typedef?struct
{
Course?course; //課程
PreCourse?*firstnext; //指向第一個先修的課程節(jié)點
}CourseNode; //課程節(jié)點
typedef?struct
{
CourseNode?courses[MAXNODE]; //鄰接表
int?xqs; //學期總數(shù)
int?num; //課程的數(shù)目
float?xfsx; //學分上限
}AlGraph; //課程圖
typedef?struct?
{
int?data[MAXNODE]; //隊中元素
int?fr; //隊頭r???隊尾f
}queue;
int?IsCricle=0; //判斷是否環(huán)??1表示是???0表示不是
int?jxq; //用于計算學期的
?
void?queueinit(queue?*q) //隊初始化
{
q->f=q->r=0;
}
void?queuein(queue?*qint?x) //入隊
{
if((q->r+1)%MAXNODE==q->f)
{
printf(“隊滿\n“);
exit(0);
}
q->r=(q->r+1)%MAXNODE;
q->data[q->r]=x;
}
int?queueout(queue?*q) //出隊
{
if(q->f==q->r)
{
printf(“隊空\n“);
exit(0);
}
q->f=(q->f+1)%MAXNODE;
return?q->data[q->f];
}
int?queueempty(queue?*q) //隊判空?1為空
{
if(q->f==q->r)
return?1;
else?return?0;
}
void?creatpre(AlGraph?*CGraph) //建立先修關系
{
system(“cls“); //用來清屏
int?choice;
fflush(stdin); //清空輸入流
int?in; //臨時變量?
int?j;
PreCourse?*p*q; //臨時變量
printf(“\n建立先修關系:\n“);
printf(“\n輸入的每一門課程號的編號:“);
for(i=0;inum;i++)
{
if(i%4==0)printf(“\n“);
printf(“%d)?“i+1); //輸入課程的編號
printf(“%s\t“CGraph->courses[i].course.id);
}
printf(“\n請根據(jù)以上的編號,輸入每一門課程的先修課程號的編號(輸入0?表示沒有或結束):\n“);
for(i=0;inum;i++)
{
printf(“%s的先修課程:“CGraph->courses[i].course.id);
scanf(“%d“&j);
n=0;
while(j) //判斷輸入的課程編號是否正確
{
while(j<1||j>CGraph->num||j==i+1)
{
if(j==i+1)
printf(“先修課程號不能是本課程號“);
else
printf(“輸入的先修課程號不在該專業(yè)開設的課程序列中“);
fflush(stdin); //清空輸入流
printf(“重新輸入:“);
scanf(“%d“&j);
}
p=(PreCourse?*)malloc(sizeof(PreCourse)); //申請結點
p->adjvex=j-1;
p->pre=null;
if(n==0)
{
CGraph->courses[i].firstnext=p;
q=CGraph->courses[i].firstnext;
n++;
}
else
{
q->pre=p;
q=p;
n++;
}
scanf(“%d“&j);
}
}
printf(“?1)重新建立先修關系????????2)確定\n“);
printf(“請選擇:“);
scanf(“%d“&choice);
if(choice==1)
creatpre(CGraph);
jxq=0;
}
AlGraph?input() //輸入并建立課程圖
{
AlGraph?CGraph;
int?xqzs=0kczs=0; //學期總數(shù):xqzs?????專業(yè)共開設課程數(shù):kczs
int?ij;
int?choice;
float?xfxfsx=0; // 學分上限:xfsx
printf(“教學計劃編制\n\n“);
printf(“輸入?yún)?shù):\n“);
printf(“1、學期總數(shù):“);
scanf(“%d“&xqzs);
CGraph.xqs=xqzs;
printf(“2、專業(yè)共開設課程數(shù):“);
scanf(“%d“&kczs);
CGraph.num=kczs; //課程數(shù)
printf(“3、學分上限(每個學期的學分上限都一樣):“);
scanf(“%f“&xfsx);
CGra
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????13832??2010-12-04?14:05??教學計劃編制\Debug\BuildLog.htm
?????文件??????38165??2010-12-04?14:05??教學計劃編制\Debug\jj.obj
?????文件??????53248??2010-12-04?14:05??教學計劃編制\Debug\jjj.exe
?????文件????????388??2010-12-04?14:05??教學計劃編制\Debug\jjj.exe.intermediate.manifest
?????文件?????321856??2010-12-04?14:05??教學計劃編制\Debug\jjj.ilk
?????文件?????281600??2010-12-04?14:05??教學計劃編制\Debug\jjj.pdb
?????文件?????????65??2010-12-04?14:05??教學計劃編制\Debug\mt.dep
?????文件??????44032??2010-12-04?14:05??教學計劃編制\Debug\vc80.idb
?????文件??????61440??2010-12-04?14:05??教學計劃編制\Debug\vc80.pdb
?????文件???????9108??2010-12-04?16:45??教學計劃編制\jj.cpp
?????文件?????560128??2010-12-04?16:45??教學計劃編制\jjj.ncb
?????文件????????870??2010-11-07?17:06??教學計劃編制\jjj.sln
????..A..H.??????9216??2010-12-04?16:45??教學計劃編制\jjj.suo
?????文件???????3682??2010-11-07?17:07??教學計劃編制\jjj.vcproj
?????文件???????1409??2010-12-04?16:45??教學計劃編制\jjj.vcproj.TFW-PC.Ashu.user
?????目錄??????????0??2011-09-10?09:39??教學計劃編制\Debug
?????目錄??????????0??2012-08-16?10:41??教學計劃編制
-----------?---------??----------?-----??----
??????????????1399039????????????????????17
- 上一篇:Refactoring To Patterns
- 下一篇:addpass.exe
評論
共有 條評論