Разработка программы обработки массива данных с построением диаграммы (предметная область - 'Садовод')

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

Разработка программы обработки массива данных с построением диаграммы (предметная область - 'Садовод')

Министерство образования РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

"Пензенская государственная технологическая академия"

Кафедра " Прикладная информатика"

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




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

Разработка программы обработки массива данных с построением диаграммы (предметная область - "Садовод")


Выполнил:

студентка группы 10Э1б

Суменкова Е.А.

Принял: Бармин М.А.







Пенза 2011 г.

Оглавление

 

Введение

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

2. Состав и структура исходных данных и результатов

3. Методы решения задач

4. Описание программы

5. Методика отладки программы

6. Руководство пользователя

Заключение

Литература

Приложения

Задание на курсовое проектирование

 

по дисциплине "Информатика и программирование"

студенту ________________________ группы ____________________

Тема проекта: Разработка программы обработки массива данных с построением диаграммы (предметная область - "Садовод")

(вариант № 15)

Исходные данные (технические требования) на проектирование

. Состав входных и выходных данных:

входные данные: ФИО, количество соток, годовой взнос за сотку (руб.);

вычисляемое поле: сумма годового взноса;

выходные данные: обработанный массив данных, круговая диаграмма.

. Функции программы: ввод данных, запись данных в файл, чтение данных из файла, вывод данных на экран, дополнение данных, удаление данных, поиск информации по заданному атрибуту (ФИО садовода, количество соток, сумма годового взноса), сортировка данных (методом подсчета), построение диаграммы (круговой).

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

Введение

Цель данного курсового проекта - закрепление навыков по разработке программ на языке Turbo Pascal, проработка комплекса вопросов, решаемых в технологической цепочке создания программного обеспечения.

Общее задание на курсовое проектирование состоит в разработке прикладной программы и пользовательской документации.

Курсовой проект включает в себя разработку программ для решения следующих задач:

-       статистическая обработка данных (ввод данных, вывод данных, запись данных в файл, чтение из файла, поиск, дополнение данных, удаление);

-       сортировка массива данных (числовых);

-       построение диаграммы (круговая, пользовательская штриховка).

В курсовой работе использована следующая последовательность этапов создания автоматизированной системы:

-       постановка задачи;

-       формализация;

-       алгоритмизация;

-       программирование;

-       тестирование и отладка;

-       документирование.

В качестве среды программирования используется Free Pascal IDE.

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


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

ввод данных;

запись данных в файл;

чтение данных из файла;

вывод данных на экран;

дополнение данных;

удаление данных;

поиск информации по заданному атрибуту;

сортировка данных;

построение диаграммы по данным из файла и вывод ее на экран.

Вариант №15 предполагает использование предметной области "Садовод", входными данными которой являются: ФИО, количество соток, годовой взнос за сотку (руб.); вычисляемое поле - сумма годового взноса. Вид меню - вертикальное, выбор пункта меню осуществляется с помощью функциональных клавиш.

Для сортировки данных и построения диаграммы использовать вычисляемое поле. Тип сортировки - сортировка подсчетом. Вид диаграммы - круговая, способ закрашивания - специальная штриховка.

 

2. Состав и структура исходных данных и результатов


Таблица 1 - Состав и структура исходных данных

Имя переменной

Назначение

Тип

Ограничения

i

integer

-32768.32767

Sum

Сумма общего взноса за все участки всеми садоводами

integer

-32768.32767

gd

Переменная, определяющая драйвер графического устройства

integer

-32768.32767

gm

параметр (mode)

integer

-32768.32767

m

Координата точки внутри сектора

integer

-32768.32767

n

Координата точки внутри сектора

integer

-32768.32767

a

Угол в диаграмме

real

2.9E - 39.1.7E38

b

Сохранение предыдущего значения а

real

2.9E - 39.1.7E38

ss

Переменная для контроля данных

string

не более 255

TGartner

Запись

record

__

FIO

ФИО садоводов

string

не более 50 символов

NumberSot

Количество соток

integer

-32768.32767

Prise1

Годовой взнос за сотку

integer

-32768.32767

PriseAll

Сумма годового взноса

integer

-32768.32767

GartnerArray

Список садоводов

TGartner

не более 50

NumberGartner

Число садоводов

integer

-32768.32767

n

Число записей

integer

-32768.32767

f

Файловая переменная

File of TGartner

__

Имя файла

string

не более 255

j

Управляющая переменная

integer

-32768.32767

menu

Атрибут поиска

integer

1 - 3

buf

Переменная для временного хранения какого-либо числа

integer

-32768.32767

BufArray

Временный массив

TGartner

не более 50

KeyArray

Массив ключей

byte

0.255

 

3. Методы решения задач


Построение круговой диаграммы предполагает следующий алгоритм:

)        вычислить относительную частоту для каждого из интервалов в процентах Pj = 100 Fj / N;

2)      вычертить окружность радиуса R < Yэ,max/2;

)        вычерчивать радиусы окружности, отстоящие друг от друга на углы 3,6 P1; 3,6 P2; 3,6 P3 и т.д.;

)        заштриховать секторы;

)        внутри каждого сектора или рядом с ним вывести значение Pj;

)        вывести надпись, поясняющую название показателя, для которого построена диаграмма.

Создание пользовательской штриховки предполагает следующие действия:

-       создание первоначального эскиза (на квадратном поле (в клетку) заштриховываются произвольные клетки вплоть до получения желаемого результата);

-       заштрихованные области заменяются единицами;

-       получившиеся по горизонтали числа необходимо перевести из двоичной системы счисления в шестнадцатеричную;

-       числа используются для создания пользовательской заливки (в программе им предшествует знак "$").

Сортировка подсчетом, используемая в данном курсовом проекте, заключается в том, чтобы попарно сравнить значения всех ключей и при этом для каждого ключа подсчитать количество меньших его ключей, затем каждый i-й элемент массива (запись) устанавливается на место, номер которого равен меньшему ключу + 1.

При реализации алгоритма используются три массива:

для исходных данных;

для подсчета результатов сравнения ключей;

для результата сортировки.

 

4. Описание программы


Курсовой проект состоит из основной программы (Kurs) и модуля UNIT (IO).

Основная программа отвечает за вывод на экран и функционирование меню (вертикальное, выбор пункта меню - по функциональной клавише), а также за построение круговой диаграммы. Для построения круговой диаграммы используется процедура "Paint". Заполнитель для круговой диаграммы разработан пользователем.

Модуль UNIT содержит восемь процедур: "Input", "Output1", "OutputAll", "Readfile", "Writefile", "DeleteGartner1", "Search", "Sort".

Процедура "Input" отвечает за ввод данных с клавиатуры. Процедура "Output1" отвечает за вывод садовода с адресом i. Процедура "OutputAll" отвечает за вывод списка всех садоводов. Процедура "Readfile" позволяет произвести чтение из файла, процедура "Writefile" - запись в файл. Процедура "DeleteGartner1" удаляет садовода из списка (атрибут - ФИО). Процедура "Search" производит поиск садоводов по одному из трех атрибутов: ФИО, количество соток или общий взнос. Прцедура "Sort" отвечает за сортировку списка садоводов по возрастанию (ключ сортировки - количество соток).

 

5. Методика отладки программы


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

Существует три основных типа ошибок:

-             ошибки этапа компиляции или синтаксические ошибки;

-             ошибки этапа выполнения или семантические ошибки;

-             логические ошибки.

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

Наиболее общей причиной ошибок этапа компиляции являются ошибки набора (опечатки), пропущенные точки с запятой, ссылки на неописанные переменные, передача неверного числа (или типа) параметров процедуры или функции и присваивание переменной значения неверного типа.

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

Примеры сообщений программы при ошибках этапа компиляции:

-       Error 3: Unknown identifier;

-       Error 4: Duplicate identifier;

-       Error 37: END expected;

-       Error 85: "; " expected;

-       Error 113: Error in statement и др.

Ошибки этапа выполнения или семантические ошибки происходят при запуске успешно откомпилированной программы, которая при выполнении делает что-то недопустимое. То есть, программа содержит допустимые операторы Паскаля, но при выполнении этих операторов что-то происходит неверно. Например, программа может пытаться открыть для ввода несуществующий файл или выполнить деление на ноль.

Пример сообщения программы при ошибке этапа выполнения:

