Проектирование классов в языке С++ для обработки файловых данных

Описание разработанных функций конструкторов и деструкторов, вывода данных на экран, добавления и удаления записей, сортировки, сохранения данных в файл. Блок-схемы алгоритмов обработки файловых данных. Листинг программы "Оружейный магазин" на языке С++.

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

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

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

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

Введение

Тема курсовой работы: Проектирование классов в языке С++ для обработки файловых данных.

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

Следующие функции:

1. Загрузка информации из существующей базы данных (вывод из файла).

2. Просмотр (вывод на экран) существующей базы данных.

3. Добавление новой записи в базу данных.

4. Удаление записи из базы данных.

5. Редактирование записи в базе данных.

6. Сортировка записей по числовому полю.

7. Сортировка записей по строковому полю.

8. Структурная сортировка записей.

9. Сохранение результатов обработки (запись в файл).

10. Поиск в базе данных (по одному и двум признаком) с выводом на экран найденных записей или сообщения о неуспешном поиске.

11. Формирование перечня.

12. Просмотр (вывод на экран) перечня.

13. Сортировка перечня.

14. Сохранение перечня.

Работа программы должна осуществляться с использованием меню. В исходной базе данных должно содержаться не менее двадцати записей.

Наименование банка

Адрес банка

Вид банка

Процент

Срок вклада

1. Описание разработанных функций

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

Параметры функции

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

dmas1()

Без параметров

Конструктор по-умолчанию

~dmas1()

Без параметров

Деструктор

dmas1(dmas1 &z)

Объект типа dmas1

Конструктор копирования

void input()

Без параметров

Функция ввода

void output()

Без параметров

Функция вывода на экран

void outputFile()

Без параметров

Функция сохранения в файл

void add()

Без параметров

Функция добавления записи

void del()

Без параметров

Функция удаления записи

void search()

Без параметров

Функция поиска

void search2()

Без параметров

Функция поиска по 2 параметрам

void redak()

Без параметров

Функция редактирования

void sortA()

Без параметров

Функция сортировки

void sortC()

Без параметров

Функция сортировки

void sortS()

Без параметров

Функция сортировки

friend void make(dmas1 &m,dmas2 &k)

Объект типа dmas1, объект типа dmas2

Функция создания перечня

dmas1 operator=(dmas1 &z)

Объект типа dmas1

Перегрузка операции присваивания

dmas2()

Без параметров

Конструктор по-умолчанию

~ dmas2()

Без параметров

Деструктор

dmas2 operator=(dmas2 &z)

Объект типа dmas2()

Конструктор копирования

void output()

Без параметров

Функция вывода на экран

void outputFile()

Без параметров

Функция сохранения в файл

void sortA()

Без параметров

Функция сортировки

void sortC()

Без параметров

Функция сортировки

void outputBin()

Без параметров

Функция сохранения в бинарный файл

void inputBin()

Без параметров

Функция ввода из бинарного файла

dmas2& operator=(dmas2 &z)

Объект типа dmas2()

Перегрузка операции присваивания

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

конструктор деструктор алгоритм программа

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

#include <vcl.h>

#pragma hdrstop

#include <conio.h>

#include <iostream.h>

#include <fstream.h>

#include <string.h>

#include <iomanip.h>

#include <stdlib.h>

const int L=21;

struct bank

{char naim[L],adres[L],vid[L];

int pr,sr;

};

struct perech

{char vid[L];

int ng;

};

class dmas2;

class dmas1

{private:bank *px;

int n;

public:dmas1():px(NULL),n(0){}

dmas1(dmas1 &z);

~dmas1(){if(px!=NULL) delete px;}

dmas1 operator=(dmas1 &z);

void input();

void output();

void add();

void del();

void sortA();

void sortC();

void sortS();

void redak();

void outputFile();

void search();

void search2();

friend void make(dmas1 &m,dmas2 &k);

};

class dmas2

{private:perech *py;

int l;

public:dmas2():py(NULL),l(0){}

dmas2(dmas2 &z);

~dmas2(){if(py!=NULL)delete py;}

friend void make(dmas1 &m,dmas2 &k);

void output();

void outputFile();

void outputBin();

void inputBin();

void sortA();

void sortC();

dmas2 operator=(dmas2 &z);

};

void main()

{int j;

dmas1 a;

dmas2 b,c;

while(1)

{clrscr();

cout<<" Menu:\n"

<<"1.Vvod uz file\n"

<<"2.Vuvod na ekran\n"

<<"3.Alphavutnaya sorturovka\n"

<<"4.Cufrovaya sorturovka\n"

<<"5.Structurnaya sorturovka\n"

<<"6.Dobavlenue zapucu\n"

<<"7.Ydalenue zapucu\n"

<<"8.Redakturovanue\n"

<<"9.Pousk\n"

<<"10.Pousk po 2\n"

<<"11.Save in file\n"

<<"12.Co3danue perechnya\n"

<<"13.Prosmotr perech\n"

<<"14.Save perech in file\n"

<<"15.Alphavutnaya sorturovka perech\n"

<<"16.Cufrovaya sorturovka perech\n"

<<"17.Save in bin file perech\n"

<<"18.Proverka save in ni file perech\n"

<<"19.Exit\n"

<<"\n Vaw vubor - ";cin>>j;

switch(j)

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

case 2:a.output();break;

case 3:a.sortA();a.output();break;

case 4:a.sortC();a.output();break;

case 5:a.sortS();a.output();break;

case 6:a.add();break;

case 7:a.del();break;

case 8:a.redak();break;

case 9:a.search();break;

case 10:a.search2();break;

case 11:a.outputFile() ;break;

case 12:make(a,b);break;

case 13:b.output();break;

case 14:b.outputFile();break;

case 15:b.sortA();b.output();break;

case 16:b.sortC();b.output();break;

case 17:b.outputBin();break;

case 18:c.inputBin();c.output();break;

case 19:cout<<"Thanks!!!\n";getch();return;

}

}

}

dmas1::dmas1(dmas1 &z)

{int i;

n=z.n;

if(n==0)px=NULL;

else {px=new bank[n];

if(px==NULL){cout<<"Haven't dinam memory\n";getch();exit(1);}

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

px[i]=z.px[i];

}

}

dmas2::dmas2(dmas2 &z)

{int i;

l=z.l;

if(l==0)py=NULL;

else {py=new perech[l];

if(py==NULL){cout<<"Haven't dinam memory\n";getch();exit(1);}

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

py[i]=z.py[i];

}

}

dmas2 dmas2::operator=(dmas2 &z)

{int i;

if(l!=z.l) if(py!=NULL) delete[] py;

l=z.l;

if(l==0)py=NULL;

else {py=new perech[l];

if(py==NULL){cout<<"Net dinam memory\n";getch();exit(1);}

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

py[i]=z.py[i];

}

return *this;

}

dmas1 dmas1::operator=(dmas1 &z)

{int i;

if(n!=z.n) if(px!=NULL) delete[] px;

n=z.n;

if(n==0)px=NULL;

else {px=new bank[n];

if(px==NULL){cout<<"Net dinam memory\n";getch();exit(1);}

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

px[i]=z.px[i];

}

return *this;

}

void dmas1::input()

{bank t;

ifstream fin;

char file[L];

int i;

if(px!=NULL)delete[] px;

cout<<"Vvedute um9 file - ";cin>>file;

fin.open(file);

if(fin.fail()){cout<<"Het fila\n";getch();return;}

while(1)

{fin>>t.naim>>t.adres>>t.vid>>t.pr>>t.sr;

if(fin.fail())break;

n++;

}

px=new bank[n];

if(px==NULL){cout<<"Haven't dinam memory\n";n=0;getch();return;}

fin.clear();

fin.seekg(0);

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

fin>>px[i].naim>>px[i].adres>>px[i].vid>>px[i].pr>>px[i].sr;

if(fin.fail()){cout<<"Owubka vvoda\n";getch();n=0;if(px!=NULL)delete[] px;px=NULL;return;}

cout<<"File vveden\n";

getch();

fin.close();

}

void dmas1::add()

{bank *t;

int i;

t=new bank[n+1];

if(t==NULL){cout<<"Haven't dinam memory\n";getch();return;}

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

t[i]=px[i];

if(px!=NULL)delete[] px;

cout<<"Vvedute 3apuc':\n";

cout<<"Naumenovanue : ";cin>>t[n].naim;

cout<<"Adress : ";cin>>t[n].adres;

cout<<"Vid banka : ";cin>>t[n].vid;

cout<<"Procent : ";cin>>t[n].pr;

cout<<"Srok : ";cin>>t[n].sr;

n=n+1;

px=new bank[n];

if(px==NULL){cout<<"Haven't dinam memory\n";getch();return;}

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

px[i]=t[i];

delete[] t;

cout<<"3apuc' dobavlena\n";

getch();

}

void dmas1::del()

{int i,p;

bank *t;

char v;

output();

cout<<"Bblbepute nomer 3apucu- ";cin>>p;

if (p<1 || p>n) {cout<<"takou 3apucu net\n";

getch();

return;

}

cout<<p<<" 3apuc':\n";

cout<<px[p-1].naim<<" "<<px[p-1].adres<<" "<<px[p-1].vid<<" "<<px[p-1].pr<<" "<<px[p-1].sr<<endl;

cout<<"Ydalut'?(y/n): ";cin>>v;

p--;

if(v=='y'||v=='Y'){t=new bank[n];

if(t==NULL){cout<<"Net Dinam memory\n";getch();return;}

t=px;

delete[] px;

px=new bank[n-1];

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

px[i]=t[i];

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

px[i]=t[i+1];

n--;

cout<<"3apuc' ydalena\n";

getch();

delete[] t;

return;}

cout<<"3apuc' don't delete\n";

getch();

}

void dmas1::sortA()

{int i,fl,n1=n;

bank t;

if(n==0){cout<<"Net maccuva ctpyktyp\n";return ;}

do{fl=0;

n1=n1-1;

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

if(strcmp(px[i].naim,px[i+1].naim)>0){t=px[i];

px[i]=px[i+1];

px[i+1]=t;

fl=1;

}

}while(fl==1);

}

void dmas1::sortC()

{int i,fl,n1=n;

bank t;

if(n==0){cout<<"Net maccuva ctpyktyp\n";return ;}

do{fl=0;

n1=n1-1;

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

if(px[i].pr>px[i+1].pr){t=px[i];

px[i]=px[i+1];

px[i+1]=t;

fl=1;

}

}while(fl==1);

}

void dmas1::sortS()

{bank t;

int i,fl,n1=n;

if(n==0){cout<<"Net maccuva ctpyktyp\n";return ;}

do{fl=0;

n1=n1-1;

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

if(strcmp(px[i].vid,px[i+1].vid)>0) {t=px[i];

px[i]=px[i+1];

px[i+1]=t;

fl=1;

}

else if(strcmp(px[i].vid,px[i+1].vid)==0) if(px[i].sr >px[i+1].sr){t=px[i];

px[i]=px[i+1];

px[i+1]=t;

fl=1;}

}while(fl==1);

}

void make(dmas1 &m,dmas2 &k)

{int i,j,fl,l;

perech *y;

if(m.n==0){cout<<"Net maccuva\n";getch();return;}

y=new perech[m.n];

if(y==NULL){cout<<"Net dinam pam9tu\n";getch();return;}

l=0;

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

{fl=0;

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

if(strcmp(m.px[i].vid,y[j].vid )==0){y[j].ng++;

fl=1;

break;

}

if(fl==0){strcpy(y[l].vid,m.px[i].vid);

y[l].ng=1;

l++;

}

}

if(k.py!=NULL)delete[] k.py;

k.py=new perech[l];

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

k.py[j]=y[j];

delete[] y;

k.l=l;

cout<<"Pere4en' co3dan\n";

getch();

}

void dmas2::outputBin()

{ofstream fout;

char file[L];

if(l==0){cout<<"Net perchnya\n";getch();return;}

cout<<"VVedite um9 vuxodnogo binarnogo file: ";cin>>file;

fout.open(file,ios::binary,ios::trunc);

if(fout.fail()){cout<<"File don't open\n";getch();return;}

fout.write((char *)py,l*sizeof(perech));

if(fout.fail()){cout<<"Owubka pru 3apucu\n";fout.close();getch();return;}

cout<<"File napechatan\n";

getch();

}

void dmas2::inputBin()

