C语言课程设计

类别:编程语言 点击:0 评论:0 推荐:

#define RECORD record.txt
#define X1 6
#define X2 2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <graphics.h>
#include <ctype.h>
#include <bios.h>
/*#include "class/CARTOON.C"*/
/*definition struct*/
struct
{
char name[10];
char sex;
int studID;
int classID;
int english;
int math;
int computer;
int recycle;
int average;
int total;
int sort;
}stud,temp2;

void cartoon(void)
{
float x,x1=0;
char ch;
int driver,i,mode,y=0;
void base(void);
void clr(int x,int y);
void w(int x,int y);
void e(int x,int y);
void l(int x,int y);
void c(int x,int y);
void o(int x,int y);
void m(int x,int y);
printf("Do you want play the face?Y/N");
ch=getchar();getchar();
if(ch=='N'||ch=='n')return;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
x=620;
for(i=0;i<=200;i++)
  {
      setcolor(0);line(0,80,640,80);line(0,420,640,420);
      setcolor(15);line(640-x1,80,640,80);line(0,420,x1+=4.1,420);
      delay(1000);
  }
y=81;
for(i=0;i<20;i++)
  { setcolor(0);line(0,y,640,y);y+=2;
    setcolor(15);line(0,y,640,y); delay(3000);
  }

settextstyle(1,0,3);

setfillstyle(SOLID_FILL,0);
   clr(189,94);
   clr(230,94);
   clr(300,94);
   clr(380,94);
   delay(5000);
setcolor(7);
outtextxy(181,91,"My C Language Designs");
setcolor(15);
outtextxy(180,90,"My C Language Designs");
setcolor(7);
delay(10000);
outtextxy(182,92,"My C Language Designs");
setcolor(7);
outtextxy(181,91,"My C Language Designs");
setcolor(15);
outtextxy(180,90,"My C Language Designs");
delay(10000);
settextstyle(1,0,4);
setfillstyle(SOLID_FILL,0);
for(i=0;i<100;i+=3)
 {  bar(1,1,640,77);
    outtextxy(71,i*0.4,"Student Scores Manage System");
    delay(200000);
 }
for(i=0;i<301;i+=4)
 {
  line(50,121,50,121+i);line(590,121,590,121+i);
  delay(2000);
  }
settextstyle(1,0,4);
for(i=0;i<170;i+=2)
  {
   line(50,150,50+i,150);line(590,150,590-i,150);
   delay(2000);
  }
x=190;
y=130;
i=0;
  while(i<9)
  { switch(i++)
   {
   case 1:w(x+20*i,y);break;
   case 2:e(x+21*i,y);break;
   case 3:l(x+20*i,y);break;
   case 4:l(x+20*i,y);break;
   case 5:c(x+20*i,y);break;
   case 6:o(x+20*i,y);break;
   case 7:m(x+20*i,y);break;
   case 8:e(x+22*i,y);break;
  }
}
delay(20000);
circle(570,170,10);
delay(20000);
circle(480,250,40);
delay(20000);
circle(320,280,80);
delay(20000);
circle(150,330,40);
delay(20000);
circle(70,400,10);
settextstyle(1,0,4);
outtextxy(70,170,"Design");
settextstyle(1,0,7);
outtextxy(283,240,"By");
settextstyle(1,0,4);
outtextxy(430,370,"GongTao");
settextstyle(1,0,3);
outtextxy(150,430,"HuNan Agracutural University");
getch();
setfillstyle(LINE_FILL,1);
for(i=480;i>0;i-=25)
{
bar(1,1,640,480-i);
delay(2000);
}
setfillstyle(SOLID_FILL,1);
for(i=0;i<480;i+=25)
{
bar(1,479-i,649,479);
delay(2000);
}

return;
}

void base(void)
{
  setcolor(15);line(0,80,640,80);line(0,420,640,420);line(0,121,640,121);
}

void clr(int x,int y)
{int r=300;
 static i=0;
 void base(void);
 i++;
  for(r=300;r>0;r-=6)
   {
   circle(x,y,r);
   delay(2000);
   setcolor(0);
   circle(x,y,r);
   base();
   setcolor(15);
        switch(i)
       {
  case 2: outtextxy(180,90,"My"); break;
  case 3: outtextxy(180,90,"My C ");break;
  case 4: outtextxy(180,90,"My C Language");break;
       }
   }
        switch(i)
       {
  case 1: outtextxy(180,90,"My"); break;
  case 2: outtextxy(180,90,"My C ");break;
  case 3: outtextxy(180,90,"My C Language");break;
  case 4: outtextxy(180,90,"My C Language Designs");break;
       }
}

void w(int x,int y)
{
outtextxy(x,y,"W");
delay(2000);
}
void e(int x,int y)
{
outtextxy(x,y,"e");
delay(2000);
}

void l(int x,int y)
{
outtextxy(x,y,"l");
delay(2000);
}
void c(int x,int y)
{
outtextxy(x,y,"c");
delay(2000);
}
void o(int x,int y)
{
outtextxy(x,y,"o");
delay(2000);
}
void m(int x,int y)
{
outtextxy(x,y,"m");
delay(2000);
}

main()
{
int go,isend;
void add(void);
void list(void);
int face(void);
void del(void);
void modify(void);
void search(void);
void sort(void);
void insert(void);
void recovery(void);
void statistics(void);
void recycle(void);
void cartoon(void);
void realdel(void);
cartoon();
while(1)
{
go=face();
switch(go)
    {
      case 1: add();break;
      case 2: list();break;
      case 3: del();break;
      case 4: modify();break;
      case 5: search();break;
      case 6: sort();break;
      case 7: insert();break;
      case 8: recovery();break;
      case 9: statistics();break;
      case 10:recycle();break;
      case 11:realdel();break;
      case 0:exit(0);break;
    }
  }
}

/* add a new record*/
void add(void)
{int Y1=3;
 char numstr[20],ch;
 FILE *fp;
cleardevice();
 if((fp=fopen("RECORD","ab"))==NULL)
 { printf("Cant't open file.");getch();exit(0);}
gotoxy(X1,Y1);
 printf("Name");
gotoxy(X1+9,Y1);
 printf("Sex");
gotoxy(X1+(2*9),Y1);
 printf("StudID");
gotoxy(X1+(3*9),Y1);
 printf("ClassID");
gotoxy(X1+(4*9),Y1);
 printf("English");
gotoxy(X1+(5*9),Y1);
 printf("Math");
gotoxy(X1+(6*9),Y1);
 printf("Computer");
gotoxy(X1,++Y1);
do{
 gotoxy(0,Y1);clreol();
 gotoxy(X1,Y1);/*return start position*/printf("\b%c",16);
 gets(stud.name);gotoxy(X1+9,Y1);printf("\b%c",16);
 stud.sex=getchar();getchar();gotoxy(X1+(2*9),Y1);printf("\b%c",16);
 gets(numstr);stud.studID=atoi(numstr);gotoxy(X1+(3*9),Y1);printf("\b%c",16);
 gets(numstr);stud.classID=atoi(numstr);gotoxy(X1+(4*9),Y1);printf("\b%c",16);
 gets(numstr);stud.english=atoi(numstr);gotoxy(X1+(5*9),Y1);printf("\b%c",16);
 gets(numstr);stud.math=atoi(numstr);gotoxy(X1+(6*9),Y1);printf("\b%c",16);
 gets(numstr);stud.computer=atoi(numstr);gotoxy(X1,Y1+1);
 stud.recycle=0;stud.sort=0;
 stud.total=stud.english+stud.computer+stud.math;
 stud.average=(stud.total)/3;
 fwrite(&stud,sizeof(stud),1,fp);
 printf("Add again?(y/n)");
 ch=getchar();getchar();
 gotoxy(X1,++Y1);
 }while(ch=='y' || ch=='Y');
fclose(fp);
return;
}
/*end add*/

/*list all record*/
void list(void)
{
 int Y1=3,i=0,sum=0,once=1,i2=0;
 FILE *fp;
cleardevice();
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
while(fread(&stud,sizeof(stud),1,fp)) sum++;
rewind(fp);
if(sum==0)
  {printf("\nNo record in file.Pass any key return to Menu..");getch();return;}
while(fread(&stud,sizeof(stud),1,fp)==1)
  { if(once==1)
      {Y1=2;
       clrscr();
       gotoxy(X2,Y1);
        printf("Name");
       gotoxy(X2+9,Y1);
        printf("Sex");
       gotoxy(X2+(2*9),Y1);
        printf("StudID");
       gotoxy(X2+(3*9),Y1);
        printf("ClassID");
       gotoxy(X2+(4*9),Y1);
        printf("English");
       gotoxy(X2+(5*9),Y1);
        printf("Math");
       gotoxy(X2+(6*9),Y1);
        printf("Computer");
       gotoxy(X2+(7*9),Y1);
        printf("Aver");
       gotoxy(X2+(8*9),Y1++);
        printf("Total");
       once=0;
      }
   if(!stud.recycle)
    {
      gotoxy(X2,Y1);
      printf("%s",stud.name);gotoxy(X2+(1*9),Y1);
      printf("%c",stud.sex);gotoxy(X2+(2*9),Y1);
      printf("%d",stud.studID);gotoxy(X2+(3*9),Y1);
      printf("%d",stud.classID);gotoxy(X2+(4*9),Y1);
      printf("%d",stud.english);gotoxy(X2+(5*9),Y1);
      printf("%d",stud.math);gotoxy(X2+(6*9),Y1);
      printf("%d",stud.computer);gotoxy(X2+(7*9),Y1);
      printf("%d",stud.average);gotoxy(X2+(8*9),Y1);
      printf("%d",stud.total);gotoxy(X2,++Y1);++i2;
    }
   if(++i==sum)
       {printf("\nPress any key return to Menu.....");getch();}
   if(sum>20&&i2!=0)
     {if((i2%20)==0){printf("\nPress any key to continue.....");getch();once=1;}}
  }
fclose(fp);
return;
}
/*end list*/


/*Delete record start*/
void del(void)
{
  int go,Y1=3,once=0,sum=0;
  char numstr[20],yn='n';
  FILE *fp,*temp;
cleardevice();
temp=fopen("temp.txt","wb");
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
  printf("Choose the StudID:");
  gets(numstr);go=atoi(numstr);

while(fread(&stud,sizeof(stud),1,fp))
 {
  if(!stud.recycle&&stud.studID==go)
      {sum++;
         if(++once==1)
            {
               gotoxy(X2,Y1);
                printf("Name");
               gotoxy(X2+9,Y1);
                printf("Sex");
               gotoxy(X2+(2*9),Y1);
                printf("StudID");
               gotoxy(X2+(3*9),Y1);
                printf("ClassID");
               gotoxy(X2+(4*9),Y1);
                printf("English");
               gotoxy(X2+(5*9),Y1);
                printf("Math");
               gotoxy(X2+(6*9),Y1);
                printf("Computer");
               gotoxy(X2+(7*9),Y1);
                printf("Total");
               gotoxy(X2+(8*9),Y1++);
               printf("Aver");
             }
        gotoxy(X2,Y1);clreol();
        printf("%s",stud.name);gotoxy(X2+(1*9),Y1);
        printf("%c",stud.sex);gotoxy(X2+(2*9),Y1);
        printf("%d",stud.studID);gotoxy(X2+(3*9),Y1);
        printf("%d",stud.classID);gotoxy(X2+(4*9),Y1);
        printf("%d",stud.english);gotoxy(X2+(5*9),Y1);
        printf("%d",stud.math);gotoxy(X2+(6*9),Y1);
        printf("%d",stud.computer);gotoxy(X2+(7*9),Y1);
        printf("%d",stud.average);gotoxy(X2+(8*9),Y1);
        printf("%d",stud.total);gotoxy(X2,++Y1);
        printf("Do you want to delete this record?y/n");yn=getchar();getchar();
        if(yn=='n'||yn=='N'){fwrite(&stud,sizeof(stud),1,temp);yn='s';}
         else{stud.recycle=1;fwrite(&stud,sizeof(stud),1,temp);yn='s';}
      }
     if(yn!='s')
         {fwrite(&stud,sizeof(stud),1,temp);yn='';}
     yn='';
  }
if(!sum)
     {printf("No record! Press any key return to Menu...");fclose(fp);
      fclose(temp);
      remove("RECORD");
      rename("temp.txt","RECORD");getch();
      return; }
fclose(fp);
fclose(temp);
remove("RECORD");
rename("temp.txt","RECORD");
return;
}
/*Delete record end*/

 

/*Modify start*/
void modify(void)
{
  int go,Y1=3,once=0,sum=0;
  char numstr[20],yn='n';
  FILE *fp,*temp;
temp=fopen("temp.txt","wb");
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
cleardevice();
  printf("Choose the StudID:");
  scanf("%d",&go);getchar();
while(fread(&stud,sizeof(stud),1,fp))
 {
  if(!stud.recycle&&stud.studID==go)
      {
  sum++;
         if(++once==1)
            {   Y1=2;
                gotoxy(X1,Y1);
                 printf("Name");
                gotoxy(X1+9,Y1);
                 printf("Sex");
                gotoxy(X1+(2*9),Y1);
                 printf("StudID");
                gotoxy(X1+(3*9),Y1);
                 printf("ClassID");
                gotoxy(X1+(4*9),Y1);
                 printf("English");
                gotoxy(X1+(5*9),Y1);
                 printf("Math");
                gotoxy(X1+(6*9),Y1);
                 printf("Computer");
                gotoxy(X1,++Y1);
             }
         gotoxy(X1,Y1);clreol();
        printf("%s",stud.name);
         gotoxy(X1+9,Y1);
        printf("%c",stud.sex);
         gotoxy(X1+(2*9),Y1);
        printf("%d",stud.studID);
         gotoxy(X1+(3*9),Y1);
        printf("%d",stud.classID);
         gotoxy(X1+(4*9),Y1);
        printf("%d",stud.english);
          gotoxy(X1+(5*9),Y1);
        printf("%d",stud.math);
          gotoxy(X1+(6*9),Y1);
        printf("%d",stud.computer);
        gotoxy(X1,Y1+1);printf("Do you want to modify this record?y/n");yn=getchar(); getchar();
   if(yn=='n'||yn=='N')
      {fwrite(&stud,sizeof(stud),1,temp);yn='s';Y1++;}
   else
      {
                                 gotoxy(X1,++Y1);clreol();printf("\b%c",16);/*return start position*/
     gets(stud.name);gotoxy(X1+9,Y1);printf("\b%c",16);
     stud.sex=getchar();getchar();gotoxy(X1+(2*9),Y1);printf("\b%c",16);
     gets(numstr);stud.studID=atoi(numstr);gotoxy(X1+(3*9),Y1);printf("\b%c",16);
     gets(numstr);stud.classID=atoi(numstr);gotoxy(X1+(4*9),Y1);printf("\b%c",16);
     gets(numstr);stud.english=atoi(numstr);gotoxy(X1+(5*9),Y1);printf("\b%c",16);
     gets(numstr);stud.math=atoi(numstr);gotoxy(X1+(6*9),Y1);printf("\b%c",16);
     gets(numstr);stud.computer=atoi(numstr);gotoxy(X1,Y1+++1);
     stud.recycle=0;
     stud.total=stud.english+stud.computer+stud.math;
     stud.average=(stud.total)/3;
     fwrite(&stud,sizeof(stud),1,temp);yn='s';printf("Modify Successfully!!");
      }
      }
     if(yn!='s')
     {fwrite(&stud,sizeof(stud),1,temp);yn='';}
  yn='';
  }
 if(!sum)
  {printf("\nPress any key return to Menu....");fclose(fp);fclose(temp);remove("temp.txt");getch();return;}
fclose(fp);
fclose(temp);
remove("RECORD");
rename("temp.txt","RECORD");
getch();
return;
}
/*Modify end*/


/*Search start*/
void search(void)
{
  int go,Y1=3,once=0,i=0;
  char numstr[20];
  FILE *fp;
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
cleardevice();
  printf("Input the StudID:");
  gets(numstr);go=atoi(numstr);
while(fread(&stud,sizeof(stud),1,fp))
 {
  if(!stud.recycle&&stud.studID==go)
      {
         if(++once==1)
            {   Y1=2;
               gotoxy(X2,Y1);
                printf("Name");
               gotoxy(X2+9,Y1);
                printf("Sex");
               gotoxy(X2+(2*9),Y1);
                printf("StudID");
               gotoxy(X2+(3*9),Y1);
                printf("ClassID");
               gotoxy(X2+(4*9),Y1);
                printf("English");
               gotoxy(X2+(5*9),Y1);
                printf("Math");
               gotoxy(X2+(6*9),Y1);
                printf("Computer");
               gotoxy(X2+(7*9),Y1);
                printf("Total");
               gotoxy(X2+(8*9),Y1++);
               printf("Aver");
             }
        gotoxy(X2,Y1);clreol();
        printf("%s",stud.name);gotoxy(X2+(1*9),Y1);
        printf("%c",stud.sex);gotoxy(X2+(2*9),Y1);
        printf("%d",stud.studID);gotoxy(X2+(3*9),Y1);
        printf("%d",stud.classID);gotoxy(X2+(4*9),Y1);
        printf("%d",stud.english);gotoxy(X2+(5*9),Y1);
        printf("%d",stud.math);gotoxy(X2+(6*9),Y1);
        printf("%d",stud.computer);gotoxy(X2+(7*9),Y1);
        printf("%d",stud.average);gotoxy(X2+(8*9),Y1);
        printf("%d",stud.total);gotoxy(X2,++Y1);  i++;
        if(i%20==0){printf("Press any key to continue…");getch();once=0;}
      }
  }
printf("Press any key return to Menu....");getch();
fclose(fp);
return;
}
/*Search end*/

/*Insert start*/
void insert(void)
{
  int go,Y1=3,once=0,sum=0;
  char numstr[20],yn='n';
  FILE *fp,*temp;
temp=fopen("temp.txt","wb");
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
cleardevice();
  printf("Choose the StudID:");
  scanf("%d",&go);getchar();
while(fread(&stud,sizeof(stud),1,fp))
 {
  if(!stud.recycle&&stud.studID==go)
      {
      sum++;
         if(++once==1)
            {   Y1=2;
                gotoxy(X1,Y1);
                 printf("Name");
                gotoxy(X1+9,Y1);
                 printf("Sex");
                gotoxy(X1+(2*9),Y1);
                 printf("StudID");
                gotoxy(X1+(3*9),Y1);
                 printf("ClassID");
                gotoxy(X1+(4*9),Y1);
                 printf("English");
                gotoxy(X1+(5*9),Y1);
                 printf("Math");
                gotoxy(X1+(6*9),Y1);
                 printf("Computer");
                gotoxy(X1,++Y1);
             }
         gotoxy(X1,Y1);clreol();
        printf("%s",stud.name);
         gotoxy(X1+9,Y1);
        printf("%c",stud.sex);
         gotoxy(X1+(2*9),Y1);
        printf("%d",stud.studID);
         gotoxy(X1+(3*9),Y1);
        printf("%d",stud.classID);
         gotoxy(X1+(4*9),Y1);
        printf("%d",stud.english);
          gotoxy(X1+(5*9),Y1);
        printf("%d",stud.math);
          gotoxy(X1+(6*9),Y1);
        printf("%d",stud.computer);
        gotoxy(X1,Y1+1);
        printf("Do you want to insert before this record ?y/n");yn=getchar(); getchar();
   if(yn=='n'||yn=='N')
      {fwrite(&stud,sizeof(stud),1,temp);yn='s';}
   else
      {     temp2=stud;
                                 gotoxy(X1,++Y1);clreol();/*return start position*/
     gets(stud.name);gotoxy(X1+9,Y1);
     stud.sex=getchar();getchar();gotoxy(X1+(2*9),Y1);
     gets(numstr);stud.studID=atoi(numstr);gotoxy(X1+(3*9),Y1);
     gets(numstr);stud.classID=atoi(numstr);gotoxy(X1+(4*9),Y1);
     gets(numstr);stud.english=atoi(numstr);gotoxy(X1+(5*9),Y1);
     gets(numstr);stud.math=atoi(numstr);gotoxy(X1+(6*9),Y1);
     gets(numstr);stud.computer=atoi(numstr);printf("\n");
     stud.recycle=0;
     stud.total=stud.english+stud.computer+stud.math;
     stud.average=(stud.total)/3;
     fwrite(&stud,sizeof(stud),1,temp);
     fwrite(&temp2,sizeof(stud),1,temp);
     printf("Insert Successfully!!");
     yn='s';
      }
      }
 if(yn!='s')
   {fwrite(&stud,sizeof(stud),1,temp);yn='';}
 yn='';
 }
 if(!sum)
   {printf("\nError!!Press any key return to Menu....");fclose(fp);fclose(temp);remove("temp.txt");getch();}
fclose(fp);
fclose(temp);
remove("RECORD");
rename("temp.txt","RECORD");
getch();
return;
}
/*Insert end*/


/*recycle start*/
void recycle(void)
{
 int Y1=3,i=0,sum=0,once=1,i2=0;
 FILE *fp;
cleardevice();
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
while(fread(&stud,sizeof(stud),1,fp)) sum++;
rewind(fp);
if(sum==0)
  {printf("\nNo record in file.Pass any key return to Menu..");getch();return;}
while(fread(&stud,sizeof(stud),1,fp)==1)
  { if(once==1)
      {Y1=2;
       clrscr();
       gotoxy(X2,Y1);
        printf("Name");
       gotoxy(X2+9,Y1);
        printf("Sex");
       gotoxy(X2+(2*9),Y1);
        printf("StudID");
       gotoxy(X2+(3*9),Y1);
        printf("ClassID");
       gotoxy(X2+(4*9),Y1);
        printf("English");
       gotoxy(X2+(5*9),Y1);
        printf("Math");
       gotoxy(X2+(6*9),Y1);
        printf("Computer");
       gotoxy(X2+(7*9),Y1);
        printf("Total");
       gotoxy(X2+(8*9),Y1++);
        printf("Aver");
       once=0;
      }
   if(stud.recycle)
    {
      gotoxy(X2,Y1);
      printf("%s",stud.name);gotoxy(X2+(1*9),Y1);
      printf("%c",stud.sex);gotoxy(X2+(2*9),Y1);
      printf("%d",stud.studID);gotoxy(X2+(3*9),Y1);
      printf("%d",stud.classID);gotoxy(X2+(4*9),Y1);
      printf("%d",stud.english);gotoxy(X2+(5*9),Y1);
      printf("%d",stud.math);gotoxy(X2+(6*9),Y1);
      printf("%d",stud.computer);gotoxy(X2+(7*9),Y1);
      printf("%d",stud.average);gotoxy(X2+(8*9),Y1);
      printf("%d",stud.total);gotoxy(X2,++Y1);i2++;
    }
   if(++i==sum)
       {printf("\nPress any key return to Menu.....");getch();break;}
   if(sum>20&&i2!=0)
     {if((i2%20)==0){printf("\nPress any key to continue.....");getch();once=1;i2=0;}}
  }
fclose(fp);
return;
}
/*end recycle*/


/*Recovery start*/
void recovery(void)
{
  int go,Y1=3,once=0,sum=0;
  char numstr[20],yn='n';
  FILE *fp,*temp;
temp=fopen("temp.txt","wb");
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
cleardevice();
  printf("Choose the StudID:");
  scanf("%d",&go);getchar();
while(fread(&stud,sizeof(stud),1,fp))
 {
  if(stud.recycle&&stud.studID==go)
      {
  sum++;
         if(++once==1)
            {   Y1=2;
                gotoxy(X1,Y1);
                 printf("Name");
                gotoxy(X1+9,Y1);
                 printf("Sex");
                gotoxy(X1+(2*9),Y1);
                 printf("StudID");
                gotoxy(X1+(3*9),Y1);
                 printf("ClassID");
                gotoxy(X1+(4*9),Y1);
                 printf("English");
                gotoxy(X1+(5*9),Y1);
                 printf("Math");
                gotoxy(X1+(6*9),Y1);
                 printf("Computer");
                gotoxy(X1,++Y1);
             }
         gotoxy(X1,Y1);clreol();
        printf("%s",stud.name);
         gotoxy(X1+9,Y1);
        printf("%c",stud.sex);
         gotoxy(X1+(2*9),Y1);
        printf("%d",stud.studID);
         gotoxy(X1+(3*9),Y1);
        printf("%d",stud.classID);
         gotoxy(X1+(4*9),Y1);
        printf("%d",stud.english);
          gotoxy(X1+(5*9),Y1);
        printf("%d",stud.math);
          gotoxy(X1+(6*9),Y1);
        printf("%d",stud.computer);
         gotoxy(X1,Y1+1);
        printf("Do you want to Recovery this record?y/n");yn=getchar(); getchar();
   if(yn=='n'||yn=='N')
      {fwrite(&stud,sizeof(stud),1,temp);yn='s';}
   else
      {
                             gotoxy(X1,++Y1);clreol();/*return start position*/
        stud.recycle=0;
        fwrite(&stud,sizeof(stud),1,temp);yn='s';printf("Recovery Successfully!!");
      }
      }
     if(yn!='s')
     {fwrite(&stud,sizeof(stud),1,temp);yn='';}
     yn='';
  }
 if(!sum)
  {printf("\nPress any key return to Menu....");fclose(fp);fclose(temp);remove("temp.txt");getch();return;}
fclose(fp);
fclose(temp);
remove("RECORD");
rename("temp.txt","RECORD");
getch();
return;
}
/*Recovery end*/

/*Delete complete. start*/
void realdel(void)
{
  int go,Y1=3,once=0,sum=0;
  char numstr[20],yn='n';
  FILE *fp,*temp;
temp=fopen("temp.txt","wb");
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
cleardevice();
  printf("Choose the StudID:");
  scanf("%d",&go);getchar();
while(fread(&stud,sizeof(stud),1,fp))
 {
  if(stud.recycle&&stud.studID==go)
      {
  sum++;
         if(++once==1)
            {   Y1=2;
                gotoxy(X1,Y1);
                 printf("Name");
                gotoxy(X1+9,Y1);
                 printf("Sex");
                gotoxy(X1+(2*9),Y1);
                 printf("StudID");
                gotoxy(X1+(3*9),Y1);
                 printf("ClassID");
                gotoxy(X1+(4*9),Y1);
                 printf("English");
                gotoxy(X1+(5*9),Y1);
                 printf("Math");
                gotoxy(X1+(6*9),Y1);
                 printf("Computer");
                gotoxy(X1,++Y1);
             }
         gotoxy(X1,Y1);clreol();
        printf("%s",stud.name);
         gotoxy(X1+9,Y1);
        printf("%c",stud.sex);
         gotoxy(X1+(2*9),Y1);
        printf("%d",stud.studID);
         gotoxy(X1+(3*9),Y1);
        printf("%d",stud.classID);
         gotoxy(X1+(4*9),Y1);
        printf("%d",stud.english);
          gotoxy(X1+(5*9),Y1);
        printf("%d",stud.math);
          gotoxy(X1+(6*9),Y1);
        printf("%d",stud.computer);
        printf("\nDo you want to Delete complete this record?y/n");yn=getchar(); getchar();
   if(yn=='n'||yn=='N')
      {fwrite(&stud,sizeof(stud),1,temp);yn='s';}
   else
      {
                 gotoxy(X1,++Y1);clreol();/*return start position*/
        yn='s';printf("Delete completed Successfully!!");
      }
      }
     if(yn!='s')
     {fwrite(&stud,sizeof(stud),1,temp);yn='';}
     yn='';
  }
 if(!sum)
  {printf("\nPress any key return to Menu....");}
fclose(fp);
fclose(temp);
remove("RECORD");
rename("temp.txt","RECORD");
getch();
return;
}
/*Delete complete end*/

/*statistics start*/
void statistics(void)
{
int all_pass=0,com_pass=0,math_pass=0,good=0,member=0,en_pass=0;
float en_aver=0.0,com_aver=0.0,math_aver=0.0,all_aver=0.0;
float total=0.0;
FILE *fp;
cleardevice();
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
while(fread(&stud,sizeof(stud),1,fp)){if(!stud.recycle)member++;}
rewind(fp);
while(fread(&stud,sizeof(stud),1,fp)) { if(stud.english>=60||!stud.recycle)en_pass++; }rewind(fp);/*英语过了的人数*/
while(fread(&stud,sizeof(stud),1,fp)) { if(stud.computer>=60||!stud.recycle)com_pass++; }rewind(fp);/*电脑过了的人数*/
while(fread(&stud,sizeof(stud),1,fp)) { if(stud.math>=60||!stud.recycle)math_pass++; }rewind(fp);/*数学过了的人数*/
while(fread(&stud,sizeof(stud),1,fp))
{ if(!stud.recycle)total+=stud.total; }all_aver=total/member;total=0;rewind(fp);/*总平均分*/
while(fread(&stud,sizeof(stud),1,fp))
{ if(!stud.recycle)total+=stud.english; }en_aver=total/member;total=0;rewind(fp);/*英语平均分*/
while(fread(&stud,sizeof(stud),1,fp))
{ if(!stud.recycle)total+=stud.computer; }com_aver=total/member;total=0;rewind(fp);/*电脑平均分*/
while(fread(&stud,sizeof(stud),1,fp))
{ if(!stud.recycle)total+=stud.math; }math_aver=total/member;total=0;rewind(fp);/*数学平均分*/
while(fread(&stud,sizeof(stud),1,fp))
{ if(!stud.recycle)if(stud.math>=60&&stud.computer>=60&&stud.english>=60)all_pass++;}rewind(fp);
while(fread(&stud,sizeof(stud),1,fp))
{ if(!stud.recycle)if(stud.math>=80&&stud.computer>=80&&stud.english>=80)good++;}rewind(fp);
setcolor(8);
circle(320,240,198);
setcolor(7);
circle(320,240,199);
setcolor(15);
circle(320,240,200);
setcolor(7);
circle(320,240,199);
setcolor(8);
circle(320,240,198);
setcolor(8);
line(199,139,439,139);
setcolor(15);
line(200,140,440,140);
settextstyle(1,0,6);
setcolor(7);
outtextxy(210,80,"Statistics");
setcolor(15);
outtextxy(208,78,"Statistics");
settextstyle(0,0,1);

outtextxy(200,164,"EN_Average:"); gotoxy(45,11);printf("%f",en_aver);
outtextxy(200,182,"Com_Average:");gotoxy(45,12);printf("%f",com_aver);
outtextxy(200,198,"Math_Average:");gotoxy(45,13);printf("%f",math_aver);
outtextxy(200,214,"Toal_Average:");gotoxy(45,14);printf("%f",all_aver);

outtextxy(200,245,"EN_Pass:"); gotoxy(45,16);printf("%d",en_pass);
outtextxy(200,263,"Com_Pass:");gotoxy(45,17);printf("%d",com_pass);
outtextxy(200,278,"Math_Pass:");gotoxy(45,18);printf("%d",math_pass);
outtextxy(200,294,"Toal_Pass:");gotoxy(45,19);printf("%d",all_pass);
outtextxy(200,310,"Good:");gotoxy(45,20);printf("%d",good);
settextstyle(1,0,2);
outtextxy(200,350,"Member:");gotoxy(45,23);printf("%d",member);
circle(30,430,5);
circle(50,380,10);
circle(80,330,20);
circle(610,430,5);
circle(590,370,10);
circle(560,330,20);
circle(610,30,5);
circle(590,80,10);
circle(560,130,20);
circle(30,30,5);
circle(50,80,10);
circle(80,130,20);

fclose(fp);
getch();
return;
}
/*Statistics end*/


/*graphsics start*/

int face(void)
{
int driver,mode,key,po=0;
void mok(void);
int up(int point);
int down(int point);
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(BLUE);
putpixel(30,20,RED);
circle(30,20,100);   /*right top*/
circle(600,20,100);  /*left top*/
circle(30,460,100);  /*right down*/
circle(600,460,100); /*left down*/
circle(320,240,300); /*the biggest*/
settextstyle(4,0,4);
textcolor(BLUE);
outtextxy(230,50,"==menu==");/**/
gotoxy(30,8); printf("1.Add a new record.");     /*追加*/
gotoxy(30,9); printf("2.List all records.");     /*显示*/
gotoxy(30,10);printf("3.Delete records.");       /*删除*/
gotoxy(30,11);printf("4.Modify.");               /*修改*/
gotoxy(30,12);printf("5.Search.");               /*查找*/
gotoxy(30,13);printf("6.Sort.");                 /*排序*/
gotoxy(30,14);printf("7.Insert.");               /*插入记录*/
gotoxy(30,15);printf("8.Recovery record.");      /*恢复数据*/
gotoxy(30,16);printf("9.Statistics.");           /*统计*/
gotoxy(30,17);printf("10.Recycle.");             /*查看回收站*/
gotoxy(30,18);printf("11.Delete complete.");     /*彻底删除*/
gotoxy(30,19);printf("0.Exit.");
gotoxy(28,8+po);printf("%c",16);/*指针指向1.Add....位置*/
po=1;
while(1)
  {
   key=bioskey(0);
   if(po==1){gotoxy(28,19);printf(" ");}
   if(po==0){gotoxy(28,8);printf(" ");}
   if(key==0x1c0d)
   {  if(po==12)exit(0);
      else return po;
   }
   if(key==0x4800) /*up↑*/
     {
 if(po==1)  po=12;
   else  po=po--;
        gotoxy(28,8+po);printf("  ");
 gotoxy(28,7+po);printf("%c",16);
 gotoxy(32,23);printf("You choose %d   ",po==12?0:po);
     }

    if(key==0x5000) /*down↓*/
     {
      if(po==12) po=1 ; else po++;
      gotoxy(28,6+po);printf("  ");
      gotoxy(28,7+po);printf("%c",16);
      gotoxy(32,23);printf("You choose %d   ",po==12?0:po);
     }
    if(po!=1){gotoxy(28,8);printf(" ");}
    if(po!=12){gotoxy(28,19);printf(" ");}
  }

}
void mok(void)
{
int i=1,j=0,clo;
for(j=0;j<2;j++)
 {
 if(i<100)
    {
    for(i=1;i<100;i+=10)
       { circle(30,20,i);}
    for(i=1;i<100;i+=10)circle(30,460,i);
    for(i=1;i<100;i+=10)circle(600,20,i);
    for(i=1;i<100;i+=10)circle(600,460,i);
    }
 }
}
/*graphics end*/

 


/*Sort start*/
void sort(void)
{
int a1=0,sum=0,f1;
long address,address2;
void sortlist(void);
FILE *fp,*temp,*tempx;
cleardevice();
temp=fopen("temp","wb");
tempx=fopen("tempx","wb");
if ((fp=fopen("RECORD","rb"))==NULL){printf("I don't find any file.");getch();return;}
while(fread(&stud,sizeof(stud),1,fp))
     {fwrite(&stud,sizeof(stud),1,tempx);sum++;}
fclose(tempx);
tempx=fopen("tempx","rb");
rewind(fp);


gotoxy(26,7);printf("Please choose a sort mode:");
gotoxy(29,8);printf("1.StudentID up mode[%c]:",24);
gotoxy(29,9);printf("2.StudentID down mode[%c]:",25);
gotoxy(29,10);printf("3.Math up mode[%c]:",24);
gotoxy(29,11);printf("4.Math down mode[%c]:",25);
gotoxy(29,12);printf("5.Total up mode[%c]:",24);
gotoxy(29,13);printf("6.Total down mode[%c]:",25);
gotoxy(29,14);printf("You choose:");scanf("%d",&f1);getchar();
while(fread(&stud,sizeof(stud),1,fp))
  {
    while(fread(&temp2,sizeof(stud),1,tempx))
   {
             switch(f1)
               {
   case 1 : if(stud.studID<=temp2.studID)a1++;break;
   case 2 : if(stud.studID>=temp2.studID)a1++;break;
   case 3 : if(stud.math<=temp2.studID)a1++;break;
   case 4 : if(stud.math>=temp2.studID)a1++;break;
   case 5 : if(stud.total<=temp2.studID)a1++;break;
   case 6 : if(stud.total>=temp2.studID)a1++;break;
              }
   }
    stud.sort=a1; a1=0;
    fwrite(&stud,sizeof(stud),1,temp);
    rewind(tempx);
   }
fclose(fp);
fclose(temp);
fclose(tempx);
remove("RECORD");
remove("tempx");
rename("temp","RECORD");
sortlist();
}
/*sort end*/


/*sortlist all record*/
void sortlist(void)
{
 int Y1=3,i=0,sum=0,once=1,sum2,i2=0;
 FILE *fp;
cleardevice();
if((fp=(fopen("RECORD","rb")))==NULL)
  {printf("I can not open this file.");getch();return;}
while(fread(&stud,sizeof(stud),1,fp)) sum++;
sum2=sum;
rewind(fp);
if(sum==0)
  {printf("\nNo record in file.Pass any key return to Menu..");getch();return;}
while(sum2)
  {
  if(once==1)/*显示列表*/
      {Y1=2;
       clrscr();
       gotoxy(X2,Y1);
        printf("Name");
       gotoxy(X2+9,Y1);
        printf("Sex");
       gotoxy(X2+(2*9),Y1);
        printf("StudID");
       gotoxy(X2+(3*9),Y1);
        printf("ClassID");
       gotoxy(X2+(4*9),Y1);
        printf("English");
       gotoxy(X2+(5*9),Y1);
        printf("Math");
       gotoxy(X2+(6*9),Y1);
        printf("Computer");
       gotoxy(X2+(7*9),Y1);
        printf("Aver");
       gotoxy(X2+(8*9),Y1++);
        printf("Total");
       once=0;
      }
  while(fread(&stud,sizeof(stud),1,fp))
    {
     if(stud.sort==sum2)
     {  if(!stud.recycle)
    {
       gotoxy(X2,Y1);
       printf("%s",stud.name);gotoxy(X2+(1*9),Y1);
       printf("%c",stud.sex);gotoxy(X2+(2*9),Y1);
       printf("%d",stud.studID);gotoxy(X2+(3*9),Y1);
       printf("%d",stud.classID);gotoxy(X2+(4*9),Y1);
       printf("%d",stud.english);gotoxy(X2+(5*9),Y1);
       printf("%d",stud.math);gotoxy(X2+(6*9),Y1);
       printf("%d",stud.computer);gotoxy(X2+(7*9),Y1);
       printf("%d",stud.average);gotoxy(X2+(8*9),Y1);
       printf("%d",stud.total);gotoxy(X2,++Y1);
     i++;
     }
      }
    }rewind(fp);
   if(i2++==sum)
       {printf("\nPress any key return to Menu.....");getch();fclose(fp);return;}
   if(sum>20&&i!=0)
     {if((i%20)==0){printf("\nPress any key to continue.....");getch();once=1;}}
  sum2--;
  }
  getch();
fclose(fp);
return;
}
/*end sortlist*/

本文地址:http://com.8s8s.com/it/it24578.htm