Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

База Данных

16K
16 апреля 2006 года
McDoS
8 / / 16.04.2006
Люди помогите с алгоритмом. Задача такова:
Имеется текстовый файл, в нем находится вся база данных.
Обеспечить вывод на экрат таблиц, вставку, удаление и обновление записей. Все изменения записывать в тот же файл.

База имеет такой вид: (ТУТ вид этого в файле)
Код:
ТАБЛИЦА ЗАКАЗ
ТАБЛИЦА НАКЛАДНАЯ
ТАБЛИЦА ТОВАР
ТАБЛИЦА ЗАКАЗЧИК
ТАБЛИЦА ЗАКАЗ ВЕЩИ

3aKa3_ID 3aka34uK Data      KoJI-Bo
1        1        061404    4
2        6        151804    3
3        3        080505    6
4        4        122205    8
5        2        071603    5
6        5        111905    4
7        3        121905    5
8        5        012504    9

3aka34uK_ID 3aKa3_ID N_HaKJIaDHou
1           1         1
2           2         2
3           3         3
4           4         4
5           5         5
6           6         6
3           7         7
5           8         8

ToBap_ID ToBap_uM9 Color Pa3Mep UeHa
1        Rubashka  Red   46     530
2        Rubashka  White 47     580
3        Sviter    Black 49     450
4        Sviter    Black 48     527
5        Kurtka    Green 52     680
6        Kurtka    Brown 52     948
7        Bryuki    Blue  52     379
8        Bryuki    Brown 54     448

3aKa34uK_ID uM9       ropoD   TeJIeFoH
1           Sergey    Moscow  4621895
2           Andrey    SP      5654896
3           Denis     Pskov   2159464
4           Vladimir  SP      6145982
5           Oleg      Pskov   6498560
6           Aleksandr Kazan   1896354

3aKa3_ID ToBap_ID KoJI-Bo
1        1        2
2        5        5
3        4        3
4        3        2
5        2        4
6        6        5

Написание программы ПОЛНОСТЬЮ в принципе не требуется. Предложите варианты как это сделать (особенно вставку, удаление и обновление записей).

Если у кого есть похожие вещи, выкладывайте тут или на мыло (mcdos@list.ru).

Буду БЕЗУМНЕЙШЕ ПРИБЛАГОДАРЕН за любую помощь.
253
16 апреля 2006 года
Proger_XP
1.5K / / 07.08.2004
ИМХО куда проще будет тебе юзать Paradox 4 от Borland
16K
16 апреля 2006 года
McDoS
8 / / 16.04.2006
Цитата:
Originally posted by Proger_XP
ИМХО куда проще будет тебе юзать Paradox 4 от Borland



А в том-то и проблема. ТОЛЬКО! с помощью Паскаля.

253
16 апреля 2006 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by McDoS
А в том-то и проблема. ТОЛЬКО! с помощью Паскаля


Мазохизм
Могу предложить такой алгоритм парсинга данных в таблицах(их названия читаешь отдельно):
читаешь по строке(readln и eof)
смотришь case'ом, если
это вторая строка с \r\n\r\n, тогда это - заголовок новой таблицы и следующую строку парсишь как заголовок
иначе это данные, и их записываешь в 3-х мерных массив Data[TableID, ColID, RowID]
Строчки данных разбиваешь на массивы, сверяешь с заголовком таблицы, если что - выводишь предупреждение, иначе - записываешь в массив
Для заголовков таблиц и их описаний отдельные массивы
Поиск, добавление, удаление и т.д делаешь обычным сверянием полей и колонок массива с нужными
Лучше тут юзать Асм, иначе скорость будет очень медленной

16K
16 апреля 2006 года
McDoS
8 / / 16.04.2006
хм... что-то я не совсем понял.
Можно привести хоть какой-нибудь кусочек кода применимо к моей базе?
И как должен будет тогда выглядеть текстовой файл?
(хотя бы на примере одной таблицы)
253
17 апреля 2006 года
Proger_XP
1.5K / / 07.08.2004
Файл какой у тебя
Код:
// Инициализация
// Открытие файла, тест и т.д
while (eof(f))
begin
  readln(f, str);
  if (str = #10#13) {
    if (not DoubleEOLN) {
      DoubleEOLN := true;
    } else {
       // Заносим данные о заголовке таблицы
       // Сверяемся с общим заголовком базы
      DoubleEOLN := false
  }} else {
    // Это данные таблицы
    // Действуешь как в моем алгоритме
  }
end;

Нечто такое
З.Ы: опять съехал на Си )) Поменяй сам на begin и end
16K
17 апреля 2006 года
McDoS
8 / / 16.04.2006
Файл с базой (как я ее начал делать) тут
http://mcline.narod.ru/trash/sql.txt

Просто код получается ОЧЕНЬ громоской... и не удобной.
253
17 апреля 2006 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by McDoS
Файл с базой (как я ее начал делать) тут
http://mcline.narod.ru/trash/sql.txt

Просто код получается ОЧЕНЬ громоской... и не удобной


Я сразу сказал что это мазохизм
Базу надо писать либо на Си, либо на Асме

16K
17 апреля 2006 года
McDoS
8 / / 16.04.2006
Это такая лаба у нас по Pascal! Я сам в шоке. Так мало того, что надо базу сделать, так еще и сделать к нему меню! Ну меню эт еще пол дела, надо сначало базу оформить. И ТОЛЬКО Pascal. Моя б воля уж сделал бы на др. языках :)
1.8K
17 апреля 2006 года
LastSoul
279 / / 28.12.2005
А что обязательно текстовый файл???
Всетаки с типизированным было б полегче, особенно при редактировании, удалении и т.п.
Еще неплохо б было создать несколько файлов, я имею ввиду для каждой таблицы отдельный файл.
Если согласиться с вышеприведенными условиями, то и на паскале нетрудно написать будет.
_
16K
18 апреля 2006 года
McDoS
8 / / 16.04.2006
Цитата:
Originally posted by LastSoul
А что обязательно текстовый файл???
Всетаки с типизированным было б полегче, особенно при редактировании, удалении и т.п.
Еще неплохо б было создать несколько файлов, я имею ввиду для каждой таблицы отдельный файл.
Если согласиться с вышеприведенными условиями, то и на паскале нетрудно написать будет.
_



Именно вся база в ОДНОМ файле. Никаких других! (ну за исключением буферного - для операций, который потом будет удален (программно))

5 таблиц - 5 записей типа record со своими полями и так далее...

Меня от задачи просто колбасит. С алгоритмом траблы :)

1.8K
18 апреля 2006 года
LastSoul
279 / / 28.12.2005
дык в обязательно ТЕКСТОВЫЙ???
если можно будет сделать с типизированным, то посижу помудрю ченить может получиться ;), а если в обяз текстовый файл нужен то слишком замудренно получается аж думать неохота... :D X)-
>
16K
18 апреля 2006 года
McDoS
8 / / 16.04.2006
Цитата:
Originally posted by LastSoul
дык в обязательно ТЕКСТОВЫЙ???
если можно будет сделать с типизированным, то посижу помудрю ченить может получиться ;), а если в обяз текстовый файл нужен то слишком замудренно получается аж думать неохота... :D X)-



Тут главное что бы он был ОДИН (файл). Ну попробуй с типизированным... Был бы безумно благодарен :)

1.8K
18 апреля 2006 года
LastSoul
279 / / 28.12.2005
Вообщем что плоховато у меня с твоей прогой получается, давно подобные не писал, уже опыт пропал :(

Кстати насчет record - ненужно делать 5 записей
иначе у тебя не получиться сделать 1 файл.
Если сравнить 5 таблиц, то видно максимальное количество столбцов = 5, делаем так:
www=record n1,n2,n3,n4,n5:String; End;
Например если заполняем таблицу №1, то n5 присваевам '', т.е. пустую строку, а при
последующем выводе на экран таблицы №1 пятый столбец (которого не должно быть в таб.№1) будет выводится пустыми строками...
Хотя можно сделать так:
если просмотр таб.№1 значит то
если просмотр таб.№2 значит это
Но как я привел пример выше, мне кажется будет лучше

P.S.: Советую писать с типизированным файлом т.к. при использовании текстового замучаешься при удалении и редактировании данных
>
8.2K
18 апреля 2006 года
RusHak
86 / / 02.03.2006
Цитата:
Originally posted by McDoS
Люди помогите с алгоритмом. Задача такова:
Имеется текстовый файл, в нем находится вся база данных.
Обеспечить вывод на экрат таблиц, вставку, удаление и обновление записей. Все изменения записывать в тот же файл.
Написание программы ПОЛНОСТЬЮ в принципе не требуется. Предложите варианты как это сделать (особенно вставку, удаление и обновление записей).


Вот Глянь. Почти похоже. Эт я на первом курсе писал.Может пригодиться.

253
19 апреля 2006 года
Proger_XP
1.5K / / 07.08.2004
Как можно это засунуть в типизированный файл?
У него там 2 типа данных - заголовок БД, таблиц и их данные
Чем тебе мой алгоритм не понравился?
16K
19 апреля 2006 года
McDoS
8 / / 16.04.2006
Цитата:
Originally posted by RusHak
Вот Глянь. Почти похоже. Эт я на первом курсе писал.Может пригодиться.



Спасибо, очень пригодилось к третьей :) лабе!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог