![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Vadim87 |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Люди помогите сделать программку или подскажите где можна найти похожее что то, а то понятия не имею как сделать...
Составить программу, которая позволяет создавать, открывать, редактировать и сохранять в файлы таблицы заданного вариантом формата. Для работы с записями таблицы(строка данных об одном объекте) использовать тип RECORD. Для каждой отдельной таблицы количество записей в ней должно динамически изменяться. Иными словами для организации таблицы следует использовать динамические структуры данных (рекомендуется двунаправленный список-«дек»). Максимальное количество таблиц, которое можно открыть, задается вариантом. Для хранения таблиц рекомендуется использовать массив записей характеризирующих таблицу. Программа должна обладать дружественным интерфейсом. Необходимо наличие строки контекстных подсказок с описанием основных комбинаций клавиш, используемых для управления. Каждая таблица должна открываться в новом окне. Необходимо предусмотреть возможность переключения между окнами. Окна реализовать в текстовом режиме. Все служебные диалоги реализовать также в текстовых окнах. При работе с таблицами предусмотреть возможность добавления, редактирования, удаления, сортировки и поиска записей. Максимальное кол-во таблиц 19 Названия, имена и типы полей записи в таблице Название Имя Тип №пп Num Byte Название Name String Семестр Term Byte Кол-во часов Course Word Поиск по полю Название Сортировка по полю Семестр Выглядеть все это должно приблезительно так как на прикрепленном рисунке Спасибо зарание. Эскизы прикрепленных изображений ![]() |
О_Джей_Симпсон |
![]()
Сообщение
#2
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
сроки выполнения какие?
|
Vadim87 |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
arhimag |
![]()
Сообщение
#4
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
Давай ты начнешь, а мы тебе поможем.
Если сразу что-то не знаешь, то спроси конкретно, вот не могу понять как сделать ... . А так, делать что-то за тебя полностью? -------------------- Чего хочет женщина – того хочет Бог
|
Vadim87 |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Давай ты начнешь, а мы тебе поможем. Если сразу что-то не знаешь, то спроси конкретно, вот не могу понять как сделать ... . А так, делать что-то за тебя полностью? Наработки конечно же есть. Я пока загнулся мобственно на оболочке. А сама идея решения такова: Есть запись типа рекорд Т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; |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 18:40 |