Разработка программы обработки массива данных с построением диаграммы (предметная область – "Оптовая база")
Разработка программы на языке Turbo Pascal, обеспечивающей работу пользователя в диалоговом режиме с возможностью выбора функций с помощью одноуровневого меню вертикального типа. Блок-схема и листинг программы, описание руководства пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 17.03.2014 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное агентство по образованию РФ
Пензенская государственная технологическая академия
Кафедра «Информатика»
Дисциплина «Информатика и программирование»
Курсовой проект на тему
Разработка программы обработки массива данных с построением диаграммы (предметная область - «Оптовая база»)
Выполнила:
Студентка группы 09Э1
Шиянова О.Г.
Принял: доцент каф. «Информатика»
Долгушева Л.Н.
Пенза, 2010 г.
- ЗАДАНИЕ
- на курсовое проектирование
- По дисциплине «Информатика и программирование»
- Студенту Шияновой Олеси группы 09Э1
- Тема проекта: Разработка программы обработки массива данных с построением диаграммы (предметная область-«Меню»)
- (вариант 37)
- Исходные данные (технические требования) на проектирование
- 1.Состав входных и выходных данных:
- -входные данные: наименование блюда, вес, цена;
- -вычисляемое поле: цена со скидкой (10%);
- -выходные данные: обработанный массив данных, столбиковая диаграмма.
- 2.Функции программы: ввод данных, запись данных в файл, чтение данных из файла, вывод данных на экран, дополнение данных, удаление данных, поиск информации по заданному атрибуту(наименование товара), сортировка данных(методом вставки), построение диаграммы(столбиковой).
- 3.Требования к программе: тип меню - вертикальное, выбор функции меню- по выделенному символу, вывод сведений о назначении программы, вывод подсказок с указаниями к дальнейшим действиям, вывод запросов на ввод исходных данных, контроль исходных данных и коррекция ошибочно введенных значений переменных.
- Объём работы по курсу
- 1.Содержание расчетной части: введение, постановка задачи на разработку программы, состав и структура исходных данных и результатов, методы решения задач, описание программы, методика отладки программы, руководство пользователя, заключение, литература, приложения.
- 2.Графическая часть:
- -схемы программы(основной, подпрограммы сортировки, подпрограммы построения диаграммы)3 листа формата А4;
- -схема данных(1 лист формата А4).
- 3.Экспериментальная часть: составление и отладка программы на русском языке Turbo Pascal.
- Срок выполнения проекта по разделам:
- 1.Постановка задачи к 20.10.2010
- 2.Разработка алгоритмов к 30.10.2010
- 3.Написание программы к 15.11.2010
- 4.Подготовка текста программы к 20.11.2010
- 5.Отладка программы к 30.11.2010
- 6.Оформление пояснительной записки к 5.12.2010
- 7.Оформление графической части к 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 |
Индекс удаляемого элемента |
Integer |
_ |
|
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;
type {razdel opisaniya tipov}
z=record {obyavlenie tipa zapis'}
naz:string; {nazvanie bluda}
ves:real; {ves bluda}
cen:real; {cena bluda}
skid:real; {cena so skidkoy}
end;
var {razdel opisaniya peremennyh}
men,poisk,ps2:z;
a,b,i,n:integer;
k:char;
tabl:array[1..100] of z; {massiv zapisey}
j:z;
gDriver,gmode:integer;
nomer:integer;
N_P:array[1..5] of string;
m:array[1..100] of z; {massiv zapisey}
p,y,s,x,d:integer;
Procedure menu; {procedura vyvoda menu}
begin
clrscr;
TextBackGround(3);
textcolor(15);
Writeln;
Writeln;
Writeln;
Writeln(' ЙНННННННННННН»');
Writeln(' є vvod File:Fє');
Writeln(' ЙНННННННННННН»');
Writeln(' є Vvod:V є');
Writeln(' МНННННННННННН№');
Writeln(' є vYvod:Y є');
Writeln(' МНННННННННННН№');
Writeln(' єdOpolnenie:Oє');
Writeln(' МНННННННННННН№');
Writeln(' є udalenie:U є');
Writeln(' МНННННННННННН№');
Writeln(' є vyHod:H є');
Writeln(' МНННННННННННН№');
Writeln(' єSortirovka:Sє');
Writeln(' МНННННННННННН№');
Writeln(' єDiagramma:D є');
Writeln(' ИННННННННННННј');
Writeln;
write(' Vvedite punkt menu: ');
end;
procedure masToFile;
var
Spi:file of z;
name_file: string[32];
begin
write('Vvedite imya faila dlya sohraneniya: ');
readln(name_file);
Assign(Spi,name_file);
Rewrite(Spi);
for i:=1 to n do {cikl zapolneniya massiva}
begin
write(Spi,tabl[i]);
end;
Close(Spi);
end;
procedure masFromFile;
var
Spi:file of z;
name_file: string[32];
begin
Repeat {cikl proverki nalichiya faila}
clrscr;
write('Vvedite imya faila dlya chteniya dannyh: ');
readln(name_file);
{$I-}
Assign(Spi,name_file);
Reset(Spi);
Close(Spi);
{$I+}
Until (IOResult=0) and (name_file<>'');
Assign(Spi,name_file);
Reset(Spi);
for i:=1 to FileSize(Spi) do
read(spi,tabl[i]);
n:=i;
Close(Spi);
writeln(' Dannye prochteny iz Faila.');
readkey;
end;
procedure vvod; {procedura vvoda dannyh}
begin
writeln;
repeat
{$i-}
writeln(' vvedite collichestvo blud');
readln(n);
{$i+}
until IOResult=0;
for i:=1 to n do {cikl zapolneniya massiva}
begin
writeln(i, ')');
with tabl[i] do {obrashenie k zapisi}
begin
write(' vvedite nazvanie bluda ');
readln(tabl[i].naz);
repeat
{$i-}
write(' vvedite ves bluda ');
readln(tabl[i].ves);
{$i+}
until IOResult=0;
{ioresult-funkciya vozvrashaushaya 0,esli tip peremennoy sootvetstvuet obyavlennomu}
repeat
{$i-}
write(' vvedite cenu ');
readln(tabl[i].cen);
{$i+}
until ioresult=0;
If IOResult=1 then writeln('nepravilnyi vvod,povtorite') else
skid:=cen-(cen*10/100);
end;
end;
masToFile;
writeln(' dobavlenie zakoncheno.');
readkey;
end;
procedure vivod; {procedura vyvoda dannyh na ekran}
begin
clrscr;
writeln;
writeln(' ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»');
writeln(' є menu є');
writeln(' МНННННННННННННННННННННННЛНННННННННННННННЛННННННННННННННННННННЛНННННННННН№');
writeln(' є nazvanie є ves є cena єso skidkoyє');
writeln(' МНННННННННННННННННННННННОНННННННННННННННОННННННННННННННННННННОНННННННННН№');
for i:=1 to n do
writeln(' є',(tabl[i].naz):23,'є',(tabl[i].ves):15:2,'є',(tabl[i].cen):20:2,'є',(tabl[i].skid):10:2,'є');
read;
writeln(' ИНННННННННННННННННННННННКНННННННННННННННКННННННННННННННННННННКННННННННННј');
writeln;
readkey;
end;
procedure dop; { procedura dopolneniya zapisey v tablicu}
var
nazv: string; {nazvanie - dlya poiska dannyh}
begin
clrscr;
if n>0 then {proverka - vvedeny li dannye}
begin
writeln('vvedite nazvanie bluda,posle kotorogo neobhodimo vstavit novyu zapis');
readln(nazv);
for i:=1 to n do
if (nazv=tabl[i].naz) then
begin
writeln('zapis naydena');
s:=i;
x:=1;{priznak}
end;
if x<>1 then
begin
writeln('zapis ne naydena,povtorite');
readkey;
exit;
end
else
begin
repeat {tsikl vvoda nov.zapisi\zapisey}
writeln('vvedite nazvanie bluda ili * dlya okonchaniya');
readln(men.naz);
if men.naz<>'*' then
begin
writeln('vvedite ves');
readln(men.ves);
writeln('vvedite cenu');
readln(men.cen);
men.skid:=men.cen-(men.cen*10/100);
n:=n+1;
for i:=n downto s+1 do
tabl[i+1]:=tabl[i];
tabl[s+1]:=men;
end;
until men.naz='*';
end;
end
else writeln('dannye ne vvedeny');
writeln('nagmite lubyu klavishu');
readkey;
end;
procedure udal; {podprogramma udaleniya}
begin
if n>0 then
begin
Repeat {tsikl vvoda korrektnogo vvoda zapisi}
clrscr;
repeat
{$i-}
writeln ('vvedite nomer zapisi kotoryu nugno udalit');
readln(y);
{$i+}
until IOResult=0;
Until ((y<=n)and(y>0));
if (y<>n) then
begin
n:=n-1;
for i:=y to n do
tabl[i]:=tabl[i+1];
end
else
n:=n-1;
writeln('zapis udalena');
end
else writeln('dannye ne vvedeny');
writeln('nagmite lubyu klavishu');
readkey;
end;
procedure sort;
var
d:z;
i,j:integer;
begin
clrscr;
begin
for j:=2 to N do
begin
i := j;
while tabl[i].skid < tabl[i-1].skid do
begin
d:=tabl[i];
tabl[i]:=tabl[i-1];
tabl[i-1]:=d;
i := i-1
end
end
end;
writeln(' sortirovka proshla ucpeshno');
readkey;
end;
Procedure diagramma;
var
s,short_name,str_name,str_skid,YgN,MaxY:string;
h:longint;
j1,w,x1,y,ErrorCode,srd,wi,Yg,lst,shag:integer;
max_skid,pnp,HSize,StepY,lineNumbers:real;
begin
gDriver:=detect;
gMode:=2;
FileMode:=0;
InitGraph(gdriver,gmode,'');{inicializaciya graficheskogo reghima raboty}
ErrorCode:=GraphResult;
{esli znachenie funkcii=0,eto sootvetstvuet normal'nomu zaversheniu graficheskoy operacii}
if ErrorCode<>grOk then
begin
WriteLn(' Oshibka inicializacii grafiki:');
WriteLn( GraphErrorMsg(ErrorCode)); {soobshenie ob oshibke}
Halt(1);
end;
ClearDevice;
{ochishaetsya ekran I ustanavlivautsya parametry graficheskogo driver na standartnoe znachenie }
SetBkColor(black);
SetColor(yellow);
Line(60,461,630,461); {stroit otrezok ot t.(x1,y1) do (x2,y2),os' x}
Line(60,22,50,460); {y}
max_skid:=0;
for i:=1 to n do
begin
if (tabl[i].skid>max_skid) then
max_skid:=tabl[i].skid;
end;
PnP:=max_skid/435;
TextColor(white);
srd:=round((568/n)-2);
str(srd,s);
wi:=52;
for i:=1 to n do
begin
SetColor(i+2);
SetFillStyle(1,i); {shtrihovka,1-cod sploshnoy zalivki,i -cvet}
HSize:=(abs((tabl[i].skid/pnp)-435))+22; {razmer stolbikov}
if HSize<1 then
Bar(wi,460,wi+srd,round(HSize)+1) {postroenie diagrammy}
else
Bar(wi,460,wi+srd,round(HSize));
str_name:=tabl[i].naz; {nazvanie stolbikov}
short_name:='';
for y:=1 to 3 do
begin
short_name:=short_name+str_name[y];
end;
str(tabl[i].skid:6:2,str_skid);
OutTextXY(round(wi+(srd/2)-10),464,short_name);
{stroka vydaetsya,nachinaya s pozicii(x,y)}
if (round(HSize))>430 then
OutTextXY(round(wi+(srd/2)-34),round(HSize-25),'['+str_skid+']')
else
OutTextXY(round(wi+(srd/2)-34),round(HSize+6),'['+str_skid+']');
wi:=wi+srd+3;
end;
Yg:=22;
if (round(max_skid)>21) then
begin
StepY:=max_skid/20;
lineNumbers:=max_skid;
lst:=19;
shag:=22;
end
else
begin
StepY:=1;
lst:=round(max_skid);
if lst>1 then
shag:=round(435/lst);
lineNumbers:=max_skid;
end;
for i:=0 to lst do
begin
SetColor(yellow);
Line(47,Yg,49,Yg);
Str(round(lineNumbers),YgN);
if lst<>0 then
OutTextXY(4,Yg,YgN);
HSize:=(abs((tabl[i].skid/pnp)-435))+22;
OutTextXY(52,10,'Cena so skidkoi');
OutTextXY(49,1,'Y');
OuttextXY(630,461,'X');
OutTextXY(36,456,'0');
SetColor(DarkGray);
Line(52,Yg,620,Yg);
Yg:=Yg+Shag;
lineNumbers:=lineNumbers-StepY;
end;
readln;
CloseGraph; {zavershenie raboty s graficheskim reghimom}
end;
begin {osnovnaya chast' programmy}
clrscr;
textbackground(3);
textcolor(15);
Writeln(' kursovaya rabota ');
Writeln(' variant 37 ');
Writeln(' vypolnila: studentka');
Writeln(' gruppy 09e1');
Writeln(' Shiyanova Olesya');
Writeln(' proveril: ');
Writeln(' docent ');
Writeln(' kafedry "informatika" ');
Writeln(' Dolgusheva L.N. ');
Writeln(' ');
Writeln(' ');
Writeln(' naghmite я"enter" dlya perehoda v menu ');
Writeln(' ННННННННННННННННННННННННННННННННННННННН ');
readln;
n:=0;
while true do
begin
menu;
k:=readkey;
case 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;
else writeln('nepravilno nabran punkt menu')
end;
end;
end.
Приложение С. Примеры работы программы
Рисунок С1. Вывод информации о программе
Рисунок С2. Вид главного меню
Рисунок С3. Ввод данных
Рисунок С4. Вывод таблицы
Рисунок С5. дополнение
Рисунок С6. Вывод диаграммы без сортировки
Рисунок С7. Вывод диаграммы с применением сортировки
Размещено на Allbest.ru
Подобные документы
Особенности разработки программ на языке Turbo Pascal на примере программы обработки массива данных с построением диаграммы. Функции программы и основные требования к ней. Состав входных и выходных данных. Использование предметной области "Садовод".
курсовая работа [789,1 K], добавлен 13.03.2013Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Компиляция и использование модулей. Разработка интерфейса программы. Факторы, воздействующие на комфорт пользователя. Структура диалога типа меню и разработка экранных форм. Обоснование выбора типа подпрограмм для решения задачи. Текст программы.
курсовая работа [30,1 K], добавлен 22.02.2014Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.
курсовая работа [198,1 K], добавлен 03.02.2010Составление программы на языке Pascal для обработки результатов соревнований по фигурному катанию, проводившихся по трем видам многоборья. Генератор случайных чисел. Блок-схема программы. Ввод данных, выбор пользователя, оформление результатов вычислений.
курсовая работа [471,8 K], добавлен 21.12.2012Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.
курсовая работа [359,0 K], добавлен 23.05.2012Определение необходимых модулей программы, структуры файла базы данных. Описание разработки программы, отладка и тестирование. Разработка приложения Organizer.exe, меню и руководство пользователя. Алгоритм обработки событий главного меню (расписания).
курсовая работа [901,8 K], добавлен 11.02.2014Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.
контрольная работа [360,4 K], добавлен 13.06.2012Переменные типа integer, real, их функции. Общее понятие о массиве, файлы для Pascal. Информационный и информанизационный набор списка. Реализация и тестирование программы. Выбор базы данных, внесение имени, меню. Блок-схема алгоритма, листинг программы.
курсовая работа [306,0 K], добавлен 04.02.2013Создание программы визуализации методов сортировки массива, особенности и направления ее практического применения. Выбор и обоснование среды программирования. Разработка руководства пользователя. Листинг программы и оценка эффективности ее использования.
дипломная работа [1,0 M], добавлен 15.06.2014