-       Error 62: Division by zero.

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

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

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

6. Руководство пользователя


Запуск программы осуществляется двойным нажатием левой клавиши мыши по значку исполняемого модуля с названием Kurs.

После открытия окна программы пользователь видит вертикальное меню. Выбор пункта меню осуществляется функциональными клавишами (рисунок В. 1).

При выборе пункта меню "Ввод данных" программа предлагает ввести предполагаемое количество данных. После чего поэлементно запрашивает ФИО садовода, количество соток, цену одной сотки (рисунок В.2).

При выборе пункта меню "Запись в файл" программа предлагает ввести имя файла (предпочтительно латинскими буквами).

При выборе пункта меню "Чтение из файла" программа запрашивает имя ранее созданного файла.

При выборе пункта меню "Вывод данных" программа выводит на экран заполненную базу данных (рисунок В.3).

При выборе пункта меню "Поиск" пользователю предлагается выбрать атрибут, по которому будет производится поиск (ФИО, количество соток, общий взнос). После выбора атрибута необходимо ввести атрибут, принадлежащий искомому садоводу. Если садовод будет найден, на экран будут выведены данные о нем (рисунок В.5).

При выборе пункта меню "Сортировка" список садоводов будет отсортирован по возрастанию (ключ сортировки - количество соток).

При выборе пункта меню "Диаграмма" на экран будет выведена круговая диаграмма, отражающая соотношение годовых взносов всех садоводов с соответствующими подписями (рисунок В.4).

программа язык turbo pascal

При выборе пункта меню "Дополнение данных" повторяется алгоритм пункта "Ввод данных".

При выборе пункта меню "Выход из программы" будет произведен выход из программного приложения.

Все изменения, произошедшие в базе данных можно увидеть, выбрав пункт меню "Вывод данных".

В любое время пользователь может вернуться в меню, нажав клавишу Enter.

Таблица 2 - Сообщения программы

Сообщение программы

Действия пользователя

Примечания

"Введите число записей"

Необходимо ввести количество вводимых элементов, после чего нажать клавишу Enter

Вводимое число должно быть строго больше нуля и принадлежать к целому типу

"Введите ФИО->"

Ввод ФИО садовода производится через Enter

Рекомендуется вводить латинскими буквами, чтобы в последствии избежать трудностей при выводе данных на диаграмме

Сообщение программы

Действия пользователя

Примечания

"Введите количество соток и цену одной сотки"

Ввод количество соток и цены одной сотки производиться через Enter

Значения количества соток и цены одной сотки должны быть целочисленными

"Введите ФИО удаляемого садовода"

Вводится ФИО садовода

__

"Введите атрибуты поиска"

Необходимо выбрать атрибут поиска из трех предлагаемых и ввести соответствующий ему номер

 __



Заключение


В ходе выполнения курсового проекта были разработаны программы на языке Turbo Pascal, проработан ряд вопросов, решаемых в технологической цепочке создания программного обеспечения. В качестве среды программирования использовался Free Pascal IDE.

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

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

Для сортировки данных и построения диаграммы использовано вычисляемое поле. Тип сортировки - сортировка подсчетом. Вид диаграммы - круговая, способ закрашивания - специальная штриховка.

Литература


1.       Долгушева Л.Н. Электронное учебное пособие. ver 1.2.2010. - Пенза, ПГТА

2.      Информатика: Базовый курс/Под ред. С.В. Симоновича. - СПБ.: Питер, 2002. Алгоритмизация и основы программирования / Г.И. Светозарова. - М.: Высшая школа, 2006. - 128 с.

.        Культин Н.Б. Turbo Pascal в задачах и примерах, 2007.

.        Немнюгин С.А. Turbo Pascal. Практикум. 2007.

.        Немнюгин С.А. Turbo Pascal. Программирование на языке высокого уровня. 2006.

.        Павловская Е.А., Паскаль. Программирование на языке высокого уровня: Учебник для вузов. - СПб.: Питер, 2007. - 393 с.

.        Пикулин В.В., Долгушева Л.Н., Бармин М.А., Информатика и программирование: Учебно-методическая разработка. - Пенза: Изд-во Пенз. гос. технол. академии, 2006. - с.

