
- •С оздание редактора для работ с типизированными файлами
- •Создание структуры меню.
- •Создание заглушек обработчиков событий.
- •Добавление глобальных переменных, представляющих текущее состояние процесса обработки данных.
- •Объявление типов данных
- •Создание обработчиков событий.
- •Задания для самостоятельного выполнения Общее для всех заданий
Создайте самостоятельно обработчик procedure TForm1.N5Click(Sender: TObject) события щелчка на пункте меню Файл\Сохранить, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, имея в виду следующее. Если строка S пустая, то есть не представляет имя файла, то следует передать управление обработчику команды Файл/Сохранить как…, выполнив оператор N6Click(Self), иначе – сохранить данные таблицы в файле, вызвав процедуру SaveToFileOfTz. Затем установить оператором TabModified:=false признак, что данные в таблице не модифицированы.
Создайте самостоятельно обработчик procedure TForm1.N4Click(Sender: TObject) события щелчка на пункте меню Файл.Закрыть, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, имея в виду, что если текст был изменен, то нужно в диалоге (см. справку по функции MessageDlg) выяснить, что желает пользователь. Если он нажмёт кнопук Cancel, то есть хочет вернуться к редактированию данных, то следует просо выйти из обработчика. Если он нажмёт кнопку No, то нужно очистить таблицу, вывести в заголовок окна название формы слово Form1, установить признак, что таблица не модифицирована (TabModified:=false) и присвоить S пустое значение. Если пользователь нажмёт кнопку Yes, то нужно выполнить те же действия, что и при нажатии кноки No, но предварительно сохранить данные таблицы в файле, вызвав процедуру SaveToFileOfTz, если S≠’’, или сохранить данные таблицы в файле по выбору, вызвав N6Click(Self), если S=’’.
Задания для самостоятельного выполнения Общее для всех заданий
Подпункты меню Файл: Файл.Открыть, Файл.Сохранить как, Файл\Выход и соответствующие им диалоги, а также пункт мню Работа, но с двумя индивидуальными для каждого задания подпунктами.
И
сходный (создаваемый с использованием меню Файл) файл должен иметь тип tfz=file of tz, где tz=record No:byte; Gr:string[8]; Fm:string[12]; o1,o2,o3:2..5 end, No – порядковый номер, Gr – название группы, Fm – фамилия студента, o1,o2,o3 – оценки по предметам, а основная таблица, в которой эти данные хранятся и редактируются, должна иметь вид
//Удобнее оценки объявлять как массив o:array[1..3] of 2..5;
Исходный файл должен храниться в каталоге проекта программы и иметь данные по трём группам, для каждой из которых должно быть число строк, достаточное для проверки работ по подпунктам меню Работа, но не менее 10 для каждой группы.
Если в задании какие-либо данные отсутствуют или сказано, что они должны быть введены/выбраны в диалогах, то предполагается использование OpenDialog, SaveDialog, MessageDlg или InputQuery.
Отображать результаты ваполнения задания по подмунктам меню Работа следует в таблице StringGrid1, изменяя, при необходимости, её структуру и заголовки.
В некоторых заданиях будет предложено отбирать строки файлов по маске. Маской является строка, содержащая символы замещения: * (звёздочка) – представляет любую, в том числе и пустую, последовательность символов; ? (знак вопроса) – представляет любой один, и только один символ. Например, маске *т? удовлетворяет любая последовательность символов, предпоследним символом которой является буква «т», после которого должен стоять ровно один любой символ. Такой маске будут, в частности, соответствовать слова та, эта, приметы, но не такт, этак, приметный.
Д
обавляемые
подпункты меню Работа по вариантам
1. - Объединение групп – по данным из двух файлов текущего каталога, заданным пользователем в диалоге, создать третий типизированный файл с именем, являющимся склейкой через пробел имен файлов-источников.
- Удалить запись – удалить из файла запись с заданной фамилией и группой, используя диалоги для ввода необходимых данных.
2. - Средние баллы по группам – для файла вычислить средний балл для каждой группы и отобразить в таблице редактора имена групп и соответствующие средние баллы.
- Выбор по части фамилии – загрузить в таблицу редактора строки файла, представляющие студентов всех групп, имеющих фамилию, включающую строку, заданную пользователем в диалоге.
3. - Заменить оценки – в файле заменить заданное имя группы на другое.
- Упорядочить по оценке – в файле упорядочить записи по возрастанию заданной оценки.
4. - Отличники – для выбранного файла отобразить в основной таблице сведения о студентах заданной в диалоге группы, имеющих все оценки 5.
- Должники – отобразить данные записей файла, представляющие студентов всех групп, в фамилии которых содержится заданная в диалоге строка и имеющих оценки 2. Если заданная строка пустая (сделать так по умолчанию), то отобразить данные всех записей, в которых есть оценки 2.
5. - Средний балл группы – для выбранного файла отобразить для заданной в диалоге группы средний балл по всем экзаменам.
- Хорошисты – отобразить данные записей файла, представляющие студентов всех групп, имеющих оценки, большие 3.
6. - Неуды по экзаменам – для выбранных в диалоге файла, группы и экзамена (1, 2 или 3) отобразить количество оценок 2.
- Средние баллы – для выбранного файла отобразить средние баллы по каждому экзамену для студентов всех групп, изменив соответствующим образом структуру таблицы.
7. - Список групп – по данным файла, содержащим сведения по студентам разных групп, создать новый типизированный файл с именами групп и количествами студентов в группах и отобразить его содержимое.
- Выбор по фамилии – загрузить в таблицу редактора данные записей файла, представляющие студентов всех групп, имеющих фамилию, заданную пользователем в диалоге.
8. - Разбить по группам – по данным файла, содержащим сведения по студентам разных групп, создать новые типиззированные файлы с именами '<имя группы>.rec', включающими все данные записей файла-источника с соответствующими именами групп.
- Отстающие – отобразить данные записей файла, представляющие студентов всех групп, имеющих две и более оценки 2.
9. - Добавление строки – в файл, заданный пользователем в диалоге, добавить новую строку на заданное место в файле.
- Выбор по началу фамилии – загрузить в таблицу редактора данные записей файла, представляющие студентов всех групп, имеющих фамилию, начинающуюся со строки, заданной пользователем в диалоге.
10. - Сортировка – упорядочить записи файла по фамилиям методом пузырька (массив и таблицу не использовать).
- Выбор по маске – загрузить в таблицу редактора данные записей файла, представляющие студентов всех групп, имеющих фамилию, соответствующую маске с одним символом замещения * (звёздочка), заданной пользователем в
диалоге.
11. - Средние баллы по группам – для файла вычислить средний балл для каждой группы и отобразить в таблице редактора имена групп и соответствующие средние баллы.
- Удалить запись – удалить из файла запись с заданной фамилией и группой, используя диалоги для ввода необходимых данных.
12. - Сортировка – отсортировать записи файла, заданного пользователем в диалоге, в алфавитном порядке номеров групп (массив и таблицу не использовать).
- Копирование с инверсией – записи одного файла скопировать в другой, расположив их в обратном порядке.
13. - Сортировка – отсортировать записи файла, заданного пользователем в диалоге, по возрастанию номера студента (массив и таблицу не использовать).
- Выбор по маске – загрузить в таблицу редактора данные записей файла, представляющие студентов всех групп, имеющих фамилию, соответствующую маске с одним символом замещения * (звёздочка), заданной пользователем в
диалоге.
14. - Обратить порядок – загрузить в таблицу редактора данные записей файла, очистить файл и затем выводить из редактора данные в файл в обратном порядке.
- Выбор по маске – загрузить в таблицу редактора данные записей файла, представляющие студентов всех групп, имеющих фамилию, соответствующую маске с любым числом символов замещения ? (вопросительный знак), заданной пользователем в диалоге.
15. - Число отличников по группам – для файла вычислить для каждой группы количество отличников и отобразить в строках таблицы редактора.
- Добавить запись – добавить в конец файла запись с заданной фамилией, группой, оценками и номером, используя диалоги для ввода необходимых данных, но не таблицу редактора.
16. - Сортировка – данные записей файла, заданного в диалоге, по фамилиям в порядке, обратном алфавитному
(массив и таблицу не использовать).
- Выбор по маске – загрузить в таблицу редактора данные записей файла, представляющие студентов всех групп, имеющих фамилию, не соответствующую маске с одним символом замещения * (звёздочка), заданной пользователем в диалоге.
17. - Удалить группу в новый файл – переместить из файла записи заданной группы в другой файл.
- Добавить в файл – скопировать записи одного файла в конец другого файла.
18. - Сортировка – отсортировать записи файла, заданного в диалоге, по убыванию номера студента (массив и таблицу не использовать).
- Выбор по маске – загрузить в таблицу редактора данные записей файла, представляющие студентов всех групп, имеющих фамилию, соответствующую маске с не более, чем одним символом замещения ? (знак вопроса), заданной пользователем в диалоге.
19. - Упорядочить по оценке – отсортировать записи файла, заданного в диалоге, по заданной в диалоге оценке (1, 2 или 3) (массив и таблицу не использовать).
- Изменить запись – изменить в файле запись с заданным номером, используя диалог InputQuery или InputBox для ввода необходимых данных и редактирования строки, но не таблицу редактора.
20. - Скопировать часть файла – создать в каталоге проекта новый файл и скопировать в него записи файла исходного файла с четными номерами.
- Отобразить часть файла – отобразить в таблице редактора данные первых трёх записей нового файла (см. предыдущий пункт задания). Выдать сообщение, если трех записей нет.
21. - Сортировка – отсортировать записи файла, заданного в диалоге, по убыванию сумм баллов.
(массив и таблицу не использовать).
- Выбор по маске – загрузить в таблицу редактора данные записей файла, представляющие студентов всех групп, имеющих фамилию, соответствующую маске с более, чем одним символом замещения ? (знак вопроса), заданной пользователем в диалоге.
22. - Сортировка по группам –отсортировать данные записей файла, заданного в диалоге, по убыванию групп (массив и таблицу не использовать).
- Выбор по маске – загрузить в таблицу редактора данные записей файла, представляющие студентов всех групп, имеющих фамилию, соответствующую маске с любым числом символов замещения ? (знак вопроса), заданной пользователем в диалоге.
23. - Упорядочить по оценке – упорядочить в файле записи по убыванию заданной (1, 2 или 3) в диалоге оценки.
(массив и таблицу не использовать).
- Заменить запись – в диалоге ввести данные для записи и заменить ею запись файла с такой же фамилией и группой при загрузке в редактор строк из файла; результат сохранить в том же файле.
24. - Три последних записи – отобразить в таблице редактора данные трёх поседних записей файла, выбранного в диалоге. Если нет трех записей, то выдать сообщение.
- Выбор N лучших –загрузить в таблицу редактора данные N записей файла, представляющих студентов всех групп, имеющих наибольшие суммы баллов.
25. - Добавить средние баллы – отобразить в таблице данные записей файла, добавив в конце каждой строки таблицы (в новой колонке) значения средних баллов.
- Упорядочить по СредБаллу – упорядочить в таблице редактора строки по убыванию среднего балла и вывести данные (без средних баллов) в тот же файл, не меняя тип файловой переменной.
26. - Добавить СредБаллы групп – по данным файла-источника создать типизированный файл ‘SbGr.rec’, поместив в него записи, включающие имя группы и средний балл в группе по всем экзаменам.
- Выбор трёх худших – загрузить в таблицу редактора данные трёх записей файла, представляющие студентов заданной пользователем в диалоге группы, имеющих наименьшие суммы баллов.