0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 10
1

Структура "Автомобили", выбор транспортных средств по владельцу

25.02.2018, 19:00. Показов 1851. Ответов 5
Метки нет (Все метки)

Разработать программу с использованием структуры для работы с данными.
Реализовать функции ввода, вывода, удаления, поиска элементов.
Предусмотреть ввод данных, как с клавиатуры, так и из файла.
Вывод данных осуществить, как на экран, так и в файл.
Справочник автомобилей. Марка автомобиля, цвет, заводской номер, дата выпуска, тип кузова (седан, универсал и т. п.), дата последнего техосмотра, владелец. Выбор транспортных средств по владельцу
Код написала, в файл ввод осуществляется, но поиск по владельцу всегда выдаёт "Нет" и вывод информации выводит только первый элемент (владельца), остальные характеристики игнорируются. Буду очень признательна за подсказки
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
#include <iostream>
 
typedef struct Cars
{
    char owner[15];
    char color[16];
    char mark[10];
    char kuzov[10];
    char number[10];
    char osmotr[10];
    char vypusk[10];
} STUD;
 
int number;
FILE *f;
using namespace std;
errno_t err;
 
void input(int size)
{
    STUD buf = { ' ', ' ' };
    if (!fopen_s(&f, "base.txt", "ab"))
    {
        for (int p = 0; p < size; p++)
        {
            cout << "Владелец: ";
            cin >> buf.owner;
            cout << "Цвет: ";
            cin >> buf.color;
            cout << "Марка: ";
            cin >> buf.mark;                               /*создаём функцию для ввода информации из файла*/
            cout << "Тип кузова: ";
            cin >> buf.kuzov;
            cout << "Номер: ";
            cin >> buf.number;
            cout << "Год последнего техосмотра: ";
            cin >> buf.osmotr;
            cout << "Год выпуска: ";
            cin >> buf.vypusk;
            fwrite(&buf, sizeof(buf), 1, f);
        }
        fclose(f);
    }
    else {
        cout << "Ошибка открытия файла";
        return;
    }
}
 
void output()
{
    STUD buf;
    if (!fopen_s(&f, "base.txt", "rb"))
    {
        fread(&buf, sizeof(buf), 1, f);
        while (!feof(f))
        {
            cout << buf.owner << endl; cout << buf.color << endl; cout << buf.mark << endl; cout << buf.kuzov << endl; cout << buf.number << endl; cout << buf.osmotr << endl; cout << buf.vypusk << endl;
            fread(&buf, sizeof(buf), 1, f);
        }
        cout << endl;
        fclose(f);                                  /*создаём функцию для вывода информации из файла*/
    }
    else {
        cout << "Ошибка открытия файла";
        return;
    }
}
 
void find(char lastName[16])
{
    bool flag = false;
    STUD buf;
    if (!fopen_s(&f, "base.txt", "rb"))
    {
        while (!feof(f))
        {
            fread(&buf, sizeof(buf), 1, f);
            if (strcmp(lastName, buf.owner) == 0)   //сравнение строк
            {
                cout << buf.owner << endl; cout << buf.color << endl; cout << buf.mark << endl; cout << buf.kuzov << endl; cout << buf.number << endl; cout << buf.osmotr << endl; cout << buf.vypusk << endl;
                flag = true; break;
            }
        }
        fclose(f);
        if (!flag)
            cout << "Ничего не найдено\n";                   /*создаём функцию для поиска по фамилии*/
    }
    else
    {
        cout << "Ошибка открытия файла";
        return;
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int choice;
    char owner[16];
    do
    {
        cout << "\n1.Ввод данных с клавиатуры и запись в файл\n";
        cout << "2.Вывод данных из файла\n";
        cout << "3.Поиск по фамилии\n";
        cout << "0.Выход из программы\n\n";
        cout << "Введите номер операции: ";
        cin >> choice;
        switch (choice)
        {
        case 1: cout << "Введите количество машин: ";
            cin >> number;
            input(number);  break;
        case 2: output(); break;                         /* создаём функцию-меню*/
        case 3: 
        {
            cout << "Введите фамилию владельца: ";
            cin >> owner;
            find(owner); break;
        }
        case 0: exit(0);  break;
        }
    } while (choice != 0);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2018, 19:00
Ответы с готовыми решениями:

структура "Автомобили", вывод названий моделей заданного цвета и года выпуска
Прошу помочь написать программу. Только комментариями подпишите где что делается. Хочу...

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка"
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата...

Структура "Студент", выбор по условию, сортировка
заданы записи следующей структуры шифр группы (2 буквы ,2 цифры и буква),номер зачетной зачетной...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

5
7170 / 6144 / 2803
Регистрация: 14.04.2014
Сообщений: 26,474
25.02.2018, 20:00 2
Английским буквами попробуй всё ввести.
0
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 10
25.02.2018, 20:34  [ТС] 3
Саму информацию ввожу на английском, все равно косячит

Добавлено через 3 минуты
Подозреваю, что косяк в строчке
C++
1
fread(&buf, sizeof(buf), 1, f);
, но как исправить - не знаю
0
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
25.02.2018, 22:43 4
Цитата Сообщение от CaptainLeonardo Посмотреть сообщение
и вывод информации выводит только первый элемент (владельца), остальные характеристики игнорируются.
Что вводишь покажи.
Миниатюры
Структура "Автомобили",  выбор транспортных средств по владельцу  
0
nd2
3431 / 2810 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
25.02.2018, 22:45 5
Цитата Сообщение от CaptainLeonardo Посмотреть сообщение
но поиск по владельцу всегда выдаёт "Нет"
...
Миниатюры
Структура "Автомобили",  выбор транспортных средств по владельцу  
0
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 10
26.02.2018, 11:03  [ТС] 6
Переделала в новом проекте - заработало. Ну бывает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2018, 11:03
Помогаю со студенческими работами здесь

Структура: error C2079: "A::myElem" использует неопределенный struct "A::B"
class A { public: struct B; private: B myElem; }; struct A::B {

Структура ORDER с полями "номер счета плательщика", "номер счета получателя" и "сумма платежа"
написать структуру ORDER. с полями 1.номер счета плательщика 2.счета получателя 3.сумма платежа

Структура записи "Фирма", "Судебное дело"
Помогите пожалуйста в чом ошибка Нужно Определить, в каком году чаще всего возбуждали уголовное...

Структура "Автомобиль". Контейнер "Рынок б/у автомобилей"
Как реализовать такую структуру? 1. Найти иномарки стоимостью до 300тыс. руб. Предусмотреть...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru