Решения прикладных задач с реализацией автоматизированной обработки экономической информации

Осуществление постановки и выбор алгоритмов решения задач обработки экономической информации; разработка программы для работы с базой данных о маршруте: начало, конец, номер, суммарное количество мест. Поиск маршрутов по названиям конечного пункта.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.01.2013
Размер файла 2,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

Уфимский государственный авиационный технический университет

Факультет: ИНЭК

Кафедра экономической информатики

Направление: 080500 Бизнес-информатика

Форма обучения: очная

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

по дисциплине «Программирование»

Решения прикладных задач с реализацией автоматизированной обработки экономической информации

Ф.И.О.: Кильмаметов А.Р.

1 курс, БИ-102

Уфа 2012

ЗАДАНИЕ

на курсовую работу по дисциплине «Программирование»

1. Тема курсовой работы: Решения прикладных задач с реализацией автоматизированной обработки экономической информации

2. Основное содержание: осуществление постановки и выбор алгоритмов решения задач обработки экономической информации, разработка алгоритмов и программ для их решения

3. Требования к оформлению

Пояснительная записка должна быть оформлена в редакторе Microsoft® Word в соответствии с требованиями ГОСТ и СТП.

Содержание

Введение

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

1.1 Условия задачи

1.2 Конечные цели решения задачи

1.3 Форма выдачи результатов

1.4 Описание использованных данных

2. Анализ и исследование задачи

2.1 Типы решения задачи

2.2 Технические и программные средства для ее решения

2.3 Математическая модель

3. Алгоритм решения задачи

3.1 Метод проектирования алгоритма

3.2 Блок-схемы функций

3.3 Метод тестирования

3.5 Тесты для проверки работоспособности алгоритма

4. Создание программы

4.1 Дерево функций

4.2 Последовательность создания программы

4.3 Сценарий диалога программы

4.4 Описание используемой подпрограммы

5. Результат тестирования

6.Системные требования

7. Инструкция пользователя

7.1 Вызов программы

7.2 Экранные формы

Заключение

Список используемой литературы

Листинг программы

Введение

Данная курсовая работа посвящена разработке и реализации программы на языке С++ с использованием класса статических массивов структур и текстовой базы данных «MARSH».

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

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

1.1 Условия задачи

Задачами курсовой работы являются обучение:

· разработке алгоритмов и программ для решения прикладных задач, осуществление постановки и выбор алгоритмов решения экономико-управленческих задач, в том числе с применением математических методов;

· применению на практике основных алгоритмических структур, графических средств языка;

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

Цель работы:

Описать структуру с именем MARSH, содержащую следующие поля:

название начального пункта маршрута;

название конечного пункта маршрута;

номер маршрута;

количество мест.

Написать программу, выполняющую следующие действия:

ввод с клавиатуры данных в файл, состоящий из восьми элементов типа MARSH;

Загрузка и печать на экране данных из файла

Добавление записи

Удаление записи

Вывод на экран данных и результатов их обработки:

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

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

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

- поиск маршрутов студентов по количеству мест.

1.2 Конечные цели решения задачи

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

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

1.3 Формы выдачи результатов

Результат данной курсовой работы записывается в текстовый файл “marsh.txt”, над которым были проделаны операции, такие как: добавление записи, удаление записи, упорядочивание записей, вывод на экран результатов их обработки. В бинарный файл записываются результаты в виде таблицы:

Начало маршрута

Конец маршрута

Номер маршрута

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

1.4 Описание использованных данных

В данной курсовой работе используется структураMARSH, которая включает в себя данные:

structmarsh

char nach[30]

char kon[30]

intkol

int sum

- структура «MARSH»

- начало маршрута

- конец маршрута

- количество мест

- номер маршрута

2. Анализ и исследование задачи

2.1 Типы решения задачи

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

К каждой подпрограмме составлены блок - схемы, которые служат алгоритмом к написанию кода на языке программирования С++. Также построена модель «Дерева функций» - служит «меню» в структуре построения.

Итогом исследования являются конечные результаты работы программы (ввод, вывод, сортировка, поиск по определенным полям в таблице структуры)

2.2 Технические и программные средства для ее решения

Для реализации данной курсовой работы используются: 1. ПроцессорAMD Turion II Mobile P560(2,5 ГГц), 4096МБ SDRAM, OCWin 7

2. Cреда программирования Bloodshed Dev-C++.

