⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 大作业排课.cpp

📁 简易教学任务安排 假设有n门课程需要n个教师去授课
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	j=n%10;//表示输出i行个元素后还有j个没有输出

	i=(n-j)/10;//表示D[n]可以输出i行

		cout<<"┏━━━━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┓"<<endl;
		cout<<"┃老师编号";for(k=0;k<10;k++,m++)cout_t(m); cout<<"┃"<<endl;
		cout<<"┠────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┨"<<endl;
		cout<<"┃所教课程";for(k=0;k<10;k++,s++)cout_s(s,D);cout<<"┃"<<endl;
		i--;

	while(i!=0) {//输出表中间部分
		cout<<"┠────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┨"<<endl;
		cout<<"┃老师编号";for(k=0;k<10;k++,m++)cout<<"│"<<m; cout<<"┃"<<endl;
		cout<<"┠────┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┨"<<endl;
		cout<<"┃所教课程";for(k=0;k<10;k++,s++)cout_s(s,D);cout<<"┃"<<endl;
		i--;
	}//while
	if(j==0)
		cout<<"┗━━━━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┛"<<endl;//输出表尾

		else {
		cout<<"┠────";for(k=0;k<=j;k++)cout<<"┼─";for(;k<10;k++)cout<<"┴─";cout<<"┨"<<endl;
		cout<<"┃老师编号";for(k=0;k<j;k++,m++)cout<<"│"<<m; cout<<"│";cout<<setw((10-k)*4);cout<<"┃"<<endl;
		cout<<"┠────";for(k=0;k<j;k++)cout<<"┼─";cout<<"┤";cout<<setw((10-k)*4);cout<<"┃"<<endl;
		cout<<"┃所教课程";for(k=0;k<j;k++,s++)cout_s(s,D);cout<<"│";cout<<setw((10-k)*4);cout<<"┃"<<endl;
		cout<<"┗━━━━";for(k=0;k<=j;k++)cout<<"┷━";for(;k<10;k++)cout<<"━━";cout<<"┛"<<endl;;
		}//else

	}//if
	else {
		cout<<"┏━━━━";for(k=0;k<n;k++)cout<<"┯━";cout<<"┓"<<endl;
		cout<<"┃老师编号";for(k=0;k<n;k++,m++)cout_t(m); cout<<"┃"<<endl;
		cout<<"┠────";for(k=0;k<n;k++)cout<<"┼─";cout<<"┨"<<endl;
		cout<<"┃所教课程";for(k=0;k<n;k++,s++)cout_s(s,D);cout<<"┃"<<endl;
		cout<<"┗━━━━";for(k=0;k<n;k++)cout<<"┷━";cout<<"┛"<<endl;
	}//else
}

///////////////查看已经安排的教学任务——陈振锋/////////////////////
void print_screen(int D[],int n) {//分屏输出所有元素
	int i=1;//因为D[0]没有放内容,所以从D[1]开始输出,输出D[1]至D[n]
	system("cls");
	while(n>50) {//每输出50个记录暂停一次,按任意键继续
		print_list(D,i,50);//输出D[1]~D[50]或D[51]~D[99]
		n-=50;
		i+=50;
		system("pause");
		system("cls");
	}//while
	if(n!=0) {
		print_list(D,i,n);
		system("pause");
		system("cls");
	}//if
	else return;
}//print_screen

void print_segment(int D[],int n) {//分段输出
	int f,l;
	system("cls");
	while(1) {
		cout<<"请输入第一个老师的编号(1~"<<n<<"):";
		while(1) {//检查输入
			cin>>f;
			if(f<=0||f>n)cout<<"老师编号超出范围,请重新输入老师的编号:";
			else break;
		}//while

		cout<<"请输入要输出的记录的个数:";
		cin>>l;
		if(f+l-1>n)cout<<"输入大于记录总数,请重新输入"<<endl;
		else break;
	}
	system("cls");
	while(l>50) {//每输出50个记录暂停一次,按任意键继续
		print_list(D,f,50);//输出D[f]至D[f+49]
		l-=50;
		f+=50;
		system("pause");
		system("cls");
	}//while
	if(l!=0) {
		print_list(D,f,l);
		system("pause");
		system("cls");
	}//if
	system("cls");
	return;
}

void print_single(int D[],int n) {//单个输出
	int m;
	system("cls");

	cout<<"请输入要输出的记录老师的编号(1~"<<n<<"):";
	while(1) {//检查输入
		cin>>m;
		if(m<=0||m>n)cout<<"老师编号超出范围,请重新输入老师的编号:";
		else break;
	}//while

	system("cls");
	print_list(D,m,1);//输出D[m]
	system("pause");//按任意键继续
	system("cls");//回到主函数前清屏
	return;
}

////////////////陈振锋///////////////////////
void display(MGraph &G,int n)
{
	int c=0;//c选择用

	while(1)
	{
        
        cout<<"        ┏━━━━━━━━━━━━┓            "<<endl;
        cout<<"┏━━━━━┫   请选择要查看的内容   ┣━━━━━┓"<<endl;
        cout<<"┃       ┗━━━━━━━━━━━━┛     ┃"<<endl;
        cout<<"┃ 1 -----分屏输出            2 -----分段输出     ┃"<<endl;
        cout<<"┃ 3 -----单个输出            0 -----返回上级     ┃"<<endl;
        cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;
	
	if(c>3||c<0)cout<<"输入错误,请重新输入: ";
	else cout<<"请选择: ";
	cin>>c;
	switch(c)
	{
	case 1 : print_screen(G.D,n);break;
	case 2 : print_segment(G.D,n);break;
	case 3 : print_single(G.D,n);break;
	case 0 : return;
	default  : system ("cls"); 
	}

	}

}

//////////////主函数——胡磊////////////////
void main()
{
	MGraph G;int k[max],i=0, n=0,w=0,a=0,b=0;//n 用来表示科目数 w 检查是否科目数设定   i 检查是否专长课程设定  a检查是否课程安排
	char cx,ch;


	while(1)
	{
		

        cout<<" ┏━━━━━━━━欢迎进入教学任务安排系统━━━━━━━━┓"<<endl;
		cout<<" §                                                        §"<<endl;
		cout<<" § 1 -----确定科目数            2 -----教师专长课程设定   §"<<endl;
		cout<<" § 3 -----课程安排              4 -----教师专长浏览       §"<<endl;
		cout<<" § 5 -----教师专长课程修改      6------查看教学任务安排   §"<<endl;
		cout<<" § 0 -----退出系统                                        §"<<endl;
		cout<<" └────────────────────────────┘"<<endl;

		cout<<" 请选择功能  "<<ends;  cin>>ch;
		cout<<endl;
		switch(ch)
		{
			
		case '1': { 
			if (!w){ w=creat(G,k, n,b); ;break; } //初始化
			else {
				cout<<"你已经确定了课程数 ,是否要从新确定(是:Y/y   否:其余键 )";cin>>cx;
				
				if(cx=='Y'||cx=='y')  { w=creat(G,k, n,b); a=0;i=0;}
				
			    break; 
				
			}
			
				}


		case '2': {
			if (!w)  {cout<<"教师专长课程设定前,请先确定科目数!"<<endl<<endl;break;}
           T:cout<<" *  0:不安排      "<<endl;
         	cout<<" *  1:手动安排    "<<endl;
			cout<<" *  2:随机安排    "<<endl<<endl;
		 	cout<<"选择安排方式:";
			cin>>ch;
			if(ch=='0')break;
			if(ch=='2'){	
				sjcount(G,n,k);  a=0;  i=1;
				cout<<"生成完毕"<<endl;
				break; 
			} 
			
			if(ch=='1'){
				if(i){
					
					cout<<"你已经教师专长课程设定 ,是否要从新设定(是:Y/y   否:其余键 )";cin>>cx;
					
					if(cx=='Y'||cx=='y') 
					{ creat(G,k,n,b);i=techer_speciality(G,  n); a=0; break;} //先用creat(G,k,n,b)初始化 G.[n]=0
					
					else break;
				}
				
				else i=techer_speciality(G,  n);//if(i)之前没有设定
				break;
				
			}
			 goto T;
				  
  

		case '3':	{  
			if (!w)cout<<"课程安排前,请先确定科目数!"<<endl<<endl;
			else if(!i)cout<<"课程安排前,请先教师专长课程设定!"<<endl;
			else {anpai(G,k,n); a=1; 	cout<<"教师专长课程安排成功!"<<endl; }
			   break;
			}
		
		case '4': {
			if (!w)  cout<<"教师专长浏览前,请先确定科目数和 教师专长课程设定!"<<endl<<endl;
			else if(!i)cout<<"教师专长浏览前,请先教师专长课程设定!"<<endl;
			else list(G, n);//教师专长浏览函数
				break;
			
			 }

		case '5':{
			if (!w)  cout<<"教师专长课程修改前,请先确定科目数!"<<endl;
			else if(!i)cout<<"教师专长课程修改前,请先教师专长课程设定!"<<endl;//教师专长课程修改函数
			else   {edit(G, n,k) ; a=0;}//修改函数
				break;
				 	 
				 }


		case'6':{
			if (!w)  cout<<"查看教学任务安排前,请先确定科目数!"<<endl<<endl; 

		     else if(!i)cout<<"查看教学任务安排前,请先教师专长课程设定!"<<endl;//查看教学任务安排函数
				else if (!a)cout<<"查看教学任务安排前,请先选择课程安排!"<<endl;
				else  display(G, n) ;//查看教学任务安排函数;
					break;
				
				}
		case '0': {
			cout<<" ************************************************************  "<<endl;
			cout<<" * * * * * * * * * * *  谢谢使用  * * * * * * * * * * * * * *"<<endl;
			cout<<" ************************************************************"<<endl;
			return;
				}
		default:    system("cls"); cout<<"选择错误,重新选择功能!"<<endl<<endl; break; 
			
			
			
		}
		
	}
}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -