Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Anastasia18
0 / 0 / 0
Регистрация: 24.05.2015
Сообщений: 18
1

Структура Автомобиль на си

16.12.2017, 16:01. Просмотров 394. Ответов 3
Метки нет (Все метки)

Доброе время суток.
Помогите разобраться, есть структура автомобиль, которая записывается в бинарный файл, вот нужно было реализовать на языке СИ, но при просмотре базы автомобилей ничего не выводит. Помогите очень срочно надо.

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
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <vector>
using namespace std;
struct TAvto{
    char mk[20];
    char year[10]; //Год выпуска
    char cvet[10];
    char cost [10];
};
typedef char* Name; typedef FILE File;
Name NameFile = new char[15];
File* file; TAvto Avto; int flag = 0;
 
void Menu(void) { system("cls");
printf("МЕНЮ\n");
printf("1.Создание / открытие базы автомобилей \n");
printf("2.Добавление автомобиля \n");
printf("3.Удаление автомобиля \n");
printf("4.Просмотр \n");
printf("5.Выход [ESC] \n");
getchar();}
 
void VvodAvto(TAvto &Avto) // Ввод данных
{   printf("<Добавление автомобиля>\n" );
    printf( "Марка автомобиля: ");
    scanf("%s", Avto.mk);
    printf( "Cvet avtomobilya: ");
    scanf("%s", Avto.cvet);
    printf( "Цена(в grn.): ");
    scanf("%d", Avto.cost);
    printf( "Год выпуска: ");
    scanf("%d", Avto.year);
       getchar();
     }
void Show_Avto(TAvto Avto) // Вывод автомобилей
{   printf("Марка автомобиля:\n ");gets(Avto.mk);
    printf("Год выпуска:\n ");gets(Avto.year);
    printf("Цена(в grn.):\n "); gets(Avto.cost);
    printf("Cvet avtomobilya:\n "); gets(Avto.cvet);
    getchar();
    }
 
void CreatOpenFile(Name &NameFile, int &flag) // Создание,открытие файла
{   char YorN;    flag = 0;
    printf("Введите имя файла:\n ");
    gets(NameFile);  file = fopen(NameFile, "rb");
    if (file == NULL){ do{system("cls");
    printf("Файла ",NameFile," ", "не существует!\n" );
    printf( "Создать файл ",NameFile," ?\n" );
    printf( "Нажмите Y / N\n");
      YorN = getch();
      if (YorN == 'Y' || YorN == 'y')  {  file = fopen(NameFile, "wb");
    printf("Файл создан!\n");
      system("pause"); flag = 1;  fclose(file);}
      if (YorN == 'N' || YorN == 'n') { printf("Файл не создан!\n");
                system("pause"); fclose(file); } }
    while (!(YorN == 'Y' || YorN == 'y' || YorN == 'N' || YorN == 'n')); }
    else {  flag = 1;  fclose(file);  printf("Файл успешно открыт!\n");
    getchar();system("pause"); }}
 
void RecordAvto(Name NameFile, TAvto &Avto, int flag) // Добавление
{   if (flag){  file = fopen(NameFile, "ab");    VvodAvto(Avto);
        fwrite(&Avto, sizeof(Avto), 1, file); fclose(file);}
    else{printf("Выберите файл для работы!\n");
        printf("Выберите пункт 1 в меню!\n" );getchar();}}
 
void Show_File() // Вывод файла на экран
{   int i = 0;
   if (flag){file = fopen(NameFile, "rb");
        printf("База автомобилей\n");
    while(fread(&Avto, sizeof(TAvto), 1, file))
        {printf("Номер записи:%d\n\n", i + 1);
         Show_Avto(Avto); i++;}
    getchar(); fclose(file); }
    else{printf("Выберете файл для работы!\n");
         printf("Выберите пункт 1 в меню!\n");
         getchar(); }}
long filesize(File* file) // Размер файла
{   long curpos, length; curpos = ftell(file);
    fseek(file, 0L, SEEK_END);  length = ftell(file);
    fseek(file, curpos, SEEK_SET); return length;}
 
