Автоматизация заполнения подписки на газеты и журналы

 

ВВЕДЕНИЕ


Слово «компьютер» означает «вычислитель», т.е. устройство для вычислений. Потребность в автоматизации обработки данных, в том числе и вычислений, возникла очень давно. Многие тысячи лет назад для счета использовались счетные палочки, камешки и т.д. С течением времени появился компьютер. Современное общество невозможно представить без компьютеров. Значение персональных компьютеров в современной жизни невозможно недооценить. Трудно теперь найти хоть одну сферу человеческой деятельности, где не применялись бы компьютеры. Персональные компьютеры являются наиболее широко используемым видом компьютеров, их мощность постоянно увеличивается, а область применения расширяется. Персональные компьютеры могут объединяться в сети, что позволяет многим пользователям легко обмениваться информацией и одновременно получать доступ к базам данным. В настоящее время индустрия производства компьютеров и программного обеспечения для них является одной из наиболее важных сфер экономики. Причины такого стремительного роста индустрии ПК:

·Невысокая стоимость компьютеров ;

·Выгодность для многих деловых применений ;

·Простота использования ;

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

·Высокие возможности переработки информации ;

·Высокая надежность и простота ремонта ;

·Применение вычислительной техники для выполнения численных расчетов, которые слишком долго или вообще невозможно производить вручную ;

·Использование средств вычислительной техники в автоматических или автоматизированных информационных системах .

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

Система документооборота является технологической основой деятельности компании по принятию и исполнению решений. Поэтому всякое повышение эффективности работы с документами непосредственно сказывается на эффективности выполнения организацией своих функций, будь то улучшение обслуживания граждан государственным либо муниципальным учреждением или повышение конкурентоспособности коммерческого предприятия.

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

Отечественная практика предполагает обязательную регистрацию каждого документа с момента его появления в организации, а также регламентированное (и контролируемое) движение документа вплоть до его исполнения. Сама идея подобного учета, регламентации и централизованного контроля вполне адекватна современным мировым реалиям управления с использованием компьютерных сетей.

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

Компьютеризация делопроизводственных процессов позволяет отказаться от ручных форм учета и перейти на современную форму регистрации документов с помощью ПЭВМ. Тем более, что постоянно возрастает объем регистрируемых документов на любых предприятиях, внедряются системы автоматизации в смежных областях, и в связи с этим целесообразно использовать новые технологии для автоматизации регистрации документов.

Использование средств автоматизации делопроизводства способно обеспечить экономию трудовых и материальных затрат на работу с документами; эффект за счет унификации документационной деятельности организации и уменьшение зависимости от индивидуального технологического опыта персонала; сокращение временных циклов работы с документами и создание единого документального пространства, и полный контроль за регистрацией и движением документов и исполнительской дисциплиной.

Для создания приложения пользователя выбрана предметная область «Автоматизация заполнения подписки на газеты и журналы». Целью создания приложения является автоматизация работы оператора по оформлению заявок. Также ведется база данных, которая содержит информацию о всех газетах и журналах на данном предпреятии. База данных позволяет осуществлять быстрый поиск нужной информации, редактирование, добавление, удаление, печать.

Для решения поставленной задачи используется компьютер типа IBM PC, операционная система Windows XP, система программирования VBA,СУБД Microsoft Access, SQL.


1. ОБЩИЙ РАЗДЕЛ


1.1 Характеристика системы программирования


Для программного решения задачи используется система программирования Visual Basic For Application (VBA).

Microsoft Visual Basic - средство разработки программного обеспечения, разрабатываемое корпорацией Microsoft и включающее язык программирования и среду разработки. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка - языка Basic, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Среда разработки VB включает инструменты для визуального конструирования пользовательского интерфейса.

Visual Basic считается хорошим средством быстрой разработки прототипов программы, для разработки приложений баз данных и вообще для компонентного способа создания программ, работающих под управлением операционных систем семейства Microsoft Windows.

Первое признание серьёзными разработчиками Visual Basic получил после выхода версии 3 - VB3. Окончательное признание как полноценного средства программирования для Windows - при выходе версии 5 - VB5. Версию VB6, входящую в состав Microsoft Visual Studio 6.0, стала по-настоящему зрелым и функционально богатым продуктом. После этого разработчики из Microsoft существенно изменили направление развития данной технологии.

Visual Basic .NET не позволяет программировать по-старому, ибо по сути является совершенно другим языком, таким же, как и любой другой язык программирования для платформы .NET. Индивидуальность языка, так же как и его преимущества (простота, скромность создания программ, лёгкость использования готовых компонент) при использовании в среде .NET не имеют такого значения, как раньше - всё сосредоточено на возможностях самой системы .NET, на её библиотеке классов. Поэтому сегодня нужно говорить о классическом Visual Basic, его диалектах Visual Basic for Applications (VBA) и Visual Basic Scripting Edition (VBScript) и о языке для платформы .NET - Visual Basic .NET.

Язык Visual Basic не стандартизован ни ANSI, ни ISO.

Достоинства:

Высокая скорость создания приложений с графическим интерфейсом для MS Windows.

Простой синтаксис, позволяющий очень быстро освоить язык.

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

Недостатки:

Поддержка операционных систем только семейства Windows (Исключение - VB1 for DOS).

Отсутствие механизма наследования объектов. Существующие в языке наследование, позволяет наследовать только интерфейсы объектов, а не их самих. Таким образом, в унаследованном классе должны быть явно переписаны все функции базового класса. Также в унаследованном классе невозможно добавление каких-либо методов, присущих только данному классу, то есть если абстрактный базовый класс содержит только два метода, то и производный класс содержит только два метода, не более и не менее того.

Требует установленных DLL для работы программы.

Типы данных VBA представлены в таблице 1.


Таблица 1 - Типы данных VBA

Тип данныхОписание и диапазон значенияByteХранение положительных чисел от 0 до 255BooleanХранение логических значений: True, FalseCurrencyХранение чисел для точных вычислений в диапазоне от -922337203685477,5808 до 922337203685477,5807DateХранение даты и времени. Даты от 1.01.100 до 31.12.9999 Время от 00:00:00 до 23:59:59DoubleХранение чисел двойной точности от -1,79769313486232*10308 до 4,94065645841247*10-324 от 4,94065645841247*10-324 до 1,79769313486232*10308IntegerХранение целых чисел от -32768 до 32767LongХранение целых чисел от -2147483648 до 2147483647SingleХранение чисел одинарной точности от -3,402823*1038 до -1,401298*10-45 от 1,401298*10-45 до 3,402823*1038StringХранение текста длиной до 2 млрд. символовVariantХранение любого типа данных

Объявление простых переменных. При объявлении переменной определяется ее тип и область видимости - область, где имя переменной видимо и, значит, возможен доступ к ее значению. Переменные можно объявлять на двух уровнях - уровне процедуры и уровне модуля. Для объявления переменных используются операторы Dim, Public, Private и Static. Первый можно использовать на обоих уровнях, Public и Private - на уровне модуля, Static - только на уровне процедуры.

Переменные, объявленные на уровне процедуры, называются локальными по отношению к данной процедуре. Их областью видимости является та процедура, в которой они объявлены. Локальные переменные можно объявлять в любом месте процедуры, но до выполняемых операторов, использующих эти переменные.

Переменные уровня модуля являются глобальными. Они объявляются в разделе Declarations, который есть у каждого модуля. Область видимости глобальных переменных может распространяться:

на все процедуры одного модуля, в котором они объявлены; такие глобальные переменные, называемые закрытыми (Private), должны быть объявлены на уровне модуля либо оператором Private, либо оператором Dim;

на все приложение - все процедуры всех модулей данного приложения; такие глобальные переменные, называемые открытыми (Public), должны быть объявлены оператором Public.

Локальные переменные уровня процедуры могут объявляться оператором Static, что делает их статическими. Обычные локальные переменные рождаются при входе в процедуру, видимы только в ней и "умирают" при выходе из нее. Это значит, что память под переменные отводится при входе в процедуру, а при выходе она освобождается. Область видимости статических переменных по-прежнему - процедура, но время жизни иное, так как у них не отбирается память при выходе, - она просто становится временно недоступной. Поэтому при повторном входе в процедуру статические переменные восстанавливают те значения, которые у них были при последнем выходе. Статические переменные - это хранители информации между многократными вызовами одной и той же процедуры. Чтобы статические переменные имели смысл, необходима первоначальная инициализация переменных, - они должны иметь хоть какие-то значения уже при первом вхождении в процедуру. Специальных средств инициализации статических переменных в VBA нет, но вот как VBA инициализирует переменные в момент их объявления:

0 - для численных значений.

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

Строка, содержащая нули, - для строк фиксированной длины.

Empty (значение, указывающее на отсутствие инициализации) - для типа Variant.

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

Сторонники хорошего стиля программирования, позволяющего создавать более надежные программы, не будут пользоваться рудиментами Бейсика - объявлением переменных по умолчанию. Все необъявленные явно переменные по умолчанию считаются объявленными и имеют тип Variant. В VBA есть также старомодные средства Бейсика, позволяющие не объявлять переменную явно, но устанавливать ее тип по первому или последнему символу имени переменной. Имена переменных VBA могут заканчиваться специальным символом, дающим возможность установить тип переменной. Мы не рекомендуем использовать все эти средства.

Одними переменными не обойтись, нужны и константы. В VBA можно объявлять именованные константы, задавая ee значение и, возможно, тип. Такие константы объявляются в операторе Const, подобно объявлению переменных.

В справочную систему Office 97 не включены полные формальные спецификации синтаксиса и семантики VBA. Можно считать, что пользователю предоставлены неявные операционные определения синтаксиса и семантики: синтаксис проверяется на этапе трансляции и тем самым определяется транслятором языка, а семантика - интерпретатором. Разумеется, справочная система содержит достаточно сведений о синтаксисе и семантике языковых конструкций VBA , чтобы пользователь смог, руководствуясь ею, безошибочно написать большую часть нужных ему программ. В неясных случаях можно поэкспериментировать с транслятором и интерпретатором, чтобы построить правильный синтаксис некоторой конструкции и выявить ее семантику. Опыт показывает, что это, как правило, возможно. Однако еще проще заменить неясную конструкцию, которая может приводить к синтаксическим или семантическим ошибкам, на эквивалентную - более простую и понятную. Это осуществимо практически всегда. Рассмотрим, например, основную синтаксическую единицу языка - имя.

Имена процедур, констант, переменных и аргументов должны удовлетворять следующим правилам:

Имена должны начинаться с буквы.

Имя не может содержать пробел, точку, восклицательный знак или символы: @, &, $, #.

Имена не должны иметь более 255 символов.

Как правило, не следует использовать имена, совпадающие с названиями функций, инструкций и методов языка Visual Basic.

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

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

Во-первых, помимо указанных во втором пункте символов, имя не может содержать любых видов скобок и кавычек, знаков арифметических операций: +, -,_, /, \, %, ^, знаков отношений: =, <, >, вопросительного знака и запятой. Например, при попытке определить переменную: x-переменная As String

Транслятор, выделив дефис, выдаст сообщение: "Ожидался конец инструкции"

Второе, что требуется уточнить, - это использование русских букв в именах. Однако прописные и строчные русские буквы в именах различаются. Транслятор выдает ошибку описания переменных:

Dim Zw As Integer, zW As Integer

посчитав, что дважды описана одна и та же переменная, но, например, описание:

Dim Чш As String, чШ As Byte

допустимо и в модуле будут одновременно существовать две разные переменные Чш и чШ.

Следующий важный синтаксический элемент языка - выражение. Как и в других языках, выражения VBA используются в качестве правой части операторов присваивания, в качестве условий в условных операторах и в операторах циклов, а также в других ситуациях.

В качестве ключевых слов в выражениях можно использовать не только имена (знаки) арифметических операций (^, - ,_, /, \, Mod, +, &), логических операций (Not, And, Or, Xor, Eqv, Imp), сравнений (=, <>, <, >, <=, >=, Like, Is) и многочисленных встроенных функций VBA, но и имена доступных пользовательских функций, возвращающих значения соответствующих типов. Важнее определить семантику выражения - правила, по которым вычисляются его значение и тип результата. В VBA это не всегда просто, поскольку результат, возвращаемый выражением, зависит от его использования, в частности от типа того объекта, которому значение выражения присваивается. Дело в том, что типизация в VBA весьма либеральная и интерпретатор сам старается привести значение выражения к нужному типу. Если это ему удается, вычисление продолжается, и никакое предупреждение или сообщение об ошибке не выдается. Часто это облегчает жизнь программиста, позволяя не заботиться о таких мелочах, как преобразование чисел в строки, но может привести к трудно исправляемым ошибкам.

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

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

Если числовое выражение присваивается переменной типа String, то происходит его вычисление и значением переменной становится строка, содержащая полученный результат. Например, если S1 - строковая переменная, то после присвоения

= 12.34_ 2


ее значением станет строка "24,68".

Если строковое выражение присваивается числовой переменной, то происходит его вычисление, из полученной строки удаляются все пробелы, и если полученная строка представляет собой запись числа соответствующего типа, то оно становится значением числовой переменной. Пусть, например, переменная Z имеет тип Double. Тогда после присвоения= "1,6 78 09" & "88"


ее значением станет число 1.6780988. В качестве разделителя целой и дробной частей числа в строке допускается только запятая. Оператор

= "1.6 78 09" & "88"


будет забракован интерпретатором (ошибка несоответствия типа).

Перейдем теперь к логическим выражениям. В приведенном выше определении логический тип Boolean вообще не указан в качестве возможного результата выражения, хотя он является одним из простых типов языка. При этом преобразования автоматически проводятся в обе стороны:

. При рассмотрении числовых выражений в качестве логических происходит их вычисление и значение 0 преобразуется в False (Ложь), а все остальные значения - в True (Истина).

. Строковые выражения со значениями False, Ложь (распределение прописных и строчных букв в этих словах может быть произвольным), а также строковые значения, задающие число 0 (например, "0 00 0"), преобразуются в False (Ложь). Выражения со значениями True и Истина, а также строки, задающие все остальные числа, - в True (Истина). Строки Ложь и Истина приводятся к логическим значениям только в локализованной версии.

. Если значения типа Boolean приводятся к числовым типам данных, то False превращается в 0, а True в -1. Здесь также проявляется "специфика" VBA - во всех известных языках Истина больше, чем Ложь, и потому числовым значением True является 1, а не -1.

. Если значения типа Boolean приводятся к строковому типу, то False превращается в False в оригинальной версии Office 97 и в строку Ложь в локализованной, а True в - True в оригинальной версии и в Истина - в локализованной версии.

Рассмотрим в качестве примера следующую процедуру.


Sub ex()b1 As Boolean, b2 As Booleanx1 As IntegerS1 As String, S2 As String

b1 = 1.5 ' b1 = Истина.Print 1.5, " приводится к ", b1

x1 = 10 + b1.Print "10 + Истина = ", x1= 9 - x1= S1 & "00".Print "S1=", S1, "b2= ", b2 x1 = (10 > 5)_ 5

.Print "(10 > 5)_ 5 = ", x1 = "True": x1 = b1.Print "True", x1.Print "True > False = ", True > False

End Sub


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


,5 приводится к Истина

+ Истина = 9= 0 b2= Ложь

(10 > 5)_ 5 = -5 -1> False = Ложь

В оригинальной версии Office 97 вместо слов Истина и Ложь будут напечатаны слова True и False. Заметим, что в локализованной и оригинальной версиях строковые переменные будут принимать различные значения, когда им присваиваются булевские выражения. Здесь кроется возможный источник ошибок, так как можно заставить одну и ту же программу работать по-разному в оригинальной и локализованной версиях.

Как показывает пример, выражения вида (x1>5) можно рассматривать и использовать как обычные числовые выражения.

Математические операторы в Visual Basic (в порядке, в котором они будут решаться):


() скобки

^ возвести в степень

* умножение

/ деление

+ плюс

минус

и пара функций:(число) вычесть корень (англ. square root)(число) обрезает все числа после запятой, округление

Основные конструкции VBA:...Then...Else

Синтаксис:условие Then [код удовл. условию] [Else код неудовл. условию]

Возможна запись в несколько строкусловие Then

[блок кода удовл. условию]

[ElseIf условие №N Then

[блок кода удовл. условию N, но неудовл. предыдущим условиям] ...

[Else

[блок кода неудовл. при неудовл. условии]]If

Case вполне может использоваться в замену конструкции:

if .. thenif .. thenif .. then

end if

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

Синтаксис:Case [тестируемая переменная]

[Case N-ное значение/переменная с чем сравнивается тестируемая переменная

[код N]] ...

[Case Else

[код, если ни одно из вышестоящих условия небыло выполнено]]Select

У Case можно перечислять несколько возможных значений/промежудков, к примеру: Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

Циклы со счетчиком: For .. Next

Синтаксис:счетчик = первоначальное значение To конечное значение [Step шаг]

[Код]

[Exit For]

[код][счетчик]

Для выхода из цикла еще до того как счетчик примет конечное значение пожно воспользоваться Exit For.

Первоначальное значение счетчика может быть больше конечного. Если шаг задан положительным - код, в теле цикла, не выполнится ни разу, отрицательным - код, в теле цикла, будет выполнен некоторое кол-во раз, а значение счетчика начнет уменьшаться.


Циклы с условием:условие

[код]

и более гибкий:[{While | Until} условие]

[код]

[Exit Do]

[код]

или:

[код]

[Exit Do]

[код]

Loop [{While | Until} условие]


В первом варианте Do ... Loop условие проверяется перед выполнением тела цикла, во втором - после.

Массив - набор однотипных данных, содержащихся в переменной, обращение к этим данным идет по одному имени, но с указанием индекса элемента.

Массивы бывают одномерными, N-мерными. Так же возможно создание динамических массивов, т.е. размер которых заранее не известен, и память под данные в них выделяется динамически.

Для задания массива достаточно указать имя переменной, размерность и тип. К примеру:lngArray(10) As Long создаст массив с 11-тью элементами. Т.е. первый элемент: lngArray(0), последний: lngArray(10).

Для того чтобы первым элемент был не нулевой, а действительно первый - следует использовать: Option Base 1.

Для задания, к примеру, двумерного массива, необходимо указать размерность через запятую:lngArray(10, 10) As Long

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

К примеру:lngArray() As Long

ReDim lngArray(10, 10)

Случается так что требуется изменить размерность массива сохранив в нем данные, в этом случае у ReDim используется ключевое слово Preserve.


1.2 Встроенные объекты, методы и свойства


Объекты Access представлены в таблице 2.


Таблица 2 - Объекты MS Access.

ApplicationПриложение MS AccessControlЭлемент управления формы или отчетаDebugОкно отладки

2. ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ


.1 Постановка задачи


.1.1 Организационно-экономическая сущность задачи


.1.1.1. Место решения задачи

Местом решения задачи является почтовое отделение.


2.1.1.2 Цель решения задачи

Целью решения задачи является автоматизация подписки на газеты и журналы, а так же их учёт.


2.1.1.3 Назначение задачи

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


2.1.1.4 Периодичность решения задачи

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


2.1.1.5 Связь с другими задачами

Связь с другими задачами отсутствует.


2.1.1.6 Описательная модель задачи

Для заполнения подписки нужны следующие документы:

Паспорт подписчика

Необходимо заполнить соответствующие поля данными из документа. В поле города необходимо указать город, где заполняется подписка, в поле даты указать дату, с какого числа будет действительна подписка (обычно текущая). В поле срок указать срок действия подписки прописью (например, «три недели»). Также необходимо поставить роспись клиента.


2.1.2 Описание входной информации


.1.2.1 Описание входных документов

Входными документами являются:

Паспорт подписчика

Входные документы представлены в приложении 1, приложении 2 и приложении 3.


.1.2.2 Описание входных данных

Входные данные представлены в таблице 1.


Таблица 1 - Входные данные.

НаименованиеИдентифика-торТип данныхРазмерИсточник данныхГородГородСтрокаРучной вводНа какой срок выдана подпискаСрокСтрокаРучной вводФамилия, имя, отчество подписчикаФИОСтрокаПаспорт подписчикаАдрес проживания подписчикаАдрес_проживанияСтрокаПаспорт подписчика

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


2.1.3.1 Описание выходных документов

Выходным документом является подписка (приведена в Приложении1).


2.1.3.2 Описание выходных данных

Выходные данные представлены в таблице 2.

Таблица 2 - Выходные данные

НаименованиеИдентифика-торТип данныхРазмерИсточник данныхГород, где зарегистрирован подписчикГородСтрокаБаза ДанныхНа какой срок выдана подпискаСрокСтрокаБаза ДанныхФамилия, имя, отчество подписчикаФИОСтрокаБаза ДанныхАдрес проживания подписчикаАдрес_проживанияСтрокаБаза ДанныхДата выдачи подпискиДата_выдачиСтрокаБаза Данных

2.1.4 Логическая модель задачи

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


Рис.1


2.1.5 Требования в программе


.1.5.1 Функциональные требования к программе

Приложение должно выполнять следующие функции:

·Обеспечить ввод нового клиента в БД;

·Обеспечить ввод нового издания;

·Обеспечить формирование новой записи;

·Обеспечить удаление данных выданных изданиях;

·Обеспечить удаление данных о владельцах;

·Обеспечить редактирование данных о владельцах;

·Обеспечить печать и просмотр сформированной подписки;


2.1.5.2 Нефункциональные требования к программе


.1.5.2.1 Требования к интерфейсу

Интерфейс программы должен быть:

·Интуитивно-понятный интерфейс;

·Наличие меню;


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

Требования к надежности программы:

·Перехват ошибок:

- контроль соединения с БД;

контроль на ввод чисел;

контроль на наличие шаблона подписки;

контроль изменения данных;


2.1.5.2.3 Требования к реализации

Приложение должно быть реализовано на VBA Word, база данных СУБД MS Access, запросы на языке SQL, подключены библиотеки:

·Microsoft Word 10.0 Object Library;

·Visual Basic For Application;

·OLE Automation;

·Microsoft Office 10.0 Object Library;

·Microsoft Active Data Object 2.8 Library;

·Microsoft Excel 10.0 Object Library;


2.2 Информационная модель программы решения задачи


.2.1 Схема данных

Схема данных Базы данных представлена на рис. 2.


Рис.2


2.2.2 Структура таблиц Баз Данных

Структура таблиц Базы данных представлена в таблице 3.


Таблица 3 - Структура таблиц Базы данных

Имя поляКлючевое полеТип данныхРазмер поляОбязательное полеИндексированное полеНомер_подпискиДаТекстовый50НетнетГородНетПоле МЕМОНетДа (Совпадения не допускаются)ДатаНетТекстовый50НетДа (Совпадения не допускаются)СрокНетТекстовый50НетДа (Совпадения не допускаются)Код_подписчикаНетТекстовый50НетНетФИОНетПоле МЕМОНетНетАдрес_прожива-нияНетПоле МЕМОНетНетСерияНетТекстовый50НетНетНомерНетТекстовый50НетНетДата_выдачиНетТекстовый50НетНетГИБДДНетПоле МЕМОНетНетЦена подпискиДаТекстовый50НетДа (Совпадения не допускаются)Ид газетыНетПоле МЕМОНетНетИд журналаНетПоле МЕМОНетНетЦена экземпляраНетТекстовый50НетНетЦена подпискиНетТекстовый50НетНетДата_выдачиНетПоле МЕМОНетНет

2.2.3 Связь между сходными документами, Базой данных и выходными документами

Связь между сходными документами, Базой данных и выходными документами представлена на рис. 3.


Рис. 3

подписка газета visual basic application

2.3 Логическая модель программы


2.3.1 Структурная схема программы

Структурная схема приложения представлена на рис. 4.


Рис. 4


.3.2 Логическая структура программы

Логическая структура программы представлена на Рис.5.

Рис. 5


2.3.3 Интерфейс программы

Интерфейс программы представлен на рисунках 6-15.


Рис. 6.

Рис. 7.


Рис. 8.


2.4 Текст программы

flag As Booleanflag9 As Booleanfl As BooleanoExcel As New Excel.ApplicationoWbk As Excel.Workbookosheet As Excel.Worksheetcn As ADODB.ConnectionSub CommandButton1_Click()= True.ShowSub

Sub CommandButton2_Click()= False.ShowSub

Sub CommandButton3_Click().SaveMsgBox("Вы действительно хотите выйти из приложения?", vbYesNo + vbQuestion) = vbYes Then.Hide.QuitIfSub

Sub CommandButton4_Click()= True.ShowSub

Sub CommandButton5_Click().ShowSub

Sub CommandButton6_Click().ShowSub

Sub CommandButton7_Click()Error GoTo erqoWbk = Workbooks.Open("C:\подписка1.xls")osheet = oWbk.Worksheets.Item("подписка").DisplayAlerts = False.PrintOut.QuitSub:"Ошибка! Не найден шаблон подписки. Просмотр и печать невозможны."

CommandButton14.Enabled = False.QuitSub

Sub UserForm_Initialize()= True.Caption = "Главное меню"Error GoTo oshibka:cn = New ADODB.Connection.Provider = "Microsoft.Jet.OLEDB.4.0".ConnectionString = "C:\База_для_практики.mdb".Open

Not cn Is Nothing Thencn.State = adStateOpen Then"База данных успешно подсоединена. Добро пожаловать в программу. Удачной работы. Проверерьте, все ли библиотеки подключены)"= True:"Ошибка! База данных не найдена! "

fl = False

End IfIf

fl = False Then.Enabled = False.Enabled = False.Enabled = False.Enabled = True.Enabled = True.Enabled = TrueIf

Sub

Sub userform_Activate()= False= FalseSub

cn As ADODB.Connectionbm As VariantisDisable As Booleanskiprecord As Longdirection As Longrs1 As New ADODB.Recordsetrs2 As New ADODB.Recordsetrs3 As New ADODB.Recordsetrs4 As New ADODB.Recordsetbmark As Variantcriteria As Stringflag5 As Booleanflag4 As Booleanflas As Boolean

Sub ComboBox1_KeyDown(ByVal keyCode As MSForms.ReturnInteger, ByVal shift As Integer)= 0Sub

Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)= 0Sub

Sub CommandButton1_Click().ShowSub

Sub CommandButton10_Click()_izmNot rs1.EOF Then.MoveNextNot rs1.EOF Then.MoveLastIfIfSub

Sub CommandButton11_Click()rs1.RecordCount >= 1 ThenMsgBox("Удалить текущую запись?", vbYesNo + vbQuestion) = vbYes Then.Deleters1.RecordCount > 0 Then_ClickIfIfIfSub

Sub Save_izm()Error GoTo errork:rs3.Fields("Код_паспорта_тр_ср").Value <> TextBox8.Value Or _.Fields("Серия").Value <> TextBox9.Value Or rs3.Fields("Номер").Value <> TextBox10.Value _rs3.Fields("главпочтампт").Value <> TextBox11.Value Thenrs4.Fields("Код_техпаспорта").Value <> TextBox12.Value _rs4.Fields("Серия").Value <> TextBox13.Value Or rs4.Fields("Номер").Value <> TextBox14.Value _rs4.Fields("Дата_выдачи").Value <> TextBox15.Value Or _.Fields("главпочтампт").Value <> TextBox16.Value Thenrs1.Fields("дата").Value <> TextBox1.Text Or _.Fields("тип").Value <> TextBox2.Text Or _.Fields("Идентиф_номер").Value <> TextBox3.Text Or _.Fields("начало").Value <> TextBox4.Text Or _.Fields("номер_подписчика").Value <> TextBox5.Text Thenrs1.Fields("подписки").Value <> TextBox6.Text _rs1.Fields("клиент_номер").Value <> TextBox7.Text Or _.Fields("Код_паспорта").Value <> TextBox12.Text Thenrs1.Fields("Код_паспорта_тр_ср").Value <> TextBox8.Text _rs1.Fields("Код_владельца").Value <> ComboBox1.Text ThenIfIfIfIfIf:Sub

Sub podtverzdenie() MsgBox("Были внесены изменения. Сохранить изменения?", vbYesNo + vbQuestion) = vbYes Then

CommandButton2_ClickIfSub

Sub CommandButton2_Click()Error GoTo oshibkaTextBox1.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox8.Text = "" Or TextBox9.Text = "" Or TextBox10.Text = "" Or TextBox11.Text = "" Or TextBox12.Text = "" Or TextBox13.Text = "" Or TextBox14.Text = "" Or TextBox15.Text = "" Or TextBox16.Text = "" Or ComboBox1.Text = "" Then "Заполните все поля, отмеченные * (обязательные поля)"

Exit SubIfIsNumeric(TextBox4.Text) = False Then "Поле 'начало подписки' заполнено неправильно"

Exit SubIf.Update.Update.Update= rs1.BookmarkTrue, True_znak.TextBox4 = Empty.MoveFirst.Bookmark = bm1"Сохранено"Sub: "Ошибка при сохранении"

End Sub


Private Sub gos_znak().TextBox2.Text = "".ComboBox1.Clear.Update.MoveFirstUntil rs1.EOF.ComboBox1.AddItem rs1.Fields("Гос_рег_знак_авто").Value.MoveNextSub

Sub CommandButton3_Click()_izmrs1.EOF = True And rs1.BOF = True Then.ComboBox1.Text = rs1.Fields("номер подписки").Value.ComboBox1_ChangeIf.HideSub

Sub CommandButton4_Click()flag4 <> True Then_izmIf

nom1 As Integernom2 As Integer

MsgBox("Зарегистрировать новое издание?", vbYesNo + vbQuestion) = vbYes Thenrs3.EOF = True And rs3.BOF = True Then= 1.MoveFirst= rs3.Fields("Код_паспорта").ValueWhile Not rs3.EOFrs3.Fields("Код_паспорта").Value > nom1 Then= rs3.Fields("Код_паспорта").ValueIf.MoveNext= nom1 + 1If.Text = nom1rs4.EOF = True And rs4.BOF = True Then= 1.MoveFirst= rs4.Fields("Код_паспорта").ValueWhile Not rs4.EOFrs4.Fields("Код_паспорта").Value > nom2 Then= rs4.Fields("Код_паспорта").ValueIf.MoveNext= nom2 + 1If.Text = nom2.AddNew.AddNew.AddNewFalse, True.Enabled = Trueflas = True ThenFalse, True.Enabled = False.Enabled = False.Enabled = True.flag = FalseIfIfSub

Sub showemptyrecord().Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = EmptySub

Sub CommandButton5_Click()= "[Марка_Модель]='" & TextBox17.Text & "'"= 0= adSearchForward= rs1.Bookmark.MoveFirst.Find criteria, skiprecord, direction

rs1.EOF Then

MsgBox "Запись не найдена"

Beep.Bookmark = bmark.Enabled = False: MsgBox "Запись найдена".Enabled = TrueIfSub

Sub CommandButton6_Click()= rs1.Bookmark= 1= adSearchForward.Find criteria, skiprecord, direction, bmark rs1.EOF Then

MsgBox "Запись не найдена"

Beep.Bookmark = bmark.Enabled = False"запись найдена"IfSub

Sub CommandButton7_Click()_izmrs1.EOF = True And rs1.BOF = True Then.MoveLastIfSubSub CommandButton8_Click()_izmrs1.EOF = True And rs1.BOF = True Then.MoveFirstIfSub

Sub CommandButton9_Click()_izmNot rs1.BOF Then.MovePreviousNot rs1.BOF Then.MoveFirstIfIfSub

Sub ShowRecord().Text = rs1.Fields("ид_газеты").Value.Text = rs1.Fields("ид_журнала").Value.Text = rs1.Fields("Идентиф_номер").Value.Text = rs1.Fields("дата_начала").Value.Text = rs1.Fields("клиент_номер").Value.Text = rs1.Fields("подписка_номер").Value.Text = rs1.Fields("газета_номер").Value

.Text = rs1.Fields("Код_паспорта ").Value.Text = rs1.Fields("Код_паспорта").Value

.MoveFirstUntil rs3.EOFTextBox8.Text = rs3.Fields("Код_паспорта ").Value Then.Text = rs3.Fields("ном_газеты").Value.Text = rs3.Fields("Ном_журнала").Value.Text = rs3.Fields("главпочтамт").ValueDoIf.MoveNext

.MoveFirstUntil rs4.EOFTextBox12.Text = rs4.Fields("Код_паспорта").Value Then.Text = rs4.Fields("ном_газеты ").Value.Text = rs4.Fields("Ном_журнала ").Value.Text = rs4.Fields("Дата_выдачи").Value.Text = rs4.Fields("главпочтамт ").ValueDoIf.MoveNext

.Text = rs1.Fields("Код_клиента").Value

Sub

Sub TextBox10_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Case KeyAscii32= 0SelectSub

Sub TextBox13_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Case KeyAscii32= 0SelectSub

Sub TextBox14_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Case KeyAscii32= 0SelectSub

Sub TextBox17_Change().Enabled = FalseSub

Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Case KeyAscii32= 0SelectSub

Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Case KeyAscii32= 0SelectSub

Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Case KeyAscii32= 0SelectSub

Sub TextBox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Case KeyAscii32= 0SelectSub

Sub TextBox7_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Case KeyAscii32= 0SelectSub

Sub TextBox9_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Case KeyAscii32= 0SelectSub

Sub UserForm_Initialize()= False.Enabled = False


'устанавливаем соединение с БДcn = New ADODB.Connection.Provider = "Microsoft.Jet.OLEDB.4.0".ConnectionString = "C:\База_для_практики.mdb".Open


'заголовок окна

Me.Caption = " главпочтамт "


'первый набор записей

rs1.CursorType = adOpenStatic

rs1.Source = "SELECT Газеты.[ИД газеты], Газеты.Название, Газеты.[Срок подписки], Подписчики.Фамилия, Подписчики.Адрес

FROM Газеты INNER JOIN Подписчики ON Газеты.[ИД газеты]=Подписчики.[ИД газеты]"


Set rs1.ActiveConnection = cn.LockType = adLockOptimistic.Open


'Второй набор записей.CursorType = adOpenStatic2.Source = "SELECT Подписчики.Фамилия, Подписчики.Имя, Подписчики.Отчество

FROM Журналы INNER JOIN Подписчики ON Журналы.[ИД журнала]=Подписчики.[ИД журнала]"


Set rs2.ActiveConnection = cn.LockType = adLockOptimistic.Open


'Третий набор записей.CursorType = adOpenStatic3.Source = "SELECT Газеты.[ИД газеты], Газеты.Название, Газеты.[Срок подписки], Подписчики.Фамилия, Подписчики.Адрес

FROM Газеты INNER JOIN Подписчики ON Газеты.[ИД газеты]=Подписчики.[ИД газеты]"


Set rs3.ActiveConnection = cn.LockType = adLockOptimistic.Openrs1.EOF = True And rs1.BOF = True Then "Данных в базе не обнаружено"

flas = TrueFalse, True.Enabled = False.Enabled = False.Enabled = True.flag = False_Click= False.MoveFirst.Enabled = FalseIfSub

Sub userform_Activate()UserForm1.flag = True Then_ClickIfSub

Sub vladeletc()rs2.EOF = True And rs2.BOF = True Then.Clear.ClearError GoTo next11.Open:.Requery.MoveFirstUntil rs2.EOF.AddItem rs2.Fields("Код_клиента").Value.MoveNextIf.CloseSub

Sub SetEnable(isupdateOn As Boolean, isOthersOn As Boolean).Enabled = isupdateOn.Enabled = isOthersOn.Enabled = isupdateOn.Enabled = isupdateOn.Enabled = isupdateOn.Enabled = isupdateOn.Enabled = isupdateOn.Enabled = isupdateOn.Enabled = isupdateOn.Enabled = isupdateOnSub

Sub UserForm2_Terminate().Closecn = NothingSubSub FillRecord().Fields("Код_паспорта ").Value = TextBox8.Value.Fields("Серия").Value = TextBox9.Value.Fields("Номер").Value = TextBox10.Value.Fields("главпочтамт").Value = TextBox11.Value

.Fields("Код_паспорта").Value = TextBox12.Value.Fields("Серия").Value = TextBox13.Value.Fields("Номер").Value = TextBox14.Value.Fields("Дата_выдачи").Value = TextBox15.Value.Fields("главпочтамт").Value = TextBox16.Value

Sub

Sub showemptyrecord().Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty1.Text = Empty

End Sub


3. РУКОВОДСТВО ПО ИСПОЛЬЗОВАНИЮ ПРОГРАММЫ


3.1 Руководство системного программиста


Программа «Автоматизация заполнения подписки» предназначена для автоматизации заполнения подписок и их учета.Программа выполняет следующие функции:

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

поиск данных;

хранение данных в БД;

печать подписки;

статистика выданных подписок;

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

процессор Intel;

принтер;

оперативная память 128 Кб;

свободное пространство на жестком диске 5 Мб;

операционная система Windows XP;

пакет Microsoft Office.

Для установки программы необходимо вставить диск в cd-дисковод, скопировать на диск C:\ файлы подписка1.xml, База_для_подписки.mdb и подписка.doc. Запустить программу можно с помощью файла подпискаь.doc. Пароль для входа в программу - 123.

В структуру приложения входят:

файл приложения подписка.doc

файл документа (бланк доверенности) подписка1.xml

база данных База_для_подписки.mdb.

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

При запуске программы могут появляться сообщения, представленные на рисунках 18-19.


Рис. 18.


Рис. 19.


3.2 Руководство программиста


Программа «Автоматизация заполнения подписки» предназначена для автоматизации заполнения подписки и их учета.

Для организации работы программы необходимы следующие компоненты ПК:

системный блок;

- монитор;

- клавиатура;

мышь;

-необходимо около 5 Мб свободного места на диске

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

операционная система Windows XP;

пакет Microsoft Office.

Структура файла проекта представлена на рисунке 15

Структура файла проекта


Рис.15


Описание модулей представлено в таблице 4.


Таблица 4 - Описание модулей программы

ФормаПроцедураОписаниеUserForm1CommandButton1_ClickЗапуск формы 2.CommandButton2_ClickЗапуск формы 3.CommandButton3_ClickВыход из приложения.CommandButton7_ClickПечать пустого бланка подписки.UserForm_InitializeСоздание формы, проверка соединения с Базой Данных.UserForm2UserForm_InitializeСоздание формы, соединение с Базой Данных, создание наборов записей, загрузка списков.CommandButton2_ClickСохранение записиCommandButton4_ClickСоздание новой записиCommandButton5_ClickПоиск первой записиCommandButton6_ClickПоиск следующей записиCommandButton7_ClickПереход к последней записиCommandButton8_ClickПереход к первой записиCommandButton9_ClickПереход к предыдущей записиCommandButton10_ClickПереход к следующей записиCommandButton11_ClickУдаление записиShowemptyrecordОчистка полейShowRecordЗагрузка полейFillRecordПереприсваивание измененных данныхFillRecord2Переприсваивание измененных данныхUserForm3UserForm_InitializeСоздание формы, соединение с Базой Данных, создание наборов записей, загрузка списков.ComboBox1_ChangeАвтоопределение кода клиента по выбранному критериюCommandButton1_ClickВызов формы 2CommandButton11_ClickУдаление записиCommandButton12_ClickПоиск первой записи

3.3 Руководство оператора


При запуске программы необходимо ввести пароль. При вводе пароля в соответствующее окно необходимо нажать на кнопку "подписка".

При правильном вводе пароля на экране появятся сообщения, подтверждающие корректный ввод и подключение БД, и главная форма, где можно выбрать следующие подпункты: "подписка", «изменить", «Просмотр выданных подписок"Распечатать пустой бланк", "Выход".

При подтверждении появляется форма с полями для ввода данных. Также имеется кнопка "Просмотр и редактирование". При нажатии на нее появляется форма, позволяющая найти необходимого клиента. При нажатии на "ОК" текущий код клиента заполняется на форме и форма закрывается. После заполнения всех полей на форме добавления нового клиента необходимо нажать кнопку "Сохранить". Если что-либо введено неправильно, на экране появится соответствующее сообщение. Если все введено правильно - появится сообщение "Сохранено" и недоступные ранее кнопки перехода по записям, поиска, и редактирования данных будут доступны.

При выборе пункта меню "Заполнить подписку" на экране появится сообщение о подтверждении добавления новой подписки. При подтверждении откроется форма с полями для ввода. Номер подписки заполнится автоматически, в поле "Дата заполнения" введется текущая дата и время. На формах имеются кнопки "ОК", при нажатии на которые текущие данные вводятся в соответствующие поля на форме заполнения новой подписки.

После заполнения всех полей формы заполнения подписки необходимо нажать "Сохранить". Если все поля введены верно - появится сообщение "Сохранено" и будут доступны ранее недоступные кнопки просмотра и редактирования, а также кнопка "Просмотреть подписку". При нажатии на кнопку "Просмотреть подписку" появляется сообщение "Распечатать без предварительного просмотра?". При подтверждении текущая подписка будет распечатана. При отклонении сообщения заполненный шаблон доверенности будет открыт в MS Excel.

При выборе пункта меню "Просмотр подписок у каждого клиента" откроется форма, где можно просмотреть какие продписки были выписаны на каждого клиента. Если подписка была выписана - данные о ней будут записаны в соответствующее поле.

При выборе пункта меню "Распечатать пустой бланк" будет напечатан пустой бланк подписки.

При выборе пункта меню "Выход" выдается сообщение о подтверждении выхода из программы. При подтверждении производится закрытие главной формы и завершение работы программы.

На формах есть кнопки просмотра: "<<" - переход к первой записи, "<" переход к предыдущей записи, ">" - переход к следующей записи, ">>" - переход к первой записи.


ЗАКЛЮЧЕНИЕ


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

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

Достоинствами приложения являются:

-корректный ввод данных;

-понятный и удобный интерфейс

Недостатком приложения является:

недостаточная функциональность;

В результате выполнения приложения я закрепила навыки работы с VBA, языком структурированных запросов SQL и приложением MS Office - MS Access.


СПИСОК ЛИТЕРАТУРЫ


1.Конспект лекций по курсу ППП

2.Конспект лекций по курсу ТРПП

.А. Гарнаев - Самоучитель VBA


ВВЕДЕНИЕ Слово «компьютер» означает «вычислитель», т.е. устройство для вычислений. Потребность в автоматизации обработки данных, в то

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2019 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