АРМ для бухгалтерии ВУЗа

Загрузить архив:
Файл: arm.zip (30kb [zip], Скачиваний: 155) скачать

                                - 3 -

                             ОГЛАВЛЕНИЕ

   ГЛАВА  1

    1.1 Постановка задачи и ее экономическая сущность............... 4

     1.1.1 Формальная постановка задачи расчета

             заработной платы....................................... 6

     1.1.2 Требования к программной реализации...................... 9

    1.2 Технология решения задачи................................... 11

     1.2.1 Сущность АРМ............................................. 11

     1.2.2 Типоваяструктура АРМ................................... 12

     1.2.3 Классификация АРМ........................................ 14

     1.2.4 Выбор средств для реализации............................. 16

   ГЛАВА 2

     2.1 Сценарий диалога с пользователем........................... 18

     2.2 Структура комплекса АРМ "Бухгалтер"........................ 22

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

     2.4 Описание модулей программы................................. 27

   ГЛАВА 3

     3.1 Надежность программного изделия............................ 54

      3.1.1 Основные определения.................................... 54

      3.1.2 Модель Миллса........................................... 57

     3.2 Эффективность программного изделия......................... 59

     3.2.2 Оценка эффективности программного комплекса.............. 64

     3.3 Тестирование комплекса..................................... 65

   Основные обозначения............................................67

   Список литературы...............................................68


                          -4-

                                ГЛАВА 1

    1.1 Постановка задачи и ее экономическая сущность.

    Очевидно, что в работе бухгалтерии профсоюзного комитета ВУЗа есть много

    технической, рутинной работы, которая хорошо поддается автоматизации.

    Хранение документовв виде компьютерных данных на диске безусловно

    более целесообразно, чем хранение их в классическом виде, то есть в виде

    бумаг. Значительно упрощается поиск нужного документа, имеется возможность

    хранить данные за много лет и не путаться в них, сильно упрощается изменение

    любого документа, составление многочисленных справок.

    Всю работу бухгалтерии можно разделить на несколько основных подпунктов:

     1. Работа со справочной и нормативной информацией. В качестве основных

        тут можно отметить справочник различных начислений сотрудникам,

        справочник сотрудников с хранящимися в нем фамилией сотрудника,

        его табельным номером, окладом,полем, показывающим, является ли он

        членом профсоюза, обоснованием оклада, справочник налогов с


                               - 5 -

        хранящимися названием и размером налога, справочником по тарифной

        сетке, и другие.

        Необходимо поддерживать своевременное изменениеэтой информации,

        организовать гибкую систему справок.

     2. Ведение записной книжки бухгалтера. Эта книжка как бы дублирует

        Главную книгу и служит для контроля. В ней отражаются любой приход

        или расход денег. По этой книге каждый месяц необходимо подводить

        баланс и проверять, сколько денег осталось на каждом из счетов.

    3. Расчет платежной ведомости организации. При подсчете заработной

       платы необходимо учитывать файл, в котором хранятся начисления

       сотрудникам за почасовую работу. Следует автоматизировать

       вычитание разнообразных налогов, учитывать льготы различным

       категориям сотрудников. Системадолжна  следитьзафондом

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

       при перерасходе фонда, и наоборот, учитывать экономию фонда

       и учитыватьэту  экономиювдальнейшем. Программа должна

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

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

   4.  Ведение файла, в котором отражается выдача различныхльгот

       в подведомственной организации.Должно быть возможно путем

       несложного запроса выяснить, сколько и каких льготполучал

       каждый конкретный сотрудник за какой-то период времени.

   5. Работа с банками. Необходимо автоматизироваь учет и хранение

      банковских документов, как-то: платежные поручения,банковские

      обьявления, выписки из банка на каждую проведенную операцию


                              -6-

6. Работа с главной книгой. Пользуясь различными введенными

     документами, программа должна генерировать записи в главной

     книге, подсчитывать баланс по ней, позволять просматривать

     главную книгу для контроля.

   1.1.1. Формальная постановка задачи расчета заработной платы.

       ┌───────────────┐ Фонд

       │Государственный│ зарплаты

       │Комитет        ├──────┐   Профсоюзные  ┌─────────────┐

       │по народному   │      │   взносы       │Банк         │

       │образованию    │      │   ┌────────────┼─────────────┼──┐

       │               │      │   ││счет профкома││

       │               │      │   │            ├─────────────┤│

       └───────────────┘      │   ││             ││

                              │   │            └─────────────┘│

                              │   │                             │

                         ┌────┴───┴──┐                          │

                         │МЭСИ       ├────────┐                 │

                         │           │Профком ├─────────────────┘

                         └───────────┴────────┘ Фонд зарплаты

                                                профкома


                             -7-

               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  - Количество сотрудников профкома.


                         -8-

      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-го сотрудника.


                              -9-

     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 Требования к информационной технологии.

    Вся система должна обладать надежностью, необходимо предусмотреть

    самые неожиданные действия пользователя, и, если они неправильны,

    программа должна обьяснить, как именно сделать то, чего хочет

    пользователь.

    Так  какпрограммаимеет  делосматериальными ценностями,

    необходимозащищать апрограмму и данные от несанкционированного

    доступа и изменения. Специфика работы бухгалтерии показывает,


                              -10-

    что удобнее всего это сделать при помощи двухуровневой системы

    паролей. Один пароль находится у председателя профкома, второй

     - у бухгалтера. При введенииодного из паролей система должна

    позволять  просматривать, нонеизменять  данные,придвух

    правильно  введенныхпаролях - позволять ипросматривать, и

    изменять дакнные. Если ни один пароль не был введен правильно,

    то система должна идентифицировать пользователя как "чужого" и

    отказаться с ним работать.

    Должна существовать возможность перевода документов с машинных

     носителей  в обычный вид.

    Система должна работать на машинах , совместимых с IBM PC,

    под управлением дисковой операционной системы MS-DOS.

1.2  Технология решения задачи.

     На современном этапе автоматизации управления общественным

     производством наиболее перспективным является автоматизация

     планово-управленческих функций на базе персональных ЭВМ,

     установленных непосредственнона рабочих местах специалистов.

     Эти системы получили широкое распространение в организационном

     управлении под названием автоматизированных рабочих мест(АРМ).

     Специфика деятельности бухгалтерии профсоюзного комитета ВУЗа

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

     рабочего места(АРМ). Это позволит использовать систему людям,

     не имеющим специальных знаний в области программирования, и

     одновременно позволит дополнять систему по мере надобности.


                                 - 11-

     1.2.1 Сущность АРМ.

      Автоматизированное рабочее место (АРМ) можно определить как

     комплекс информационных ресурсов, программно-технических и

     организационно-технологических средств индивидуального и кол-

     лективного пользования, обьединенных для выполнения определенных

     функций профессионального работника управления.

       С помощью АРМ специалист может обрабатывать тексты, посылать и

     принимать сообщения, хранящиеся в памяти ЭВМ, участвовать в сове-

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

     расчеты и получать готовые результаты в табличной и графической

     форме. Обычно процессы принятия решений и управления в целом реали-

     зуются  коллективно, но необходима проблемная реализация АРМ управ-

     ленческого персонала, соответствующая различным уровням управления

     и реализуемым функциям. Подготовка информации для принятия решений,

     собственно принятие решений и их реализация могут иметь много общего

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

     являются являются типовыми для многих предприятий. Это позволяет

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

    В основу конструирования АРМ положены следующие основные принципы:

     1. Максимальная ориентация на конечного пользователя, достигаемая

     созданием инструментальных средств адаптации АРМ к уровню подготовки

     пользователя, возможностей его обучения и самообучения.

     2. Формализация профессиональных знаний, то есть возможность

     предоставления с помощью АРМсамостоятелно автоматизировать новые

     функции и решать новые задачи в процессе накопления опыта работы

      с системой.


                            - 12 -

      3. Проблемная ориентация АРМ на решение определенного класса

      задач, обьединенных общей технологией обработки информации,

      единством режимов работы и эсплуатации, что характерно для

      специалистов экономических служб.

      4. Модульностьпостроения, обеспечивающая сопряжение АРМ с

      другими элементами системы обработки информации, а также

      модификацию и наращивание возможностей АРМ без прерывания его

      функционирования.

      5. Эргономичность, то есть создание для пользователя комфортных

      условий труда и дружественного интерфейса общения с системой.

      1.2.2. Типовая структура АРМ.

       Создание АРМ для систем организационного управления предполагает

      проведениеих  структуризациии   параметризации   на  стадии

      проектирования.СтруктуризацияАРМ  включаетописаниесреды

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

     связей между  ними, интерфейсов с  пользователеми техническими

      средствами, средствинформационного и программногообеспечения

      Параметризация предусматривает выделение и исследование параметров

      выделение иисследование  параметровтехнических,программных

      и информационных средств, удовлетворяющих требованиям и ограничениям,

      сформированным при структуризации

       Структурно АРМ включаетфункциональную иобеспечивающую части.

       Функциональная часть  определяет содержание конкретного АРМ  и

      включает  описание совокупности взаимосвязанных задач, отражающих


                               - 13 -

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

      В основе разработки функционального обеспечения лежат требования

      пользователя к АРМ и его функциональная спецификация, включающая

      описание  входнойивыходной  информации,средстви  методов

      достижениядостоверности  икачестваинформации,  применяемых

      носителей, интерфейсов связи. Обычно сюда же относятся описания

      средств защиты отнесанкционированного доступа, восстановления

      системы в сбойных ситуациях, управление в нестандартных случаях.

       Обеспечивающая часть включаеттрадиционные  видыобеспечения:

      информационное,   программное,  техническое,   технологическое,

      и другие.

       Информационноеобеспечение  включаетописание   организации

      информационнойбазы,  регламентируетинформационные связи,

      предопределяет состави содержание всей системы информационного

      отображения.

       Программноеобеспечение  АРМ   подразделяетсяна  общееи

      функциональное. Общеепрограммное  обеспечениепоставляется в

      комплекте с ПЭВМ и включает операционные системы, прикладные

      программы,   расширяющие  возможностиоперационных   систем,

      программные средства диалога и другие. Общее ПО предназначено

      для управления работой процессора, организации доступа к памяти,

      периферийнымустройствам,  запускаиуправления  процессором,

      выполнения прикладных программ, обеспечения выполнения программ

      на языках высокого уровня.

       Функциональное программное обеспечение предназначено для

      автоматизации решения функциональных задач, включает универсальные

      программы  ифункциональные пакеты. При проектированииэтих

      программных средств необходимо соблюдать принципы ориентации

      разработки на конкретного пользователя. Совокупность требований


- 14 -

      к  программномуитехническому обеспечению отображается на

      множестве функций пользователя, и этопозволяет решать проблему

      профессиональной ориентации на пользователя.

       Техническоеобеспечение  АРМпредставляетсобой  комплекс

      техническихсредств  обработкиинформациина  базе   ПЭВМ,

      предназначенныйдля  автоматизациифункцийспециалиста  в

      предметной и проблемной областях его профессиональных интересов.

      АРМ  специалистасферыорганизационногоупрвления   обычно

      базируется на ПЭВМ индивидуального или коллективного пользования.

       Технологическое обеспечение АРМпредназначено для организации

      технологическогопроцесса  использованияАРМ применительно к

      комплексу решаемых задач, соответствующих функциям специалиста.

      Технологическийпроцесс  представляет собой   совокупность

      функциональных работ, включающих обеспечение ввода, контроля,

      редактирования и манипулирования данными, накопление, хранение,

      поиск, защиту, получение выходных документов. В связис тем,

      что пользователь является, как правило, участнирком некоторого

       коллектива и выполняет в нем определенную работу, необходимо

       предусмотреть технологическоевзаимодействиеисполнителей

       при  решениизадач,обеспечить  условие совместной работы

       специалистов.Эти   положения   должны   отражаться   в

       квалификационныхтребованиях  идолжностныхинструкциях

       пользователей АРМ.


-15-

     1.2.3 Классификация   АРМ.

         В  основуклассификации АРМ может быть положен ряд класси-

       фикационных признаков. С учетом областей применения возможна

       классификация АРМ по функциональному признаку :

         1. АРМ административно - управленческого персонала;

         2. АРМ проектировщика радиоэлектронной аппаратуры, автомати-

зированных систем управления и т.д.

         3. АРМ специалиста в области экономики, математики, физики,

и т. д.

         4. АРМ производственно-технологического назначения.

          Важным классификационным признаком АРМ является режим его

       эксплуатации, по которомувыделяются одиночный, групповой и

       сетевой режимы эксплуатации. В первом случае АРМ реализуется

       на  обособленнойПЭВМ,все  ресурсыкоторыйнаходятся  в

       монопольном распоряжениипользователя. Такое рабочееместо

       ориентировано на решение нестандартных, специфических задач,

       и для его реализации применяются ЭВМ небольшой мощности.

          При  групповомрежимеэсплуатации  набазеодной  ЭВМ

       реализуетсянесколько рабочих мест, обьединенных по принципу

       административнойили  функциональной общности. В этом случае

       требуются уже   болеемощныеЭВМ   идостаточно   сложное

       программное обеспечение. Групповойрежим  эсплуатации обычно

       используетсядля организации распределенной обработки данных

       в  пределахотдельногоподразделения  илиорганизациидля

       обслуживания стабильных групп специалистов и руководителей.


                              -16-

          Сетевойрежим  эксплуатацииАРМобьединяет  достоинства

       первого и второго. В этом случае каждое АРМ строитсяна базе

       одной ЭВМ, но в то же время имеется возможность использовать

       некоторые общие ресурсы вычислительной сети.

          Одним   из  подходовкклассификации  АРМявляетсяих

       систематизация по видамрешаемых задач. Возможныследующие

       группы АРМ:

         1. Для решения информационно-вычислительных задач;

         2. Для решения задач подготовки и ввода данных;

         3. Для решения информационно-справочных задач;

         4. Для решения задач бухгалтерского учета;

         5. Для решения задач статистической обработки данных;

         6. Для решения задач аналитических расчетов;

          Обоснованноеотнесения  АРМ копределеннойгруппе будет

       способствовать   более  глубокомуитщательному    анализу,

       возможности сравнительнойоценки различныходнотипных  АРМ

       с целью выбора наиболее предпочтительного.

     1.3 Выбор технических средств для реализации.

     Для реализации программного комплексавыберем систему программирования

     Borland Pascal ver. 7.0.

     Этот выбор позволит, во-первых, создать эффективный программный код,

     а во-вторых, позволит сделать систему открытой и впоследствии

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


                              -17-

     представляется нецелесообразным использовать какой-либо стандартный

     формат данных, такой, как, например, DBASE-формат. Использование

     этих форматов сильно замедлит работу с данными, увеличит их обьем

     и не даст никаких очевидных преимуществ.

     Для упорядочения файлов системы представляется разумным создать

     файл-каталог системы, в котором будет храниться имя каждого файла

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

     форматы файлов, то есть позволит изменять форматы файлов, не

     перекомпилируя системы.

     Для системы необходимы поля трех типов - числовой, строковый и дата.

     В файле-каталоге при перечислении полей указывается тип поляи

     максимальныйразмер этого поля при выводе.

     В систему имеет смысл встроить систему " Архив". Так как данные

     системы нужно хранить длительноевремя, то, чтобы не загружать

     данными файлы , имеет смысл базу разделить на текущие данные,

     которые подвергаются изменению, и архив, который не изменяется.

     Текущий файл можно записать в архив, поставив ему в соответствие

     уникальный ключ-дату. Таким образом, ситуация напоминает обычную

     картотеку - данные делятся на текущие, лежащие на столе, и архив,

     который лежит в папках на полках.


                               -18-

          ГЛАВА 2

     2.1 Сценарий диалога с системой.

      В начале работы программа спрашивает пароли, чтобы определить

    статус пользователяи  егополномочия.Система  спрашивает

    последовательно   два  пароля,известных   соответсвенно

    председателю профкомаи  бухгалтеру.Приправильном  вводе

    одного из паролей пользователь получает доступ к просмотру, но

    не изменению данных системы. Если оба пароля введены правильно,

    то система позволяет просматривать и изменять данные, если же

    оба пароля введены неправильно, то система отказывает пользователю

    в доступе.

       Непосредственно после ввода паролей на экране появляется

    приветствие  пользователяизапрос  сегодняшнейдаты.Эта дата

    используетсяпо  умолчаниюпривводе в  полях,имеющихтип

    "Дата". В этом запросе пользовательможет либо подтвердить ту

    дату, которая стоит на машине по умолчанию, нажатием "Enter" либо

    ввести новую дату, если дата на машине установлена неправильно.

    После  этогонаэкране  высвечиваетсяглавное меню системы

    (  Экран 1). При помощи стрелок управления курсором пользователь

    выбирает интересующий его пункт.

       Выбор первого пункта означает, что пользовательжелает просмотреть

    нормативно - справочнуюинформацию, использующуюсяв  системе. При

    выборе этого пункта на экране высвечивается меню нормативно-справочной

    информации (Экран    2). В зависимости от выбора пользователя ему

    предоставляется возможность просмотреть и редактировать тот или иной

    справочник. Отменарежима справочников осуществляется клавишей

    ESC. В этом случае система возвращается в предыдущее меню.


                              -19 -

       Выбор второго пункта означает, что пользователь хочет работать

    с записной книжкой бухгалтера, в которой хранятся дааные о выдаче

    кредитов, материальной помощи и так далее. ( Экран 3).

    Пользователь может вводить новыеданные в записную книжку( выбор

    первого  пункта), илиосуществлять поиск в текущих данных (выбор

    пункта 2). Вэтом  режимепользовательвводит  табельный номер

    интересующего его сотрудника и получает список всех выданных этому

    сотруднику льгот. Выход из режима осуществляется клавишей ESC.

      Выбор третьего пункта дает возможность пользователю рассчитать

    заработную плату сотрудников профкома(Экран   4). В этом режиме

    пользователь может просматривать и редактировать файл начислений

    (выбор первого пункта меню), файл взысканий с сотрудников (второй

    пункт), список сотрудников с окладами (третий пункт), просматривать

    общий фонд заработной платы( четвертый пункт), а также поэтапно

    рассчитывать заработную плату. Сначала пользователь может посчитать

    оклад сотрудников вместе со всеми начислениями (пятый пункт). При

    этом  система запроситунего дату, которая показывает, за какой

    месяц начисляется зарплата. Он может также посчитать все взыскания

    с сотрудников за этот месяц. Для этого пользователь должен выбрать

    6-й пункт меню и ввести дату, за которую считаются взыскания.

    Пользовательможет  отдельнопосчитатьналоги,  вычитаемыес

    заработной платы (седьмой пункт) или получить сразу полную

    ведомость. При выборе девятого пункта система подсчитывает экономию

    фонда  заработнойплатыв  каком-дибогоду.Выход  изрежима

    осуществляется клавишей ESC.


                              -20-

       Выбирая четвертыйпункт  Главногоменю,пользователь  выбирает

    работу  сведомостьюзаработной платы ( Экран 5). Вэтом  режиме

    пользователь можетпросмотреть ведомость, причем если ведомость не

    была  рассчитана, тосистемарассчитает ее, распечатать ведомость,

    занести  еевархив, найти  ведомостьвархиве. Выход  из режима

    осуществляется клавишей ESC.

       При  выборепятого пункта меню пользователь получает возможность

    работать с  банковскими документами ( Экран 6). Он  можетвводить и

    просматриватьплатежные  поручения, банковскиевыписки, банковские

    обьявления на взнос.

       При выборешестого пункта пользователь выбирает работу с главной

    книгой бухгалтера ( Экран 7). В этом режиме он может приказать системе

    добавить в главнуюкнигу  данные по последней  ведомостизаработной

    платы, добавить данные по последним платежным поручениям, просмотреть

    главную книгу.

       Выбор седьмого пункта меню дает возможность пользователю просмотреть

    сальдо счетов.( Экран 8) Для того, чтобы система подсчитывала сальдо во

    какому-нибудь конкретному счету, он должен находиться в списке счетов.

       В этом режиме пользователь может рассчитать текущее сальдо, просмотреть

    его, занести сальдо в архив или найти его в архиве. При поиске или

    занесении в  архивсальдоу  пользователя спрашивается уникальный

    ключ-дата, который будет будет связан с этим сальдо.

       В  режимередактирования любого файла данных системы пользователь

    имеет возможность получить справку об активных в данный момент клавишах

    с  помощьюнажатияF1. Также  пользовательможетизменить по своему

    выбору  размеры и местоположениена экранеокна, в котором происходит


                               -21-

    редактированиефайла  данных. Пользовательможет одновременно открыть

    еще  несколькофайловданных  одновременно, если ему нужно просмотреть

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

    вводит очередные начисления сотрудникам. При вводе табельного номера

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

    этом  случаеемунужно нажать клавишу F10, выбрать из предлагаемого

    списка ( Экран 9 ) пункт " Cписоксотрудников", и на экране появится

    окно с номером 2, в котором будет отражаться файл сатрудников. Теперь

    пользователь    должен  нажатьCtrl - F5    для   переходаврежим

    изменения размера окна, расположить первое и второе окна так, чтобы они

    не перекрывались, и продолжатьвводить файл начислений. При этом список

    сотрудников с их фамилиями будут у него перед глазами.


                               -  22-

    2.2 Структура программногокомплекса.

                              ┌──────────────┐

                              │              │

                              │   main       │

                              │              │

                              └─────┬────────┘

                                    │

    ┌──────────────┬───────┬───────┬┴──────┬────────┬─────────┬──────────┐

    │              │       │       │       │        │         │          │

    │        ┌─────┴─────┐ │  ┌────┴──────┐│  ┌─────┴─────┐   │   ┌──────┴───┐

    │        │ Spr_work│ ││ saldo_work│││ Regimes   │   │   │ bank     │

    │        └────┬──────┘ │└───┬───────┘│  └──────┬────┘   │   └─────┬────┘

┌──┼──┬──┬─┬──┬─┐│┌─────┴─────┐│┌───────┴────┐    │    ┌───┴───────┐ │

1  234 56 7││ Greatbook │││ salarywork │    │    │ Copybook│ │

                  │  └────┬──────┘│└─────┬──────┘    │    └──────┬────┘ │

                  │       │       │      │           │           │      │

                  8    ┌──┴─┐ ┌─┬─┼─┬─┐│      ┌─┬──┴──┬──┬──┐│      8

                       28   8 8 14 12 13 │      8 14    22 23 24 │

                                    ┌─┬─┬┴─┬──┬──┬───┐           │

                    2               9 8 10 11 12 13 14      5    │

    1              │                3         4             │    8

    │              │                │         │             │

    │              │                │         │             │

┌──┴───────┐ ┌────┴────────┐  ┌────┴─────┐ ┌─┴────────┐ ┌──┘──────┐

│ load_crc │ │check_begin││          │ │          │ │ good    │

│          │ │             ││querryparo│ │creatcrc│ │morning│

└──────────┘ └─────────────┘  └──────────┘ └──────────┘ └─────────┘

      │6                │7                 │8           │9

      │                 │                  ││

┌────┴────────┐        ├───────────┐ ┌────┴───────┐┌───┴────────┐

│loadwindow   │        │savewindow │ │   global   ││   salary   │

│             │        │           │ ││││

└─────────────┘        └───────────┘ └─────┬──────┘└────────────┘

                                            │

   │                                        │

11│                   12         13│ ┌──┬──┼───┬───┬─┬─┐14

   │                    │           │ 151617 18 │ │21   │

   │                    │           │              19 20    │

┌─┴──────────┐ ┌───────┴───────┐┌──┴────────────┐     ┌────┴───────┐

│checksalary1│ │Load_data_file ││save_data_file │     │ input_key│

└────────────┘ └───────────────┘└───────────────┘     └────────────┘


                             -23-

     15│                 16│              17│         18│

       │                   │                │           │

┌──────┴─────────┐   ┌─────┴──────┐ ┌───────┴──┐        ├──────────┐

│ readfileinfo   │   │writetable│ │readtable │        │edittable │

└────────────────┘   └────────────┘ └──────────┘        │          │

                                                        └──────┬───┘

   19│               20│              21│                  ┌───┼──┬────┐

     │                 │                │                 17   25 16   │

┌───┴─────────┐   ┌───┴─────────┐ ┌────┴────────┐                    26

│  printtable │   │ creatfield│ │ clearfield│

└─────────────┘   └─────────────┘ └─────────────┘

   22│              23│          24│             25 │          26│

     │                ││                │            │

┌───┴────────┐   ┌───┴────┐  ┌────┴─────┐     ┌────┴───────┐ ┌──┘────────┐

│    add     │   │  sub   ││  nalogs│     │   help     │ │editwindow │

└────────────┘   └────────┘  └──────────┘     └────────────┘ └───────────┘

    27│                  28

      │                    │

┌────┴───────┐      ┌─────┴──────┐

│ search     │      │  great     │

└────────────┘      └────────────┘


                              -24-

    2.3  Схема модуля вычисления зарплаты.

                              │

                      ┌───────┴───────┐

                      │открытьf1,f4 │

                      │n = fsize (f1) │

                      └───────┬───────┘

                            6 │

                       ┌──────┴────────┐да 7

                       │ конец файла?  ├───────

                       └──────┬────────┘

                              │

                       ┌──────┴───────────┐

                       │ считываем в маs│

                       │ 1 запись         │

                       └─────┬────────────┘

                             │

                      ┌──────┴────────┐

                      │ww=0xx =0    │

                      └──────┬────────┘

                     ┌───────┴───────┐

                     │открываем файл │

                     │начислений F2│

                     │               │

                     └───────┬───────┘

                             │

                      ┌──────┴────┐

                      │ конец f2  ├─────────────────────┐

                      └──────┬────┘                     │

                      ┌──────┴────────────┬────┐        │

                      │cчитываем из F2 rr │    │        │

                      └──────┬────────────┘  │        │

                  ┌──────────┴─────────┐ нет   │        │

                  │   mas.tab = rr.tab?├───────┘        │

                  └──────────┬─────────┘                │

                             │да                        │

                  ┌──────────┴──────────────┐           │

                  │    inc(ww ,rr.sum)      │           │

                  └──────────┬──────────────┘           │

                             │                          │

                    ┌────────┴─────────┬────────────────┘

                    │открываем F3      │

                    │файл взысканий    │

                    └──────┬───────────┘

                           │

                           │

                    ┌──────┴────────┐

                    │ конец F3      ├─────────────────┐

                    └──────┬────────┘                 │

                    ┌──────┴────────────┬───┐         │

                    │cчитываем из F3 rr │   │         │

                    └──────┬────────────┘   8         │

                           2                          3


                            -25-

                           2                 8         3

                ┌──────────┴─────────┐ нет   │        │

                │   mas.tab = rr.tab?├───────┘        │

                └──────────┬─────────┘                │

                           │да                        │

                ┌──────────┴──────────────┐           │

                │    inc(xx,rr.sum)       │           │

                └──────────┬──────────────┘           │

                           │                          │

                           ┼──────────────────────────┘

                   ┌───────┴─────────────┐

                  │s.tab = mas.tab      │

                   │s.name = mas.name    │

                   │s.okl = mas.oklad    │

                   │s.plus = ww          │

                   │s.minuis = xx        │

                   └────────┬────────────┘

                            │

                ┌───────────┴────────────┐ нет

                │    есть ли декларация? ├──────┐

                │       dekl             │      │

                └───────────┬────────────┘      │

                            │ да        ┌─────┴────────┐

                            │ 4           │dekl = 0    │

                                          │              │

                                          └─────┬────────┘

                                                │4


                           -26-

                           4

                           │

             ┌─────────────┴─────────────┐да ┌──────────────────────┐

             │dekl   < 10000000          ├─────┤ s.pn =(s.okl+ ww-  ├─┐

             └─────────────┬─────────────┘     └──────────────────────┘ │

             ┌─────────────┴──────────┐│

             │ s.pn = (s.okl+ww  -││

             │         -  xx   -      ││

             │         - 833333) *0.2+││

             │         +100000        ││

             └─────────────┬──────────┘                                 │

                           │                                            │

                           ├────────────────────────────────────────────┘

                 ┌─────────┴──────────────┐

                 │s.penf = (s.okl+ ww   - │

                │- xx)*0.01              │

                 └─────────┬──────────────┘

                           │

                  ┌────────┴───────────────────┐

                  │s.itog = s.okl+ww[i] -xx[i]-│

                  │-s.pn - p.penf              │

                  └────────┬───────────────────┘

                  ┌────────┴───────────────────┐

                  │         запись s           │

                  └───────┬────────────────────┘

             6│

──────────────┘

                              │7

                   ┌──────────┴───────┐

                   │     конец        │

                   └──────────────────┘


                              -27-

    2.4    Описание mодулей и процедур  программы.

                 ┌──Главная программа

                 │

                 │

                 ├─работа со справочниками────────────────────────┐

                 │                                                  │

                ├─ работа с записной книжкой ─────────────────────┐│

                 │                                                 ││

                 ├─ вычисление заработной платы ──────────────────┐││

                 │                                                │││

                 ├─ операции с расчетной ведомостью ────────────┐ │││

                 │                                              │ │││

                 ├─ работа c банковскими документами───────────┐│ │││

                 │                                             ││ │││

                 ├─ работа с главной книгой───────────────────┐││ │││

                 │                                            │││ │││

                 └─ работа с сальдо счетов───────────────────┐│││ │││

                                                             ││││ │││

                                                             ││││ │││

                                             подсчет сальдо ─┤│││ │││

                                             (saldo)         ││││ │││

                                           просмотр сальдо  ─┤│││ │││

                                           global            ││││ │││

                                     запись сальдо в архив  ─┤│││ │││

                                        save_data_file       ││││ │││

                                    чтение сальдо из архива ─┤│││ │││

                                        load_data_file       ││││ │││

                                             печать сальдо─┘│││ │││

                                        printtable            │││ │││

                                                              │││ │││

                                                              │││ │││

                              добавление данных по зарплате─┤││ │││

                                salary_great_book             │││ │││

                                добавление данных по банку   ─┤││ │││

                                 scan_bank_for_great          │││ │││

                                     просмотр главной книги  ─┘││ │││

                                    global                     ││ │││

                                                               ││ │││

                                                               ││ │││

                                     ввод платежных поручений ─┤│ │││

                                       global                  ││ │││

                                    ввод обьявлений на взнос  ─┤│ │││

                                       global                  ││ │││

                                        ввод выписок из банка ─┘│ │││

                                       global                   │ │││

                                                               │ │││


                                                                │ │││

                           -28  -                             │ │││

                                                                │ │││

                                           получение ведомости ─┤ │││

                                            salary              │ │││

                                            просмотр ведомости ─┤ │││

                                             global             │ │││

                                            занесение в архив─┤ │││

                                             save_data_file     │ │││

                                              чтение из архива ─┤ │││

                                            loads_data_file     │ │││

                                             печать ведомости   ┘ │││

                                             printtable           │││

                                                                  │││

                                    просмотр файла начислений    ─┤││

                                       global                     │││

                                      просмотр файла взысканий   ─┤││

                                        global                    │││

                                              расчет начислений  ─┤││

                                              add                 │││

                                               расчет взысканий   ┘││             ┘

                                                 sub               ││

                                                                   ││

                                          ввод в записную книжку─┤│

                                                 global            ││

                                          поиск в записной книжке ─┘│

                                              search                │

                                                                    │

                                           справочник начислений   ─┤

                                               global               │

                                              справочник налогов   ─┤

                                                global              │

                                       спроавосчник общих налогов─┤

                                                global              │

                                             справочник разрядов   ─┤

                                               global               │

                                   справочник минимальной зарплаты ─┤

                                             read_min_salary        │

                                                 таблица аудита    ─┘

                                               global


                          -29-

   ┌───────────┬─────────────────────────┬──────────────┬─────────────────┐

   │ Модуль    │         Назначение      │ Вход.файл    │  Выход.файл     │

   │           │                         │              │                 │

   │ spr_work│ Работа со справочной    │ salary.dat   │ salary.dat      │

   │           │ информацией             │ spr2.arm     │ spr2.arm        │

   │           │                         │ spr3.arm     │ spr3.arm        │

   │           │                         │ spr4.arm     │ spr4.arm        │

   │           │                         │ spr5.arm     │ spr5.arm        │

   │           │                         │ spr6.arm     │ spr6.arm        │

   │           │                         │ audit.arm    │ audit.arm       │

   │           │                         │              │                 │

   │Saldo_work │Работа с сальдо счетов   │ great.arm    │ saldo.arm       │

   │           │                         │ saldo.arm    │ saldo.ind       │

   │           │                         │ saldo.ind    │ saldo.sav       │

   │           │                         │ saldo.sav    │ prn             │

   │           │                         │              │                 │

   │ Great     │ Работа с главной книгой │ Great.arm    │ great.arm       │

   │           │                         │ bank3.arm    │ prn             │

   │           │                         │ sal.arm      │                 │

   │           │                         │              │                 │

   │  copybook │ Работа с записной       │ copybook.arm │copybook.arm     │

   │           │ книгой бухгалтера       │              │                 │

   │           │                         │              │                 │

   │salary_work│ Работа с расчетной      │ sal.arm      │ sal.arm         │

   │           │ ведомостью              │ sal.sav      │ sal.sav         │

   │           │                         │ sal.ind      │ sal.ind         │

   │           │                         │              │                 │

   │ salary    │ Создание ведомости      │ salary3.arm│ sal.arm         │

   │           │                         │              │                 │

   │ add       │ Расчет насчислений      │ spr1.arm     │ salary1.arm     │

   │           │                         │ spsotr.arm   │                 │

   │           │                         │              │                 │

   │ sub       │ Расчет вычетов          │ spr2.arm     │ salary2.arm     │

   │           │                         │ salary1.arm│                 │

   │           │                         │              │                 │

   │ nalogs    │ Вычет налогов           │ salary2.arm│salary3.arm      │

   │           │                         │ spnal.arm    │                 │

   │ search    │ Поиск в записной книге│ Copybook.arm │ ttt.arm         │

   │           │                         │              │                 │

   │ bank.arm│ Работа   с   банковскими│ bank1.arm    │bank1.arm      │

   │           │ документами             │ bank2.arm    │  bank2.arm      │

   │           │                         │ bank3.arm    │  bank3.arm      │

   │cck_salary1│ Проверка на соответствие│ spsotr.arm   │                 │

   │           │ окладов разрядам        │ spr6.arm     │                 │

   │           │                         │              │                 │

   │           │                         │              │                 │

   │chk_slalry2│Проверка на соответствие │ spsotr.arm   │                 │

   │           │окладов фонду зарплаты   │ fonds.dat    │                 │

   │           │                         │              │                 │

   └───────────┴─────────────────────────┴──────────────┴─────────────────┘


                           -30-

          Модуль 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.


                          -31-

   Процедура  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  -   Множество допустимых символов.


                           -32-

   Модуль 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 - Сегментная часть адреса в оперативной памяти, в которую

                 производится чтение.


                           -33-

       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 - новое положение указателя.


                            -34-

    Функция 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 - Размер по горизонтали.


                          -35-

     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 - Координаты области внутри таблицы.


                           -   36-

Процедура 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   - Максималная длина поля.

     D - Выводимое число.

     T - Таблица.


                         -37-

   Процедура 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;


                         -38-

     Запись, хранящая информацию о файлебазы данных.

        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;


                         -39-

          Запись, описывающая обьект "окно"в системе многооконного

          интерфейса.

         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 - Код начисления.


                            -40-

      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;


                         -41-

        Запись в файле платежных поручений.

        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;


                         -42-

    Запись в файле главной книги.

        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;


                             -43-

      Запись в справочнике сотрудников.

       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 - Длина данных.


                               -44-

     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  - Итого на руки.


                              -45-

   Модуль 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

       Функция обработки вертикального меню небольшого размера.

       Используется, если все пункты меню помещаются на экране.


                             -46-

       Возвращает номер выбранного элемента.

        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  - Множество допустимых символо в строке.


                            -47-

     Процедура 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


                               -48-

    Переводит дату из строковой записи во внутренний формат. Возвращает

    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 - Имя файла, в который нужно поместить файл из архива.

       D     - Ключ-дата, по которой осуществляется поиск.


                             -49-

    Процедура Good_morning(var D:string1)

     Процедура приветствует пользователя при начале работыипросит

     подтвердитьтекущую дату. У пользователя есть возможность изменить

     ее, если она его чем-то не устраивает. В дальнейшем эта дата исполь-

     зуется  как значение по умолчанию при вводе полей типа "Дата".

      D - Текущая дата в строковом виде.

Функция Writetable(Nl,Fp:integer;R:rec;Nr:integer; Fname:string;

                     Reclen:integer;N:integer;T:fieldtype):integer;

    Функция производит запись на диск таблицы. Возвращает 0 в случае

    успеха.

    Nl     - Номер строки таблицы, с которой производится запись.

    Fp     - Позиция в файле, с которой производится запись.

    R      - Массив, хранящий описание структуры таблицы.

    Nr     - Размер таблицы по вертикали.

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

    Reclen - Длина записи файла в байтах.

    N      - Количество столбцов в таблице.

    T      - Имя таблицы.

Функция Readtable(Nl,Fp:integer;R:rec;var Nr:integer;Fname:string;

                   Reclen:integer;N:integer;T:fieldtype;

                   var Eof:boolean):integer;

    Функция производит чтение таблицы из файла. Возвращает 0 в случае

    успеха.

    Nl     - Номер строки таблицы, с которой производится запись.

    Fp     - Позиция в файле, с которой производится запись.

    R      - Массив, хранящий описание структуры таблицы.


                            -50-

    Nr     - Размер таблицы по вертикали.

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

    Reclen - Длина записи файла в байтах.

    N      - Количество столбцов в таблице.

    T      - Имя таблицы.

    Eof    - Признак конца файла.

Функция Edittable(R:rec;Fname,D_date:string;T:fieldtype;

                   var Win:windowtype;Nw:integer;var Numberlines:integer;

                   N,Maxlines,Reclen:integer;var Filepos:longint;

                   Eof:boolean):integer;

     Функция редактирует базу, находящуюся в таблице. При редактировании

     возможно изменять размеры окна, в котором происходит редактирование.

     По нажатию клавишы F1 происходит выдача контекстно оринтированной

     помощи. Функция автоматически сохраняет базу при выходе из нее.

      R           - Массив, хранящий сведения о структуре таблицы.

      Fname       - Имя файла, с которым связана таблица.

      D_date      - Дата, использующаяся по умолчанию при вводе.

      T           - Имя таблицы.

      Win         - Запись, в которой хранятся сведения об окне, в

                    которомнаходится таблица.

      Nw          - Номер этого окна.

      Numberlines - Число информационных строк в таблице.

      N           - Число столбцов в таблице.

      Maxlines    - Максимальное число строк, которое может находиться

                    втаблице.

      Reclen     - Длина записи в файле данных в байтах.


                             -51-

      Filepos     - Позиция в файле, на которой происходит редакти-

                    рование.

      Eof         - Признак конца файла данных.

    Процедура Save_data_file(Fname:string1;D:date)

      Процедура записывает файл данных в архив, связывая его с

      ключом-датой.

       Fname - Имя файла данных.

       D     - Дата-ключ.

   Процедура Printtable(T:fieldtype;Fname:string1;N:integer)

      T     - Таблица.

      Fname - Имя файла.

      N     - Длина таблицы по вертикали.

    Процедура Salary(D:date)

      Вычисляет зарплату за текущий месяц для каждого сотрудника ,

      описанного в файле сотрудников, рассчитывает все начисления

      и взыскания и создает расчетную ведомость.

      D - Текущаядата.

     Функция Check_Salary2(var N:longint):integer

     Проверяет в файле сотрудников соответствие окладов фонду

     заработной платы. Возвращает 0, если все в порядке.

     N - Фонд заработной платы.

   Функция Check_Salary1( var Errorline:integer):longint

     Функция проверяет соответствие окладов сотрудниковразрядной

     сетке. Если   все в порядке, возвращает 0.

     Errorline - Номер ошибочной записи.


                           -52-

Процедура Global(First:integer)

   Осуществляет работу с базами. Создает таблицы и связывает их с

   файлами базы данных.

   First - Номер в каталоге первоначального файла в каталоге.

   Процедура Saldo

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

   книге.

   Процедура Read_min_salary

   Запрашивает у пользователя значение минимальной заработной платы.

   В качестве значения по умолчанию используется предыдущее значение

   минимальной зарплаты. Если до этого минимальная зарплата не вводилась,

   то по умолчанию она равна 0.

   Процедура Search(Tn:string1)

     Осуществляет поиск в записной книжке записей о выдаче мат. помощи

     конкретному лицу.

     Tn - Табельный номер конкретного лица.

    Процедура Copy_book

     Осуществляет работу с записной книжкой бухгалтера.


                             -53-

   Процедура Great_book

     Процедура осуществляет работу с Главной книгой, внесение туда

     своевременнных изменений.

   Процедура Saldo_work

    Процедура подсчитывает сальдо счетов и позволяет пользователю

    оперативно просматривать их. Предусмотрена возможностьсохранять

    в архиве сальдо за долгий срок.

    Процедура  salary_work

     Осуществляет работу с заработной платой сотрудников,то есть

     формирует расчетную ведомость, позволяет ее просматривать,

     записывать в архив и считывать из архива, печатать на принтере.


                            -54-

                           ГЛАВА 3

                КАЧЕСТВО ПРОГРАММНОГО ИЗДЕЛИЯ

     ОСНОВНЫЕ ПОКАЗАТЕЛИ КАЧЕСТВЕННОГО ПРОГРАММНОГО ИЗДЕЛИЯ

     3.1 Надежность программного изделия.

     3.1.1 Что называется надежностью.

     Одной из важнейших характеристик качества программного

     изделия является надежность.

     Надежность - это свойство ПИ сохранять работоспособность в

     течение определенного периода времени, в определенных условиях

     эксплуатации с учетом последствий для пользователя каждого

     отказа.

         Работоспособным называется такое состояние ПИ, при котором

     оно способно выполнять заданные функции с параметрами,

     установленными требованиями технического задания (ТЗ). С

     переходом ПИ в неработоспособное состояние связано событие

     отказа.

          Причиной отказа ПИ является невозможность его полной

     проверки в процессе тестирования и испытаний. При эксплуатации

     ПИ в реальных условиях может возникнуть такая комбинация входных

     данных, которая вызывает отказ. Таким образом, работоспособность

     ПИ зависит от входной информации, и чем меньше эта зависимость,

     тем выше уровень надежности.

         Для оценки надежности используются три группы показателей:

     качественные, порядковые и количественные.

     Рассмотрим основные количественные показатели надежности

     ПИ.

        1. Вероятность безотказной работы Р(t ) - это вероятность


                           -55-

     того, что в пределах заданной наработки отказ системы не

     возникает.

     Наработка - продолжительность, или объем работы:

             P(t ) = P(t >= t ),

      где t - случайное время работы ПИ до отказа; t- заданная

      наработка.

     2. Вероятность отказа - вероятность того, что в пределах

    заданной наработки отказ системы возникает.

     Это показатель, обратный предыдущему.

           Q(t ) = 1 - P(t ).

     3. Интенсивность отказов системы   (t) - это условная

    плотность вероятности возникновения отказа ПИ в определенный

    момент времени при условии, что до этого времени отказ не

    возник.

           (t) = f(t) / P(t),

      где f(t) - плотность вероятности отказа в момент времени t.

                dQ(t)    d                   d

        f(t) = ────── = ──── [1 - P(t)] = - ──── P(t).

                 dt      dt                  dt

      Существует следующая связь между(t) и P(t):

                       t

         P(t) = exp( -    (t)dt ).

                       0


                             -56-

     В частном случае при   = const

P(t) = exp( -t ).

     Если в процессе тестирования фиксируется число отказов за

    определенный временной интервал, то(t) - число отказов в

    единицу времени.

     4. Средняя наработка до отказа T- математическое ожидание

    времени работы ПИ до очередного отказа

     T  =    tf(t)dt,

           0

    где t - время работы ПИ от (K-1) до K-го отказа.

     Иначе среднюю наработку на отказ Tможно представить:

                                        n

     T    (t+ t+...+ t )/n = (i/n)     t ,

                                       i=1

    где t  - время работы ПИ между отказами; n - количество отказов.

        5. Среднее время восстановления T- математическое

    ожидание времени восстановления - t   ; времени, затраченного на

    обнаружение и локализацию отказа - t   ; времени устранения

    отказа - t   ; времени пропускной проверки работоспособности -

     t   :

           t   = t    + t    + t   ,

      где t   - время восстановления после i-го отказа.


                             -57-

                    n

          T  = i/n     t,

                   i=1

       где n - количество отказов.

        Для этого показателя термин "время" означает время,

    затраченное специалистом по тестированию на перечисленные виды

    работ.

        6. Коэффициент готовности K- вероятность того, что ПИ

    ожидается в работоспособном состоянии в произвольный момент

    времени его использования по назначению:

           K  = T/ (T+ T ).

       Необходимо стремиться повышать уровень надежности ПИ, но

    достижение 100%-ной надежности лежит за пределами возможного.

       Количественные показатели надежности могут использоваться

    для оценки достигнутого уровня технологии программирования, для

    выбора метода проектирования будущего программного средства.

       Основным средством определения количественных показателей

    надежности являются модели надежности, под которыми понимают

    математическую модель, построенную для оценки зависимости

    надежности от заранее известных или оцененных в ходе создания

    программных средств параметров.

    3.1.2 Модель Миллса

       Использование этой модели предполагает необходимость перед

    началом тестирования искусственно засорять программу некоторым

    количеством заранее известных ошибок. Ошибки вносятся случайным


                              -58-

   образом и фиксируются в протоколе искусственных ошибок. Специалист,

    проводящий тестирование, не знает ни количества, ни характера

    внесенных ошибокдо момента оценки показателей надежности по

    модели Миллса. Предполагается, что все ошибки, и естественные,

    и искусственно внесенные, имеют равную вероятность быть найденными

    в процессе тестирования.

       Тестируя программу в течение некоторого времени, собирается

    статистика об ошибках. В момент оценки надежности по протоколу

    искусственныхошибок  всеошибкиделятся  насобственные и

    искусственнные. Соотношение

    N = (S * n) / V

      дает возможность оценить N - первоначальное количество ошибок

    в программе. Вданном соотношении, которое называется формулой

    Миллса, S - количествоискусственно внесенных ошибок, n - чмсло

    найденных собственных ошибок, V - число обнаpуженных искуссственных

    ошибок.

      Таким обpазом, если мы пpедположим, что в пpогpамме нет ошибок,

    то веpоятность истинностиэтого пpедположения оценивается по фоpмуле

         1 , n >K

    С =  S / (S+K+1), n <=K

       где К - количество собственных ошибок (в данном случае 0),

       S - число искусственных ошибок.

       К сожалению, это соотношение нельзя использовать, если в процессе


                               -59-

    тестированияобнаружены  невсе из искусственных ошибок. Для этого

    случая используется модифицированнаяформула

           1 , n > K

      C =

          (S/(V-1)) / ((S+K+1)/(K+V))

       где выражение типа(a)/(b) выглядит как

          a!/b!*(a-b)!

      Тестируя систему по модели Миллса, вносим туда S = 15

    искусственных ошибок. В процессе тестирования было обнаружено

    13 из 15 искусственных ошибок и ни одной собственной ошибки.

    Тогда вероятность безотказнойработы программы будет равна

       ( 15! / (13! * 2!)) / (16! / (14! * 2!)) =

        (14 * 15/ 2) / ((15*16)/2)= 14 /16 = 0.875

     3.2 Эффективность программного изделия

     3.2.1 Критерии эффективности программного изделия.

       Эффективность -одно  изнаиболееобщих   экономических

    понятий,  не имеющих пока, по-видимому, единого общепризнанного

    определения.   По   нашему   мнению,это   одна   из   возможных

    характеристиккачества  системы,а именно ее характеристика с

    точки зрения соотношения затрат и реаультатовфункционирования

    системы.

      В дальнейшем    будем    понимать    под     экономической


                             -   60-

    эффективностью   ПИ   мерусоотношениязатрат  ирезультатов

    функционирования ПИ.

        К основным    показателям    экономической   эффективности

    относятся:  экономическийэффект,коэффициент   экономической

    эффективности    капитальных    вложений,    срок   окупаемости

    капитальных вложений.

        Экономический эффект-  реэультатвнедрениякакого-либо

    мероприятия,выраженный в стоимостной форме,в виде.экономии от

    его   осуществления.   Так,   для   организаций(предприятий),

    испопьзующих ПИ, основными источниками экономии являются:

        улучшение показателей     их   основной    деятельности,

    происходящее в результате использования ПИ;

        сокращение сроковосвоения  новыхПИза  счет их лучших

    эргономических характеристик;

        сокращение расходамашинного времени и других ресурсов на

    отладку и сдачу задач в эксплуатацию;

        повышение технического    уровня,   качества   и   объемов

    вычислительных работ;

        увеличение объемов   и   сокращение   сроков   переработки

    информации;

        повышение коэффициента     использования    вычислительных

    ресурсов,средств подготовки и передачи информации;

        уменьшение численности     персонала,    в    том    числе

    высококвалифицированного,занятого  обслуживаниемпрограммных

    средств,    автоматизированных    систем,    систем   обработки

    информации, переработкой и получением информации;

        снижение трудоемкости      работ     программистов     при


                             -61-

    программировании прикладных задач с использованием новыхПИв

    организации-потребителе ПИ;

        снижение затрат на эксплуатационные материалы.

        Коэффициент экономической     эффективности    капитальных

    влолжений  показываетвеличинугодового   прироста   прибыли,

    образующуюся в результате производства или эксплуатации ПИ,на

    один рубль единовременных капитальных вложений.

        Срок окупаемости    (величина,    обратная    коэффициенту

    эффективности)   -   показатель   эффективности   использования

    капиталовложений - представляет собой период времени, в течение

    которого  произведенныезатратынаПИокупаются  полученным

    эффектом.

        Определение эффективности ПИ основано на принципахоценки

    экономическойэффективности  производстваииспользования  в

    народном   хозяйстве   новой   техники.   Основные    положения

    разработаны   на  основеив  развитиеметодикиопределении

    экономической эффективности использования в народ ном хозяйстве

    новой  техники,изобретенийи  рационализаторских предложений

    [12] с учетом специфики ПИ.

        На различныхстадиях  жизненного цикла ПИ и в зависимости

    от целей расчетарассчитываютсяи  документальнооформляются

    следующие          виды         экономического         эффекта:

    предварительный,потенциальный,гарантированный и фактический.

        Предварительный экономический   эффект  рассчитываетсядо

    выполнения разработки на основе данных техническихпредложений

    и   прогнозаиспользования.Предварительныйэффект  является


                            -62-

    элементом технико-экономического обоснованияразработкиПИи

    используется при планировании разработки и внедрения ПИ.

        Потенциальный экономический   эффект   рассчитывается   по

    окончании       разработки      на      основе      достигнутых

    технико-экономическиххарактеристик  ипрогнозныхданных   о

    максимальныхобъемах  использованияПИв народном хозяйстве.

    Потенциальныйэффект  используетсяприоценке   деятельности

    организаций-разработчиков ПИ.

       Гарантированный экономический эффект рассчитывается в виде

    гарантированного экономического эффекта для конкретного объекта

    внедрения и общего гарантированного внедрения по ряду объектов.

       Гарантированный экономический   эффект   для   конкретного

    объекта внедрения рассчитывается после окончания разработки для

    одного  программовнедрениянаоснове данных о гарантированном

    разработчиком   удельном   эффекте   от   применения    НИ    и

    гарантированных   пользователем   сроках   и   годовом   объеме

    использования ПИ. Гарантированный эффект от одного внедрения ПИ

    рассчитывается   при   оформлениидоговорныхотношений  между

    организацией-разработчиком и организацией-пользователем.

        Гарантированный общийэкономический эффект рассчитывается

    при  постановкеПИна  производство   на   основе   обобщения

    фактических  показателейиспользованияПИ(поряду объектов

    внедрения),  атакже   данных   об   объемах   внедрения   ПИ,

    соответствующих    возможностямизготовления,   внедрения   и

    сопровождении.Гарантированный   общий   эффект   служит   для

    разработки  иутвержденияэкономически  обоснованнойцены на


                             -63-

    программную продукцию, выбора варианта производства и внедрения

    ПИ.

        Фактический экономический эффект рассчитывается наоснове

    данных   учета   и   сопоставлениязатрат  ирезультатовпри

    конкретных применениях ПИ. Фактический эффект рассчиты23 вается

    от  одногопрограммовнедренияконкретного  ПИнаконкретном

    объекте,  а   также   как   общий   экономический   эффект   от

    использованияконкретного  ПИнавсех  объектах внедрения за

    расчетный период.Фактический эффект используетсядля  оценки

    деятельности   организаций,   раарабатывающих,   внедряющих   и

    испопьзующих ПИ,для определения размеров отчисленийв  фонды

    экономического    стимулирования,    а    также   для   анализа

    эффективностифункционированияПИ  ивыработки   технических

    предложений по совершенствованию ПИ и условий его применения.

       Показатели экономической эффективности ПИ определяются:

      экономической оценкойрезультатов  влияния ПИ на конечный

    результат ихиспользования  (основноенаправлениеанализа  и

    расчета показателей эффективности-для прикладных ПИ);

      экономической оценкой     результатов      влияния      на

    технологические   процессы  подготовки,передачи,переработки

    данных в вычислительных системах (основное направлениеанализа

    и   расчета   показателей   эффективности-для   ПИ  организации

    вычислительных процессов и эксплуатации средстввычислительной

    техники и НИ, расширяющих функции операционных систем);

     экономической оценкой   результатов    влияния    ПИ    на

   технологический процесс создания новых ПИ (основное направление

   анализа   и   расчета   показатепей   эффективности    -    для


                             -64   -

   инструментально-технологических     средств     разработки    и

   производства программного обеспечения).

      При необходимостиопределения экономической эффективности

   ПИ,  входящих в АСУ,САПР,АСНИ и другие системы через оценку

   влияния  ПИ на конечные результаты функционирования этих систем

   в  народномхозяйстве,доля  эффектаотПИ  оцениваетсяпо

   коэффициенту  долевогоучастияПИ в показателях эффективности

   автоматизированных систем.Эти  показателирассчитываютсяпо

   реэультатам  основнойдеятельностиорганиааций  (предприятий,

   научных     учреждений)     на      основе      соответствующих

   общегосударственных,   отраслевых   и   ведомственныхметодик.

   Долевой коэффициентучастия  ПИвпоказателях  эффективности

   автоматизированныхсистем  взависимостиот  условий расчета

   может определяться как отношение годовых приведенных затратна

   ПИ  кгодовымприведенным затратам на систему,как отношение

   капитальных вложений в ПИ к капитальным вложениям в систему,как

   отношение  трудозатратнаразработку  ПИктрудозатратам на

   разработку  системы,атакже  методомэкспертныхоценок  по

   взаимному    соглашению    разработчиков,    заготовителей    и

   пользователей.

      3.2.2 Оценка экономической эффективности системы.

       Оценить экономическую эффективность данной системы   можно

    как разность между расходами пользователя программы до и после

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

    бухгалтер экономит в среднем около 30 человеко-часов в месяц. То


                               -65-

    есть программа позволяет за счет экономии времени снизить заработную

    плату, выплачиваемую   бухгалтеру,  с 1.5 до1ставки.   Средняя

    заpплата бухгалтеpа пpофкома составляет 120 000, следовательно,

    годовая экономия от использованияпpогpаммы в  одномпpофсоюзном

    комитете составит 720 000 pуб. Амоpтизация техники, тpебующейся для

    пpогpаммы, пpии совpеменных ценах на ПЭВМ составит

                  1800 000 * 0.15 = 270 000 pуб.

      Следовательно, чистая пpибыль от внедpенияпpогpаммыв год

      составит  450 000 pублей.

     3.3 Тестирование комплекса.

        Для проверки основных функций программного комплексапроведем

    систему  тестов. Тестыбудем выбирать по принципу "белого ящика",

    так как это позволит проверить программу за наименьшее количество

    тестов.

      ТЕСТ 1

      Войдем в режим изменения списка сотрудников и поставим в графе

   "Оклад "сотруднику номер 2 число 1000000. При этомв файле

   платежных поручений за этот месяцбудет  находитьсяплатежное

   поручение, переводящее на счет профкома со счета института 1500000.

    Ожидаемая реакция программы : Выдача сообщения "Превышение фонда

    окладов" новый вход в режим редактирования списка сотрудников.

     ТЕСТ 2

      Войдем в режим изменения списка сотрудников и поставим в графе

   "Оклад "сотруднику номер 2 число 100, а в графе "Разряд" число 14.


                                -66-

   При этом  в файле разрядов коэффициент в строке 14 разряда будет

   равен 3.3, а минимальная зарплата будет равна 30000.

     Ожидаемая реакция программы : Выдача сообщения "Неверный оклад в

    2 записи" и новый вход в режим редактирования списка сотрудников.

      ТЕСТ 3

    Составим файлы сотрудников,начислений  ивычетовследующим

    образом(см. Приложение 2). После чего вычислим заработную плату

    сотрудников и просмотрим ее. (см. приложение 2).

      ТЕСТ 4

    Возьмем те же файлы сотрудников, начислений и вычетов таким же

    образом, как и в тесте 3. Но при этом в файле деклараций поставим

    сотруднику с таб. номером N123 в графе "Сумма "число10000000.

    Вычислим   заработную   плату   сотрудников и   просмотрим ее(см.

    Приложение 2)

      ТЕСТ 5

      Войдем в режим работы с главной книгой и выберем пункт "Добавить

    данные  по   зарплате". Просмотримеепосле  этого.(Расчетную

    ведомость,главную книгу до и после добавлениясм. в Приложении 2)

      ТЕСТ 6

      Войдем в режим работы с главной книгой и выберем пункт "Добавить

      данные по банку". Прямо перед этимв режиме работы с банком

      введем два платежных поручения :

      1  сназначением "Первое"

      2  с назначением "Второе"

      (См. главную книгу в Приложении 2)


                              -   67-

     3.4 Cписок обозначений

     АРМ - Автоматизированное рабочее место.

     N1 - Количество сотрудников института - членов профсоюза.

      К - сумма проф.взносов, поступающих на счет МЭСИ.

      N1 - количество сотрудников института - членов профсоюза.

     ЗП[i] - Заработная плата i-го сотрудника.

      K  -Фонд зарплаты профкома.

     _

     Kmin - Минимальная граница фонда заработной платы.

      _

     Кmax - Максимальнаяграница фонда заработной платы.

     W[mi] = Внебюджетные поступления.

     Q[i] - оклад i-го сутрудника профкома.

     N2  - Количество сотрудников профкома.

     Q`[i] - Оклад, полагающийся i-му сотруднику по его разряду.

     Q1[k]  - Промежуточное значение - оклад k-го сотрудника

               вместе с начислениями

     P[k,j] - j-е начисление k-му сотруднику.

     M[mi,k]  - Количество начисленийk-му сотрудникув mi-ом месяце.

       S[k] - Окончательная сумма для выдачи k-му сотруднику.

       V[j] - Значение J-го налога.

       U[k] - Множество налогов, применимых к k-му сотруднику.


                        -68 -

       3.5 Список литературы

     1. P. Джордейн "Справочник программиста персональных ЭВМ типа

          IBM PC, XT,AT", M., Финансы и статистика, 1992.

      2.


      ПРИЛОЖЕНИЯ

     Экран 1

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Работа со справочниками          ░

                        ░ Работа с записной книжкой        ░

                        ░ Расчет зарплаты сотрудников      ░

                        ░ Операции с расчетной ведомостью░

                        ░ Работа с банком                  ░

                        ░ Работа с Главной книгой          ░

                        ░ Сальдо счетов                    ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░


     Экран 2

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Работа со справочниками          ░

                        ░ Работа с записной книжкой        ░

                        ░ Расчет зарплаты сотрудников      ░

                        ░ Операции с расчетной ведомостью░

                        ░ Работа с банком                  ░

                        ░ Работа с Главной книгой          ░

                        ░ Сальдо счетов                    ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░Справочник налогов              ░

                        ░Справочник общих налогов        ░

                        ░  Справочник начислений           ░

                        ░Справочник разрядов             ░

                        ░Список деклараций               ░

                        ░Изменение минимальной зарплаты░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░


        Экран 3

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Работа со справочниками          ░

                        ░ Работа с записной книжкой        ░

                        ░ Расчет зарплаты сотрудников      ░

                        ░ Операции с расчетной ведомостью░

                        ░ Работа с банком                  ░

                        ░ Работа с Главной книгой          ░

                        ░ Сальдо счетов                    ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░Ввод в записную книжку░

                        ░Поиск в записной книжке           ░

                        ░                                  ░

                        ░                                  ░

                        ░                                  ░

                        ░                                  ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░


        Экран 4

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Работа со справочниками          ░

                        ░ Работа с записной книжкой        ░

                        ░ Расчет зарплаты сотрудников      ░

                        ░ Операции с расчетной ведомостью░

                        ░ Работа с банком                  ░

                        ░ Работа с Главной книгой          ░

                        ░ Сальдо счетов                    ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░  Просмотр файла начислений       ░

                        ░Просмотр файла взысканий        ░

                        ░Просмотр списка сотрудников     ░

                        ░Просмотр фонда заработной платы ░

                        ░ Расчет начислений               ░

                        ░Расчет взысканий                ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░


        Экран 5.

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Работа со справочниками          ░

                        ░ Работа с записной книжкой        ░

                        ░ Расчет зарплаты сотрудников      ░

                        ░ Операции с расчетной ведомостью░

                        ░ Работа с банком                  ░

                        ░ Работа с Главной книгой          ░

                        ░ Сальдо счетов                    ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Получение ведомости              ░

                        ░ Просмотр ведомости               ░

                        ░ Запись ведомости в архив         ░

                        ░ Печать ведомости                 ░

                        ░ Поиск ведомости в архиве         ░

                        ░                                  ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░


         Экран 6.

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Работа со справочниками          ░

                        ░ Работа с записной книжкой        ░

                        ░ Расчет зарплаты сотрудников      ░

                        ░ Операции с расчетной ведомостью░

                        ░ Работа с банком                  ░

                        ░ Работа с Главной книгой          ░

                        ░ Сальдо счетов                    ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Ввод платежных поручений         ░

                        ░ Ввод обьявлений на взнос         ░

                       ░ Ввод выписок из банка░

                        ░                                  ░

                        ░                                  ░

                        ░                                  ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░


           Экран 7

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Работа со справочниками          ░

                        ░ Работа с записной книжкой        ░

                        ░ Расчет зарплаты сотрудников      ░

                        ░ Операции с расчетной ведомостью░

                        ░ Работа с банком                  ░

                        ░ Работа с Главной книгой          ░

                        ░ Сальдо счетов                    ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Добавить данные по зарплате      ░

                        ░ Добавить данные по банку         ░

                        ░ Просмотр главной книги           ░

                        ░                                  ░

                        ░                                  ░

                        ░                                  ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░


      Экран 8

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Работа со справочниками          ░

            ░ Работа с записной книжкой        ░

                        ░ Расчет зарплаты сотрудников      ░

                        ░ Операции с расчетной ведомостью░

                        ░ Работа с банком                  ░

                        ░ Работа с Главной книгой          ░

                        ░ Сальдо счетов                    ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

                        ░ Просмотр сальдо счетов           ░

                        ░ Подсчет сальдо                   ░

                        ░ Занесение сальдо в архив         ░

                        ░ Поиск сальдо в архиве░

                        ░ Пeчать сальдо                    ░

                        ░                                  ░

                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░


         Экран 9

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒1▒▒

▒  Таб.номер   Фамилия                   Разряд Оклад        Ч.П.   Обосно▒

▒ N▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒33   ▒

▒ N▒    Файл начислений                                             ▒gdsfg▒

▒ T▒    Файл взысканий                                              ▒     ▒

▒ f▒    справочник налогов                                          ▒     ▒

▒  ▒    Справочник разрядов                                         ▒     ▒

▒  ▒    Главная книга                                               ▒     ▒

▒  ▒    Сальдо счетов                                               ▒     ▒

▒  ▒    Справочник сотрудников                                      ▒     ▒   

▒  ▒    Расчетная ведомость                                         ▒     ▒   

▒  ▒    Записная книжка                                             ▒     ▒   

▒  ▒    Налоговые декларации                                        ▒     ▒   

▒  ▒                                                                ▒     ▒   

▒  ▒                                                                ▒     ▒

▒  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒     ▒

▒                                                                         ▒   

▒                                                                         ▒   

▒                                                                         ▒

▒                                                                         ▒   

▒                                                                         ▒   

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