| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Простейшая база данных |
| Автор: suse 9.3.2009, 22:39 | ||
А как на основе данной программы сделать простейшую базу данных?
Ну например в текстовом файле записаны Имя Фамилия и Должность. Требуется прочитать этот текстовой файл строчка за строчкой, создать копии всех записей и дописать их в файл. Должно получиться что то вроде: Иванов Иван полковник Петров Петр майор Константинов Константин сержант ------------------------------------ Иванов Иван полковник Петров Петр майор Константинов Константин сержант |
| Автор: Anikmar 9.3.2009, 23:20 |
| Эта программа умеет делать только односвязные списки. Расширяйте структуру Node - для хранения информации об одной записи БД, затем добавляйте методы чтения/записи в файл. Сперва сделайте структуру хранения данных - чтобы было где хранить фамилию, имя, отчество, звание. Если хотите еще и немного нормализацию поизучать - звания можно в отдельный списочек занести, но думаю в рамках текущей задачи это не нужно. |
| Автор: Dmi3ev 9.3.2009, 23:39 |
| suse, может быть полезным... http://forum.vingrad.ru/forum/topic-250268.html |
| Автор: mrbrooks 10.3.2009, 10:13 |
| suse, предупреждаю сразу - со своей поделкой замучаешься. Используй готовые решения. |
| Автор: zim22 10.3.2009, 10:23 |
зато поумнеет |
| Автор: mrbrooks 10.3.2009, 10:26 |
возможно. главное, что бы следующим шагом не было написание gta5. |
| Автор: Dmi3ev 10.3.2009, 10:34 | ||
я тоже считаю, что шестую надо писать, над пятой уже работают |
| Автор: zim22 10.3.2009, 12:39 |
| я думаю автор не там тему запостил. ему в центр помощи. |
| Автор: Dmi3ev 10.3.2009, 13:08 | ||
Anikmar, я же дал ему ссылку почти на то, что ему надо, вот код на основе ссылочки:
|
| Автор: andrew_121 10.3.2009, 13:10 |
| Существует простая БД - http://www.vivtek.com/gdbm/ Или вот моя БД на основе бинарного дерева. |
| Автор: Anikmar 10.3.2009, 13:17 | ||
Ваше сообщение я не имел в виду как бесполезное, извините. |
| Автор: mrbrooks 10.3.2009, 13:33 |
| Полезность - не полезность - главное намекнуть автору, что бы ерундой не занимался. |
| Автор: Dmi3ev 10.3.2009, 13:40 | ||
да я про то, что раз автору сказали как делать, можно и пофлудить чуть-чуть))) несмертельно))) |
| Автор: suse 10.3.2009, 20:03 |
| Спасибо! Посижу подумаю... |
| Автор: suse 19.3.2009, 11:25 |
| Все гораздо проще оказывается. Нужно просто показать как работает очередь. Вместо цифр в очередь загоняются строчки из текстового файла. 1 строчка 2 строчка 3 строчка Потом из этой очереди должны доставаться строчки и дописываться в файл. В итоге должно получиться: 1 строчка 2 строчка 3 строчка ---------------- 1 строчка 2 строчка 3 строчка Все просто, но я не знаю как это сделать. Видимо сначало нужно открыть файл, потом построчно считывать этой файл. Загонять в очередь каждую строчку. Потом дописать в файл строчки из очереди. Но как это сделать? |
| Автор: zim22 19.3.2009, 12:20 |
| suse, идите в центр помощи. или выкладывайте наработки кода. |
| Автор: suse 19.3.2009, 12:29 |
| Ну наработки кода уже с самого верха написаны. Нужно только поменять код так чтобы вместо цифр 1,2,3,4,5 в очередь загонялись строчки из текстового файла. |
| Автор: Anikmar 19.3.2009, 17:40 |
| А вы, дураки, тут флудите! |
| Автор: suse 19.3.2009, 19:03 |
| Да я тоже сначала подумал о чём то сложном... |
| Автор: zim22 19.3.2009, 19:51 |
| suse, действительно, всё оказалось элементарно. используйте queue из STL |
| Автор: suse 19.3.2009, 21:25 |
| Хороший ответ! А главное полезный |
| Автор: zim22 19.3.2009, 22:23 |
| suse, не понял юмора. что вам не нравится? |
| Автор: suse 19.3.2009, 22:33 |
| Да все нормально. Просто надо немного почитать и кое что понять. |
| Автор: Anikmar 19.3.2009, 22:34 |
Ну немного головой поработать ведь можно? Есть готоваяя очередь, пробуйте начинать писать. Либо действительно переходите в центр помощи. |
| Автор: suse 30.3.2009, 16:48 | ||
Вставил текстовой файл(имя, рост, вес) в папку... Не работает, но компилится. Borland 4.5
|
| Автор: Dmi3ev 30.3.2009, 17:12 | ||
тоже результат |
| Автор: Anikmar 30.3.2009, 17:14 | ||
Некомпилится - где? Какую ошибку выдает? |
| Автор: suse 30.3.2009, 17:19 |
| No module definition file specified: using defaults |
| Автор: Dmi3ev 30.3.2009, 17:19 | ||
Anikmar, все компилится, только не работает |
| Автор: suse 30.3.2009, 17:21 |
| Ну не понимаю... |
| Автор: Dmi3ev 30.3.2009, 17:27 |
| suse, какого результата ты ждешь от своей проги... |
| Автор: suse 30.3.2009, 17:27 |
| О! Заработало. Чудо! Только это была не очередь, а стек. Щас очередь сделаю. Добавлено через 2 минуты и 12 секунд Результат? Она должна имитировать работу очереди(стека). Ну в т.з. написано подробнее. |
| Автор: Anikmar 30.3.2009, 17:35 |
Так вы сами то знаете что пишете - очередь или стек? А файл вы так назвали чисто из прикола? |
| Автор: suse 30.3.2009, 17:40 |
| Надо и очередь и стек. Всех запутал! |
| Автор: Anikmar 30.3.2009, 18:12 |
Не то слово. Наведите порядок в коде. Создайте класс очередь, класс стек (если, вас не устраивают стандартные). Сделайти их полностью работоспособными и отлаженными. Затем отдельные методы: сохранить в файл/восстановить из файла. Гораздо проще и аккуратнее будет. А в вашем коде вообще - сначала считываем из файла, затем сохраняем. А если файла еще нет? |
| Автор: suse 31.3.2009, 00:55 | ||
Очередь
|
| Автор: Anikmar 31.3.2009, 07:25 |
Классно! И? |
| Автор: suse 31.3.2009, 20:55 |
| А да вот пока и всё. Т.з. выполнил. Но скоро будет продолжение. |
| Автор: zim22 1.4.2009, 07:13 |
| Смотрите на экранах страны. Фильм ужасов "Мутация стека в очередь". |
| Автор: M0ZY 10.5.2009, 18:39 |
| Теме ап,т.к. у меня появился вопрос А почему в процедуре вывода на экран. Вы используете "printf" вместо "cout" ? |
| Автор: Dmi3ev 10.5.2009, 18:48 | ||
прежде чем я тебе отвечу, ответь мне а почему cout надо, а не printf? |
| Автор: M0ZY 10.5.2009, 19:13 |
| ну мне пользоваться потоками ввода вывода удобней не надо писать эти % и буковки,с которыми можно иногда запутаться... и уточню я про http://forum.vingrad.ru/index.php?showtopic=250572&view=findpost&p=1807363 пост во всей програмее вы используете и "printf" и "cout" в чём между ними разница и почему "printf" пригоднее для процедуры вывода на экран??? |
| Автор: Dmi3ev 10.5.2009, 22:44 |
| M0ZY, таблицу надо выводить красиво, те чтобы выводилось одно под другим (не съезжало), + раздилители столбцов, ячейки чтобы красивые были, и в тот момент моя левая пятка хотела реализовать это так... а сейчас если буду делать тоже самое, хз, может и потоки возьму... переделайте с помощью потоков, это несложно... а результат можете здесь выложить... чтобы выбор был у следующих поколений. |
| Автор: M0ZY 11.5.2009, 20:00 |
| Эмм... Я как бы и являюсь следующим поколением))) Набрёл я на этот топик,только благо тому,что я дожен написать простенькую базу данных. Я выбра С++,т.к. так интересней. И я лучше спрошу как реализовать такой пункт как "5 - Edit Record" ? И как переделать что бы было не "3 - Delete all." а "3 - Delete record." ? Я ещё плохо разбираюсь в С++,но как я понимаю это надо реализвать при помощи потоков? |