Програма обробки даних у бібліотеці h2>
Пояснювальна записка до курсової роботи з дисципліни
"Основи алгоритмізації і програмування" p>
Виконав: студент гр. 96-ВВ3 Мітіко Р.О. p>
Пензенський державний університет, Кафедра "Обчислювальна техніка" p>
Пенза 1998 p>
Вступ h2>
З моменту появи перших зразків персональних комп'ютерів
пройшло не так вже й багато часу, але зараз без них вже немислимо величезне
кількість областей людської діяльності - економіка, управління, наука
, Інженерна справа, видавнича справа, освіта, культура і т.д. p>
Інтерес до персональних комп'ютерів постійно росте, а коло
їх користувачів безперервно расшіряется.В число користувачів ПЕОМ залучаються
як новачки в комп'ютерному справі, так і фахівці з інших класів ЕОМ. p>
Мова С + + - універсальна мова загального призначення,
область додатків якого - програмування систем в самому широкому сенсі.
Крім цього, С + + успішно використовується як у багатьох додатках, так і в потужних
операційних системах. Реалізація С + + здійснена для машин в діапазоні від
найпростіших персональних комп'ютерів до найпотужніших суперкомп'ютерів і для всіх
операційних систем. p>
1 Постановка завдання h2>
Завдання курсової роботи полягає в розробці мовою
програмування С + + програми обробки даних в бібліотеці, яка повинна
здійснювати наступні функції: p>
1) Введення даних про книги, що є в
бібліотеці: назва книги, автор, кількість примірників, порядковий номер,
вартість книги p>
2) Виведення інформації на екран (у файл) за запитом про
книгах, що є в бібліотеці: читальному залі, абонементі, сховище за
назвою, автору, тематиці. p>
3) Збір статистики про книжки одного автора з різними
назвами. p>
4) Побудова графічної діаграми для пункту в
вибором. p>
Робота програми повинна бути організована з
використанням меню. p>
Програму розробити на мові С + + v.3.1. p>
2 Метод вирішення завдання h2>
Аналізуючи постановку завдання стає зрозуміло, що для
її рішення необхідно застосувати метод багатофункціонального програмування --
цей метод заснований на розбивання програми на окремі функціональні модулі,
які викликаються з основної програми в процесі її роботи. p>
В основі розробки такої програми лежить нізходящее
програмування - тобто спочатку розробляється основна програма - в даному
випадку програма введення тексту на екран, обробки функціональних клавіш і меню
, За допомогою вибору пунктів якого буде надалі організовуватися її
робота. При виборі того чи іншого пункту меню або натискання функціональної
клавіші буде викликатися один або кілька підпрограм, але на початковому етапі
розробки програми методом спадного програмування замість цих
підпрограм ставить "заглушки" - порожні підпрограми, які в
процесі розробки будуть замінюватися програмами, які виконують певну
функцію. p>
3 Опис логічного подання даних h2>
Вхідними даними в програмі є: p>
Файл бази даних, який записаний на диску у файлі
librarym.dat. p>
Дані, які в процесі роботи програми можна
додати, видалити або відредагувати. p>
Вихідними даними в програмі є: p>
Дані, сортовані за назвою або автору p>
Результат пошуку по заданій масці p>
Графік p>
Файл бази даних, що записується на диск у файл
librarym.dat під час завершення роботи програми. p>
Дані про книзі зберігаються в масиві структур типу
books: p>
Структура books: p>
Поле p>
Тип p>
Назва p>
name p>
рядок 30 символів типу char p>
Назва p>
fio p>
рядок 30 символів типу
char p>
Автор p>
num p>
int p>
Кількість p>
price p>
float p>
Вартість p>
number p>
long p>
Порядковий номер p>
loc p>
int p>
Розташування p>
ss p>
int p>
Тематика p>
nn p>
int p>
Номер за назвою p>
nf p>
int p>
Номер за автором p>
Глобальні змінні програми: p>
Поле p>
Тип p>
Назва p>
cdt p>
масив змінних типу
books на 501 елемент p>
Масив даних про країни p>
cnum p>
Int p>
Кількість книг p>
sort p>
Char p>
тип сортування p>
ftm p>
Char p>
Розташування p>
6 Специфікація на функціональні модулі p>
6.1 Функція cmp p>
Рядок виклику: p>
if
(cmp (cdt [n]. name, cdt [500]. name) & & cmp (cdt [n]. fio, cdt [500]. fio) & & (cdt [n]. price> = cdt [500]. price) ) p>
Призначення: p>
Здійснює порівняння
рядки з маскою p>
Функції: p>
Переглядає
послідовно задану рядок, і якщо в ній знайдена маска, то
повертається 1, якщо ні - 0. p>
Логіка p>
змінні: p>
* a (char) - покажчик на
рядок p>
* b (char) - покажчик на
маску для пошуку p>
Внутрішні p>
змінні: p>
k (int) - результат
порівняння p>
n (int) - лічильник p>
Викликає функції: p>
немає p>
Викликається з: p>
index, find p>
6.2 Функція output p>
Рядок виклику: p>
output (sv, sk) p>
Призначення: p>
Здійснює виведення на екран
списку книг p>
Функції: p>
Очищення екрану, висновок 10
елементів, якщо елемент обраний, виділення кольором, виведення даних про книгу на
екран. p>
Логіка p>
змінні: p>
sv, sk (int) - координати
першого елемента на екрані p>
Внутрішні p>
змінні: p>
n (int) - лічильник p>
m (int) - тимчасова
мінлива p>
nd (int) - порядковий номер
даної книги p>
Викликає функції: p>
немає p>
Викликається з: p>
scroll p>
6.3 Функція menu p>
Рядок виклику: p>
st = menu (30,5, "Додати
в список " p>
"Видалити зі списку" p>
"Редагувати" p>
"За Автору" p>
"За Назвою" p>
"Вихід в головне меню" p>
"x0") p>
st = menu (30,5, "Список
книг " p>
"Пошук за маскою" p>
"Кількість книг" p>
"Вихід з програми" p>
"x0") p>
st = menu (40,6, "
Розміщення: " p>
"
Читальний зал " p>
"
Абонемент " p>
"
Сховище " p>
"x0") p>
Призначення: p>
Здійснює обробку меню p>
Функції: p>
Висновок меню на екран, опитування
клавіатури, при натисканні клавіш управління курсором (вгору, вниз)
переміщення колірного курсору по пунктам меню, вибір певного пункту
меню при натисненні клавіші з номером пункту меню, при натисканні клавіші Enter
повертається номер обраного пункту меню, при натисканні клавіші Esc
повертається -1. p>
Логіка p>
змінні: p>
* capt (char) - покажчик на
текст меню p>
x, y - координати виводу
меню на екран p>
Внутрішні p>
змінні: p>
n, m (int) - Лічильники p>
num (int) - Кількість
пунктів p>
k (int) - Обраний пункт p>
* pt (char) - Тимчасовий
покажчик на символ p>
c (char) - рахуватися з
клавіатури символ p>
Викликає функції: p>
немає p>
Викликається з: p>
scroll, main p>
6.4 Функція sinput p>
Рядок виклику: p>
SInput (cdt [ed]. name, 30,35,6) p>
SInput (cdt [ed]. fio, 30,35,8) p>
SInput (name, 40,20,23) p>
Призначення: p>
Здійснює введення рядка. p>
Функції: p>
Висновок порожнього рядка,
установка координат, висновок рядка запиту, зчитування рядка посимвольний з
клавіатури, вихід, якщо натиснута клавіша Enter або Esc, якщо натиснута Esc то
рядок не записується. p>
Логіка p>
змінні: p>
* s (char) - покажчик на
рядок p>
lng (int) - максимальна
довжина p>
x, y - координати введення p>
Внутрішні p>
змінні: p>
rs [100] (char) - Тимчасова
рядок p>
n (int) - Лічильник p>
c (char) - Введений з
клавіатури символ p>
Викликає функції: p>
немає p>
Викликається з: p>
edit, find p>
6.5 Функція dinput p>
Рядок виклику: p>
cdt [ed]. price = DInput (35,10) p>
cdt [ed]. number = DInput (35,12) p>
cdt [ed]. num = DInput (35,14) p>
Призначення: p>
Здійснює введення числа. p>
Функції: p>
Висновок порожнього рядка,
установка координат, висновок рядка запиту, зчитування рядка посимвольний з
клавіатури, отримання введеного числа, вихід, якщо натиснута клавіша Enter
або Esc, якщо натиснута Esc то число не записується. p>
Логіка p>
змінні: p>
* s (char) - покажчик на
рядок p>
lng (int) - максимальна
довжина p>
x, y - координати введення p>
Внутрішні p>
змінні: p>
s [100] (char) - Тимчасова
рядок p>
* сtpe (char) - покажчик
на Сторк p>
rs (double) - Результат p>
n (int) - Лічильник p>
c (char) - Введений з
клавіатури символ p>
Викликає функції: p>
немає p>
Викликається з: p>
edit p>
6.6 Функція graph p>
Рядок виклику: p>
graph () p>
Призначення: p>
Здійснює побудови
стовпчастий діаграми з розподілу книг. p>
Функції: p>
Визначення масштабу,
побудова осей координат, висновок діаграми, очікування натискання користувачем
клавіші. p>
Логіка p>
змінні: p>
немає p>
Внутрішні p>
змінні: p>
drv, mode (int) - для
ініціалізації графіки p>
c (int) - Колір p>
k1, k2, k3 (int) - кількість
книг p>
n (int) - Лічильник p>
m (int) - Масштаб p>
Викликає функції: p>
немає p>
Викликається з: p>
main p>
6.7 Функція index p>
Рядок виклику: p>
index () p>
Призначення: p>
Здійснює індексування
масиву - призначення номерів елементів за алфавітом для кожного поля запису. p>
Функції: p>
Cтіраніе старих індексів,
перебір всіх можливих місць зберігання, індексація за автором, пошук
найменшого, індексація за назвою, пошук найменшого. p>
Логіка p>
змінні: p>
немає p>
Внутрішні p>
змінні: p>
n, m (int) - лічильники p>
tm (int) - перебір тем p>
mxc (char [100]) - значення
найменшою рядка p>
nm (int) - номер чергового
елемента p>
Викликає функції: p>
cmp p>
Викликається з: p>
scroll p>
6.8 Функція edit p>
Рядок виклику: p>
edit (cnum-1) p>
edit (n) p>
edit (500) p>
Призначення: p>
Здійснює редагування
елемента масиву. p>
Функції: p>
Введення даних, виведення одного
з полів структури, опитування клавіатури, вибір дії - редагування поля
або вихід (клавіша Esc). p>
Логіка p>
змінні: p>
ed (int) - номер елемента
масиву p>
Внутрішні p>
змінні: p>
n (int) - лічильник p>
en (int) - редагувати
поле p>
c (char) - Введений з
клавіатури символ p>
Викликає функції: p>
sinput, dinput p>
Викликається з: p>
scroll p>
6.9 Функція find p>
Рядок виклику: p>
find () p>
Призначення: p>
Здійснює пошук елемента
в заданій рядку по заданій масці. p>
Функції: p>
Пошук елемента, Повернення
результатів у файл чи на екран. p>
Логіка p>
змінні: p>
немає p>
Внутрішні p>
змінні: p>
n (int) - лічильник p>
* F (file - файл введення p>
name [50] (char) - Файл p>
Викликає функції: p>
cmp, sinput p>
Викликається з: p>
main p>
6.10 Функція scroll p>
Рядок виклику: p>
scroll () p>
Призначення: p>
Здійснює обробку
списку. p>
Функції: p>
Виведення списку на екран,
введення символу з клавіатури, обробка символу, в воодветствіі з натиснутою
клавішею виклик меню, вибір пункту меню, виконання дії, вихід. p>
Логіка p>
змінні: p>
немає p>
Внутрішні p>
змінні: p>
st (int) - номер обраного
пункту меню p>
n (int) - лічильник p>
c (char) - Введений з
клавіатури символ p>
sv, sk (int) - перші
елемент на екрані і положення курсору p>
Викликає функції: p>
output, menu, edit,
index. p>
Викликається з: p>
main p>
6.11 Функція load p>
Рядок виклику: p>
load () p>
Призначення: p>
Здійснює завантаження бази
даних з файлу. p>
Функції: p>
Відкриття файлу з ім'ям
librarym.dat, читання кількості рядків у масиві, читання даних у масив, закриття
файлу. p>
Логіка p>
змінні: p>
немає p>
Внутрішні p>
змінні: p>
* f (file) - покажчик на
файл p>
Викликає функції: p>
немає p>
Викликається з: p>
main p>
6.12 Функція save p>
Рядок виклику: p>
save () p>
Призначення: p>
Здійснює запис бази
даних у файл. p>
Функції: p>
Відкриття файлу librarym.dat
, Запис кількості елементів, запис даних у файл, закриття файлу. P>
Логіка p>
змінні: p>
немає p>
Внутрішні p>
змінні: p>
* f (file) - покажчик на
файл p>
Викликає функції: p>
немає p>
Викликається з: p>
main p>
6.13 Основна програма - main p>
Призначення: p>
Здійснює установку
початкових значень, читання бази даних з файлу, обробку, запис бази
даних у файл. p>
Функції: p>
Установка початкових
значень змінних, виклик функції читання даних з файлу, виклик функції
обробки, обробку меню, пошук за маскою, побудова діаграми, виклик
функції запису у файл, установка параметрів, вихід з програми. p>
Викликає функції: p>
load, save, scroll, menu, find, graph. p>
7 Технічні вимоги для використання h2>
Для запуску даної програми необхідна наявність персонального
комп'ютера IBM PC/XT c операційною системою MS-DOS. p>
Необхідний обсяг оперативної пам'яті -640 Кбайт. p>
Дла запуску програми необхідно зробити поточному
каталог з програмою kurs.exe і викликати її на виконання. p>
Програма працює в текстовому режимі 80х25 символів,
побудова діаграми здійснюється в графічному режимі 640х480 пікселів 16
квітів. p>
Файл бази даних програми librarym.dat буде
записуватися і зчитуються з поточного каталогу поточного диска. p>
Керування програмою здійснюється за допомогою клавіатури. p>
8 Керівництво користувача h2>
Після своєї завантаження програма здійснює оформлення
екрана, виведення на екран списку книг, що міститься у файлі бази даних, за
яким можна пересувати колірної курсор. p>
При натисканні клавіші Enter на одному з елементів списку
, То на екран буде викликати меню: p>
1) Список книг p>
2) Пошук за маскою p>
3) Кількість книг p>
4) Вихід із програми p>
При виборі першого пункту меню моявітся наступне
підменю: p>
1)