{ifstream fin;

char file[L];

cout<<"Vvedute um9 vxodnogo binarnogo file : ";cin>>file;

fin.open(file,ios::binary);

if(fin.fail()){cout<<"Owubka vvoda file\n";getch();fin.close();return;}

fin.seekg(0,ios::end);

l=fin.tellg()/sizeof(perech);

if(py!=NULL)delete[] py;

py=new perech[l];

if(py==NULL){cout<<"Don't have dinam memory\n";getch();l=0;fin.close();return;}

fin.read((char*)py,l*sizeof(perech));

if(fin.fail()){cout<<"Owubka pru 4tenuu\n";getch();l=0;delete[] py;fin.close();return;}

cout<<"File vveden\n";

getch();

fin.close();

}

void dmas2::sortA()

{perech t;

int i,fl,l1=l;

if(l==0){cout<<"Net perechn9\n";return;}

do{fl=0;

l1=l1-1;

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

if(strcmp(py[i].vid,py[i+1].vid)>0){t=py[i];

py[i]=py[i+1];

py[i+1]=t;

fl=1;

}

}while(fl==1);

}

void dmas2::sortC()

{perech t;

int i,fl,l1=l;

if(l==0){cout<<"Net perechn9\n";return;}

do{fl=0;

l1=l1-1;

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

if(py[i].ng>py[i+1].ng){t=py[i];

py[i]=py[i+1];

py[i+1]=t;

fl=1;

}

}while(fl==1);

}

void dmas2::output()

{int i;

cout<<left;

cout<<"================================\n";

cout<<"| # | Vid banka | Ng |\n";

cout<<"================================\n";

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

cout<<"|"<<setw(2)<<i+1<<" |"<<setw(18)<<py[i].vid<<"|"<<setw(3)<<py[i].ng<<" |\n";

cout<<"================================\n";

cout<<right;

getch();

}

void dmas2::outputFile()

{int i;

ofstream fout;

char file[L];

cout<<"Vvedute file name : ";cin>>file;

fout.open(file,ios::trunc);

if(fout.fail()){cout<<"File ne nauden\n";getch();return;}

fout<<left;

fout<<"================================\n";

fout<<"| # | Naumenovanue | Ng |\n";

fout<<"================================\n";

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

fout<<"|"<<setw(2)<<i+1<<" |"<<setw(18)<<py[i].vid<<"|"<<setw(3)<<py[i].ng<<" |\n";

fout<<"================================\n";

if(fout.fail()){cout<<"Owubka zapucu\n";getch();fout.close();return;}

cout<<"Perechen napechatan\n";

fout.close();

getch();

}

void dmas1::output()

{int i;

cout<<left;

cout<<"==============================================\n";

cout<<"| # | Naumenovanue | Adres | Vid |Procent|Crok|\n";

cout<<"==============================================\n";

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

cout<<"|"<<setw(2)<<i+1<<" |"<<setw(18)<<px[i].naim<<"|"<<setw(18)<<px[i].adres<<"|"<<setw(7)<<px[i].vid<<"|"<<setw(7)<<px[i].pr<<"|"<<setw(4)<<px[i].sr<<"|\n";

cout<<"==============================================\n";

cout<<right;

getch();

}

void dmas1::outputFile()

{int i;

ofstream fout;

char file[L];

cout<<"Umya file for save : ";cin>>file;

fout.open(file,ios::trunc);

if(fout.fail()){cout<<"File ne nauden\n";getch();return;}

fout<<left;

fout<<"==============================================\n";

fout<<"| # | Naumenovanue | Adres | Vid |Procent|Crok|\n";

fout<<"==============================================\n";

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

fout<<"|"<<setw(2)<<i+1<<" |"<<setw(18)<<px[i].naim<<"|"<<setw(18)<<px[i].adres<<"|"<<setw(7)<<px[i].vid<<"|"<<setw(7)<<px[i].pr<<"|"<<setw(4)<<px[i].sr<<"|\n";

fout<<"==============================================\n";

fout<<right;

if(fout.fail()){cout<<"Owubka zapucu\n";getch();fout.close();return;}

cout<<"Massiv napechatan\n";

fout.close();

getch();

}

void dmas1::redak()

{int p,sw,red;

char v,name[L],v1,v2;

if (n==0) {cout<<"Maccuva net.\n";

getch();

return;

}

do{do{

output();

cout<<"nomer redaturyemou zapucu: "; cin>>p;

if(p<1||p>n){cout<<"Takoy zapucu net\n";getch();return;}

cout<<"\nVvuberute pole dlya redaktupovanuya:\n"

<<"1.Naumenovanue\n";

cout<<"2.Adres\n";

cout<<"3.Vid\n";

cout<<"4.Procent\n";

cout<<"5.Crok\n";

cout<<"\n Vaw vubor - ";cin>>sw;

cout<<endl;

switch(sw)

{case 1:cout<<"Naumenovanue : ";cin>>name;

cout<<"Redakturovat'?(y/n)";cin>>v;

if(v=='Y'||v=='y'){strcpy(px[p].naim,name);cout<<"Zapuc' otredaktupovana\n";}

else cout<<"Zapuc' ne otredak\n";

getch();

break;

case 2:cout<<"Adres : ";cin>>name;

cout<<"Redakturovat'?(y/n)";cin>>v;

if(v=='Y'||v=='y'){strcpy(px[p].adres,name);cout<<"Zapuc' otredaktupovana\n";}

else cout<<"Zapuc' ne otredak\n";

getch();

break;

case 3:cout<<"Vid banka : ";cin>>name;

cout<<"Redakturovat'?(y/n)";cin>>v;

if(v=='Y'||v=='y'){strcmp(px[p].vid,name);cout<<"Zapuc' otredaktupovana\n";}

else cout<<"Zapuc' ne otredak\n";

getch();

break;

case 4:cout<<"Procent : ";cin>>red;

cout<<"Redakturovat'?(y/n)";cin>>v;

if(v=='Y'||v=='y'){px[p].pr=red;cout<<"Zapuc' otredaktupovana\n";}

else cout<<"Zapuc' ne otredak\n";

getch();

break;

case 5:cout<<"Crok : ";cin>>red;

cout<<"Redakturovat'?(y/n)";cin>>v;

if(v=='Y'||v=='y'){px[p].sr=red;cout<<"Zapuc' otredaktupovana\n";}

else cout<<"Zapuc' ne otredak\n";

getch();

break;

default:break; }

cout<<"Redak ewe odno pole?(y/n) - ";cin>>v1;

}while(v1=='Y'||v1=='y');

cout<<"Redak ewe odny zapuc?(y/n) - ";cin>>v2;

}while(v2=='Y'||v2=='y');

}

void dmas1::search2()

{char naim[L];

int i,vid,j;

j=1;

cout<<"\nVvedute naumenovanue for search : ";cin>>naim;

cout<<"\nVvedute procent for search : ";cin>>vid;

cout<<left;

cout<<"=========================================\n";

cout<<"| # | Naumenovanue | Adres | Vid |Procent|Crok|\n";

cout<<"==========================================\n";

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

if(strcmp(px[i].naim,naim)==0&&px[i].pr==vid){ cout<<"|"<<setw(2)<<j<<" |"<<setw(18)<<px[i].naim<<"|"<<setw(18)<<px[i].adres<<"|"<<setw(7)<<px[i].vid<<"|"<<setw(7)<<px[i].pr<<"|"<<setw(4)<<px[i].sr<<"|\n";

j++;}

cout<<"=============================================\n";

cout<<right;

getch();

}

void dmas1::search()

{int i,j,vid;

j=1;

cout<<"\nVvedute crok for search : ";cin>>vid;

cout<<left; cout<<"============================================\n";

cout<<"| # | Naumenovanue | Adres | Vid |Procent|Crok|\n";

cout<<"==============================================\n";

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

if(px[i].sr==vid){ cout<<"|"<<setw(2)<<j<<" |"<<setw(18)<<px[i].naim<<"|"<<setw(18)<<px[i].adres<<"|"<<setw(7)<<px[i].vid<<"|"<<setw(7)<<px[i].pr<<"|"<<setw(4)<<px[i].sr<<"|\n";

j++;} cout<<"=================================================\n";

cout<<right;

getch();

}

4. Тестирование программы

Заключение

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

Разработанная программа «Оружейный магазин» позволяет любому пользователю ввести базу данных оружий. Данная программа может использоваться в оружейных магазинах и в других местах.

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

1. С/С++ Программирование на языке высокого уровня , Павловская Т.А.- СПб.::Питер,2009-461 с. :ил.

2. Лекции по программированию на ЯВУ, Хасанов А.Ю., 2011

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


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

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