IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> БД с Редактором, Файлы и динамические структуры данных
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Люди помогите сделать программку или подскажите где можна найти похожее что то, а то понятия не имею как сделать...
Составить программу, которая позволяет создавать, открывать, редактировать и
сохранять в файлы таблицы заданного вариантом формата. Для работы с записями
таблицы(строка данных об одном объекте) использовать тип RECORD. Для каждой
отдельной таблицы количество записей в ней должно динамически изменяться. Иными
словами для организации таблицы следует использовать динамические структуры данных
(рекомендуется двунаправленный список-«дек»). Максимальное количество таблиц,
которое можно открыть, задается вариантом. Для хранения таблиц рекомендуется
использовать массив записей характеризирующих таблицу. Программа должна обладать
дружественным интерфейсом. Необходимо наличие строки контекстных подсказок с
описанием основных комбинаций клавиш, используемых для управления. Каждая таблица
должна открываться в новом окне. Необходимо предусмотреть возможность
переключения между окнами. Окна реализовать в текстовом режиме. Все служебные
диалоги реализовать также в текстовых окнах. При работе с таблицами предусмотреть
возможность добавления, редактирования, удаления, сортировки и поиска записей.
Максимальное кол-во таблиц 19
Названия, имена и типы полей записи в таблице Название Имя Тип
№пп Num Byte
Название Name String
Семестр Term Byte
Кол-во часов Course Word
Поиск по полю Название
Сортировка по полю Семестр
Выглядеть все это должно приблезительно так как на прикрепленном рисунке
Спасибо зарание.


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Мужской
Реальное имя: Денис

Репутация: -  0  +


сроки выполнения какие?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Цитата(О_Джей_Симпсон @ 8.08.2007 12:10) *

сроки выполнения какие?

Сроки ..до сентября время точно есть...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


Давай ты начнешь, а мы тебе поможем.
Если сразу что-то не знаешь, то спроси конкретно, вот не могу понять как сделать ... .
А так, делать что-то за тебя полностью?


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Цитата(arhimag @ 9.08.2007 23:39) *

Давай ты начнешь, а мы тебе поможем.
Если сразу что-то не знаешь, то спроси конкретно, вот не могу понять как сделать ... .
А так, делать что-то за тебя полностью?

Наработки конечно же есть. Я пока загнулся мобственно на оболочке. А сама идея решения такова:
Есть запись типа рекорд Тable
Есть Список динамический с Ключом, которым является Name
Отдельно написаны робочие процедуры: Создания списка с 1 елементом. Добавления записи в список по ключу, удаление записи из списка по ключу, поиск елемена в списке по ключу.
Потом я обявьяю переменную F: array[1..19] of file of Table - массив из 19 элементов типа файл типа Тэйбл(что будет соответствовавать максимуму таблиц).
Теперь смысл таков каждая отдельно взятая таблица храниться в отдельном файле вида f[i], где i от 1 до 19.
жно открыть таблицу, я обращаюсь к файлу и считываю в динамический список данные из файла и вывожу на экран. Елсли нада то делаю манипуляции со списком и в конце снова перезаписываю этот динамический список в файл. Сортировку я щас пишу(может посоветуете какой то рациональный алгоритм сортировки списков?), но вот с интерфейсом таким как на картинке большая проблема..да еще и предусмотреть переключения окон(((( этого я не знаю как сделать.
П.С. может подход изложенный выше и не очень рациональный, но так мне показалось проще и понятнее всего...
Думаю возможно обьекты применить было бы проще, но на данный момент я не умею ими пользоваться) Еще мне предлагали под ТурбоВижн оформить, но опять же таки с этим никогда не работал..да и вроде там с обьектами нада работать, что опять же таки затрудняет работу...
вот собственно код того, что у меня есть
П.С.С. В комментариях в коде закрыты участки которые использовались для проверки работы со списками(пока без файла а только с клавиатуры): добавление, удаление, поиск по ключу, вывод на экран. Ввод в список производиться до тех пор пока мы не наберем слово END.

Код
Program LIST;
uses Crt;
type

Table= record

Name:String[20];
Term:byte;
Course:Word;
end;
PComp= ^Comp;
Comp= record
sD:Table;
pNext:PComp
end;
var
f: array[1..19] of file of Table;
pBegin, pEnd, pAux, pCKey, pPreComp: PComp;
sC, sKey: Table;
bCond: Boolean;
Procedure CreateLL(var pBegin,pEnd: PComp; var sC: Table);
begin
New(pBegin);
pBegin^.pNext:=NIL;
pBegin^.sD:=sC;
pEnd:=pBegin
end;
Procedure AddLL(var pEnd: PComp; var sC: Table);
var pAux: PComp;
begin
New(pAux);
pAux^.pNext:=NIL;
pEnd^.pNext:=pAux;
pEnd:=pAux;
pEnd^.sD:=sC
end;
Procedure Find(var sKey: Table; var pBegin,pCKey,pPreComp: PComp;
var bCond: Boolean);
begin
pCKey:=pBegin;
while (pCKey <> NIL) and (sKey.Name <> pCKey^.sD.Name) do
begin
pPreComp:=pCKey;
pCKey:=pCKey^.pNext
end;
if (pCKey = NIL) and (sKey.name <> pCKey^.sD.name) then bCond:=FALSE
else bCond:=TRUE
end;
Procedure InsComp(var sKey,sC: TAble);
var pAux:PComp;
begin
Find(sKey,pBegin,pCKey,pPreComp,bCond);
New(pAux);
pAux^.sD:=sC;
pAux^.pNext:=pCKey^.pNext;
pCKey^.pNext:=pAux
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 11:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name