Разработка программы обработки массива данных с построением диаграммы (предметная область – 'Оптовая база')
Федеральное агентство по образованию
РФ
Пензенская государственная
технологическая академия
Кафедра «Информатика»
Дисциплина «Информатика и
программирование»
Курсовой проект на тему
Разработка программы обработки
массива данных с построением диаграммы (предметная область - «Оптовая база»)
Выполнила:
Студентка группы 09Э1
Шиянова О.Г.
Принял: доцент каф. «Информатика»
Долгушева Л.Н.
Пенза, 2010 г.
ЗАДАНИЕ
на курсовое проектирование
По дисциплине «Информатика и программирование»
Студенту Шияновой Олеси группы 09Э1
Тема проекта: Разработка программы обработки массива данных с построением
диаграммы (предметная область-«Меню»)
(вариант 37)
Исходные данные (технические требования) на проектирование
.Состав входных и выходных данных:
входные данные: наименование блюда, вес, цена;
вычисляемое поле: цена со скидкой (10%);
выходные данные: обработанный массив данных, столбиковая диаграмма.
.Функции программы: ввод данных, запись данных в файл, чтение данных из
файла, вывод данных на экран, дополнение данных, удаление данных, поиск
информации по заданному атрибуту(наименование товара), сортировка
данных(методом вставки), построение диаграммы(столбиковой).
.Требования к программе: тип меню - вертикальное, выбор функции меню- по
выделенному символу, вывод сведений о назначении программы, вывод подсказок с
указаниями к дальнейшим действиям, вывод запросов на ввод исходных данных,
контроль исходных данных и коррекция ошибочно введенных значений переменных.
Объём работы по курсу
.Содержание расчетной части: введение, постановка задачи на разработку
программы, состав и структура исходных данных и результатов, методы решения
задач, описание программы, методика отладки программы, руководство
пользователя, заключение, литература, приложения.
.Графическая часть:
схемы программы(основной, подпрограммы сортировки, подпрограммы
построения диаграммы)3 листа формата А4;
схема данных(1 лист формата А4).
.Экспериментальная часть: составление и отладка программы на русском
языке Turbo Pascal.
Срок выполнения проекта по разделам:
1.Постановка задачи к 20.10.2010
2.Разработка алгоритмов к 30.10.2010
3.Написание программы к 15.11.2010
.Подготовка текста программы к 20.11.2010
5.Отладка программы к 30.11.2010
.Оформление пояснительной записки к 5.12.2010
.Оформление графической части к 10.12.2010
Цель
курсового проектирования
Целью курсового проектирования является закрепление навыков по разработке
программ на языке Turbo Pascal, проработка комплекса вопросов,
решаемых в технологической цепочке создания программного обеспечения.
Постановка
задачи
Разработать программу в соответствии с вариантом задания (структура
данных представлена в таблице 1), обеспечивающую работу пользователя в
диалоговом режиме с возможностью выбора функций с помощью одноуровневого меню
вертикального типа. Программа должна осуществлять ввод данных, запись данных в
файл, чтение данных из файла, вывод данных на экран, дополнение данных,
удаление данных, поиск информации по заданному атрибуту(наименование товара),
сортировка данных(методом вставки), построение диаграммы(столбиковой).
Таблица 1 - Структура данных программы
МЕНЮ
|
Название блюда
|
Вес
|
Цена (руб.)
|
Цена со скидкой 10% (руб.)
|
Структура
входных и выходных данных
Структура входных и выходных данных представлена в таблице 2.
Таблица 2 - Структура входных и выходных данных
Переменные
|
Значения переменных
|
Тип данных
|
Ограничения
|
A
|
Вспомогательная переменная
|
Integer
|
>0
|
B
|
Вспомогательная переменная
|
Integer
|
>0
|
K
|
Селектор
|
Char
|
>0
|
I
|
Граница цикла
|
Byte
|
0..100
|
N
|
Byte
|
0..100
|
Tabl, men
|
Массив
|
Array
|
1..100
|
Naz
|
Название блюда
|
String
|
<23
|
Ves
|
Вес блюда
|
Real
|
>0
|
Cen
|
Цена блюда
|
Real
|
>0
|
Skid
|
Цена блюда со скидкой 10%
|
Real
|
>0
|
Key
|
Признак обмена
|
boolean
|
True, false
|
j1, srd, w, wi
|
Переменные для построения и
вывода диаграммы
|
Integer
|
>0
|
H
|
|
Longint
|
>0
|
x1, y, shag, lst
|
|
Integer
|
>0
|
str_name,
str_skid, s
|
Переменные для вывода
подписей диаграммы
|
String
|
[1..30]
|
D
|
Вспомогательная переменная
|
record
|
-
|
Poisk
|
Запись для осуществления
поиска
|
Record
|
_
|
ps2
|
Запись для осуществления
поиска
|
Record
|
_
|
Y
|
Номер удаляемой записи
|
Integer
|
>0
|
P
|
Признак выполнения 1 пункта
меню
|
Integer
|
[0;1]
|
S
|
Индекс элемента
|
Integer
|
_
|
X
|
Признак нахождения элемента
массива
|
Integer
|
_
|
D
|
Индекс удаляемого элемента
|
_
|
Nomer
|
номер записи
|
Integer
|
>0
|
gDriver, gmode
|
Переменные для
инициализации графического режима
|
Integer
|
>0
|
Описание
программы
При запуске программы появляется информация о разработчике, название
программы. На экран выводится меню. Далее пользователю предлагается выбрать
необходимый пункт меню. При выборе первого пункта меню вводится необходимая
информация о блюдах.
При выборе второго пункта меню на экран выводится таблица с введенными
данными.
Если пользователь выбирает третий пункт меню, то необходимо ввести
название блюда, после которого требуется добавить информацию.
При выборе четвёртого пункта происходит следующее: требуется ввести
название блюд, запись о которых нужно удалить.
Результаты работы третьего и четвёртого пунктов меню можно увидеть во
втором пункте меню.
При выборе пятого пункта происходит завершение программы.
При выборе шестого пункта производится сортировка введенных данных.
При выборе седьмого пункта меню выстраивается столбиковая диаграмма,
отображающая изменение цен со скидками введенных блюд.
В программе использованы: процедура ввода данных, процедура записи данных
в файл, процедура чтения данных из файла, процедура вывода данных на экран,
процедура дополнения данных, процедура удаления данных, поиск информации по
заданному атрибуту(наименование товара), процедура сортировки данных методом
вставки, процедура построения диаграммы столбиковой.
Руководство
пользователя
Для запуска программы необходимо убедиться, что на компьютере
пользователя установлен Turbo Pascal. Turbo Pascal - это программа позволяющая изучать язык
программирования, с помощью которого можно писать программы, а также запускать
их на выполнение. Для запуска этой программы нужно найти исполняемый модуль (с
расширением .exe). Далее запускаем программу.
При запуске программы появляется информация о разработчике, название программы.
Необходимо нажать клавишу enter
для перехода в меню. На экран выводится меню. Пользователю предлагается выбрать
необходимый пункт меню. При работе с программой необходимо следовать всем
подсказкам, появляющимся в ходе выполнения программы.
Первый пункт меню - ввод данных. Выбор первого пункта обязателен для
корректного выполнения. Для его выбора необходимо нажать «V».При выборе первого пункта
пользователю предлагается сначала ввести количество блюд, а затем необходимые
данные о них: название блюда, вес и цену, причем последние 2 обязательно должны
вводиться в виде числового выражения, если это условие не будет выполнено, то
ввод не произведется до тех пор, пока оно не выполнится условие. Далее нужно
ввести имя файла для сохранения и дополнение будет закончено. Нажмите enter для выхода в главное меню.
Второй пункт меню - вывод записей на экран. Для его выбора необходимо
нажать «Y». Все данные будут представлены в
виде таблицы. Нажмите enter
для выхода в главное меню.
Третий пункт - дополнение данных после элемента с заданным атрибутом. Для
выбора нужно нажать «О». Если пользователь выбирает третий пункт меню, то
выводится информация об этом пункте, а также необходимо ввести название блюда,
после которого требуется добавить информацию. Результаты можно просмотреть при
выборе второго пункта меню. Нажмите enter для выхода в главное меню.
Четвёртый пункт - удаление данных с заданным номером. Для выбора
необходимо нажать «U». При выборе
четвёртого пункта происходит следующее: требуется ввести названия блюд, которые
нужно удалить из списка. Результат можно просмотреть при выборе второго пункта
меню. Нажмите enter для выхода в главное меню.
Пятый пункт - выход из программы. Для выбора нужно нажать «H». При выборе этого пункта происходит
завершение программы.
Шестой пункт - сортировка введенных данных. Для выбора нужно нажать «S». При успешном завершении выведется
сообщение. Нажмите enter для выхода в
главное меню.
Седьмой пункт - построение столбиковой диаграммы. Для выбора нужно нажать
«D». Нажмите enter для выхода в главное меню.
Заключение
Данная программа разработана на языке программирования Turbo Pascal с использованием интерфейса типа «меню». В курсовом
проекте разработана программа, обеспечивающая работу пользователя в диалоговом
режиме с возможностью выбора функций с помощью одноуровневого меню
вертикального типа в соответствии с заданным вариантом № 37.
Программа занимает около 10 Кб.
Программа осуществляет ввод данных, вывод результатов обработки,
сортировку данных, построение диаграммы. С помощью данной программы
пользователь может создать таблицу со списком блюд. В программе присутствуют
названия пунктов меню, подсказки, коды для выбора пунктов меню и
соответствующие процедуры. В ходе разработки программы было выполнено
проектирование расположения данных на экране: определены координаты
расположения на экране пунктов меню, подсказок и сообщений; были назначены
цвета для пунктов меню, текста и фона.
Приложение А.
Схема программы
Приложение В.
Текст программы
turbo pascal программа
меню
program lab1;
uses graph,crt;{razdel opisaniya tipov}=record {obyavlenie
tipa zapis'}:string; {nazvanie bluda}:real; {ves bluda}:real; {cena
bluda}:real; {cena so skidkoy};{razdel opisaniya
peremennyh},poisk,ps2:z;,b,i,n:integer;:char;:array[1..100] of z; {massiv zapisey}:z;,gmode:integer;:integer;_P:array[1..5]
of string;:array[1..100] of z; {massiv zapisey},y,s,x,d:integer;menu;
{procedura vyvoda menu};(3);(15);;;;(' ЙНННННННННННН»');(' є vvod File:Fє');(' ЙНННННННННННН»');(' є Vvod:V є');(' МНННННННННННН№');(' є vYvod:Y є');(' МНННННННННННН№');(' єdOpolnenie:Oє');(' МНННННННННННН№');(' є udalenie:U є');(' МНННННННННННН№');(' є vyHod:H є');(' МНННННННННННН№');(' єSortirovka:Sє');(' МНННННННННННН№');(' єDiagramma:D є');(' ИННННННННННННј');;(' Vvedite punkt menu:
');;masToFile;:file of z;_file: string[32];('Vvedite imya faila dlya
sohraneniya: ');(name_file);(Spi,name_file);(Spi);i:=1 to n do {cikl
zapolneniya massiva}(Spi,tabl[i]);;(Spi);;masFromFile;:file of z;_file:
string[32];{cikl proverki nalichiya faila};('Vvedite imya faila dlya chteniya
dannyh: ');(name_file);
{$I-}(Spi,name_file);(Spi);(Spi);
{$I+}(IOResult=0) and
(name_file<>'');(Spi,name_file);(Spi);i:=1 to FileSize(Spi)
do(spi,tabl[i]);:=i;(Spi);(' Dannye prochteny iz Faila.');;;vvod; {procedura
vvoda dannyh};
{$i-}(' vvedite collichestvo blud');(n);
{$i+}IOResult=0;i:=1 to n do {cikl zapolneniya massiva}(i,
')');tabl[i] do {obrashenie k zapisi}(' vvedite nazvanie bluda
');(tabl[i].naz);
{$i-}(' vvedite ves bluda ');(tabl[i].ves);
{$i+}IOResult=0;
{ioresult-funkciya vozvrashaushaya 0,esli tip peremennoy
sootvetstvuet obyavlennomu}
{$i-}(' vvedite cenu ');(tabl[i].cen);
{$i+}ioresult=0;IOResult=1 then writeln('nepravilnyi
vvod,povtorite') else:=cen-(cen*10/100);;;;(' dobavlenie zakoncheno.');;;vivod;
{procedura vyvoda dannyh na ekran};;(' ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»');(' є menu є');(' МНННННННННННННННННННННННЛНННННННННННННННЛННННННННННННННННННННЛНННННННННН№');(' є nazvanie є ves є cena єso skidkoyє');(' МНННННННННННННННННННННННОНННННННННННННННОННННННННННННННННННННОНННННННННН№');i:=1 to n do(' є',(tabl[i].naz):23,'є',(tabl[i].ves):15:2,'є',(tabl[i].cen):20:2,'є',(tabl[i].skid):10:2,'є');;(' ИНННННННННННННННННННННННКНННННННННННННННКННННННННННННННННННННКННННННННННј');;;;dop; { procedura
dopolneniya zapisey v tablicu}: string; {nazvanie - dlya poiska dannyh};n>0
then {proverka - vvedeny li dannye}('vvedite nazvanie bluda,posle kotorogo
neobhodimo vstavit novyu zapis');(nazv);i:=1 to n do(nazv=tabl[i].naz) then('zapis
naydena');:=i;:=1;{priznak};x<>1 then('zapis ne
naydena,povtorite');;;{tsikl vvoda nov.zapisi\zapisey}('vvedite nazvanie bluda
ili * dlya okonchaniya');(men.naz);men.naz<>'*' then('vvedite
ves');(men.ves);('vvedite cenu');(men.cen);.skid:=men.cen-(men.cen*10/100);:=n+1;i:=n
downto s+1 do[i+1]:=tabl[i];[s+1]:=men;;men.naz='*';;writeln('dannye ne
vvedeny');('nagmite lubyu klavishu');;;udal; {podprogramma udaleniya}n>0
then{tsikl vvoda korrektnogo vvoda zapisi};
{$i-}('vvedite nomer zapisi kotoryu nugno udalit');(y);
{$i+}IOResult=0;((y<=n)and(y>0));(y<>n)
then:=n-1;i:=y to n do[i]:=tabl[i+1];:=n-1;('zapis udalena');writeln('dannye ne
vvedeny');('nagmite lubyu klavishu');;;sort;:z;,j:integer;;j:=2 to N do:=
j;tabl[i].skid < tabl[i-1].skid do:=tabl[i];[i]:=tabl[i-1];[i-1]:=d;:=
i-1;(' sortirovka proshla
ucpeshno');;;diagramma;,short_name,str_name,str_skid,YgN,MaxY:string;:longint;,w,x1,y,ErrorCode,srd,wi,Yg,lst,shag:integer;_skid,pnp,HSize,StepY,lineNumbers:real;:=detect;:=2;:=0;(gdriver,gmode,'');{inicializaciya
graficheskogo reghima raboty}:=GraphResult;
{esli znachenie
funkcii=0,eto sootvetstvuet normal'nomu zaversheniu graficheskoy
operacii}ErrorCode<>grOk then(' Oshibka inicializacii grafiki:');(
GraphErrorMsg(ErrorCode)); {soobshenie ob oshibke}(1);;;
{ochishaetsya
ekran I ustanavlivautsya parametry graficheskogo driver na standartnoe
znachenie }(black);(yellow);(60,461,630,461); {stroit otrezok ot t.(x1,y1) do
(x2,y2),os' x}(60,22,50,460); {y}_skid:=0;i:=1 to n
do(tabl[i].skid>max_skid) then_skid:=tabl[i].skid;;:=max_skid/435;(white);:=round((568/n)-2);(srd,s);:=52;i:=1
to n do(i+2);(1,i); {shtrihovka,1-cod sploshnoy zalivki,i
-cvet}:=(abs((tabl[i].skid/pnp)-435))+22; {razmer stolbikov}HSize<1
then(wi,460,wi+srd,round(HSize)+1) {postroenie diagrammy}(wi,460,wi+srd,round(HSize));_name:=tabl[i].naz;
{nazvanie stolbikov}_name:='';y:=1 to 3
do_name:=short_name+str_name[y];;(tabl[i].skid:6:2,str_skid);(round(wi+(srd/2)-10),464,short_name);
{stroka
vydaetsya,nachinaya s pozicii(x,y)}(round(HSize))>430 then(round(wi+(srd/2)-34),round(HSize-25),'['+str_skid+']')(round(wi+(srd/2)-34),round(HSize+6),'['+str_skid+']');:=wi+srd+3;;:=22;(round(max_skid)>21)
then:=max_skid/20;:=max_skid;:=19;:=22;:=1;:=round(max_skid);lst>1
then:=round(435/lst);:=max_skid;;i:=0 to lst do(yellow);(47,Yg,49,Yg);(round(lineNumbers),YgN);lst<>0
then(4,Yg,YgN);:=(abs((tabl[i].skid/pnp)-435))+22;(52,10,'Cena so
skidkoi');(49,1,'Y');(630,461,'X');(36,456,'0');(DarkGray);(52,Yg,620,Yg);:=Yg+Shag;:=lineNumbers-StepY;;;;
{zavershenie raboty s graficheskim reghimom};{osnovnaya chast'
programmy};(3);(15);(' kursovaya rabota ');(' variant 37 ');(' vypolnila:
studentka');(' gruppy 09e1');(' Shiyanova Olesya');(' proveril: ');(' docent
');(' kafedry "informatika" ');(' Dolgusheva L.N. ');(' ');(' ');(' naghmite
я"enter" dlya perehoda v menu ');(' ННННННННННННННННННННННННННННННННННННННН ');;:=0;true do;:=readkey;k of
'F', 'f': begin
masFromFile; menu; end;
'V', 'v': vvod;
'Y', 'y': vivod;
'O', 'o': dop;
'U', 'u': udal;
'H', 'h': exit;
'S', 's': sort ;
'D', 'd':
diagramma;writeln('nepravilno nabran punkt menu')
end;;.
Приложение С.
Примеры работы программы
Рисунок С1. Вывод информации о программе
Рисунок С2. Вид главного меню
Рисунок С4. Вывод таблицы
Рисунок С5. дополнение
Рисунок С6. Вывод диаграммы без сортировки
Рисунок С7. Вывод диаграммы с применением сортировки