Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с базой данных, Работа с базой данных 
:(
    Опции темы
azat20
Дата 19.2.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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);
       }
}

PM MAIL   Вверх
andrew_121
Дата 20.2.2009, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



azat20, Пользуйся тегами "
Код
...
"
, глаза сломать можно.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
MAKCim
Дата 20.2.2009, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 2
Всего: 207



azat20

M
MAKCim
Модератор: Впредь пользуйтесь тегом КОД



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
zim22
Дата 20.2.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Выложи файл Spisok.txt


--------------------
PM MAIL   Вверх
azat20
Дата 21.2.2009, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 19.2.2009

Репутация: нет
Всего: нет



вот

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  spisok.txt 0,27 Kb
PM MAIL   Вверх
zim22
Дата 21.2.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



В процедуре Buying замени это:
Код

 if(j!=-1)
    fseek(fPtr,(j)*sizeof(struct Ticket),SEEK_SET);
    Train.Freeplace=Train.Freeplace-1;
    fwrite(&Train,(j)*sizeof(struct Ticket),1,fPtr);


на это:
Код

if(j!=-1)      
  {
      fseek(fPtr,(j)*sizeof(struct Ticket),SEEK_SET);                     
      fread(&Train,sizeof(struct Ticket),1,fPtr);
      Train.Freeplace=Train.Freeplace-1;        
      fwrite(&Train,(j)*sizeof(struct Ticket),1,fPtr);      
  }  




--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1298 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.