Другие языки программирования и технологии
Создание базы данных на Turbo C
Я програмирую на языке Turbo C Мне нужно создать базу данных на телефонный справочник. Помогите кто как может!!!
Какая разница, какой там С?
У вас есть 2 варианта - использовать внешнее хранилище данных (нужно будет как-то соединится с SQL-сервером или чем-то подобным) или делать все внутри программы. Учитывая, что Турбо С работает под ДОС, соединение с внешним миром будет представлять определенные трудности :D
Во втором варианте вам нужно самостоятельно реализовать хранилище данных. В этом случае вы можете хранить данные либо в виде текста, либо в виде двоичных структур. При хранении в виде текста будет возможность редактировать файлы руками и объем файлй на диске скорее всего будет меньше. Но прийдется писать парсер для строк. Простейший парсер кстати - это функция fscnaf() Но если вам хочется большей надежности и контроля ошибок - лучше использовать другой вариант.
допустим, что у нас справочник состот из структур вида
struct Abonent
{
char name[64];
char phone[16];
char addr[256];
};
Тогда
struct Abonent ab;
fprintf( fp, "\"%s\"\t\"%s\"\t\"%s\"\n", ab.name, ab.phone, ab.addr );
Запишет в файл запись вида
"имя" "телефон" "адрес"
а если извернуться, то при помощи fscanf можно считать их обратно. Но я бы использовал свой парсер.
Второй вариант - запись и считывание структуры в двоичном виде. Тут пригодятся функции fread/fwrite:
fread( &ab, sizeof(struct Abonent), 1, fp );
fwrite( &ab, sizeof(struct Abonent), 1, fp );
как видно, все гораздо проще, но на диск будет записана вся структура (тоесть куча пустого места) .
Далее надо следать индексы. Индекс - это отсортированное по какому-либо полю последовательность структур примерно такого вида
struct Index
{
char field[255]; // поле, по которому сортируем
unsigned long offset; // Смещение этой структуры в главном файле
};
Хотя впринципе, если извернуться, то можно обойтись и без поля field (за счет сильного увеличения числа обращений к жесткому диску)
Вот примерно так.
PS Может стоит использовать более приличный компилятор? Напрмиер gcc или OpenWatcom ?
У вас есть 2 варианта - использовать внешнее хранилище данных (нужно будет как-то соединится с SQL-сервером или чем-то подобным) или делать все внутри программы. Учитывая, что Турбо С работает под ДОС, соединение с внешним миром будет представлять определенные трудности :D
Во втором варианте вам нужно самостоятельно реализовать хранилище данных. В этом случае вы можете хранить данные либо в виде текста, либо в виде двоичных структур. При хранении в виде текста будет возможность редактировать файлы руками и объем файлй на диске скорее всего будет меньше. Но прийдется писать парсер для строк. Простейший парсер кстати - это функция fscnaf() Но если вам хочется большей надежности и контроля ошибок - лучше использовать другой вариант.
допустим, что у нас справочник состот из структур вида
struct Abonent
{
char name[64];
char phone[16];
char addr[256];
};
Тогда
struct Abonent ab;
fprintf( fp, "\"%s\"\t\"%s\"\t\"%s\"\n", ab.name, ab.phone, ab.addr );
Запишет в файл запись вида
"имя" "телефон" "адрес"
а если извернуться, то при помощи fscanf можно считать их обратно. Но я бы использовал свой парсер.
Второй вариант - запись и считывание структуры в двоичном виде. Тут пригодятся функции fread/fwrite:
fread( &ab, sizeof(struct Abonent), 1, fp );
fwrite( &ab, sizeof(struct Abonent), 1, fp );
как видно, все гораздо проще, но на диск будет записана вся структура (тоесть куча пустого места) .
Далее надо следать индексы. Индекс - это отсортированное по какому-либо полю последовательность структур примерно такого вида
struct Index
{
char field[255]; // поле, по которому сортируем
unsigned long offset; // Смещение этой структуры в главном файле
};
Хотя впринципе, если извернуться, то можно обойтись и без поля field (за счет сильного увеличения числа обращений к жесткому диску)
Вот примерно так.
PS Может стоит использовать более приличный компилятор? Напрмиер gcc или OpenWatcom ?
Если TurboC то скорее всего придеться использовать для хранения текстовый файл.
Ну или ищи библиотеки для подключения к уже имеющимся базам данных типа MySQL и прочее
Ну или ищи библиотеки для подключения к уже имеющимся базам данных типа MySQL и прочее
Похожие вопросы
- C++. Типы данных. Создание типа данных.
- Сайт на PHP и база данных.
- ЛЮДИ зачем нужны БД (базы данных для сайта) ? Объясните девушки пожалуйста.
- Очень интересный вопрос "Не удается открыть системную базу данных ядра Microsoft JET"
- Помогите создать базу данных на паскале.
- Подскажите - зачем нужны вообще базы данных.
- Вопрос про базу данных на примере страховой компании
- Как написать Базу данных На C++ Visual Studio 2010
- Как правильно спроектировать базу данных для книжного магазина?
- база данных как создать базу данных с помощью чего и как?