Приложения

 

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

А.1. Текст основной программы (Kurs)

uses crt, IO,graph;: FillPatternType= ($00,$11,$10,$12,$7e,$fa,$18,$00);InputData;: =0;;;paint;R=100; x=150; y=150;

colorG=7;sum: integer;,gm,m,n,err, i: integer;

a,b: real; ss: string;(gd,gm);(gd,gm,'');GraphResult<>grOk then Halt (1);(colorG);(x,y,R);: =0;: =0;i: =1 to NumberGartner do: =sum+GartnerArray [i]. PriseAll;i: =1 to NumberGartner do: =a+2*Pi*GartnerArray [i]. PriseAll/sum;(x,y,x+round (R*cos (a)),y+round (R*sin (a)));;: =0; b: =0; i: =0;i: =1 to NumberGartner do: =a;: =a+2*Pi*GartnerArray [i]. PriseAll/sum;(FillPattern,Random (GetMaxColor));

m: = (2*x+round (R*cos (a- (a-b) /2))) div 2;

n: = (2*y+round (R*sin (a- (a-b) /2))) div 2;(m,n,colorG);(GartnerArray [i]. PriseAll,ss);(m,n,ss);

RectAngle (3*R, i*25, 3*R+20, i*25+20);

FloodFill (3*R+2, i*25+3,colorG);(3*R+30, i*25+5, GartnerArray [i]. fio);;;: =0;;('F1-Ввод данных');('F2-Запись в файл'); ('F3-Чтение из файла');

Writeln ('F4-Вывод данных');

Writeln ('F5-Удаление');

Writeln ('F6-Поиск');

Writeln ('F7-Сортировка');

Writeln ('F8-Диаграмма');

Writeln ('F9-Дополнение данных');

Writeln ('F10-Выход из программы');

case readkey of

#59: begin clrscr; inputdata; end;

#60: begin clrscr; writefile; end;

#61: begin clrscr; readfile; end;

#62: begin clrscr; Outputall; end;

#63: begin clrscr; Deletegartner1; end;

#64: begin clrscr; Search; end;

#65: begin clrscr; sort; end;

#66: paint;

#67: begin clrscr; input; end;

#68: halt;;false;.

А.2. Текст модуля программы (IO)

unit IO;crt;Nconst=50;=record: string [50];: integer;,PriseAll: integer;;Input;Output1 (i: integer);OutputAll;ReadFile;WriteFile;DeleteGartner1;Search;Sort;GartnerArray: array [1. Nconst] of TGartner;: integer;Input;n, i: integer;;('Ввод данных в массив. Следуйте пошаговой инструкции. Ввод очередного элемента завершайте нажатием клавиши Enter');

writeln;

Writeln ('Введите число записей->');

Readln (n);i: =1 to n doGartnerArray [NumberGartner+1] do('Садовод №', i);('Введите ФИО->');(FIO); ('Введите количество соток->');

{$I-}(NumberSot);

{$I+}IOResult<>0 then

Writeln ('Введен недопустимый символ! ');;;;; ('Введите цену одной сотки->');

{$I-}(Prise1);

{$I+}IOResult<>0 then

Writeln ('Введен недопустимый символ! ');;;;;: =Prise1*NumberSot;(NumberGartner);();;('Ввод окончен');;;Output1 (i: integer);;GartnerArray [i] do('ФИО',FIO);('Количество соток',NumberSot); ('Цена одной сотки',Prise1);

Writeln ('Общий взнос',PriseAll);;;;OutputAll;i,j: integer;

writeln;

writeln ('Вывод данных на экран. Для возврата в меню нажмите клавишу Enter');

writeln;;(#218);i: =1 to 67 do(#196);(#191);(#179,'ФИО': 30,#179,'Кол. соток': 12,#179,'Цена 1-й': 10,#179,'Итог: 12,#179);i: =1 to NumberGartner doGartnerArray [i] do(#179,Fio: 30,#179,NumberSot: 12,#179,Prise1: 10,#179,PriseAll: 12,#179);;(#192);j: =1 to 67 do(#196);(#217);;;ReadFile;f: file of TGartner; fileName: string;

writeln;

writeln ('Чтение данных из файла. Введите имя уже существующего файла, затем нажмите клавишу Enter');

writeln;

writeln;

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

Readln (fileName);(f,fileName);

{$I-}(f);

{$I+}IOResult<>0then

writeln ('Указанный файл не найден! ');;;;not (Eof (f)) do(NumberGartner);(f,GartnerArray [NumberGartner]);;(f);('Ввод окончен! ');;;WriteFile;f: file of TGartner; fileName: string; i: integer;

writeln;

writeln ('Запись данных в файл. Введите имя файла, затем нажмите клавишу Enter');

writeln;;NumberGartner=0 then ('Список садоводов пуст! ');

readln;;;('Введите имя файла->');(fileName);(f,fileName);(f);i: =1 to NumberGartner do(f,GartnerArray [i]);(f); ('Запись завершена');

readln;

end;

procedure DeleteGartner1;

var fio: string; i,j: integer;

begin

writeln;

writeln ('Удаление элемента массива. Введите предлагаемый атрибут, затем нажмите клавишу Enter');

writeln;

writeln;

Write ('Введите ФИО садовода->');

Readln (fio);i: =1 to NumberGartner doGartnerArray [i]. FIO=fio thenj: =i to NumberGartner-1 do[j]: =GartnerArray [j+1];('Запись успешно удалена');(NumberGartner);;;; ('Садовод с такими данными не найден! ');;;Search;menu,buf, i: integer; fio: string; key: boolean;;(‘Поиск элемента массива. Выберете один из предлагаемых атрибутов поиска, введите соответствующий ему номер и нажмите Enter');

writeln;

writeln;

Writeln ('Введите атрибуты поиска: ');

Writeln ('1-ФИО');

Writeln ('2-Количество соток');

Writeln ('3-Общий взнос');

Write ('->');

{$I-}(menu);

{$I+}IOResult<>0 then

Writeln ('Введен недопустимый символ! ');;;;;: =false;menu of

:('Введите ФИО->');(fio);i: =1 to NumberGartner dofio=GartnerArray [i]. FIO thenkey=false then Writeln ('Найденные записи: ');(i);: =true;; key=false then Writeln ('Садоводы с требуемыми атрибутами не найдены');

readln;

end;

:

begin

Write ('Введите количество соток->');

{$I-}(buf);

{$I+}IOResult <>0 then

Writeln ('Введен недопустимый символ! ');;;;;i: =1 to NumberGartner dobuf=GartnerArray [i]. NumberSot thenkey=false then Writeln ('Найденные записи: ');(i);: =true;; key=false then Writeln (' Садоводы с требуемыми атрибутами не найдены');

readln;

end;

:

begin

Write ('Введите сумму общего взноса->');

{$I-}(buf);

{$I+}IOResult <>0 then

Writeln ('Введен недопустимый символ! ');;;;i: =1 to NumberGartner dobuf=GartnerArray [i]. PriseAll thenkey=false then Writeln ('Найденные записи: ');(i);: =true;;;

if key=false then Writeln ('Садоводы с требуемыми атрибутами не найдены');

readln;;;;Sort;bufArray: array [1. Nconst] of TGartner;: array [1. Nconst] of byte; i,j: integer;NumberGartner=0 then('Список садоводов пуст! ');;;;i: =1 to NumberGartner do [i]: =0;

writeln;

Writeln ('Сортировка по возрастанию');

for i: =1 to NumberGartner-1 doj: =i+1 to NumberGartner doGartnerArray [i]. PriseAll>GartnerArray [j]. PriseAllinc (keyArray [i]) else inc (keyArray [j]);i: =1 to NumberGartner do[keyArray [i] +1]: =GartnerArray [i];i: =1 to NumberGartner do[i]: =bufArray [i]; ('Список отсортирован! ');

readln;

end.

Приложение В. результаты работы программы

 

Рисунок В. 2-Вид окна программы после запуска

Рисунок В. 3-Ввод данных с клавиатуры

Рисунок В. 4-Вывод данных на экран

Рисунок В. 5-вывод на экран круговой диаграммы

Рисунок В.1. 6-Поиск по заданному атрибуту

Похожие работы на - Разработка программы обработки массива данных с построением диаграммы (предметная область - 'Садовод')

 

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