要求:程序接收输入的课程总数,专业,以及每个课程的各种信息(课程号,课程名,任课老师名等),课程之间的先修关系,没门课程开始的开课时间。
根据拓扑排序后的课程先修关系进行排刻,使用MFC界面显示排课信息,并使用MFC控件进行查询。

程序没写的不太完善,就以拓扑排序为中心写的。UI界面用的是VS的MFC写的,挺丑的,就不弄上来了。程序总体也就是3个函数,写的挺简单。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <stack>
#define maxn 100
using namespace std;
struct node
{char cno[maxn];  //课程编号char cname[maxn];//课程名称 char tea[maxn];//任课老师 int wtime; //周学时数int ttime; //指定开课学期
};
vector<node> course[maxn];
queue<int> s;
int view[maxn];
int ak[maxn];
int numbera;
void shuru()
{int i,j;//  printf("专业  各学期所开课程数  课程编号  课程名称"//        周学时数 先决条件\n");printf("总课程数:\n");cin>>numbera;node ke;printf("输入每个课程号,课程名,任课老师:\n");for(i=1; i<=numbera; i++) //输入每个课程的信息 {printf("第%d门课:",i);cin>>ke.cno>>ke.cname>>ke.tea;//ke.wtime>>ke.ttime;course[i].push_back(ke);}for(i=1; i<=numbera; i++){printf(" %s的先修课程: \n", course[i][0].cno);string a;cin>>a;while(a[0]!='#'){for(j=1; j<=numbera; j++){if(a==course[j][0].cno)break;}course[i].push_back(course[j][0]);cin>>a;}}
}
void shuchu()
{int i,j;memset(view,0,sizeof(view));printf("每个课程的极其先修课:\n");for(i=1; i<=numbera; i++) printf("%s ",course[i][0].cno);printf("\n");for(i=1; i<=numbera; i++){printf("%s",course[i][0].cno);for(j=1; j<course[i].size(); j++)printf("->%s",course[i][j].cno);cout<<"   "<<course[i].size()-1<<endl;view[i]=course[i].size()-1;}
}
void tuopu()
{int num=1;for (int i=1; i<=numbera; i++)if(view[i]==0){s.push(i);view[i]=-1;}while(!s.empty()){int a=s.front();s.pop();ak[num]=a;num++;//cout<<a<<endl;for(int i=1; i<=numbera; i++){//  printf("course[%d][0].cno=%s\n",a,course[a][0].cno);for(int j=1; j<course[i].size(); j++){//  printf("course[%d][%d].cno=%s\n",i,j,course[i][j].cno);string a1=course[i][j].cno;string a2=course[a][0].cno;if(a1==a2){view[i]--;}}}for(int i=1; i<=numbera; i++)if(view[i]==0){s.push(i);view[i]=-1;}}printf("排课顺序:\n");printf("课程号    课程名    授课老师\n");for(int i=1; i<=numbera; i++){cout<<course[ak[i]][0].cno<<"    "<<course[ak[i]][0].cname<<"    "<<course[ak[i]][0].tea<<endl;}}int main()
{freopen("1.txt","r",stdin);shuru();shuchu();tuopu();return 0;
}

freopen内容

12
c1 课程设计基础 teacherA
c2 离散数学 teacherB
c3 数据结构 teacherC
c4 汇编语言 teacherD
c5 语言的设计和分析 teacherE
c6 计算机原理 teacher12F
c7 编译原理 teacherG
c8 操作系统 teacherH
c9 高等数学 teacherI
c10 线性代数 teacherJ
c11 普通物理 teacherK
c12 数值分析 teacherL
#
c1 #
c1 c2 #
c1 #
c3 #
c11 #
c5 c3 #
c3 c6 #
#
c9 #
c9 #
c9 c10 c1 #

结果(多余的输出自己看情况修改)

排课顺序:
课程号    课程名    授课老师
c1    课程设计基础    teacherA
c9    高等数学    teacherI
c2    离散数学    teacherB
c4    汇编语言    teacherD
c10    线性代数    teacherJ
c11    普通物理    teacherK
c3    数据结构    teacherC
c12    数值分析    teacherL
c6    计算机原理    teacher12F
c5    语言的设计和分析    teacherE
c8    操作系统    teacherH
c7    编译原理    teacherG

排课软件(拓扑排序)相关推荐

  1. 团队-排课软件-项目总结

    项目名称:排课软件 软件用途:辅助北软排课老师排课 主要功能:一.信息录入 1)教师(所有任课教师姓名,部门) 2)学生(以班为单位录入学生人数) 3)教室机房:计算机系教室(普通),教室(多媒体), ...

  2. 《团队-排课软件-项目总结》

    项目名称:排课软件 软件用途:辅助教师老师排课 主要功能: 一.信息录入 1)教师(所有任课教师姓名,部门) 2)学生(以班为单位录入学生人数) 3)教室机房:计算机系教室(普通),教室(多媒体),机 ...

  3. 陈老师排课软件12A(正式版)

    陈老师排课软件12A版是12.0的加强版,输入人事安排表更加简单方便,适合于小学.初中.普高.职高.大中专院校的教务排课.  一.新课表排课流程 1.将<原始分布>中的各科目与对应的任课教 ...

  4. element ui 排课_新高考走班排课软件哪家最好?

    展开全部 相信你也了e5a48de588b63231313335323631343130323136353331333433643130解过很多的新高考排课软件解决走班问题 新高考模式下有些学校走班, ...

  5. c语言贪心算法排课,*排课软件常用算法介绍*兴文排课*学校经常用的免费自动排课软件...

    将需要求解的课表问题逐层分解,直到得到一个最小单元的不可在分解.可以直接求出答案的子问题.分解出来的所有子问题按层次关系构成一颗子问题树.树根是课程表问题.课程表问题的解依赖于子问题树中所有子问题的解 ...

  6. 陈老师排课软件12A的功能介绍及历史版本

    陈老师排课软件12A版是把传统手工(利用磁牌在铁质黑板上排课)排课.调课的方法,全部写成自动排课<课时智能分布>和<一健排课>两个VB程序,再配以EXCEL课表自动打印系统,是 ...

  7. 团队-排课软件-成员简介及分工

    姓名:阎大为 团队编程项目:排课软件 擅长技能:C#,python 分工:目前正在做前台界面和部分功能 转载于:https://www.cnblogs.com/iYdw/p/7488113.html

  8. 一款没有排课算法的《陈老师排课软件》

    一.当前流行的排课软件都是采用排课算法进行排课 有排课算法的软件大致排课流程: 1.设置每天上午.下午的排课节数,一个周期的上课的天数,一般是分别是五.六.七天. 2.设置开课的班级号.班级数.学校名 ...

  9. 团队-排课软件-需求分析

    课表编排工具需求说明 1.院例信息的录入 根据教务处提供的院例,将法定假日及某些特殊不上课的日期信息录入系统,可以手动去选择那些时间不上课(包括节数),选择后,排课计划中不允许使用此时间. 2.使用资 ...

最新文章

  1. swift_035(Swift之第三方库Kingfisher篇)
  2. LINUX 硬链接与软链接的区别
  3. Win 7 RC版即将发布 新功能提前爆料
  4. 1.16 字符串的加密解密
  5. 【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决
  6. ufs2.0测试软件,【玩机组教程】让你的一加3/3T的ufs2.0闪存速度焕发新生
  7. Latex设置字体大小
  8. mysql 两张表差集_mysql中两张表使用left join on 求差集详解
  9. Source Insight下载及注册码
  10. 在matlab中如何构建加权邻接矩阵,如何构建图像的加权邻接矩阵
  11. 解决editormd不能显示emoji问题
  12. 安卓手机格式化怎么弄_安卓手机怎么格式化
  13. 修复Pubwin EP置疑数据库
  14. h5页面跳转关注公众号
  15. 宜搭产品生态伙伴政策——宜搭:高效的低代码应用构建平台
  16. redis:redis的底层数据结构
  17. 随机点名器(java基础)
  18. DPark安装及相关资料整理
  19. 无基础的人如何唱好歌、三分钟让你快速学会唱歌技巧
  20. css3入门到实战教程-孙琪峥-专题视频课程

热门文章

  1. Matlab:plot函数绘制二维折线图
  2. knn的python代码_《机器学习实战》之一:knn(python代码)
  3. linux 字体文件 宋体,Linux安装中文字体_宋体
  4. 计算机组成原理:浮点数的加、减、乘、除运算(含实例完整运算)
  5. 服务器 不支持opengl,我可以在无头服务器上运行GLU(OpenGL)吗?
  6. 【Elasticsearch系列】文档的基本操作
  7. sap各模块介绍 SAP模块顺口溜, 帮你对SAP有个大致的了解
  8. 嵩天Python123练习2-绘制风轮
  9. Mac终端添加ll、la、l命令
  10. 抽象类作为接口使用的DLL实现方法