Помощь в написании студенческих работ
Антистрессовый сервис

Разработка программы обработки массива данных с построением диаграммы (предметная область – «Оптовая база»)

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Программа осуществляет ввод данных, вывод результатов обработки, сортировку данных, построение диаграммы. С помощью данной программы пользователь может создать таблицу со списком блюд. В программе присутствуют названия пунктов меню, подсказки, коды для выбора пунктов меню и соответствующие процедуры. В ходе разработки программы было выполнено проектирование расположения данных на экране… Читать ещё >

Разработка программы обработки массива данных с построением диаграммы (предметная область – «Оптовая база») (реферат, курсовая, диплом, контрольная)

Федеральное агентство по образованию РФ Пензенская государственная технологическая академия Кафедра «Информатика»

Дисциплина «Информатика и программирование»

Курсовой проект на тему

Разработка программы обработки массива данных с построением диаграммы (предметная область — «Оптовая база»)

Выполнила:

Студентка группы 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. zapisizapisey}

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, icvet}

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. Вывод диаграммы с применением сортировки

Показать весь текст
Заполнить форму текущей работой