Разработка информационно-поисковой системы 'Услуги фотоцентра' на языке программирования Паскаль

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    588,36 Кб
  • Опубликовано:
    2014-08-06
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка информационно-поисковой системы 'Услуги фотоцентра' на языке программирования Паскаль

Содержание

Введение

1. Структурированный тип данных - множество

2. Разработка информационно-поисковой системы «Услуги фотоцентра» на языке программирования Паскаль

2.1 Постановка задачи

2.2 Описание алгоритма решения задачи

2.3 Описание исходных данных

3. Практическая часть выполнения задачи на языке программирования Паскаль

3.1 Описание интерфейса

3.2 Описание работы каждого блока

4. Результаты работы программы

Заключение

Список использованных источников

Приложение А Листинг программы

Приложение Б Блок-схема

Введение


Язык Паскаль назван в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа.

Язык Паскаль был создан Никлаусом Виртом в 1968-1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Он был опубликован в 1970 году Виртом как небольшой и эффективный язык, чтобы способствовать хорошему стилю программирования, использовать структурное программирование и структурированные данные.

В данном курсовом проекте главной целью является разработка информационно-поисковой системы «Услуги Фотоцентра» на языке программирования Паскаль, с удобным пользовательским интерфейсом для работы с данной программой.

Информационно-поисковая система (ИПС) - это система, обеспечивающая поиск и отбор необходимых данных в некоторой базе данных.

Результатом выполнения курсового проекта будет являться база данных в виде таблицы, которая будет включать в себя следующие поля: ФИО, адрес, номер телефона, наименование услуги, сумма оплаты, срок выполнения. А так же необходимо изучить теоретические сведения, закрепить и систематизировать знания, полученные в процессе изучения дисциплины «Основы алгоритмизации и программирования», а так же уметь применять полученные знания на практике.

Более того, данная программа не имеет каких-либо возвратных ограничений, что подразумевает отсутствие у пользователя перечня определённых навыков, за исключением простейшей компьютерной этики. Основной целью данной программы является удобство, простота и качество.

 

1. Структурированный тип данных - множество


Множество - это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку объектов, которые можно рассматривать как единое целое [4, c.139].

Все элементы множества должны принадлежать одному из порядковых типов, содержащему не более 256 значений [4, c. 185-190].

Переменные множественного типа описываются так:

<идентификатор> : set of <базовый тип>;

Например:

Var A, D : Set Of Byte; : Set Of 'a'..'z';

C : Set Of Boolean;

Операции над множествами:

Объединением двух множеств A и B называется множество, состоящее из элементов, входящих хотя бы в одно из множеств A или B [5, c. 13-15].. Знак операции объединения в Паскале «+». Наглядное изображение объединения двух множеств A и B представлено на рисунке 1.1.

Рисунок 1.1 - Объединение двух множеств A и B

Пример операции объединения:

[1, 2, 3, 4] + [3, 4, 5, 6] => [1, 2, 3, 4, 5, 6]

Пересечением двух множеств A и B называется множество, состоящее из элементов, одновременно входящих во множество A и во множество B. Знак операции пересечения в Паскале «*». Наглядное изображение пересечение двух множеств A и B представлено на рисунке 1.2.

Рисунок 1.2 - Пересечение двух множеств A и B

Пример операции пересечения:

[1, 2, 3, 4] * [3, 4, 5, 6] => [3, 4]

Разностью двух множеств A и B называется множество, состоящее из элементов множества A, не входящих во множество B [3]. Знак операции разности в Паскале «-».Наглядное изображение разности двух множеств A и B представлено на рисунке 1.3.

Рисунок 1.3 - Разность двух множеств A и B

Пример программы сохранения в строке только первых вхождений символов, удалив все остальные [2, c. 99].:

program vvedenie_primer;m : set of char;s : string; i : byte;

write('Введите строку: ');readln(s);

m :=[];i := 1;i <= length(s) dos[i] in m then delete(s, i, 1)begin m:=m+[s[i]]; i := i + 1 end;writeln(s);end.

2 Разработка информационно-поисковой системы «Услуги фотоцентра» на языке программирования паскаль

 

.1 Постановка задачи


В курсовом проекте поставленной задачей являлась разработка информационно-поисковой системы на тему «Услуги фотоцентра» на языке программирования Паскаль. В ходе работы применить знания, полученные при изучении предмета «Основы алгоритмизации и программирования», а так же изученные самостоятельно.

Ввод данных должен быть предоставлен пользователю. Все данные при их запросе и выполнении операций указанных пользователем должны выводиться виде таблицы с полями: ФИО, адрес, номер телефона, наименование услуги, сумма оплаты, срок выполнения.

Оформить удобный пользовательский интерфейс. Добавить меню, содержащее все действия, которые выполняют процедуры. Меню должно вызывать соответствующие процедуры из программы.

Разработанная поисковая система должна выполнять все поставленные задания исправно. Находить все требуемые данные и без потерь предоставлять их для просмотра пользователю.

Программа и её интерфейс должен быть удобным и понятным для любого пользователя.

Поисковая система также должна производить: удаление по заданным атрибутам, осуществлять поиск в соответствии с запросом указанным пользователем, осуществлять сортировку по любым из атрибутов.

Разработанная программа должна выполнять основные функции как:

-       удалять все записи по заданной услуге;

-       заменять номер телефона для заданной услуги;

-       выводить все сведения об оплате по заданной услуге.

Диалог с пользователем в выполненной программе должен производиться в виде меню.

 

.2 Описание алгоритма решения задачи


В программе содержатся множества процедур, каждая из которых выполняет свою функцию. Это такие процедуры, как:

-       процедура добавления клиентов (new_vvod);

-       процедура вывода клиентов в виде таблицы (new_vivod);

-       процедура удаления записи по заданному атрибуту (udalenie_zapisi);

-       процедура удаления всех записей по заданной услуге (udalenie_uslug);

-       процедура замены номера телефона для заданной услуги (zamena);

-       процедура вывода сведений об оплате по заданной услуге (zadan_uslug);

-       процедура поиска (poisk);

-       процедура сортировки (sortirovka).

Каждой процедуре соответствует пункт в меню, которые осуществляют следующие действия:

Пункт «Добавление клиентов» при запуске вызывает процедуру new_vvod. При вызове данной процедуры пользователь должен ввести количество добавляемых клиентов и необходимые данные, с которыми, в последующем он будет осуществлять определённые операции. Данная процедура работает как с новыми файлами (добавление клиентов в пустой файл), так и с уже созданными (дополняет уже в созданный файл необходимое пользователю число клиентов)

Пункт «Просмотр таблицы» вызывает процедуру new_vivod. Процедура выводит на экран данные введенные пользователем в процедуре new_vvod (то есть в пункте «Добавление клиентов»), которые были созданы уже ранее, в виде таблицы для их наиболее удобного отображения и последующих действий над ними.

1       удаление по «ФИО»;

.1      удаление по «Фамилии»;

.2      удаление по «Имени»;

.3      удаление по «Отчеству»;

         удаление по «Адресу»;

.1      удаление по «Городу»;

.2      удаление по «Улице»;

.3      удаление по «Дому»;

.4      удаление по «Квартире»;

         удаление по «Номеру телефона»;

         удаление по «Наименованию услуги»;

         удаление по «Сумме оплаты»;

         удаление по «Сроку выполнения».

Пункт «Удаление всех записей по заданной услуге» вызывает процедуру udalenie_uslug. Вызванная процедура предлагает пользователю ввести наименование услуги для удаления всех записей (клиентов) с введённой услугой.

Пункт «Замена номера телефона для заданной услуги» производит вызов процедуры zamena. Указанная процедура производит запрос у пользователя с начало наименование услуги, а затем номер телефона для его замены.

Пункт «Вывод сведений об оплате по заданной услуге» осуществляет вызов процедуры zadan_uslug. Вызванная процедура спрашивает у пользователя наименование услуги, а затем происходит вывод сведений об оплате введённой процедуры в виде таблицы содержащей поля: Фамилия клиента, наименование услуги, сумма оплаты.

Пункт «Поиск» выполняет поиск данных вызывая процедуру poisk. Данное действие происходит в отдельном диалоговом окне и предлагает пользователю произвести выбор атрибута (категории) поиска. Данное окно содержит следующие поля:

         поиск по «ФИО»;

.1      поиск по «Фамилии»;

.2      поиск по «Имени»;

.3      поиск по «Отчеству»;

         поиск по «Адресу»;

.1      поиск по «Городу»;

.2      поиск по «Улице»;

.3      поиск по «Дому»;

.4      поиск по «Квартире»;

         поиск по «Номеру телефона»;

         поиск по «Наименованию услуги»;

         поиск по «Сумме оплаты»;

         поиск по «Сроку выполнения».

Пункт «Сортировка» выполняет действие сортировки (методом «пузырька») данных путем вызова из программы процедуры sortirovka. Пользователь в любое время может отсортировать свою базу данных (клиентов) по любому из критериев:

         сортировка по «ФИО»;

.1      сортировка по «Фамилии»;

.2      сортировка по «Имени»;

.3      сортировка по «Отчеству»;

         сортировка по «Адресу»;

.1      сортировка по «Городу»;

.2      сортировка по «Улице»;

.3      сортировка по «Дому»;

.4      сортировка по «Квартире»;

         сортировка по «Номеру телефона»;

         сортировка по «Наименованию услуги»;

         сортировка по «Сумме оплаты»;

         сортировка по «Сроку выполнения».

В программе так же присутствуют четыре неосновных процедур, которые используются только при запуске программы. Это процедуры:

-       Создание нового файла (sozdanie);

-       Выбор уже созданного файла (otkritie);

-       Вывод найденных клиентов (из процедуры poisk) в виде таблицы (new_vivod_poisk);

-       Сохранение всей базы данных (клиентов) в файле txt (“Tablica.txt”) для удобства работы (sohranenie_txt);

Суть работы данных процедур - это предоставление пользователю права выбора работать с новыми данными и заполнить ими новый файл и таблицу или использовать данные из ранее сохраненного файла, для этого пользователю необходимо знать его название. Также для удобства отображения найденных клиентов (из процедуры poisk) в виде таблицы и сохранения всей базы в файл с типом txt для дальнейшей работы за пределами программы, либо для дальнейшей распечатки и редактирования вне поисковой системы «Услуги Фотоцентра».

 

.3 Описание исходных данных


К основным исходным данным формирующим таблицу, находящуюся в базе данных, относятся:

-       ФИО (фамилия, имя, отчество);

-       адрес (город, улица, дом, квартира);

-       номер телефона;

-       наименование услуги;

-       сумма оплаты;

-       срок выполнения.

Так для полей: дом (dom), квартира (kvartira), номер телефона (nomer), сумма оплаты (summa), срок выполнения (srok), общее количество клиентов (n) был выбран тип данных Integer. Данный тип используется для работы в программе с целочисленными значениями.

Для полей: фамилия (familiy), имя (imy), отчество (otchestvo), город (gorod), улица (ulica), наименование услуги (usluga) был выбран тип данных String. Переменные данных поля заполняются символами русского или английского алфавита.

 

3. Практическая часть выполнения задачи на языке программирования Паскаль

 

.1 Описание интерфейса


Интерфейс - это совокупность средств и методов, при помощи которых пользователь взаимодействует с программой, компьютером, сайтами и т.д [1].

Меню состоит из следующих пунктов: добавление клиента, просмотр таблицы, удаление записи по заданному атрибуту, удаление всех записей по заданной услуге, замена номера телефона для заданной услуги, вывод сведений об оплате по заданной услуге, поиск, сортировка, выход. Название пунктов меню совпадают с названием процедур - это используется для удобства не только пользователя, но и программиста. Если возникнут проблемы с работой программы, то найти нужную процедуру не составит большого труда. А пользователь по названию пунктов сможет легко понять, какое действие выполняет та или иная процедура. Выполнение и исходный интерфейс программы можно просмотреть на рисунке 3.1.

Рисунок 3.1 - Основное меню программы

Таблица состоит из шести колонок, каждой из которых присвоено имя (ФИО, адрес, номер телефона, наименование услуги, сумма оплаты, срок выполнения). Каждому полю в таблице соответствует определенная процедура, которая осуществляет выполнение каждого выбранного, пользователем, действия. Таблица заполняется автоматически, после ввода пользователем в файл значений. Так же таблицу можно просматривать после выполнения каких-либо операций над ее содержимым, все изменения будут видны и сохраняться в файл.

Подменю представляет собой окно, в котором находится два пункта выбора действия: выбрать уже созданный файл или создать новый файл. Выбрав первый пункт, пользователь должен ввести имя файла и открыть его, а при выборе второго пункта пользователю необходимо будет создать новый файл, указать его имя и внести данные в базу.

3.2 Описание работы каждого блока


Перечисление и описание каждой подпрограммы (процедуры).

-       Процедура «otkritie» - процедура поиска созданного ранее файла. Если файл был создан пользователем уже ранее, то при помощи данной процедуры можно найти файл по его имени и использовать для работы.

-       Процедура «sozdanie» - процедура создания нового файла. Создает и сохраняет файл, в который позже можно заносить данные и использовать их в ходе работы с информационно-поисковой системе.

-       Процедура «new_vvod» - процедура ввода производит заполнение таблицы (базы) при ее создании. Пользователь вводит данные в предложенные поля будущей таблицы.

-       Процедура «new_vivod» - процедура выводит на экран данные введенные пользователем, если данные отсутствуют в файле, то на экран выводится только рамка таблицы, а данные в ней будут отсутствовать. А также в данной процедуре происходит склонение слова “День” под цифру введённую пользователем в процедуре ввода данных (new_vvod), в атрибуте «Срок Выполнения Услуги».

-       Процедура «udalenie_uslug» - процедура производит удаление записи из файла (базы, таблицы) по заданной пользователем услуге. С начало идёт чтение файла открытого в данный сеанс, затем пользователь производить ввод “ Наименования Услуги”, потом идёт поочерёдное сравнение каждой “Услуги” (записи) из файла с введённой пользователем “Услугой” если совпадения не происходит, то осуществляется присваивание этой записи (в которой “Наименование услуги” не совпали) “другому” массиву, и так происходит проверка с каждой “Услугой” (записью), а затем происходит запись этого “другого” массива в файл который открыт в данный момент (в данный сеанс).

-       Процедура «zamena» - процедура производит замену номера телефона для заданной пользователем услуги. С начало идёт чтение файла с которым пользователь работает в данный момент, затем пользователю предлагается ввести “Наименование услуги” и “Номер телефона” (для его замены), потом осуществляется поиск (сравнение) записи с введённой пользователем “Услугой”, если такая запись найдена то ей сразу происходит присваивание в атрибут “Номер телефона” введённым пользователем в начале процедуры. Потом происходит запись всех изменений произведённых в данной процедуре, в файл с которым пользователем работает в данный момент.

-       Процедура «zadan_uslug» - процедура вывода сведений об оплате по заданной услуге пользователем. Как и во всех процедурах для начало идёт чтение файла с которым пользователь работает в данный момент. Потом у пользователя происходит запрос “Наименования услуги”, и только потом осуществляется сравнение (поиск) записи с введённой пользователем “Услугой”. Если данная услуга найдена, то происходит ввод сведений об оплате по заданной “Услуге” в виде таблицы содержащей атрибуты: фамилия клиента, наименование услуги, сумма оплаты. В данной процедуре никаких записей в файл не осуществляется, а только чтение и вывод на экран данных запрошенных пользователем.

-       Процедура «poisk» - Данная процедура производит поиск, по нужным атрибутам пользователю. Программа проходит по полю указанному пользователем и если данные в таблице совпадает с введенными пользователем, то данная строка выводится на экран в таблицу и происходит аналогичный поиск дальше по всем полям, пока будет не достигнут конец файла.

-       Процедура «sortirovka» - процедура производит сортировку данных. Сортировка производится по всем полям (атрибутам) соответственно с сортировкой производится сортировка и других полей. Данные сортируются по методу пузырька, суть метода состоит в том, что при каждом просмотре записи, рассматривается элемент сравнения со всеми нижележащими элементами и при необходимости меняет их местами, соответственно происходит сортировка других полей по такому же принципу

 

4. Результаты работы программы


При запуске программы появляется окно, в котором необходимо выбрать, как начинать работу с программой. В окне предложен выбор «Выбрать уже созданный файл» или же «Создать новый файл», как показано на рисунке 4.1.

Рисунок 4.1 - Подменю программы

Если пользователь выбирает «1. Выбрать уже созданный файл», то появится еще одно окно, в котором пользователю необходимо будет ввести имя файла, с которым он хочет работать. Подтвердить имя, нажав Enter. После этого можно работать с данными, которые находились в указанном файле, действия указаны на рисунке 4.2.

Рисунок 4.2 - Выбор уже созданного файла

Пользователь так же может создать новый файл, выбрав соответствующее действие «2. Создать новый файл» и указать имя, под которым файл будет сохранен файл. В основном меню необходимо выбрать действие «Добавление клиента» при добавлении пользователю необходимо будет заполнить соответствующие поля в таблице такие как: ФИО (фамилия, имя, отчество), адрес (город, улица, дом, квартира), номер телефона, наименование услуги, сумма оплаты, срок выполнения. Пример заполнения нового файла продемонстрирован на рисунке 4.3.


Рисунок 4.3 - Пример заполнения основной таблицы

Для работы с данными необходимо выбрать в основном меню одну из команд: просмотр таблицы, удаление записи по заданному атрибуту, удаление всех записей по заданной услуге, замена номера телефона для заданной услуги, вывод сведений об оплате по заданной услуге, поиск, сортировка и программа выполнит выбранное пользователем действие. К примеру «Сортировка» - сортирует данные в таблице по любому из полей. Сортировка по атрибуту «Фамилия» показано на следующем рисунке 4.4.

Рисунок 4.4 - Заполненная основная таблица

При использовании процедуры «Поиск» на экране появляется таблица с найденными клиентами, с введёнными до этого критериями поиска. Просмотреть работу данной процедуры можно на рисунке 4.5.

Рисунок 4.5 - Выполнение процедуры «Поиск» по атрибуту “Город” с критерием “Гомель”

Процедуры удаление записи по заданному атрибуту, удаление всех записей по заданной услуге, замена номера телефона для заданной услуги, вывод сведений об оплате по заданной услуге выполняют соответствующие им действия (удаление записей, замену и вывод сведений в виде таблицы). Принцип работы данных процедур можно увидеть на следующих рисунках: 4.6, 4.7, 4.8, 4.9.

Рисунок 4.6 - Выполнение процедуры «Удаление записи по заданному атрибуту» с атрибутом “Фамилия”

Рисунок 4.7 - Выполнение процедуры «Удаление всех записей по заданной услуге» с услугой “Реставрация фото”

Рисунок 4.8 - Выполнение процедуры «Замена номера телефона для заданной услуги» с услугой “Проявка плёнки”

Рисунок 4.9 - Выполнение процедуры «Вывод сведений об оплате по заданной услуге» с услугой “Фото на паспорт”

 

ЗАКЛЮЧЕНИЕ


Созданная курсовая работа на тему: информационно - поисковая система «Услуги фотоцентра» - отличное решение для представителей таких организаций и тех, кто в своей профессиональной среде сталкивается с большим количеством клиентов. Программа была разработана на языке программирования Паскаль, с организацией удобного пользовательского интерфейса для работы с данной программой.

Результатом выполнения курсового проекта является база данных в виде таблицы, включающая в себя следующие поля: ФИО, адрес, номер телефона, наименование услуги, сумма оплаты, срок выполнения. В ходе работы были изучены теоретические сведения и закреплены знания, полученные ранее при изучении дисциплины «Основы алгоритмизации и программирования». А так же были практически применены полученные знания при выполнении данной работы. В процессе работы были разработаны следующие процедуры: - ввод данных в новый файл или использование файла, уже заполненного пользователем ранее, добавление клиента, просмотр созданной таблицы, удаление записи по заданному атрибуту, удаление всех записей по заданной услуге, замена номера телефона для заданной услуги, вывод сведений об оплате по заданной услуге, поиск, сортировка.

Данная информационно-поисковая система может широко использоваться в фотомагазинах различных масштабов.

Удобный пользователю интерфейс базы данных, а так же ее простота обеспечит легкое и быстрое получение нужной информации об интересующих пользователя фото-услугах.

При выполнении поиска запрошенной информации, разработанная база данных выдаст всю найденную по запросу пользователя информацию без потерь и без показа лишней информации, что позволит пользователю сократить затраты времени на поиск нужной информации.

Список использованных источников


1. История создания языка Turbo Pascal [Электронный ресурс]

. Иванов, Б.И. Дискретная математика в современных компьютерных технологиях / Б.И. Иванов. - Технический университет, 2003. - 288 с.

Язык программирования Паскаль [Электронный ресурс]

Абрамов В.Г. Введение в язык Паскаль / В.Г. Абрамов. - Учебное пособие, 1988. - 320 с.

Столл Р.Р. Множества. Логика. Аксиоматические теории. - М.: Просвещение, 1968. - 232 с.

программа интерфейс процедура меню

ПРИЛОЖЕНИЕ А

 

Листинг программы


Program kursovay_zaharenko;

uses crt;foto=record,imy,otchestvo:string; //ФИО,ulica:string; //Адрес:string; // Наименование услуги,summa,srok,dom,kvartira:integer; //Номер телефона, Сумма оплаты, Срок выполнения, Номер Дома, Номер Квартиры

end;klient,klient2:array[1..100] of foto;,n,i,j,a,n1:integer; fayl:file of foto; nazvanie:string; d:foto; g:text; otkritie; //Открытие уже созданного файла

begin;('Введите имя файла ');

readln (nazvanie);(fayl,nazvanie); reset (fayl); end;sozdanie; //Создание нового файла; ('Введите имя для нового файла: ');

readln (nazvanie);(fayl,nazvanie); rewrite (fayl);;sohranenie_txt;m,r:integer;

writeln;

writeln ('Пожалуйста подождите, идёт запись изменений в файл ...');

assign (fayl,nazvanie); reset(fayl); //Запись Базы в Блокнот

assign(g,'Tablica.txt');rewrite(g);(14); writeln;(g,' ':20,'Таблица Клиентов "Услуг Фотоцентра" '); writeln; i:=0;(10);(g,'','--',#22,'-------------',#22,'---------------',#22,'---------',#22,'-----------------',#22,'--------',#22,'-------',#2); (g,#5,'№ ',#5,' ФИО ',#5,' Адрес ',#5,' Номер ',#5,' Услуга ',#5,' Сумма ',#5,' Срок ',#5);

while not eof(fayl) do with d do begin(g,#25,'--',#16,'-------------',#16,'---------------',#16,'---------',#16,'-----------------',#16,'--------',#16,'-------',#23);(1000);(fayl,d);inc(i);textcolor (15); srok>100 then //Начинаем склонять слова "День" под цифру "Срок"

m:=srok mod 100;(m>= 11) and (m<= 14) then(g,'',' ','',familiy:13,'','г.':4,gorod:11,'',nomer:9,'',usluga:17,'',summa:8,'',srok:2,' дней','');:=srok mod 10;r of

, 5 .. 9:Writeln (g,'',' ','',familiy:13,'','г.':4,gorod:11,'',nomer:9,'',usluga:17,'',summa:8,'',srok:2,' дней','');

:Writeln (g,'',' ','',familiy:13,'','г.':4,gorod:11,'',nomer:9,'',usluga:17,'',summa:8,'',srok:2,' день','');

..4:Writeln (g,'',' ','',familiy:13,'','г.':4,gorod:11,'',nomer:9,'',usluga:17,'',summa:8,'',srok:3,' дня','');end;(g,'',i:2,'',imy:13,'','ул.':4,ulica:11,'',' ':9,'',' ':17,'',' ':8,'',' ':7,'');(g,'',' ','',otchestvo:13,'','д.':5,dom:3,'кв.':4,kvartira:3,'',' ':9,'',' ':17,'',' ':8,'',' ':7,'');end;(g,#3,'--',#21,'-------------',#21,'---------------',#21,'---------',#21,'-----------------',#21,'--------',#21,'-------',#4);(g);end;new_vivod_poisk; //Вывод в таблицу найденных атрибутов

var k,m,r:integer;;Textcolor (14);(' ':20,'Таблица Найденных Клиентов "Услуг Фотоцентра" '); writeln;

Textcolor (10);('--------------',#22,'---------------',#22,'----------',#22,'-----------------',#22,'--------',#22,'--------',#2); (#5,' ФИО ',#5,' Адрес ',#5,' Номер ',#5,' Услуга ',#5,' Сумма ',#5,' Срок ',#5);

For i:=1 to n1 do with klient2[i] do begin(#25,'--------------',#16,'---------------',#16,'----------',#16,'-----------------',#16,'--------',#16,'--------',#23);n1>5 then delay(1000) else delay(0); (15);

if srok>100 then //Начинаем склонять слова "День" под цифру "Срок"

m:=srok mod 100;(m>= 11) and (m<= 14) then('',familiy:14,'',gorod:15,'',nomer:10,'',usluga:17,'',summa:8,'',srok:3,' дней','');:=srok mod 10;r of

, 5 .. 9:Writeln ('',familiy:14,'',gorod:15,'',nomer:10,'',usluga:17,'',summa:8,'',srok:3,' дней','');

:Writeln ('',familiy:14,'',gorod:15,'',nomer:10,'',usluga:17,'',summa:8,'',srok:3,' день','');

..4:Writeln ('',familiy:14,'',gorod:15,'',nomer:10,'',usluga:17,'',summa:8,'',srok:4,' дня','');end;('',imy:14,'',ulica:15,'',' ':10,'',' ':17,'',' ':8,'',' ':8,'');

Writeln ('',otchestvo:14,'',dom:8,kvartira:7,'',' ':10,'',' ':17,'',' ':8,'',' ':8,'');

end;(#3,'--------------',#21,'---------------',#21,'----------',#21,'-----------------',#21,'--------',#21,'--------',#4); ('Что-бы вернуться в "Меню" нажмите <ENTER> ');

readln;end;poisk; //Процедура Поиска

var k,b:integer; q:string;;Textcolor (11);(' ':25,'Выберите поле Поиска'); writeln;

Textcolor (15);(' ':20,'1. Поиск по ФИО');

writeln (' ':20,'2. Поиск по Адресу');

writeln (' ':20,'3. Поиск по Номеру телефона');

writeln (' ':20,'5. Поиск по Сумме оплаты');

writeln (' ':20,'6. Поиск по Сроку выполнения');

Write(' ':20,'Выберите действие: ');readln (k);

assign (fayl,nazvanie);reset(fayl);i:=1; n:=0;not eof(fayl) do begin(fayl,klient[i]);inc(i); inc(n); end;k of

: begin //Поиск по ФИО;Textcolor (11);(' ':25,'Выберите тип поиска по ФИО'); writeln;(15);(' ':20,'1. Поиск по Фамилии');

writeln (' ':20,'2. Поиск по Имени');

writeln (' ':20,'3. Поиск по Отчеству');

Write(' ':20,'Выберите действие: ');readln (k);

if k=1 then begin //Поиск по Фамилии

clrscr;

Write ('Введите Фамилию для поиска Клиента: '); Readln (q);n1:=0;

for i:=1 to n doklient[i].familiy=q then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk end;k=2 then begin //Поиск по Имени; ('Введите Имя для поиска Клиента: '); Readln (q);n1:=0;

for i:=1 to n doklient[i].imy=q then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk end; k=3 then begin //Поиск по Отчеству

clrscr;

Write ('Введите Имя для поиска Клиента: '); Readln (q);n1:=0;

for i:=1 to n doklient[i].otchestvo=q then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk end;end;

: begin //Поиск по Адресу;Textcolor (11); (' ':25,'Выберите тип поиска по Адресу'); writeln;

Textcolor (15);(' ':20,'1. Поиск по Городу');

writeln (' ':20,'2. Поиск по Улице');

writeln (' ':20,'3. Поиск по Дому');

writeln (' ':20,'3. Поиск по Квартире');

Write(' ':20,'Выберите действие: ');readln (k);

if k=1 then begin //Поиск по Городу

clrscr;

Write ('Введите Город для Поиска(в формате:г.<Название Города>): '); Readln (q);n1:=0;

for i:=1 to n doklient[i].gorod=q then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk end;k=2 then begin //Поиск по Улице; ('Введите Улицу для Поиска: '); Readln (q);n1:=0;

for i:=1 to n doklient[i].ulica=q then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk end;k=3 then begin //Поиск по Дому; ('Введите Дом для Поиска: '); Readln (q);n1:=0;

for i:=1 to n doklient[i].dom=b then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk end; k=4 then begin //Поиск по Квартире

clrscr;

Write ('Введите Квартиру для Поиска: '); Readln (q);n1:=0;

for i:=1 to n doklient[i].kvartira=b then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk end;end;

3: begin //Поиск по номеру телефона

clrscr;

Write ('Введите Номер телефона Клиента: '); Readln (b);n1:=0;

for i:=1 to n doklient[i].nomer=b then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk;

: begin //поиск по Наименнованию услуги

clrscr;

Write ('Введите Наименование Услуги для поиска Клиента: '); Readln (q);n1:=0;

for i:=1 to n doklient[i].usluga=q then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk;

: begin //поиск по Сумме оплаты

clrscr;

Write ('Введите Сумму Оплаты для поиска Клиента: '); Readln (b);n1:=0;

for i:=1 to n doklient[i].summa=b then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk;

: begin //поиск по Сроку выполенения

clrscr;

Write ('Введите Наименование Услуги для поиска клиента: '); Readln (b);n1:=0;

for i:=1 to n doklient[i].srok=b then begin

n1:=n1+1;[n1]:=klient[i]; end;

if n1<>0 then_vivod_poisk;end; end;

procedure zadan_uslug; //Вывод сведений об оплате по заданной услуге

Textcolor (15);

write ('Введите Наименование Услуги: '); readln (q);

reset(fayl);i:=1; n:=0;not eof(fayl) do begin(fayl,klient[i]);inc(i); inc(n); end;;(#25,'-----------------',#22,'-----------------------',#22,'---------------',#2); (#5,' Фамилия Клиента ',#5,' Наименование Услуги ',#5,' Сумма Оплаты ',#5);

For i:=1 to n do with klient[i] do If klient[i].usluga=q then begin(#25,'-----------------',#16,'----------------------',#16,'--------------',#23);('',familiy:19,'',usluga:25,'',summa:16,'') end;(#3,'-----------------',#21,'-----------------------',#21,'----------------',#4);;end;

procedure zamena; //Замена Номера телефона по Заданной Услуге

var q:string; e:integer;

begin;(fayl); i:=1;not eof(fayl) do begin(fayl,klient[i]);i:=i+1; n:=i-1; end;Textcolor (11); (' ':15,'Замена Номера Телефона для заданной Услуги'); writeln;

Textcolor (15);

write ('Введите Наименование Услуги: '); readln (q);

write ('Введите Номер телефон для его Замены: '); readln (e);

for i:=1 to n doklient[i].usluga=q then begin

klient[i].nomer:=e; end;

rewrite(fayl);i:=1 to n do

write(fayl,klient[i]);end;

procedure udalenie_uslug; //Удаление Записи по Заданной Услуге

var q:string;;(fayl,nazvanie);reset(fayl);i:=1; n:=0;not eof(fayl) do begin(fayl,klient[i]);inc(i); inc(n); end;Textcolor (11); (' ':15,'Удаление Записи по Заданной Услуге'); writeln;

Textcolor (15);

write ('Введите Наименование Услуги: '); readln (q);n1:=0;

for i:=1 to n doklient[i].usluga<>q then begin

n1:=n1+1;[n1]:=klient[i]; end;

rewrite(fayl);i:=1 to n1 do

write(fayl,klient2[i]);end;

procedure udalenie_zapisi; //Удаление Записи по Заданному Атрибуту

var k,b:integer; q:string;;Textcolor (11);(' ':25,'Выберите Атрибут для Удаления Записи'); writeln;

Textcolor (15);(' ':20,'1. Удаление по ФИО');

writeln (' ':20,'2. Удаление по Адресу');

writeln (' ':20,'3. Удаление по Номеру телефона');

writeln (' ':20,'4. Удаление по Наименованию услуги');

writeln (' ':20,'5. Удаление по Сумме оплаты');

writeln (' ':20,'6. Удаление по Сроку выполнения');

Write(' ':20,'Выберите действие: ');readln (k);

assign (fayl,nazvanie);reset(fayl);i:=1; n:=0;not eof(fayl) do begin(fayl,klient[i]);inc(i); inc(n); end;k of

1:begin //Удаление по ФИО

clrscr;Textcolor (11);

writeln (' ':15,'Удаление Записи по Заданному ФИО'); writeln;

writeln (' ':15,'Выберите тип Удаления по ФИО');

Textcolor (15);(' ':20,'1. Удаление по Фамилии');

writeln (' ':20,'2. Удаление по Имени');

writeln (' ':20,'3. Удаление по Отчеству');

Write(' ':20,'Выберите действие: ');readln (k);

if k=1 then begin //Удаление по Фамилии

clrscr;

write ('Введите Фамилию Клиента: '); readln (q);n1:=0;

for i:=1 to n doklient[i].familiy<>q then begin

n1:=n1+1;[n1]:=klient[i];end;end;

if k=2 then begin //Удаление по Имени

clrscr;

write ('Введите Имя Клиента: '); readln (q);n1:=0;

for i:=1 to n doklient[i].imy<>q then begin

n1:=n1+1;[n1]:=klient[i];end;end;

if k=3 then begin //Удаление по Отчеству

clrscr;

write ('Введите Отчество Клиента: '); readln (q);n1:=0;

for i:=1 to n doklient[i].otchestvo<>q then begin

n1:=n1+1;[n1]:=klient[i];end;end;end;

2:begin //Удаление по Адресу

clrscr;Textcolor (11);

writeln (' ':15,'Удаление Записи по Заданному Адресу'); writeln;

writeln (' ':15,'Выберите тип Удаления по Адресу');

Textcolor (15);(' ':20,'1. Удаление по Городу');

writeln (' ':20,'2. Удаление по Улице');

writeln (' ':20,'3. Удаление по Дому');

writeln (' ':20,'4. Удаление по Квартире');

Write(' ':20,'Выберите действие: ');readln (k);

if k=1 then begin //Удаление по Городу

clrscr;

write ('Введите Город Клиента: '); readln (q);n1:=0;

for i:=1 to n doklient[i].gorod<>q then begin

n1:=n1+1;[n1]:=klient[i];end;end;

if k=2 then begin //Удаление по Улице

write ('Введите Улицу Клиента: '); readln (q);n1:=0;

for i:=1 to n doklient[i].ulica<>q then begin

n1:=n1+1;[n1]:=klient[i];end;end;

if k=3 then begin //Удаление по Дому

clrscr;

write ('Введите Дом Клиента: '); readln (b);n1:=0;

for i:=1 to n doklient[i].dom<>b then begin

n1:=n1+1;[n1]:=klient[i];end;end;

if k=4 then begin //Удаление по Квартире

clrscr;

write ('Введите Квартиру Клиента: '); readln (q);n1:=0;

for i:=1 to n doklient[i].gorod<>q then begin

n1:=n1+1;[n1]:=klient[i];end;end;end;

3:begin //Удаление по Номеру Телефона

clrscr;Textcolor (11);

writeln (' ':15,'Удаление Записи по Заданному Номеру Телефона'); writeln;Textcolor (15);

write ('Введите Номер Телефона Клиента: '); readln (b);n1:=0;

for i:=1 to n doklient[i].nomer<>b then begin

n1:=n1+1;[n1]:=klient[i];end;end;

4:begin //Удаление по Наименнованию Услуги

udalenie_uslug;end;

:begin //Удаление по Сумме Оплаты

clrscr;Textcolor (11);

writeln (' ':15,'Удаление Записи по Заданной Сумме Оплаты'); writeln;Textcolor (15);

write ('Введите Сумму Оплаты Клиента: '); readln (b);n1:=0;

for i:=1 to n doklient[i].summa<>b then begin

n1:=n1+1;[n1]:=klient[i];end;end;

6:begin //Удаление по Сроку Выполнения

clrscr;Textcolor (11);

writeln (' ':15,'Удаление Записи по Заданному Сроку Выполнения'); writeln;

Textcolor (15);

write ('Введите Срок Выполнения Услуги: '); readln (b);n1:=0;

for i:=1 to n doklient[i].srok<>b then begin

n1:=n1+1;[n1]:=klient[i];end;end;end;

rewrite(fayl);i:=1 to n1 do

write(fayl,klient2[i]);end;sortirovka; //Сортировкаi,j,k:integer; q:foto;;Textcolor (11);(' ':25,'Выберите тип Сортировки'); writeln;Textcolor (15);

writeln (' ':20,'1. Сортировка по ФИО');

writeln (' ':20,'2. Сортировка по Адресу');

writeln (' ':20,'3. Сортировка по Номеру телефона');

writeln (' ':20,'4. Сортировка по Наименованию услуги');

writeln (' ':20,'5. Сортировка по Сумме оплаты');

writeln (' ':20,'6. Сортировка по Сроку выполнения');

Write(' ':20,'Выберите действие: ');readln (k);

reset(fayl); i:=1;not eof(fayl) do begin(fayl,klient[i]);i:=i+1; n:=i-1; end;k of

1:begin //Сортировка по ФИО

clrscr;Textcolor (11);

writeln (' ':25,'Выберите поле Сортировки по ФИО'); writeln;Textcolor (15);

writeln (' ':20,'1. Сортировка по Фамилии');

writeln (' ':20,'2. Сортировка по Имени');

writeln (' ':20,'3. Сортировка по Отчеству');

Write(' ':20,'Выберите действие: ');readln (k);

if k=1 then begin //Сортировка по Фамилии

for i:=1 to n-1 do

for j:=i+1 to n do

if klient[i].familiy>klient[j].familiy then begin

q:=klient[i];

klient[i]:=klient[j];[j]:=q;end;

rewrite(fayl);i:=1 to n do(fayl,klient[i]); end;k=2 then begin //Сортировка по Имениi:=1 to n-1 doj:=i+1 to n doklient[i].imy>klient[j].imy then begin

q:=klient[i];[i]:=klient[j];

klient[j]:=q;end;(fayl);i:=1 to n do(fayl,klient[i]); end;k=3 then begin //Сортировка по Отчествуi:=1 to n-1 doj:=i+1 to n doklient[i].otchestvo>klient[j].otchestvo then begin

q:=klient[i];[i]:=klient[j];[j]:=q;end;(fayl);i:=1 to n do(fayl,klient[i]); end;end;

:begin //Сортировка по Адресу;Textcolor (11);(' ':25,'Выберите поле Сортировки по ФИО'); writeln;Textcolor (15);

writeln (' ':20,'1. Сортировка по Городу');

writeln (' ':20,'2. Сортировка по Улице');

writeln (' ':20,'3. Сортировка по Дому');

writeln (' ':20,'4. Сортировка по Квартире');

Write(' ':20,'Выберите действие: ');readln (k);

if k=1 then begin //Сортировка по Городу

for i:=1 to n-1 doj:=i+1 to n doklient[i].gorod>klient[j].gorod then begin

d:=klient[i];[i]:=klient[j];

d:=klient[i];[i]:=klient[j];

klient[j]:=d;end;(fayl);i:=1 to n do(fayl,klient[i]); end;k=3 then begin //Сортировка по Дому

for i:=1 to n-1 doj:=i+1 to n doklient[i].dom>klient[j].dom then begin:=klient[i];[i]:=klient[j];[j]:=d;end;

rewrite(fayl);i:=1 to n do(fayl,klient[i]); end;k=4 then begin //Сортировка по Квартире

for i:=1 to n-1 doj:=i+1 to n doklient[i].kvartira>klient[j].kvartira then begin:=klient[i];[i]:=klient[j];[j]:=d;end;

rewrite(fayl);i:=1 to n do

write(fayl,klient[i]); end;end;

3:begin //Сортировка по Номеру телефона

for i:=1 to n-1 do

for j:=i+1 to n doklient[i].nomer>klient[j].nomer then begin:=klient[i];[i]:=klient[j];[j]:=q;end;(fayl);i:=1 to n do(fayl,klient[i]);end;

:begin //Сортировка по Наименованию услугиi:=1 to n-1 doj:=i+1 to n doklient[i].usluga>klient[j].usluga then begin:=klient[i];[i]:=klient[j];[j]:=q;end;

rewrite(fayl);i:=1 to n do

write(fayl,klient[i]);end;

5:begin //Сортировка по Сумме оплаты

for i:=1 to n-1 do

for j:=i+1 to n doklient[i].summa>klient[j].summa then begin:=klient[i];[i]:=klient[j];[j]:=q;end;(fayl);i:=1 to n do(fayl,klient[i]);end;

:begin //Сортировка по Сроку выполненияi:=1 to n-1 doj:=i+1 to n doklient[i].srok>klient[j].srok then begin:=klient[i];[i]:=klient[j];[j]:=q;end;

rewrite(fayl);i:=1 to n do

write(fayl,klient[i]);end;end;end;

procedure new_vvod; //Создание таблицы;

writeln ('Введите количество Клиентов');readln (n);

for i:=1 to n do with klient[i] do begin clrscr;('Введите Фамилию Клиента №',i,': '); readln (familiy);('Введите Имя Клиента №',i,': '); readln(imy);('Введите Отчество Клиента №',i,': '); readln (otchestvo); ('Введите Адрес Клиента №',i,': 1)Введите "Название Города": '); readln (gorod);

write (' ':15,'2)Введите "Название Улицы": '); readln (ulica);

write (' ':15,'3)Введите "Номер Дома"("Номер Дома"<999): '); readln (dom);

write (' ':15,'4)Введите "Номер Квартиры"("Номер Квартиры"<999): '); readln (kvartira);

write ('Введите Номер телефона (БЕЗ КОДА)Клиента №',i,': '); readln (nomer);

write ('Введите Наименование услуги для Клиента №',i,': '); readln (usluga);

write ('Введите Сумму оплаты Клиента №',i,': '); readln (summa);

write ('Введите Срок Выполнения Услуги для Клиента №',i,'(Количество дней): '); readln (srok);

write(fayl,klient[i]);end;end;

procedure new_vivod; //Вывод таблицыm,r:integer;; assign (fayl,nazvanie); reset(fayl);Textcolor (14); writeln;(' ':20,'Таблица Клиентов "Услуг Фотоцентра" '); writeln; i:=0;Textcolor (10);('','--',#22,'-------------',#22,'---------------',#22,'---------',#22,'-----------------',#22,'--------',#22,'-------',#2); (#5,'№ ',#5,' ФИО ',#5,' Адрес ',#5,' Номер ',#5,' Услуга ',#5,' Сумма ',#5,' Срок ',#5);

while not eof(fayl) do with d do begin(#25,'--',#16,'-------------',#16,'---------------',#16,'---------',#16,'-----------------',#16,'--------',#16,'-------',#23);(1000);read (fayl,d);inc(i);textcolor (15); srok>100 then //Начинаем склонять слова "День" под цифру "Срок"

m:=srok mod 100;(m>= 11) and (m<= 14) then('',' ','',familiy:13,'','г.':4,gorod:11,'',nomer:9,'',usluga:17,'',summa:8,'',srok:2,' дней','');:=srok mod 10;r of

, 5 .. 9:Writeln ('',' ','',familiy:13,'','г.':4,gorod:11,'',nomer:9,'',usluga:17,'',summa:8,'',srok:2,' дней','');

:Writeln ('',' ','',familiy:13,'','г.':4,gorod:11,'',nomer:9,'',usluga:17,'',summa:8,'',srok:2,' день','');

..4:Writeln ('',' ','',familiy:13,'','г.':4,gorod:11,'',nomer:9,'',usluga:17,'',summa:8,'',srok:3,' дня','');end;('',i:2,'',imy:13,'','ул.':4,ulica:11,'',' ':9,'',' ':17,'',' ':8,'',' ':7,'');('',' ','',otchestvo:13,'','д.':5,dom:3,'кв.':4,kvartira:3,'',' ':9,'',' ':17,'',' ':8,'',' ':7,'');end;(#3,'--',#21,'-------------',#21,'---------------',#21,'---------',#21,'-----------------',#21,'--------',#21,'-------',#4); ('Что-бы вернуться в "Меню" и Записать Таблицу в файл нажмите <ENTER> ');

readln;end;

begin// Тело основной программы

Textbackground (1);Textcolor (15);

writeln (' ':25,'Создание базы Клиентов'); //Меню программы (1 Уровень)

writeln (' ':20,'1. Выбрать уже созданный файл: ');

writeln (' ':20,'2. Создать новый файл');

writeln (' ':20,'3. Выход');(' ':20,'Выберите действие: ');readln (a);

case a of

:otkritie; 2:sozdanie;3:exit;end;true do//Меню программы (2 Уровень);(1);Textcolor (14);(' ':15,'Информационно-поисковая система "Услуги фотоцентра"');

Textcolor (11);('Меню':40);(15);(' ':20,'1. Добавление клиента');

Writeln(' ':20,'2. Просмотр таблицы');

writeln(' ':20,'3. Удаление записи по заданному атрибуту');

writeln(' ':20,'4. Удаление всех записей по заданной услуге');

writeln(' ':20,'5. Замена номера телефона для заданной услуги');

writeln(' ':20,'6. Вывод сведений об оплате по заданной услуге');

Writeln(' ':20,'7. Поиск');(' ':20,'8. Сортировка');

Writeln(' ':20,'9. Выход');(' ':20,'Выберите действие: '); Readln(v);

case v of

:begin new_vvod;sohranenie_txt;end; 2:new_vivod;3:begin udalenie_zapisi;sohranenie_txt;end;4:begin udalenie_uslug;sohranenie_txt;end;

:begin zamena;sohranenie_txt;end;6:begin zadan_uslug;sohranenie_txt;end;7:poisk; 8:begin sortirovka;sohranenie_txt;end;9:exit;

end;end;end.

 

ПРИЛОЖЕНИЕ Б

 

Блок-схема

 

Похожие работы на - Разработка информационно-поисковой системы 'Услуги фотоцентра' на языке программирования Паскаль

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!