Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DarkSkazochnik
3 / 3 / 0
Регистрация: 17.11.2012
Сообщений: 39
#1

Создать базу данных автобусного парка - C++

03.01.2013, 03:22. Просмотров 1096. Ответов 10
Метки нет (Все метки)

Доброго времени суток. Задание таково:

Создать базу данных автобусного парка. Структура информации:
номер автобуса, фамилия водителя, номер маршрута, количество автобусов на маршруте.

В программу необходимо включить меню работы с программой, которое должно содержать
следующие пункты:
а) создание файла исходных данных;
б) просмотр содержимого файла;
в) поиск заданной информации в файле;
г) корректировка информации в файле (дозапись информации в файл, удаление информации из
файла, изменение значения компонент файла);
д) выход из программы;
Собственно сам код полностью не требую, но есть несколько вопросов:

1) Возможна ли реализация через fstream? Если да, то:
а) Как через данную библиотеку реализовать удаление компоненты из файла?
б) Т.к. записываться будут структуры данных, то требуется ввод структуры как единого целого. Как это будет выглядеть?

2) Если ответ на первый вопрос отрицательный, то:
а) Как реализовать ввод структуры, как единого целого через библиотеку stdio.h?
б) Компилятор Visual Studio постоянно требует использование защищенного ввода (print_s и scan_s, к примеру). Почему он требует такой ввод и есть ли какое-либо решение этой проблемы? (Я пользовался процедурой fflush(stdin) (очистка буфера, если не ошибаюсь), чтобы избежать ошибок в scan_s).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2013, 03:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать базу данных автобусного парка (C++):

Структуры и алгоритмы обработки данных. Создать базу данных пользователей Интернет - C++
Создать базу данных пользователей Интернет (имя пользователя, текущий счет, привилегированность пользователя, состояние подключения)...

Генератор Парка и Миллера. Вывод данных из программы - C++
Генератор Парка и Миллера. Алгоритм вроде бы правильный, мне нужно вывести результат. Программа выводит нулевые значения. Переменная lidum...

Создать базу данных - C++
Задали нам создать базу данных.Мне попалась тема про фильмы. 5 составляющих: имя фильма, дата выхода, кассовые сборы, актерский состав,...

Создать базу данных - C++
Помогите пожалуйста,написал простую базу данных,но она не идет почему-то.Где в этой проге ошибки?На разных компилятор выскакивают разные...

Создать базу данных о спортсменах - C++
Первое задание создать базу данных 1 файл - Фамилия Имя спортсмена 2 файл - Вид спорта Создать запрос всех спортсменов занимающихся...

Создать базу данных автомобилей - C++
Помогите написать вот этот пример. Создать базу данных(БД) Автомобилей. БД содержит марка автомобиля, год выпуска, пробег. БД должна...

10
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.01.2013, 03:35 #2
1) Конечно возможна. Иначе зачем он нужен то тогда?
a) Считываете как всегда всё, удаляете что нужно и записываете всё заново.
б) Как и в других случаях - поэлементный ввод. Можно перегрузить оператор >>.
2) Можно и на stdio.h, но это уже Си'шные функции, оно Вам надо?
a) Так же как и через потоки - поэлементно!
б) Он это не требует, а рекомендует. Это мелсофтовские функции. Не используйте их, если у Вас студенческий проект. Можете вначале дописать
C++
1
#pragma warning (disable:4996)
это отключит данное предупреждение. Не знаю, работает ли fflush под линуксом.
1
DarkSkazochnik
3 / 3 / 0
Регистрация: 17.11.2012
Сообщений: 39
03.01.2013, 03:41  [ТС] #3
Ну насчет _s как раз таки требует, ибо отчаянно брыкается уже на стадии дебага.

Про удаление можно чуточку подробнее? =) Именно алгоритм, я никак не могу додуматься до такой элементарщины попроще...

