Помощь - Поиск - Пользователи - Календарь
Полная версия: БД с Редактором
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Vadim87
Люди помогите сделать программку или подскажите где можна найти похожее что то, а то понятия не имею как сделать...
Составить программу, которая позволяет создавать, открывать, редактировать и
сохранять в файлы таблицы заданного вариантом формата. Для работы с записями
таблицы(строка данных об одном объекте) использовать тип RECORD. Для каждой
отдельной таблицы количество записей в ней должно динамически изменяться. Иными
словами для организации таблицы следует использовать динамические структуры данных
(рекомендуется двунаправленный список-«дек»). Максимальное количество таблиц,
которое можно открыть, задается вариантом. Для хранения таблиц рекомендуется
использовать массив записей характеризирующих таблицу. Программа должна обладать
дружественным интерфейсом. Необходимо наличие строки контекстных подсказок с
описанием основных комбинаций клавиш, используемых для управления. Каждая таблица
должна открываться в новом окне. Необходимо предусмотреть возможность
переключения между окнами. Окна реализовать в текстовом режиме. Все служебные
диалоги реализовать также в текстовых окнах. При работе с таблицами предусмотреть
возможность добавления, редактирования, удаления, сортировки и поиска записей.
Максимальное кол-во таблиц 19
Названия, имена и типы полей записи в таблице Название Имя Тип
№пп Num Byte
Название Name String
Семестр Term Byte
Кол-во часов Course Word
Поиск по полю Название
Сортировка по полю Семестр
Выглядеть все это должно приблезительно так как на прикрепленном рисунке
Спасибо зарание.
О_Джей_Симпсон
сроки выполнения какие?
Vadim87
Цитата(О_Джей_Симпсон @ 8.08.2007 12:10) *

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

Сроки ..до сентября время точно есть...
arhimag
Давай ты начнешь, а мы тебе поможем.
Если сразу что-то не знаешь, то спроси конкретно, вот не могу понять как сделать ... .
А так, делать что-то за тебя полностью?
Vadim87
Цитата(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;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.