公交一卡通
#include
#include
#include
#include
struct card
{ int cnum;
char pname[10];
int cmoney;
int cbalance;
int flag;
};
typedef struct card C;
void menu();
void readfile(C * card,int * num); void writefile(C *card,int num); void addnew(C * card,int * num); void logout(C * card,int * num); int findcard(C * card,int cardnumber,int num);
void modify(C * card,int num); void readcard(C * card,int num); void savemoney(C * card,int num); void statmax(C * card,int num); void deldata(C * card,int * num); void displayone(C * card,int index); void displayall(C * card,int num); void exitout(C * card,int num); main()
{ C card[50]={0};
char choose='\0';
int num=0;
menu();
readfile(card,&num);
while(1)
{ clrscr();
printf("\n\n\n\n\n");
printf("\n\t\t|----------------------------|");
printf("\n\t\t|-----Please input (0-8)-----|");
printf("\n\t\t|----------------------------|");
printf("\n\t\t| 1.Add new Card |");
printf("\n\t\t| 2.Logout Card |");
printf("\n\t\t| 3.Modify Card |");
printf("\n\t\t| 4.Read Card |");
printf("\n\t\t| 5.Save money |");
printf("\n\t\t| 6.Stat.max money |");
printf("\n\t\t| 7.Display |");
printf("\n\t\t| 8.Delete Data File |");
printf("\n\t\t| 0.Exit |");
printf("\n\t\t|----------------------------|");
printf("\t\t\n");
scanf("%c",&choose);
switch(choose)
{ case'1': addnew(card,&num); break;
case'2': logout(card,&num); break;
case'3': modify(card,num); break;
case'4': readcard(card,num);
break;
case'5': savemoney(card,num); break;
case'6': statmax(card,num); break;
case'7': displayall(card,num); break;
case'8': deldata(card,&num); break;
case'0': exitout(card,num); break;
default:printf("\n\tYou input error,please input again!");
getch();
}
}
}
void menu()
{ clrscr();
printf("\n\t\t||=============================||");
printf("\n\t\t||-----------------------------||");
printf("\n\t\t||------ welcome --------||");
printf("\n\t\t||------ use bus traffic------||");
printf("\n\t\t||------ Card -----------||");
printf("\n\t\t||-----------------------------||");
printf("\n\t\t||=============================||");
getch();
}
void readfile(C*card,int*num)
{ int i=0,cardnumber=0,cardmoney=0,balance=0,f=0;
char personname[10]="";
FILE*fp=NULL;
fp=fopen("d:\\card.dat","r");
if(fp==NULL)
*num=0;
else
{ fscanf(fp,"%d",&cardnumber); card[i].cnum=cardnumber;
fscanf(fp,"%s",personname); strcpy(card[i].pname,personname);
fscanf(fp,"%d",&cardmoney); card[i].cmoney=cardmoney;
fscanf(fp,"%d",&balance); card[i].cbalance=balance;
fscanf(fp,"%d",&f); card[i].flag=f;
i++;
while(feof(fp)==0)
{ fscanf(fp,"%d",&cardnumber); card[i].cnum=cardnumber;
fscanf(fp,"%d",personname); strcpy(card[i].pname,personname);
fscanf(fp,"%d",&cardmoney); card[i].cmoney=cardmoney;
fscanf(fp,"%d",&balance); card[i].cbalance=balance;
fscanf(fp,"%d",&f); card[i].flag=f;
i++;
}
fclose(fp);
*num=i;
}
}
void writefile(C * card,int num)
{ int i=0;
FILE*fp=NULL;
fp=fopen("d:\\card.dat","w");
if(fp==NULL)
{ printf("\n\tSorry,file not open and not save all
data.Now Exit.");
getch();
exit(0);
}
else
{ for(i=0;i30)
{ printf("\n\tInput error.Please input
again.");
getch();
}
else if(stops <=10)
{ ticket=1;
symbol=1;
}
else if(stops <=15)
{ ticket=2;
symbol=1;
}
else if(stops <=20)
{ ticket=3;
symbol=1;
}
else if(stops <=25)
{ ticket=4;
symbol=1;
}
else if(stops <=30)
{ ticket=5;
symbol=1;
}
}
if(card[f].cbalance >=ticket)
{ printf("\n\tBefore:");
displayone(card,f);
card[f].cbalance-=ticket;
printf("\n\tAfter:");
displayone(card,f);
}
else
{ printf("\n\tYour card balance money is not
eoough.Please use cash.");
getch();
}
}
}
/*函数功能:续钱*/
void savemoney(C * card,int num)
{ int cardnumber=0,cardmoney=0,f=0;
printf("\n\tPlease input yuor card money:");
scanf("%d",&cardnumber,num);
f=findcard(card,cardnumber,num);
if(f==-1)
{ printf("\n\tNo find the card.");
getch();
}
else
{ do
{ printf("\n\tPlease input you want to save money
in the card:");
scanf("%d",&cardmoney);
if(cardmoney<=0)
printf("\n\tInput error.Please input again.");
}while(cardmoney<=0);
card[f].cmoney=cardmoney;
card[f].cbalance+=cardmoney;
printf("\n\tYour card have already saved
money:%d.",cardmoney);
displayone(card,f);
}
}
/*函数功能:找续线最多的记录*/
void statmax(C * card,int num) { int i=0,maxindex=0;
maxindex=0;
for(i=1;i