Строка вызова: | edit(cnum-1) edit(n) edit(500) |
Назначение: | Осуществляет редактирование элемента массива. |
Функции: | Ввод данных , вывод одного из полей структуры , опрос клавиатуры , выбор действия - редактирование поля или выход (клавиша Esc). |
Логические переменные: | ed (int) - номер элемента массива |
Внутренние переменные: | n (int) - счётчик en (int) - редактируемое поле c (char) - Введённый с клавиатуры символ |
Вызывает функции: | sinput , dinput |
Вызывается из: | scroll |
6.9 Функция find
Строка вызова: | find() |
Назначение: | Осуществляет поиск элемента в заданной строке по заданной маске. |
Функции: | Поиск элемента , Возврат результатов в файл или на экран. |
Логические переменные: | нет |
Внутренние переменные: | n (int) - счётчик *F(file - файл ввода name[50] (char) - Имя файла |
Вызывает функции: | cmp , sinput |
Вызывается из: | main |
6.10 Функция scroll
Строка вызова: | scroll () |
Назначение: | Осуществляет обработку списка. |
Функции: | Вывод списка на экран , ввод символа с клавиатуры, обработка символа , в воодветствии с нажатой клавишей вызов меню , выбор пункта меню , выполнение действия , выход. |
Логические переменные: | нет |
Внутренние переменные: | st (int) - номер выбранного пункта меню n (int) - счётчик c (char) - Введённый с клавиатуры символ sv , sk (int) - первый элемент на экране и положение курсора |
Вызывает функции: | output , menu , edit , index. |
Вызывается из: | main |
6.11 Функция load
Строка вызова: | load() |
Назначение: | Осуществляет загрузку базы данных из файла. |
Функции: | Открытие файла с именем librarym.dat , чтение количества строк в массиве , чтение данных в массив , закрытие файла. |
Логические переменные: | нет |
Внутренние переменные: | *f (file) - указатель на файл |
Вызывает функции: | нет |
Вызывается из: | main |
6.12 Функция save
Строка вызова: | save() |
Назначение: | Осуществляет запись базы данных в файл. |
Функции: | Открытие файла librarym.dat , запись количества элементов , запись данных в файл , закрытие файла. |
Логические переменные: | нет |
Внутренние переменные: | *f (file) - указатель на файл |
Вызывает функции: | нет |
Вызывается из: | main |
6.13 Основная программа - main
Назначение: | Осуществляет установку начальных значений , чтение базы данных из файла , обработку , запись базы данных в файл. |
Функции: | Установка начальных значений переменных , вызов функции чтения данных из файла , вызов функции обработки , обработку меню, поиск по маске , построение диаграммы , вызов функции записи в файл ,установка параметров , выход из программы. |
Вызывает функции: | load , save , scroll , menu , find , graph. |
7 Технические требования для использования
Для запуска данной программы необходимо наличие персонального компьютера IBM PC/XT c операционной системой MS-DOS.
Необходимый объем оперативной памяти -640 Кбайт.
Дла запуска программы необходимо сделать текущем каталог с программой kurs.exe и вызвать её на выполнение.
Программа работает в текстовом режиме 80х25 символов , построение диаграммы осуществляется в графическом режиме 640х480 точек 16 цветов.
Файл базы данных программы librarym.dat будет записываться и считываться из текущего каталога текущего диска.
Управление программой осуществляется с клавиатуры.
8 Руководство пользователя
После своей загрузки программа осуществляет оформление экрана , вывод на экран списка книг , содержащийся в файле базы данных , по которым можно передвигать цветовой курсор.
При нажатии клавиши Enter на одном из элементов списка , то на экран будет вызванно меню:
1) Список книг |
2) Поиск по маске |
3) Количество книг |
4) Выход из программы |
При выборе первого пункта меню моявится следующее подменю:
1) Расположение: |
2) Читальный зал |
3) Абонемент |
4) Хранилище |
При нажатии пользователем клавиши Enter на выведенном списке книг появляется меню:
1) Добавить в список |
2) Удалить из списка |
3) Редактировать |
4) По Автору |
5) По Названию |
6) Выход в главное меню |
При нажатии на клавиши управления курсором (вверх , вниз) можно управлять курсором , если нажать клавишу Enter или клавишу с номером пункта меню , то произойдёт то или иное действие в соответствии с выбранным пунктом.
Отсортированная последовательность выводится на экран в виде списка книг. При выборе пункта "Поиск по маске" программа запрашивает данные для поиска книги: Название , Автор , Стоимость , Порядковый номер , Количество , Тематика (Не влияет).
После поиска , если такая книга имеется в списке , данные о найденной книги выводятся на экран.
При выборе пункта "Выход из программы" программа завершает свою работу.
9 Тестирование программы
Для полной проверки работоспособности программы необходимо её протестировать.
План тестирования программы учёта и выборки информации о странах состоит в следующем:
1) Загрузка программы
2) Ввод данных о книгах
3) Удаление книги из списка
4) Редактирование данных о книге
5) Сортировка
6) Поиск по маске
7) Построение диаграммы
8) Выход из программы
Далее в пункте "Результаты работы программы" приводится распечатка тестирования программы по пунктам плана тестирования и результатов тестирования.
10 Результаты работы программы
2) Ввод данных о книгах
76 Автор2 Книга9 22 11.00р
11 Автор2 Книга8 28 21.00р
22 Автор65 Книга33 18 32.00р
55 Автор1 Книга3 12 22.00р
2 Автор2 Книга2 10 55.00р
1 Автор1 Книга 1 10 34.00р
3) Удаление книги из списка
76 Автор2 Книга9 22 11.00р
11 Автор2 Книга8 28 21.00р
22 Автор65 Книга33 18 32.00р
55 Автор1 Книга3 12 22.00р
2 Автор2 Книга2 10 55.00р
4) Редактирование данных о книге
Название: Книга3
Автор: Автор1
Стоимость: 20.00
Порядковый номер: 55
Количество: 20
Тематика: Научная
5) Сортировка
По автору:
22 Автор65 Книга33 18 32.00р
76 Автор2 Книга9 22 11.00р
2 Автор2 Книга2 10 55.00р
11 Автор2 Книга8 28 21.00р
55 Автор1 Книга3 20 20.00р
По названию:
76 Автор2 Книга9 22 11.00р
11 Автор2 Книга8 28 21.00р
22 Автор65 Книга33 18 32.00р
55 Автор1 Книга3 20 20.00р
2 Автор2 Книга2 10 55.00р
7) Построение диаграммы
Заключение
В данной курсовой работе решена задача разработки программы обработки данных в библиотеке.
По заданию к данной курсовой работе был разработан алгоритм , по которому на алгоритмическом языке С++ была разработанна программа , анализ результатов которой показал , что поставленная задача успешно решается.
Список литературы
1.Бьярн Страуструп. Язык программирования С++.в двух частях. Пер. с англ. Киев:"ДиаСофт",1993.-296 с.,ил.
2.Корриган Джон Компьютерная графика: Секреты и решения: Пер с англ. -М.:Энтроп, 1995. - 352 с., ил.
ПРИЛОЖЕНИЕ 1
Распечатка программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <graphics.h>
#include <conio.h>
// Структура - данные о одной книге
struct books {
char name[30]
// Название
char fio[30]
// Автор
int num
// Количество
float price
// Стоимость
long number
// Порядковый номер
// Расположение: 0-читальный зал, 1-абонемент, 2-хранилище
int loc
int tem
// Тематика
int nn,nf
// Номер по названию, автору
}
// Массив - 500 книг и маска для поиска
books cdt[501]
// Массив данных о книгах
int cnum
// Количество книг
// Сортировать по: 1-Названию, 2-автору
char sort
// Расположение
char ftm
const char location[3][15]={" Читальный зал\x0",
" Абонемент\x0",
" Хранилище\x0"}
const char tema[5][15]={ "Художественная\x0",
" Техническая\x0",
" Научная\x0",
" Справочник\x0",
" _Не влияет_ \x0"}
// ПРОТОТИПЫ ФУНКЦИЙ
// Сравнение строки с маской
int cmp(char * a,char * b)
// Вывод списка на экран
void output(int sv,int sk)
// Обработка меню
int menu(int x,int y,char * capt)
// Ввод строки
void SInput(char * s,int lng,int x,int y)
// Ввод числа
double DInput(int x,int y)
// Индексирование массива
void index()
// Редактирование элемента
void edit(int ed)
// Вывод данных по маске
void find()
// Вывод графика
void graph()
// Обработка списка
void scroll()
// Чтение массива
void load()
// Запись массива
void save()
// ТЕЛА ФУНКЦИЙ
// Сравнение строки с маской
// a- строка, b- маска
int cmp(char * a,char * b) {
int k
int n
k=1
for (n=0
n<strlen(b)
n++)
if (a[n]!=b[n]) k=0
return k
}
// Вывод списка на экран
void output(int sv,int sk) {
int n
int m
int nd
m=sv
// Очистка экрана
textcolor(15)
textbackground(1)
clrscr()
// Вывод двадцати элементов
for (n=1
n<20
n++) {
// Если элемент выбран, изменение цветов
if (n==sk) {
textbackground(14)