ЗМІСТ
Розділ 1
1.1 Постановка задачі та її економічна сутність
1.1.1 Формальна постановка задачі розрахунку заробітної плати
1.1.2 Вимоги до програмної реалізації
1.2 Технологія рішення задачі
1.2.1 Сутність АРМ
1.2.2 Типова структура АРМ
1.2.3 Класифікація АРМ
1.2.4 Вибір засобів для реалізації
Розділ 2
2.1 Сценарій діалогу з користувачем
2.2 Структура комплексу АРМ "Бухгалтер»
2.3 Схема модуля обчислення заробітної плати
2.4 Опис модулів програми
Розділ 3
3.1 Надійність програмного виробу
3.1.1 Основні визначення
3.1.2 Модель Мілса
3.2 Ефективність програмного виробу
3.2.2 Оцінка ефективності програмного комплексу
3.3 Тестування комплексу
Основні позначення
Список літератури
Розділ 1
1.1 Постановка задачі та її економічна сутність.
Очевидно, що в роботі бухгалтерії профспілкового комітету ВНЗ є багато технічної, рутинної роботи, яка добре піддається автоматизації. Зберігання документів у вигляді комп'ютерних даних на диску безумовно доцільніше, ніж зберігання їх у класичному вигляді, тобто у вигляді паперів. Значно спрощується пошук потрібного документа, є можливість зберігати дані за багато років і не плутатися в них, сильно спрощується зміна будь-якого документа, складання численних довідок.
Всю роботу бухгалтерії можна розділити на кілька основних підпунктів:
1. Робота з довідковою та нормативною інформацією. Як основні тут можна відзначити довідник різних нарахувань співробітникам, довідник співробітників з зберігаються в ньому прізвищем працівника, його табельною номером, окладом, полем, що показує, чи є він членом профспілки, обгрунтуванням окладу, довідник податків з зберігаються назвою та розміром податку, довідником по тарифної
сітці, та інші.
Необхідно підтримувати своєчасне зміна цієї інформації, організувати гнучку систему довідок.
2. Ведення записника бухгалтера. Ця книжка ніби дублює Головну книгу і служить для контролю. У ній відображаються будь-який прихід чи витрата грошей. По цій книзі кожен місяць необхідно підводити баланс і перевіряти, скільки грошей залишилося на кожному з рахунків.
3. Розрахунок платіжної відомості організації. При підрахунку заробітної плати необхідно враховувати файл, в якому зберігаються нарахування працівникам за погодинну роботу. Слід автоматизувати віднімання різноманітних податків, враховувати пільги різним категоріям працівників. Система повинна стежити за фондом заробітної плати, автоматично попереджати користувача при перевитрату фонду, і навпаки, враховувати економію фонду та враховувати цю економію надалі. Програма повинна ретельно документувати всі свої дії і видавати звіти, за якими можна було завжди ревізувати її діяльність.
4. Ведення файлу, в якому відображається видача різних пільг у підвідомчій організації. Повинно бути можливо шляхом нескладного запиту з'ясувати, скільки і яких пільг отримував кожен конкретний працівник за якийсь період часу.
5. Робота з банками. Необхідно автоматизувати облік і зберігання банківських документів, як-то: платіжні доручення, банківські оголошення, виписки з банку на кожну проведену операцію
6. Робота з головною книгою. Користуючись різними введеними документами, програма повинна генерувати запису в головній книзі, підраховувати баланс по ній, дозволяти переглядати головну книгу для контролю.
1.1.1. Формальна постановка задачі розрахунку заробітної плати.
----------------¬ Фонд
| Державний | зарплати
| Комітет +------¬ Профспілкові --------------¬< br />
| По народному | | внески | Банк |
| Освіти | | -------------+-------------+--¬< br />
| | | | | Рахунок профкому | |
| | | |+-------------+ |
L ---------------- | | | | |
| | L -------------- |
| | |
-----+---+--¬ |
| МЕСІ +--------¬|< br />
| | Профком +------------------< br />
L ----------- +--------- Фонд зарплати
профкому
N1
K = 1% * ЗП [i] (1)
i = 1
де К - сума проф.взносов, що надходять на рахунок МЕСІ.
N1 - кількість співробітників інституту - членів профспілки.
ЗП [i] - Заробітна плата i-го працівника.
i1
K | NMB ---> K | Nп (2)
(Переклад з рахунку МЕСІ на рахунок профкому)
де K - проф. фонд в банку.
K ---> K [mi] - Збереження фонду за кожен місяць.
K - Фонд зарплати профкому.
Кmin = ((1/3) * K [mi-2] + (1/3) * К [mi-1] + (1/3) * K [mi])/3 (3) _
Kmin - Мінімальна межа фонду заробітної плати. _
Кmax - Максимальна межа фонду заробітної плати.
Kmax = Kmin + W [mi] * (1/3) (4)
W [mi] = Позабюджетні надходження.
_ _ _
K = K - 0.036 * K - 0.26 * 0.054 * K (5)
Відрахування на медичне страхування та соціальне страхування.
N2
K> Q [i] (6)
i = 1
Q [i] - оклад i-го сутрудніка профкому.
N2 - Кількість працівників профкому.
Q [i]> Q ~ [i] (7)
Q `[i] - Оклад, що покладається i-му працівнику за його розряду.
Якщо (6) або (7) не виконуються, то профспілковий комітет не може містити стільки співробітників.
M [mi, k]
Q1 [k] = Q [k] + P [k, j] (8)
j = 1
Q1 [k] - Проміжне значення - оклад k-го співробітника разом з нарахуваннями
P [k, j] - j-е нарахування k-му співробітникові.
M [mi, k] - Кількість нарахувань k-му співробітникові в mi-му місяці.
T [mi, k]
Q2 [k] = Q1 [k]-H [k, j] (9)
j = 1
Q1 [k] - Проміжне значення - оклад k-го співробітника разом з нарахуваннями
P [k, j] - j-е нарахування k-му співробітникові.
M [mi, k] - Кількість нарахувань k-му співробітникові в mi-му місяці.
Q2 [k] - Проміжне значення - оклад к-го співробітника разом з нарахуваннями і утриманнями.
H [k, j] - j-і утримання з k-го співробітника.
T [mi, k] - Кількість утримань з k-го співробітника в mi-му місяці.
U [k]
S [k] = Q2 [k]-V [j] * Q2 [k] (10) *
J = 1
S [k] - Остаточна сума для видачі k-му співробітникові.
V [j] - Значення J-го податку.
U [k] - Велика кількість податків, що застосовуються до k-му співробітникові.
* - Взагалі кажучи, U [k] може формуватися досить складним чином, але в конкретному випадку воно відрізняється від U (усього безлічі податків) лише прибутковий податок в залежності від сукупного доходу k-го співробітника за попередній рік.
1.1.2 Вимоги до інформаційної технології. Вся система повинна мати надійністю, необхідно передбачити найнесподіваніші дії користувача, і, якщо вони неправильні, програма повинна пояснити, як саме зробити те, чого хоче користувач.
Так як програма має справу з матеріальними цінностями, необходімозащіщать апрограмму і дані від несанкціонованого доступу і зміни. Специфіка роботи бухгалтерії показує, що зручніше за все це зробити за допомогою дворівневої системи паролів. Один пароль знаходиться у голови профкому, другий - у бухгалтера. При введенні одного з паролів система повинна дозволяти переглядати, але не змінювати дані, при двох правильно введених паролі - дозволяти й переглядати, і змінювати дані. Якщо ні один пароль не був введений правильно, то система повинна дентіфіціровать користувача як "чужого" і відмовитися з ним працювати.
Повинна існувати можливість перекладу документів з машинних носіїв у звичайний вигляд. Система повинна працювати на машинах, сумісних з IBM PC, під керуванням дискової операційної системи MS-DOS.
1.2 Технологія розв'язання задачі.
На сучасному етапі автоматизації управління суспільним виробництвом найбільш перспективним є автоматизація планово-управлінських функцій на базі персональних ЕОМ, встановлених безпосередньо на робочих місцях спеціалістов.Еті системи одержали широке поширення в організаційному управлінні під назвою автоматизованих робочих місць (АРМ). Специфіка діяльності бухгалтерії профспілкового комітету ВУЗу дозволяє вибрати методом вирішення створення автоматизованого робочого місця (АРМ). Це дозволить використовувати систему людям, які не мають спеціальних знань в області програмування, і одночасно дозволить доповнювати систему у міру потреби.
1.2.1 Сутність АРМ.
Автоматизоване робоче місце (АРМ) можна визначити як комплекс інформаційних ресурсів, програмно-технічних та організаційно-технологічних засобів індивідуального та колективного користування, об'єднаних для виконання певних функцій професійного працівника управління.
За допомогою АРМ фахівець може обробляти тексти, здійснювати і отримувати повідомлення, що зберігаються в пам'яті ЕОМ, брати участь у нарадах, організовувати і вести особисті архіви документів, виконувати розрахунки і одержувати готові результати в табличній та графічній формі. Зазвичай процеси прийняття рішень і управління в цілому реалізуються колективно, але необхідна проблемна реалізація АРМ управлінського персоналу, що відповідає різним рівням управління і реалізованим функцій. Підготовка інформації для прийняття рішень, власне прийняття рішень та їх реалізація можуть мати багато спільного в разліних економічних службах підприємства. Також багато функцій є є типовими для багатьох підприємств. Це дозволяє створювати гнучкі, перебудовувані структури управління. В основу конструювання АРМ покладені наступні основні принципи:
1. Максимальна орієнтація на кінцевого користувача, що досягається створенням інструментальних засобів адаптації АРМ до рівня підготовки користувача, можливостей його навчання і самонавчання.
2. Формалізація професійних знань, то є можливість надання за допомогою АРМ самостійно автоматизувати нові функції і вирішувати нові завдання в процесі накопичення досвіду роботи з системою.
3. Проблемна орієнтація АРМ на вирішення певного класу задач, Об'єднаних загальною технологією обробки інформації, єдністю режимів роботи і есплуатаціі, що характерно для фахівців економічних служб.
4. Модульність побудови, що забезпечує пару АРМ з іншими елементами системи обробки інформації, а також модифікацію і нарощування можливостей АРМ без переривання його функціонування.
5. Ергономічність, тобто створення для користувача комфортних умов праці і дружнього інтерфейсу спілкування з системою.
1.2.2. Типова структура АРМ. Створення АРМ для систем організаційного управління припускає проведення їх структуризації і параметризації на стадії проектування. Структуризація АРМ включає опис середовища функціонування: забезпечують і функціональних підсистем і зв'язків між ними, інтерфейсів з користувачем і технічними засобами, засобів інформаційного та програмного забезпечення Параметризація передбачає виділення і дослідження параметрів
виділення і дослідження параметрів технічних, програмних та інформаційних засобів, що задовольняють вимогам та обмеженням, сформованим при структуризації Структурно АРМ включає функціональну і що забезпечує частини.
Функціональна частина визначає зміст конкретного АРМ і включає опис сукупності взаємопов'язаних завдань, що відображають особливості автоматизованих функцій діяльності користувача. В основі розробки функціонального забезпечення лежать вимоги користувача до АРМ і його функціональна специфікація, що включає
опис вхідний і вихідний інформації, засобів і методів досягнення достовірності та якості інформації, що застосовуються носіїв, інтерфейсів зв'язку. Зазвичай сюди ж відносяться опису засобів захисту від несанкціонованого доступу, відновлення системи в збійних ситуаціях, управління в нестандартних випадках. Забезпечує частина включає традиційні види забезпечення: інформаційне, програмне, технічне, технологічне, та інші. Інформаційне забезпечення включає опис організації інформаційної бази, що регламентує інформаційні зв'язки, зумовлює склад і зміст всієї системи інформаційного відображення. Програмне забезпечення АРМ поділяється на загальне і функціональне. Загальне програмне забезпечення поставляється в комплекті з ПЕОМ і включає операційні системи, прикладні програми, що розширюють можливості операційних систем, програмні засоби діалогу та інші. Загальна ПЗ призначено для управління роботою процесора, організації доступу до пам'яті,
периферійних пристроїв, запуску та управління процесором, виконання прикладних програм, забезпечення виконання програм на мовах високого рівня.
Функціональне програмне забезпечення призначене для автоматизації вирішення функціональних завдань, що включає універсальні програми і функціональні пакети. При проектуванні цих програмних засобів необхідно дотримуватися принципів орієнтації розробки на конкретного користувача. Сукупність вимог до програмного і технічного забезпечення відображається на безлічі функцій користувача, і це дозволяє вирішувати проблему професійної орієнтації на користувача.
Технічне забезпечення АРМ являє собою комплекс технічних засобів обробки інформації на базі ПЕОМ, призначений для автоматизації функцій спеціаліста в предметної і проблемної областях його професійних інтересів.
АРМ фахівця сфери організаційного управління звичайно базується на ПЕОМ індивідуального або колективного користування. Технологічне забезпечення АРМ призначено для організації технологічного процесу використання АРМ стосовно комплексу розв'язуваних завдань, відповідних функцій фахівця.
Технологічний процес являє собою сукупність функціональних робіт, що включають забезпечення введення, контролю, редагування та маніпулювання даними, накопичення, зберігання, пошук, захист, отримання вихідних документів. У зв'язку з тим,
що користувач є, як правило, участнірком деякого колективу і виконує в ньому певну роботу, необхідно передбачити технологічне взаємодія виконавців при вирішенні завдань, забезпечити умова спільної роботи
фахівців. Ці положення повинні відображатися в кваліфікаційних вимогах та посадових інструкціях користувачів АРМ.
1.2.3 Класифікація АРМ. В основу класифікації АРМ може бути покладено ряд класифікаційних ознак. З урахуванням областей застосування можлива класифікація АРМ за функціональною ознакою:
1. АРМ адміністративно - управлінського персоналу;
2. АРМ проектувальника радіоелектронної апаратури, автоматизованих систем управління і т.д.
3. АРМ фахівця в галузі економіки, математики, фізики, і т. д.
4. АРМ виробничо-технологічного призначення. Важливим класифікаційними ознакою АРМ є режим його експлуатації, за яким виділяються поодинокий, груповий і мережевий режими експлуатації. У першому випадку АРМ реалізується на відокремленої ПЕОМ, всі ресурси що знаходяться у монопольному розпорядженні користувача. Таке робоче місце орієнтовано на розв'язання нестандартних, специфічних завдань, і для його реалізації застосовуються ЕОМ невеликої потужності.
При груповому режимі есплуатаціі на базі однієї ЕОМ реалізується кілька робочих місць, Об'єднаних за принципом адміністративної або функціональної спільності. У цьому випадку потрібні вже більш потужні ЕОМ і досить складне програмне забезпечення. Груповий режим есплуатаціі звичайно використовується для організації розподіленої обробки даних в межах окремого підрозділу чи організації для обслуговування стабільних груп фахівців і керівників.
Мережевий режим експлуатації АРМ об'єднує гідності перших і других. У цьому випадку кожне АРМ будується на базі однієї ЕОМ, але в той же час є можливість використовувати деякі загальні ресурси обчислювальної мережі.
Одним з підходів до класифікації АРМ є їх систематизація за видами виконуваних завдань. Можливі наступні групи АРМ:
1. Для вирішення інформаційно-обчислювальних завдань;
2. Для вирішення завдань підготовки і введення даних;
3. Для вирішення інформаційно-довідкових завдань;
4. Для вирішення завдань бухгалтерського обліку;
5. Для вирішення задач статистичної обробки даних;
6. Для вирішення завдань аналітичних розрахунків;
Обгрунтоване віднесення АРМ до певної групи буде сприяти більш глибокому і ретельному аналізу, можливості порівняльної оцінки різних однотипних АРМ з метою вибору найбільш пріоритетним.
1.3 Вибір технічних засобів для реалізації. Для реалізації програмного комплексу виберемо систему програмування Borland Pascal ver. 7.0. Цей вибір дозволить, по-перше, створити ефективний програмний код, а по-друге, дозволить зробити систему відкритою і згодом доповнюється. Оскільки вся обробка ведеться усередині системи, представляется недоцільним використовувати будь-який стандартний формат даних, такий, як, наприклад, DBASE-формат. Використання цих форматів сильно уповільнить роботу з даними, збільшить їх об'єм і не дасть ніяких очевидних переваг.
Для впорядкування файлів системи представляється розумним створити файл-каталог системи, в якому буде зберігатися ім'я кожного файлу бази, його структура. Це дозволить жорстко не вбудовувати в систему формати файлів, тобто дозволить змінювати формати файлів, не перекомпіліруя системи. Для системи необхідні поля трьох типів - числовий, строковий і дата. У файлі-каталозі при перерахуванні полів вказується тип поля імаксімальний розмір цього поля при виведенні. У систему має сенс вбудувати систему "Архів". Тому що дані системи потрібно зберігати тривалий час, то, щоб не загружатьданнимі файли, має сенс базу розділити на поточні дані, які піддаються зміні, і архів, який не змінюється. Поточний файл можна записати в архів, поставивши йому у відповідність унікальний ключ-дату. Таким чином, ситуація нагадує звичайну картотеку - дані діляться на поточні, що лежать на столі, і архів, який лежить в папках на полицях.
Розділ 2
2.1 Сценарій діалогу із системою.
На початку роботи програма запитує паролі, щоб визначити статус користувача і його повноваження. Система запитує послідовно два паролі, відомих соответсвенно голові профкому і бухгалтеру. При правильному введенні одного з паролів користувач отримує доступ до перегляду, але не зміни даних системи. Якщо обидва паролі введені правильно, то система дозволяє переглядати і змінювати дані, якщо ж обидва паролі введені неправильно, то система відмовляє користувачеві в доступі.
Безпосередньо після введення паролів на екрані з'являється привітання користувачів та запит сьогоднішньої дати. Ця дата використовується за умовчанням при введенні в полях, що мають тип "Дата". У цьому запиті користувач може або підтвердити ту дату, яка стоїть на машині за замовчуванням, натисканням "Enter" або ввести нову дату, якщо дата на машині встановлена неправильно. Після цього на екрані висвічується головне меню системи (Екран 1). За допомогою стрілок керування курсором користувач вибирає що цікавить його пункт. Вибір першого пункту означає, що пользовательжелает переглянути нормативно - довідкову інформацію, що використовується в системі. При
виборі цього пункту на екрані висвічується меню нормативно-довідкової інформації (Екран 2). У залежності від вибору користувача йому надається можливість переглянути і редагувати той чи інший довідник. Скасування режиму довідників здійснюється клавішею ESC. У цьому випадку система повертається до попереднього меню.
Вибір другого пункту означає, що користувач хоче працювати з блокнотом бухгалтера, в якій зберігаються Даан про видачу кредитів, матеріальної допомоги і так далі. (Екран 3).
Користувач може вводити нові дані в записну книжку (вибір першого пункту), або здійснювати пошук в поточних даних (вибір пункту 2). У цьому режимі користувач вводить табельний номер цікавить його співробітника і отримує список всіх виданих цього співробітника пільг. Вихід з режиму здійснюється клавішею ESC. Вибір третього пункту дає можливість користувачу розрахувати заробітну плату працівників профкому (Екран 4). У цьому режимі користувач може переглядати і редагувати файл нарахувань (вибір першого пункту меню), файл стягнень з співробітників (другий пункт), список співробітників з окладами (третій пункт), переглядати загальний фонд заробітної плати (четвертий пункт), а також поетапно розраховувати заробітну плату. Спочатку користувач може порахувати оклад працівників разом з усіма нарахуваннями (п'ятий пункт). При цьому система запросить у нього дату, яка показує, за який місяць нараховується зарплата. Він може також порахувати всі стягнення з співробітників за цей місяць. Для цього користувач повинен вибрати 6-й пункт меню і ввести дату, за яку вважаються стягнення. Користувач може окремо порахувати податки, віднімаються з заробітної плати (сьомий пункт) або отримати відразу повну відомість. При виборі дев'ятого пункту система підраховує економію фонду заробітної плати в будь-дібо році. Вихід з режиму здійснюється клавішею ESC. Вибираючи четвертий пункт Головного меню, користувач вибирає роботу з відомістю заробітної плати (Екран 5). У цьому режимі користувач може переглянути відомість, причому якщо відомість не була розрахована, то система розрахує її, роздрукувати відомість, занести її в архів, знайти відомість в архіві. Вихід з режиму здійснюється клавішею ESC. При виборі п'ятого пункту меню користувач отримує можливість працювати з банківськими документами (Екран 6). Він може вводити та переглядати платіжні доручення, банківські виписки, банківські оголошення на внесок. При виборі шостого пункту користувач вибирає роботу з головною книгою бухгалтера (Екран 7). У цьому режимі він може наказати системі додати в головну книгу дані за останньою відомості заробітної плати, додати дані за останніми платіжним дорученням, переглянути
головну книгу. Вибір сьомого пункту меню дає можливість користувачеві переглянути
сальдо рахунків. (Екран 8) Для того, щоб система підраховувала сальдо по якому-небудь конкретному рахунку, він повинен знаходитися в списку рахунків. У цьому режимі користувач може розрахувати поточне сальдо, переглянути його, занести сальдо в архів або знайти його в архіві. При пошуку або занесення в архів сальдо у користувача питається унікальний ключ-дата, який буде пов'язаний із цим сальдо. У режимі редагування будь-якого файлу даних системи користувач має можливість отримати довідку про активні в даний момент клавішах за допомогою натискання F1. Також користувач може змінити на свій вибір розміри і місце розташування на екрані вікна, в якому відбувається редагування файлу даних. Користувач може одночасно відкрити ще кілька файлів даних одночасно, якщо йому потрібно переглянути якісь дані прямо в процесі редагування. Приклад: Користувач вводить чергові нарахування працівникам. При введенні табельного номера він забуває, який у цікавить його співробітника табельний номер. У цьому випадку йому потрібно натиснути клавішу F10, вибрати із запропонованого списку (Екран 9) пункт "Список співробітників", і на екрані з'явиться вікно з номером 2, в якому буде відображатися файл співробітників. Тепер користувач повинен натиснути Ctrl - F5 для переходу до режиму зміни розміру вікна, розташувати першому і другому вікна так, щоб вони не перекривалися, і продовжувати вводити файл нарахувань. При цьому список співробітників з їхніми прізвищами будуть у нього перед очима.
Модуль Windenv
Процедура Savewindow (x1, y1, x2, y2: byte; var a: buffertype)
Зберігає в оперативній пам'яті вміст прямокутної області екрану.
x1, y1, x2, y2 - Координати області екрана. а - змінна, в яку заноситься адреса області ОП. Процедура loadwindow (x1, y1, x2, y2: byte; var a: buffertype)
Відновлює прямокутну область екрану, попередньо збережену процедурою Savewindow, і звільняє оперативну пам'ять, у якій зберігалися область. Область екрану повинна мати ту ж форму, але, взагалі кажучи, не обов'язково ті ж координати, що і збережена. x1, y1, x2, y2 - Координати області на екрані. а - адреса в оперативній пам'яті, де зберігається область. Модуль Inter
Функція Max (a, b: integer): integer повертає максимум з чисел a і b.
Функція Min (a, b: integer): integer
Повертає мінімум з чисел а і b.
Процедура curs_off
Робить курсор на екрані невидимим.
Процедура Error (s: string);
Створює в центрі екрану вікно червоного кольору необхідного розміру і виводить його повідомлення про помилку, після чого чекає натискання на будь-яку клавішу.
s - Повідомлення про помилку.
Процедура Input (x, y, l: byte; var s: string; w: settype)
Розширена процедура введення. Дозволяє вводити рядок заданої довжини, відстежуючи неприпустимі символи. Дозволяє використовувати клавіші "Ліворуч", "Вправо", Del, Backspase. Дозволяє використовувати рядок за замовчуванням, є можливість Undo.
x, y - Координати вводиться рядки на екрані.
l - Максимальна довжина що вводиться рядка.
s - Рядок за замовчуванням. У ній же повертається введена рядок. Якщо протягом введення була натиснута клавіша ESC, повертається порожній рядок.
w - Безліч допустимих символів. Модуль Files2
Функція FOpen (FName: string; FMode: Word): Word
Відкриває безтіповий файл. Повертає заголовок файлу.
У разі помилки внутрішня мінлива Fsuccess приймає значення False.
Fname - Назва файлу.
Fmode - Режим (0 - тільки для читання, 1 - тільки для запису, 2 - і для читання, і для запису.) Функція FCreate (FName: String; FAttr: Word): Word
Створює безтіповий файл. Повертає заголовок файлу.
У разі помилки внутрішня мінлива Fsuccess приймає значення False.
FName - Назва файлу.
FAttr - атрибути створюваного файлу.
Функція FRead (Handle, Segment, Offset, Bytes: Word): Word
Читає з безтіпового файлу блок. У разі помилки читання внутрішня мінлива Fsuccess приймає значення False. Повертає кількість реально прочитаних байтів.
Наndle - Заголовок файлу.
Segment - Сегментна частина адреси в оперативній пам'яті, в яку проводиться читання.
Offset - Зміщення цієї області щодо сегмента в оперативній пам'яті.
Bytes - Скільки байтів необхідно прочитати.
Функція FWrite (Handle, Segment, Offset, Bytes: Word): Word
Записує в безтіповий файл блок пам'яті. У разі помилки запису внутрішня мінлива Fsuccess приймає значення false. Повертає кількість реально записаних байтів. Наndle - Заголовок файлу.
Segment - Сегментна частина адреси в оперативній пам'яті, з якої відбувається читання.
Offset - Зміщення цієї області щодо сегмента в оперативній пам'яті.
Bytes - Скільки байтів необхідно записати.
Процедура FClose (Handle: Word)
Закриває безтіповий файл. У разі помилки внутрішня мінлива Fsuccess приймає значення False.
Наndle - Заголовок файлу.
Процедура FSeek (Handle: Word; PosPnt: LongInt)
Переміщення покажчик безтіпового файлу.
У разі помилки внутрішня мінлива Fsuccess приймає значення False.
Наndle - Заголовок файлу.
PosPnt - нове положення покажчика.
Функція FTell (Handle: Word): LongInt
Повертає позицію покажчика файлу.
У разі помилки внутрішня мінлива Fsuccess приймає значення False.
Наndle - Заголовок файлу.
Функція FSize (FName: String; FAttr: Word): LongInt
Повертає розмір файлу в байтах.
У разі помилки внутрішня мінлива Fsuccess приймає значення
False.
FName - Назва файлу.
FAttr - Атрибути файлу.
Модуль Field
У програмі використовуються спеціальні об'єкти, які ми надалі будемо іменувати "Таблиця".
Вони описані нижче:
type ftype = array [1 .. 32000] of word
fieldtype = record
field: ^ ftype;
tc, tb: byte;
xmax, ymax: integer;
currentx, currenty: integer;
end;
Функція creatfield (var T: fieldtype; X, Y: integer): integer
Створює таблицю заданого розміру. Повертає ознака успіху.
T - Таблиця.
X - Розмір по горизонталі.
Y - Розмір по вертикалі.
Процедура clearfield (var T: fieldtype; Beg: integer; Textc, Textb: byte)
Очищає створену таблицю і встановлює колір тексту і фону для виводиться інформації.
T - Таблиця.
Beg - Рядок таблиці, починаючи з якої йде очищення.
Textc - колір тексту для виводиться інформації.
Textb - колір фону для виводиться інформації.
Процедура Window_To_Field (T: fieldtype; X1, Y1, X2, Y2, Xx, Yy: integer)
Зберігає прямокутну область екрану в таблицю. Для правильної роботи процедури необхідно, щоб ця область вміщувалася в таблицю, інакше буде збережено тільки частину області.
T - Таблиця.
X1, Y1, X2, Y2 - координати області на екрані.
Xx, Yy - Координати області всередині таблиці.
Процедура field_to_window (T: fieldtype; X1, Y1, X2, Y2, Xx, Yy: integer)
Виводить частину таблиці на екран. Для правильної роботи процедури необхідно, щоб область не виходила за межі таблиці, інакше на екрані буде тільки частина області.
T - Таблиця
X1, Y1 - координати лівого верхнього кута області.
X2, Y2 - координати правого нижнього кута області.
Xx, Yy - Координати області всередині таблиці.
Процедура put_char (T: fieldtype; X, Y: integer; Sym, Textc, Textb: byte)
Виводить в таблицю символ за заданими координатами з заданим кольором тексту і кольором фону.
T - Таблиця.
X, Y - координати в таблиці.
Sym - Код символу.
Textc - Колір тексту.
Textb - Колір фону.
Процедура deletefield (var T: fieldtype)
Видаляє таблицю, вивільняє пам'ять, зайняту їй.
T - Таблиця.
Модуль Data
Процедура strtotable (X, Y, L: integer; Source: arr; T: fieldtype)
Виводить в таблицю рядок символів.
X, Y - координати в таблиці.
L - Максімалная довжина рядка.
Sourсe - Масив, в якому знаходиться рядок.
T - Таблиця.
Процедура numtotable (X, Y, L: integer; D: longint; T: fieldtype)
Виводить в таблицю ціле число.
X, Y - координати в таблиці.
L - Максімалная довжина поля. />
T - Таблиця.
Процедура tabletostr (X, Y, L: integer; var S: string; T: fieldtype);
Зчитує поле з таблиці.
X, Y - координати в таблиці.
L - Максімалная довжина поля.
S - Рядок, в яку поміщається поле.
T - Таблиця.
Модуль Types
Опис типів
rectype = record
len: word;
typ: char;
end;
Запис, що описує поле в базі даних.
len - довжина поля в текстовому поданні.
typ - тип поля.
fileinfo = record
Name: string [20];
Size: longint;
Nf: byte;
Ptr: longint;
Names: longint;
LNames: longint;
end;
Запис, що зберігає інформацію про фото бази даних.
Name - Ім'я реального файлу на диску.
Size - Його розмір.
Nf - Число полів в базі.
Ptr - Посилання на файл опису полів.
Names - Посилання на файл імен полів.
LNames - Довжина ділянки у файлі імен полів.
schet = record
Cod: string [10];
Name: string [30];
Debet, Kredit: longint;
end;
Запис файла рахунків.
Cod - Код рахунку.
Name - Ім'я рахунку.
Debet - Дебет рахунку.
Kredit - Кредит рахунку.
windowtype = record
X1, Y1: byte;
X2, Y2: byte;
Save: buffertype;
X, Y: integer;
NF: integer;
Currentline: integer;
currentrow: integer;
priority: longint;
end;
Запис, що описує об'єкт "вікно" в системі багатовіконного інтерфейсу.
X1, Y1 - координати лівого верхнього кута вікна на екрані.
X2, Y2 - координати правого нижнього кута вікна на екрані.
Save - Буфер, що зберігає образ вікна.
X, Y - Координати вікна лівого верхнього кута в таблиці
NF - Номер файлу бази, з яким пов'язано вікно.
Currenline - Поточна запис у файлі.
Currentrow - Поточне поле у файлі.
Priority - Пріоритет вікна.
fnw = record
Dat: Date;
F: string [25];
Tab: string [10];
Sum: longint;
Cod: string [10];
end;
Запис у файлах нарахувань та стягнень.
Dat - Дата нарахування.
F - Прізвище співробітника.
Tab - Табельний номер.
Sum - Сума.
Cod - Код нарахування.
sp_nal = record
Kod: string [10];
Name: string [25];
Val: string [15];
end;
Запис у файлі-довіднику податків.
Kod - Код податку.
Name - Назва податку.
Val - Величина податку.
string1 = string [15];
pl_p = record
Numb: longint;
D: date;
Source:: string [30];
Bank1: string [30];
Cod1: string [10];
Dest: string [30];
Bank2: string [30];
Cod2: string [10];
Debet: string [10];
Credit: string [10];
Sum: longint;
Target: string [30];
end;
Запис у файлі платіжних доручень.
Numb - Номер платіжного доручення.
D - Дата.
Source - Платник.
Bank1 - банк платника.
Cod1 - Код платника.
Dest - Одержувач.
Bank2 - Банк одержувача.
Cod2 - Код отримувача.
Debet - Дебетуемий рахунок.
Crtedit - кредитований рахунок.
Sum - Сума.
Target - Призначення.
great_book_type = record
num: longint;
target: string [30];
sum: longint;
cod1, cod2: string [15];
end;
Запис у файлі головної книги.
Num - Порядковий номер.
Target - Призначення платежу.
Sum - Сума.
Cod1 - Дебетуемий рахунок.
Cod2 - кредитований рахунок.
levels = record
L: longint;
Coeff: string [15];
end;
Запис у довіднику розрядів.
L-Розряд.
Coeff - Коефіцієнт.
Sp_sotr = record
Tab: string [10];
Name: string [25];
Raz: longint;
Oklad: longint;
Prof: string [6];
Obosnov: string [30];
end;
Запис у довіднику співробітників.
Tab - Табельний номер
Name - П.І.Б.
Raz - Розряд.
Oklad - Оклад.
Prof - Членство в профспілці.
Obosnov - Обгрунтування окладу.
spr_nw = record
Kod: string [10];
Name: string [30];
end;
Запис у файлі-довіднику нарахувань.
Кod - Код нарахування.
Name - Найменування нарахування.
index = record
Beg: longint;
Key: date;
Len: longint;
end;
Запис в індексному файлі.
Beg - Адреса початку даних.
Кеу - Ключ для доступу.
Len - Довжина даних.
Sal = record
Num: longint;
Dd: date;
Tab: string [10];
Oklad: longint;
Pn: longint;
Penf: longint;
Ost: longint;
Plus: longint;
Minus: longint;
Itog: longint;
end;
Запис у відомості зарплати.
Num - Номер по порядку.
Dd - Дата.
Tab - Табельний номер.
Oklad - Оклад.
Pn - Прибутковий податок.
Penf - Пенсійний фонд.
Ost - Залишок.
Plus - Нарахування.
Minus - Стягнення.
Itog - Всього на руки.
Модуль Main
Процедура Readfileinfo (Number: integer; var R: rec; var Name: string1; var N: integer; var Aon: strarr)
Процедура зчитує структуру робочого файлу з файлу-каталогу. Number - Номер робочого файлу. R-Масив, в якому повертається інформація про файл. Масив містить стільки елементів, скільки полів у робочому файлі.
Name - Ім'я робочого файла.
N-Кількість полів у робочому файлі.
Aon - Масив, в якому зберігаються імена полів робочого файлу. Масив містить стільки елементів, скільки полів у робочому файлі.
Функція Exists (Fname: string1): boolean
Функція перевіряє наявність файлу на диску.
Повертає True, якщо файл існує, і False в противному випадку.
Fname - Назва файлу.
Процедура Check_begin
Процедура перевіряє працездатність програми.
Спочатку перевіряється кількість вільної пам'яті, потім існування необхідних внутрішніх файлів системи.
Функція Vmenu (Size, Current, X1, Y1, Len, Mask: byte): integer
Функція обробки вертикального меню невеликого розміру.
Використовується, якщо всі пункти меню поміщаються на екране.Возвращает номер обраного елемента.
Size - Розмір меню по вертикалі.
Current - Номер елемента, на якому спочатку варто покажчик.
X1, Y1 - координати першого елементу.
Len-Довжина елементів.
Mask - Змінна, що показує, як змінювати колір фону і символу у виділеного елемента.
Процедура Translate (S: string; var Ns: string)
Процедура призначена для розшифровки паролів, лічених з файлу паролів.
S - Зашифрована рядок.
Ns - розшифрувати рядок.
Процедура Input_key (var S: string; Ss: string; L: byte; W: settype)
Процедура створює на екрані вікно і зчитує в ньому з клавіатури трочку. Після цього процедура відновлює старе вміст екрана.
S - Введена рядок.
SS - Рядок підказки.
L - Максимальна довжина рядка.
W - Безліч допустимих символів в рядку.
Процедура Querry_parole
Запит на початку роботи паролі і по них визначає статус користувача і його повноваження.
Функція Is_number (S: string): boolean
Перевіряє, чи є рядок числом.
S - Перевіряється рядок.
Процедура Stringtotable (S: string; X, Y: integer; T: fieldtype)
Процедура поміщає довільну рядок у таблицю за заданими координатами.
S - Рядок.
X, Y - Координати рядка в таблиці.
T - Таблиця.
Процедура Memcopy (P1, P2: pointer; L: word)
Процедура копіює ділянку пам'яті.
P1 - Адреса джерела.
P2 - Адреса приймача.
L - Довжина ділянки.
Процедура Help (Index: integer)
Процедура активізується після натискання клавіші F1 і видає контекстно-орієнтований Help.
Index - Номер контексту.
Функція StrtoDate (Str: string; var D: date): integer
Перекладає дату з рядковий запису у внутрішній формат. Повертає 0 в разі успіху. Str - Рядок, що містить дату.
D - Запис, що містить дату після роботи процедури.
Функція Move_file (Source, Dest: string1): integer
Копіює файл. Повертає 0 в разі успіху, -1 у разі браку пам'яті, -2 у разі помилки читання або запису на диск.
Source - Назва початкового файлу.
Dest - Ім'я нового файлу.
Процедура Lines (T: fieldtype, R: rec; N, N1: integer)
Процедура поділяє таблицю на шапку і графи шляхом внесення в таблицю символів псевдографіки. Використовується при друці таблиць.
T - Ім'я таблиці.
R - Масив, що зберігає опис структури файлу бази.
N - Кількість стовпців в таблиці.
N1 - Кількість рядків у таблиці.
Функція Load_data_file (Fname: string1; D: date): integer
Функція шукає в архіві файл, пов'язаний з ключем - датою і робить це фото поточним.
Fname - Файл, в кото