Разработка программы на языке С++ с использованием класса статических массивов структур и базы данных "ODER"

Характеристика нисходящего проектирования, модульности и структурного программирования. Анализ схемы функций создания, удаления и сортировки записей. Особенность тестирования программы методом "черного ящика". Исследование построения экранных форм.

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

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

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

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

Содержание

Введение

  • 1. Постановка задачи
  • 1.1 Условия задачи
  • 1.2 Конечные цели решения задачи
  • 2. Формы выдачи результатов
  • 2.1 Описание используемых данных
  • 3. Анализ и исследование задачи
  • 3.1 Типы решения задачи
  • 3.2 Технические и программные средства для ее решения
  • 3.3 Математическая модель
  • 4. Алгоритм решения задачи
  • 4.1 Метод проектирования алгоритма
  • 4.2 Блок-схема алгоритма
  • 4.3 Метод тестирования
  • 4.4 Тесты для проверки работоспособности алгоритма
  • 5. Создание программы
  • 5.1 Дерево функций программы
  • 5.2 Последовательность создания программы
  • 5.3 Сценарий диалога программы
  • 5.4 Описание используемых подпрограмм
  • 6. Результаты тестовых расчетов и их анализ
  • 7. Системные требования
  • 8. Инструкция пользователя
  • 8.1 Вызов программы
  • 8.2 Экранные формы
  • 8.3 Описание возможных результатов выполнения программы

Заключение

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

Приложение

Введение

  • Данная курсовая работа посвящена разработке и реализации программы на языке С++ с использованием класса статических массивов структур и базы данных «ODER». В этой курсовой для обработки данных использовались многочисленные операции, такие как сортировки, загрузка и сохранения результатов обработки в бинарный файл, поиск по вводимым данным, а также добавление и удаление записей.
  • Кроме того, для упрощения понимания кода программы были изображены блок-схемы алгоритмов всех используемых в курсовой функций, а также представлено тестирование программы, подтверждающее корректную и достоверную работу всех функций.
  • Реализация данной задачи представляет собой программу, написанную в среде C++.
  • 1. Постановка задачи
  • 1.1 Условия задачи
  • 10) Описать структуру с именем ODER, содержащую следующие поля:

?банк;

?расчетный счет плательщика;

?расчетный счет получателя;

?перечисляемая сумма в руб.

Написать программу, выполняющую следующие действия:

?Ввод с клавиатуры данных в файл, состоящий из восьми элементов типа ODER;

?Загрузка и печать на экране данных из файла

?Добавление записи

?Удаление записи

?Вывод на экран данных и результатов их обработки:

-упорядоченных записей в алфавитном порядке по расчетным счетам плательщиков;

-информацию о средней сумме, принятой на расчетные счета получателей банка, введенного с клавиатуры; если такого банка нет, выдать на дисплей соответствующее сообщение.

-поиск суммы, снятой с расчетного счета плательщика, введенного с клавиатуры.

-поиск информации по перечисляемым суммам.

  • 1.2 Конечные цели решения задачи
  • · разработка алгоритмов и программ для решения прикладных задач, осуществление постановки и выбор алгоритмов решения экономико-управленческих задач, в том числе с применением математических методов;
  • · применение на практике основных алгоритмических структур, графических средств языка;
  • · использованию алгоритмических языков высокого уровня, средств автоматизации программирования.
  • 2. Формы выдачи результатов
  • Таблица 1. Формы выдачи результатов - таблица:
  • Название банка

    Счёт плательщика

    Счёт получателя

    Сумма

    Для выбора действия используется меню, содержащее следующие пункты:

    • · Добавить запись
    • · Вывести данные о всех людях
    • · Удалить запись
    • · Отсортировать записи
    • · Информация о средней сумме
    • · Поиск по счёту плательщика
    • · Поиск по сумме
    • Так же результаты работы программы записываются в бинарный файл.
    • 2.1 Описание используемых данных
    • Данные вводятся пользователем с клавиатуры. Данные о каждом человеке должены содержать следующие поля:
    • Поле «Название банка» - название банка.
    • Поле «Счёт плательщика» - расчётный счёт плательщика.
    • Поле «Счёт получателя» - расчётный счёт получателя.
    • Поле «Сумма» - перечисляемая сумма.
    • 3. Анализ и исследование задачи
    • 3.1 Типы решения задачи

    Решение задачи определяется выбором способа ее решения. Для реализации задачи мы построили модель проектирования структуры программы в виде блок - схем и последовательных шагов к конечному результату.

    К каждой подпрограмме составлены блок - схемы, которые служат алгоритмом к написанию кода на языке программирования С++. Также построена модель «Дерева функций» - служит «меню» в структуре построения.

    Итогом исследования являются конечные результаты работы программы (ввод, вывод, сортировка, поиск по определенным полям в таблице структуры)

    • 3.2 Технические и программные средства для ее решения
    • Для реализации данной курсовой работы используются:
    • 1. Процессор AMD II Mobile P560(2,5 ГГц), 4096МБ SDRAM, OCWin 7
    • 2. Cреда программирования Borland C++.
    • 3.3 Математическая модель

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

    При пузырьковой сортировке упорядоченный список В' получается из В систематическим обменом пары рядом стоящих элементов, не отвечающих требуемому порядку, пока такие пары существуют.

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

    4. Алгоритм решения задачи

    4.1 Метод проектирования алгоритма

    Методы проектирования алгоритмов включают: нисходящее проектирование, модульность, структурное программирование.

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

    При работе над модулем можно применить принцип структурного программирования. Его цель - повышение читабельности и ясности алгоритма (и программы), более высокой производительности программистов и упрощение отладки. В соответствии с этим принципом для построения любого алгоритма (программы) требуются три типовых блока:

    1. Функциональный. Используется для представления линейных алгоритмов. Описывается языком графических символов следующим образом:

    2. Циклический. Используется для представления циклических алгоритмов. Описывается языком графических символов одним из двух способов:

    3. Конструкция принятия двоичного решения. Применяется для представления разветвляющихся алгоритмов. Описывается языком графических символов следующим образом:

    4.2 Блок-схема алгоритма

    Рис. 1. Cхема основной функции программы

    Рис. 2. Схема функции вывода информации на экран

    Рис. 3. Схема функции вывода информации о средней сумме

    Рис. 4. Схема функции поиска записей по счёту плательщика

    Рис. 5. Схема функции поиска записей по сумме

    Рис. 6. Схема функции создания файла

    Рис. 7. Схема функций создания, удаления и сортировки записей

    4.3 Метод тестирования

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

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

    При тестировании программы как белый ящик происходит проверка логики программы. Полным тестированием в этом случае будет такое, которое приведет к перебору всех возможных путей. Даже для средних по сложности программ числом таких путей может достигать десятков тысяч.

    Поскольку исчерпывающее структурное тестирование невозможно, необходимо выбрать такие критерии его полноты, которые допускали бы их простую проверку и облегчали бы целенаправленный подбор тестов. Наиболее слабым из критериев полноты структурного тестирования является требование хотя бы однократного выполнения каждого оператора программы. Более сильным критерием является критерий: каждая ветвь алгоритма (каждый переход) должна быть пройдена (выполнена) хотя бы один раз. сортировка запись тестирование программа

    4.4 Тесты для проверки работоспособности алгоритма

    Для исследования работоспособности данной программы и получения информации о предоставленной работе необходимо проверить следующее:

    1. Главное меню (вывод всех пунктов меню).

    2. Создание бинарного файла.

    3. Добавление данных (добавление данных в созданный файл).

    4. Удаление данных (удаление строки из заданной таблицы).

    5. Упорядочивание записей (сортировка по заданному значению).

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

    7. Поиск одеров по счёту плательщика.

    8. Поиск одеров по сумме платежа.

    5. Создание программы

    5.1 Дерево функций программы

    Рис. 8. Древо функций программы

    5.2 Последовательность создания программы

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

    Рис. 9. Ориентированный граф программы

    5.3 Сценарий диалога программы

    Таблица 2. Сценарий диалога

    № вершины графа

    Операция

    0

    Запуск программы

    1

    Меню программы

    2

    Создание файла

    3

    Вывод таблицы на экран

    4

    Сохранение таблицы в файл

    5

    Добавление записи

    6

    Удаление записи

    7

    Сортировка записей

    8

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

    9

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

    10

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

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

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

    }

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

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


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

  • Использование класса статических массивов структур и базы данных "ODER" при создании программы на языке С++. Основные формы выдачи результатов. Технические и программные средства. Тесты для проверки работоспособности алгоритма создания программы.

    курсовая работа [1,1 M], добавлен 17.03.2015

  • Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы.

    курсовая работа [532,7 K], добавлен 20.07.2014

  • Разработка и тестирование программы класса Точка. Спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров функций программы. Текст программы на языке C++. Особенности тестирования программы.

    лабораторная работа [43,1 K], добавлен 21.07.2012

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

    курсовая работа [1,5 M], добавлен 08.02.2011

  • Особенности вывода на экран содержимого файла BAZA.txt. Анализ функций вывода информации о количестве каждой марки машин. Рассмотрение способов проектирования тестов программы методами черного ящика. Проблемы программирования на языке высокого уровня.

    контрольная работа [1,6 M], добавлен 04.01.2015

  • Исследование процесса создания и заполнения вспомогательных и основных таблиц в Microsoft Office Access. Характеристика построения схемы данных, создания формы и отчета. Описания изменения ширины граф, сортировки записей, работы в режиме конструктора.

    контрольная работа [1,0 M], добавлен 19.12.2011

  • Анализ основных алгоритмов внутренней сортировки массивов данных, сравнение сложности их реализации и производительности. Сортировка пузырьком, методами вставок, выбора, методом Шелла, быстрая сортировка. Операция разделения массива внутренней сортировки.

    курсовая работа [161,7 K], добавлен 17.12.2015

  • Проектирование программы в среде Delphi для тестирования знаний студентов по программированию, с выводом оценки по окончанию тестирования. Разработка экранных форм и алгоритма программы. Описание программных модулей. Алгоритм процедуры BitBtn1Click.

    курсовая работа [365,0 K], добавлен 18.05.2013

  • Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.

    курсовая работа [359,0 K], добавлен 23.05.2012

  • Анализ предметной области. Проектирование и разработка базы данных и интерфейса в виде набора Web-страниц для отображения, создания, удаления и редактирования записей базы данных. Аппаратное и программное обеспечение системы. Алгоритм работы программы.

    курсовая работа [3,0 M], добавлен 12.01.2016

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