Форум программистов, компьютерный форум CyberForum.ru

Работа с базой данных - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
azat20
0 / 0 / 0
Регистрация: 19.02.2009
Сообщений: 4
19.02.2009, 22:52     Работа с базой данных #1
Добрый день! Прошу совета! Задание было, написать БД по билетам вокзала. Так вот, все процедуры работают, кроме одной, не могу догнать, что надо написать, чтобы работала процедура покупки билета. Т.е. когда выбираем п.5 в меню, то покупается билет на поезд,название которого мы ввели.И соответственно, кол-во билетов на данный поезд уменьшается на 1. Прошу помочь с процедурой Buying. Всем заранее спасибо за ответы! На всякий случай, выкладываю весь код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#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);
}
 
 
[B]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);
}[/B]
 
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);
       }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2009, 22:52     Работа с базой данных
Посмотрите здесь:

Работа с базой C++
Работа с базой данных SQLITE3 [Русские символы] C++
C++ Работа из MS VC++ с базой Access 2000
Работа с базой данных из консоли C++
C++ Способ прочитать файл с базой данных
C++ Есть программа с Базой данных добавить функциюю удаления из файла
Работа с файлом и базой данных в C++ C++
C++ Работа с базой данных, содержащей записи со сведениями о студентах
C++ Работа с базой данных. Как заполнить таблицу?
C++ Работа с текстовым файлом как с базой данных
C++ Работа с базой данных web
Работа с базой данных фильмов в виде текстового файла C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexiski
Любитель давать советы
 Аватар для Alexiski
338 / 130 / 2
Регистрация: 12.01.2009
Сообщений: 511
19.02.2009, 23:37     Работа с базой данных #2
В этой строчке
C++
1
     fwrite(&Train,(j)*sizeof(struct Ticket),1,fPtr);
надо написать так:
C++
1
     fwrite(&Train,sizeof(struct Ticket),1,fPtr);
Yandex
Объявления
19.02.2009, 23:37     Работа с базой данных
Ответ Создать тему
Опции темы

Текущее время: 10:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru