программирования и программирования «сверху-вниз»




 

Создание проекта консольного приложения

 

Выполнить этапы создания проекта и ввести имя проекта TPlab4_1.

Создается исходный файл TPlab4_1.cpp, который будет содержать всего одну пустую функцию main():

int t_main(int args, _TCHAR* argv[])

{return 0;}.

 

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

 

Проект должен содержать файл заголовков TPlab4_1.h и файл кодов TPlab4_1.cpp.

Создать файл TPlab4_1.h, ввести текст файла и сохранить его:

//файл заголовков TPlab4_1.h

#ifndef TPlab4_1_h

#define TPlab4_1_h

#include <iostream>

using std::cout;

using std::cin;

using std::cerr;

using std::endl;

using std::ios;

#include <fstream>

using std::ofstream;

using std::ostream;

using std::fstream;

using std::istream;

#include <iomanip>

using std::setiosflags;

using std::resetiosflags;

using std::setw;

using std::setprecision;

#include <cstdlib>

Struct tip_client

{

int nomer;

char fam[15];

char im[10];

float balance;

};

int menu();

void textfile(fstream &);

void dobzap(fstream &);

void zamzap(fstream &);

void udzap(fstream &);

void vyvod(ostream &, const tip_client &);

int vvod_nomer(const char * const);

enum option{TEXTFILE=1, DOBAVLENIE, ZAMENA,

UDALENIE, END};

#endif

 

Добавить в файл кодов Tplab4_1.cpp подключение файла заголовков и тексты функций():

//файл кодов TPlab4_1.cpp

#include "stdafx.h"

#include "TPlab4_1.h"

int _tmain(int argc, _TCHAR* argv[])

{

fstream inoutf("client.dat", ios::in|ios::out);

if(!inoutf)

{

cerr<<"File client.dat ne otkr."<<endl;

ofstream outf(“client.dat”, ios::out);

tip_client client0={0,””,””,0.0};

for(int i=0;i<100;i++)

outf.write((char *)&client0, sizeof(tip_client));

outf.close();

}

int vybor;

while((vybor=menu())!=END)

{

Switch(vybor)

{

case TEXTFILE:

textfile(inoutf);

break;

case DOBAVLENIE:

dobzap(inoutf);

break;

case ZAMENA:

zamzap(inoutf);

break;

case UDALENIE:

udzap(inoutf);

break;

case END: break;

default:

cerr<<"Neprav. vybor\n";

break;

}

inoutf.clear();

}

return 0;

}

Int menu()

{

cout<<"\nMENU\n"

<<"1-Sozdanie textfile-vyvod\n"

<<"2-Dobavlenie zap\n"

<<"3-Zamena zap\n"

<<"4-Udalenie zap\n"

<<"5-Konec\n\n"

<<"\nVash vybor: ";

int menuvybor;

cin>>menuvybor;

return menuvybor;

}

void textfile(fstream &readf)

{

ofstream outprintf("print.txt", ios::out);

if(!outprintf)

{

cerr<<"File ne otkr."<<endl;

exit(1);

}

cout<<setiosflags(ios::left)<<setw(10)

<<"Nomer"<<setw(16)<<"Familija"<<setw(11)

<<"Imja"<<resetiosflags(ios::left)

<<setw(10)<<"Balance"<<endl;

outprintf<<setiosflags(ios::left)<<setw(10)

<<"Nomer"<<setw(16)<<"Familija"<<setw(11)

<<"Imja"<<resetiosflags(ios::left)

<<setw(10)<<"Balance"<<endl;

readf.seekg(0, ios::beg);

tip_client client;

readf.read((char *)&client, sizeof(tip_client));

while(!readf.eof())

{

if(client.nomer!=0)

{

vyvod(cout, client);

vyvod(outprintf, client);

}

readf.read((char *)&client, sizeof(tip_client));

}

}

void dobzap(fstream &dobf)

{

int schet=vvod_nomer("Vvedite novyj nomer scheta: ");

dobf.seekg((schet-1)*sizeof(tip_client), ios::beg);

tip_client client;

dobf.read((char *) &client, sizeof(tip_client));

if(client.nomer==0)

{

cout<<"Vvedite familiju, imja, balance\n: ";

cin>>client.fam>>client.im>>client.balance;

client.nomer=schet;

dobf.seekp((schet-1)*sizeof(tip_client), ios::beg);

dobf.write((char *) &client, sizeof(tip_client));

}

Else

cerr<<"Schet № "<<schet<<" imeetcja"<<endl;

}

void zamzap(fstream &zamf)

{

int schet=vvod_nomer("Vvedite nomer scheta zamenj: ");

zamf.seekg((schet-1)*sizeof(tip_client), ios::beg);

tip_client client;

zamf.read((char *) &client, sizeof(tip_client));

if(client.nomer!=0)

{

vyvod(cout, client);

cout<<"Vvedite rashod (+) ili doplatu (-): ";

float rasdop;

cin>>rasdop;

client.balance+=rasdop;

vyvod(cout, client);

zamf.seekp((schet-1)*sizeof(tip_client), ios::beg);

zamf.write((char *) &client, sizeof(tip_client));

}

Else

cerr<<"Schet № "<<schet<<" ne imeet inf."<<endl;

}

void udzap(fstream &udf)

{

int schet=vvod_nomer("Vvedite nomer scheta udalenija: ");

udf.seekg((schet-1)*sizeof(tip_client), ios::beg);

tip_client client;

udf.read((char *) &client, sizeof(tip_client));

if(client.nomer!=0)

{

tip_client client0={0, "", "", 0.0};

udf.seekp((schet-1)*sizeof(tip_client), ios::beg);

udf.write((char *) &client0, sizeof(tip_client));

cout<<"Schet № "<<schet<<" udalen"<<endl;

}

Else

cerr<<"Schet № "<<schet<<" pustoj"<<endl;

}

void vyvod(ostream &output, const tip_client &cl)

{

output<<setiosflags(ios::left)<<setw(10)

<<cl.nomer<<setw(16)<<cl.fam<<setw(11)

<<cl.im<<setw(10)<<setprecision(2)<<resetiosflags(ios::left)

<<setiosflags(ios::fixed | ios::showpoint)<<cl.balance<<endl;

}

int vvod_nomer(const char * const nom)

{

int schet;

do

{

cout<<nom<<" (1 - 100):";

cin>>schet;

}

while(schet<1 || schet>100);

return schet;

}

Контрольные вопросы

 

1. Перечислите методы процедурного программирования.

2. Какова модель построения программы процедурным методом?

3. Перечислите управляющие структуры для конструирования программ.

4. Объясните правила конструирования структурированных программ.

5. Что означает правило пакетирования?

6. Что означает правило вложения?

 

Тема 14. Введение в технологию объектно-



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: