1 #include<bits/stdc++.h> 2 #include<windows.h> 3 #include<conio.h> 4 #include "mmsystem.h"//导入声音头文件 5 #pragma comment(lib,"winmm.lib")//导入声音头文件库 6 // 0 = 黑色 8 = 灰色 7 // 1 = 蓝色 9 = 淡蓝色 8 // 2 = 绿色 A = 淡绿色 9 // 3 = 浅绿色 B = 淡浅绿色 10 // 4 = 红色 C = 淡红色 11 // 5 = 紫色 D = 淡紫色 12 // 6 = 黄色 E = 淡黄色 13 // 7 = 白色 F = 亮白色 14 // 10= 亮绿 15 // 12= 亮红 16 // 控制台前景颜色 17 struct Room 18 { 19 int cap; 20 int c[7][4]; 21 }room[200]; 22 char *sub[]={"无 ","高等数学","英语 ","c语言 ","思修 "}; 23 char *cou[]={"无","高等数学","英语","c语言","思修"}; 24 void set_position(int x,int y,int n,int m)//重置窗口大小 25 { 26 HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE); 27 SMALL_RECT rc = {x,y,n, m}; // 重置窗口位置和大小 28 SetConsoleWindowInfo(hout,true ,&rc); 29 } 30 void hide()//隐藏光标 31 { 32 HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE); 33 CONSOLE_CURSOR_INFO x={1,0}; 34 SetConsoleCursorInfo(hout, &x); 35 } 36 37 void change_color(int a, int b)//设置颜色,a为字体颜色,b为背景色 38 { 39 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); 40 SetConsoleTextAttribute(handle, a | b); 41 } 42 using namespace std; 43 void read(int &x,int &pd)//读入整数X,读到了整数pd为1,否则为0 44 { 45 int fh=1;pd=0; 46 char c;x=0; 47 while(!isdigit(c=getchar())&&c!='-'&&c!=' '&&c!=EOF); 48 if (c=='-'){fh=-1;c=getchar();} 49 while(isdigit(c))x=x*10+c-'0',c=getchar(),pd=1; 50 x*=fh; 51 } 52 void gotoxy(int x,int y)//指定位置输出 53 { 54 COORD pos; 55 pos.X=x; 56 pos.Y=y; 57 //CONSOLE_SCREEN_BUFFER_INFO csbiInfo; 58 HANDLE h; 59 h= GetStdHandle(STD_OUTPUT_HANDLE); 60 SetConsoleCursorPosition(h,pos); 61 } 62 void play(char *s,int delay)//延时输出字符数组 63 { 64 int len=strlen(s); 65 clock_t start,pause; 66 start=clock(); 67 for(int i=0;i<len;) 68 { 69 if((pause=clock())-start>=delay) 70 { 71 printf("%c",s[i++]); 72 //cout<<s[i++]; 73 start=pause; 74 } 75 } 76 } 77 void ssplay(int x,int y,char *s,int cnt )//在(x,y)输出s,闪烁cnt次 78 { 79 char *ss=" "; 80 for(int i=1;i<=cnt;i++) 81 { 82 gotoxy(x,y); play(ss,0); 83 Sleep(100); 84 gotoxy(x,y); play(s,0); 85 Sleep(100); 86 87 } 88 } 89 void hx_char(char *s,int x,int y,int n,int m,int xx,int yy,int delay)//回形输出,起点(x,y),终点(xx,yy),长为m,高为n 90 { 91 int lx[4]={1,0,-1,0}; 92 int ly[4]={0,1,0,-1}; 93 bool f[300][300]; 94 memset(f,0,sizeof(f)); 95 int i=x,j=y,k=0; 96 gotoxy(i,j);play(s,delay); f[i][j]=1; 97 while(i!=xx||j!=yy) 98 { 99 while(f[lx[k]+i][ly[k]+j]==1||lx[k]+i>=x+m||lx[k]+i<x||ly[k]+j>=y+n||ly[k]+j<y)k=(k+1)%4; 100 i+=lx[k]; j+=ly[k]; 101 f[i][j]=1; 102 gotoxy(i,j); 103 play(s,delay); 104 //gotoxy(x+2,y+20); 105 //printf("%d %d %d %d %d %d ",i,j,k,xx,yy,f[i+lx[k]][j+ly[k]]); 106 } 107 } 108 void hx_string(char s[][120],int x,int y,int n,int m,int xx,int yy,int delay)//回形输出,起点(x,y),终点(xx,yy),长为m,高为n,宣告报废 109 { 110 int lx[4]={2,0,-2,0}; 111 int ly[4]={0,1,0,-1}; 112 bool f[300][300]; 113 memset(f,0,sizeof(f)); 114 int i=x,j=y,k=0; 115 char ss[]={"a"};ss[0]=s[i][j]; 116 gotoxy(i,j);play(ss,delay); f[i][j]=1; 117 while(i!=xx||j!=yy) 118 { 119 while(f[lx[k]+i][ly[k]+j]==1||lx[k]+i>=x+m||lx[k]+i<x||ly[k]+j>=y+n||ly[k]+j<y)k=(k+1)%4; 120 i+=lx[k]; j+=ly[k]; 121 f[i][j]=1; 122 if (k==0){gotoxy(i,j);printf("%c%c",s[j][i],s[j][i+1]);} 123 if (k==2){gotoxy(i-1,j);printf("%c%c",s[j][i-1],s[j][i]);} 124 if (k==1||k==3){gotoxy(i,j);printf("%c",s[j][i]);} 125 Sleep(delay); 126 //gotoxy(i,j); ss[0]=s[j][i]; play(ss,delay); 127 //gotoxy(x+2,y+20); 128 //printf("%d %d %d %d %d %d ",i,j,k,xx,yy,f[i+lx[k]][j+ly[k]]); 129 } 130 } 131 void start_concole()//加载动画 132 { 133 char *s[4]={"<欢迎来到教室信息管理系统>","制作人: 孟强定, 任梦石, 麦麦提, 吴凡, 李嘉璐","希望你能喜欢!!!!!!!!!!!!","如果不喜欢请按alt+F4"}; 134 gotoxy(45,4);change_color(10,0);play(s[0],20); 135 change_color(8,0);hx_char("*",20,5,14,75,20,6,10); 136 change_color(11,0); 137 gotoxy(25,7);play(s[1],20); 138 gotoxy(25,9);play(s[2],20); 139 gotoxy(25,11);play(s[3],20); 140 change_color(1,192);gotoxy(50,13);printf("加载中");for(int i=1;i<=2;i++){gotoxy(56,13);printf(" ");play(". . . . .",250);gotoxy(56,13);play(" ",250);} 141 } 142 void clear()//清空控制台 143 { 144 change_color(7,0); 145 system("cls"); 146 } 147 void main_menu()//宣告报废 148 { 149 char *ss={"a"}; 150 char s[30][120]={}; 151 FILE *fin=fopen("main_menu.in","rb"); 152 int j=0; 153 for(int i=0;i<19;i++) 154 { 155 //while(j<97)s[i][j++]=fgetc(fin); 156 while((s[i][j]=fgetc(fin))!=' ') {/*if (s[i][j]=='*'){printf("%d %d ",i,j);Sleep(1000);}*/j++;} 157 //printf("%d %d %s ",i,strlen(s[i]),s[i]); 158 //printf("%s",s[i]); 159 j=0; 160 } 161 fclose(fin); 162 for(int i=0;i<19;i++) 163 for(int j=0;j<strlen(s[i]);j+=2) 164 { 165 gotoxy(j,i); 166 //printf("%d %d ",i,j); 167 //if (s[i][j]=' ')printf("@"); 168 printf("%c%c",s[i][j],s[i][j+1]); 169 //if (j>=strlen(s[i])-3) 170 //printf("%d",strlen(s[i])); 171 //ss[0]=s[i][j]; 172 //play(ss,50); 173 //Sleep(20); 174 } 175 //printf("%c %c ",s[19][4],s[20][5]); 176 177 //hx_string(s,20,5,) 178 int xx=26,yy=11,n=2,m=63,x=20,y=5; 179 while(xx!=x-1||yy!=y-1) 180 { 181 //hx_char("*",xx,yy,n,m,xx,yy+1,0); 182 hx_string(s,xx,yy,n,m,xx,yy+1,0); 183 Sleep(200); 184 xx--; yy--; 185 n+=2; m+=2; 186 } 187 } 188 void menu_concole()//菜单信息 189 { 190 char *s[10]={"初始化 ","教室信息管理 ","课程信息管理 ","教室分配 ","退出 ","关机 "}; 191 gotoxy(0,0); 192 change_color(10,0);gotoxy(53,4); printf("功能菜单"); 193 change_color(8,16);hx_char("*",20,6,14,75,20,7,0); 194 int j=0; 195 for(int i=8;i<=18;i+=2) 196 { 197 gotoxy(42,i); 198 change_color(12,0);printf("%s",s[j++]); 199 change_color(7,0);printf(" 请按%d",j); 200 } 201 202 } 203 204 void water_end()//过场动画 205 { 206 change_color(8,0); 207 for(int i=17,j=2,n=20,m=81;n+2&&m+2;i++,j++,n-=2,m-=2) 208 { 209 //printf("%d ",n); 210 hx_char(" ",i-1,j-1,n+2,m+2,i-1,j,0); 211 if (m==0||n==0)return ; 212 hx_char("*",i,j,n,m,i,j+1,0); 213 Sleep(40); 214 } 215 Sleep(500); 216 } 217 void water_begin()//暂时不用的过场动画 218 { 219 220 //menu_concole(); 221 int x=20, y=5,xx=26,yy=12,n=14,m=75; 222 int i=xx,j=yy; 223 while(i!=x||j!=y+1) 224 { 225 //menu_concole(); 226 //clear(); 227 if (i%2==0) hx_char("|",x,y,n,m,i,j,1); 228 else hx_char("-",x,y,n,m,i,j,1); 229 Sleep(100); 230 i--;j--; 231 } 232 printf("!!!!"); 233 } 234 void end()//结束动画 235 { 236 //system("cls"); 237 water_end(); 238 change_color(1,112); 239 gotoxy(50,8); printf("欢迎下次再来 !!"); 240 gotoxy(50,11); printf("按任意键关闭窗口"); 241 gotoxy(50,16); 242 change_color(0,0); 243 exit(0); 244 } 245 void initialize()//初始化 246 { 247 FILE *fp=fopen("classroom.txt","w"); 248 clear(); 249 for(int i=1;i<=50;i++) 250 { 251 room[i].cap=60; 252 for(int j=1;j<=5;j++) 253 for(int k=1;k<=4;k++) 254 room[i].c[j][k]=rand()%5,fprintf(fp,"%d%c",room[i].c[j][k],k==4?' ':' '); 255 } 256 fclose(fp); 257 change_color(1,192);gotoxy(42,13);printf("初始化中请等待");for(int i=1;i<=2;i++){gotoxy(56,13);printf(" ");play(". . . . .",250);gotoxy(56,13);play(" ",250);} 258 clear(); 259 change_color(12,0);ssplay(47,13,"---初始化成功---",2); 260 Sleep(500); 261 } 262 void display_room_info(int num,int pd)// 教室信息展示 263 { 264 //printf("!!! %d !!!!",room[nu].c[j][i]); 265 clear(); 266 change_color(8,16);hx_char("*",18,5,14,77,18,6,0); 267 char *s[]={"星期","一","二","三","四","五"}; 268 int x=25,y=4; 269 gotoxy(x-6,y); change_color(10,0);printf("1-%d教室:",num); 270 y+=2; 271 gotoxy(x,y); change_color(11,0); 272 printf("%s ",s[0]); 273 for(int i=1;i<=4;i++)printf("%s ",s[i]); 274 printf("%s",s[5]); 275 x-=6;y+=2;gotoxy(x,y);printf("节次"); 276 for(int i=1;i<=4;i++) 277 for(int j=1;j<=5;j++) 278 { 279 if (j==1){change_color(11,0);y+=2;gotoxy(x,y);printf(" %d ",i);} 280 change_color(7,0);printf("%s",sub[room[num].c[j][i]]); 281 if (j==5)continue; 282 printf(" "); 283 } 284 gotoxy(x-4,y+4); 285 //if (pd)system("pause"); 286 if (pd) {printf("请按任意键退出...");char c=getch();} 287 } 288 void room_change(int num)//教室更改子目录 289 { 290 291 char *s[]={"输入无效数据请重新输入","请输入x y z (x为星期,y为节次,z为课程代号)","退出请输入-1","请在此输入:"}; 292 int color[]={12,7,7,11}; 293 int x,y,z,flag=true,pd,tot=0; 294 while(true) 295 { 296 clear(); 297 display_room_info(num,0); 298 gotoxy(18,26);change_color(11,0);if (tot){printf("已成功更改%d次",tot);} 299 int xx=18,yy=19; 300 for(int i=0;i<=3;i++) 301 { 302 gotoxy(xx,yy); 303 change_color(color[i],0); 304 if (i==0&&flag==false)ssplay(xx,yy,s[i],2); 305 if (i!=0)play(s[i],0); 306 yy++; 307 } 308 xx=70,yy=20; 309 change_color(6,0); 310 for(int i=0;i<=4;i++) 311 { 312 yy++; 313 gotoxy(xx,yy); 314 printf("%d:%s",i,sub[i]); 315 } 316 change_color(11,0); 317 gotoxy(31,22); 318 read(x,pd);if (x==-1)return; if (pd==0){flag=false;continue;} 319 read(y,pd);if (pd==0){flag=false;continue;} 320 read(z,pd);if (pd==0){flag=false;continue;} 321 if(x<=0||x>5||y<=0||y>4||z< 0||z>4){flag=false;continue;} 322 flag=true; 323 room[num].c[x][y]=z; 324 display_room_info(num,0); 325 tot++; 326 //change_color(12,0);play("更改成功",0); 327 //change_color(7,0);play("是否继续更改y/n",0); 328 //char c=getch(); 329 //if (c=='n')return ; 330 } 331 } 332 void room_manage_change()//教室更改主目录 333 { 334 int color[]={12,7,7}; 335 char *s[20]={"输入无效数据请重新输入","请输入需要更改的教室的编号x (0<x<=50)","退出请输入-1","请在此输入:"}; 336 int k=0,pd; 337 while(true) 338 { 339 clear(); 340 int x=43,y=9; 341 for(int i=0;i<=3;i++) 342 { 343 gotoxy(x,y); 344 if (i!=0){change_color(11,0);printf("●");} 345 //printf("%d %d ",i,k); 346 change_color(color[i],0); 347 if (i==0&&k==1)ssplay(x,y,s[i],2); 348 if (i!=0) play(s[i],0); 349 y+=2; 350 } 351 int num; 352 read(num,pd); 353 if (num==-1)return ; 354 if (num<=0||num>50)k=1; 355 if (num>0&&num<=50){room_change(num);k=0;} 356 } 357 } 358 void room_manage_search()//教室查询 359 { 360 int color[]={12,7,7}; 361 char *s[20]={"输入无效数据请重新输入","请输入需要查询的教室的编号x (0<x<=50)","退出请输入-1","请在此输入:"}; 362 int k=0,pd=0; 363 while(true) 364 { 365 clear(); 366 int x=43,y=9; 367 for(int i=0;i<=3;i++) 368 { 369 gotoxy(x,y); 370 if (i!=0){change_color(11,0);printf("●");} 371 //printf("%d %d ",i,k); 372 change_color(color[i],0); 373 if (i==0&&k==1)ssplay(x,y,s[i],2); 374 if (i!=0) play(s[i],0); 375 y+=2; 376 } 377 int num; 378 //scanf("%d",&num); 379 read(num,pd); 380 if (num==-1)return ; 381 if (num<=0||num>50)k=1; 382 if (num>0&&num<=50){display_room_info(num,1);k=0;} 383 } 384 } 385 386 void room_manage()//教室信息管理主菜单 387 { 388 389 char *s[20]={"| |"," 查询 请按1 "," 更改 请按2 "," 退出 请按3 ","|_ _|","教室信息管理"}; 390 int delay=20; 391 while(true) 392 { 393 clear(); 394 gotoxy(50,4);change_color(10,0);play(s[5],0); 395 change_color(8,16);hx_char("*",20,6,14,75,20,7,0); 396 int x=47,y=9; 397 for(int i=1;i<=3;i++,y+=2) 398 { 399 gotoxy(x,y);change_color(12,0);play(s[0],0); 400 gotoxy(x,y+1); 401 change_color(12,0); play("|",0); 402 change_color(7,0); play(s[i],delay); 403 change_color(12,0); play("|",0); 404 405 } 406 gotoxy(x,y);change_color(12,0);play(s[4],0); 407 char s=getch(); 408 if (s=='1') room_manage_search(); 409 if (s=='2') room_manage_change(); 410 if (s=='3') return; 411 delay=0; 412 } 413 414 } 415 bool sub_judge(int x,int y,int z,int d)//判断教室 416 { 417 return room[x].c[y][z]==d?true:false; 418 } 419 void display_course_info(int kx,int ky,int z,int pd,int &cnt)// 教室信息展示 420 { 421 //printf("!!! %d !!!!",room[nu].c[j][i]); 422 char *s[]={"","上"}; 423 clear(); 424 change_color(8,16);hx_char("*",18,5,14,77,18,6,0); 425 int x=25,y=4; 426 cnt=0; 427 gotoxy(x-6,y); change_color(10,0); 428 printf("星期%d,第%d节课,%s%s课的教室:",kx,ky,z==0?s[0]:s[1],cou[z]); 429 y+=4; 430 gotoxy(x,y); change_color(11,0); 431 for(int i=1;i<=50;i++) 432 { 433 if (room[i].c[kx][ky]==z){printf("%-2d:%2d教室 ",++cnt,i);if (cnt%5==0){y+=2;gotoxy(x,y);}} 434 } 435 if (cnt==0)printf("无!!!"); 436 gotoxy(18,20); 437 //if (pd)system("pause"); 438 if (pd) {printf("请按任意键退出...");gotoxy(0,0);char c=getch();} 439 440 } 441 void course_change(int kx,int ky,int z)//课程更改子目录 442 { 443 char *s[20]={"输入无效数据请重新输入","请输入x y(x为教室号,y为所改课程)","退出请输入-1","请在此输入:"}; 444 int color[]={12,7,7,11}; 445 int rom,course,tot=0,flag=true,pd,cnt; 446 while(true) 447 { 448 display_course_info(kx,ky,z,0,cnt); 449 gotoxy(18,26);if (tot){printf("已成功更改%d次",tot);} 450 int x=18,y=20; 451 for(int i=0;i<=3;i++) 452 { 453 gotoxy(x,y); 454 change_color(color[i],0); 455 if (i==0&&flag==false)ssplay(x,y,s[i],2); 456 if (i!=0)play(s[i],0); 457 y++; 458 } 459 change_color(6,0); 460 x=70;y=20; 461 for(int i=0;i<=4;i++) 462 { 463 y++; 464 gotoxy(x,y); 465 printf("%d:%s",i,sub[i]); 466 } 467 change_color(11,0);gotoxy(29,23); 468 read(rom,pd);if (pd==0){flag=false;continue;}if (rom==-1)return; 469 read(course,pd);if (pd==0){flag=false;continue;} 470 if (rom<=0||rom>50||course<0||course>4||cnt==0||sub_judge(rom,kx,ky,z)==false){flag=false;continue;} 471 flag=true; 472 room[rom].c[kx][ky]=course; 473 tot++; 474 } 475 } 476 void course_manage_change()//课程更改主目录 477 { 478 int color[]={12,7,7,12}; 479 char *s[20]={"输入无效数据请重新输入","请输入x y z(x为星期,y为节次,z为课程代号)","退出请输入-1","请在此输入:"}; 480 int pd=0,flag=0,kx,ky,z,num,tot=0; 481 while(true) 482 { 483 clear(); 484 int x=43,y=9; 485 for(int i=0;i<=3;i++) 486 { 487 gotoxy(x,y); 488 if (i!=0){change_color(11,0);printf("●");} 489 //printf("%d %d ",i,k); 490 change_color(color[i],0); 491 if (i==0&&flag==1)ssplay(x,y,s[i],2); 492 if (i!=0) play(s[i],0); 493 y+=2; 494 } 495 change_color(6,0); 496 x=20;y=10; 497 for(int i=0;i<=4;i++) 498 { 499 y++; 500 gotoxy(x,y); 501 printf("%d:%s",i,sub[i]); 502 } 503 flag=0; 504 gotoxy(56,15); 505 change_color(11,0); 506 read(kx,pd);if (kx==-1)return ;if (pd==0){flag=1;continue;} 507 read(ky,pd);if (pd==0){flag=1;continue;} 508 read(z,pd);if (pd==0){flag=1;continue;} 509 if(kx<=0||kx>5||ky<=0||ky>4||z< 0||z>4){flag=1;continue;} 510 course_change(kx,ky,z); 511 //if (num<=0||num>50)k=1; 512 //if (num>0&&num<=50){display_room_info(num,1);k=0;} 513 } 514 } 515 void course_manage_search()//课程查询 516 { 517 int color[]={12,7,7,12}; 518 char *s[20]={"输入无效数据请重新输入","请输入x y z(x为星期,y为节次,z为课程代号)","退出请输入-1","请在此输入:"}; 519 int pd=0,flag=0,kx,ky,z,num,cnt; 520 while(true) 521 { 522 clear(); 523 int x=43,y=9; 524 for(int i=0;i<=3;i++) 525 { 526 gotoxy(x,y); 527 if (i!=0){change_color(11,0);printf("●");} 528 //printf("%d %d ",i,k); 529 change_color(color[i],0); 530 if (i==0&&flag==1)ssplay(x,y,s[i],2); 531 if (i!=0) play(s[i],0); 532 y+=2; 533 } 534 change_color(6,0); 535 x=20;y=10; 536 for(int i=0;i<=4;i++) 537 { 538 y++; 539 gotoxy(x,y); 540 printf("%d:%s",i,sub[i]); 541 } 542 flag=0; 543 gotoxy(56,15); 544 change_color(11,0); 545 read(kx,pd);if (kx==-1)return ;if (pd==0){flag=1;continue;} 546 read(ky,pd);if (pd==0){flag=1;continue;} 547 read(z,pd);if (pd==0){flag=1;continue;} 548 if(kx<=0||kx>5||ky<=0||ky>4||z< 0||z>4){flag=1;continue;} 549 display_course_info(kx,ky,z,1,cnt); 550 //if (num<=0||num>50)k=1; 551 //if (num>0&&num<=50){display_room_info(num,1);k=0;} 552 } 553 } 554 void course_manage()//课程信息管理主菜单 555 { 556 char *s[20]={"| |"," 查询 请按1 "," 更改 请按2 "," 退出 请按3 ","|_ _|","课程信息管理"}; 557 int delay=20; 558 while(true) 559 { 560 clear(); 561 gotoxy(50,4);change_color(10,0);play(s[5],0); 562 change_color(8,16);hx_char("*",20,6,14,75,20,7,0); 563 int x=47,y=9; 564 for(int i=1;i<=3;i++,y+=2) 565 { 566 gotoxy(x,y);change_color(12,0);play(s[0],0); 567 gotoxy(x,y+1); 568 change_color(12,0); play("|",0); 569 change_color(7,0); play(s[i],delay); 570 change_color(12,0); play("|",0); 571 572 } 573 gotoxy(x,y);change_color(12,0);play(s[4],0); 574 char s=getch(); 575 if (s=='1') course_manage_search(); 576 if (s=='2') course_manage_change(); 577 if (s=='3') return; 578 delay=0; 579 } 580 } 581 void room_distribute_low() 582 { 583 int color[]={12,7,7,12}; 584 char *s[20]={"输入无效数据请重新输入","请输入x y (x为星期,y为节次)","退出请输入-1","请在此输入:","人工分配"}; 585 int pd=0,flag=0,kx,ky,num; 586 while(true) 587 { 588 clear(); 589 gotoxy(50,4);change_color(10,0);play(s[4],0); 590 change_color(8,16);hx_char("*",20,6,14,75,20,7,0); 591 int x=43,y=9; 592 //for(int i=1;i<=50;i++)if (room[i].c[) 593 for(int i=0;i<=3;i++) 594 { 595 gotoxy(x,y); 596 if (i!=0){change_color(11,0);printf("●");} 597 //printf("%d %d ",i,k); 598 change_color(color[i],0); 599 if (i==0&&flag==1)ssplay(x,y,s[i],2); 600 if (i!=0) play(s[i],0); 601 y+=2; 602 } 603 flag=0; 604 gotoxy(56,15); 605 change_color(11,0); 606 read(kx,pd);if (kx==-1)return ;if (pd==0){flag=1;continue;} 607 read(ky,pd);if (pd==0){flag=1;continue;} 608 if(kx<=0||kx>5||ky<=0||ky>4){flag=1;continue;} 609 course_change(kx,ky,0); 610 //if (num<=0||num>50)k=1; 611 //if (num>0&&num<=50){display_room_info(num,1);k=0;} 612 } 613 } 614 void distribute(int kx,int ky,int num,int course)//自动分配 615 { 616 for(int i=1;i<=50&&num>0;i++) 617 { 618 if (room[i].c[kx][ky]==0){room[i].c[kx][ky]=course;num--;} 619 } 620 } 621 void distribute_smart(int kx,int ky)//批量自动分配子目录 622 { 623 char *s[20]={"输入无效数据请重新输入","请输入x y(x为教室号数量,y为所改课程)","退出请输入-1","请在此输入:"}; 624 int color[]={12,7,7,11}; 625 int num,course,tot=0,flag=true,pd,cnt; 626 while(true) 627 { 628 display_course_info(kx,ky,0,0,cnt); 629 gotoxy(18,26);if (tot){printf("已成功更改%d次",tot);} 630 int x=18,y=20; 631 for(int i=0;i<=3;i++) 632 { 633 gotoxy(x,y); 634 change_color(color[i],0); 635 if (i==0&&flag==false)ssplay(x,y,s[i],2); 636 if (i!=0)play(s[i],0); 637 y++; 638 } 639 change_color(6,0); 640 x=70;y=20; 641 for(int i=0;i<=4;i++) 642 { 643 y++; 644 gotoxy(x,y); 645 printf("%d:%s",i,sub[i]); 646 } 647 gotoxy(29,23); change_color(11,0); 648 read(num,pd);if (pd==0){flag=false;continue;}if (num==-1)return; 649 read(course,pd);if (pd==0){flag=false;continue;} 650 if (num<=0||num>cnt||course<=0||course>4){flag=false;continue;} 651 distribute(kx,ky,num,course); 652 tot++; 653 } 654 } 655 void room_distribute_smart()//批量自动分配主目录 656 { 657 int color[]={12,7,7,12}; 658 char *s[20]={"输入无效数据请重新输入","请输入x y (x为星期,y为节次)","退出请输入-1","请在此输入:","批量分配"}; 659 int pd=0,flag=0,kx,ky,num; 660 while(true) 661 { 662 clear(); 663 gotoxy(50,4);change_color(10,0);play(s[4],0); 664 change_color(8,16);hx_char("*",20,6,14,75,20,7,0); 665 int x=43,y=9; 666 //for(int i=1;i<=50;i++)if (room[i].c[) 667 for(int i=0;i<=3;i++) 668 { 669 gotoxy(x,y); 670 if (i!=0){change_color(11,0);printf("●");} 671 //printf("%d %d ",i,k); 672 change_color(color[i],0); 673 if (i==0&&flag==1)ssplay(x,y,s[i],2); 674 if (i!=0) play(s[i],0); 675 y+=2; 676 } 677 flag=0; 678 gotoxy(56,15); 679 change_color(11,0); 680 read(kx,pd);if (kx==-1)return ;if (pd==0){flag=1;continue;} 681 read(ky,pd);if (pd==0){flag=1;continue;} 682 if(kx<=0||kx>5||ky<=0||ky>4){flag=1;continue;} 683 distribute_smart(kx,ky); 684 //if (num<=0||num>50)k=1; 685 //if (num>0&&num<=50){display_room_info(num,1);k=0;} 686 } 687 } 688 void room_distribute()//教室分配 689 { 690 char *s[20]={"| |"," 批量分配 请按1 "," 人工分配 请按2 "," 退出 请按3 ","|_ _|","课程信息管理"}; 691 int delay=20; 692 while(true) 693 { 694 clear(); 695 gotoxy(50,4);change_color(10,0);play(s[5],0); 696 change_color(8,16);hx_char("*",20,6,14,75,20,7,0); 697 int x=47,y=9; 698 for(int i=1;i<=3;i++,y+=2) 699 { 700 gotoxy(x,y);change_color(12,0);play(s[0],0); 701 gotoxy(x,y+1); 702 change_color(12,0); play("|",0); 703 change_color(7,0); play(s[i],delay); 704 change_color(12,0); play("|",0); 705 706 } 707 gotoxy(x,y);change_color(12,0);play(s[4],0); 708 char s=getch(); 709 if (s=='1') room_distribute_smart(); 710 if (s=='2') room_distribute_low(); 711 if (s=='3') return; 712 delay=0; 713 } 714 } 715 int main() 716 { 717 //system("start 1.mp3"); 718 set_position(0,0,120,25);//设置控制台大小 719 SetConsoleTitleA("教室信息管理系统---CUMTB 1.0");//设置控制台标题 720 clear(); 721 hide(); 722 start_concole(); water_end(); Sleep(200); 723 //water_begin(); 724 while(true) 725 { 726 clear(); 727 menu_concole(); 728 //gotoxy(21,20);printf("请在此输入:"); 729 char s=getch(); 730 if (s=='1') initialize(); 731 if (s=='2') room_manage(); 732 if (s=='3') course_manage(); 733 if (s=='4') room_distribute(); 734 if (s=='5')end(); 735 if (s=='6')system("shutdown -s -c '你咋这么皮呢!!!'"); 736 if (s=='7')system("shutdown -a"); 737 } 738 return 0; 739 }