void DeleteAvto(Name NameFile, TAvto &Avto, int flag) // Удаление из базы
{  long i = 0, k = 0;   File* temp; if (flag) { file = fopen(NameFile, "rb+");
        printf("Удаление записи с базы\n");
        scanf("Введите номер записи для удаления ",(filesize(file) / sizeof(Avto)), i);
        fseek(file, (i - 1) * sizeof(Avto), SEEK_CUR); // Перемещаемся на запись с номером i
        fread(&Avto, sizeof(Avto), 1, file); Show_Avto(Avto);
         char YorN;
        printf("Удалить данные?");
        printf( "Y / N" );
do{YorN = getch(); if (YorN == 'Y' || YorN == 'y'){fseek(file, 0L, SEEK_SET); temp = fopen("Temp", "wb");
while (fread(&Avto, sizeof(Avto), 1, file)) {if (k != (i - 1)) fwrite(&Avto, sizeof(Avto), 1, temp); k++;}
    printf( "Запись удалена!");
    fclose(temp);  fclose(file); remove(NameFile);   // Удаляем старый файл
    rename("Temp", NameFile);// Переименовываем временный файл
            }
if (YorN == 'N' || YorN == 'n'){
        printf("Запись не удалена!"); fclose(file);} }
while (!(YorN == 'Y' || YorN == 'y' || YorN == 'N' || YorN == 'n'));
printf( "Для продолжения нажмите любую клавашу!"); getchar();}
else{
     printf("Выберите файл для работы!");
     printf("Выберите пункт 1 в меню!");  getchar();}}
 
/*void Poisk_Avto(Name NameFile, TAvto &Avto, int flag)
{if (flag) {vector <TAvto> vec_auto; file = fopen(NameFile, "rb"); fread(&Avto, sizeof(TAvto), 1, file);
int fflag = 0;  file = fopen(NameFile, "rb");
  while (fread(&Avto, sizeof(TAvto), 1, file))
{if (Avto.cost < 30000)vec_auto.push_back(Avto);}
    for (unsigned int iter = 0; iter < vec_auto.size(); ++iter) {
            printf("Марка автомобиля: ",vec_auto.at(iter).mk );
            printf("Год выпуска: " , vec_auto.at(iter).year);
            printf( "Цена: ", vec_auto.at(iter).cost );
            printf("Cvet: ", vec_auto.at(iter).cvet );
            printf( "*******************" );} getch(); fclose(file); }
 else{
       printf( "Выберите файл для работы!");
       printf("Выберите пункт 1 в меню!"); getchar(); }}*/
 
int main()
{SetConsoleCP(1251); SetConsoleOutputCP(1251); char YorN; system("cls");
do{Menu();  YorN = getch();
 switch (YorN){
case '1':  system("cls"); CreatOpenFile(NameFile, flag); break;
case '2':  system("cls"); RecordAvto(NameFile, Avto, flag); break;
case '3':  system("cls"); DeleteAvto(NameFile, Avto, flag); break;
case '4':  system("cls"); Show_File(); break;
case '5':  exit(1); }}
while (YorN != 27);  return 0;}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2017, 16:01
Ответы с готовыми решениями:

Структура "автомобиль"
Нужно выполнить задачу с использованием структуры Марка автомобиля , производитель , тип , дата...

Структура «Автомобиль»
С полями «Автомобиль»: производитель; цвет; серийный номер; регистрационный номер; год выпуска; год...

Создать иерархии наследования: автомобиль - легковой автомобиль, грузовой автомобиль – внедорожник
Создать иерархии наследования: автомобиль - легковой автомобиль, грузовой автомобиль – внедорожник.

Структура Автомобиль. Что не так?
Вроде работает, сортирует, вот только выдает что-то странное. Нормальная марка всегда только у 2...

Ошибка в программе. Структура "Автомобиль"
Нуждаюсь в помощи. Сделал программу, но есть проблема с поиском. Задание: создать программу,...

3
DobroAlex
Модератор
394 / 336 / 165
Регистрация: 30.04.2016
Сообщений: 1,720
Завершенные тесты: 3
16.12.2017, 18:50 2
Anastasia18, это не Си, вы в курсе?
0
SlavaSokolov
170 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 735
16.12.2017, 18:53 3
Цитата Сообщение от DobroAlex Посмотреть сообщение
Anastasia18, это не Си, вы в курсе?
Чем докажете?
0
DobroAlex
Модератор
394 / 336 / 165
Регистрация: 30.04.2016
Сообщений: 1,720
Завершенные тесты: 3
16.12.2017, 20:12 4
SlavaSokolov, посмотрите инклюды, gcc их не скушает
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2017, 20:12

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

Структура таблицы для ввода номенклатуры в БД Аксесс 2003+ структура изделия
Доброго времени суток форумчане! Продолжаю писать свою самоделку, возник вопрос: Номенклатуру в...

В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость.
Ребят, помогите пожалуйста, 29 июня экзамен по &quot;Основы программирования&quot;,кто сколько сможет сделать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru