Новичок
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 19.2.2009
Репутация: нет Всего: нет
|
Добрый день! Прошу совета! Задание было, написать БД по билетам вокзала. Так вот, все процедуры работают, кроме одной, не могу догнать, что надо написать, чтобы работала процедура покупки билета. Т.е. когда выбираем п.5 в меню, то покупается билет на поезд,название которого мы ввели.И соответственно, кол-во билетов на данный поезд уменьшается на 1. Прошу помочь с процедурой Buying. Всем заранее спасибо за ответы! На всякий случай, выкладываю весь код: Код | #include <stdio.h> #include <conio.h> #include <string.h> #include <time.h> struct Ticket{ int Nomer; char Nameoftrain[10]; char Endstation[10]; int Freeplace; float Price; char Servicetype[10]; float Starttime; float Goingtime; }; FILE *cfPtr; int choise; int enterChoise(void); void textFile(FILE*); void newRecord(FILE*); int Output(FILE*); void Buying(FILE*); void Calculation(FILE*);
int enterChoise(void) { int menuChoice; printf("\nEnter your choise:\n" "1-Print data in text file Tickets.txt\n" "2-Print to screen all ticket\n" "3-Add new ticket\n" "4-Print trains to input city\n" "5-Ticket buying\n" "6-Exit\n? " ); scanf("%d",&menuChoice); return menuChoice; }
int main() { clrscr(); if ((cfPtr=fopen("Spisok.txt","r+"))==NULL) printf("File can not open\n"); else { while ((choise=enterChoise())!=6){ switch (choise) { case 1: textFile(cfPtr); break; case 2: Output(cfPtr); break; case 3: newRecord(cfPtr); break; case 4: Calculation(cfPtr); break; case 5: Buying(cfPtr); break; } } fclose(cfPtr); } return 0; }
int Output(FILE*fPtr) { struct Ticket Train={0,"","",0,0.0,"",0.0,0.0}; int i=0;
printf("%-6s%-13s%-13s%-10s%-6s%-13s%-10s%-5s\n", "Nomer","Nameoftrain","Endstation","Freeplace","Price","Servicetype","Starttime","Goingtime"); while(Train.Nomer!=-1) { fseek(fPtr,(i++)*sizeof(struct Ticket),SEEK_SET); fread(&Train,sizeof(struct Ticket),1,fPtr); if(Train.Nomer==0) break; if(Train.Nomer!=-1) printf("%-6d%-13s%-13s%-10d%-6.1f%-13s%-10.2f%-5.2f\n", Train.Nomer, Train.Nameoftrain,Train.Endstation,Train.Freeplace,Train.Price, Train.Servicetype,Train.Starttime,Train.Goingtime); } return i; }
void textFile(FILE*readPtr) { FILE *writePtr; struct Ticket Train={0,"","",0,0.0,"",0.0,0.0}; int i=0; if ((writePtr=fopen("Train.txt","w"))==NULL) printf("File not found\n"); else { fprintf(writePtr,"%-6s%-13s%-13s%-10s%-6s%-13s%-10s%-5s\n", "Nomer","Nameoftrain","Endstation","Freeplace","Price","Servicetype","Starttime","Goingtime"); while(Train.Nomer!=-1) { fseek(readPtr,(i++)*sizeof(struct Ticket),SEEK_SET); fread(&Train,sizeof(struct Ticket),1,readPtr); if (Train.Nomer!=-1) fprintf(writePtr,"%-6d%-13s%-13s%-10d%-6.1f%-13s%-10.2f%-5.2f\n", Train.Nomer, Train.Nameoftrain,Train.Endstation,Train.Freeplace,Train.Price, Train.Servicetype,Train.Starttime,Train.Goingtime); } fclose(writePtr); } }
void newRecord(FILE *fPtr) { struct Ticket Train={0,"","",0,0.0,"",0.0,0.0}; struct Ticket Marker={-1,"","",0,0.0,"",0.0,0.0}; int Nomer; Nomer= Output(fPtr); printf("Enter Train Name= "); scanf("%s", &Train.Nameoftrain); printf("Enter Purpose Station= "); scanf("%s",&Train.Endstation); printf("Enter Free Place count= "); scanf("%d",(int)&Train.Freeplace); printf("Enter Ticket Price= "); scanf("%f",&Train.Price); printf("Enter Service Type= "); scanf("%s",&Train.Servicetype); printf("Enter Trains Start Time= "); scanf("%f",&Train.Starttime); printf("Enter Trains Going Time= "); scanf("%f",&Train.Goingtime); Train.Nomer=Nomer; fseek(fPtr,(Nomer-1)*sizeof(struct Ticket),SEEK_SET); fwrite(&Train,sizeof(struct Ticket),1,fPtr); fwrite(&Marker,sizeof(struct Ticket),1,fPtr); }
void Buying(FILE*fPtr) { int i=0; int j=-1; char Nameoftrain[10]; struct Ticket Train={0,"","",0,0.0,"",0.0,0.0}; printf("Input Trains Name:"); scanf("%s",Nameoftrain); while(Train.Nomer!=-1) { fseek(fPtr,(i)*sizeof(struct Ticket),SEEK_SET); fread(&Train,sizeof(struct Ticket),1,fPtr); if(Train.Nomer!=-1) if(strcmp(Train.Nameoftrain,Nameoftrain)==0) j=i; i++; } if(j!=-1) fseek(fPtr,(j)*sizeof(struct Ticket),SEEK_SET); Train.Freeplace=Train.Freeplace-1; fwrite(&Train,(j)*sizeof(struct Ticket),1,fPtr); }
void Calculation(FILE *fPtr) { int i=0; char Endstation[10]; struct Ticket Train={0,"","",0,0.0,"",0.0,0.0}; printf("Input Purpose Station:"); scanf("%s",Endstation); printf("%-13s%-13s%-10s%-6s\n","Nameoftrain","Endstation","Freeplace","Price"); while(Train.Nomer!=-1) { fseek(fPtr,(i++)*sizeof(struct Ticket),SEEK_SET); fread(&Train,sizeof(struct Ticket),1,fPtr); if(Train.Nomer!=-1) if(strcmp(Train.Endstation,Endstation)==0) printf("%-13s%-13s%-10d%-6.1f\n",Train.Nameoftrain,Train.Endstation,Train.Freeplace,Train.Price); } }
|
|