Реализовывал ранее так: создавал массив с типом записи как буфер, считывал все данные, кроме удаляемых, туда и перезаписывал файл.
0
nonedark2008
931 / 670 / 147
Регистрация: 28.07.2012
Сообщений: 1,827
03.01.2013, 03:42 #4
Цитата Сообщение от DarkSkazochnik Посмотреть сообщение
Возможна ли реализация через fstream?
Да, создаешь поток для чтения и работатешь с ним, как с обычным cin. Удаление - загружаешь все содержимое файла, удаляешь требуемое, записываешь в файл обратно. Вообще это наверно не требуется. При запуске программы - загружаешь базу, при выходе выгружаешь.
Цитата Сообщение от DarkSkazochnik Посмотреть сообщение
требуется ввод структуры как единого целого.
Когда с клавы вводишь - все просто. По отдельности вводишь каждое поле. когда работаешь с файлом - открываешь его в бинарном виде. Есть вроде метод write - он записывает байты. Записываешь таким образом свою базу в файл по байтам. А когда считываешь - есть похожая функция для считывания байт.(Придется вспомнить преобразование типов).
Цитата Сообщение от DarkSkazochnik Посмотреть сообщение
Компилятор Visual Studio постоянно требует использование защищенного ввода
Он требует, потому что на это есть причины. Например функция gets - вводит строку и пихает ее в массив. Предположим у тебя массив и 10 символов, а ввел 20. Оставшмеся 10 запишутся мимо массива - это серьезная проблема. Поэтому есть безопасный вариант gets_s, где передается еще и кол-во элементов в массиве - что безопаснее. Вообще советую использовать безопасные варианты, кроме тех случаев, когда код должен быть кроссплатформенный.
Советую в начале файла с кодом приписать #pragma warning(disable:4355 4996) Оно должно вырубить это предупреждение и еще какое-то - не помню уже...
1
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.01.2013, 03:42 #5
Цитата Сообщение от DarkSkazochnik Посмотреть сообщение
Ну насчет _s как раз таки требует, ибо отчаянно брыкается уже на стадии дебага.
Может у Вас что еще не так? Потому что это должен быть варнинг и использование этих функций - Ваше личное дело.
0
DarkSkazochnik
3 / 3 / 0
Регистрация: 17.11.2012
Сообщений: 39
03.01.2013, 03:47  [ТС] #6
Так, ну про бинарное считывание я в принципе предполагал правильно, просто хотел убедиться...

Ну напоследок, самый такой банальный и возможно, холиварный, вопрос: чем практичнее пользоваться то? =) Потоками или стандартным вводом/выводом?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.01.2013, 03:50 #7
Цитата Сообщение от DarkSkazochnik Посмотреть сообщение
Потоками или стандартным вводом/выводом?
Потоки работают медленнее, но, имхо, они удобнее и приятнее для восприятия. Так же есть возможность работать с STL.
Да и раз пишите на C++, то и ввод/вывод желательно делать на C++
0
DarkSkazochnik
3 / 3 / 0
Регистрация: 17.11.2012
Сообщений: 39
03.01.2013, 03:53  [ТС] #8
Большое спасибо, дальше мозговать буду сам =)
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.01.2013, 03:54 #9
Цитата Сообщение от DarkSkazochnik Посмотреть сообщение
Большое спасибо, дальше мозговать буду сам =)
Можете использовать STL - это ускорит разработку(если, конечно разрешено пользоваться сие библиотекой и достаточно знаний)
0
DarkSkazochnik
3 / 3 / 0
Регистрация: 17.11.2012
Сообщений: 39
03.01.2013, 04:00  [ТС] #10
На использование ресурсов ограничений нет, но знаний мало. За тем исключением, что использую vector и string.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
03.01.2013, 04:02 #11
Цитата Сообщение от DarkSkazochnik Посмотреть сообщение
За тем исключением, что использую vector и string.
они Вам пригодятся, чтобы не изобретать велосипед
0
03.01.2013, 04:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2013, 04:02
Привет! Вот еще темы с ответами:

Создать базу данных в visual studio - C++
Я практически ничего не знаю о языке,но у меня задание написать БД. Что нужно знать что бы сделать простейшую БД ?Скиньте пожалуйста ссылок...

Создать базу данных (БД) склада компьютерного магазина - C++
Есть задание помоги интересует не выполнение а справка что можете посоветовать почитать на эту тему что нужно использовать и если можно...

Создать базу данных «Учет прибыли предприятия» - C++
Помогите пожалуйста написать программу. Создать базу данных «Учет прибыли предприятия», содержащую следующие поля: - код продукции; ...

Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде локальной переменной внутри функции. - C++
Совсем не понял эту тему. Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде...


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

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

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