Файл: 2. Постановка задачи 1 Условия задачи.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 03.02.2024

Просмотров: 15

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Таблица 3. Используемые подпрограммы

Название

Назначение

sozd_f(filename)

Создать бинарный файл

Add(filename)

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

Del (filename)

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

Print (filename)

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

Sort (filename)

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

PrintAsum (filename)

Информации о средней сумме

SearchPlat (filename)

Поиск по счёту плательщика

SearchSum (filename)

Поиск по сумме платежа


6. Результаты тестовых расчетов и их анализ

Для тестирования алгоритма сортировки введём следующие данные:



Рис. 10. Ввод данных

После сортировки получаем такой результат:



Рис. 11. Вывод данных на экран после сортироки

Все записи были отсортированы по счетам плательщиков, значит программа работает верно.

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

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

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

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

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

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

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

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

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

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



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

#include

#include

#pragma hdrstop
#include

#include

#include

#include
using namespace std;

//---------------------------------------------------------------------------
#pragma argsused
void Print(char* filename);

void printru(char* s) {

char *s1 = new char[81];

CharToOem(s,s1);

//printf(s1);

cout<
}
struct ODER

{

char bank[15];

char plat[10];

char polu[10];

int sum;

};
void print_data(ODER mm){

cout<<"|"<
cout<<"|"<
cout<<"|"<
cout<<"|"<
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
cout<
print_data(mm[i]);

}

cout<<"-------------------------------------------------------\n";
}
void Del(char* filename){

ODER *mm;

int n = load_from_file(filename, mm);

Print(filename);

int i,j;

char ch;

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--;

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
for (int j=i+1; 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
if( strcmp(mm[i].bank, bank) == 0 ){

count++; sum += mm[i].sum; cout<
}

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

else { printru("Средняя сумма = "); cout<<1.0*sum/count<
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
if( strcmp(mm[i].plat, plat) == 0 ){

sum += mm[i].sum; cout<
}

printru("Сумма = "); cout<
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
if( mm[i].sum == sum ){

count++; cout<
}

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-----------------"<
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;

}

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



1>