📄 pk06.c
字号:
{int i,x;
char x1,x2,j,r;
for(i=0;i<clnumber;i++)
{x=clno[i];
if(x!=53&&x!=54&&x!=56&&x!=57&&x!=58&&x!=59&&x!=60&&x!=61&&x!=62)
{printf("\n class error!!!======clno=%d (y---exit)",x);
sound3();
sleep(1);
sound3();
do
;
while(getch()!='y');
}
}
for(i=0;i<tcnumber;i++)
{for(j=0;j<7;j++)
{for(r=0;r<6;r++)
{x1=tcbb[i][j][r];
x2=tcbk[i][j][r];
if(x1==kong && x2==kong)continue;
if(x1!=kong && x2!=kong)continue;
{printf("\n9999999 tcbiao error!!!======tcno=%d (y---exit)",i);
printf("\nx1=%x jie=%d ri=%d x2=%x",x1,j,r,x2);
sound3();
sleep(1);
sound3();
do
;
while(getch()!='y');
}
}
}
}
}
/************ sub prtcb() ******/
void prtcb()
{i=0;
}/*end sub prtcb()*/
/************ sub boutfl() ******/
void boutfl()
{char fn[20],ky,sx;
FILE *fp;
cls();
printf("\n打印课表:");
printf("\n请把课表保存到文件,然后打开那个文件,然后打印.");
do
{ printf("\n请输入保存“打印课表文件”的文件名:");
scanf("%s",fn);
if((fp=fopen(fn,"w"))==NULL)
{printf("\n %s 打不开!!!\n",fn);
printf("\n x键返回上层菜单,其它键重新输入文件名).");
ch1=getch();
if(ch1=='x')
return;
}
else
break;
}
while(ch!='x');
for(ta=0;ta<clnumber;ta++)
{fprintf(fp,"\n%d班课表:\n",clno[ta]);
for(i=0;i<36;i++)fprintf(fp,"-");
fprintf(fp,"\n 一 二 三 四 五 六\n");
for(i=0;i<36;i++)fprintf(fp,"_");
fprintf(fp,"\n");
for(i=0;i<7;i++)
{fprintf(fp,"%d",i+1);
for(j=0;j<6;j++)
{x=clb[ta][i][j];
if(x==kong)
{fprintf(fp," = ");continue;}
fprintf(fp," %s",kemu[x]);
}
fprintf(fp,"\n");
if(i==3)fprintf(fp,"\n");
} /*i*/
fprintf(fp,"\n");
} /*ta*/
for(ta=0;ta<tcnumber;ta++)
{ fprintf(fp,"\n%s:\n",name[ta]);
x=0;
for(i=0;i<yubk;i++)
{sx=banke[ta][i][0];
if(sx==kong)break;
ky=banke[ta][i][1];
fprintf(fp," %d%s",clno[sx],kemu[ky]);
x++;
if(x==6)
{x=0;
fprintf(fp,"\n");}
}
fprintf(fp,"\n");
for(i=0;i<55;i++)fprintf(fp,"_");
fprintf(fp,"\n 一 二 三 四 五 六\n");
for(i=0;i<55;i++)fprintf(fp,"=");
fprintf(fp,"\n");
for(i=0;i<7;i++)
{fprintf(fp,"%d",i+1);
for(j=0;j<6;j++)
{x=tcbb[ta][i][j];
if(x==kong)
{fprintf(fp," - ");continue;}
ky=tcbk[ta][i][j];
fprintf(fp," %3d%s",clno[x],kejian[ky]);
}
fprintf(fp,"\n");
if(i==3)fprintf(fp,"\n");
}
fprintf(fp,"\n");
} /*ta*/
printf("\n课表输出完毕.");
fclose(fp);
getch();
}/*end sub boutfl()*/
/************ sub pkoutfl() ******/
void pkoutfl()
{char fn[20];
FILE *fp;
cls();
do
{ printf("\n请输入保存“排课文件”的文件名:");
scanf("%s",fn);
if((fp=fopen(fn,"wb"))==NULL)
{printf("\n %s 打不开!!!\n",fn);
printf("\n x键返回上层菜单,其它键重新输入文件名).");
ch1=getch();
if(ch1=='x')
return;
}
else
break;
}
while(ch!='x');
for(ta=0;ta<clnumber;ta++)
{for(i=0;i<7;i++)
{for(j=0;j<6;j++)
{x=clb[ta][i][j];
putc(x,fp);
x=clbt[ta][i][j];
putc(x,fp);
}
} /*i*/
} /*ta*/
for(ta=0;ta<tcnumber;ta++)
{for(i=0;i<7;i++)
{for(j=0;j<6;j++)
{x=tcbb[ta][i][j];
putc(x,fp);
x=tcbk[ta][i][j];
putc(x,fp);
}
} /*i*/
} /*ta*/
printf("\n课表输出完毕.");
fclose(fp);
getch();
}/*end sub boutfl()*/
/************ sub pkflin() ******/
void pkflin()
{char fn[20];
FILE *fp;
cls();
do
{ printf("\n请输入读取“排课文件”的文件名:");
scanf("%s",fn);
if((fp=fopen(fn,"rb"))==NULL)
{printf("\n %s 打不开!!!\n",fn);
printf("\n x键返回上层菜单,其它键重新输入文件名).");
ch1=getch();
if(ch1=='x')
return;
}
else
break;
}
while(ch!='x');
for(ta=0;ta<clnumber;ta++)
{for(i=0;i<7;i++)
{for(j=0;j<6;j++)
{x=getc(fp);
clb[ta][i][j]=x;
x=getc(fp);
clbt[ta][i][j]=x;
}
} /*i*/
} /*ta*/
for(ta=0;ta<tcnumber;ta++)
{for(i=0;i<7;i++)
{for(j=0;j<6;j++)
{x=getc(fp);
tcbb[ta][i][j]=x;
x=getc(fp);
tcbk[ta][i][j]=x;
}
} /*i*/
} /*ta*/
printf("\n课表输入完毕.");
fclose(fp);
getch();
}/*end sub boutfl()*/
void cls()
{int i;
for(i=0;i<80;i++)printf(" \n");
clrscr();
window(1,1,80,40);
textbackground(10);
textcolor(0);
chuxian3();
clrscr();
gotoxy(1,1);
}
void chuxian3()
{int dhang=16;
/*window(x1,yy1+hangshu2+1,lieshu1*2,hangshu2/2);*/
/*clrscr();*/
window(1,dhang,80,9);
textbackground(10); /* 色 */
textcolor(0); /* 黑色 */
/* for(i=0;i<630;i++) printf(" ");*/
/* gotoxy(x1,yy1+hangshu2+1);*/
gotoxy(1,dhang);
printf("\n");
}
void page1()
{int i,j,k;
clrscr();
j=15;
k=10;
gotoxy(j+1,k);
for(i=0;i<28;i++)printf("=");
k++;
gotoxy(j,k);
printf("┋ ┋");
k++;
gotoxy(j,k);
printf("┋ 更科学,更高效. ┋");
k++;
gotoxy(j,k);
printf("┋ ┋");
k++;
gotoxy(j,k);
printf("┋ 解排课之烦恼. ┋");
k++;
gotoxy(j,k);
printf("┋ ┋");
k++;
gotoxy(j,k);
printf("┋ 欢迎使用排课程序. ┋");
gotoxy(j,k+1);
printf("┋ ┋");
gotoxy(j+1,k+2);
for(i=0;i<28;i++)printf("=");
gotoxy(j+1,k+3);
printf("本程序最多可排 %d 个班级,%d 个教师\n",yucl,yutc);
printf("如果程序提示音太短,请按‘1’,没有问题按任意键...");
chkey=getch();
if(chkey=='1')
ddt=100;
else
ddt=1;
}
int zisdigit(char c)
{if(c<0x30 ||c>0x39)return 0;
return 2;
}
int zstrcmp(char *s1,char *s2)
{int i;
for(i=0;i<256;i++)
{if(s1[i]==0 && s2[i]==0)return 0;
if(s1[i]>s2[i])return 1;
if(s1[i]<s2[i])return -1;
}
return 0;
}
int zstrncmp(char *s1,char *s2,int n)
{int i;
for(i=0;i<n;i++)
{if(s1[i]==0 && s2[i]==0)return 0;
if(s1[i]>s2[i])return 1;
if(s1[i]<s2[i])return -1;
}
return 0;
}
int zstrcpy(char *s1,char *s2)
{int i;
for(i=0;i<256;i++)
{s1[i]=s2[i];
if(s2[i]==0)
return 0;
}
return 0;
}
int zstrncpy(char *s1,char *s2,int n)
{int i;
for(i=0;i<n;i++)
{s1[i]=s2[i];
if(s2[i]==0)
return 0;
}
return 0;
}
int readint()
{char te[6];
int cl,i;
ch=*p1;
while(ch==' ')
{
p1++;
ch=*p1;
if(ch==cr)
{p1++;return 0;}
}
if(ch==cr)
{p1++;return 0;}
for(i=0;i<6;i++)
{if(zisdigit(ch)==0) /*is digit =2 */
break;
te[i]=ch;
p1++;
ch=*p1;
}
te[i]=0;
cl=atoi(te) ;
return cl;
}
int readcl()
{char te[6];
int cl,i;
while(*p1==' ')
p1++;
ch=*p1;
if(ch==cr)
{p1++;return -1;}
for(i=0;i<6;i++)
{if(zisdigit(ch)==0)
{te[i]=0;
cl=atoi(te);
return cl;
}
/* printf("\nreadcl----*p1=%c =%x(hex)",*p1,*p1);*/
te[i]=ch;
p1++;
ch=*p1;
}
te[i]=0;
cl=atoi(te);
return cl;
}
void readke()
{int i=0;
for(i=0;i<2;i++)
{temp[i]=*p1;
/* printf("readke---i=%d ch=%x\n",i,*p1);
if(getch()=='x')exit(0); ****xxxxxxxxx*/
p1++;
}
temp[2]=0;
return;
}
void readstr()
{int i;
i=0;
ch=*p1;
while(ch==' ' || ch==cr)
{p1++;
ch=*p1;
}
while(ch!=' ')
{temp[i]=ch;
/* printf("%c",ch);
if(getch()=='x')exit(0); ***xxxxxxxxx*/
i++;
p1++;
ch=*p1;
if(ch==cr)goto ex;
}
ex:
p1++;
temp[i]=0;
return;
}
/**** 输出pkjs.dat ****/
void list()
{ int k1;
printf("\n班次 年级\n");
j=0;
for(i=0;i<clnumber;i++)
{printf("%3d %3d\n",clno[i],yer[i]);
j++;
if(j==15)
{getch();
j=0;
printf("\n班次 年级\n");}
}
getch();
printf("\n科目 简写 代号 初一节数 初二节数 初三节数 优先排课节次范围\n");
for(i=0;i<kenumber;i++)
{
printf("%s %s %c",kemu[i],kejian[i],kedai[i]);
printf(" %d %d %d",zhoujie[i][0],zhoujie[i][1],zhoujie[i][2]);
printf(" %d ---- %d\n",youxian[i][0],youxian[i][1]);
} /*end ke */
getch();
printf("\n教师任课表:\ntcnumber=%d\n",tcnumber);
k=0;
for(i=0;i<tcnumber;i++)
{k++;
printf("%3d %s",i,name[i]);
for(j=0;j<yubk;j++)
{k1=banke[i][j][0];
if(k1==kong)break;
printf(" %d",clno[k1]);
k1=banke[i][j][1];
printf("%s",kejian[k1]);
}
printf("\n");
/* if(k==15)
{k=0;getch();} */
}
printf("\nclass number=%d",clnumber);
printf("\nteacher number=%d",tcnumber);
printf("\nobject number=%d",kenumber);
} /******** end shu chu ****/
/************ display yushu ***********/
void lisyushu()
{int kk,jj,sum=0;
kk=0;
while(yushu[kk][0]!=kong)
{
i=yushu[kk][0];
bx=yushu[kk][1];
kx=yushu[kk][2];
jj=yushu[kk][3];
sum=jj+sum;
j=bx;
if(j<0)j=j+256;
if(i<0)i=i+256;
printf("\n警告: %s 教师上 %d 班的 %s 课 ,",name[i],clno[j],kemu[kx]);
printf("按周节计划没办法排完,剩余 %d 节",jj);
kk++;
if(kk==kk/15*15)
getch();
}
printf("\n\n已完成自动排课,可进入调课程序.");
printf("\n\n已完成自动排课,可进入调课程序.");
printf("\n\n已完成自动排课,可进入调课程序.");
printf("\n\n已完成自动排课,可进入调课程序.");
printf("\n\n已完成自动排课,可进入调课程序.");
printf("\n未排定课合计: %d 节.",sum);
printf("\n排定课合计: %d 节",paidings);
printf("\n排定率:%f",pdl);
printf("\n班级总数:%d",clnumber);
printf("\n教师总数:%d",tcnumber);
printf("\n科目总数:%d",kenumber);
printf("\n按'c'键继续");
con9:
if(getch()!='c')goto con9;
}
void xiandingpk(int kbpx[])
{char ch;
conhj:
pk(kbpx);
xsum=(6*7-3)*clnumber;
pdl=((float)paidings/(float)(xsum))*100;
printf("\nxsum paiding weiding pdl %d %d %d %f",xsum,paidings,xsum-paidings,pdl);
printf("\n 'x'----que ding");
ch=getch();
if(ch=='x')
return;
if(pdl<minpdl)
goto conhj;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -