📄 大作业排课.cpp
字号:
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 + -