ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Армавирский государственный педагогический университет Давиденко А.Н. Учебно-методическое пособие «Лабораторные работы по курсу «РАЗРАБОТКА И СТАНДАРТИЗАЦИЯ ПРОГРАММНЫХ СРЕДСТВ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ» для студентов заочной формы обучения Армавир 2009 1 Печатается по решению УМС АГПУ Давиденко А.Н. Учебно-методическое пособие «Контрольные работы по курсу РАЗРАБОТКА И СТАНДАРТИЗАЦИЯ ПРОГРАММНЫХ СРЕДСТВ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ» для студентов заочной формы обучения. – Армавир, АГПУ. – 2009. – 50 с. Пособие содержит краткий теоретический материал по курсу РАЗРАБОТКА И СТАНДАРТИЗАЦИЯ ПРОГРАММНЫХ СРЕДСТВ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, а также 25 вариантов контрольных работ. Пособие предназначено для студентов математических факультетов педагогических институтов и университетов. Оно может быть использовано учителями, учащимися, а также слушателями института усовершенствования учителей для контроля знаний учащихся. Рецензент: к.ф-м.н., декан физического факультета АГПУ, Парзян В.А. ©Армавирский государственный педагогический университет 2 Оглавление 1. Тестирование и отладка №1 ......................................................................... 4 2. Ввод программного комплекса в эксплуатацию №2 .................................... 12 3. Быстрая разработка приложений. Разработка MDI–приложения №3 .......... 19 4. Быстрая разработка приложений. Разработка SDI–приложения №4 .......... 27 5. Измеряемые свойства программы №5 ........................................................ 35 6. Проектирование АИС средствами Microsoft Access №6 ................................ 39 3 Тестирование и отладка №1 Продолжительность: 80 мин. Дисциплина: Разработка и стандартизация программных средств и информационных технологий. Предназначено: Для студентов по направлению ПИЭ в соответствии с учебным планом. Цель: изучить методы тестирования и отладки на практическом примере. Результат обучения: o изучение средств отладки инструментальной среды Delphi 7; o использование методов тестирования и отладки на практическом примере. Используемые программы: ИСР - Delphi 7. Используемые папки: ПТ_0641_04 План занятия: Часть I. Методы тестирования и отладки 10 минут Часть II. Средства отладки Delphi 7 минут 10 Часть III. Самостоятельная работа 60 минут ЗАПУСК ПРОГРАММЫ: Предполагается, что требуемые программы уже инсталлированы на диске. Часть I. Методы тестирования и отладки Рекомендуемое время 10 минут Тестирование — процесс выполнения программ с целью обнаружения факта наличия ошибок. Отладка — процесс локализации и устранения ошибок. Процессы тестирования и отладки схематически могут быть представлены следующим образом: 4 Разработка тестов Исполнение программы Разработка дополнительных тестов для локализации ошибки Разработка дополнительных тестов для контроля исправления Да Причина локализована Результаты соответствуют эталонным Исправление программ Диагностика искажений Да Достаточно полноты тестирования Да Регистрация завершения рис. 1 Тестирование Тестирование начинается с разработки множества тестов и их исполнения на основе одной из выбранных методик. Подготовка дополнительных тестов потребуется при недостаточной полноте тестирования, невозможности локализовать проблему с помощью имеющихся тестов и необходимости выполнить контроль сделанного исправления. Существуют две основные стратегии тестирования. Тестирование программы как черного ящика, при котором программа рассматривается как объект, внутренняя структура которого неизвестна. Тестирование программы как прозрачного (белого) ящика подразумевает знание исходного кода программы и полный доступ к нему. При тестировании по типу «черного ящика» тесты демонстрируют: как выполняются функции программы; как принимаются исходные данные; как вырабатываются результаты; как сохраняется целостность внешней информации. При тестировании «черного ящика» рассматриваются системные характеристики программ, игнорируется их внутренняя логическая структура. Для тестирования программ методом «черного ящика» готовятся определенные группы тестов. Для тестирования классов эквивалентностей. Классы эквивалентности позволяют вместо большого количества тестов использовать лишь их небольшое подмножество. Каждый тест представляет набор тестов, на которых программа ведет себя одинаково. Существует два типа классов эквивалентностей: **Класс корректных тестовых случаев, отражающих типичную «нормальную» ситуацию. **Класс тестов, содержащих ненормальную ситуацию, т.е. описывающих ситуацию, которой быть не должно. Для тестирования граничных значений. Для анализа причинно–следственных связей. Для тестирования тех утверждений, которые приводятся в документации. При тестировании по типу «белого ящика» исследуются внутренние элементы и связи между ними. Объектом тестирования является не внешнее, а внутреннее 5 поведение программы. Проверяется корректность построения всех элементов программы и правильность их взаимодействия друг с другом. Тестирование по принципу «белого ящика» характеризуется степенью, в какой тесты выполняют или покрывают логику (исходный текст) программы. Наиболее важный принцип, относящийся к тестированию программ, состоит в том, чтобы думать об этой стадии еще на этапе написания программы. Следует постоянно задаваться вопросом: как будет тестироваться данный сегмент? Если ответ на вопрос о способе тестирования программы неясен, она должна быть либо переписана заново, либо разбита на модули. Для составления тестов используются следующие источники: справочники; вычисления вручную; использование результатов, полученных при помощи другой программы. Поскольку в процессе разработки приходится тестировать еще не завершенную программу, все подходы делятся на две группы. Тестирование сверху вниз. Применяется, если программа разрабатывается сверху вниз. В данном случае используются «заглушки» — фрагменты кода, имитирующие еще не написанные части программы. Тестирование снизу вверх. При этом, как правило, дополнительно должна быть создана программа — «драйвер», организующая взаимодействие уже написанных модулей. Если процесс тестирования показал, что программа работает неправильно, то начинается процесс отладки. В процессе отладки локализуется ошибка. Отладка программы — процесс творческий и плохо формализуемый. Тем не менее, основной идее отладке можно придать вид следующего алгоритма: Следует начать с изучения уже доступных исходных и результирующих данных. Сформулировать некоторую гипотезу, которая объясняет получение таких результирующих данных. Подготовить новые исходные данные и провести эксперимент, который позволит доказать или опровергнуть гипотезу. Для отладки программ в инструментальные среды программирования встраиваются специальные отладчики. Часть II. Средства отладки Delphi Рекомендуемое время 10 минут Отладка — это локализация ошибки и ее исправление. Для этого используются точки прерывания, пошаговое выполнение программы и просмотр ряда переменных на различных шагах выполнения программы. Окно наблюдения Наблюдать за состоянием переменной или выражения можно с помощью специального окна, вызываемого опцией View | Debug windows | Watches (cm. там же). 6 Окно наблюдения (рис. П 1.17) используется в отладочном режиме для наблюдения за изменением значений выражений, помещенных в это окно. Для добавления нового выражения щелкните по окну правой кнопкой мыши и выберите опцию New Watch. В строке Expression введите выражение. Окно Repeat count определяет количество показываемых элементов массивов данных; окно Digits указывает количество значащих цифр для отображения вещественных данных; переключатель Enabled разрешает или запрещает вычисление выражения. Остальные элементы определяют вид представления значения. Замечу, что в последних версиях Delphi вы можете просмотреть в отладочном режиме текущее значение любой переменной, если укажите на нее курсором: значение появится в ярлычке рядом с курсором. рис. 2 Точки контрольного останова Точка контрольного останова определяет оператор в программе, перед выполнением которого программа прервет свою работу и управление будет передано среде Delphi. Точка останова задается с помощью опции view | Debug windows | Breakponts. Окно точек останова (рис. 2) содержит список всех установленных в проекте точек, перед выполнением которых происходит прекращение работы программы и управление получает среда Delphi. Для добавления новой точки следует щелкнуть по окну правой кнопкой мыши и выбрать опцию Add. В этом случае появляется окно, с помощью которого можно указать положение добавляемой точки: FileName - определяет имя файла; Line number - номер строки от начала файла (в момент появления окна оно содержит файл и строку с текстовым курсором). В строке Condition можно указать условие останова в виде логического выражения (например, MyValue = Мах-Value12), а в строке Pass count - количество проходов программы через контрольную точку без прерывания вычислений. 7 рис. 3 Окно точек останова (слева) и окно добавления новой точки (справа) В Delphi 5 и 6 с любой точкой можно связать одно или несколько действий. Для этого нужно активизировать окно точек останова, вызвать его локальное меню (щелчок правой кнопкой) и выбрать продолжение Properties. В появившемся окне свойств щелкнуть по кнопке Advanced (рис. П1.19). В нижней части окна имеется панель Actions, с помощью которой и определяются действия для точки останова, указанной в верхней части окна. Break - простой останов перед выполнением помеченного оператора. ignore subsequent exceptions - если переключатель установлен, игнорируются все возможные последующие исключения в текущем отладочном сеансе до очередной точки останова, в которой, возможно, это действие будет отменено. Handle subsequent exceptions - после установки этого переключателя отменяется действие предыдущего переключателя и возобновляется обработка возможных исключений. С помощью Log message вы можете указать произвольное сообщение, связанное с точкой останова, а с помощью Eval expression - вычислить некоторое выражение и поместить его результат в это сообщение. Трассировка программы 8 Перед исполнением оператора, в котором установлена точка контрольного останова, работа программы будет прервана, управление получит среда Delphi, a в окне наблюдения отразится текущее значение наблюдаемых переменных и/или выражений. Теперь программист может прослеживать работу программы по шагам с помощью клавиш F7 и F8 или инструментальных кнопок. При нажатии F8 будут выполнены запрограммированные в текущей строке действия, и работа программы прервется перед выполнением следующей строки текста программы. Замечу, что контрольная точка останова выделяется по умолчанию красным цветом, а текущая прослеживаемая строка - синим. Если программа остановлена в контрольной точке, т.е. когда текущая строка совпадает со строкой останова, строка выделяется красным цветом, Признаком текущей строки является особое выделение строки в служебной зоне слева в окне редактора (см. рис. П1.18). рис. 4 Фрагмент окна редактора в режиме отладки Кстати, чтобы установить/снять точку контрольного останова, достаточно щелкнуть мышью по служебной зоне слева от нужной строки или установить в эту строку текстовый курсор и нажать F5. При нажатии F7 среда выполняет те же действия, что и при нажатии F8, однако, если в текущей строке содержится вызов подпрограммы пользователя, программа прервет свою работу перед выполнением первого исполняемого оператора этой подпрограммы, т.е. клавиша F7 позволяет прослеживать работу вызываемых подпрограмм. После трассировки нужного фрагмента программы можно продолжить нормальную ее работу, нажав клавишу F9. Часть III. Самостоятельная работа Рекомендуемое время 60 минут 9 1. Разработайте в среде Delphi 7 проект в соответствии с вариантом. 2. Разработайте план тестирования Вашего программного комплекса. При подготовке контрольных тестов воспользуйтесь вышеописанными рекомендациями. Тесты должны отображать: a. типичную ситуацию; b. ненормальную ситуацию; c. граничные значения; d. затрагивающие причинно–следственные связи. Одним из тестов является контрольный пример из раздела «Постановка задачи». Так как работа продолжается в бригаде, то в наличие имеется не один, а несколько контрольных примеров. 3. Воспользуйтесь опцией Go to Cursor для перехода в режим отладки. При остановке выполнения программы добавьте в окно просмотра (Add Watch) наименования нескольких интересующих Вас переменных. Вызовите окно просмотра (Watch). Далее выполняйте программу по шагам (F7 или F8). В окне просмотра можно наблюдать интересующие Вас переменные. Если окно просмотра по какой-то причине исчезло с экрана, в него можно перейти с помощью клавиши F6. Для прекращения работы программы следует нажать комбинацию клавиш Ctrl F2 или выполнить опцию Program Reset. Можно продолжить выполнение программы, нажав Ctrl F9. 4. Установите в программе несколько контрольных точек и запустите программу на выполнение. Просмотрите значения интересующих Вас переменных с помощью окна просмотра, так же как это было предложено в предыдущем пункте. 5. Воспользуйтесь опцией Go to Cursor для перехода в режим отладки. При остановке выполнения программы откройте окно Evaluate/modify и просмотрите значения интересующих Вас переменных. Измените значение какой-нибудь переменной, записав новое в окно New Value. 6. Выполните такое же задания, используя точки останова (Breakpoint). 7. Ознакомьтесь с процессом выполнения программы при запуске ее с помощью опций Trace Into (F7) и Step Over (F8). Варианты заданий 1. Задана арифметическая прогрессия. 7,1; 5,3; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0. 2. Задана арифметическая прогрессия. 8,4; 6,2 … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0. 3. Задана арифметическая прогрессия. 2; 3,8; ... . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала >30. 4. Подсчитать количество и сумму четных трехзначных чисел. 5. Подсчитать сумму двухзначных чисел, сумма цифр которых не превышает 7. 6. Подсчитать количество двузначных чисел, кратных 3. 7. Подсчитать сумму двузначных чисел, сумма цифр которых не превышает 10. 8. Подсчитать количество и сумму трехзначных чисел, кратных 3. 9. Подсчитать количество и сумму четных трехзначных чисел. 10. Протабулировать функцию y=x3-1 на интервале [-1,3] с шагом 0.2. 11. Протабулировать функцию y=x2-1/x на интервале [1,2] с шагом 0.05. 12. Протабулировать функцию y= sin x – cos x на интервале [-,] с шагом /10. 13. Протабулировать функцию y= cos(x)*x на интервале [-,] с шагом /10. 10 14. Протабулировать функцию y=sin2x на интервале [0,] с шагом /20. 15. Протабулировать функцию y= cos x2+sin x2 на интервале [-/2,/2] с шагом /10. 8. Продолжите отладку работы с отладчиком. разрабатываемой программы, используя навыки 11 12 Ввод программного комплекса в эксплуатацию №2 Продолжительность: 80 мин. Дисциплина: Разработка и стандартизация программных средств и информационных технологий. Предназначено: Для студентов по направлению ПИЭ в соответствии с учебным планом. Цель: Изучить способы оформления программного продукта. Ознакомиться с сопроводительной документацией. Результат обучения: o закрепление навыков работы со стандартными подпрограммами; o умение придать программному продукту товарный вид; o изучить минимальный набор документов для внедрения программы. Используемые программы: ИСР - DELPHO 7.0. Используемые папки: ПТ_0641_06 План занятия: Часть I. Оформление программного продукта 10 минут Часть II. Документация на разработанный программный продукт 10 минут Часть III. Самостоятельная работа минут 60 ЗАПУСК ПРОГРАММЫ: Предполагается, что требуемые программы уже инсталлированы на диске. (См. «Инструкцию по установке программы на ПК») Часть I. Оформление программного продукта Рекомендуемое время 10 минут Работа любого профессионально разработанного программного комплекса начинается с заставки, являющейся ее визитной карточкой. Заставка может содержать название программы, информацию о ее назначении, фамилию автора программы или название фирмы. Можно вынести в заставку некоторые особенности работы программы. В заставке могут использоваться различные программные решения, зависящие от того, в каком видеорежиме выводится заставка (графическом или текстовом), от объема информации, содержащейся в заставке, и многих других факторов. Заставка может состоять из одного, двух или более кадров. В случае использования заставки из нескольких кадров их смена осуществляется по 12 13 нажатию какой-либо клавиши, кнопки манипулятора мышь или автоматически через определенный промежуток времени. Демонстрация заставки может сопровождаться звуковыми эффектами. Немаловажным фактором при оценке качества программы является красивый и наглядный вывод. При выводе информации необходимо предусмотреть пояснения результатов. Если чтение информации облегчается, то организовать табличный вывод. Вывод единичного значения лучше представить в центре экрана. Некоторую информацию, имеющую особо важное значение, можно выделить цветом или обвести рамкой. Один из возможных вариантов оформления готового программного продукта (учебный вариант) предложен в файле «Uchcompl.pas». Запустите программу на исполнение и ознакомьтесь с ее оформлением. Можно воспользоваться исполняемым файлом «Uchcompl.exe». Имя запрашиваемого файла — Proba.dat. В программе использована заставка, поясняющая назначение программы. Для организации вывода использованы приемы центрирования выводимых значений, выделяющая рамка, цветовые эффекты. Часть II. Документация на разработанный программный продукт Рекомендуемое время 10 минут Документация на программный продукт, компонент или модуль программного средства должна содержать: техническое задание (ТЗ) и/или спецификацию требований на разработку программы; описание программы в виде печатного документа; фрагмент руководства пользователя — описание применения программного компонента; исходный текст программы в виде печатного документа; исходный и объектный код программы на магнитных или иных носителях. С основными требованиями к описанию программы можно познакомиться в документе «Описание_программы.Htm». Содержание руководства пользователя (описание применения) программного продукта приведено в документе «Внедрение.Htm». Часть III. Самостоятельная работа Рекомендуемое время 60 минут 1. Выполните задание в среде программирования Delphi в соответствии с вариантом. 2. Составьте документацию на программный продукт (Приложение 2). a. Техническое задание скопируйте из документа «Постановка задачи». Если в процессе разработки были внесены изменения в постановку задачи, то соответствующим образом скорректируйте техническое задание. 13 14 b. Составьте описание программы. c. Напишите инструкцию для пользователя. d. Подключите тексты всех программ и стандартных процедур. 3. Проверьте наличие сопроводительных документов. В процессе разработки Вы создали следующие документы: e. Постановка задачи. f. Функциональные диаграммы и диаграммы потоков данных. g. Спецификации модулей. h. Схемы программ. i. Документация на программный продукт. Приложение 1 Варианты заданий: 1. Создать файл, содержащий данные: ФИО ученика; класс; оценка. Просмотреть записи. Определить среднюю оценку в 9-м классе. 2. Создать файл, содержащий данные: ФИО студента; группа; оценка по информатике. Просмотреть записи. Определить среднюю оценку по информатике в 302 группе. 3. Создать файл, содержащий данные: ФИО работника; цех; стаж работы. Просмотреть записи. Определить средний стаж работы работников 1 - го цеха. 4. Создать файл, содержащий данные: ФИО работника; пол; количество детей. Просмотреть данные из файла. Определить количество женщин, имеющих более двух детей. 5. Создать файл, содержащий данные: ФИО ученика; пол; рост. Просмотреть данные из файла. Определить средний рост девочек. 6. Создать файл, содержащий данные: ФИО ученика; класс; пол. Просмотреть данные из файла. Определить количество мальчиков в 5 классе. 7. Создать файл, содержащий данные: ФИО студента; группа; оценка по информатике. Просмотреть данные из файла. Определить количество ‘4’ и‘5’ в 301 группе. 8. Создать файл, содержащий следующие данные: ФИО студента; пол; группа. Вывести данные из файла на экран. Подсчитать количество юношей и количество девушек 301 группы. Создать новый файл данных, содержащий сведения о студентах 302 группы (используя существующий файл данных). 9. Создать файл, содержащий следующие данные: ФИО студента; год рождения; группа; наличие золотой или серебряной медали. Вывести данные из файла на экран. Подсчитать количество медалистов. Создать новый файл данных, содержащий сведения о студентах, имеющих золотую медаль (используя существующий файла данных). 10. Создать файл, содержащий следующие данные: ФИО рабочего; количество отработанных дней; сумма зарплаты. Вывести данные из файла на экран. Подсчитать общую сумму зарплаты, выданной рабочим. Создать новый файл данных, содержащий сведения о рабочих, зарплата которых менее заданного значения. Приложение 2 14 15 Постановка задачи Задание на разработку программного обеспечения Название Задача Программа Система программирования Компьютер Описание Входные данные Выходные данные Ошибки Контрольный пример Название задачи Дается краткое определение решаемой задачи, название программного комплекса, указывается система программирования для его реализации и требования к аппаратному обеспечению (компьютеру, внешним устройствам и т. д.). Описание Подробно излагается постановка задачи, описывается применяемая математическая модель для задач вычислительного характера, метод обработки входных данных для задач не вычислительного (логического) характера и т.д. 15 16 Управление режимами работы программы Формулируются основные требования к способу взаимодействия пользователя с программой (интерфейс пользователь–компьютер). Входные данные Описываются входные данные, указываются пределы, в которых они могут изменяться, значения, которые они не могут принимать, и т.д. Выходные данные Описываются выходные данные, Указывается, в каком виде они должны быть представлены — в числовом или текстовом, в виде таблицы или Web–документа, на диске, печатающем устройстве или дисплее и другие. Ошибки Перечисляются возможные ошибки пользователя при работе с программой. Например, ошибки при вводе исходных данных и другие. Указываются способы диагностики (под диагностикой понимается выявление, обнаружение ошибок при работе программного комплекса) и защиты от этих ошибок на этапе проектирования, а также возможная реакция программного комплекса на эти действия. Контрольные примеры работы программного комплекса Приводится один или несколько примеров работы программного комплекса, на которых в простейших случаях проводится его отладка и тестирование. Дополнительный материал Среда Delphi даёт вам возможность выбрать один из четырёх вариантов работы: 1. использование традиционного набора функций работы с файлами, унаследованного от Turbo Pascal 2. использование функций ввода\вывода Windows API 3. использование потоков (TStreami и его потомков) 4. использование отображаемых файлов При организации операций файлового ввода\вывода в приложении большое значение имеет, то, какого рода информация содержится в файле. Чаще всего это строки, но так же встречаются и двоичные данные или структурированная информация, например массивы или записи. Перед началом работы с файлом, необходимо знать, к какому тиу он относится, для этого существуют специальные переменные, которые нужно первоначально задать. Они делятся на типизированные и нетипизированные. В Delphi есть возможность работа с нетипизированными файлами, для этого используется зарезервированное слово - file var Untype : file; При этом можно подразумевается, что данные читаются и записываются ввиде двоичного массива. 16 17 Типизированные файлы обеспечивают ввод\вывод с учётом конкретного типа данных. Для этого используется зарезервированное слова - file of Например, для работы с файлом, в котором содержатся набор битов, файловая переменная объявляется так: var ByteFile : file of byte; Также возможно использовать структурированные типы. Например можно создать файловую переменную для записи, следующим образом. type Groupp = record FIO: String; Age: integer; Address: String; end; var GroupName: file of Groupp; Для работы с текстовыми файлами существует специальная файловая переменная TextFile или просто Text. var F: TextFile; Теперь мы рассмотрим две самые распространённые операции над файлами, а именно чтения и запись. Для их выполнения применяются специальные функции. Рассмотрим по пунктам, что нужно для работы с файлами: 1. Объявить файловую переменную, необходимого вам типа. 2. С помощью функции AssignFile связать эту переменную с необходимым файлом. 3. Открыть файл при помощи Append, Reset, Rewrite 4. Выполнить операции чтения или записи, в зависимости от поставленной задачи. 5. Закрыть файл с помощью функции CloseFile В качестве примера рассмотрим следующий код программы: ... var F: TextFile; S: String; begin if OpenDlg.Execute then AssignFile (F,OpenDlg.FileName) else Exit; Reset(f); while Not EOF (F) do begin ReadLN (F,S); Memo.Lines.Add(S); end; CloseFile(F); end; Если в диалоге открытия файла OpenDlg был выбран файл, то его имя связывается с файловой переменной F при помощи AssignFile. В качестве имени файла, рекомендлуется указывать не относительный путь, а абсолютный! Затем, с помощью процедуры Reset происходит открытие файла для чтения и записи.В цикле осуществялется чтение из файла и запись его данных в компонент TMemo. ReadLn осуществляет чтение текущей строки и помещает её в переменную S 17 18 (символьный тип). Цикл выполняется до тех пор, пока функция EOF (End of File) не сообщит о конце файла. После завершения чтения, файл закрывается при помощи процедуры CloseFile. Таким же образом можно осуществлть запись в файл, стоит лишь только заменить процедру считывания из файла, на процедур записи. Существует три способа открытия файла, в зависимости от поставленной задачи: Процедура Reset, открывает сущесвующий файл для чтения и записи, тукущая позиция устанавливается на первой строке файла. Процедура Append, открывает файл для записи, текущая позиция устанавливается после последней строки. Т.е. используется для дозаписи в файл. Процедура Rewrite, открывает файл для записи, текущая позиция устанавливается на первой строке. Если файл существовал, то он очистится, если файл не существует, то он создастся. Копирование файлов. Для копирование файлов, используется функция Copyfile. Формат функции: CopyFile (Исходный файл, Записуемый фал, Флаг записи) где: Исходный файл, это файл который мы собираемся копировать. Записуемый файл, это файл, в который мы собираемся копировать. Флаг записи, будет ли перезаписан файл, если он уже существует. (true - будет, false не будет) CopyFile является функцией, которая возвращает успешно ли выполнена операция или нет. Обработка результата выполнения копирования файла: if not CopyFile(исходный файл,записуемый файл,флаг записи) then ShowMessage('Ошибка копирования'); Таким образом, это строка осуществялет копирование файла, при неудачной попытке будет выдаваться сообщение об ошибке копирования. Тем самым вы всегда будете знать была ли выполнена операция успешно или нет. Перемещение файла, осуществляется посредством фуекции MoveFile. Так же опишем формат записи: MoveFile(Исходный файл, записуемый файл); Результат выполнения, можно обработать таким же образом как и при случае копирования: if not MoveFile('c:\1.txt','c:\dir\1.txt') then ShowMessage("Ошибка при перемещении файла"); Перемеинование файла: Для данной операции используется функция RenameFile. Формат записи: RenameFile(исходный файл, новое имя файла); Обработка результата выполнения: if not RenameFile('c:\1.txt','c:\2.txt') then ShowMessage("Ошибка переименования"); Удаление файла: DeleteFile('c:\1.txt'); 18 19 Быстрая разработка приложений. Разработка MDI–приложения №3 Продолжительность: 80 мин. Дисциплина: Разработка и стандартизация программных средств и информационных технологий. Предназначено: Для студентов по направлению ПИЭ в соответствии с учебным планом. Цель: Изучить процесс проектирования и программирования приложения с MDI– интерфейсом. Результат обучения: o изучение особенностей MDI и SDI–стилей приложений; o закрепление навыков работы в среде RAD Delphi; o изучение способа создания MDI–приложения. Используемые программы: ИСР – Delphi 6. Используемые папки: ПТ_0641_07 План занятия: Часть I. Быстрая разработка приложений минут 10 Часть II. Создание приложения в стиле MDI минут 30 Часть III. Самостоятельная работа минут 40 ЗАПУСК ПРОГРАММЫ: Предполагается, что требуемые программы уже инсталлированы на диске. (См. «Инструкцию по установке программы на ПК») Часть I. Быстрая разработка приложений Рекомендуемое время 10 минут Модель быстрой разработки приложений (Rapid Application Development) — пример применения инкрементной стратегии конструирования. Инкрементная модель характеризуется тем, что в начале процесса проектирования определяются все пользовательские и системные требования, оставшаяся часть конструирования выполняется в виде последовательности версий. RAD–модель обеспечивает экстремально короткий цикл разработки. Быстрота разработки достигается за счет использования компонентно–ориентированного конструирования. Если требования полностью определены, а проектная область ограничена, RAD–процесс позволяет группе создать полностью функциональную систему за очень короткое время. Скорость выполнения работы определяется тем, что RAD–процесс работает с 19 20 повторно используемыми программными компонентами или создает повторно используемые компоненты. Для обеспечения конструирования используются утилиты автоматизации. В RAD–средах базовой парадигмой является объектно–ориентированное программирование. В основе ООП лежит понятие объекта, как некоего самостоятельного элемента (составной части программного кода), предназначенного для выполнения строго определенных операций над некоторыми данными. Однажды написанные и отлаженные объекты позволяют повторно использовать программный код. Имея под рукой коллекцию готовых объектов программист с легкостью может вставить любой из них в новую программу. Особенно плодотворной эта идея оказалась при разработке программных интерфейсов. Специальные объекты — компоненты позволяют собирать интерфейсы программ из нужных элементов управления за считанные минуты. Применение объектов в практике программирования повышает надежность программ, так как каждый объект работает только со своими данными, а попытка использовать чужие переменные противоречит принципам ООП. С появлением инструментов визуального программирования, таких, как Visual C, Visual Basic, Power Builder, Delphi, создание графического пользовательского интерфейса перестало быть прерогативой лишь немногих специалистов. Визуальное программирование позволило свести проектирование пользовательского интерфейса к простым и наглядным процедурам, которые дают возможность за минуты или часы сделать то, на что ранее уходили месяцы работы. Часть II. Создание приложения в стиле MDI Рекомендуемое время 30 минут Подавляющее большинство современных приложений обеспечивают взаимодействие с пользователем на основе применения элементов управления, размещенных в одном или нескольких окнах. В зависимости от способа взаимодействия окон приложения с главным окном различают типы интерфейсов приложений. Форма является основным строительным блоком в Delphi. Форма — это окно на этапе разработки. 1. Начните новое приложение (File|New Application). 2. Разновидности форм определяются значениями их свойств FormStyle, а также разнообразием форм–заготовок, хранящихся в репозитории Delphi. Выделите свойство FormStyle в Инспекторе объектов и посмотрите список значений этого свойства. Стили fsMDIChild и fsMDIForm используются при создании так называемых многодокументных приложений в стиле MDI (Multi Document Interface). Этот стиль предполагает создание главного окна, внутри которого по мере надобности появляются дочерние окна. Дочерние окна не могут существовать без главного, — при закрытии приложения и уничтожении главного окна все открытые дочерние окна также сворачиваются. Примером такого стиля является текстовый редактор Word. 20 21 Среда Delphi представляет собой многооконное приложение в стиле SDI, который не накладывает ограничений на положение и размеры вспомогательных форм. Для создания форм в этом случае используется стиль fsNormal. Стиль fsStayOnTop используется для окон, которые всегда должны располагаться над всеми другими окнами программы. 3. Разработаем приложение для просмотра графических изображений. Для этого воспользуемся MDI–стилем. 3.1. В главном окне, содержащем инструменты по работе с графическими изображениями, можно будет открыть несколько дочерних окон. Установите свойство FormStyle родительской формы равным fsMDIForm. 3.2. Заголовок формы должен носить информационный характер. Задайте свойству Caption формы значение «Просмотр картинок». 3.3. Свойство Name определяет имя, под которым компонент будет известен программе. Рекомендуется давать компонентам имена «со смыслом». Задайте свойству Name формы значение M_Parent 3.4. Свойство Hint определяет содержание ярлычка (всплывающей подсказки). Для того, чтобы компонент мог показать ярлычок нужно свойству ShowHint присвоить значение true. 3.5. Для создания инструментальных панелей предназначен компонент TToolBar, расположенный на панели Win32 палитры компонентов. Поместите на форму компонент TToolBar. Для компонента специально разработан компонент TToolButton. Щелкните правой кнопкой на компоненте TToolBar и в контекстном меню выберите пункт NewButton. Это кнопки класса TToolButton. Добавьте еще одну кнопку на инструментальную панель. Для функционального выделения групп элементов предназначены сепараторы. Вставьте эту разновидность кнопки, выбрав пункт меню NewSeparator. Добавьте еще одну кнопку на панель. 3.6. Поместите на форму компонент TImageList и, двойным щелчком по компоненту, вызовите редактор ImageList Editor. С помощью кнопки Add в контейнер изображений помещается картинка. Добавьте изображение FldrOpen, которое расположено в подкаталоге Images\Buttons. Растры из каталога Images\Buttons имеют по два изображения. Удалите второе изображение — нажмите кнопку Delete. Добавьте еще одну картинку из каталога Buttons (имя файла FontSize). Не забудьте удалить второе изображение. Имя следующей картинки Picture. Добавьте ее в контейнер изображений. 3.7. Выделите компонент TToolBar. В Инспекторе объектов найдите свойство Images. Это свойство позволяет назначить набор картинок. Выберите ImageList1 из выпавшего списка свойства. 21 22 3.8. Свойство Hint определяет содержание ярлычка — небольшого справочного окна возле элемента, на котором остановился курсор. Назначьте свойству Hint компонентов ToolButton1, ToolButton2, ToolButton3 значения «Загрузить», «Заполнить клиентскую область», «Центровать». 3.9. Установите на форму компонент TOpenDialog. Свойство Filter типа String компонента TOpenDialog используется для фильтрации файлов, показываемых в диалоговом окне. Свойству Filter задайте значение: BitMaps (*.bmp)]*.bmp. Если опции ofPathMustExist и ofFileMustExist в свойстве Options определены как True, то диалоговое окно разрешает указывать файлы только из существующих каталогов и только существующие файлы. Установите эти свойства. 3.10. Теперь создадим дочернюю форму. Выберите из меню File команду New Form. Установите свойство FormStyle равным fsMDIChild. Свойство Position определяет положение и размеры окна в момент его появления на экране. Если это свойство равно poDefaultPosOnly, то положение формы будет как на этапе конструирования, а размеры окна устанавливает Windows. Установите это значение в свойстве Position. Свойству Name задайте значение F_Child. 3.11. Поместите компонент TImage во вновь созданную форму и установите его свойство Align равным alClient. 3.12. Удалим дочернюю форму из списка автоматически создаваемых форм. Вызовите диалоговое окно опций проекта, выбрав команду Project|Options. Выберите F_Child в списке Auto-Create forms и щелкните по кнопке со стрелкой вправо. Форма F_Child перенесена в список Available forms (список форм, которые не создаются автоматически). Закройте окно установки опций проекта. Сохраните проект в своем каталоге Lab7, выбрав команду File|Save Project As 3.13. Создайте обработчик события для первой кнопки панели инструментов. Выбор графического файла, отображаемого в дочерней форме, осуществляется с помощью компонента TOpenDialog. Впишите в заготовку обработчика следующий код: If OpenDialog1.Execute Then //В случае, если графический файл выбран Begin F_Child:= TF_Child.Create(Self); // Для создания нового экземпляра формы используется конструктор //Create. F_Child.Caption := OpenDialog1.FileName; //В заголовок новой формы запишем имя файла, который загружается в //компонент Image1 формы. F_Child.Image1.Picture.LoadFromFile(OpenDialog1.FileName); //Для того чтобы загрузить картинку в компонент Image1, воспользуемся //методом LoadFromFile. End; 22 23 При разработке MDI–приложения метод Show не нужен, так как Delphi автоматически показывает все вновь созданные дочерние MDI–формы. 3.14. Вторая кнопка панели инструментов изменяет свойство Stretch компонента Image1. Если значение этого свойства True, то рисунок заполняет всю клиентскую область компонента. Двойным щелчком по кнопке создайте обработчик события OnClick, в котором запишите операторы: //Свойство ActiveMDIChild ссылается на активную (имеющую фокус) форму F_Child := M_Parent.ActiveMDIChild as TF_Child; // Рисунок при каждом нажатии кнопки изменяет свое положение if F_Child.Image1.Picture.Stretch Then F_Child.Image1.Picture.Stretch :=False Else F_Child.Image1.Picture.Stretch :=True; 3.15. При нажатии на третью кнопку панели компонентов изображение помещается по центру компонента Image1. Свойство Center позволяет центрировать изображение в границах компонента. Создайте обработчик события OnClick для третьей кнопки, позволяющий центровать изображение. 3.16. Создайте главное меню формы с пунктами: «Открыть», «Во весь экран», «По центру». Назначьте обработчикам OnClick этих пунктов меню соответствующие обработчики кнопок на панели ToolBar1. 3.17. Запустите приложение на выполнение. Установите курсор мыши последовательно над кнопками панели инструментов. Кнопки панели инструментов снабжены подсказками, которые Вы поместили в свойство Hint. Для загрузки графического файла нажмите на первую кнопку. Загрузите файл Skyline в созданное Вами приложение. Измените размеры дочерней формы: сверните дочернее окно, восстановите его, разверните на весь экран. Нажмите на вторую кнопку панели инструментов. Картинка заняла всю клиентскую область компонента Image1. Нажмите еще раз на эту же кнопку. Размеры картинки восстановлены. Нажмите на третью кнопку панели инструментов. Свойству Center присвоено значение True и картинка расположилась по центру компонента Image1. Загрузите новый графический файл в приложение. Для этого нажмите на кнопку загрузки и в диалоговом окне выберите файл Handshak.bmp. Создано новое дочернее окно. В окно загружен выбранный Вами файл. Нажав на вторую кнопку, увеличьте размер изображения и закройте приложение. 23 24 Часть III. Самостоятельная работа Рекомендуемое время 40 минут Создайте приложение в стиле MDI в соответствии с вариантом. Примечание 1: Для того чтобы дочернее окно имело размерные кнопки, в родительском окно должно присутствовать главное меню. Примечание 2: Справка по работе со стандартными диалогами приведена в приложении 1. № Условие задачи варианта 1 Разработайте приложение, представляющее собой простейший редактор. В программе предусмотрите возможности: загрузить текстовый файл, записать текст на диск, изменять начертание и цвет шрифта. 2 Разработайте приложение, которое представляет собой комбинацию текстового и графического редактора. В программе должна существовать возможность загружать и сохранять текстовые и графические файлы. 3 Разработайте приложение для ввода результатов сессии. Организуйте табличный ввод, используя компонент TSringGrid. Предусмотрите запись результатов в текстовый файл на диск. 4 Разработайте приложение, которое 24 Примечание Загрузить файл — LoadFromFile(<имя файла>). Записать файл — SaveToFile(<имя файла>). Загрузить файл — LoadFromFile(<имя файла>). Записать файл — SaveToFile(<имя файла>). Содержание клетки таблицы в свойстве Cells[ACol, ARow]. См. примечания 25 5 6 7 8 9 10 представляет собой комбинацию графического редактора и таблицы TStingGrid. В программе должна существовать возможность загружать и сохранять графические файлы, а также редактировать и записывать в текстовый файл содержимое таблицы. Разработайте приложение «Табулирование функций». Программа позволяет получить значения аргумента и функции в заданном интервале с заданным шагом. Вид функции можно задать выбором в компоненте TListBox или в компоненте TRadioGroup. Разработайте приложение для ввода результатов вакцинации населения. Организуйте табличный ввод, используя компонент TSringGrid. Предусмотрите запись результатов в текстовый файл на диск. Разработайте приложение для ввода результатов тестирования по различным предметам (в процентах). Организуйте табличный ввод, используя компонент TSringGrid. Предусмотрите запись результатов в текстовый файл на диск. Разработайте приложение для ввода результатов прохождения тех. Осмотра автомобилей. Организуйте табличный ввод, используя компонент TSringGrid. Предусмотрите запись результатов в текстовый файл на диск. Составить программу нахождения максимального элемента в каждом столбце и минимального в каждой строке квадратной матрицы. В программе необходимо использовать компонент StringGrid. Для ввода необходимо использовать одну форму проекта, а для вывода другую. предыдущих вариантов. Строки компонента TListBox (TRadioGroup) содержатся в свойстве Items. Номер выбранной строки в свойстве ItemIndex. Содержание клетки таблицы в свойстве Cells[ACol, ARow]. Содержание клетки таблицы в свойстве Cells[ACol, ARow]. Содержание клетки таблицы в свойстве Cells[ACol, ARow]. Содержание клетки таблицы в свойстве Cells[ACol, ARow]. Дана матрица 6 x 10 . Требуется Содержание клетки переписать её так, чтобы все элементы в таблицы в свойстве строках были записаны в обратном Cells[ACol, ARow]. порядке. В программе необходимо использовать компоненты StringGrid.. Для ввода необходимо использовать одну форму проекта, а для вывода другую. 25 26 Приложение 1. TOpenDialog — диалоговая панель выбора открываемого файла по шаблону. TSaveDialog — диалоговая панель создания файла. TFontDialog — диалоговая панель выбора шрифта и его характеристик. TColorDialog — диалоговая панель выбора цвета. TPrintDialog — диалоговая панель вывода на устройство печати. TPrinterSetupDialog — диалоговая панель настройки устройства печати. TFindDialog — диалоговая панель поиска. TReplaceDialog — диалоговая панель замены. TOpenPictureDialog — диалоговая панель выбора графического изображения с просмотром. TSavePictureDialog — диалоговая панель сохранения графического изображения с просмотром. Основные правила использования диалоговых панелей. После того как компонент помещен на форму, необходимо связать отображение этой панели с каким–либо событием. Чаще всего таким событием является выбор команды меню или нажатие определенной кнопки. В обработчике события необходимо использовать метод Execute. При обращении к Execute на экране появляется соответствующее диалоговое окно. Окно диалога является модальным. Модальное окно, как известно, приостанавливает выполнение программы до тех пор, пока пользователь не закроет окно. Execute — логическая функция. Проанализировав результат Execute, программа может присвоить возвращаемые значения свойствам тех компонентов, на которые они влияют. Например, Procedure TForm1.Button1Click(Sender : TОbject); Begin If ColorDialog1.Execute then Form1.Color := ColorDialog1.Color; End; В первой строке этого метода вызывается стандартная диалоговая панель выбора цвета, а во второй — значение, возвращенное этой диалоговой панелью, присваивается свойству Color формы. Компоненты TOpenDialog и TSaveDialog имеют идентичные свойства. Свойство FileName содержит маршрут поиска и выбранный файл при успешном завершении диалога. Программа может использовать это свойство для доступа к файлу с целью читать из него данные или записывать в него. Свойство Filter используется для фильтрации файлов, показываемых в диалоговом окне. Это свойство можно устанавливать с помощью специального редактора или программно. Установить начальный каталог позволяет свойство InitialDir. 26 27 Быстрая разработка приложений. Разработка SDI–приложения №4 Продолжительность: 80 мин. Дисциплина: Разработка и стандартизация программных средств и информационных технологий. Предназначено: Для студентов по направлению ПИЭ в соответствии с учебным планом. Цель: Изучить процесс проектирования и программирования приложения с SDI– интерфейсом. Результат обучения: o закрепление навыков работы в среде RAD Delphi; o умение связывать воздействия пользователя с реакциями на них с помощью компонента TActionList; o умение организовать интерфейс Drag&Dock. Используемые программы: ИСР – Delphi 6. Используемые папки: ПТ_0641_08 План занятия: Часть I. Пример разработки приложения в стиле SDI 30 минут Часть II. Самостоятельная работа минут 50 ЗАПУСК ПРОГРАММЫ: Предполагается, что требуемые программы уже инсталлированы на диске. (См. «Инструкцию по установке программы на ПК») Часть I. Пример разработки приложения в стиле SDI Рекомендуемое время 30 минут На основе компонента TMemo создадим текстовый редактор, позволяющий выполнять часто встречающиеся команды: вырезать, вставить, найти, заменить и другие. 1. Создайте новое приложение. Установите на форму компоненты TMainMenu, TPopupMenu. Организуйте пункты главного меню: Файл Поиск Шрифт Выход Создать Найти Открыть Заменить Сохранить Сохранить как Вспомогательное меню должно содержать такие же пункты. 27 28 2. Установите на форму компонент TImageList, в который поместите графические файлы из каталога Buttons. Картинки должны соответствовать действиям, перечисленным в меню. 3. В нашем приложении мы будем выполнять одни и те же действия разными способами — выполнением пунктов главного и вспомогательного меню, нажатием кнопки на панели инструментов. Для связывания воздействия пользователя с реакциями на них разработан компонент TActionList. Установите компонент TActionList (панель Standard) на форму. Вызовите редактор списка действий двойным щелчком мышью на компоненте. Первая кнопка панели инструментов предназначена для добавления действия. Добавьте действие. Имя первого действия Action1. В инспекторе объектов отображены свойства класса TAction. Измените свойство Caption на «Создать». Свойству ImageIndex задайте значение 0. Нажмите на первую кнопку панели инструментов и добавьте еще одно действие. Имя второго действия Action2. Измените свойство Caption на «Открыть». Свойству ImageIndex задайте значение 1. Добавьте пять действий. Действие добавляется с помощью кнопки на панели инструментов. В свойство Caption необходимо ввести: «Сохранить», «Сохранить как», «Найти», «Заменить», «Шрифт». Свойству ImageIndex задайте соответственно значения: 2, 3, 4, 5, 6, Закройте редактор списка действий. Свойству Images компонента TActionList задайте значение ImageList1 из выпадающего списка значений этого свойства. 4. Установите на форму второй компонент TActionList. Вызовите редактор списка действий двойным щелчком по компоненту. Для программиста предусмотрен набор типовых, наиболее часто встречающихся действий. Откройте список правее кнопки «Добавить» и выберите пункт New Standard Action К типовым действиям относятся операции для работы с буфером обмена. В списке типовых действий выделите четыре действия от TEditCopy до TEditPaste (при выделении держите клавишу Shift нажатой). Нажмите на Ok. В правой части окна редактора выделите TEditDelete и второй кнопкой панели инструментов удалите действие. Выделите действие TEditCut и с помощью кнопки «Стрелка вверх» переместите его на одну строку вверх. Измените значения свойства Caption для этих действий на «Вырезать», «Копировать», «Вставить». Теперь необходимо присвоить свойству Action каждого пункта меню соответствующее действие. Выберите пункт меню «Создать» главного меню формы. В списке действий, который открывается в свойстве Action, выберите Action1. Продолжите установку свойства Action для остальных пунктов меню. Последовательно выделяйте пункты меню и назначайте им действия из списка действий в свойстве Action. Двойным щелчком мыши на компоненте вызовите редактор PopupMenu и установите действия для пунктов контекстного меню. 5. Добавим в приложение панель инструментов. Компонент TControlBar служит контейнером для размещения инструментальных панелей. Этот компонент использует технологию Drag&Dock (причаливание) для управления положением панелей. Установите на форму компонент TControlBar, который расположен на панели Additional. 28 29 Установите в его свойство Align значение alTop, в AutoSize — True, в DragKind — dkDock. Оставьте в свойстве DragMode значение dmManual. Поместите на компонент TCoolBar компонент TToolBar (панель Win32 палитры компонентов). Для вставки кнопки щелкните по ToolBar1 правой кнопкой мыши и выберите опцию NewButton. Добавьте еще три кнопки. Выделите компонент ToolBar1. В свойство DragKind компонента ToolBar1 поместите значение dkDock, в DragMode — dmAutomatic и в AutoSize — True. Поместите на компонент TCoolBar еще один компонент TToolBar. Поместите на панель шесть кнопок (правая клавиша, NewButton). Выделите компонент ToolBar2. В свойство DragKind компонента ToolBar2 поместите значение dkDock, в DragMode — dmAutomatic и в AutoSize — True. Для того чтобы на кнопке отображалась надпись вместо картинки, необходимо изменить свойство ShowCaption. В инспекторе объектов найдите свойство ShowCaption и установите значение этого свойства равным True. Выделите панель ToolBar1. В инспекторе объектов найдите свойство Images. Установите значение этого свойства равным ImageList1. Определите для кнопок свойство Action. Сделать это нужно следующим образом: 1) выделяете кнопку; 2) обращаетесь к свойству Action; 3) в списке выбираете действие. Для первой панели — Action1, Action2, Action3, Action4. Для второй панели — EditCut1, EditCopy1, EditPaste1, Action5, Action6, Action7. 6. Запустите приложение на выполнение. На панелях имеются кнопки управления. Ухватитесь за кнопку управления первой панели и перетащите панель в центр окна. Ухватитесь за кнопку управления второй панели и потяните панель влево так, чтобы кнопки расположились в один ряд. Отбуксируйте первую панель назад на контейнер панелей. Завершите работу программы. 7. Поместите на форму компонент TMemo. Свойству Align назначьте значение alClient. Очистите свойство Lines. Установите на форму компоненты-диалоги: TOpenDialog, TSaveDialog, TFontDialog, TFindDialog, TReplaceDialog. 29 30 8. Разработаем функциональность формы. Главное событие каждого действия компонента TActionList — событие onExecute. Оно определяет реакцию на это действие. 8.1. Вызовите редактор списка действий двойным щелчком по компоненту. Выполните двойной щелчок по имени первого действия. Вы создали заготовку обработчика для события «Создать». Введите операторы: //Если в редакторе есть текст, то записать его на диск if SaveDialog1.FileName <> '' Then Memo1.Lines.SaveToFile(SaveDialog1.FileName); Memo1.Clear; // Очистить редактор 8.2. Выполните двойной щелчок по имени второго действия. Вы создали заготовку обработчика для события «Открыть». Введите операторы With OpenDialog1 Do If Execute Then //Если в диалоге выбран файл, то загрузить его в редактор begin Memo1.Lines.LoadFromFile(FileName); Caption:= 'Мой редактор - '+ FileName; SaveDialog1.Filename:= FileName; FileName:= ''; end; 8.3. Создайте обработчики действий для записи файла на диск, выбора шрифта, окончания работы приложения (методы Close и Terminate), а так же для действий EditCut1, EditCopy1, EditPaste1. Чтобы создать обработчики для последних трех действий, воспользуйтесь методами компонента TMemo: CutToClipboard, CopyToClipboard, PasteFromClipboard. 8.4. Для события «Найти» (Action5) создайте следующий обработчик: procedure TForm1.Action5Execute(Sender: TObject); begin FindDialog1.Execute; If pos(FindDialog1.FindText,Memo1.Text)<>0 Then // FindText — текст,введенный в диалоговое окно поиска begin 30 31 Memo1.HideSelection:=False; Memo1.SelStart:=pos(FindDialog1.FindText,Memo1.Text)-1; // SelStart — первая позиция выделенного текста Memo1.SelLength:=Length(FindDialog1.FindText); // SelLength — длина выделенного текста end; end; 8.5. Создайте обработчик для события «Заменить» (Action6). procedure TForm1.Action6Execute(Sender: TObject); label 10; begin replaceDialog1.Execute; 10: If pos(ReplaceDialog1.FindText, memo1.Text)<>0 Then begin Memo1.SelStart:=pos(ReplaceDialog1.FindText,Memo1.Text)-1; Memo1.SelLength:=Length(ReplaceDialog1.FindText); memo1.SelText:=ReplaceDialog1.ReplaceText; goto 10; end; // Выделенный текст заменяем на текст замены //из диалогового окна «Найти/Заменить» end; 9. Добавьте к приложению форму AboutBox из репозитория (File/New/Forms). Добавьте еще один пункт меню «О программе». Создайте обработчик события для этого пункта меню, в котором запишите код, позволяющий визуализировать форму AboutBox (AboutBox.Show). Форма содержит справочную информацию о программе. 10. Запустите приложение на выполнение. Выполните следующие действия: Введите текст. Запишите текст на диск. Создайте новый документ. Откройте сохраненный текст. Осуществите поиск и замену. Скопируйте, вырежьте, вставьте фрагмент текста. Если программа работает без ошибок — сохраните ее в своем каталоге Lab8. 11. Репозиторий Delphi содержит заготовки форм и приложений. Вызовите окно репозитория, откройте страницу Projects. На этой странице расположены заготовки приложений в стиле SDI и в стиле MDI. Вызовите последовательно эти проекты и ознакомьтесь с их содержанием. Часть II. Самостоятельная работа Рекомендуемое время 50 минут В среде Delphi разработано приложение в стиле SDI. Создана программа для работы с базой данных — телефонным справочником, сформированным в виде файла записей. В каждой записи определены поля: фамилия и имя (строки длиной по 20 символов каждая), адрес и номер телефона (строки длиной 100 и 15 символов соответственно). 31 32 В программе реализованы следующие операции: считывание данных из файла, запись данных в файл, навигация по базе, поиск записи в списке. Интерфейс приложения на рисунках 1 и 2. На форме расположен многостраничный блокнот. На первой странице блокнота (рис. 1) в табличном виде выводится содержимое базы данных. Табличные данные могут корректироваться. Содержимое таблицы может быть записано в файл. На второй странице блокнота (рис. 2) реализована навигация по записям базы данных. В раскрывающемся блокноте можно выбрать фамилию из базы данных щелчком мыши. Записи отображаются в окнах ввода. Познакомьтесь с работой приложения, для этого откройте проект Project1 из каталога Проект_Телефонный_справочник. Часть пунктов меню неактивны. Вам предстоит осуществить реализацию этих действий. Рис. 1. Страница 1 многостраничного блокнота. 32 33 Рис. 2. Страница 2 многостраничного блокнота. Задание 1. Доработайте приложение. Внесите исправления в форму «О программе»: укажите свою фамилию и группу, измените картинку. 2. В момент выхода из программы обеспечьте появления окна для сохранения файла телефонного справочника в случае, если в нем были сделаны изменения. 3. Добавьте контекстное меню, в которое включите все пункты меню и активных кнопок Вашего приложения. 4. Допишите программу в соответствии с заданием Вашего варианта. Отладку программы можно продолжить на следующем занятии. 5. Снабдите приложение панелями инструментов с механизмом Drag&Dock. № Условие задачи варианта 1 Запрограммируйте кнопку «Найти» так, чтобы на панели «Найдена запись» отображалась информация о лице, фамилия которого указана в поле редактирования Edit5 «Введите фамилию». Если такой фамилии нет, то выведите сообщения об этом в отдельном окне. 2 Запрограммируйте команды подменю «А > Я» и «Я -> А» пункта главного меню «Сортировать» так, чтобы фамилии в таблице и комбинированном списке были отсортированы в алфавитном или обратном порядке. Примечание Добавьте действие в TActionList и используйте обработчик Execute. Используйте хранилище действий TActionList. 33 34 3 4 5 6 7 8 9 10 34 Удалите команду «Сохранить изменения в списке записей» из главного меню и обеспечьте сохранение изменений в момент редактирования таблицы и полей на панели «Найдена запись». Запрограммируйте кнопку «Удалить» так, чтобы после нажатия на нее удалялись данные на панели «Найдена запись» и из комбинированного списка. В таблице такая запись должна быть помечена звездочкой. 1) Запрограммируйте поиск фамилии по номеру телефона. Найденная информация должна отображаться на панели «Найдена запись». 2) В случае попытки открыть несуществующий файл телефонного справочника обеспечьте появление окна с соответственным сообщением. 1) Запрограммируйте поиск фамилии по первым буквам. Найденная информация должна отображаться на панели «Найдена запись». 2) В случае попытки открыть несуществующий файл телефонного справочника обеспечьте появление окна с соответственным сообщением. Запрограммируйте кнопку «Удалить» так, чтобы после нажатия на нее удалялись данные на панели «Найдена запись» и из комбинированного списка. В таблице такая запись должна исчезнуть. Запрограммируйте кнопку «Найти» так, чтобы на панели «Найдена запись» отображалась информация о лице, фамилия которого указана в поле редактирования Edit5 «Введите фамилию». Если такой фамилии нет, то выведите сообщения об этом в окне с фамилией. Используйте хранилище действий TActionList. Используйте хранилище действий TActionList. Используйте хранилище действий TActionList. 35 Измеряемые свойства программы №5 Продолжительность: 80 мин. Дисциплина: Разработка и стандартизация программных средств и информационных технологий. Предназначено: Для студентов по направлению ПИЭ в соответствии с учебным планом. Цель: Познакомиться с приложением InstallShield Используемые программы: ИСР – Delphi 6. I. Словарь и длина реализации программы Словарь программы (1-1) 1 2 , где 1 – число простых (отдельных) операторов в программе; 2 – число простых (отдельных) операндов в программе. N N1 N 2 , Длина реализации программы (1-2) где N1 – общее число простых (отдельных) операторов в программе; N 2 – общее число простых (отдельных) операндов в программе. Пример.Программа вычисления НОД (a,b) if a=0 then begin NOD:=b; exit; end; if b=0 then begin NOD:=a; exit; end; while a >0 do begin If (a mod b)=0 then begin NOD:= b; exit; end; r:= a mod b; a:=b; b:=r; end; 35 36 Таблица 1 Операторы Оператор № ; 1 := 2 = 3 > 4 () или begin…end 5 mod 6 if…then 7 While…do 8 exit 9 Всего: 1 = 9 Словарь: 1 2 = 14 Длина N N1 N 2 = 59 : Количество 13 6 3 1 5 2 3 1 3 N1 = 37 II. Операнд a b r NOD 0 Операнды № Количество 1 6 2 7 3 2 4 3 5 4 Всего: 2 = 5 Объем программы V N log 2 , III. (1-3) Потенциальный объем программы V * (2 2* ) log 2 (2 2* ) , IV. L V* , V (1-4) Уровень программы (1-5) V. Время разработки программы V , SL где 5 S 20 (число Страуда) T VI. B 36 (1-6) Гипотеза ошибок в программе V , 3000 Самостоятельная работа: N 2 = 22 Познакомиться с метриками программных средств (1-7) 37 Разработать программу, программирования Delphi. Использовать разработанную программу для анализа сложности выбранной студентом тестовой программы в соответствии с вариантом в среде лингвистической Варианты заданий: 1. Составить программу расчета значения функции Z = |3 ех+3 – 2 ln ху| + 1,8х2 + 1 при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=… 2. Составить программу расчета значения функции Z = tg х3 – |2 sin х2у + 7.8 cos х |+ 10 при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=… 3. Составить программу расчета значения функции Z = (х4 – 2 ctg х2у2 )/| 8х2 – 5 arctg у| при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=… 4. Составить программу расчета значения функции Z = tg х5 – 21 ctg ху2 /(18 sin х – 13 cos у + 11) при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=… 5. Составить программу расчета значения функции Z = (2eх-4 – |sin х2у| )/( 2.1ctg х2 + 10.2) при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=… 6. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a4 за две операции. 7. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a6 за три операции. 8. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a7 за четыре операции. 9. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a8 за три операции. 10. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a9 за четыре операции. 11. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a10 за четыре операции. 12. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме сложения, получить 6a за три операции. 13. Найти произведение цифр введенного 4-значного числа. 14. Найти сумму цифр введенного 4-значного числа. 15. Определить сумму квадратов цифр введенного 3-значного числа. 16. Введено 3-значное число. Вывести число в зеркальном отображении. 17. Введено 3-значное число. Вывести число в зеркальном отображении 18. Введенное 4-значное число изменить так, чтобы 1 и 4 цифры поменялись местами. 19. Найти среднее арифметическое цифр введенного 3-значного числа. 20. Введено 3-значное число. Поменять местами 1-ю и 3-ю цифры числа. 21. Введенное 4-значное число изменить так, чтобы 1-3 и 2-4 цифры поменялись местами. 22. Найти полусумму цифр введенного 4-значного числа. 23. Определить сумму квадратов цифр введенного 3-значного числа. 24. Введенное 4-значное число изменить так, чтобы 1 и 3 цифры поменялись местами. 37 38 25. Введенное 4-значное число изменить так, чтобы 3 и 4 цифры поменялись местами. 26. Введено трехзначное число. Найти сумму четных цифр. 26. Введено четырехзначное число. Содержится ли в его записи цифра 7? 38 39 Проектирование АИС средствами Microsoft Access №6 Продолжительность: 240 мин. (3 пары) Дисциплина: Разработка и стандартизация программных средств и информационных технологий. Предназначено: Для студентов по направлению ПИЭ в соответствии с учебным планом. Цель: Познакомиться с приложением Microsoft Access, научиться проектировать автоматизированные информационные системы. Используемые программы: Microsoft Access. План занятия: Часть I. Пример разработки приложения АИС в 60 минут Microsoft Access Часть II. Самостоятельная работа 180 минут ЗАПУСК ПРОГРАММЫ: Предполагается, что требуемые программы уже инсталлированы на диске. Часть I. Пример разработки АИС “Студент” в Microsoft Access. Рекомендуемое время 60 минут Общая характеристика системы Система Microsoft Access является одним из основных компонентов Microsoft Office и предназначена для работы с реляционными базами данных. Особенность данной СУБД: вся информация базы данных хранится в одном файле (*.mdb). Кроме информации таблиц, в этом же файле сохраняются компоненты приложения для работы с базой данных - экранные формы, отчеты, запросы, программные модули. Для работы с базой данных система использует Microsoft Jet database engine систему управления базами данных, извлекающую и сохраняющую данные в пользовательских и системных задачах. Ядро базы данных Microsoft Jet можно рассматривать как компонент диспетчера данных, с помощью которого строятся остальные системы доступа к данным, такие как Microsoft Access и Microsoft Visual Basic. Язык написания программных модулей для работы с базой данных - Microsoft Visual Basic for Applications (VBA). Основные возможности системы при работе с базами данных приведены в табл.1. Таблица 1. Спецификации системы Microsoft Office Access 2003 39 40 Атрибут Максимальное значение База данных Размер файла базы данных (*.mdb) 2 Гбайт за вычетом места, необходимого системным объектам Число объектов в базе данных 32 768 Модули (включая формы и отчеты), 1 000 свойство Наличие модуля (HasModule) которых имеет значение True) Число знаков в имени объекта 64 Число знаков в пароле 14 Число знаков в имени пользователя или 20 имени группы Число одновременно пользователей работающих 255 Таблица Число знаков в имени таблицы 64 Число знаков в имени поля 64 Число полей в таблице 255 Число открытых таблиц 2048 (фактическое число может быть меньше из-за внутренних таблиц, открываемых Microsoft Access) Размер таблицы 2 Гбайт за вычетом места, необходимого системным объектам Число знаков в текстовом поле 255 Число знаков в поле MEMO 65 535 при вводе данных через интерфейс пользователя;1 Гбайт для хранения знаков при программном вводе данных Размер поля объекта OLE 1 Гбайт Число индексов в таблице 32 Число полей в индексе 10 Число знаков в сообщении об ошибке 255 Число знаков в условии на значение 2048 записи Число знаков в описании таблицы или 255 поля Число знаков в записи (кроме полей 2000 MEMO и полей объектов OLE) Число знаков в значении свойства поля 255 Запрос Число установленных связей 40 32 на одну таблицу за вычетом числа индексов, находящихся в таблице для полей или сочетаний полей, которые не участвуют в связях 41 Число таблиц в запросе 32 Число полей в наборе записей 255 Размер набора записей 1 Гбайт Предел сортировки 255 знаков в одном или нескольких полях Число уровней вложения запросов 50 Число знаков в ячейке на бланке запроса 1024 Число знаков для параметра в запросе с 255 параметрами Число операторов AND в предложении 99 WHERE или HAVING Число знаков в инструкции SQL приблизительно 64000 Форма и отчет Число знаков в надписи 2048 Число знаков в поле 65535 Ширина формы или отчета 22 дюйма (55,87 см) Высота раздела 22 дюйма (55,87 см) Высота всех разделов плюс заголовки 200 дюймов (508 см) разделов (в режиме конструктора) Число уровней отчетов вложения форм или 7 Число полей или выражений, которые 10 можно отсортировать или сгруппировать в отчете Число заголовков и примечаний в отчете 1 заголовок/примечание отчета; 1 заголовок/примечание страницы; 10 заголовков/примечаний групп Число печатных страниц в отчете 65536 Число элементов управления и разделов, 754 которые можно добавить за время существования формы или отчета Число знаков в инструкции SQL, 32750 работающей в качестве свойства Источник записей (RecordSource) или Источник строк (RowSource) формы, отчета или элемента управления (оба .mdb и .adp) Макрос Число макрокоманд в макросе 999 Число знаков в условии 255 Число знаков в комментарии 255 Число знаков в аргументе макрокоманды 255 41 42 В табл. 2. приведены сведения о типах данных, которые могут иметь поля в таблицах. Таблица .2. Типы данных системы Тип полей данных Тип данных в VBA Использование Размер Текстовый String Текст, состоящий из любых До 255 символов в кодировке символов Unicode (2 байта на символ) Поле МЕМО String Текст в кодировке Unicode До 64000 символов Числовой(Байт, Byte, Числовые данные Целое, Длинное Integer,Long,Single,Double целое, Одинарное с плавающей точкой, Двойное с плавающей точкой, Код репликации, Действительное) 1, 2, 4 или 8 байтов. 16 байтов только для кодов репликации (GUID) Дата/времяПолный Date формат даты. Длинный формат даты. Средний формат даты. Краткий формат даты. Длинный формат времени. Средний формат времени. Краткий формат времени Даты и время. 31.12.04 23:55:5931 декабря 2004 г.31-дек0431.12.0423:55:5911:5523:55 8 байтов(при активации поля всегда показывает полный формат даты) Денежный Значения валют. Денежный 8 байтов тип используется для предотвращения округлений во время вычислений. Предполагает до 15 символов в целой части числа и 4 - в дробной Currency Счетчик Логический Автоматическая вставка последовательных (увеличивающихся на 1) или случайных чисел при добавлении записи. Boolean Поле объекта OLE String 42 4 байта. 16 байтов только для кодов репликации (GUID) Поля, содержащие только 1 бит одно из двух возможных значений, таких как Да/Нет, Истина/Ложь, Вкл/Выкл. Объекты (например, До 1 43 документы Microsoft Word, электронные таблицы Microsoft Excel, рисунки, звуки и другие двоичные данные), созданные в программах, использующих протокол OLE. Объекты могут быть связанными или внедренными. Гиперссылка Мастер подстановок String гигабайта (ограничено объемом диска) Поле, в котором хранятся До 64000 гиперссылки. Гиперссылка символов может иметь вид пути UNC, либо URL-адреса Создает поле, позволяющее выбрать значение из другой таблицы или из списка значений, используя поле со списком. При выборе данного типа запускается Мастер для определения этого поля Тот же размер, который имеет первичный ключ, являющийся полем подстановок Система Microsoft Access имеет собственные средства для разграничения прав доступа пользователей к базе данных. Простейшим способом ограничения доступа к базе данных является установка пароля для открытия базы данных (*.mdb). После установки пароля при каждом открытии базы данных будет появляться диалоговое окно, в которое требуется ввести пароль. Этот способ достаточно надежен (Microsoft Access шифрует пароль, поэтому к нему нет доступа при непосредственном чтении файла базы данных), но он действует только при открытии базы данных. После открытия базы все объекты становятся доступными для пользователя (пока не определены другие типы защиты, описанные ниже в этом разделе). Для базы данных, которая совместно используется небольшой группой пользователей или на автономном компьютере, обычно оказывается достаточно установки пароля. База данных может быть зашифрована. При шифровании базы данных ее файл сжимается и становится недоступным для чтения служебными программами или текстовыми редакторами. Дешифрование базы данных отменяет результаты операции шифрования. Нельзя использовать установку пароля на базу данных, если предполагается выполнять репликацию базы. Реплицированные базы данных не могут быть синхронизированы, если установлен пароль базы данных. Защита на уровне пользователей имеет большие возможности по разграничению прав. Этот способ подобен способам, используемым в большинстве сетевых систем. При запуске Microsoft Access от пользователя требуется идентифицировать себя и ввести пароль. Microsoft Access по умолчанию создает две группы: 43 44 администраторы (группа Admins) и простые пользователи (группа Users). Допускается определение других групп и пользователей. Члены группы Admins имеют разрешения на доступ ко всем объектам базы данных. Другим группам и пользователям могут предоставляться разрешения на доступ только к отдельным объектам базы данных. Типовые разрешения на доступ для группы Users могут включать "Чтение данных" и "Обновление данных" для таблиц и запросов, а также "Открытие/запуск" для форм и отчетов. Создание базы данных Процесс создания базы данных рассмотрим на примере описанной ранее (лекция 3) модели базы данных информационной системы "Контингент студентов университета". В системе Microsoft Access процесс создания базы данных выполняется следующим образом. При запуске системы появляется диалоговое окно для выбора режима работы (рис. 1), в котором следует выбрать пункт Новая база данных... Рис. 1. Создание файла После выбора первого пункта появляется окно для задания пути сохранения и имени новой базы. Выберем папку на диске для сохранения файла базы данных и зададим имя базы STUDENTS, нажмем на кнопку Создать, после чего откроется окно базы данных. Далее необходимо задать структуру таблиц в соответствии с описанной ранее концептуальной моделью. Можно также воспользоваться сгенерированной ранее системой Case Studio - программой создания таблиц базы данных, однако, далее описан режим создания таблиц с помощью Конструктора. Умение использовать этот режим необходимо каждому пользователю для создания новых таблиц и модификации структуры уже существующих. Выберем пункт Создание таблицы в режиме конструктора (рис. 2) и опишем структуру главной таблицы базы данных, т.е. зададим имя, тип, размер каждого поля таблицы, а также первичный ключ (если необходимо), индексированные поля и подпись (рис. 3). Имена полей лучше писать латинскими буквами, в одно 44 45 короткое слово - для удобства использования их в запросах и программах, работающих с базой данных; задание подписей для полей облегчает разработку экранных форм и отчетов. Рис. 2. Окно базы данных Рис. 3. Описание структуры таблицы в конструкторе Структура таблицы SPISOK приведена в табл. 3. 45 46 Таблица 3. Структура таблицы SPISOK Имя поля Тип данных Размер поля NZ Текстовый 8 FIO Текстовый 45 DATA_P Дата/время Краткий формат даты N_FCLT Числовой Индексированное поле Да (Совпадения допускаются) Подпись не № зачетки Фамилия, отчество имя, Дата поступления Байт Да (Совпадения Факультет допускаются) N_SPECT Текстовый 7 Да (Совпадения Специальность допускаются) KURS Числовой Байт Курс N_GRUP Текстовый 10 Группа N_PASP Текстовый 10 Номер паспорта Для поля NZ следует задать свойство "Ключевое поле", т.к. номер зачетки уникальный для каждого студента и однозначно его идентифицирует в таблице базы. По окончании описания структуры таблицы даем команду Сохранить (на стандартной панели инструментов, в меню - раздел Файл, или при закрытии окна конструктора) и задаем название таблицы - SPISOK. Аналогичным образом создаем в базе данных справочник факультетов с именем файла FCLT, структура его приведена в табл. 4. Таблица 4. Структура таблицы FCLT Имя поля Тип данных Размер поля Индексированное поле N_FCLT Числовой Байт Да (Совпадения допускаются) NAME_F Текстовый 120 Подпись не Номер факультета Название факультета Таблица 6. Структура таблицы OCENKI Имя поля Тип данных Размер поля Индексированное поле NZ Текстовый 7 Да (Совпадения Номер зачетки допускаются) Подпись SEMESTR Числовой Байт Семестр N_PREDM Числовой Целое BALL Текстовый 1 DATA_B Дата/время Краткий формат Дата PREPOD Текстовый Преподавател ь Да (Совпадения Предмет допускаются) 45 Таблица 7. Структура таблицы PREDMETS 46 Оценка 47 Имя поля Тип данных Размер поля N_PREDM Числовой Целое NAME_P 120 Текстовый Индексированное поле Да (Совпадения допускаются) Подпись не Номер предмета Название предмета Далее задаем связи Один ко многим между таблицами в базе, открыв окно Схема данных (выбрав эту команду в контекстном меню для окна базы данных) и перетаскивая название поля первичного ключа к аналогичному полю другой таблицы (см. рис. 4.). При этом задаем в окне Изменение связей (см. рис. 5.) условия соблюдения ссылочной целостности данных: каскадное обновление связанных полей и каскадное удаление связанных записей. Рис. 4. Схема базы данных 47 48 Рис. 5. Задание условий соблюдения ссылочной целостности данных Стандартный режим работы с таблицами Заполнение базы данных информацией следует начинать со справочников - иначе при заполнении главных таблиц возникнут конфликты сохранения ссылочной целостности базы. Например, если в справочнике факультетов не будет номера факультета, указанного для студента, появится сообщение "Введенное значение не подходит для данного поля" и Вы не сможете сохранить данные, пока не укажете правильное значение. Для работы с информацией таблицы базы данных (добавление, редактирование и удаление записей) следует выбрать ее в разделе объектов базы данных "Таблицы" (см. рис. 6.) и двойным щелчком мыши открыть. 48 49 Рис. 6. База данных Таблица откроется в стандартном режиме работы с информацией, как показано на рис. 7. Рис. 7. Стандартный режим работы с таблицей базы данных В таком режиме каждая запись таблицы базы данных представлена как строка, состоящая из столбцов - полей, над которыми показаны подписи полей или, при их отсутствии, имена полей. В нижней части таблицы присутствует пустая запись с символом * в левой колонке - это несуществующая запись, которая добавляется в таблицу, как только в ней появляется какая-либо информация. На нижней рамке 49 50 окна находятся кнопки для перемещения по таблице, номер текущей записи и информация об общем количестве записей в таблице. Колонка слева с символом + имеется в наличии, если у таблицы есть связь от одной записи данной таблицы ко многим записям связанной с ней таблицы. В данном случае при щелчке мышью на плюсе откроется как подтаблица - список студентов для соответствующего факультета. Настройка подтаблицы присутствует в главном меню в разделе Вставка. В системе Microsoft Access существуют также дополнительные возможности использования в таблицах режима "Подстановка" для показа и выбора данных из раскрывающихся списков ("тип источника строк" - таблица или запрос, список значений или список полей). Этот режим можно создать с помощью Мастера, если выбрать тип поля "Мастер подстановок" или описать самому на странице "Подстановка". В примере этот режим задан для поля N_FCLT таблицы Spisok (см. рис. 8.). В дальнейшем для поля с описанными свойствами раздела "Подстановка" на экранной форме будет автоматически создаваться объект типа "Поле со списком". Рис. 8. Параметры страницы "Подстановка" в Конструкторе Вид таблицы Spisok с использованием поля со списком для поля N_FCLT показан на рис. 9. 50 51 Рис. 9. Таблица с использованием режима "Подстановка" При работе с таблицей можно задать сортировку записей по одному из полей и фильтр для показа данных, соответствующих заданному условию (см. раздел меню Записи). После окончания добавления, редактирования или удаления данных следует дать команду Сохранить, или при закрытии окна таблицы выбрать в появившемся окне команду, сохранять или нет изменения. Разработка экранных форм для работы с базой данных Экранные формы позволяют организовать наглядную и удобную работу с базой данных, состоящей из большого количества связанных таблиц реляционной базы данных. В этом случае на одном экране можно организовать работу с главной и подчиненными таблицами, осуществлять выбор данных из таблиц-справочников с использованием раскрывающихся списков, использовать режимы поиска и отбора информации, печати необходимых отчетов на принтере и пр. Имеющийся в системе Мастер разработки экранных форм позволяет легко создавать экранные формы нескольких видов (простые - для работы с данными одной таблицы, более сложные - для работы с несколькими таблицами с использованием подчиненных форм). Полученные формы далее, как правило, приходится дополнять и модифицировать в конструкторе экранных форм для реализации всех необходимых условий работы с базой. Для разработки экранной формы в окне базы данных выбираем объект Формы и на странице форм - режим Создание формы с помощью Мастера. Далее следует ответить на ряд вопросов Мастера: 1. выберите поля для формы - выбираем все поля таблицы SPISOK и все поля таблицы OCENKI (для последней таблицы поле NZ расположим в конце списка, оно будет заполняться автоматически; добавляем его, чтобы убедиться, что на экране мы видим оценки только одного студента); 2. выберите вид представления данных - выбираем подчиненные формы, т.е. расположение данных главной таблицы и связанной с ней на одной форме; 3. выберите внешний вид подчиненной формы - выбираем ленточный; 51 52 4. выберите требуемый стиль - выбираем стандартный стиль; 5. задайте имена форм - задаем для главной формы название Студенты, для подчиненной формы Оценки студента и на том же экране ниже выбираем пункт Изменить макет формы, после чего нажимаем на кнопку Готово. Полученная экранная форма будет открыта в конструкторе форм, в базе данных на странице Формы появятся две новые - Студенты и Оценки студента. Для более детального отображения в конструкторе подчиненной формы лучше закрыть окно и снова открыть в конструкторе форму Студенты, в этом случае она будет иметь вид, приведенный на рис. 10. Рис. 10. Экранная форма, созданная с помощью Мастера На полученной форме не все надписи полностью видны, расположение полей тоже можно улучшить. Для формы и всех ее элементов можно открыть окно Свойства, щелкнув правой кнопкой мыши на любом объекте и выбрав в контекстном меню слово Свойства (рис. 11.). Кроме того, в контекстном меню присутствуют такие важные при оформлении объектов возможности, как "Выровнять" - полезно для выравнивания группы объектов, "Размер", "Цвет:", "Оформление", "Условное форматирование". 52 53 Рис. 11. Окно свойств для объекта Форма, страницы Макет и Данные Все свойства в окне разбиты на группы: Макет - расположение, шрифт, цвет и прочее, связанное с внешним видом объекта; 53 54 Данные - в этом разделе важнейшее свойство - Данные или Источник записей - для объектов, связанных с редактированием каких-либо данных; События - методы, т.е. процедуры (программы), выполняющиеся для объекта при наступлении определенных событий (Загрузка, Открытие, До обновления, После обновления и пр.); Другие - прочие свойства. На экранной форме присутствуют элементы (объекты) следующих типов: Надпись - текст на форме, обычно не изменяющийся. Главные свойства этого объекта присутствуют на странице Макет окна свойств (рис. 12.). Поле - поле редактирования, связанное с полем базы данных или переменной. Главное свойство этого объекта - строка Данные на странице Данные окна свойств (рис. 13.). Рис. 12. Окно свойств объекта типа Надпись 54 55 Рис. 13. Окно свойств объекта типа Поле Подчиненная форма - вложенная форма для таблицы данных, связанной с главной таблицей, на которой могут присутствовать такие же элементы, как и на основной форме. Поле со списком - сложный элемент, предоставляющий возможность показывать данные справочных таблиц, списков или массивов и заносить выбранные значения в поле другой таблицы (9-й элемент панели, окно свойств, см. рис. 14.). Рис. 14. Окно свойств объекта типа Поле со списком 55 56 Рис. 15. Панель элементов экранной формы Кроме того, на форме могут присутствовать и другие объекты, которые можно добавлять, используя кнопки Панели элементов (рис. 15.), список типов объектов приведен ниже. Группа переключателей, Выключатель, Переключатель, Кнопка кнопки и группы кнопок разного вида, связанные с выполнением определенных процедур (5-7 и 11 кнопки на Панели). При выборе объекта Кнопка запускается Мастер, который предложит вам набор стандартных кнопок перехода по записям таблицы, обработки записей (восстановить, дублировать, печатать и пр.), работы с формой, с отчетами (печатать, просмотреть, отправить в файл или по почте), работы с приложениями и разное. Кнопки можно создать с помощью Мастера, при этом программный код, связанный с их действием, уже будет присутствовать (рис. 16.). Рис. 16. Окно Мастера создания кнопок Флажок - поле, связанное обычно с полем таблицы логического типа, в котором стоит галочка или нет (6-й элемент Панели). Список - список данных для выбора одного из значений (10). Рисунок - вставка рисунка в форму (12). Свободная рамка объекта - любой объект Windows-приложений, редактирование которого будет возможно вызовом соответствующего приложения (13). 56 57 Присоединенная рамка объекта - для работы с полями таблиц типа "поле объекта OLE" (14). Набор вкладок - многостраничная форма (16). Линия, Прямоугольник - элементы оформления (18, 19). Для использования экранной формы нужно запустить ее в работу. Для этого закроем окно конструктора и выберем команду Открыть формы Студенты. Вид формы при работе с базой данных приведен на рис. 17. Рис. 17. Работа с базой данных с использованием экранной формы В данном режиме можно редактировать существующие записи, добавлять новые в список студентов и список оценок для каждого студента. Для удаления записей можно добавить с помощью Мастера кнопку категории Обработка записей с действием Удалить запись на основную форму. При работе с формой можно задать сортировку записей по одному из полей и фильтр для показа только тех данных, которые соответствуют заданному условию (см. раздел Записи меню системы Access). Как было сказано выше, для данной формы можно сделать значительные усовершенствования, повышающие удобства работы с базой данных. Прежде всего, в Конструкторе изменим расположение полей и расширим надписи. Далее добавляем на форму объекты Поле со списком для выбора из справочных таблиц специальности (с занесением соответствующего номера в главную таблицу) и предмета (с занесением его номера из справочника в таблицу оценок). Эти основные свойства описываются с помощью Мастера, который запускается автоматически при добавлении этого типа объекта к форме. 57 58 На первом шаге Мастера выбираем пункт Объект Поле со списком будет использовать значения из таблицы или запроса, на втором - выбираем из списка нужную нам справочную таблицу, на третьем - выбираем все поля (номер и название), на четвертом шаге - оставляем галочку у флажка скрыть ключевой столбец и задаем ширину поля для названия, на пятом - задаем условие сохранить в поле и выбираем из списка поле главной таблицы, в котором будет сохраняться значение ключевого поля справочной таблицы. Далее нажимаем Готово. Надпись для Поля со списком можно удалить. После всего этого форма будет иметь в Конструкторе вид, приведенный на рис. 18. Рис. 18. Усовершенствованная экранная форма в Конструкторе форм В режиме работы с базой данных в усовершенствованной форме можно видеть названия факультетов, специальностей, предметов и выбирать их из справочных таблиц с помощью раскрывающихся списков (рис. 19.). 58 59 Рис. 19. Работа с базой данных с использованием экранной формы, в которой присутствуют объекты Поле со списком Разработка отчетов Для разработки печатных форм - отчетов, отражающих информацию базы данных - в системе Access можно использовать режим Создание отчета с помощью Мастера раздела базы Отчеты, с усовершенствованием отчета в дальнейшем в режиме Конструктора отчетов. Отчеты могут быть созданы на основе всей информации, присутствующей в таблицах базы, но чаще для отчетов необходимо отобрать нужную информацию из базы с использованием SQL-запроса и на основе его создать отчет. Важным свойством отчетов является возможность группировки данных и получения итоговых данных для групп и всего отчета. Поставим задачу разработать отчет, в котором показаны оценки всех студентов с группировкой данных по факультетам, курсам, группам. Для этого выбираем раздел Отчеты и режим Создание отчета с помощью Мастера. На первом шаге Мастера выбираем поля главной таблицы базы (SPISOK), которые мы хотим показать в отчете, и все поля дочерней таблицы оценок (OCENKI) (рис. 20.). 59 60 Рис. 20. Выбор полей для отчета в Мастере отчетов На втором шаге Выберите вид представления данных - выбираем первый вариант, когда выделена таблица SPISOK. На третьем шаге задаем группировку данных по факультетам, курсам и группам. Более трех уровней группировки Мастер задать не позволяет (рис. 21.). Рис. 21. Группировка данных в отчете Сортировку на следующем шаге не задаем. 60 61 На пятом шаге выбираем вид макета для отчета по левому краю, на следующем - стиль отчета - обычный, далее задаем название отчета Студенты и их оценки и нажимаем кнопку Готово. Полученный отчет в режиме Конструктора представлен на рис. 22. Рис. 22. Отчет, созданный с помощью Мастера В полученном отчете присутствуют объекты трех видов - Поле, которое в отчете будет показывать данные поля таблицы базы или запроса, Надпись - любой текст в отчете, и Линия - элемент оформления. В Конструкторе отчет разбит на отдельные зоны, информация которых может присутствовать в отчете один раз (Заголовок отчета и Примечание отчета), в начале и в конце каждой страницы (Верхний колонтитул и Нижний колонтитул), в начале и в конце каждой группы (Заголовок группы и Примечание группы, групп может быть много) и для каждой записи таблицы (Область данных). Зоны Примечания: более правильно было бы назвать Итоги:, т.к. здесь можно поместить поля общих итогов (сумма, среднее и пр.) для группы или всего отчета. Полученный отчет можно просмотреть на экране, отправить на принтер (например, с использованием соответствующих кнопок на стандартной панели инструментов), в Microsoft Word или Excel (из режима предварительного просмотра). Вид отчета в режиме предварительного просмотра приведен на рис. 23. 61 62 Рис. 23. Отчет в режиме предварительного просмотра Созданный Мастером отчет весьма несовершенен и излишне приукрашен жирными линиями, крупным шрифтом. В отчет необходимо добавить названия факультетов, специальностей и предметов и изменить их подписи. Для добавления новых объектов следует использовать "Панель элементов" или окно "Список полей" (главное меню "Вид" - "Список полей"), для модификации - окно свойств объекта и контекстное меню, для настройки параметров страницы (полей и размера бумаги) следует воспользоваться соответствующим пунктом в разделе Файл главного меню системы. Для использования в отчете данных справочных таблиц их следует включить в Источник записей окна свойств отчета (см. рис. 24.). После нажатия на кнопочку с изображением трех точек откроется окно Построителя запросов, которое после добавления нужных таблиц будет иметь вид, показанный на рис. 25. Для добавления таблиц в запрос (показаны в верхней части экрана Построителя) можно воспользоваться контекстным меню. После этого нужно добавить 3 поля - NAME_F, NAME_P и NAME_S в список используемых полей в 62 63 нижней части экрана. Далее следует закрыть окно Построителя запросов с сохранением изменений. Рис. 24. Окно свойств отчета, страница Данные Рис. 25. Построитель запросов для свойства "Источник записей" отчета После добавления новых таблиц в окне "Список полей" станут доступны для использования новые поля данных. Нам необходимо добавить поля названий из справочных таблиц. Для этого можно использовать 3 способа: 1. Перетащить мышкой названия поля из окна "Список полей" в нужное место отчета в Конструкторе. 2. Выбрать кнопку "Поле" в Панели элементов, щелкнуть мышкой на том месте отчета, где должно располагаться новое поле, задать его главное свойство (в окне Свойства) - "Данные" (выбором из раскрывающегося списка) - соответствующее поле таблицы базы данных и другие свойства, связанные с внешним видом; подпись для данных следует удалить. 63 64 3. Скопировать существующее поле отчета (например, N_FCLT) и задать для него новое свойство "Данные". Третий способ имеет преимущество - при копировании сохраняются свойства раздела "Макет", заданные для полей данного отчета (шрифт, его размер, насыщенность и пр.). Кроме того, в окне "Сортировка и группировка" (его можно открыть из контекстного меню или пункта "Вид" главного меню) зададим наличие Примечаний для всех групп (см. рис. 26.). Рис. 26. Окно "Сортировка и группировка" отчета В зоны примечаний поместим вычисляемые поля, которые будут показывать средние оценки для студента, группы, факультета и для всего отчета. При создании вычисляемых полей проще всего скопировать поле BALL из зоны "Область данных" в зону "Примечание группы:", далее перейти в окно свойств этого объекта и в пункте Данные нажать на кнопку с многоточием, после чего откроется окно Построителя выражений, где можно найти в списке функций AVG (среднее) и задать выражение AVG (BALL) (рис. 27.). Рис. 27. Создание вычисляемого поля для зоны примечаний отчета 64 65 Далее следует поместить в отчет Надпись "средняя оценка студента", после чего скопировать это поле и надпись в другие зоны отчета. Вид отчета после модификации приведен на рис. 28. Рис. 28. Отчет после его модификации в Конструкторе Отчет при печатании на бумаге будет выглядеть, как показано на рис. 29. 65 66 Рис. 29. Окончательный вариант отчета, напечатанный на принтере Использование запросов Ранее отмечалось, что для работы с данными, отобранными в соответствии с каким-либо условием, может быть использована возможность установить фильтр для таблицы базы данных или формы (в пункте меню Записи). В том же пункте меню есть раздел Расширенный фильтр, который открывает окно Конструктора запросов. Кроме того, Конструктор запросов фактически уже использовался при описании источника записей для отчета (см. рис. 25.). Для работы с запросами и для их сохранения в базе в системе Access присутствует специальный раздел, который позволяет создавать новые запросы в режиме конструктора или с помощью Мастера. Запросы в системе Access бывают нескольких видов: 1. Запрос для отбора данных по заданным сложным условиям из одной или нескольких таблиц баз данных, с группировкой данных для расчета итогов, с показом результатов выполнения запроса в виде таблицы, либо с использованием 66 67 его для форм и отчетов; после редактирования данных в таблице запроса данные таблиц базы могут обновляться (с некоторыми ограничениями). 2. Перекрестный запрос с формированием двухмерной итоговой таблицы, с группировкой по двум выражениям, одно из которых становится заголовком строки, другое - заголовком столбца. 3. Запрос на создание новой таблицы. 4. Запросы на изменение данных: обновление данных - команда занесения общих изменений в группу записей одной или нескольких таблиц; добавление данных - команда добавления группы записей из одной или нескольких таблиц в конец одной или нескольких таблиц; удаление данных - команда удаления группы записей из одной или нескольких таблиц. Принцип формирования запросов наиболее легко освоить при использовании Мастера запросов. Предположим, нам нужно отобрать тех студентов, которые по предмету Математика имеют только отличные оценки по результатам первого семестра. Для создания запроса выбираем в разделе Запросы базы режим Создание запроса с помощью Мастера. На первом шаге следует выбрать таблицы и поля, которые нужно включить в запрос. Выбор полей может быть выполнен из нескольких таблиц базы. Для нашего примера выбираем из таблицы SPISOK все поля, кроме DATA_P и N_PASP, из таблицы OCENKI - первые 4 поля и 2 поля таблицы PREDM (рис. 30.). Рис. 30. Выбор полей в Мастере запросов 67 68 На шаге 2 ("подробный или итоговый отчет") выбираем подробный отчет. На последнем шаге 3 задаем название запроса Математика и выберем вариант Изменить макет запроса, после чего нажимаем кнопку Готово. Запрос открывается в конструкторе запросов, его вид показан на рис. 31. Рис. 31. Конструктор запросов В верхней части Конструктора запросов показаны таблицы, используемые для отбора данных и связи между ними, в нижней части - таблица для выбора полей, группировки данных (если строки "Групповые операции" нет, нужно выбрать эту команду в главном меню Microsoft Access в пункте "Вид"), задания сортировки и условий отбора. Модифицируем запрос для задания условия отбора данных и упорядочения студентов по их фамилии. Для этого в колонке поля FIO зададим сортировку по возрастанию, для поля SEMESTR зададим условие отбора 1 (первый семестр), для поля BALL зададим условие 5 и для поля PREDMET зададим условие "математика". Если в условии отбора написать текст в квадратных скобках, при выполнении запроса появится окно для ввода этого параметра. Например, если для поля PREDMET в условии написать Задайте предмет, можно будет использовать один и тот же запрос для отбора данных по разным предметам. Можно также убрать галочки у тех полей, которые вы не хотите показывать на экране. Сохраним запрос и посмотрим его текст в режиме SQL (Structured Query Language). Текст запроса будет выглядеть следующим образом: SELECT Spisok.NZ AS Spisok_NZ, Spisok.FIO, Spisok.N_FCLT, Spisok.N_SPECT, Spisok.KURS, Spisok.N_GRUP, OCENKI.SEMESTR, OCENKI.N_PREDM AS OCENKI_N_PREDM, OCENKI.BALL, PREDMETS.N_PREDM AS PREDMETS_N_PREDM, PREDMETS.NAME_P FROM Spisok INNER JOIN (PREDMETS INNER JOIN OCENKI ON PREDMETS.N_PREDM = OCENKI.N_PREDM) ON Spisok.NZ = OCENKI.NZ WHERE (((OCENKI.SEMESTR)=1) AND ((OCENKI.BALL)="5") AND ((PREDMETS.NAME_P)="математика")) ORDER BY Spisok.FIO; Закроем окно конструктора и выполним запрос командой Открыть или двойным щелчком мышью. Результат отбора данных будет показан на экране в виде 68 69 таблицы (рис. 32.). Следует помнить, что редактирование данных этой таблицы приведет к изменению информации в таблицах базы данных! Рис. 32. Результаты выполнения запроса Результаты выполнения запроса или данные таблиц можно представить в виде диаграмм и графиков. Создадим запрос, в котором покажем в графическом виде средний балл по студенческим группам по предмету "Математика" (№ предмета = 1). Для группировки данных, как отмечалось выше, в пункте "Вид" меню системы ставим галочку у строки "Групповые операции". Получим следующий текст запроса: SELECT Spisok.N_GRUP, OCENKI.N_PREDM, Avg(OCENKI.BALL) AS [Avg-BALL] FROM Spisok INNER JOIN OCENKI ON Spisok.NZ = OCENKI.NZ GROUP BY Spisok.N_GRUP, OCENKI.N_PREDM HAVING (((OCENKI.N_PREDM)=1)); Для представления данных в виде графика в меню Вид выбираем пункт Сводная диаграмма, после чего открывается окно Построителя диаграмм. Методы оформления диаграмм аналогичны использованию объекта Диаграмма Microsoft Graph в программах Microsoft Word или Excel. На рис. 33. показана диаграмма для приведенного выше запроса. На рис. 34. приведена трехмерная диаграмма для запроса следующего вида: SELECT DISTINCTROW FCLT.NAME_F, PREDMETS.NAME_P, Avg(OCENKI.BALL) AS [Avg-BALL] FROM PREDMETS INNER JOIN ((Spisok INNER JOIN OCENKI ON Spisok.NZ = OCENKI.NZ) INNER JOIN FCLT ON Spisok.N_FCLT = FCLT.N_FCLT) ON PREDMETS.N_PREDM = OCENKI.N_PREDM GROUP BY FCLT.NAME_F, PREDMETS.NAME_P; 69 70 Рис. 33. Результаты выполнения запроса с группировкой данных, представленные в виде диаграммы Рис. 34. Результаты выполнения запроса с группировкой данных, представленные в виде трехмерной диаграммы С использованием запросов других видов одной командой можно изменять (команда SQL UPDATE) либо удалять (команда SQL DELETE) данные множества записей таблицы, отобранных по какому-либо условию, а также добавлять записи из других таблиц (команда SQL INSERT). Компиляция базы данных (MDE-файл) База данных Microsoft Access может быть сохранена в виде MDE-файла. 70 71 Для этого необходимо выбрать в главном меню пункт "Сервис" - "Служебные программы" - "Создать MDE-файл", далее задать имя файла. При сохранении базы в формате MDE будут скомпилированы все программные модули, удалены все исходные тексты программ, будет сжата. Программы Visual Basic будут по-прежнему выполняться, но их нельзя будет просматривать или изменять. Из-за удаления исходных кодов уменьшится размер базы данных, т.е. будет оптимизировано использование памяти, что повысит быстродействие базы данных . Работа с базой данных не изменится. Пользователи по-прежнему смогут обновлять данные, запускать экранные формы, формировать отчеты. Возможны модификация структуры таблиц, создание новых таблиц с использованием Конструктора и Мастера, изменение схемы базы данных с добавлением и удалением таблиц и связей между ними. Невозможными становятся следующие действия, компонентов приложения для работы с базой данных: связанные с созданием Создание, просмотр, изменение форм, отчетов, модулей с использованием Конструкторов и Мастеров. Создание и изменение программных модулей. Создание, удаление и изменение ссылок на библиотеки объектов или базы данных. Страницы доступа к данным Страницы доступа к данным представляют специальный тип Web-страниц, предназначенный для просмотра и работы через Интернет или интрасеть с данными, хранящимися в базах данных Microsoft Access или в базах данных Microsoft SQL Server. Страница доступа к данным может также включать данные из других источников, например, Microsoft Excel. Использование страниц доступа для работы с данными аналогично использованию экранных форм: пользователь имеет возможность просматривать, редактировать, добавлять и удалять записи в таблицах базы данных. Однако страницу можно использовать и за пределами системы Microsoft Access, предоставляя пользователям возможность обновлять или просматривать данные через Интернет или интрасеть с использованием браузера Microsoft Internet Explorer 5.01 с пакетом SP2 или более поздних версий. Страницы могут распространяться в электронном виде с помощью электронной почты; получатели будут видеть текущие данные при каждом открытии сообщения. На рис. 35. показана страница доступа к данным "Оценки студентов", разработанная в системе Microsoft Access с помощью Конструктора. Для переходов между записями, а также для добавления, удаления, сохранения, сортировки и отбора записей и для вызова справки предназначен стандартный набор кнопок. 71 72 Рис. 35. Страница доступа к данным в режиме работы с информацией базы В Конструкторе страница доступа состоит из групп, которые подразделяются на разделы (Section): подпись, верхний колонтитул, нижний колонтитул, кнопки перехода (см. рис. 36.). Рис. 36. Страница доступа к данным в Конструкторе 72 73 Каждый уровень группировки на странице доступа к данным имеет источник записей. Имя источника записей отображается в строке заголовка каждого раздела для данного уровня группировки. Страница представляет собой отдельный файл, хранящийся за пределами Access. При создании этого файла Microsoft Access добавляет его ярлык в окно базы данных. Разработка страниц доступа к данным аналогична разработке форм и отчетов: используется список полей, панель элементов и т.д. Тем не менее, приемы разработки страниц доступа к данным имеют ряд существенных отличий от разработки форм и отчетов. На страницах не допускается изменение полей группировки и вычисляемых полей. Если не удается установить курсор ни в одно поле на странице, страница не поддерживает изменение записей. Проект Microsoft Access (ADP) Проект Microsoft Access (*.adp) является файлом данных Microsoft Access, обеспечивающим эффективную работу с базами данных Microsoft SQL Server. Используя проект Microsoft Access, можно создавать приложения в архитектуре "клиент/сервер" так же легко, как приложения файлового сервера. Приложение в архитектуре "клиент/сервер" может быть традиционным решением, основанным на формах и отчетах, или решением на базе Интернета, использующим страницы доступа к данным. Проект Microsoft Access можно подключить к удаленной базе данных Microsoft SQL Server, локальной базе данных Microsoft SQL Server или к локальной установке Microsoft SQL Server 2000 Desktop Engine (MSDE). Файл проекта не содержит данные или объекты определения данных, такие как таблицы и представления. В проекте можно создавать и использовать для работы с данными формы, отчеты, запросы, модули, страницы доступа к данным. Краткие сведения о работе с проектом Microsoft Access будут даны в следующей лекции, которая посвящена системе Microsoft SQL Server. Часть II. Самостоятельная работа Рекомендуемое время 180 минут Вариант 1 1. Создать базу данных, содержащую таблицы СТУДЕНТЫ, ПРЕДМЕТЫ, ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ. В таблице СТУДЕНТЫ содержится пять полей: SNUM – номер студенческого билета, тип int, SFAM – фамилия студента, тип char, длина 15, SIMA – имя студента, тип char, длина 10, SOTCH – отчества студента, тип char, длина 12, 73 74 STIP – размер получаемой студентом стипендии, тип real. В таблице ПРЕДМЕТЫ содержатся пять полей: PNUM - номер, код учебного предмета, тип int, PNAME – наименование учебного предмета, тип char, длина 15, TNUM – номер (код) преподавателя, тип int, HOURS – продолжительность учебной дисциплины в часах, тип int, COURS – курс, на котором ведется данный учебный предмет, тип int. В таблице ПРЕПОДАВАТЕЛИ содержатся пять полей: TNUM – код преподавателя, тип int, TFAM - фамилия преподавателя, тип char, длина 15, TIMA - имя преподавателя, тип char, длина 10, TOTCH – отчество преподавателя тип char, длина 12, TDATE – дата принятия преподавателя на работу, тип date. В таблице УСПЕВАЕМОСТЬ (USP) содержатся пять полей: UNUM – код факта сдачи учебной дисциплины, тип int, OCENKA – оценка, полученная студентом по учебному предмету, тип int, UDATE – дата сдачи экзамена, тип date, SNUM – номер студенческого билета, тип int, PNUM – код учебного предмета, тип int. 2. Выбрать фамилии студентов, получающих стипендию 25 рублей. 3. Вывести фамилии студентов, попавших в диапазон от «А» до «Д». 4. Добавьте индексные поля в таблицы СТУДЕНТЫ, ПРЕДМЕТЫ, ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ. 5. Спроектировать базу данных с сущностями и связями. 6. Создать отчет с полями СТУДЕНТЫ, ПРЕДМЕТЫ, ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ. Вариант 2 1. Создать базу данных, содержащую таблицы СТУДЕНТЫ, ПРЕДМЕТЫ, ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ. В таблице СТУДЕНТЫ содержится пять полей: SNUM – номер студенческого билета, тип int, SFAM – фамилия студента, тип char, длина 15, 74 75 SIMA – имя студента, тип char, длина 10, SOTCH – отчества студента, тип char, длина 12, STIP – размер получаемой студентом стипендии, тип real. В таблице ПРЕДМЕТЫ содержатся пять полей: PNUM - номер, код учебного предмета, тип int, PNAME – наименование учебного предмета, тип char, длина 15, TNUM – номер (код) преподавателя, тип int, HOURS – продолжительность учебной дисциплины в часах, тип int, COURS – курс, на котором ведется данный учебный предмет, тип int. В таблице ПРЕПОДАВАТЕЛИ содержатся пять полей: TNUM – код преподавателя, тип int, TFAM - фамилия преподавателя, тип char, длина 15, TIMA - имя преподавателя, тип char, длина 10, TOTCH – отчество преподавателя тип char, длина 12, TDATE – дата принятия преподавателя на работу, тип date. В таблице УСПЕВАЕМОСТЬ (USP) содержатся пять полей: UNUM – код факта сдачи учебной дисциплины, тип int, OCENKA – оценка, полученная студентом по учебному предмету, тип int, UDATE – дата сдачи экзамена, тип date, SNUM – номер студенческого билета, тип int, PNUM – код учебного предмета, тип int. 2. Вывести информацию о студентах, сдавших предмет с кодом 2004. 3. Выбрать преподавателей, в фамилиях которых 7 символов. 4. Добавьте индексные поля в таблицы СТУДЕНТЫ, ПРЕДМЕТЫ, ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ. 5. Спроектировать базу данных с сущностями и связями. 6. Создать отчет с полями СТУДЕНТЫ, ПРЕДМЕТЫ, ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ. Вариант 3 1. Создать базу данных, содержащую таблицы СОТРУДНИКИ, ДОЛЖНОСТИ, ЗАРПЛАТА, АДРЕС. 75 76 В таблице СОТРУДНИКИ содержится четыре поля: SNUM – номер договора сотрудника, тип int, SFAM – фамилия сотрудника, тип char, длина 15, SIMA – имя сотрудника, тип char, длина 10, SOTCH – отчества сотрудника, тип char, длина 12, В таблице ДОЛЖНОСТИ содержатся четыре поля: DNUM - номер, код должности, тип int, DNAME – наименование должности, тип char, длина 15, RAZRYD – разряд сотрудника, тип int, SDATE – дата принятия на работу, тип date; В таблице ЗАРПЛАТА содержатся три поля: SNUM – номер договора сотрудника, тип int, ZRAZM - размер зарплаты тип int, HOURS –количество рабочих часов, тип int, В таблице АДРЕС содержатся пять полей: 1. ANUM – код адреса, тип int, 2. GOROD – город, тип char, длина 15, 3. YLICA – улица, тип char, длина 15, 4. DOM – номер дома, тип int, 5. KVART – номер квартиры, тип int. 1. Вывести всю информацию из таблицы ДОЛЖНОСТИ. 2. Выбрать из таблицы Сотрудники информацию о сотрудниках с фамилией Иванов. 3. Добавьте индексные поля в таблицы СОТРУДНИКИ, ДОЛЖНОСТИ, ЗАРПЛАТА, АДРЕС. 4. Спроектировать базу данных с сущностями и связями. 5. Создать отчет с полями СОТРУДНИК, ДОЛЖНОСТЬ, ЗАРПЛАТА, АДРЕС. 76 77 Вариант 4 1. Создать базу данных, содержащую таблицы СОТРУДНИКИ, ДОЛЖНОСТИ, ЗАРПЛАТА, АДРЕС. В таблице СОТРУДНИКИ содержится четыре поля: SNUM – номер договора сотрудника, тип int, SFAM – фамилия сотрудника, тип char, длина 15, SIMA – имя сотрудника, тип char, длина 10, SOTCH – отчества сотрудника, тип char, длина 12, В таблице ДОЛЖНОСТИ содержатся четыре поля: DNUM - номер, код должности, тип int, DNAME – наименование должности, тип char, длина 15, RAZRYD – разряд сотрудника, тип int, SDATE – дата принятия на работу; В таблице ЗАРПЛАТА содержатся три поля: SNUM – номер договора сотрудника, тип int, ZRAZM - размер зарплаты тип int, HOURS –количество рабочих часов, тип int, В таблице АДРЕС содержатся пять полей: 6. ANUM – код адреса, тип int, 7. GOROD – город, тип char, длина 15, 8. YLICA – улица, тип char, длина 15, 9. DOM – номер дома, тип int, 10. KVART – номер квартиры, тип int. 2. Выбрать информацию о сотрудниках с именем Иван. 3. Вывести всех сотрудников, имеющих фамилии Иванов или Петров. 4. Добавьте индексные поля в таблицы СОТРУДНИКИ, ДОЛЖНОСТИ, ЗАРПЛАТА, АДРЕС. 5. Спроектировать базу данных с сущностями и связями. 77 78 6. Указать все связи (родитель-потомок), указать отображаемые Сгенерировать отчёт, дамп таблицы. Вариант 5 1. Создать базу данных, содержащую таблицы ТОВАРЫ, ЦЕНА, СБЫТ, ПОСТАВЩИК. В таблице ТОВАРЫ содержится четыре поля: TKOD – код товара, тип int, TNAM – наименование товара, тип char, длина 15, TKOL – количество товара, тип int, TED – единицы измерения товара, тип char, длина 10. В таблице ЦЕНА содержатся два поля: TKOD - код товара, тип int, TCENA – цена единицы товара, тип int. В таблице ФИРМЫ содержатся два поля: FKOD - код фирмы, тип int, FNAM – наименование фирмы, тип char, длина 15. В таблице СБЫТ содержатся четыре поля: TKOD – код товара, тип int, FKOD - код фирмы, тип intе, SKOL- количество проданного товара, тип int, SDATE – дата продажи товара, тип date. В таблице ПОСТАВКА содержатся пять полей: 11. TKOD – код товара, тип int, 12. FKOD - код фирмы, тип int, 13. PKOL- количество закупленного товара, тип int, 14. PDATE – дата покупки товара, тип date. 78 поля. 79 2. Выбрать из таблицы ТОВАРЫ наименования товаров, количество которых больше 100. 3. Вывести информацию товарах мука и сахар. 4. Добавьте индексные поля в таблицы ТОВАРЫ, ЦЕНА, СБЫТ, ПОСТАВЩИК. 5. .Спроектировать базу данных с сущностями и связями. 6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы. Вариант 6. 1. Создать базу данных, содержащую таблицы ТОВАРЫ, ЦЕНА, ФИРМЫ, СБЫТ, ПОСТАВЩИК. В таблице ТОВАРЫ содержится четыре поля: TKOD – код товара, тип int, TNAM – наименование товара, тип char, длина 15, TKOL – количество товара, тип intе, TED – единицы измерения товара, тип char, длина 10. В таблице ЦЕНА содержатся два поля: TKOD - код товара, тип int, TCENA – цена единицы товара, тип int. В таблице ФИРМЫ содержатся два поля: FKOD - код фирмы, тип int, FNAM – наименование фирмы, тип char, длина 15. В таблице СБЫТ содержатся четыре поля: TKOD – код товара, тип int, FKOD - код фирмы, тип int, SKOL- количество проданного товара, тип int, SDATE – дата продажи товара, тип date. В таблице ПОСТАВКА содержатся пять полей: 15. TKOD – код товара, тип int, 79 80 16. FKOD - код фирмы, тип int, 17. PKOL- количество закупленного товара, тип int, 18. PDATE – дата покупки товара, тип date. 2. Выбрать информацию о товарах, количество которых – 100. 3. Вывести все товары, имеющие код 100 или 101. 4. Добавьте индексные поля в таблицы ТОВАРЫ, ЦЕНА, ФИРМЫ, СБЫТ, ПОСТАВЩИК. 5. Спроектировать базу данных с сущностями и связями. 6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы. Вариант 7 1. Создать базу данных, содержащую таблицы АВТОМОБИЛИ, ВОДИТЕЛИ, РЕЙС, ГРУЗ. В таблице АВТОМОБИЛИ содержится четыре поля: AKOD – код автомобиля, тип int, AMARKA – марка автомобиля, тип char, длина 15, AGRUZ – грузоподъемность, тип int, ASKOR – средняя скорость, тип int . В таблице ВОДИТЕЛИ содержатся пять полей: VKOD – табельный номер водителя, тип int, VFAM – фамилия водителя, тип char, длина 15, VIMA– имя водителя, тип char, длина 15, VOTCH – отчество водителя, тип char, длина 15, VOKLAD – оклад водителя, тип int. В таблице РЕЙС содержатся шесть полей: RKOD - код рейса, тип int, VKOD – табельный номер водителя, тип int, GKOD – код груза, тип int, AKOD – код автомобиля, тип int, 80 81 RDATE – дата выезда, тип date, RMESTO – место назначения, тип char, длина 15. В таблице ГРУЗ содержатся три поля: GKOD – код груза, тип int, GNAM – наименование груза, тип char, длина 15, GMAS - масса груза, тип int. 2. Вывести всю информацию из таблицы ВОДИТЕЛИ. 3. Выбрать из таблицы АВТОМОБИЛИ марки автомобилей, имеющих среднюю скорость 90 км/ч. 4. Добавьте индексные поля в таблицы АВТОМОБИЛИ, ВОДИТЕЛИ, РЕЙС, ГРУЗ. 5. Спроектировать базу данных с сущностями и связями. 6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы. Вариант 8 1. Создать базу данных, содержащую таблицы АВТОМОБИЛИ, ВОДИТЕЛИ, РЕЙС, ГРУЗ. В таблице АВТОМОБИЛИ содержится четыре поля: AKOD – код автомобиля, тип int, AMARKA – марка автомобиля, тип char, длина 15, AGRUZ – грузоподъемность, тип int, ASKOR – средняя скорость, тип int. В таблице ВОДИТЕЛИ содержатся пять полей: VKOD – табельный номер водителя, тип int, VFAM – фамилия водителя, тип char, длина 15, VIMA– имя водителя, тип char, длина 15, VOTCH – отчество водителя, тип char, длина 15, VOKLAD – оклад водителя, тип int. В таблице РЕЙС содержатся шесть полей: 81 82 RKOD - код рейса, тип int, VKOD – табельный номер водителя, тип int, GKOD – код груза, тип int, AKOD – код автомобиля, тип int, RDATE – дата выезда, тип date, RMESTO – место назначения, тип char, длина 15. В таблице ГРУЗ содержатся три поля: GKOD – код груза, тип int, GNAM – наименование груза, тип char, длина 15, GMAS - масса груза, тип int. 2. Выбрать фамилии водителей, имеющих оклад 3000 рублей. 3. Вывести информацию об автомобилях, имеющих грузоподъемность 3т. или 4т. 4. Добавьте индексные поля в таблицы АВТОМОБИЛИ, ВОДИТЕЛИ, РЕЙС, ГРУЗ. 5. Спроектировать базу данных с сущностями и связями. 6. Указать все связи (родитель-потомок), указать отображаемые Сгенерировать отчёт, дамп таблицы. Вариант 9 1. Создать базу данных, содержащую таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ. В таблице ПАЦИЕНТЫ содержится шесть полей: PKOD – код пациента, тип int, PFAM – фамилия пациента, тип char, длина 15, PIMA – имя пациента, тип char, длина 15, POTCH – отчество пациента, тип char, длина 15,. PDATE – дата рождения пациента, тип date, DKOD – код диагноза, тип int. В таблице ВРАЧИ содержатся пять полей: VKOD – код врача, тип int, VFAM – фамилия врача, тип char, длина 15, VIMA – имя врача, тип char, длина 15, 82 поля. 83 VOTCH – отчество врача, тип char, длина 15,. PKOD – код пациента, тип int, В таблице ДИАГНОЗ содержатся четыре поля: DKOD – код диагноза, тип int. DNAM – название болезни, тип char, длина 15, DDATE – дата начала болезни, тип date, DTIME – количество дней больничного, тип int. 2. Выбрать из таблицы ПАЦИЕНТЫ фамилии пациентов с фамилией Кузнецов. 3. Вывести информацию о врачах, имена которых Василий или Виталий. 4. Добавьте индексные поля в таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ. 5. Спроектировать базу данных с сущностями и связями. 6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы. Вариант 10 1. Создать базу данных, содержащую таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ. В таблице ПАЦИЕНТЫ содержится шесть полей: PKOD – код пациента, тип int, PFAM – фамилия пациента, тип char, длина 15, PIMA – имя пациента, тип char, длина 15, POTCH – отчество пациента, тип char, длина 15,. PDATE – дата рождения пациента, тип date, DKOD – код диагноза, тип int. В таблице ВРАЧИ содержатся пять полей: VKOD – код врача, тип int, VFAM – фамилия врача, тип char, длина 15, VIMA – имя врача, тип char, длина 15, VOTCH – отчество врача, тип char, длина 15,. PKOD – код пациента, тип int, В таблице ДИАГНОЗ содержатся четыре поля: 83 84 DKOD – код диагноза, тип int. DNAM – название болезни, тип char, длина 15, DDATE – дата начала болезни, тип date, DTIME – количество дней больничного, тип int. 2. Выбрать болезни, для которых количество дней больничного составляет 14 дней. 3. Вывести информацию о пациентах с фамилиями Шестаков или Исаев. 4. Добавьте индексные поля в таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ. 5. Спроектировать базу данных с сущностями и связями. 6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы. 84