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

📄 pk06.c

📁 dos下的排课软件。 学校使用可以自动排课程表。
💻 C
📖 第 1 页 / 共 4 页
字号:
   {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 + -