Название
|
Входные данные
|
Выходные данные
|
Описание
|
Выводится из
|
IzFaila
|
int
i
|
пусто
|
выводит данные
на экран
|
main
|
stoimost
|
int
cena_max int imax
|
пусто
|
Максимальное
значение стоимости билета
|
main
|
stoimosti
|
int
cena_min int imin
|
пусто
|
Минимальное
значение стоимости билета
|
main
|
kin_max
|
int
mesta_max int imax
|
пусто
|
Максимальное
количество мест в кинотеатре
|
main
|
kin_min
|
пусто
|
Минимальное
количество мест в кинотеатре
|
main
|
poisk
|
int
i int z char name
|
пусто
|
Поиск
|
main
|
sort
|
int
i int l int pr
|
пусто
|
Сортировка по
названию кинотеатра
|
main
|
sort_1
|
int
i int l int pr
|
пусто
|
Сортировка по
названию фильма
|
main
|
2.2.2
Основной алгоритм функционирования программы
Алгоритм функции main ()
Возвращает пусто;
Вызывает функции: IzFaila (), stoimost (), stoimosti (), kin_max (), kin_min
(), poisk (), sort (), sort_1 ().
Переменные:i,n;a;
Рис. 2.3 Основной алгоритм функционирования справочной
системы
3. Рабочее проектирование
3.1 Структура
данных программы
Доминирующей структурой программы является структура,
содержащая следующие элементы:
name: строка на 20 символов. Наименование кинотеатра
film: строка на 18 символов. Название фильма: целое.
Стоимость билета: строка на 20 символов. Адрес кинотеатра: целое. Количество
мест в кинотеатре
Описание структуры на языке Си:
Основная структура данных struct
struct filmy
{name [N];film [N];cena;adres [N];mesta;
};n;filmy afisha [M];
3.2
Обоснование оптимальности алгоритма
Все структуры данных, используемые в программе, были выбраны
с учетом всех их преимуществ и качеств. Благодаря чему алгоритмы приобрели простоту
работы и гибкость. Немалым преимуществом у выбранных структур данных является
то, что пользователь может просмотреть любую строку структуры. Структуры,
выбранные для вывода текстовой информации, отличаются простотой и
эффективностью, позволяют корректно выводить необходимые значения и фрагменты
текста.
3.4
Обоснование оптимальности алгоритма
Алгоритм программы удобен своей гибкостью и простотой. В
процессе работы программы не наблюдаются графические ошибки зависания или
зацикливаний. Любая функция, вызванная из main (), завершает свою
работу и передает управление обратно.
Алгоритм отвечает всем требованиям современного
профессионального программирования. А именно: точностью, формальностью и
полнотой. В процессе выполнения программа не изменяет свой код, то есть
является рентабельной. Не используются устаревшие конструкции типа меток и
переходов на метки, что подтверждает оптимальность данного алгоритма.
Выводы
Данный программный продукт довольно-таки оптимален.
Пользователь без затруднения может просмотреть уже имеющиеся данные, а также
добавить свои данные в структуру. Это такой программный продукт, который может
быть широко использован как в общественных целях, так и в индивидуальном
порядке. Интерфейс программы выполнен в удобной пользователю форме. Однако эти
факторы и не исключают возможности усовершенствования данного программного
продукта, возможно добавление новых функций и переменных.
Перечень
ссылок
1.
Язык программирования Си / М.И. Болски. - М.: Радио и связь, 1988. - 96с.
.
Методические указания и задания к выполнению курсовой работы по дисциплине
"Основы программирования и алгоритмические языки"/Н.М. Дацун, М.О.
Голубенко, О.А. Горбунова. - Донецк, ДонДТУ, 2000. - 60с.
.
Язык Турбо Си/ Уинер Р. - М.: Мир, 1991. - 384 с.
.
Язык программирования Си/ Керниган Б., Ритчи Д. - М.: Финансы и статистика,
1990. - 230с.
Приложения
Приложение А
Руководство пользователя
Назначение программы
Программа предназначена для визуализации информации по теме
"Афиша фильмов".
Условия выполнения программы
Минимальные аппаратные требования приложения определены
минимальными аппаратными требованиями операционной системы, под которой оно
функционирует, т.е. MS DOS или Windows.
Выполнение программы
При запуске программы появляется меню, позволяющее
пользователю выбрать дальнейшее действие (рис. 1)
Рис. 1 Меню
Для начала введите номер выбранного вами пункта, а затем для
подтверждения своего выбора - Enter.
В данной программе существует восемь пунктов меню: пункт
ввода из файла, пункт поиска минимальных значений, пункт нахождения
максимальных значений, пункт поиска записей в таблице, пункт сортировок по
названию кинотеатра и фильма и пункт выхода из программы.
. Работа с пунктом ввод из файла
После того как вы выбрали данный пункт меню, на экране
появится таблица (рис. 2).
Рис.2 Ввод из файла
. Работа с пунктом поиска максимального значения по стоимости
билета.
После того как вы выбрали данный пункт меню, на экране
появится максимальная стоимость (рис. 3).
Рис. 3 поиск максимального значения
. Работа с пунктом нахождения минимального значения.
После того как вы выбрали данный пункт меню, на экране
появится минимальная стоимость билета (рис.4).
Рис. 4 поиск минимального значения
. Работа с пунктом поиска максимального количества мест.
После того как вы выбрали данный пункт меню, на экране
появится максимальное количество мест (рис.5).
Рис. 5 поиск максимального количества мест
. Работа с пунктом нахождения минимального количества.
Рис. 6 поиск минимального количества мест
. Поиск по названию кинотеатра
После того как вы выбрали данный пункт меню нужно выбрать
название кинотеатра, содержащееся в данной таблице (рис. 7). Затем нажать
цифру, соответствующую выбранному кинотеатру и enter. (рис. 7.1)
Рис. 7 выбор кинотеатра, по которому будет проводиться поиск
Рис. 7.1 поиск по названию кинотеатра
. Сортировка по наименованию кинотеатра
После того как вы выбрали данный пункт меню, вы увидите
отсортированную таблицу по названию кинотеатра (рис.8).
Рис. 8 сортировка по названию кинотеатра
. Сортировка по названию кинотеатра
После того как вы выбрали данный пункт меню вы увидите
отсортированную таблицу по названию фильма. (рис. 9)
Рис. 9 сортировка по названию фильма
Приложение Б
Описание программы
. Общие сведения
.1 Наименование программы
Выполняемый код находится в файле KSYU_KUR2. exe.
.2 ПО, необходимое для работы
Необходима ОС MS DOS или Windows.
.3 Язык программирования
Программа написана на языке Си и откомпилирована компилятором
Dev C++.
. Функциональное назначение
Программа создана для визуализации и корректировки таблицы
“Афиша фильмов”. То есть имеет прикладной характер.
. Описание логической структуры
.1 Алгоритм
См. п.2.2.3 "Основной алгоритм функционирования
программы".
.2 Методы
См. п.2.1 "Метод решения".
.3 Структура
См. Приложение Д "Текст программы".
. Используемые технические средства
ЭВМ на базе процессора Intel Pentium 4.
. Вызов и загрузка
См. Приложение В "Руководство программиста".
. Входные данные
Приложение В
Руководство программиста
Назначение и условия функционирования программы
Программа предназначена для визуализации информации по теме
"Афиша фильмов".
Основным условием функционирования программы определяется ОС MS DOS (или Windows).
Обращение к программе
Запуск приложения осуществляется таким образом:
Запустить Dev C++
Открыть файл BIN
Запустить программу, предварительно нажав F9.
Приложение Д
Текст программы
#include<conio. h>
#include<stdio. h>
#include<stdlib. h>
#include<string. h>
#include<ctype. h>
#define N 50
#define M 100filmy // opredelenie structury
{name [N];film [N];cena;adres [N];mesta;
};n;filmy afisha [M];
/************************************************************/IzFaila
(struct filmy *afisha) // chtenie dannih iz faila
{i;*f;=fopen ("1. txt","r");(
( (f=fopen ("1. txt","r"))! =NULL))
{("Fail otkrit! \n");
}
{("Fail ne naiden! \n");(-1);
}("\nKol-vo strok:
",n);("%d",&n);(i=0; i<n; i++)
{(f,"%s",&afisha [i].
name);(f,"%s",&afisha [i]. film);(f,"%d",&afisha
[i]. cena);(f,"%s",&afisha [i].
adres);(f,"%d",&afisha [i]. mesta);
}(f);("\n");("\n
+---------------------+----------------+-----------------+-------+------------+");("\n
| nazvanie kinoteatra | Nazvanie filma | Stoimost bileta | Adres | Kol-vo
mest|");("\n
+---------------------+----------------+-----------------+-------+------------+");(i=0;
i<n; i++)
{("\n | %20s |%18s| %2d | %20s |%3d |",
afisha [i]. name,afisha [i]. film,afisha [i]. cena,afisha [i]. adres,afisha
[i]. mesta);("\n
+--------------------+----------------+-----------------+-------+------------+");();
/************************************************************/stoimost
(struct filmy afisha [M]) // opredelenie maximalnoi stoimosti bileta
{cena_max;_max=afisha [0]. cena;imax=0;(int i=0;
i<n; i++)(afisha [i]. cena>cena_max)
{_max=afisha [i]. cena;=i;
}("\n Maximalnaya stoimost bileta:
%d",afisha [imax]. cena);("\n Na film: %s",afisha [imax].
film);("\n V kinoteatr: %s",afisha [imax]. name);();
}
/************************************************************/stoimosti
(struct filmy afisha [M]) // opredelenie minimalnoi stoimosti bileta
{cena_min;_min=afisha [0]. cena;imin=0;(int i=0;
i<n; i++)(afisha [i]. cena<cena_min)
{_min=afisha [i]. cena;=i;
}("\n Minimalnaya stoimost bileta:
%s",afisha [imin]. name);("\n Na film: %s",afisha [imin].
film);("\n V kinoteatr: %s",afisha [imin]. name);();
}
/************************************************************/kin_max
(struct filmy afisha [M]) // kinoteatr s maximalnym kol-vom mest
{mesta_max;_max=afisha [0]. mesta;imax=0;(int
i=0; i<n; i++)(afisha [i]. mesta>mesta_max)
{_max=afisha [i]. mesta;=i;
}("\n Kinoteatr s maximal'nym kol-vom mest:
%s",afisha [imax]. name);("\n Maximalnoe kol-vo mest: %d
",afisha [imax]. mesta);();
}
/************************************************************/kin_min
(struct filmy afisha [M]) // kinoteatr s minimalnym kol-vom mest
{mesta_min;_min=afisha [0]. mesta;imin=0;(int
i=0; i<n; i++)(afisha [i]. mesta<mesta_min)
{_min=afisha [i]. mesta;=i;
}("\n Kinoteatr s minimal'nym kol-vom mest:
%s",afisha [imin]. name);("\n Minimalnoe kol-vo mest: %d
",afisha [imin]. mesta);();
}
/************************************************************/poisk
(struct filmy afisha [M]) // poisk po nazvaniyu kinoteatra
{i,z;name [20];("Vyberete
kinoteatr\n");(i=0; i<n; i++) {("%d %s \n", i,afisha [i].
name);
}("%d",&z);("%s %s %d %s
%d",afisha [z]. name,afisha [z]. film,afisha [z]. cena,afisha [z].
adres,afisha [z]. mesta);(i=0; i<n; i++)
{(strspn (name,afisha [i]. name))
{("%s %s %d %s %d",afisha [i].
name,afisha [i]. film,afisha [i]. cena,afisha [i]. adres,afisha [i]. mesta);
}
}
}
/************************************************************/sort
(struct filmy afisha [M]) // sortirovka po nazvaniyu kinoteatra
{*f;=fopen ("1.
txt","r");i,l,pr;t;=20-1;
{=0;(i=0; i<n; i++)(strcmp (afisha [i].
name,afisha [i+1]. name) >0)
{=afisha [i];[i] =afisha [i+1];[i+1] =t;=1;
}-;(i=0; i<n; i++)
{(f,"%s",&afisha [i].
name);(f,"%s",&afisha [i]. film);(f,"%d",&afisha
[i]. cena);(f,"%s",&afisha [i].
adres);(f,"%d",&afisha [i]. mesta);
}(f);("\n");("\n
+---------------------+----------------+-----------------+-------+------------+");("\n
| nazvanie kinoteatra | Nazvanie filma | Stoimost bileta | Adres | Kol-vo
mest|");("\n
+---------------------+----------------+-----------------+-------+------------+");(i=0;
i<n; i++)
{("\n | %20s |%18s| %2d | %20s |%3d
|",[i]. name,afisha [i]. film,afisha [i]. cena,afisha [i]. adres,afisha
[i]. mesta);
}("\n
+--------------------+----------------+-----------------+-------+------------+");
}(pr==1);();
}
/************************************************************/sort_1
(struct filmy afisha [M]) // sortirovka po nazvaniyu kinoteatra
{*f;=fopen ("1.
txt","r");i,l,pr;t;=20-1;
{=0;(i=0; i<n; i++)(strcmp (afisha [i].
film,afisha [i+1]. film) >0)
{=afisha [i];[i] =afisha [i+1];[i+1] =t;=1;
}-;(i=0; i<n; i++)
{(f,"%s",&afisha [i]. name);(f,"%s",&afisha
[i]. film);(f,"%d",&afisha [i].
cena);(f,"%s",&afisha [i]. adres);(f,"%d",&afisha
[i]. mesta);
}(f);("\n");("\n
+---------------------+----------------+-----------------+-------+------------+");("\n
| nazvanie kinoteatra | Nazvanie filma | Stoimost bileta | Adres | Kol-vo
mest|");("\n
+---------------------+----------------+-----------------+-------+------------+");(i=0;
i<n; i++)
{("\n | %20s |%18s| %2d | %20s |%3d |",
afisha [i]. name,afisha [i]. film,afisha [i]. cena,afisha [i]. adres,afisha
[i]. mesta);
}("\n
+--------------------+----------------+-----------------+-------+------------+");
}(pr==1);();
}
/************************************************************/main
() // Osnovnaya funkciya
{ int i,n;a;
{("\n 1. Vvod dannih iz faila");("\n
2. Maximalnaya stoimost bileta");("\n 3. Minimalnaya stoimost
bileta");("\n 4. Kinoteatr s maximalnym kol-vom mest");("\n
5. Kinoteatr s minimalnym kol-vom mest");("\n 6. Poisk po
naimenvaniyu kinoteatra");("\n 7. Sortirovka po nazvaniyu
kinoteatra");("\n 8. Sortirovka po nazvaniyu
filma");("\n-------------------------------------------------");("\n
0. Exit\n");("\n");("Vash vibor: ");=getchar ();(a)
{'1': IzFaila (afisha);;'2': stoimost
(afisha);;'3': stoimosti (afisha);;'4': kin_max (afisha);;'5': kin_min
(afisha);;'6': poisk (afisha);;'7': sort (afisha);;'8': sort_1 (afisha);;
}
}(a! ='0');(0);
}