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

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 28.08.2012
Размер файла 316,8 K

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

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

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

Введение

Целью работы является разработка программы на языке Си++ для осуществления постановки и выбора алгоритмов решения задач обработки экономической информации, разработка алгоритмов и программ для их решения (требования к программе изложены в аннотации), моя программа должна корректно обрабатывать данные в виде следующей таблицы:

Магазин

Товар

Количество

Стоимость

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

1. Просмотр существующей базы данных

2. Создание новой базы данных

3. Редактирование базы данных (добавление и удаление записей)

4. Поиск в базе данных по определённым полям

5. Сортировка базы данных по определённому полю

Анализ и исследование задачи Для решения задачи из технических средств использовался компьютер на 32-битной аппаратной платформе x86. x86 (англ. Intel 80x86) -- архитектура процессора c одноименным набором команд, впервые реализованная в процессорах компании Intel. Из программных средств для компилирования задачи была использована Dev C++ - свободная интегрированная среда разработки приложений для языков программирования C/C++. В дистрибутив входит компилятор MinGW. Сам Dev-C++ написан на Delphi. Распространяется согласно GPL. Проект поддерживается SourceForge. Основатель проекта Колин Лаплас, компания Bloodshed Software.

Одно время был доступен Linux-порт, однако на настоящее время актуализирована только Windows-версия.

На настоящий момент не разрабатывается, вместо него активно разрабатывается порт интерфейса Dev-C++ на wxWidgets -- wxDev-C++.

Для создания блок-схем , иллюстрирующих программу, на компьютере была использована программа Microsoft Word 2003.

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

Если эта функция выдаёт значение ноль, то пара символов эквивалентна.

В моём случае я сравниваю первый и последующий элементы массива, если последующий больше предыдущего, то мы меняем их местами с помощью функции replace(меняет местами элементы массива при использовании временного), реализованной в моей программе(например, первый элемент-символ Б, второй А; А>Б, теперь первым элементом будет являться А, а вторым Б). Также заглавные буквы-символы имеют больший приоритет, чем строчные.

1. Описание основных переменных и функций

1.1 Описание функций

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

Таблица №1

Название функции

Параметры

Назначение

void main

()

основная функция программы

void create

()

создание файла новой базы данных

void load

(char *base)

загрузка данных из файла в массив структур, base - имя файла базы данных

void save

(char *base)

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

void add

(char *base)

добавление записи в массив структур, base - имя файла базы данных

void view

(char *base)

просмотр содержания массива, base - имя файла базы данных

void delet

(char *base)

удаление записи, base - имя файла базы данных

void sort

(char *base)

работа с базой данных, base - имя файла базы данных

void sort1

()

сортировка по алфавиту

void stoimtovara

(char

*base)

поиск стоимости по товару

void tovarpokolvo

(char

*base)

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

void magazintovar

(char

*base)

поиск магазина по товару

void replace

(int x)

меняет местами значения в массиве, элемент[x] меняется значением с элементом[x+1]

1.2 Описание переменных

В программе используются следующие основные переменные (табл. 2)

Таблица №2

Название переменной

Тип

Назначение

Кол-во символов

ch

char

хранит текущий пункт меню

1

err

int

код ошибки

1

*file

char

имя файла

1

size

int

кол-во записей в БД

1

*f

FILE

указатель на файл

1

*name

char

имя файла

1

list[]

kyrs

массив, в котором хранится БД

300

fin[]

kyrs

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

300

tmp

kyrs

временное хранилище записи БД

1

j

int

счётчик цикла или элемент массива

1

i

int

счётчик цикла или элемент массива

1

vv

int

счётчик цикла

1

2. Блок-схемы

2.1 Общий принцип работы программы

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

2.2 Блок-схемы основных функции программы

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

Рис 2. - Блок-схема главной функции - main():

Рис 3. - Функция create(), создает файл базы данных

Рис 4. - Функция open(), открывает файл базы данных

Рис 5. - Функция load(), загружает данные из файла в базу данных

Рис 6. - Функция save(), сохраняет изменения в файле базы данных

Рис 7. - Функция add(), добавляет запись в базу данных

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

Рис 8. - Функции view(), осуществляет просмотр базы данных

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

Рис 10. - Функция delet(), удаляет запись из базы данных

ch='1'

ch='2'

ch='3'

ch='4'

ch='5'

Рис 12. - Функция sort(), работа с базой данных

Нет

Да

нет

Рис 13. - Функция sort1() осуществляет сортировку базы данных по алфавиту

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

Рис. 14. - Функция stoimtovara(char*base) осуществляет поиск стоимости товаров

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

Рис 15. - Функция magazintovar(char*base) осуществляет поиск товаров по первой букве магазина, в котором они есть

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

Рис 16. - Функция tovarpokolvo(char*base) осуществляет поиск названия товара по его количеству

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

Рис 17. - Функция replace(int x) меняет местами значения элементов массива

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

//9.cpp

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <iostream>

#include <fstream>

#include <iomanip>

#include <io.h>

#include <dos.h>

#include <windows.h>

#include <function.cpp>

using namespace std;

char ch, *file;

int err=0, size=0;

extern char *file;

void create();

int main()

{

system("cls");

cout<<"Viberite deistvie:"<<endl;

cout<<"1. Otkrit' bazu"<<endl;

cout<<"2. Sozdat' bazu"<<endl;

cout<<"3. Vihod"<<endl;

do ch=getch();

while((ch!='1')&&(ch!='2')&&(ch!='3'));

if (ch=='3') exit(0);

if (ch=='2') create();

if (ch=='1') {

while (err==0){

cout<<"Please enter name file: "<<endl;

char *name;

FILE *f;

cin>>name;

if ((f=fopen(name,"r"))==NULL){

cout<<"File not found!"<<endl;

}

else{

err=1;

file=new char(strlen(name));

strcpy(file,name);

fclose(f);

open(file);

}

}

}

delete file;

}

void create(){

cout<<"Vvedite imya novogo faila: ";

char *name;

cin>>name;

cout<<"\r\nSozdanie...\r\n";

FILE *f;

if ((f=fopen(name,"w"))==NULL){

cout<<"Oshibka!!!";

getch();

exit(1);

}

file=new char(strlen(name));

strcpy(file,name);

fclose(f);

open(file);

}

//function.cpp

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <iostream>

#include <fstream>

#include <iomanip>

#include <io.h>

#include <dos.h>

#include <windows.h>

using namespace std;

extern char ch;

extern int size;

int fs=0;

struct PRICE {

char magazin[30],tovar[30];

int kolvo,cena,id;

} list[300],tmp, fin[300];

void load(char *base);

void save(char *base);

void add(char *base);

void view(char *base);

void delet(char *base);

void sort(char *base);

void sort1();

void stoimtovara(char *base);

void tovarpokolvo(char *base);

void magazintovar(char *base);

void replace(int);

void open(char *base){

load(base);

cout<<"Vibirite deistvie:"<<endl;

cout<<"1. Prosmotr"<<endl;

cout<<"2. Dobavlenie "<<endl;

cout<<"3. Udalenie zapisi"<<endl;

cout<<"4. Poisk i sortirovka"<<endl;

cout<<"5. Vihod"<<endl;

do ch=getch();

while((ch!='1')&&(ch!='2')&&(ch!='3')&&(ch!='4')&&(ch!='5'));

switch (ch){

case '1': view(base);break;

case '2': add(base);break;

case '3': delet(base);break;

case '4': sort(base);break;

case '5': exit(0); break;

default: exit(0);

}}

void sort(char *base){

system("cls");

cout<<"Please select field:\r\n1.Po alfavity 2.Stoimostb tovara 3.Tovar po kolichestvy 4.Tovari po magaziny \n5.Back to menu"<<endl;

do ch=getch();

while((ch!='1')&&(ch!='2')&&(ch!='3')&&(ch!='4')&&(ch!='5'));

switch (ch){

case '1': sort1();break;

case '2': stoimtovara(base);break;

case '3': tovarpokolvo(base);break;

case '4': magazintovar(base);break;

case '5': open(base);break;

default: exit(0);}

save(base);

cout<<"\r\nSorting...OK! View base";

getch();

open(base);}

void sort1(){

int j;

for (j=0; j<size; j++)

if (strcmp(list[j].tovar,list[j+1].tovar)>0) replace(j);

}

void stoimtovara(char*base){

system("cls");

cout<<"Please enter find record:\r\n";

cout<<"Vvedite tovar: "<<endl; cin>>tmp.tovar;

int j=0,i=0,vv=0;

for (;j<=size;j++)

if (strcmp(tmp.tovar,list[j].tovar)==0){

fin[i].cena=list[j].cena;

fin[i].id=list[j].id;i++; vv=1;

}

if (vv==0)cout<<"Takogo tovara net";

fs=--i;

strcpy(tmp.tovar, "");

tmp.cena=0;

getch();

int z,l,p=0;

cout<<" ID ";

cout<<" Stoimostb tovara";

cout<<endl;

for(z=0; z<=fs; z++){

cout<<fin[z].id<<" ";

cout<<fin[z].cena<<" ";

cout<<endl;

p++;

if (p==10){

p=0;getch();}}

getch();open(base);}

void magazintovar(char *base)

{ system("cls");

cout<<"Please enter find record:\r\n";

cout<<"Vvedite pervyu bykvy nazvania magazina:";

char t;

cin >> t;

int z=0;int p=0;

int j=0;

for ( ;j<=size;j++)

{if (list[j].magazin[0]==t)

{z++;

cout << list[j].tovar<<"\n";};

}

if (z==0){

cout<<"net sovpadenii";cout<<"\n";

cout<<endl;

}

getch();

open(base);

}

void tovarpokolvo(char *base){

system("cls");

cout<<"Please enter find record:\r\n";

cout<<"Vvedite kolichestvo tovara: "<<endl; cin>>tmp.kolvo;

int j=0,i=0,vv=0;

for (;j<=size;j++)

if (tmp.kolvo==list[j].kolvo){

strcpy(fin[i].tovar,list[j].tovar);

fin[i].id=list[j].id;i++; vv=1;

}

if (vv==0)cout<<"Takogo kolichestva tovara net";

fs=--i;

strcpy(tmp.tovar, "");

tmp.kolvo=0;

getch();

int z,l,p=0;

cout<<" ID ";

cout<<" Tovar opredelennogo kolichestva";

cout<<endl;

for(z=0; z<=fs; z++){

cout<<fin[z].id<<" ";

cout<<fin[z].tovar<<" ";

cout<<endl;

p++;

if (p==10){

p=0;getch();}}

getch();open(base);}

void replace(int x){

strcpy(tmp.magazin,list[x].magazin);

strcpy(tmp.tovar,list[x].tovar);

tmp.kolvo=list[x].kolvo;

tmp.cena=list[x].cena;//1

strcpy(list[x].magazin,list[x+1].magazin);

strcpy(list[x].tovar,list[x+1].tovar);

list[x].kolvo=list[x+1].kolvo;

list[x].cena=list[x+1].cena;//2

strcpy(list[x+1].magazin,tmp.magazin);

strcpy(list[x+1].tovar,tmp.tovar);

list[x+1].kolvo=tmp.kolvo;

list[x+1].cena=tmp.cena;//3

strcpy(tmp.magazin, "");

strcpy(tmp.tovar, "");

tmp.kolvo=0;

tmp.cena=0;

}

void delet (char *base){

system("cls");

int i,j;

cout<<"ID: ";

cin>>i;

--i;

if (i==size) --size;

else{

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

strcpy(list[j].magazin,list[j+1].magazin);

strcpy(list[j].tovar,list[j+1].tovar);

list[j].kolvo=list[j+1].kolvo;

list[j].cena=list[j+1].cena;

}

--size;}

cout<<"\r\nDelete record"<<i+1<<"OK!\r\n";

getch();

save(base);

open(base);}

void view(char *base){

int z,l,p=0;

system("cls");

cout<<" ID: ";

cout<<" Magazin: ";

cout<<" Tovar: ";

cout<<" Kolichestvo: ";

cout<<" Cena: ";

cout<<endl;

for(z=0; z<=size; z++){

cout<<list[z].id<<" ";

cout<<list[z].magazin<<" ";

cout<<list[z].tovar<<" ";

cout<<list[z].kolvo<<" ";

cout<<list[z].cena<<" ";

cout<<endl;

p++;

if (p==10){

p=0;getch();}}

getch();

open(base);

}

void add(char *base){

system("cls");

FILE *f=fopen(base,"a");

cout<<"Magazin: "; cin>>tmp.magazin;

cout<<"Tovar: "; cin>>tmp.tovar;

cout<<"Kolichestvo: "; cin>>tmp.kolvo;

cout<<"Cena: "; cin>>tmp.cena;

char *css;

int t=0;

for (;t<=strlen(tmp.magazin);t++){

css=strchr (tmp.magazin,' '); if (css) *(css)='_';}

size++;

strcpy(list[size].magazin,tmp.magazin);

strcpy(list[size].tovar,tmp.tovar);

list[size].kolvo=tmp.kolvo;

list[size].cena=tmp.cena;

strcpy(tmp.magazin, "");

strcpy(tmp.tovar, "");

tmp.kolvo=0;

tmp.cena=0;

fclose(f);

save(base);

open(base);

}

void save(char *base){

int j=0;

FILE *f=fopen(base,"w");

fprintf(f,"%s %s %u %u", list[j].magazin, list[j].tovar, list[j].kolvo, list[j].cena);

for (j=1;j<=size;j++)

fprintf(f,"\n%s %s %u %u", list[j].magazin, list[j].tovar, list[j].kolvo, list[j].cena);

fclose(f);

}

void load(char *base){

int j=0;

FILE *f=fopen(base,"r");

while(!feof(f)){

fscanf(f,"%s %s %u %u", &tmp.magazin , &tmp.tovar, &tmp.kolvo, &tmp.cena);

if (strcmp(tmp.magazin,"")!=0){

strcpy(list[j].magazin,tmp.magazin);

strcpy(list[j].tovar,tmp.tovar);

list[j].kolvo=tmp.kolvo;

list[j].cena=tmp.cena;

list[j].id=j+1;

j++;}

strcpy(tmp.magazin, "");

strcpy(tmp.tovar, "");

tmp.kolvo=0;

tmp.cena=0;}

size=--j;

fclose(f);}

автоматизация обработка экономический информация

Заключение

В ходе выполнения курсовой работы разработана программа на языке Си++ для обработки данных типа структура. Обработка данных включает:

- создания новой БД

- просмотр существующей БД

- редактирование БД

- дополнение БД

- удаление записей из БД

- сортировка БД по определённому полю

- поиск записи по определённым критериям

При разработке программе использовались функции, массивы, циклы, указатели.

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

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


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

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