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

Как лучше это сделать?. а главное, как правильно? (Информационная система «Железнодорожный вокзал») - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объект «множество байт заданной мощности» http://www.cyberforum.ru/cpp-beginners/thread752853.html
Объект «множество байт заданной мощности». Предусмотреть возможность операции присваивания, объединения двух множеств, вывода на печать элементов множества, а так же метод отвечающий на вопрос – принадлежит ли указанное значение множеству. Конструктор должен позволить создавать объекты без и с начальной инициализацией. Мощность множества задается при создании объекта
C++ Разработать класс, набор методов (конструктор, деструктор и указаны методы) для программной модели заданного объекта Разработать класс, набор методов (конструктор, деструктор и указаны методы) для программной модели заданного объекта. Описание объекта и его основных свойств приводится ниже. Привести программу (int main), использующий объекты разработанного класса: Объект «комплексные числа». Операции определяются по общепринятым формулам. Конструктор должен позволить создавать объекты без и с начальной... http://www.cyberforum.ru/cpp-beginners/thread752852.html
пример с Gluit или OpenGL на Dev C++ C++
В общем давно уже хотел сделать какой-ниб махонький пример с использованием OpenGL, все никак не мог нормально подключить. Сегодня на одном из форумов нашел такую весчь. В среде Dev можно автоматом скачать и установить glut. Там заходишь в сервис\обновления\gluit скачать\устанавливаем, все ок , никаких ошибок, выбираем в проекте multimedia\glut. Все сделал, НО выбираю проект glut или OpenGL без...
Компиляция через cmd C++
Чем вызвана ошибка при компиляции (встроенный компилятор visual studio) через командную строку: cl.exe main.cpp Запуск программы невозможен, так как на компьютере отсутствует mspdb110.dll
C++ Описать структуру с именем AEROFLOT http://www.cyberforum.ru/cpp-beginners/thread752824.html
Ребята помогите решить задачу для лабы....:cry: Описать структуру с именем AER0FL0T, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета. Написать программу, выполняющую следующие действия:
C++ Создать массив заданной размерности с помощью функции и указателей #include <iostream> #include <conio.h> using namespace std; void z(int *p){ int a; for (int p=a;p<a+*(p-1);p++){ a=*p; cout << a << endl; } подробнее

Показать сообщение отдельно
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
05.01.2013, 19:36     Как лучше это сделать?. а главное, как правильно? (Информационная система «Железнодорожный вокзал»)
Ситуация следующая... Есть задание курсовой работы:
11. Информационная система «Железнодорожный вокзал». Информация: рейсы — номер поезда, дата, время отправления, пункт отправления, пункт назначения, количество свободных мест на рейс. Операции — продажа билетов на определенный рейс, сдача билетов в кассу на определенный рейс, справки.
Остановился вот на чем, У меня есть кассир, он должен уменьшать, или увеличивать колличество билетов. проблема (точнее отсутствие фантазии и малоинформированность...) ну вот суть вопроса... Хочу, чтоб в функции void _cashier() привыборе (к примеру) первого пункта (1. Продажа билета) выскакивало на консоль все рейсы, которые я считываю из файла и (внимание первый вопрос) я мог стрелочками на клавиатуре выбирать рейс который мне нужен (знаю, что так можно в консоли делать, но как именно это написать, не знаю...). Второй вопрос, чтоб при выборе какого либо рейса, выскакивало колличество свободных мест на этот рейс и я мог перезаписать это значентие на то, которое мне нужно. И третий вопрос как сделать так, чтоб при выбори какого либо поля в консоли все перерисовывалось (к примеру, я ввел логин и пороль, ввод изчес а появился результат авторизации)
Вот мой код (что есть сейчас... сыровато конечно, но я в процессе =) ):
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
172
173
174
175
176
177
#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <windows.h>
#include <locale.h>
#include <vector>
#include <conio.h>
using namespace std;
 
struct cashier
{
    int numberCashier;
};
 
void _cashier()
{
    int n;
    printf("1. Продажа билета.\n2. Сдача билета.\n3. Выдать справку.\n 4. Выход из системы.");
    scanf("%d", &n);
    if(n=='1')
    {
        printf("\nВыберети рейс: ");
    }
 
}
 
struct train
{
    char nameTrain[50];
    int amountWagon;
    int amountP;
    int amountK;
    int amountO;
};
 
void _train()
{
    train _t;
    int n;
    FILE *t;
    t=fopen("train.txt", "r+b");
    while(!feof(t))
    {
        fscanf(t,"%s %d %d %d %d", &_t.nameTrain, &_t.amountWagon, &_t.amountP, &_t.amountO, &_t.amountK);
    }
}
 
struct user
{
    char login[22], password[22];
    int status;
};
 
bool authentication (user s)
{
    FILE *p;
    char log[21], pas[21];
    p=fopen("authentication.txt","r+b");
    while(!feof(p))
    {
        fscanf(p,"%s %s", &log, &pas);
        if(strcmp(log,s.login)==0 && strcmp(pas,s.password)==0)
            return true;
    }
    return false;
}
 
