Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая.doc
Скачиваний:
6
Добавлен:
18.03.2015
Размер:
455.17 Кб
Скачать

8.3 Описание возможных результатов выполнения программы

Главное меню программы изображено на рис. 1

Рис. 1

Для создания файла с записями необходимо выбрать действие 9. Для сортировки записей необходимо выбрать действие 4.

Рис. 2

Для добавление записи необходимо выбрать действие 1 и ввести данные. (рис. 2)

Рис. 3

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

Рис. 4

Для получения информации о средней сумме нужно выбрать действие 5 и ввести банк.

Рис. 5

Для поиска записей по счёту плательщика необходимо выбрать действие 6 и ввести счёт. (рис. 5)

Рис. 6

Для поиска по начальному и конечному пункту необходимо выбрать действие 7 и ввести адрес.

Заключение.

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

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

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

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

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

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

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

//---------------------------------------------------------------------------

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

#pragma hdrstop

#include <fstream.h>

#include <string>

#include <vector>

#include <iomanip>

using namespace std;

//---------------------------------------------------------------------------

#pragma argsused

void Print(char* filename);

void printru(char* s) {

char *s1 = new char[81];

CharToOem(s,s1);

//printf(s1);

cout<<s1;

}

struct ODER

{

char bank[15];

char plat[10];

char polu[10];

int sum;

};

void print_data(ODER mm){

cout<<"|"<<setw(15)<<mm.bank;

cout<<"|"<<setw(10)<<mm.plat;

cout<<"|"<<setw(10)<<mm.polu;

cout<<"|"<<setw(10)<<mm.sum<<"|";

cout<<"\n";

}

int load_from_file(char* filename, ODER* &mm){

FILE *m_file;

m_file = fopen(filename, "rb");

fseek(m_file, 0, SEEK_END);

int n = ftell(m_file) / sizeof(ODER);

mm = new ODER[n];

fseek(m_file, 0, SEEK_SET);

fread(mm, sizeof(ODER), n, m_file);

fclose(m_file);

return n;

}

void print_head(){

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

printru(" | ODER |\n");

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

printru(" | Банк |Счёт плат.|Счёт пол. | Сумма |\n");

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

}

void sozd_f (char* filename) {

FILE *m_file;

m_file = fopen(filename, "wb+");

if(m_file==0 ) {

printru("Создать файл не удалось!\n");

getch();

return;

}

fclose(m_file);

}

void Add(char* filename){

FILE *m_file;

m_file = fopen(filename, "ab");

ODER x;

if ( m_file==0 ) {

printru("Открыть файл н удалось!\n");

getch();

return;

}

char y_n;

do{

// Ввод данных

printru("Введите банк\n");

fflush(stdin);

cin.getline(x.bank, 15);

printru("Введите расчетный счет плательщика\n");

fflush(stdin);

cin.getline(x.plat, 10);

printru("Введите расчетный счет получателя\n");

fflush(stdin);

cin.getline(x.polu, 10);

printru("Введите сумму, руб.\n");

cin>>x.sum;

fwrite(&x, sizeof(ODER),1,m_file);

printru("Продолжить(y/n)?\n");

cin>>y_n;

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

fclose(m_file);

}

void Print(char* filename){

ODER *mm;

int n = load_from_file(filename, mm);

print_head();

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

cout<<setw(3)<<i+1;

print_data(mm[i]);

}

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

}

void Del(char* filename){

ODER *mm;

int n = load_from_file(filename, mm);

Print(filename);

int i,j;

charch;

printru("Введите номер строки: ");

cin>>j;

if(j<1 ||j>n){

printru("Нет такой строки!\n");

getch();

return;

}

print_data(mm[j-1]);

printru("Удалить(y/n):");

cin>>ch;

if (ch=='y'){

for(i=j;i<n;i++) mm[i-1]=mm[i];

n--;

FILE *m_file = fopen(filename, "wb");

fwrite(mm, sizeof(ODER), n, m_file);

fclose(m_file);

printru("Строка удалена.\n"); getch();

}

}

void Sort(char* filename){

ODER *mm;

int n = load_from_file(filename, mm);

for (int i=0; i<n-1; i++) {

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

if( strcmp(mm[i].plat, mm[j].plat) > 0 ){

ODER temp;

temp = mm[j];

mm[j] = mm[i];

mm[i] = temp;

}

}

FILE *m_file = fopen(filename, "wb");

fwrite(mm, sizeof(ODER), n, m_file);

fclose(m_file);

}

void PrintAsum(char* filename){

ODER *mm;

int n = load_from_file(filename, mm);

printru("Введите банк\n");

char bank[15];

fflush(stdin);

cin.getline(bank, 15);

int count = 0;

int sum = 0;

print_head();

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

if( strcmp(mm[i].bank, bank) == 0 ){

count++; sum += mm[i].sum; cout<<setw(3)<<count; print_data(mm[i]);

}

if (count==0) printru("Такого маршрута нет!\n");

else { printru("Средняя сумма = "); cout<<1.0*sum/count<<endl; }

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

}

void SearchPlat(char* filename){

ODER *mm;

int n = load_from_file(filename, mm);

printru("Введите расчётный счёт плательщика\n");

char plat[10];

fflush(stdin);

cin.getline(plat, 10);

int sum = 0;

print_head();

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

if( strcmp(mm[i].plat, plat) == 0 ){

sum += mm[i].sum; cout<<setw(3)<<" "; print_data(mm[i]);

}

printru("Сумма = "); cout<<sum<<endl;

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

}

void SearchSum(char* filename){

ODER *mm;

int n = load_from_file(filename, mm);

printru("Введите перечисляемую сумму\n");

int sum;

cin>>sum;

int count=0;

print_head();

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

if( mm[i].sum == sum ){

count++; cout<<setw(3)<<count; print_data(mm[i]);

}

if (count==0) printru("Таких одеров нет!\n");

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

}

int main(int argc, char* argv[])

{

char ch = '-';

FILE *m_file;

char filename[] = "ODER.bin";

while (ch !='0'){

cout<<"-----------------MENU-----------------"<<endl;

printru("1 - Добавить ODER\n");

printru("2 - Печать данных на экране\n");

printru("3 - Удалить запись\n");

printru("4 - Сортировать\n");

printru("5 - Информация о средней сумме\n");

printru("6 - Поиск суммы по счёту плательщика\n");

printru("7 - Поиск по перечисляемой сумме\n");

printru("0 - Выход\n");

printru("9 - Создать файл\n");

printru("Комманда: ");

cin>>ch;

switch (ch){

case '1': Add(filename);break;

case '2': Print(filename);break;

case '3': Del(filename);break;

case '4': Sort(filename);break;

case '5': PrintAsum(filename);break;

case '6': SearchPlat(filename);break;

case '7': SearchSum(filename);break;

case '9': sozd_f(filename);break;

default : break;

}

}

return 0;

}

//---------------------------------------------------------------------------