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

Заказать уникальную дипломную работу
Тип работы: Дипломная работа
Предмет: Программирование
  • 120120 страниц
  • 7 + 7 источников
  • Добавлена 22.03.2014
3 000 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Оглавление
1. Введение 2
2. Анализ технического задания 5
2.1. Цель проекта 5
2.2. Анализ требований 5
2.2.1 Социальные требования 5
2.2.2. Экономические требования 6
2.3. Выбор показателей эффективности 7
2.4. Оценка показателей эффективности проекта 9
2.5. Определение энтропийного коэффициента согласия 17
2.6. Оценка системных показателей проекта 19
2.7. Выбор операционной системы и языка программирования 23
3. Microsoft Visual Basic 27
3.1. Visual Basic: прошлое и настоящее 27
3.2. Литералы и их соответствие типам данных 36
3.3. Объявление переменных 41
3.4. Строковые функции 49
3.5. Математические операторы 56
3.6. Циклы 64
3.7. Логические операторы 73
3.8. Массивы 74
3.9. Процедуры и функции 79
3.10. Обработка ошибок в VB .NET 89
3.11. Формы Windows, графический вывод и печать 99
3.12. Доступ к приложениям MICROSOFT OFFICE 117
3.13. Работа с базами данных в VB 120
4. Разработка программного комплекса 143
4.1. Разработка алгоритма решения задачи 143
4.2. Организационно-экономический раздел 152
4.2.1. Маркетинг 152
4.2.2. Организационный план 153
4.2.3. Расчет затрат 156
4.2.4. Анализ экономической целесообразности 160
Список используемых источников 161

Фрагмент для ознакомления

Windows. Forms. Знак # в строке 4 отмечает на-чалорегиона в автоматически сгенерированном коде. Помните, что при любых операциях в окне свойств или перетаскивании элементов в дизайнере генерируется программный код. По мере накопления опыта вы научитесь просматривать этот код и редактировать его.
В строках 6 и 7 начинается конструктор класса. Как обычно, в начале конструктора производного класса вызывается конструктор базового класса (за дополнительной информацией по этой теме обращайтесь к разделу «Иерархия классов пространства имен System.Windows.Forms» этой главы).
В строке 10 вызывается метод Initial izeComponent, определяемый в строках 33-35. Этот метод генерируется автоматически и преобразует в программный код все ваши действия на стадии конструирования и в окне свойств. Например, кнопка объявляется в строке 25; позже ее экземпляр создается в строке 34, а размещение кнопки на форме происходит в строке 50. Также обратите внимание на то, как в строках 44 и 52 программа задает свойство Text кнопки и формы в соответствии с данными, введенными в окне свойств.
Свойство Text в VB .NET заменяет свойство Caption, использовавшееся в предыдущих версиях VB.
В строках 40 и 42 методы пространства имен System. Drawl ng задают позицию и размеры кнопки, а в строках 48-49 аналогичные действия выполняются для формы. По умолчанию единицей измерения в графических операциях являются пикселы (!), а не твипы (twips).
Хотя старые свойства Left, Top, Width и Height по-прежнему поддерживаются, теперь удобнее работать со свойствами Location и Size. Свойство Location задает или возвращает структуру Point с информацией о точке. Свойство Size использует структуру System.Drawing.Size для хранения информации о прямоугольной области. Поскольку каждый из этих классов просто инкапсулирует два целых числа, в них предусмотрены свойства для задания отдельных компонентов (например, свойства Width для объекта Size и свойства Y для свойства Point).
В строках 17-24 реализуется версия метода Dispose, необходимого для приложений на базе форм Windows. Формат этого метода несколько отличается от простого метода Dispose, описанного в главе 5; в данном примере освобождаются все ресурсы, используемые всеми элементами формы, а также самой формой.
В строке 25 используется уже знакомый синтаксис (см. главу 6), указывающий на то, что кнопка является источником событий. Непосредственное подключение обработчика происходит в строках 59-61 с ключевым словом Handles. Синтаксис всех автоматически сгенерированных событий элементов и форм в .NET аналогичен приведенному в строке 59:
Sub ObjectName_eventname(ByVal sender As Object.Byval e As EventArgs)_
Handles ObjectName.eventname
В параметре sender передается ссылка на элемент, инициировавший событие. В параметре EventArgs инкапсулируется описание события (при таких событиях, как KeyPress или MouseDown, используются объекты классов, производных от EventArgs, - такие, как KeyEventArgs и MouseEventArgs; в них передается дополнительная информация).
Приложение на базе форм Windows можно запустить из процедуры Sub Main, являющейся точкой входа вашего приложениях. При этом вызывается метод Application.Run, которому передается имя формы:
Pubic Sub Main()
Dim myForm As New Forml()
Application.Run(myForm)
End Sub
(Замаскированный вызов Application.Run присутствует везде, где форма используется в качестве стартового объекта. Интересная подробность: этот вызов обязателен в С#, но не в VB .NET.)
Вызов MsgBox в строке 60 характерен для программистов с большим стажем работы на VB. В пространство имен Windows.Forms входит класс MessageBox, по своим возможностям значительно превосходящий команду MsgBox, но старые привычки берут свое. Обратитесь к документации по этому классу, если вы предпочитаете работать с ним.
Свойства форм
Ограниченный объем книги не позволяет нам рассмотреть все свойства класса Form, но мы хотим выделить существенные различия между поведением форм в прежних версиях VB и VB .NET. Одно из самых принципиальных изменений связано с использованием шрифтов. Вместо старых шрифтовых свойств (например, FontBold) используется класс Font пространства имен System.Drawing, самый распространенный конструктор которого выглядит следующим образом:
Sub New(ByVal family As FontFamily.ByVal emSize As Single._
ByVal style As FontStyle)
Термин «семейство шрифтов» (font family) хорошо знаком пользователям Word. Семейством называется группа шрифтов (Times New Roman, Courier New, Arial и т. д.), объединенных сходным графическим стилем, но обладающих разным кеглем и атрибутами начертания (курсив, жирный шрифт и т. д.).
Например, поскольку оператор Or объединяет значения отдельных битов, следующая команда присваивает переменной MyFont объект полужирного курсивного шрифта Arial с кеглем 12 пунктов:
myFont =New System.Drawing.Font("Arial". 12._
FontStyle.Bold Or FontStyle.Italic)
Следующая процедура события Button 1_C1ick изменяет шрифт при нажатии кнопки:
Private Sub Buttonl_Click(ByVal sender As System.Object. _
ByVal e As System.EventArgs) Handles Buttonl.Click
Dim myFont As System.Drawing.Font
myFont = New System.Drawing.Font("Arial".12.
FontStyle.Bold Or FontStyle.Italic)
Me.Font = myFont End Sub

При изменении свойства Font формы новый шрифт автоматически используется для вывода свойства Text всех элементов, расположенных на форме. Исключение составляют элементы, которым были назначены собственные шрифты.
В сочетании со свойствами Anchor и Dock часто используются свойства MinimumSize и MaximumSize, определяющие соответственно минимальные и максимальные размеры формы. Значения этих свойств представляют собой объекты Size. Например, следующая команда запрещает уменьшать форму до размеров, меньших размеров кнопки:
Me.MimmumSize =New Size(Buttonl.Size)
Поскольку свойство MinimumSize управляет изменением свойства Size, в заданные размеры включается размер заголовка окна. Таким образом, после выполнения предыдущей команды в уменьшенном окне почти не останется места для кнопки. Лучше воспользоваться командой вида
Me.MinimumSize = New Size(Buttonl.Size.Width * 2, Button1.Size.Height * 2)
При изменении свойства MaximumSize часто используется класс System.Windows. Forms.Screen, предназначенный для работы с экранами (с поддержкой нескольких мониторов). Этот класс также используется при изменении свойств DesktopBounds и DesktopLocation.
Новое свойство ClientSi ze возвращает информацию о клиентской области формы (области, не включающей заголовок и рамку). Свойство Bounds предназначено для чтения/записи структуры Rectangle, содержащей ширину и высоту формы и позицию ее левого верхнего угла.
Класс Rectangle пространства имен System.Drawing содержит немало полезных мето-дов; подробное описание этой вспомогательной структуры данных приведено в документации. Мы часто используем метод Inflate, предназначенный для увеличения прямоугольников с заданным приращением.
Многие свойства, методы и события форм отличаются от своих прототипов из VB6. Важнейшие изменения перечислены в табл. 8.1.
Таблица 8.1. Изменения в свойствах, методах и событиях форм
Старый элемент формы Новый элемент формы Activate/Deactivate (события) Переименованы в Activated/Deactivated Container (свойство) Переименовано в Parent DblClick (событие) Переименовано в DoubleClick hWnd (свойство) Переименовано в Handle MouseCursor (свойство) Переименовано в Cursor и возвращает экземпляр класса Cursor Parent (свойство) Заменено методом FindForm Picture (свойство) Заменено свойством Backgroundlmage SetFocus (метод) Переименован в Focus Startup (свойство) Заменено свойством StartPosition ToolTip (свойство) Заменено элементом ToolTip, который связывается с элементами через свойство ToolTip элемента Unload (команда) Unload (событие) Заменена методом Close
Заменено событием hosing (также существует новое событие Closed, инициируемое после закрытия формы) ZOrder (метод) Заменен методами BriflgToFront и SendToBack
3.12. Доступ к приложениям MICROSOFT OFFICE
программные идентификаторы приложений-серверов Automation
В таблице приведены названия приложений, типов и классов объектов Automation, а также их программные идентификаторы, которые иногда нашиваются ProgID, используемые при программировании объектов Automa-tion. Обратите внимание на то, что если используется программный иден-тификатор без указания версии, то объект создается на основе наиболее со-временной установленной версии программы. В общем случае идентификатор ProgID имеет следующий синтаксис:
Appпате. Ob j e с t Type
Appпате— имя приложения сервера; objectrype — тип или класс объектов.
Приложение Тип объекта Идентификатор MS Excel Application Excel.Application ИЛИ Excel .Application. 9 Workbook Excel.Sheet ИЛИ Excel.Sheet.8 Workbook Excel.Chart ИЛИ Excel.Chart.8 MS Access Application Access.Application ИЛИ Access.Application.9 CurrentData Access.CodeData, Access.CurrentData CurrentProj ect Access.CodeProject, Access.CurrentProj ect MS Word Application Word.Application, Word.Application.9 Document Word.Document, Word.Document.9, Word.Template.8 MS PowerPoint Application PowerPoint.Application, PowerPoint.Application.9 MS Outlook Application Outlook.Application, Outlook.Application.9 Функции доступа к объектам Automation
Для доступа к объектам Automation приложения-сервера предназначена
ФУНКЦИИ CreateObject И GetObject.
Функция
CreateObject Описание
Возвращает и создает ссылку на объект ActiveX. Синтаксис: CreateObject(Class, {Servername] ) • Class— имя объекта Automation;
• Servername— параметр используется только при создании екта Automation в сети и устанавливает имя сервера, где был создан объект Automation

GetObject Возвращает и создает ссылку на объект ActiveX, сохраненный в файле. Синтаксис:
GetObject([Pathname] [, Class])
Pathname— полное имя файла; если параметр опущен, то необходимо указать значение параметра class; Class - имя объекта Automation
функция GetObject подобна функции CreateObject. Но есть и второе раз-
личие между ними. Функцию GetObject следует использовать для доступа к существующим документам, хранящимся в файлах. Функцию Getobject можно также применять и для доступа к объекту Application любого уже запущенного приложения MS Office. Для этого надо вызвать функцию Getobject без первого параметра. Этот способ доступа к объекту Application любого уже запущенного приложения MS Office применяется, когда нет необходимости в запуске еще одного экземпляра приложения, что происходит при работе функции CreateObject.
Позднее связывание (late binding) происходит, когда тип для переменной, ко- торая будет представлять собой объект Automation, указывается как object. При позднем связывании переменная, задающая объект Automation, имеет тип Object. Данный тип позволяет создавать объекты любой природы. В этом смысле он подобен типу variant. Такая чрезмерная общность определения переменной понижает производительность приложения. Для достижения наилучшей производительности приложения необходимо задать конкретный тип для переменной, которая будет представлять собой объект Automation, Например, если используется MS Excel, то следует установить тип переменной Excel. Application
Второй подход называется ранним связыванием (early binding) и происходит на этапе компиляции. При раннем связывании, чтобы определить переменную некоторого класса, перед написанием кода необходимо сослаться на библиотеку объектов серверов Automation. Для этого в редакторе Visual Basic необходимо выбрать команду Tools | References. В появившемся диалоговом окне References — VBAProject в списке Available References установить флажок подсоединяемой библиотеки объектов, например, Microsoft Word 9.0 Object


3.13. Работа с базами данных в VB

База данных (database) — это набор информации, обычно представленный в виде записей, содержащих однородные данные. Самым привычным примером базы является телефонная книга, содержащая имена, телефоны и адреса. Каждая строка телефонной книги представляет собой запись, хранящую сведения об абоненте.
Самым распространенным в настоящее время типом баз данных являются реляционные базы данных (relational database). Они хранят информацию во множестве таблиц, связанных по ключевым полям.
Хорошим примером базы данных с несколькими таблицами может служить учебная база данных Борей, хранимая в файле Bopeft.mdb и поставляемая вместе с MS Office. Давайте откроем эту базу в MS Access для того, чтобы взглянуть на ее структуру.
В базе данных Борей имеется восемь таблиц. Уже из их названий ясно, что некоторые из этих таблиц, скорее всего, связаны между собой, например, Заказано и Заказы. Чтобы получить более полную информацию о связях, выберите команду Сервис | Схема данных. На экране отобразится окно Схема данных.
Для связывания таблиц между собой используются отношения. Отношения обеспечивают сохранения целостности данных (data integrity). Целостность данных гарантирует, что пользователь будет работать только с непротиворечивыми данными и разрешенными операциями в отношении связанных таблиц. Например, при соблюдении целостности данных вы сможете добавить записи заказов только для существующих клиентов. Между таблицами в базе данных можно установить отношения трех типов: □ "Один-ко-многим". Это отношение обозначается в окне Схема данных линией 1 —. Например, таблицы Клиенты и Заказы связаны данным типом отношения. Это означает, что один клиент может сделать несколько заказов.

Учебная база данных Борей
"Один-к-одному". Это отношение обозначается в окне Схема данных ли-нией 1 — 1. Отношение типа "один-к-одному" возникает, когда с каждой его стороны имеется ровно одна запись, например, когда информация о финансовом состоянии клиента должна быть отделена от остальных сведений о нем.
схема данных

"Многие-ко-многим". Это отношение возникает тогда, когда каждая запись первой таблицы связана со многими записями второй таблицы и наоборот. В подобных случаях обычно строится промежуточная таблица, обеспечивающая отношение "один-ко-многим" с каждой из таблиц по отдельности. Классическим примером данного отношения является таблица товаров, приобретенных покупателями. Каждый покупатель может приобрести множество различных товаров, и каждый товар может быть преобретен различными покупателями.
Таблицы связываются друг с другом при помощи ключевых полей (key fields). Ключи бывают первичными (primary) и внешними (foreign). Первичный ключ уникальным образом идентифицирует запись. Он может содержать значащие данные или быть произвольным полем, созданным только для того, чтобы снабдить запись неповторяющимся идентификатором. Главное требование для первичного ключа — уникальность. Поле в таблице, которое хранит значение, связанное со значением другой таблицы, называется внешним ключом. Например, поле КодТипа в таблице Типы базы данный Борей является первичным ключом, а поле КодТипа в таблице Товары — внешним. Внешний ключ должен иметь такой же тип, как и первичный ключ таблицы, с которой он связан2.
Задача разработчика баз данных состоит в структурировании данных таким образом, чтобы устранить ненужное дублирование и обеспечить быстрый путь поиска всей необходимой информации. Для этих целей информацию клят на структурные единицы — таблицы, а сам процесс этого деления называется нормализацией. Ключевым правилом нормализации является следующее: таблицы, которые содержат повторяющуюся информацию, должны быть разделены на отдельные таблицы, чтобы устранить дублирование значений. Например, если бы база данных состояла из одной таблицы, содержащей информацию как по заказам, так и по заказчикам, то сведения о заказчиках во многих записях повторялись бы. После разделения этой таблицы на две таблицы дублирование данных устраняется при существенном сокращении базы данных. Кроме того, устранение повторяемости данных уменьшает вероятность ввода ошибочных данных.
Для быстроты обработки данных в таблицах используют индексы. Индекс — это атрибут, который можно присвоить полю, чтобы облегчить для процессора базы данных выборку данных на основе информации, хранимой в этом поле. Например, в телефонной книге, вероятно, будет реализована функция поиска записи по фамилии или имени. Поэтому для каждого из этих полей имеет смысл создать индексы, чтобы ускорить процесс выборки записей на их основе. Но не следует чрезмерно перегружать таблицы индексами. При увеличении количества индексов увеличивается размер базы дани может свести на нет положительный эффект от их использования.
Microsoft Jet
MS Jet — это ядро базы данных, которое обеспечивает возможность к данным из любого приложения, поддерживающего OLE Automation, вча-стности VBA и MS Excel. Ядро Jet обеспечивает доступ к данным независи-мо от интерфейса конкретной системы базы данных. Оно хранит свою ин-формацию по умолчанию в файлах с базами данных, имеющих расширение mdb. Такие файлы баз данных содержат таблицы, индексы, запросы, формы отчеты и модули. Конечно, mdb-формат — это не единственный формат баз данных, с которыми работает Microsoft Jet. Он также взаимодействует с ба-зами данных, созданными FoxPro, dBASE и т. д.
DAO
Объектный доступ к данным (DAO, Data Access Objects) создавался как объ-ектно-ориентированный интерфейс ядра базы данных Jet, т. е. для обеспе-чения взаимодействия между приложением, например VBA, и ядром базы данных Jet. В MS Office 2000 была включена новая версия DAO — DAO 3.6 которая позволяет манипулировать данными в обход ядра Jet. В DAO3.6 можно напрямую связываться с источниками данных через ODBCDirect, что делает приложения более ресурсоемкими и быстродействующими.
Объекты доступа к данным образуют иерархическую структуру и являются логическим представлением реляционной системы базы данных: входящих в нее таблиц, записей, полей, индексов и т. д.
На рис. приведена объектная модель DAO. Самым первым в иерархии является объект DBEngine. Все остальные объекты доступа к данным являются производными от него. Более того, во всех операциях с базами данных по умолчанию используется объект DBEngine, даже если на него не указана явная ссылка. Этот объект создается по умолчанию, когда VBA начинает работать с какой-либо базой данных.

Объектная модель DAO
Семейства объекта DBEngine
Объект DBEngine содержит два семейства объектов. Каждое из них, в свою очередь, включает ряд семейств объектов.
О Семейство workspaces состоит из объектов Workspace, которые представляют собой рабочие пространства.
□ Семейство Errors состоит из объектов Error, которые хранят информацию об ошибках, возникающих во время сеанса доступа к данным.
Объект Workspace
Объект Workspace служит для идентификации сеанса доступа к базе данных со стороны пользователя. Этот объект управляет всем, что имеет отношение к тому, как отдельный пользователь взаимодействует с процессом базы данных. Объект workspace создается всякий раз, когда открывается база данных при помощи Microsoft Jet. Автоматически он создается в том случае, если не предпринимаются никакие усилия по его формированию в коде. Обращаться к объекту workspace по умолчанию надо следующим образом:
Set MyWorkspace = DBEngine.Workspaces(0)
Ноль — это индекс по умолчанию, т. е. данная инструкция задает первый объект, добавляемый в семейство workspaces.
Возможно также явное задание этого объекта для управления пользовательскими транзакциями и обеспечения определенного уровня зашиты при paботе с базами данных.
Объект workspace содержит три коллекции объектов.
Коллекция Databases состоит из объектов Database, которые представляют собой базы данных, открытые для данного объекта workspace.
Коллекция Groups состоит из объектов Group, которые представляют собой все группы пользователей, имеющих доступ к данному объект?
Коллекция users состоит из объектов User, которые представляют собой всех пользователей, имеющих доступ к данному объекту Workspace.

Объект Database содержит все определенные для базы данных таблицы, запросы и отношения. Объект Database создается всякий раз, когда база данных открывается при помощи метода OpenDatabase, и он существует до тех пор, пока не будет удален из памяти методом close.
Объект Database содержит 5 семейств объектов: TableDefs, QueryDefs,
Relations, Containes, Recordsets!
Семейство TableDefs состоит из объектов TabieDef. Объект TabieDef содержит в себе детальное определение каждой таблицы базы данных.
Семейство QueryDefs СОСТОИТ ИЗ объектов QueryDef. Объект QueryDef хра-нит в себе информацию о хранимом SQL-запросе. Запросы могут использоваться, например, в качестве одного из параметров метода OpenRecordset.
Семейство Relations состоит из объектов Relation. Объект Relation содержит определения отношений между полями таблиц или запросами, хранимыми в базе данных. Отношения помогают поддерживать ссылочную целостность базы данных. Процесс установки отношения включает в себя выбор двух таблиц, которые вы хотите связать, указания поля, по которому эти таблицы будут связаны, и определения типа устанавливаемого отношения.
Семейство Containers СОСТОИТ ИЗ объектов Container. В объектах container группируются однотипные объекты.
Семейство Recordsets СОСТОИТ ИЗ объектов Recordset. Объект Recordset представляет набор записей в основной таблице или набор записей, который получается в результате выполнения запроса. Это наиболее широко применяемый объект при программировании баз данных. Этот объект обладает внушительным перечнем свойств и методов.

Порядок работы при объектном доступе к данным
При извлечении информации с помощью объектного доступа к данным надо: создать рабочую область (объект workspace);
открыть базу данных (объект Database);
создать набор записей (объект Recordset);
начать непосредственную работу с конкретными записями и полями.
Создание рабочей области
Рабочую Область можно Создать МЕТОДОМ CreateWorkspace Объекта DBEngine.
Синтаксис:
Set workspace = CreateWorkspace [Name, UserName, Password, UseType)
Параметр
workspace описание
Объектная переменная, представляющая создаваемый объект
Workspace name строковое выражение, содержащее уникальное имя нового объекта
Workspace UserName Строковое выражение, определяющее владельца нового объекта
Workspace Password Строковое выражение, содержащее пароль для нового объекта
Workspace UseType Тип рабочей области. Допустимые значения: • dbUseJet (создание рабочей области ядра Microsoft Jet); • dbUseODBC (создание рабочей области ODBCDirect) Например, для формирования рабочей области Microsoft Jet можно исполь- зовать следующие две инструкции:
Листинг . Создание рабочей области Microsoft Jet
Dim ws As CreateWorkspace
Set ws = DBEngine.CreateWorkspace(Name:="myWS", _
UserName:="admin", Password:="", UseType:=dbUseJet)
Рабочую область ODBCDirect можно создать следующим образом (ссылка на объект DBEngine применяется по умолчанию, поэтому во второй инструкции объект DBEngine опущен):

Создание рабочей области ODBCDirect
Dim ws As CreateWorkspace
Set ws = CreateWorkspace(Name:="myWS", _
UserName:="UID", Password:="", UseType:=dbUseODBC)
Открытие базы данных
Открыть существующую базу данных можно методом OpenDatabase объек Workspace.
Синтаксис:
Set database = object.OpenDatabase(Name, Options, Readonly, Connect)
Параметр
database Описание
Объектная переменная, представляющая создаваемый объект Database object Объектная переменная, представляющая существующий объект Workspace. Если этот параметр опущен, то метод OpenDatabase использует стандартную рабочую область Name Строковое выражение, задающее имя существующего файла базы данных с ядром Microsoft Jet или имя источника данных ODBC Options Для рабочей области ядра Microsoft Jet допустимыми являются следующие значения аргумента:
• True (открытие базы данных для монопольного доступа); • False (по умолчанию, открытие базы данных для общего доступа). Для рабочей области ODBCDirect допустимыми являются следующие значения аргумента: dbDriverNoPrompt, dbDriverPrompt, dbDriverComplete, dbDriverCompleteRequired Readonly Параметр, принимающий логические значения и определяющий, открывается ли база данных только для чтения Connect Дополнительный параметр, содержащий сведения о подключении, в том, числе и пароли Например, для открытия базы данных с ядром Microsoft Jet можно использовать следующие две инструкции:
Открытие базы данных
Dim db As Database
Set db = ws.OpenDatabase(Name:=ThisWorkbook.Path & "\Пример.mdb",
Options:=True)
Объект Recordset
После открытия базы данных можно создать объект Recordset. Объект Recordset представляет собой записи исходной таблицы базы данных или результирующий набор записей, возвращаемый после выполнения запроса. Он позволяет управлять данными в базе данных на уровне записи. На уровне полей управление данными осуществляется объектом Field.
Имеются следующие типы Объекта Recordset:
Тип Описание Table Работает с одной таблицей текущей базы данных. В этом случае данные можно индексировать, что ускоряет поиск записей и их сортировку. При поиске записей допустимо применять вместо метода Find метод Seek Dynaset Позволяет получать, анализировать, удалять и редактировать данные из нескольких динамически связанных таблиц. Этот тип соответствует указателю ключевого набора записей ODBC Snapshot В этом режиме в общем случае нельзя редактировать базу данных, но скорость работы в рассматриваемом режиме больше чем в двух предыдущих Forward-only Статический режим с последовательным доступом. Перемещаться от записи к записи можно только вперед. Этот режим самый быстрый Dynamic Позволяет получать, анализировать, удалять и редактировать данные из нескольких динамически связанных таблиц. Этот тип соответствует динамическому указателю ODBC Создание объекта Recordset
Объектная переменная типа Recordset создается при помощи метода openRecordSet. Как и для любой объектной переменной ее надо сначала объявить, а только потом установить ссылку на объект, возвращаемый методом
OpenRecordSet.
Синтаксис ДЛЯ объекта Database:
Set recordset = object.OpenRecordset (Source, Type', Options, Lockedits)
Синтаксис ДЛЯ Объектов QueryDef, Recordset И TableDef:
Set recordset = object.OpenRecordset (Type, Options, Lockedits')

Параметр Описание recordset Объектная переменная, представляющая открываемый объект Recordset object Объектная переменная, представляющая существующий объект, используемый при создании нового объекта Recordset Source Строковое выражение, определяющее источник записей для новогс объекта Recordset. В качестве источника записей можно указать таблицы или запроса, а также SQL-инструкцию, которая возвращает записи. Для табличного объекта Recordset в базе данных MicrosoftJe: ■ в качестве источника допускается указание только имени таблицы Type Константа, задающая тип открываемого объекта Recordset. Допустимые значения: dbOpenTable, dbOpenDynaset, dbOpenSnaps.r DbOpenForwardOnly и DbOpenDynamic Options Специфицирует работу пользователя с объектом Recordset. Приведем 1 некоторые из допустимых значений:
• dbAppendOnly (пользователь может добавлять записи, но не мог редактировать уже существующие);
• dbReadOnly (запрещено вносить изменения в записи);
• dbDenyWrite (запрещено другим пользователям вносить изменения! Lockedits Устанавливает тип блокировки данных. Допустимые значения: dbReadOnly, dbPessimistic, dbOptimistic И dbOptimisticVaiue Методы и свойства объекта Recordset
Приведем наиболее часто используемые методы и свойства объекта Recordset, позволяющие анализировать и редактировать записи базы данных. Способы их применения будут показаны на большом количестве примеров в конце этой главы.
Методы объекта Recordset:
Метод Описание AddNew Создает и добавляет новую запись. После внесения изменений в новую запись следует вызвать метод update для сохранения изме- 1 нений и завершения процесса добавления записи в объект Recordset. До вызова метода update изменения в базу данных не заносятся Clone Создает копию объекта Recordset. Синтаксис:
Set Копия = Оригинал.Clone Close Закрывает открытый объект доступа к данным Delete Удаляет текущую запись в обновляемом объекте Recordset Edit Копирует текущую запись из обновляемого объекта Recordset в буфер для последующего изменения. После внесения изменений в новую запись следует вызвать метод update для сохранения изменений и добавления записи в объект Recordset MoveFirst, MoveLast, MoveNext, MooveFrevious Делают текущей первую, последнюю, следующую или предыдущую запись объекта Recordset FindFirst, FirdLaSt FindNext, Находят первую, последнюю, следующую или предыдущую запись, удовлетворяющую заданным условиям, и делают эту запись текущей. FindPrevious Синтаксис:
{FindFirst | FindLast I FindNext I FindPrevious} Criteria
где Criteria— это выражение или переменная типа String, используемая для поиска записи.
Приведем несколько примеров критериев:
"[Оценка] > 3" "[Фамилия] = 'Петров'" "[Оценка] =5 AND [Предмет] = 'Информатика'" "[ДатаЭкзамена] = #25/12/99#" Seek Находит в индексированном объекте Recordset типа Table запись, удовлетворяющую заданным условиям для текущего индекса, и делает эту запись текущей.
Синтаксис:
Seek Comparison, Keyl, Key2,... Key13 • Comparison — допустимые значения: <, <=, =, >= или >;
• Keyl, Key2..... Кеу13— одно или несколько значений ключевых полей в текущем индексе объекта Recordset GetRows Загружает строки объекта Recordset в массив. Синтаксис:
Set ИмяМассива = НаборЗаписей.GetRows[NumRows) где NumRows — число строк Update Сохраняет вставки и изменения, произведенные в объекте Recordset при помощи методов AddNew и Edit CancelUpdate Отменяет все изменения объекта Recordset, выполненные при помощи методов AddNew И Edit

Перечислим наиболее часто используемые свойства объекта Recordset.
Свойство Описание BOF Возвращает значение True, если указатель текущей записи расположен перед первой записью набора, и значение False, если указатель текущей записи расположен на первой записи набора или на любой записи после нее EOF Возвращает значение True, если указатель текущей записи расга- I ложен после последней записи набора, и значение False, если ука- 1 затель текущей записи расположен на последней записи набора или на любой записи перед ней Bookmark Устанавливает или возвращает закладку, которая однозначно деляет текущую запись в объекте Recordset. Обычно используется для возврата в объекте Recordset на определенное место, без ука- зания конкретного адреса записи NoMatch Возвращаемое значение True, если нужная запись не найдена, и 1 False — в противном случае RecordCount Возвращает число записей, к которым был осуществлен доступ в
объекте Recordset. Свойство RecordCount не показывает, сколько записей содержится в объекте Recordset до обращения ко всем записям. После обращения к последней записи набора значение свойства RecordCount становится равным полному числу неудален- ных записей в объекте Recordset. Для принудительного обращения к последней записи следует вызвать для объекта Recordset метод MoveLast Filter Задает или возвращает значение, определяющее записи, которые будут включены в открываемый объект Recordset.
При указании критерия фильтрации имена полей заключаются в квадратные скобки. Приведем несколько примеров критериев:
[Оценка]=5 [Оценка]>=3 [Оценка]=5 AND [Предмет]="Информатика" [Оценка]=4 AND [Предмет]="Информатика" [Оценка]>=4 AND [Предмет] IN ("Информатика", "Право") [Длина]*[Ширина]>100
В критериях вместо знака равенства допустимо использование ключевого слова like, например [Оценка] LIKE 5 Sort Задает или возвращает порядок сортировки записей в объекте Recordset (только в рабочей области Microsoft Jet).
Для сортировки по возрастанию используется ключевое слово asc, а по убыванию — desc. Например: [Оценка] ASC [Фамилия] DESC
и сортировка первоначально по полю Оценка, а потом по полю Фамилия
[Оценка] ASC, [Фамилия] DESC
Создание SQL-запроса
Рассказывать об элементах управления данными и не сказать ничего о структурированном языке запросов SQL, было бы непростительным упущением. Команды языка SQL делятся на две большие категории: команды манипулирования данными (DML) и команды определения данных (DDL). В качестве значения параметра source метода OpenResordset можно задавать не имя таблицы, а оператор, созданный на основе команд языка SQL. Это позволяет отображать в форме не всю таблицу, а какую-то выборку данных из этой таблицы или даже из нескольких таблиц. Причем, выборка может производиться по довольно сложным критериям, с одновременным подведением итогов по выбираемым данным. В последующих разделах показано, как при помощи команды манипулирования данными строятся итоговые таблицы.
Оператор SELECT
Итак, перейдем к обсуждению команд и операторов языка SQL. Оператор жжт возвращает построенную выборку данных из одной или нескольких таблиц базы данных по указанным критериям.
Синтаксис оператора select выглядит довольно устрашающе. Но, пускай, это вас не беспокоит. Сразу же после приведения его формального синтаксиса, на конкретных примерах мы обсудим, как работает этот оператор.
SELECT [Предикат] { * | Таблица.* I [Таблица. }Поле__1
[AS Псевдоним__1] [, [ Таблица.] Пол е__2 [AS Псевдонмм_2] [, ...]]}
FРОМ Выражение [,...]
[Where ... ]
[GROUP BY. . . ] [HAVING. . . ] [ORDER BY... ]
Предикат — предикаты используются для ограничения числа возвращаемых записей. Если они отсутствуют, по умолчанию используется предикат all. Допустимые значения:
all (возвращает все записи);
distinct (исключает записи, которые содержат повторяющиеся значения в выбранных полях);
distinctrow (пропускает данные, основанные на целиком повторяющихся записях, а не на отдельных повторяющихся полях);
тор (возвращает определенное число записей, находящихся в начале или в конце диапазона, описанного с помощью предложения order by).
* — указывает, что выбраны все поля заданной таблицы или таблиц. таблица — имя таблицы, из которой должны быть отобраны записи
поле_п — имена полей, из которых должны быть отобраны данные. Если включить несколько полей, они будут извлекаться в указанном порядке
Псевдоним_п — имена, которые станут заголовками столбцов вместо ис-ходных имен столбцов в таблице.
выражение — имена одной или нескольких таблиц, которые содержат отбираемые данные.
Итак, перейдем к последовательной иллюстрации действия оператора select на примерах, построенных в учебной базе данных Борей.mdb.
В первом примере оператор возвращает записи одного поля Название таблицы Поставщики:
SELECT Название FROM Поставщики
В следующем примере оператор возвращает записи двух полей (Название и Город) таблицы Поставщики:
SELECT Название, Город FROM Поставщики
Для того чтобы получить все поля таблицы, т. е. всю таблицу Поставщики воспользуйтесь оператором:
SELECT * FROM Поставщики
или, что равносильно
SELECT ALL * FROM Поставщики
Предложение ORDER BY
Добавление в SQL-команду предложения order by обеспечивает упорядочи-вание набора выбранных записей. Добавление ключевого слова asc или dfs после имени поля задает порядок сортировки по этому полю (возрастающий или убывающий).
Следующий оператор возвращает всю таблицу Поставщики, записи которой упорядочены по полю Название в порядке возрастания:
SELECT * FROM Поставщики ORDER BY Название ASC
Приводимый ниже оператор возвращает записи двух полей (Название и Го-род) таблицы Поставщики, причем, записи упорядочены по полю Название в порядке возрастания, а по полю Город — в порядке убывания:
SELECT Название, Город FROM Поставщики ORDER BY Название ASC, Город DESC
Предложение WHERE
Добавление в SQL-команду предложения where обеспечивает проведение выборки по критерию. В предложении where допустимо использование про-стых операций сравнения (=, <>, >, <, >=, <=), например, город = 'Париж' или Город<>"Париж", либо составных с использованием логических операторов AND и OR. В следующем примере возвращаются записи из двух полей (СтранаПолучателя и СтоимостьДоставки) таблицы Заказы, соответствую-щие странам германия и Мексика, причем, записи упорядочены по полю Страна Получателя:
SELECT СтранаПолучателя, СтоимостьДоставки FROM Заказы
WHERE СтранаПолучателя = ' Германия' OR СтранаПолучателя = ' Мексика'
ORDER BY СтранаПолучателя ASC
В конструкции where допустимо использование следующих сравнений:
between and или not between and — для выборки записей, в которых зна- чения специфицированного поля принадлежат указанному диапазону или лежат за его пределами. В первом из следующих двух примеров возвра-
щаются все заказы, сделанные от 8/6/94 до 12/7/95, а во втором — вне этого диапазона дат.
SELECT ДатаРазмещения, СтранаПолучателя FROM Заказы
WHERE ДатаРазмещения BETWEEN #8/б/94# AND # 12/7/95#
SELECT ДатаРазмещения, СтранаПолучателя FROM Заказы
WHERE ДатаРазмещения NOT BETWEEN #8/6/94# AND #12/7/95#
IN— для выборки записей, в которых значения специфицированного по-
ля принадлежат указанному множеству. В следующем примере возвра- щаются все заказы, странами получателями которых являются либо гер-
мания, либо Мексика.
SELECT ДатаРазмещения, СтранаПолучателя FROM Заказы WHERE СтранаПолучателя-IN ('Германия', 'Мексика')
luke—для выборки записей, в которых значения специфицированного поля имеют определенный шаблон. Для создания шаблонов можно использовать символы * (для множества символов) и ? (для одного символа). Например, Фамилия like 'ф*в' позволяет сделать выборку всех фамилий, НачИНаЮЩИХСЯ С буКВЫ Ф И Заканчивающихся буКВОЙ В, а Фамилия
like т???????о' — фамилий, состоящих из девяти букв и начинающиеся с буквы г и заканчивающиеся буквой о.
Обратите внимание, что все строки в операциях сравнения заключаются в одинарные кавычки, например, 'Германия'. Подобным же образом, даты должны обрамляться символом #, например, #12/7/99#.
Предложение where можно также использовать для связи двух и более таб-лиц. В следующем примере объединяются две таблицы Клиенты и Заказы по общему столбцу с названиями стран:
SELECT Заказы.ДатаИсполнения, Клиенты.КодКлиента
FROM Клиенты, Заказы WHERE Заказы. СтранаПолучателя = Клиенты. Страна

С целью сокращения длины кода допустимо использование ключевого слова AS для ввода новых обозначений таблиц. Предыдущий пример, используя ключевое слово as, можно записать в следующей укороченной форме:
SELECT За.ДатаИсполнения, Кл.КодКлиента FROM Клиенты AS Кл, 3аказы AS За WHERE За.СтранаПолучателя = Кл.Страна
Статистические функции
Оператор select можно применять для выполнения вычислений со значениями, которые хранятся в таблицах. При этом используются следуют статистические функции, которые обрабатывают соответствующие значении полей в записях, отвечающих условию where.
Функция
Avg Возвращает
Среднее значение Count Число записей КЛп Минимальное число записей Max Максимальное число записей Sum Сумму StDev Среднеквадратичное отклонение StDevP Среднеквадратичное отклонение для генеральной совокупности Var Дисперсию значений VarP Дисперсию значений для генеральной совокупности Рассмотрим, например, как работает команда, возвращающая минимальную. максимальную, среднюю и суммарную стоимость доставок в Германию. а также общее число доставок. В этом случае запрос строится следующей командой:
SELECT Min(СтоимостьДоставки) AS Мин, Мах(СтоимостьДоставки) AS Макс, Avg (СтоимостьДоставки) AS Среднее, Sum (СтоимостьДоставки) AS Сумма, Count(СтоимостьДоставки) AS [Количество доставок] FROM Заказы WHERE СтранаПолучателя = 'Германия'


4. Разработка программного комплекса
4.1. Разработка алгоритма решения задачи

VBA- модуль представляет собой следующую систему кнопок.



Кнопка «синхронизация»
Переводит данные из области основного листа


На лист «план-график»
Кнопка «добавить работу» выводит форму,



После заполнения которой данные вносятся в базу, и соответствующая строка окрашивается в коричневый цвет
Кнопка «удалить работу» удаляет данные из последней строки, окрашивая ее в красный цвет



Кнопка «работа выполнена»
Окрашивает последнюю строку в серый цвет


Кнопка «цвет по умолчанию» возвращает всем ячейкам в таблице белый цвет
Кнопка «рассчитать дельту» подсчитывает дельту и остаток по всем строкам в таблице справа



Кнопка «добавить примечание»
Выводит форму для заполнения


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


Кнопка заполнение трудозатрат выводит форму



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


Номер работы- первое поле формы.

Кнопка «рассчет трудозатрат» оценивает разницу между запланированным и выполненным объемом работ по месяцам для всех строк таблицы
Дельта окрашивается в соответствующий цвет в зависимости от знака.


Код скрипта

Private Sub CommandButton1_Click()
MsgBox "обновление листа"
For v = 0 To 11
For w = 0 To 8
Application.Workbooks(1).Worksheets("План-график").Cells(w + 7, v + 2) = Application.Workbooks(1).Worksheets("План-задание").Cells(3 + w, 2 + v)






Next w
Next v

End Sub

Private Sub CommandButton2_Click()

Application.ActiveWorkbook.Worksheets(1).Cells(10000, 200) = 0



ind_ = 0
For w = 0 To 8
cur = Application.Workbooks(1).Worksheets("План-задание").Cells(3 + w, 2)

If cur = 0 Then

ind_ = 3 + w
Exit For

End If


Next w
Application.ActiveWorkbook.Worksheets(1).Cells(10000, 201) = ind_
UserForm1.Show
For v = 0 To 11

Application.Workbooks(1).Worksheets("План-задание").Cells(ind_, 2 + v).Interior.Color = RGB(200, 100, 2)







Next v


End Sub

Private Sub CommandButton3_Click()
ind_ = 0
For w = 0 To 8
cur = Application.Workbooks(1).Worksheets("План-задание").Cells(3 + w, 2)

If cur = 0 Then

ind_ = 2 + w
Exit For

End If


Next w

For v = 0 To 11
Application.Workbooks(1).Worksheets("План-задание").Cells(ind_, 2 + v) = 0

Application.Workbooks(1).Worksheets("План-задание").Cells(ind_, 2 + v).Interior.Color = RGB(200, 2, 2)







Next v

End Sub

Private Sub CommandButton4_Click()
ind_ = 0
For w = 0 To 8
cur = Application.Workbooks(1).Worksheets("План-задание").Cells(3 + w, 2)

If cur = 0 Then

ind_ = 3 + w
Exit For

End If


Next w

For v = 0 To 11

Application.Workbooks(1).Worksheets("План-задание").Cells(ind_, 2 + v).Interior.Color = RGB(100, 100, 100)







Next v

End Sub

Private Sub CommandButton5_Click()
For v = 0 To 11
For w = 0 To 8
Application.Workbooks(1).Worksheets("План-задание").Cells(3 + w, 2 + v).Interior.Color = RGB(255, 255, 255)





Next w
Next v
End Sub

Private Sub CommandButton6_Click()

ind_ = 0
For w = 0 To 8
cur = Application.Workbooks(1).Worksheets("План-задание").Cells(3 + w, 2)

If cur = 0 Then

ind_ = 3 + w
Exit For

End If


Next w
Delta = 0

For w = 3 To ind_ - 1
Delta = 0
perz = 0
For v = 0 To 12

Delta = Delta + Application.Workbooks(1).Worksheets("План-задание").Cells(w, 13 + 2 * v + 1) - Application.Workbooks(1).Worksheets("План-задание").Cells(w, 13 + 2 * v)
perz = perz + Application.Workbooks(1).Worksheets("План-задание").Cells(w, 13 + 2 * v)





Next v
F = CStr(Delta)
Application.Workbooks(1).Worksheets("План-задание").Cells(w, 37) = F
Application.Workbooks(1).Worksheets("План-задание").Cells(w, 38) = CStr(perz)
B = 0
Next w

End Sub

Private Sub CommandButton7_Click()

Application.ActiveWorkbook.Worksheets(1).Cells(10000, 200) = 1



ind_ = 0
For w = 0 To 8
cur = Application.Workbooks(1).Worksheets("План-задание").Cells(3 + w, 2)

If cur = 0 Then

ind_ = 3 + w
Exit For

End If


Next w
Application.ActiveWorkbook.Worksheets(1).Cells(10000, 201) = ind_
UserForm1.Show


End Sub

Private Sub CommandButton8_Click()
ind_ = 0
For w = 0 To 8
cur = CInt(Application.Workbooks(1).Worksheets("План-задание").Cells(25 + w, 2))

If cur = 0 Then

ind_ = 3 + w
Exit For

End If


Next w

For w = 0 To ind_ - 1
cur_Plan = CInt(Application.Workbooks(1).Worksheets(2).Cells(25 + w, 7))

cur_fact = 0
For t = 0 To 11
cur_fact = cur_fact + CInt(Application.Workbooks(1).Worksheets(2).Cells(25 + w, 8 + t))

Next t
Delta = cur_fact - cur_Plan
Application.Workbooks(1).Worksheets(2).Cells(25 + w, 8 + 12) = Delta

If Delta = 0 Then
Application.Workbooks(1).Worksheets(2).Cells(25 + w, 8 + 12).Interior.Color = RGB(155, 155, 155)
Else
If Delta < 0 Then
Application.Workbooks(1).Worksheets(2).Cells(25 + w, 8 + 12).Interior.Color = RGB(255, 0, 0)
Else

Application.Workbooks(1).Worksheets(2).Cells(25 + w, 8 + 12).Interior.Color = RGB(0, 255, 0)

End If


End If


Next w


End Sub

Private Sub CommandButton9_Click()

Application.ActiveWorkbook.Worksheets(1).Cells(10000, 200) = 2

UserForm1.Show



End Sub
4.2. Организационно-экономический раздел
4.2.1. Маркетинг
Маркетинг - система организации хозяйственной деятельности, основанная на изучении рыночного спроса, возможностей сбыта продукции, реализации услуг. Это комплекс мероприятий для успешного продвижения товара на рынке.
Для того, чтобы товар пользовался спросом на рынке, необходимо провести исследование и определить какие потребности у потенциальных клиентов, какие дополнительные функции (по сравнению с существующими на рынке) необходимо добавить в прибор, какие услуги необходимо оказывать пользователям.
Очевидные маркетинговые мероприятия, необходимые для продвижения на рынке разрабатываемого продукта:
публикации в специализированных изданиях;
участие в профильных конференциях;
создание Интернет ресурса;
Такие мероприятия позволят не только рекламировать продукт среди целевой аудитории, но и лучше исследовать потенциальный рынок.
4.2.2. Организационный план
Для выполнения работы создана лаборатория, в состав которой входят:
начальник отдела;
инженер первой категории;
лаборант.
Их взаимодействие осуществляется по следующей схеме:
Начальник отдела
Инженер I категории
Лаборант
При планировании работы выделим следующие этапы разработки:
- Техническое задание (9 дней).
- Технические предложения (4 дня) Эскизно-технический проект:
- Постановка задачи (3 дня).
- Сбор, изучение и анализ литературы (33 дня).
- Проведение основных расчетов (17 дней).
- Изготовление экспериментальной модели (20 дней)
Экспериментальная часть:
- Калибровка экспериментальной модели(5 дней)
3.6 - Отладка экспериментальной модели (4 дней) 3.7- Оформление результатов (3 дней)
3.8 - Анализ результатов (7 дней)
4 - Подготовка документации и сдача темы (3 дней).
Общая продолжительность выполнения проекта 108 дней. Для сокращения общей продолжительности выполнения работы следующие друг за другом и выполняемые разными исполнителями, проводятся одновременно или, по крайней мере, с перекрытием по срокам, что отражено в календарном план-графике.

Календарный план-график
Таблица 3.2 Основная заработная плата
Этапы Исполнитель Трудоем кость в днях Оклад, руб. Оплата за 1 день, руб. Оплата за этап, руб. Техническое задание Начальник отдела 9 7 000 318 2 862 Технические предложения Инженер I категории 4 5 800 264 1056 Постановка задачи Начальник отдела 2 7 000 318 636
Инженер I категории 3 5 800 264 792 Сбор, изучение и анализ литературы Лаборант 33 4 800 218 7 194 Проведение основных расчетов Инженер I категории 12 5 800 264 3 168
Лаборант 17 4 800 218 3 706 Изготовление экспериментальной модели Инженер I категории 15 5 800 264 3 960
Лаборант 20 4 800 218 4 360 Калибровка экспериментальной
модели Начальник отдела 1 7 000 318 318
Инженер I категории 2 5 800 264 528
Лаборант 5 4 800 218 1090 Отладка экспериментальной модели Инженер I категории 2 5 800 264 528
Лаборант 4 4 800 218 436 Оформление результатов Лаборант 3 4 800 218 654 Анализ результатов Инженер I категории 4 5 800 264 1056
Лаборант 7 4 800 218 1526 Подготовка документации и сдача темы Инженер I категории 1 5 800 264 264
Лаборант 3 4 800 218 654 Итого 34 788
4.2.3. Расчет затрат
Расчет затрат произведем методом постатейной сметной калькуляции. Под этим понимается предварительный расчёт ожидаемых затрат, выполненный по номенклатуре статей.
Сметная калькуляция является основным документом, определяющим сумму ассигнований, необходимых для выполнения работы.
Проведем расчёт затрат по статьям.
Материалы и покупные изделия.
Материалы и покупные изделия см. таблицу 3.3:
Наименование Единицы измерений Стоимость единицы изделия, руб. Количество Итого, руб. Карандаш Шт. 5 5 25 Ручка Шт. 10 3 30 Ватман Лист 5 10 50 Ластик Шт. 6 3 18 Бумага Лист. 0,5 250 125 Линейка Шт. 10 3 30 Компакт Диск Шт. 12 5 60 Папка для бумаг Шт. 1 10 10 Картридж для принтера Шт. 380 1 380 ИТОГО: 728 Таблица 3.3
Транспортные расходы составляют 15% от стоимости материалов и покупных изделий и равны 110 руб.
Всего расходы по статье «Материалы и покупные изделия» с учетом транспортных затрат составляют 728 + 110 = 838 руб.



Основная заработная плата.
Основная заработная плата персонала равна 34 788 рублей (см. таблицу 3.2).
Дополнительная заработная плата.
Данная статья представляет собой разность между годовым и основным фондом заработной платы и включает в себя выплаты, предусмотренные законодательством о труде или коллективными договорами за непроработанное на производстве время: оплата очередных и дополнительных отпусков, оплата льготных часов подростков, оплата времени, связанного с выполнением государственных обязанностей и др.
Размер дополнительной заработной платы в себестоимости изготовления изделия устанавливается в размере 20 % от основной заработной платы, что составляет: 6 958 рублей.
Отчисления на социальные нужды.
Данная статья включает в себя отчисления в пенсионный фонд 28 %, отчисления в фонд обязательного медицинского страхования 3,6 %, в фонд социального страхования 4 %, в фонд страхования по увечью 0 % . Размер отчислений на социальные нужды составит 35,6 % от фонда оплаты труда (суммы основной заработной платы и дополнительной заработной платы):
0,356 * (34 788 + 6 958) = 14 861 рублей.
Расходы на специальное оборудование на НИР.
Отсутствуют.
Оплата работ сторонних организаций.
Отсутствуют.

Прочие расходы.
Прочие расходы затраты на машинное время оплачиваются из расчета 10 руб/час. Учитывая что за компьютером работа проводилась в течении 80-ти дней (8 часовой рабочий день), затраты составляют 6400 рублей.
Накладные расходы.
Накладные расходы составляют 250 % от основной заработной платы 86 970 руб.
Итоговая таблица - расчет стоимости разработки
Таблица 3.4
Наименование статей Сумма, руб. Материалы и покупные изделия 838 Основная заработная плата 34 788 Дополнительная заработная плата 6 958 Отчисления на социальные нужды 14 861 Расходы на специальное оборудование на НИР 0 Оплата работ сторонних организаций 0 Прочие расходы 6 400 Накладные расходы 86 970 Итоговая стоимость разработки 150 815 Расчет договорной цены
Договорная цена определяется по договору между заказчиком и исполнителем и вычисляется по формуле:
Договорная цена = стоимость разраб. + норматив прибыль (25% от стоимости разработки) + НДС
Так как разработка государственная то НДС не взимается, попадая под льготу.
150 815 руб. + 37 703 руб.= 188 519 руб.
Договорная цена равна 188 519 рублей


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

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

Список используемых источников

1. Образовательный стандарт по специальности "Прикладная математика" http://www.edu.ru/db/portal/spe/index.htm.
2. Гарнаев А.Ю. Самоучитель VBA. - СПб: БХВ-Петербург, 2003.
3. Долженков В., Мозговой М. Visual Basic.NET: учебный курс. - СПб: Питер, 2003.
4. Брайан Сайлер, Джефф Споттс Использование Visual Basic 6. Специальное издание: пер. с англ. - М.: Изд. дом "Вильямс", 1999.
5. Макашарипов С. Программирование баз данных на Visual Basic 5 в примерах. - СПб: Питер, 1997.
6. Ананьев А.И., Федоров А.Ф. Самоучитель Visual Basic 6.0. - СПб: БХВ-Петербург, 2000.
7. Microsoft Corporation. Руководство программиста по Visual Basic для Microsoft Office 97. Пер. с англ. - М.: Изд. отдел "Русская редакция" ТОО "Channel Trading Ltd", 1997.








149


Список используемых источников

1. Образовательный стандарт по специальности "Прикладная математика" http://www.edu.ru/db/portal/spe/index.htm.
2. Гарнаев А.Ю. Самоучитель VBA. - СПб: БХВ-Петербург, 2003.
3. Долженков В., Мозговой М. Visual Basic.NET: учебный курс. - СПб: Питер, 2003.
4. Брайан Сайлер, Джефф Споттс Использование Visual Basic 6. Специальное издание: пер. с англ. - М.: Изд. дом "Вильямс", 1999.
5. Макашарипов С. Программирование баз данных на Visual Basic 5 в примерах. - СПб: Питер, 1997.
6. Ананьев А.И., Федоров А.Ф. Самоучитель Visual Basic 6.0. - СПб: БХВ-Петербург, 2000.
7. Microsoft Corporation. Руководство программиста по Visual Basic для Microsoft Office 97. Пер. с англ. - М.: Изд. отдел "Русская редакция" ТОО "Channel Trading Ltd", 1997.

Вопрос-ответ:

Какие функции системы ведения проекта автоматизируются?

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

Какие требования анализируются при разработке проекта?

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

Как выбираются показатели эффективности проекта?

В статье описывается процесс выбора показателей эффективности проекта.

Каким образом осуществляется оценка показателей эффективности проекта?

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

Какими показателями оценивается системная составляющая проекта?

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

Какие функции автоматизируются в системе ведения проекта?

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

Какие требования анализируются в техническом задании проекта?

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

Какие показатели эффективности выбираются при планировании проекта?

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

Какие системные показатели проекта оцениваются?

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

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

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