Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Lara Semenova
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 27
1

Создание базы данных посредством файла

11.11.2018, 04:26. Просмотров 777. Ответов 4
Метки нет (Все метки)

Здравствуйте,
есть задание создать базу данных песен, с их данными( альбом, год релиза итд). Проблема в том, что SQL не подойдет (не по требованиям проекта) и поэтому нужно использовать какую-то структуру данных (двумерный динамический массив, связанный список итд) для добавления песен, сортировки по году, альбому итд и чтобы потом еще сохранить эти данные и выгрузить в файл. Как это можно сделать? У меня есть пара идей, но потом тупик. Например, ладно создам список или массив с данными, потом запишу в файл, но что потом? Я не знаю как потом их прочитать и сделать так, чтобы прочитано было в массив и потом его можно было использовть для дальнейшей редакции и сортировки. Помогите, пожалуйста, я еще начинающая в этом разделе
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2018, 04:26
Ответы с готовыми решениями:

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

Создание базы данных
Как выглядит операция добавления записей в файл? сортировка, редактирование и удаление?

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

Чтение базы данных из файла
Дана база данных в файле txt Как её считать в visual studio

Создание простейшей однотабличной базы данных и основные операции с ней
Создание простейшей однотабличной базы данных. Программа должна осуществлять: • Запись и загрузку...

4
Ovederax
170 / 118 / 87
Регистрация: 30.04.2017
Сообщений: 255
11.11.2018, 09:02 2
Лучший ответ Сообщение было отмечено Lara Semenova как решение

Решение

Цитата Сообщение от Lara Semenova Посмотреть сообщение
Проблема в том, что SQL не подойдет (не по требованиям проекта)
Если проект не подрузумевает большую бд из песен, то можно хранить информацию о них в оперативной памяти во время действия программы. На старте программы считывать из файла, при закрытии приложения перезаписывать весь файл.

Цитата Сообщение от Lara Semenova Посмотреть сообщение
Я не знаю как потом их прочитать
Как записывали так и считывайте. Создайте две функции - load() и save(), в которых разместите логику для работы с файлом. Нужно придумать в каком виде это все будет хранится в файле:
(пример)
BD.txt
имя_песни_1 (строка из символов - макс 80 символов завершается "\n")
год_песни_1
имя_альбома_песни_1
...(все остальные поля структуры песни)
имя_песни_2
год_песни_2
имя_альбома_песни_2
...(все остальные поля структуры песни)
...(другие песни)

Цитата Сообщение от Lara Semenova Посмотреть сообщение
нужно использовать какую-то структуру данных
Для хранения в загрузки в оперативную память и хранения в ней нужно использовать какую-либо структуру данных. она должна быть расширяймой чтобы была возможность добовлять новые песни. У разных структур различные преимущества - выбор за вами, релизовать вставку элемента можно во все, только с разной скоростью(тоже касается поиска)

Определите поля в структуре песни и интерфейс взаимодействия с ней
Определите интерфейс для взаимодуствия с структурой данных хранящей песни - реализуйте вставку, удаление, поиск...
1
Lara Semenova
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 27
11.11.2018, 15:40  [ТС] 3
Спасибо большое за объяснение, могу ли я спросить также как именно считывать строки из файла? просто я не представляю как их структурировать потом в массив (допустим) обратно. Использовать цикл или же.. Даже не знаю
0
Ovederax
170 / 118 / 87
Регистрация: 30.04.2017
Сообщений: 255
11.11.2018, 17:53 4
Цитата Сообщение от Lara Semenova Посмотреть сообщение
как именно считывать строки из файла?
используя fscanf/fprintf (как я понял вам разрешено пользоваться базовыми средствами языка)
...
fprintf(file,"%s\n", songName);
...
fscanf(file,"%s", songName);

Цитата Сообщение от Lara Semenova Посмотреть сообщение
Использовать цикл
да, в цикле просто будете записывать все песни которые у вас будут к моменту сохранения бд в файл
Цитата Сообщение от Lara Semenova Посмотреть сообщение
как их структурировать потом в массив
пример выше, можете дополнительно в файл в качестве сервисной информации записывать кол-во сохраненных элементов, потом при считывании сможете быстро создать динамический массив нужных размеров в оперативной памяти(если вы будете использовать эту структуру данных)

вообще, если вам нужен пример, в сети много файловых бд на си, нужно только поискать
1
Lara Semenova
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 27
13.11.2018, 02:29  [ТС] 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
#include <stdio.h>
#include <string.h>
 
typedef struct {
    struct {
        char title[128], album[128];
        int year;
        char genre[4];
        struct {
            int min, sec;
        } length;
        char artist[80];
        int pl;
        void* id;
    } data ;
    void* next;
} list;
 
list bp[2];
 
int main(){
    int i, n=0;
    list *p = bp;
    FILE* f=fopen("test.txt", "r+");
 
    do {
    i = fscanf(f, "Song title: %s Album: %s Year: %d Genre: %s Length (min, sec) %d:%d Artist: %[ A-Za-z] belong to pl: %d ID: %p ",p->data.title,p->data.album,&p->data.year,p->data.genre,&p->data.length.min, &p->data.length.sec, p->data.artist,&p->data.pl,p->data.id);
    //getchar();
    } while(!feof(f) && i && ++n);
 
    for (i=0;i<n; ++i){
        printf("%s %s %d %s %d %d %s\n"// %d %x
            , bp[i].data.title, bp[i].data.album, bp[i].data.year, bp[i].data.genre
            , bp[i].data.length.min, bp[i].data.length.sec
            , bp[i].data.artist /*,bp[i].data.pl,bp[i].data.id*/);
    }
    return 0;
}
0
13.11.2018, 02:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2018, 02:29

Организовать меню: Создание файла, Просмотр файла, Поиск, Выход
часть задания задание Организовать меню: Создание файла, Просмотр файла, Поиск, Выход. В файле...

базы данных в Си
Добрый день. Работаю в Visual Studio 2008, и не могу присвоить текстовому документу значение. Чтобы...

Разработка базы данных
Здравствуйте. Я хочу разработать свою простенькую базу данных. Какую структуру данных лучше...


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

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

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