2.3 Математическая модель

Как пример математической модели рассматривается упорядочивание записей. Наиболее распространены 3 варианта сортировки данных: пузырьковая сортировка, сортировка вставкой и сортировка посредством выбора.

При пузырьковой сортировке упорядоченный список В' получается из В систематическим обменом пары рядом стоящих элементов, не отвечающих требуемому порядку, пока такие пары существуют.

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

3. Алгоритм решения задачи

3.1 Метод проектирования алгоритма

Методы проектирования алгоритмов включают: нисходящее проектирование, модульность, структурное программирование.

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

При работе над модулем можно применить принцип структурного программирования. Его цель - повышение читабельности и ясности алгоритма (и программы), более высокой производительности программистов и упрощение отладки. В соответствии с этим принципом для построения любого алгоритма (программы) требуются три типовых блока:

1. Функциональный. Используется для представления линейных алгоритмов. Описывается языком графических символов следующим образом:

2. Циклический. Используется для представления циклических алгоритмов. Описывается языком графических символов одним из двух способов:

3. Конструкция принятия двоичного решения. Применяется для представления разветвляющихся алгоритмов. Описывается языком графических символов следующим образом:

3.2 Блок-схема алгоритма

Блок- схема основной программы:

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Ввод БД из txt файла

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Сохранение текущей БД в txt файл

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

1. Вывод текущей БД на экран

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

2. Добавление новой строки с данными в БД

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

3. Удаление строки из БД

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

4. Cортировка БД по номерам маршрутов

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

5. Информация о количестве мест на маршрутах

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

6. Поиск номеров маршрутов

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

алгоритм задача база данный маршрут

7. Поиск маршрутов студентов

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

3.3 Метод тестирования

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

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

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

Поскольку исчерпывающее структурное тестирование невозможно, необходимо выбрать такие критерии его полноты, которые допускали бы их простую проверку и облегчали бы целенаправленный подбор тестов. Наиболее слабым из критериев полноты структурного тестирования является требование хотя бы однократного выполнения каждого оператора программы. Более сильным критерием является критерий: каждая ветвь алгоритма (каждый переход) должна быть пройдена (выполнена) хотя бы один раз.

3.4 Тесты для проведения работоспособности алгоритма

Метод тестирования представляет собой процесс исследования работо - способности данной программы и получения информации о предоставленной работе. 1. Главное меню (вывод всех пунктов меню).

2. Создание файла (создание бинарного файла “Tovar.bin”). 3. Добавление данных (добавление данных в созданный файл).

4. Удаление данных (удаление строки из заданной таблицы).

5. Упорядочивание записей (сортировка по заданному значению).

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

7. Поиск номеров маршрутов (пользователь с клавиатуры вводит конечный пункт маршрута или начальную букву, на экране выдаются номера маршрутов).

8. Поиск маршрутов студентов (пользователь с клавиатуры вводит количество мест, на экране выводится маршрут)

4. Создание программы

4.1 Дерево функций

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

4.2 Последовательность создания программы

12

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

4.3 Сценарий диалога программы

№ вершины графа

Операция

0

Запуск программы

1

Меню программы

2

Создание файла

3

Вывод таблицы на экран

4

Сохранение таблицы в файл

5

Добавление записи

6

Удаление записи

7

Сортировка по номерам маршрута

8

Информация о суммарном количестве мест

9

Поиск номеров маршрутов по конечному пункту

10

Поиск маршрутов по количеству мест

4.4 Описание использованных подпрограмм

Название

Назначение

sozd_f(filename)

Ввод БД из txt файла

dob_dan(filename)

Добавление новой строки с данными в БД

udal_dan(filename)

Удаление строки из БД

vivod_dan(filename)

Вывод текущей БД на экран

sort_num(filename)

Сортировка по номерам маршрутов

poisk_mest(filename)

Информация о суммарном количестве мест

poisk_num(filename)

Поиск номеров маршрутов по конечному пункту

poisk_kol(filename)

Поиск маршрутов по количеству мест

5. Результат тестирования

1. Главное меню

2. Ввод файла marsh.txt

3. Сортировка по номерам маршрута

4. Добавление записи

5. Удаление строки

6. Сохранение таблицы

7. Информация о суммарном количестве мест

Сообщение при вводе несуществующего начального пункта:

8. Поиск номеров маршрутов

9. Поиск маршрутов студентов

10. Выход из программы

6. Системные требования

Процессор AMD Turion II Mobile P560(2,5 ГГц), 4096 МБSDRAM, OCWin 7

7. Инструкция пользователя

7.1 Вызов программы

Вызов программы реализуется двойным щелчком по файлу «Кильмаметов.срр», который находится в директории пользователя ПК.

7.2 Экранные формы

Экранные формы могут быть различны по содержанию и логическому построению:

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

§ окна выстроены в иерархическую структуру;

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

§ цвет заднего фона окна может быть любым из доступной цветовой палитры; помимо изменения цвета в качестве подложки окна можно использовать любые изображения различных графических форматов;

§ возможно применение анимации для отображения технологических процессов;

§ организована поддержка рабочих мест с несколькими мониторами.

Заключение

В данной курсовой работе была разработана программа, позволяющая работать с базой данных «MARSH» в соответствии с поставленными требованиями. Программа включает в себя процедуры, обеспечивающие выполнение всех поставленных задач для работы с базой данных. Главное меню программы позволяет обеспечить доступ к функциям программы и к сведениям, хранящимся в базе данных «MARSH».

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

Список используемой литературы

1. Б. Страуструп. Язык программирования С++, 3-е издпер. с англ. - М.: "Бином", СПб.: "Невский диалект", 1999. - 991 с., ил.

2. Т.А. Павловская. Ю.А. Щупак С/C++. Программирование на языке высокого уровня. - СПб.: Питер,2007. - 461 с.: ил.

3. Прата. Объектно-ориентированное программирование в C++. 2 изд. - ЭКСМО, 2007. - 336 с.: ил.

4. Т.А. Павловская, Ю.А. Щупак. С/C++. Структурное программирование: Практикум. - СПб.: Питер, 2007. - 239 с.: ил.

Приложение

Листингпрограммы

#include<iostream.h>

#include<fstream.h>

#include<string.h>

#include<stdlib.h>

#include<conio.h>

#include<iomanip.h>

struct marsh

{charnach[30], kon[30];

intkol, num;

};

constint N=100;

classpunkt

{private:

marsh x[N];

int n;

public:

voidoutputfile();

voidinputfile();

void add();

voiddeletemarsh();

void output();

voidsort_num();

voidpoisk_mest();

voidpoisk_num();

voidpoisk_kol();

};

int main()

{ punkt a;

setlocale(LC_ALL, "Russian");

int j;

while(1)

{ cout<<"1. Загрузкаизфайла.\n";

cout<<"2. Вывод на экран.\n";

cout<<"3. Сохранение таблицы в файл.\n";

cout<<"4. Добавление записи.\n";

cout<<"5. Удаление записи.\n";

cout<<"6. Сортировка по номерам маршрутов.\n";

cout<<"7. Информация о суммарном количестве мест.\n";

cout<<"8. Поиск номеров маршрутов.\n";

cout<<"9. Поиск маршрутов.\n";

cout<<"10. Выход.\n";

cout<<"Выберите действие:";

cin>>j;

switch(j)

{ case 1: a.inputfile(); break;

case 2: a.output(); break;

case 3: a.outputfile();break;

case 4: a.add(); break;

case 5: a.deletemarsh(); break;

case 6: a.sort_num();break;

case 7: a.poisk_mest();break;

case 8: a.poisk_num();break;

case 9: a.poisk_kol();break;

case 10: cout<<"Конецпрограммы"; getch(); exit(0);

default:cout<<"Нетпункта"; getch(); break;

}

}

}

voidpunkt:: inputfile()

{ifstream fin;

char file[30];

cout<<"Имяфайла:"; cin>>file;

fin.open(file);

if(fin==NULL) {cout<<"Неоткрывается.\n"; getch(); exit(1);}

n=0;

do{fin>>x[n].nach>>x[n].kon>>x[n].num>>x[n].kol;

n++;

}while(fin.good());

n--;

cout<<"Файлвведен.\n"; getch();

fin.close();

output();

}

voidpunkt:: output()

{ inti;

cout<<"\n-----------------------------------------------------------------------\n";

cout<<"\n| N | НАЧАЛО | КОНЕЦ | НОМЕР МАРШРУТА | КОЛ-ВО

МЕСТ |\n";

cout<<"\n-----------------------------------------------------------------------\n";

for(i=0;i<n;i++)

{cout<<"|"<<setw(3)<<i+1

<<"|"<<setw(17)<<setiosflags(ios::left)<<x[i].nach

<<"|"<<setw(16)<<setiosflags(ios::left)<<x[i].kon

<<"|"<<setw(16)<<setiosflags(ios::left)<<x[i].num

<<"|"<<setw(13)<<setiosflags(ios::left)<<x[i].kol<<"|"<<endl;

}

cout<<"\n----------------------------------------------------------------------\n";

getch();

}

voidpunkt:: add()

{ marsh t;

if(n==N) {cout<<"Массивпереполнен.\n"; getch(); exit(0);}

cout<<"Началомаршрута:"; cin>>t.nach;

cout<<"Конецмаршрута:"; cin>>t.kon;

cout<<"Номермаршрута:"; cin>>t.num;

cout<<"Количество мест:"; cin>>t.kol;

x[n]=t; n++;

cout<<"Запись добавлена.\n";

getch();

output();

}

voidpunkt:: deletemarsh()

{charch;

inti,j;

output();

cout<<"Номер удаленной строки:";

cin>>j;

if(j<1||j>n) {cout<<"Нет такой строки.\n"; getch(); exit(0);}

cout<<setw(20)<<x[j-1].nach<<endl;

cout<<"Удалить?(y/n):"; cin>>ch;

if(ch=='y')

{for(i=j;i<n;i++)

x[i-1]=x[i];

n--;

}

cout<<"Запись удалена.\n"; getch();

}

voidpunkt:: outputfile()

{ofstream out;

char file[30];

inti;

cout<<"Имяфайла:";

cin>>file;

out.open(file);

if (out==NULL) {cout<<"Ненайден"; getch(); exit(1);}

for(i=0;i<n;i++)

{out<<setw(18)<<setiosflags(ios::left)<<x[i].nach

<<setw(17)<<setiosflags(ios::left)<<x[i].kon

<<setw(17)<<setiosflags(ios::left)<<x[i].num

<<setw(13)<<setiosflags(ios::left)<<x[i].kol<<endl;}

out.close();

cout<<"Файлсохранен"; getch();

}

voidpunkt:: sort_num()

{inti,fl,nn;

marsh t;

nn=n;

do {fl=0; nn--;

for(i=0;i<nn;i++)

if(x[i].num>x[i+1].num)

{t=x[i]; x[i]=x[i+1]; x[i+1]=t; fl=1;}

}while(fl==1);

output();

}

voidpunkt:: poisk_mest()

{inti, j, sum = 0,sum1 = 0, sum2 = 0;

charnach[30];

cout<<"Введите начальный пункт:"; cin>>nach;

int f=0;

for(i=0;i<n;i++)

if(strcmp(x[i].nach,nach)==0)

{ cout<<"Количествомест:"<<endl;

cout<<setiosflags(ios::left)<<x[i].nach<<"-"<<x[i].kon<<"

"<<x[i].kol<<endl;

sum1= x[i].kol;

j=i; break;

f++;

}getch();

for(i=j+1;i<n;i++)

if(strcmp(x[i].nach,nach)==0)

{ cout<<setiosflags(ios::left)<<x[i].nach<<"-"<<x[i].kon<<"

"<<x[i].kol<<endl;

f++;

sum2= x[i].kol;

}getch();

sum = sum1 + sum2;

cout<<"Суммарноеколичествомест: "<<sum<<endl;getch();

if(f==0) {cout<<"Нет такой записи\n"; getch();}

}

voidpunkt:: poisk_num()

{inti,k;

charkon[30];

cout<<"Введите первую букву конечного маршрута:"; cin>>kon;

int f=0;

for(i=0;i<n;i++)

if(strncmp(kon,x[i].kon,1)) {k=1;}

else

{ cout<<"Номермаршрута: ";

cout<<setw(8)<<setiosflags(ios::left)<<x[i].num<<endl;

f++;

} getch();

if(f==0) {cout<<"Неттакойзаписи\n"; getch();}

}

voidpunkt:: poisk_kol()

{inti;

intkol;

cout<<"Введите количество мест:"; cin>>kol;

int f=0;

for(i=0;i<n;i++)

if(x[i].kol==kol)

{ cout<<"Маршрут: ";

cout<<setw(8)<<setiosflags(ios::left)<<x[i].nach<<"-"<<x[i].kon<<endl;

f++;

}getch();

if(f==0) {cout<<"Неттакойзаписи\n"; getch();}

}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.