Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛекцииЯзыки прогрИб.doc
Скачиваний:
27
Добавлен:
12.11.2019
Размер:
922.11 Кб
Скачать

13.2. Проектирование программы: методы декомпозиции и и модульного программирования

Рассмотрим технологию процедурного программирования на конкретном примере операций с базой данных.

Пример 8. «БД счетов клиентов банка»

Условие задачи:

  • имеются сведения о счетах клиентов банка: номер счета, фамилия, имя, баланс;

  • создать программу «БД счетов клиентов банка», которая способна добавлять новый счет, обновлять счет, удалять счет, выводить все данные по счетам.

Этап постановки задачи заканчивается разработкой технического задания:

1 Введение

ТЗ распространяется на разработку программной системы «БД счетов клиентов банка».

2 Основание для разработки

Система разрабатывается в качестве индивидуального задания по дисциплине «Технология программирования».

3 Назначение

Система предназначена для хранения и обработки сведений о счетах клиентов банка.

4 Требования к программному изделию.

4.1 Требования к функциональным характеристикам

4.1.1 Система должна обеспечить выполнение следующих функций:

  • создание текстового файла о счетах клиентов банка;

  • добавление нового счета клиента;

  • обновление счета клиента;

  • удаление счета клиента.

4.1.2 Исходные данные:

  • номер счета клиента (от 1 до 100);

  • фамилия;

  • имя;

  • баланс клиента.

4.1.3 Результаты:

  • список счетов клиентов банка;

  • сведения о новом счете клиента банка;

  • сведения об обновлении счета клиента банка;

  • сведения об удалении счета клиента банка.

4.2 Требования к надежности

4.2.1 Предусмотреть контроль открытия файлов.

4.2.2 Предусмотреть контроль ввода номера счета

(от 1 до 100)

4.3 Требования к составу и параметрам технических средств

4.3.1 Система должна работать на ПК IBM PC

4.3.2 Минимальная конфигурация:

  • тип процессора – Pentium;

  • объем ОЗУ – 32 Мб

4.4 Требования к информационной и программной

совместимости.

Система должна работать под управлением семейства операционных систем Win32 (Windows 95, 98, 2000, NT, XP).

5 Требования к программной документации

5.1 Разрабатываемые программные модули должны быть самодокументированы, т. е. тексты программ должны содержать комментарии.

5.2. В состав сопровождающей документации входят:

  • пояснительная записка, содержащая описание разработки;

  • руководство пользователя;

  • тексты программ.

6 Технологические требования:

  • архитектура – однопользовательская;

  • класс программного продукта – программная система;

  • интерфейс – меню;

  • метод программирования – процедурный;

  • язык и среда программирования – С++ , Microsoft Studio 2005.

Этап определения спецификаций заканчивается эскизным проектом. Эскизный проект представляет полное и точное описание функций, выраженное в виде диаграммы переходов состояний, представленной на рис. 13.1.

Рис. 13.1. Диаграмма переходов состояний

Четыре скругленных линии определяют четыре функции программного обеспечения, ожидающие команд меню:

  • создание текстового файла и вывод данных;

  • добавление нового счета;

  • обновление счета;

  • удаление счета.

Переходим к этапу проектирования программы.

Спроектируем меню задачи:

MENU

1-Sozdanie textfile

2-Dobavlenie zap

3-Zamena zap

4-Udalenie zap

5-Konec

Применяя метод функциональной декомпозиции, спроектируем структуру программы, как иерархию функций. Разобъем алгоритм программы на функциональные части согласно опциям меню, каждая из которых будет реализована отдельной функцией. Далее анализируя алгоритмы функций zamzap(), dobzap, udzap, обнаруживаем общий фрагмент, связанный с вводом номера счета. Выносим этот фрагмент из функций на нижний уровень и создаем новую функцию, а в функциях вставляем по одному оператору вызова новой функции. Аналогично формируем новую функцию vyvod(). Структура программы представлена на рис. 13.2.

Рис. 13.2. Структура программы

Меню программы имеет 5 опций.

Опция «1-Sozdanie textfile» вызывает функцию textfile, которая создает текстовый файл с именем print.txt для последующего форматированного вывода. Функция textfile принимает объект класса fstream в качестве аргумента, который используется при вводе данных из файла credit.dat. Функция использует элемент-функцию read класса istream и методы последовательного доступа к файлу для ввода данных из файла credit.dat. Функция vyvod используется для вывода данных из файла используется для вывода данных в файл print.txt. После выбора опции 1 файл print.txt будет содержать:

Счет Фамилия Имя Баланс

хх хх хх хх

Опция «2-Dobavlenie zap» вызывает функцию dobzap для добавления нового счета в файл. Если пользователь вводит номер существующего счета, то функция dobzap выводит сообщение о том, что счет уже имеется, и выводит на экран меню.

Типичный вывод для опции 2 следующий:

Введите новый номер счета: 22

Введите фамилию, имя, баланс

? Ivanov Ivan 247.45

Опция «3- Zamena zap» вызывает функцию zamzap для обновления счета. Функция будет обновлять только существующую запись, поэтому функция сначала определяет, не является ли указанная запись незанятой. Запись считывается в структуру client с помощью элемента-функции read класса istream, затем client.nomer сравнивается с нулем, чтобы определить, содержит ли запись какую-либо информацию. Если client.nomer – нуль, то печатается сообщение, что запись является пустой, и на экран выводится меню. Если запись содержит какие-либо сведения, то функция zamzap выводит запись на экран, используя функцию vyvod , затем вводит данные, вычисляет новый баланс и перезаписывает данные в файле.

Типичный вывод для опции 3 следующий:

Введите счет для обновления: 37

37 Petrov Petr 0.00

Введите расход (+) или доплату (-) : +87.99

37 Petrov Petr 87.99

Опция «4-Udalenie zap» вызывает функцию udzap для удаления записи из файла. Пользователю печатается приглашение ввести номер счета. Только существующая запись может быть удалена. Поэтому, если указанный счет является пустым, выводится сообщение об ошибке. Если счет существует, то он заново инициализируется путем копирования в файл незаполненной записи (client0). На экран выводится сообщение, что запись удалена. Типичный вывод для опции следующий:

Введите номер счета для удаления: 29

Счет № 29удален