bool UsersMatch(user A, user B)
{
    if (strstr(A.login,B.login) && strstr(A.password,B.password))
        return 1;
    return 0;
}
 
void setText (char *str, int size)
{
    int i = 0;
    char ch;
    do
    {
        scanf("%c",&ch);
        str[i] = ch;
        i++;
        if (str[0] == 10)
        {
            printf("Нельзя вводить пустую строку! Повторите ввод...\n");
            i=0;
        }
        else 
            if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || ch == 10)
            {
                if(i == size-1)
                {
                    do
                    {
                        scanf("%c",&ch);
                    }
                    while (ch != 10);
                    printf("Слишком длинная строка, пожалуйста, введите строку заново:\n");
                    i = 0;
                }
            }
            else
            {
                printf("Ведены недопустимые знаки, доступны лишь буквы латинского алфавита и цифры\n");
                do
                {
                    scanf("%c",&ch);
                }
                while (ch != 10);
                i = 0;
            }
    }
    while ((i == 0 || ch != 10) && i < size-1);
    str[i-1] = '\0';
    return;
}
 
const char ENTER = 13;
const char BACKSPACE = 8;
 
int main()
{
    setlocale(LC_ALL,"rus");
    user us;
    int i = 0;
    bool fl;
    fl=0;
    printf("Введите логин: ");
    setText(us.login, 20);
    printf("Введите пороль: ");
    char ch;
    do
    {
        while((ch = _getch()) != ENTER)
        {
            if (i < 21)
            {
                fl = 0;
                us.password[i]= ch;
            }
            else
                fl = 1;
            if (ch == BACKSPACE && i > 0)
            {
                i--;
                cout << "\b" << " " << "\b";
            }
            else if (ch != BACKSPACE)
            {
                i++;
                cout << '*';
            }
        }
        if (fl)
        {
            fl = 0;
            i = 0;
            cout << endl << "Неверный пороль. Пожалуйста повторите ввод: ";
        } 
        else 
            if (i == 0)
            {
                cout << endl << "Пароль не может быть пустым" << endl << "Пожалуйста, повторите ввод: ";
            }
    }
    while(!i);
    us.password[i] = '\0';
    _train();
    if(authentication(us))
        _cashier();
    else
        printf("\nBсе плохо...");
    getch();
    return 0;
}
Помогите пожалуйста чем нибудь, на любой из вопросов буду очень благодарен ответу =) Любому ответу, критику тоже принимаю =)) Мож какие функции подскажите, или шаблоны... Я всему буду рад =) Заранее спасибо =)

Добавлено через 11 минут
Созрел еще вопрос... Забыл какой функцией открыть файл именно для редактирования, а не для записи?
(Чтоб я мог перезаписать значение, к примеру, колличество свободных мест).

Добавлено через 15 часов 53 минуты
Если кому, когда понадобится, нашел ответ на свой третий вопрос, нужно использовать system("cls");, подключается с помощью библиотеки windows.h.
Я все еще жду ответы на первые два вопроса... может у кого какие хоть идеи есть?

Добавлено через 6 часов 14 минут
Опять же сам осилил еще один вопрос... Ответ на первый вопрос (чтоб стрелочками перемещаться по консоли)
Функция void _cashier() выглядет вот так:
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
void _cashier()//функции, которые выполняет кассир
{
    cashier _c, *Buf;
    vector<cashier*> *A;
    A = new vector<cashier*>;
    vector<cashier*>::iterator iter, it;
    int active=0, n;
    FILE *c;
    c=fopen("cashier.txt", "r+b");
    while(!feof(c))
    {
        cashier *B = new cashier;
        fread(B,sizeof(*B),1,c);
        if (!feof(c))
            A->push_back(B);
    }
    int ch;
    printf("1. Продажа билета\n2. Выдать справку.\n3. Выход из системы.\n");
    //system("cls");
    do
    {
        ch = getch();
        if(ch==224)
        {
            if(active>3)
                active=3;
            if(active<0)
                active=1;
            ch=getch();
            system("cls");
            if(ch == 80)
                active++;
            if(ch == 72)
                active--;
            if (active == 1)//                             0
            {
                SetColor(Red,Blue);
                cout << "1. Продажа билета";
                SetColor(White,Blue);
            }
            else
                cout << "1. Продажа билета";
            cout << endl;
            if (active == 2)//                               1
            {
                SetColor(Red,Blue);
                cout << "2. Выдать справку";
                SetColor(White,Blue);
            }
            else
                cout << "2. Выдать справку";
            cout << endl;
            if (active == 3)//                               1
            {
                SetColor(Red,Blue);
                cout << "3. Выход из системы";
                SetColor(White,Blue);
            }
            else
                cout << "3. Выход из системы";
            cout << endl;
        }
    }
    while(ch != 13); // 13 = Enter key
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru