ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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 и ввести адрес.
Заключение.
Результатом выполненной курсовой работы стала программа для работы с записями о банковский одерах. Программа содержит меню, которое осуществляет удобную навигацию по программе. Позволяет вводить данные с клавиатуры, сохранение данных происходит в бинарный файл. Есть возможность удаления и сортировки записей, а так же поиска.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
-
Т.А. Павловская. Ю.А. Щупак С/C++. Программирование на языке высокого уровня. – СПб.: Питер,2007. – 461 с.: ил. -
Т.А. Павловская, Ю.А. Щупак. С/C++. Структурное программирование: Практикум. – СПб.: Питер, 2007. – 239 с.: ил. -
Прата. Объектно-ориентированное программирование в C++. 2 изд. – ЭКСМО, 2007. - 336 с.: ил. -
Б. Страуструп. Язык программирования С++, 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;
}
//---------------------------------------------------------------------------