Государственное автономное профессиональное образовательное учреждение Мурманской области Мурманский колледж экономики и информационных технологий
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
ДЛЯ
УЧЕБНОЙ ПРАКТИКИ
ПМ-02 РАЗРАБОТКА, ВНЕДРЕНИЕ И АДАПТАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ОТРАСЛЕВОЙ НАПРАВЛЕННОСТИ
для специальности
09.02.05 «Прикладная информатика (по отраслям)»
2016
ОДОБРЕНА предметной (цикловой) комиссией Информационных технологий Протокол № 4 от 24.11.2016 г. | Составлена в соответствии с требованиями к результатам освоения основной профессиональной образовательной программы федерального государственного образовательного стандарта среднего профессионального образования по специальности 09.02.05 Прикладная информатика (по отраслям) |
| |
Автор: Т.В. Комарова | |
| |
СОДЕРЖАНИЕ
1 Общие требования к выполнению задания по теме «Работа с файлами» ……………………………………………………………… | 3 |
2 Варианты индивидуальных заданий……….……….………………………...… | 6 |
3 Основные сведения из теории………………………………….……………..… | 15 |
Приложение А – Экранные формы………………………………………………. | 19 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
1 Общие требования к выполнению задания по теме «Работа с
файлами»
Задание: Разработайте в среде Delphi приложение, позволяющее работать с типизированным файлом путём выбора соответствующего пункта меню:
Файл | Просмотр | Редактирование | Печать | Справочники | Сервис | Выход |
Создать | Всех данных | Добавление | По условию | | Новый пользователь | |
Выбрать | По условию | Корректировка | Документа | | Смена пароля | |
Очистить | Диаграмма | Удаление | | | Удалить пользователя | |
Требования к приложению:
Все типы данных, константы и переменные разместите в отдельном модуле (например, ModDatа), который при необходимости подключите к другим модулям проекта.
Замечание: Все описания сделанные в модуле ModDatа НЕ должны дублироваться в других модулях проекта.
На форме «Справочники» обеспечьте возможность работы с текстовым файлом. Просмотр справочника организуйте в компонент Listbox. При добавлении новой записи в список Listbox должна быть проверка на дублирование записей (дублирование в справочниках НЕ допускается); при удалении записи из справочника должен быть предварительный уточняющий запрос на удаление (да/нет); элементы справочника должны быть отсортированы по алфавиту.
Для ввода исходных данных в типизированный файл (пункты меню «Корректировка» и «Добавление») разработайте экранную форму ввода. Предусмотрите проверку корректности ввода исходных данных.
Просмотр данных из типизированного файла надо реализовать выводом в таблицу StringGrid. Количество строк в таблице StringGrid должно соответствовать количеству выводимых записей.
При реализации пункта меню «Корректировка» на форму ввода должны быть выведены «старые» значения полей корректируемой записи.
Пункт меню «Удаление» должен содержать подменю:
- удаляется одна запись из файла по выбору пользователя;
- удаляются все записи файла, удовлетворяющие определённому условию.
«Очистка» файла обязательно должна сопровождаться предварительным запросом на подтверждение очистки содержимого файла.
Печать реализуйте с помощью компонента QuickRep и предварительно заполненного текстового файла.
На форме, помимо главного меню, разместите:
- картинку, соответствующую предметной области задачи;
- строку состояния, которая располагается в нижней части основной формы (компонент StatusBar). Строка состояния делится на статусные панели. Для создания панелей надо вызвать через свойство Panels в Инспекторе объектов редактор панелей, и в контекстном меню, вызванном на рабочем поле редактора выбрать пункт Add. Разместите в строке состояния текущую дату, текущее время и какую-нибудь текстовую информацию (можно в качестве «бегущей строки»).
- инструментальную панель и вынесите не неё несколько кнопок SpeedButton, дублирующих некоторые пункты меню.
Работа с приложением должна начинаться с ввода на отдельной форме логина и пароля пользователя для того, чтобы избежать несанкционированного доступа к данным. Число попыток ввести пароль не более трёх.
У разработчика приложения должен быть свой логин, обеспечивающий доступ к пункту меню "Сервис", для остальных пользователей пункт меню "Сервис" должен быть недоступен.
При первом открытии формы, содержащей пункты главного меню задачи, доступными должны быть только пункты «Создание», «Открытие» и «Выход».
Обеспечьте отображение статистических данных в виде диаграммы с помощью компонента CHART.
Для кнопок используйте компонент BitBtn, назначьте цвет и размер шрифта, а также картинку, подходящую по смыслу.
Разместите слева от названия некоторых пунктов меню подходящее по смыслу изображение, используя свойство Bitmap (Program Files \ Common Files \ Borland Shared \ Images \ Buttons)
На форме «Просмотр всех записей файла» организуйте поиск записи и обеспечьте выделение цветом строки таблицы с найденной записью или вывод найденной записи на отдельную форму.
На форме «Просмотр всех записей файла» организуйте сортировку записей по разным полям. Выбор поля для сортировки должен осуществляться в компоненте RadioGroup.
Дополните своё приложение всплывающими контекстными подсказками.
Создайте контекстное меню и включите в него некоторые пункты Вашего главного меню и пункт «О программе».
Включите в приложение форму «О программе», разместив не неё компонент PageControl – представляет собой набор страниц с закладками, каждая страница может содержать свой набор помещённых на неё компонентов. Для создания новой страницы надо в контекстном меню компонента PageControl, выбрать пункт NewPage. (Pages[i].Caption – название страницы)
2 Варианты индивидуальных заданий
Индивидуальное задание:1
Типизированный файл должен содержать данные о продаже частных домов (адрес: улица и номер дома, площадь дома в м2, дата продажи, стоимость дома, сумма страхового взноса, фирма-страховщик).
Просмотр и печать по условию: информация о продаже домов за отчётный период, стоимость которых не превышает указанную.
Документ для печати – карточка с информацией о доме.
Диаграмма должна отображать количество домов, выставленных на продажу в каждом месяце указанного года.
Индивидуальное задание:2
Типизированный файл должен содержать данные таможни (номер паспорта, ФИО, гражданство, страна выезда, дата выезда, количество дней).
Просмотр и печать по условию: информация о пересечении границы за отчётный период в указанную страну.
Документ для печати – визовая справка.
Диаграмма должна отображать количество людей, которые пересекли границу за каждый сезон указанного года.
Индивидуальное задание:3
Типизированный файл должен содержать данные о транспортных перевозках (фирма-заказчик, название транспорта, местоназначение, расстояние в км, цена за километр, стоимость перевозки). «Стоимость перевозки» должна рассчитываться программно.
Просмотр и печать по условию: информация о транспортных перевозках определённого заказчика, стоимость которых превышает указанное число.
Документ для печати – путевой лист.
Диаграмма должна отображать прибыль за перевозки грузов, которые были осуществлены в каждом месяце указанного года.
Индивидуальное задание:4
Типизированный файл должен содержать данные об оплате услуг операторов мобильной связи (номер телефона, ФИО абонента, сумма вклада, дата, сотовый оператор, ФИО сотрудника).
Просмотр и печать по условию: информация о вкладах, произведённых за отчётный период, и перечисленных определённому оператору сотовой связи.
Документ для печати – товарный чек.
Диаграмма должна отображать общую сумму денежных перечислений каждому оператору мобильной за указанный год.
Индивидуальное задание:5
Типизированный файл должен содержать данные о вылове рыбы (дата вылова, название рыбы, количество в тоннах, место вылова).
Просмотр и печать по условию: информация о вылове указанной рыбы за отчётный период.
Документ для печати – суточное донесение.
Диаграмма должна отображать общее количество тонн рыбы выловленной судном за каждый месяц указанного года.
Индивидуальное задание:6
Типизированный файл должен содержать данные о животных заповедника (название животного, количество особей, дата поступления животного, поставщик).
Просмотр и печать по условию: информация о животных, прибывших в заповедник от указанного поставщика за отчётный период.
Документ для печати – накладная.
Диаграмма должна отображать общее количество особей животных, поступивших в заповедник за каждый сезон указанного года.
Индивидуальное задание:7
Типизированный файл должен содержать данные о туристических поездках (страна отдыха, город, дата отправления, отель, количество дней отдыха, стоимость путевки).
Просмотр и печать по условию: информация о турпутёвках в выбранную страну, дата отправления которых находится в указанном диапазоне.
Документ для печати – турпутевка.
Диаграмма должна отображать общую прибыль от продажи путевок за каждый месяц указанного года.
Индивидуальное задание:8
Типизированный файл должен содержать данные о продаже ж/д билетов (номер билета, номер поезда, пункт отправления, пункт назначения, дата отравления, стоимость билета, номер вагона, номер места).
Просмотр и печать по условию: информация о продаже ж/д билетов за отчётный период по указанному направлению.
Документ для печати – ж/д билет.
Диаграмма должна отображать общую прибыль от продажи ж/д билетов за каждый месяц указанного года.
Индивидуальное задание:9
Типизированный файл должен содержать данные о спектаклях театра «Золотой ключик» (название спектакля, ФИО постановщика, дата премьеры, жанр).
Просмотр и печать по условию: информация о спектаклях, за отчётный период и указанного жанра.
Документ для печати – Информация о спектакле.
Диаграмма должна отображать общее количество спектаклей каждого жанра за указанный год.
Индивидуальное задание:10
Типизированный файл должен содержать данные о пациентах поликлиники (номер талона, время, ФИО пациента, дата обращения, ФИО врача, специализация врача).
Просмотр и печать по условию: информация о пациентах, обратившихся за отчётный период к врачам указанной специализации.
Документ для печати – талон к врачу.
Диаграмма должна отображать общее количество пациентов обратившихся за медицинской помощью в каждый месяц указанного года.
Индивидуальное задание:11
Типизированный файл должен содержать данные о сдаче экзамена по дисциплине «Базы данных» (ФИО студента, оценка, дата сдачи экзамена, группа, ФИО преподавателя).
Просмотр и печать по условию: информация о студентах выбранной группы, сдавших экзамен на указанную оценку.
Документ для печати – экзаменационный лист.
Диаграмма должна отображать общее количество студентов сдавших экзамен на отлично, хорошо, удовлетворительно, неудовлетворительно.
Индивидуальное задание:12
Типизированный файл должен содержать данные о выдаче книг в библиотеке (номер читательского билета, ФИО читателя, дата выдачи книги, название книги, автор книги, срок выдачи в днях).
Просмотр и печать по условию: информация о книгах, выданных по указанному номеру читательского билета за отчётный период.
Документ для печати – информация о выдаче книги.
Диаграмма должна отображать общее количество книг взятых в библиотеке в каждый месяц указанного года.
Индивидуальное задание:13
Типизированный файл должен содержать данные о вкладчиках банка (номер счета, ФИО вкладчика, сумма вклада, дата операции, Наименование вклада).
Просмотр и печать по условию: информация о вкладах, произведённых за отчётный период, сумма которых не менее указанной.
Документ для печати – выписка о вкладе.
Диаграмма должна отображать общую сумму денежных вкладов каждом месяце указанного года.
Индивидуальное задание:14
Типизированный файл должен содержать данные об участниках областной олимпиады по программированию среди студентов колледжей (ФИО участника, год рождения, город, набранный балл, занятое место, название учебного заведения).
Просмотр и печать по условию: информация об участниках олимпиады, прибывших из указанного города и набравших баллов больше, чем указанное число.
Документ для печати – выписка о результатах олимпиады.
Диаграмма должна отображать общее количество участников, набравших от 10 до 30 баллов, от 40-60 баллов, от 70-100 баллов.
Индивидуальное задание:15
Типизированный файл должен содержать данные об автомобилях, выставленных на продажу в автосалоне (марка, цвет, год выпуска, стоимость).
Просмотр и печать по условию: информация об автомобилях выбранной марки, год выпуска которых находится в указанном диапазоне.
Документ для печати – информация об автомобиле.
Диаграмма должна отображать общее количество автомобилей каждой марки (четыре любые марки выбирает пользователь).
Индивидуальное задание:16
Типизированный файл должен содержать данные о товарах на складе (наименование товара, поставщик, цена, количество, стоимость (это поле пользователем не заполняется, оно должно вычисляться на основании полей "цена" и "количество")).
Просмотр и печать по условию: информация о товарах, количество которых находится в указанном диапазоне.
Удаление по условию – по наименованию поставщика.
Документ для печати – накладная.
Диаграмма должна отображать общую стоимость поставки товаров за каждый месяц указанного года.
Индивидуальное задание:17
Типизированный файл должен содержать данные о выставке собак (название выставки, место проведения выставки, дата проведения выставки, кличка собаки, порода, возраст, высота в холке, оценка(отлично/хорошо), занятое место).
Просмотр и печать по условию: информация о собаках выбранной породы и выставки, возраст которых находится в указанном диапазоне.
Документ для печати – диплом участника выставки.
Диаграмма должна отображать общее количество участников каждой породы(четыре любые породы которые выбирает пользователь) на указанной выставке .
Индивидуальное задание:18
Типизированный файл должен содержать данные о призёрах зимней олимпиады (ФИО спортсмена, возраст спортсмена, вид спорта, страна, медаль, год проведения олимпиады).
Просмотр и печать по условию: информация о спортсменах-призёрах выбранной страны, возраст которых находится в указанном диапазоне.
Документ для печати – диплом участника олимпиады.
Диаграмма должна отображать общее количество призеров по виду медалей во время проведения олимпиады указанного года.
Индивидуальное задание:19
Типизированный файл должен содержать данные о дипломных работах студентов колледжа, подлежащих защите (ФИО студента, Группа, ФИО научного руководителя, тема дипломной работы, количество страниц в работе, рекомендуемая оценка).
Просмотр и печать по условию: информация о дипломных работах студентов выбранной группы, рекомендуемая оценка которых, совпадает с указанной.
Документ для печати – рецензия дипломной работы.
Диаграмма должна отображать общее количество студентов имеющих оценку 5, 4, 3,2.
Индивидуальное задание:20
Типизированный файл должен содержать данные о прохождении студентами-юношами колледжа учебных сборов в войсковой части (ФИО студента, Группа, Дата начала учебных сборов, количество дней, номер в/ч).
Просмотр и печать по условию: информация о студентов выбранной группы, проходивших учебные сборы в указанной в/ч.
Документ для печати – справка о прохождении учебных сборов.
Диаграмма должна отображать общее количество студентов прошедших учебные сборы за последние три четыре года.
Индивидуальное задание:21
Типизированный файл должен содержать данные о ежегодной всероссийской олимпиаде по программированию (ФИО участника, Город, Название учебного заведения, Дата, количество баллов за тест, количество баллов за практическую часть, поле «общее количество баллов» должно заполняться программно).
Просмотр и печать по условию: информация об участниках выбранного города, набравших общее количество баллов больше указанного.
Удаление по условию – дата проведения олимпиады.
Документ для печати – справка о результатах олимпиады.
Диаграмма должна отображать общее количество баллов набранных участниками трёх городов. Выбор этих городов осуществляется пользователем программы.
3 Основные сведения из теории
Различаются файлы трех типов:
а) текстовые (последовательный доступ к записям),
б) типизированные (прямой доступ к записям)
в) и нетипизированные (двоичные файлы).
Для доступа к файлам используется специальная файловая переменная (далее в качестве имени файловой переменной будем использовать символ F).
Файловая переменная описывается так:
Var F : Textfile – для текстовых файлов
Var f : file of - для типизированных файлов
Var f : file –для нетипизированных файлов.
Обычная техника программирования при работе с файлами включает вызовы следующих процедур:
AssignFile (F, Filename:string); - устанавливает связь между логическим именем файла (файловой переменной) и физическим именем файла.
Rewrite (F); -открывает файл для записи: если файл не существует, то он создается, если существует, то очищается.
Append (F);- открытие текстового файла для добавления информации в конец файла,
в этом случае файл не очищается.
Reset (F);-открывает существующий файл для чтения - если файл текстовый, для чтения или записи – если файл типизированный или нетипизированный.
CloseFile (F); -закрывает файл (прерывает связь, установленную AssignFile).
Для чтения данных из файла применяют процедуры:
Read (var F;); -считывает из текстового или типизированного файла указанный список.
Readln (var F;); - считывет из файла (только текстового) указанный список переменных и преводит позицию чтения на следующую запись.
Для записи данных в файл существуют процедуры:
Write (var F; ); - записывает в текстовый или типизированный файл указанный список.
Writeln (var F; ); - записывает в текстовый файл указанный список и символ перехода на новую строку.
Пример:
Пусть в текстовом файле Sadik.txt хранится список детей – в каждой строке файла содержится возраст ребенка, имя и фамилия. Следует считать весь список детей в Memo3, список детей младше 5 лет – в Memo1, список детей 5 лет и старше – в Memo2.
Procedure Tform4.Button1Click (Sender:Tobject);
Var
F : TextFile ; // файловая переменная
Vozr : integer ; // возраст
Famname : string ; // фамилия и имя
Begin
Memo1.Clear ; Memo2.Clear ; Memo3.Clear ; // очищаем содержимое всех Memo
Memo3.Lines.LoadfromFile ('d:\sadik.txt') ; // считываем весь список детей из файла в Memo3
AssignFile (F, 'd:\sadik.txt') ;
Reset (F) ; // открываем файл для чтения
While not Eof (F) do
Begin
Readln (F, Vozr, Famname) ;
If Vozr
Else Memo2.Lines.Append (Famname + '-' + IntToStr (Vozr) )
End ;
CloseFile (f) ;
End;
Полезные функции, применимые при работе с файлами
Переименование файла:
Function RenameFile(const Oldname, Newname: string) : boolean; -функция возвращает значение true, если переименование прошло успешно; переименовывать можно только закрытые(не открытые для чтения или записи) файлы.
Определение факта существования файла:
Function FileExists (const Fname:string):boolean; возвращает true, если файл существует.
Пример: If FileExists ('a:\doc1.txt') then
If NOT RenameFile ('a:\doc1.txt', 'a:\doc1.bak') then
ShowMessage (' дублирование имени файла или файл занят другой программой! ' ) ;
If not FileExists ( 'a:\doc1.txt' ) then Memo1.Lines.SaveToFile ( 'a:\doc1.txt' ) ;
Определение размера файла (для текстовых файлов не используется)
Function FileSize(F) : integer;
Где F- логическое имя файла.
Пример: создадим процедуру, позволяющую определить и отобразить размер любого выбранного пользователем файла.
Procedure Tform1.Button3Click (Sender:Tobject);
Var Size : integer ;
F : file ;
Begin
If Opendialog1.Execute then
Begin
AssignFile (F, Opendialog1.Filename) ;
Reset (F) ;
Size := FileSize (F) ;
CloseFile (f) ;
Label1.WordWrap := true ; //возможность вывода в несколько строк
Label1.Caption := 'Размер файла ' + Opendialog1.Filename + 'равен ' + IntToStr (size) + ' байт' ;
End ;
End ;
4)Удаление файла
Function Deletefile(const Fname:string):boolean; - Возвращает true при успешном удалении файла.
5) Выделение частей имени файла
Function ExtractFileExt (const Fname : string) : string; - выделяет расширение из указанного имени файла.
Function ExtractFileDir (const Fname : string) : string; -выделяет из полного имени файла имя устройства и маршрут. Или Function ExtractFilePath (const Fname : string) : string;
Function ExtractFileName (const Fname : string) : string; - выделяет из полного имени файла только имя c расширением, отбрасывая путь и устройство.
Функции для работы с каталогами и дисками
Function CreateDir (const dir : string) : boolean; - создается новый каталог Dir, если функция возрастает true
Function RemoveDir (const Dir : string) : boolean; - удаляется пустой каталог с диска (файлы предварительно удаляются функцией DeleteFile).
Function SetCu r r entDir(const Dir : string): boolean; - устанавливается текущим каталог Dir.
Function GetCu r r entDir : string; - определяет имя текущего каталога.
Работа с типизированными файлами
Типизированные файлы являются файлами прямого доступа – к любой записи файла можно обратиться напрямую по номеру записи. Существуют специальные процедуры и функции для работы с типизированными файлами:
Procedure Seek (var F;File; N:longint); - перемещает указатель (курсор) в файле на запись с номером N.
Function FilePos (var F:file):longint; - функция возвращает номер записи в файле F, на которой находится указатель
Function Filesize (var F:File):longint; - возвращает число записей в файле F.
Procedure Truncate (var F:File); - процедура удаляет все записи от текущей включительно до конца файла.
Пример: сформируем типизированный файл, где будут хранится сведения о поступающих на склад товарах. Нажатие на кнопку Добавить должно добавлять одну запись в файл, содержащую сведения о поступившем товаре: дату поставки, название товара, цену и количество поступившего товара.
Procedure Tform1.Button1Click (sender:Tobject); // программируем кнопку Добавить
Type
Ttov = record //структура записи, содержащая сведения о товаре
DateP : TdateTime; //дата поставки
Tovar : string[15]; //название товара
Cena : real; //цена товара
Count : integer; //количество товара
End;
Var Tov_rec : Ttov; //запись содержащая сведения о товаре
Ft : file of Ttov; // файл для хранения сведений о товаре
Begin
{формируем запись}
Tov_rec.DateP := dateTimePicker1.Date;
Tov_rec.Tovar := Combobox1.text;
Tov_rec.Cena := StrToFloat (edit1.text);
Tov_rec.Count := StrToInt (edit2.text);
AssignFile (Ft, 'tovar.dat'); //связь с реальным файлом
If not FileExists ('tovar.dat') then Rewrite (Ft) //открываем файл для записи данных
Else begin
Reset (ft);
Seek (Ft, Filesize (Ft)); //переход на последнюю запись файла
End;
Write (Ft,Tov_rec); //записываем на диск одну запись
CloseFile (Ft);
Edit1.text := '';
Edit2.text := '';
End;
ПРИМЕР построения диаграммы
procedure TForm1.BitBtn1Click(Sender: TObject);
Var a1,a2,a3 : longint;
begin
a1:=100; a2:=200; a3:=300;
chart1.SeriesList[0].Add(A1, 'Цех 1', clYellow);
chart1.SeriesList[0].Add(A2, 'Цех 2 ', clBlue);
chart1.SeriesList[0].Add(A3, 'Цех 3 ', clRed);
end;
Приложение А
Экранные формы

Рисунок А.1 – Экранная форма «Справочник «Товары»

Рисунок А.2 – Экранная форма «Добавление записи»

Рисунок А.3 – Экранная форма «Просмотр по условию»