Рефераты

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

следующего заказа счета-фактуры). Процедура обработки событий (листинг

3.56).

Примечания: - .

3) «Кнопка71», «Кнопка72», «Кнопка73», «Кнопка75».

Назначение: для перехода по записям для текущей формы (счета -фактуры

для данной организации). Реализация с помощью мастера.

4) «Кнопка70».

Назначение: для удаления выделенной записи в списке «СистемыНаВыписку»

из временной таблицы «НаВыпискуСчета» с проверкой на наличие выделенной

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

изменений (в списке «СистемыНаВыписку»). Процедура обработки событий

(листинг 3.57).

Примечания: - .

5) «Кнопка74».

Назначение: для удаления всех записей в списке «СистемыНаВыписку» из

временной таблицы «НаВыпискуСчета», обновление содержимого формы, с целью

отображения последних изменений (в списке «СистемыНаВыписку»). Процедура

обработки событий (листинг 3.58).

Примечания: - .

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

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

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

1. «Прейскурант» - основная. (свободная форма)

2. «ПрейскурантОС» - подчиненная1 (к основной)

(источник записей таблица «ПрейскурантОС»).

3. «ПрейскурантОП» - подчиненная2 (к основной)

(источник записей таблица «ПрейскурантОП»).

4. «Прейскурант_Север» - подчиненная3 (к основной)

(источник записей таблица «Прейскурант_Север»).

5. «Прейскурант_Россия» - подчиненная4 (к основной)

(источник записей таблица «Прейскурант_Россия»).

Форма «Прейскурант».

а) Кнопки

1) «Кнопка119»(Отдел продаж).

Назначение: для вывода на экран формы Подчиненная1 и скрытия форм

Подчиненная2,3,4, замена подписи надписи «Регион» и надписи «Регион1» на ’

Отдел продаж ’. Процедура обработки событий (листинг 3.59).

Примечания: - .

2) «Кнопка117»(Отдел сопровождения).

Назначение: для вывода на экран формы Подчиненная2 и скрытия форм

Подчиненная1,3,4, замена подписи надписи «Регион» и надписи «Регион1» на ’

Отдел сопровождения’. Процедура обработки событий (листинг 3.60).

Примечания: - .

3) «Кнопка118»(По России).

Назначение: для вывода на экран формы Подчиненная3 и скрытия форм

Подчиненная1,2,4, замена подписи надписи «Регион» и надписи «Регион1» на ’

Исключая Москву и Московскую область’. Процедура обработки событий (листинг

3.61).

Примечания: - .

4) «Кнопка120»( и др.).

Назначение: для вывода на экран формы Подчиненная4 и скрытия форм

Подчиненная1,2,3, замена подписи надписи «Регион» и надписи «Регион1» на ’

Для отдаленных и северных районов’. Процедура обработки событий (листинг

3.62).

Примечания: - .

5) «КнопкаВыход».

Назначение: закрытие текущей формы.

Примечания: реализация с помощью мастера.

Формы «ПрейскурантОС», «ПрейскурантОП», «Прейскурант_Север»,

«Прейскурант_Россия» являются однотипными простыми формами для ввода

информации о ценах систем для разных регионов. Все поля в формах имеют

источниками данных аналогичные поля в исходных таблицах для форм. Во всех

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

следующую и предыдущую записи)

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

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

четырех форм:

1. «ЦенаСистем» - основная. (свободная форма)

2. «ЦенаСистемМосква» - подчиненная1 (к основной)

(источник записей таблица «ЦенаСистемМосква»).

3. «ЦенаСистемРоссия» - подчиненная2 (к основной)

(источник записей таблица «ЦенаСистемРоссия»).

4. «ЦенаСистемСевер» - подчиненная3 (к основной)

(источник записей таблица «ЦенаСистемСевер»).

Форма «Прейскурант».

а) Кнопки

1) «Москва».

Назначение: для вывода на экран формы Подчиненная1 и скрытия форм

Подчиненная2,3, замена подписи надписи «Регион» и надписи «Регион1» на ’

Москва и московская область’. Процедура обработки событий (листинг 3.63).

Примечания: - .

2) «Россия».

Назначение: для вывода на экран формы Подчиненная2 и скрытия форм

Подчиненная1,3, замена подписи надписи «Регион» и надписи «Регион1» на ’

Исключая Москву и Московскую область’. Процедура обработки событий (листинг

3.64).

Примечания: - .

3) «ИТД»( и др.).

Назначение: для вывода на экран формы Подчиненная3 и скрытия форм

Подчиненная1,2, замена подписи надписи «Регион» и надписи «Регион1» на ’

Для отдаленных и северных районов’. Процедура обработки событий (листинг

3.65).

Примечания: - .

4) «КнопкаВыход».

Назначение: закрытие текущей формы.

Примечания: реализация с помощью мастера.

Формы «ЦенаСистемМосква», «ЦенаСистемРоссия», «ЦенаСистемСевер»

являются однотипными простыми формами для ввода информации о

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

источниками данных аналогичные поля в исходных таблицах для форм. Во всех

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

первую, следующую, предыдущую и последнюю записи)

7. Ввод и изменение адресных и банковских реквизитов организаций.

Форма «НовыеЗаказчики»

а) Поля

Поля данной формы являются простыми полями для ввода информации об

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

Поля для данной формы имеют источниками данных аналогичные поля в

исходной таблице.

1) «Образец»

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

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

события кнопки «Кнопка56»(Найти).

Вводимое значение: текстовое или цифровое.

2) «Список57»(Список) - скрытое поле

Назначение: свободное поле для поиска организации и перехода на

требуемую запись.

Источник записей: SQL - запрос по таблице «Заказчики».

Примечания: сформирован с помощью мастера.

б) Кнопки

1) «Кнопка50».

Назначение: для вывода на экран диалогового окна «СтатусЗаказчика», для

ввода нового типа статуса организации (см пункт __ ).

Примечания: реализация с помощью мастера.

2) «Кнопка43».

Назначение: переход на новую запись для данной формы (ввод новой

организации).

Примечания: реализация с помощью мастера.

3) «Кнопка44», «Кнопка45», «Кнопка46», «Кнопка47»

Назначение: переход по записям данной формы (первая, предыдущая,

следующая и последняя записи).

Примечания: реализация с помощью мастера.

4) «Кнопка_Закрыть»

Назначение: закрытие данной формы.

Примечания: реализация с помощью мастера.

5) «Кнопка56»(Найти).

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

образцу введенному в поле «Образец». Процедура обработки событий (листинг

3.66).

Примечания: - .

8. Изменение данных по авансовому отчету (корректировка распределения

сумм по месяцам для организаций).

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

трех форм:

1. «ИзменитьАвансОтчет» - основная

(источник записей таблица «Заказчики»).

2. «SubИзменениеАавнсОтчета» - подчиненная1 (к основной)

(источник записей временная таблица «Изменение АвансОтчета»).

3. «ИзменАавнсОтчТАБЛ» - вспомогательная

(источник записей таблица «АвансовыйОтчет»).

Форма «ИзменитьАвансОтчет»

а) Поля

1) «Образец»

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

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

события кнопки «Кнопка24»(Найти).

Вводимое значение: текстовое или цифровое.

2) «Организация»

Назначение: для отображения названия текущей организации.

Источник записей: аналогичное поле в исходной таблице.

3) «Список13» - список.

Назначение: свободное поле для поиска организации и перехода на

требуемую запись.

Источник записей: SQL - запрос по таблице «Заказчики».

Примечания: сформирован с помощью мастера.

б) Кнопки

1) «Кнопка24»(Найти).

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

образцу введенному в поле «Образец». Процедура обработки событий (листинг

3.67).

Примечания:.

2) «КнопкаЗакрытьФорму» (Настройки счета).

Назначение: для закрытия текущей формы.

Примечания: реализация с помощью мастера.

Форма «SubИзменениеАавнсОтчета» - ленточная форма

а) Поля

1) «ПоСчету»

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

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

Источник записей: аналогичное поле в исходной таблице.

2) «КодСистемы»

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

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

Источник записей: аналогичное поле в исходной таблице.

3) «ДатаНМС» - скрытое поле

Назначение: для хранения даты начального месяца сопровождения по

данному счету.

Источник записей: аналогичное поле в исходной таблице.

4) «Поле2» - скрытое поле

Назначение: для хранения даты последнего месяца сопровождения по

данному счету.

Источник записей: аналогичное поле в исходной таблице.

5) «ИдентКод» - скрытое поле

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

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

«ИзменАавнсОтчТАБЛ».

Источник записей: аналогичное поле в исходной таблице.

6) «Поле4»

Назначение: для отображения даты первого месяца сопровождения по

данному счету.

Источник записей: =Format([ДатаHMC];"mmmm yyyy").

7) «ДатаПМС»

Назначение: для отображения даты последнего месяца сопровождения по

данному счету.

Источник записей: =Format([Поле2];"mmmm yyyy")

б) Кнопки

1) «Кнопка14» (...).

Назначение: для вызова диалогового окна «ИзменАавнсОтчТАБЛ», с

применением фильтра по соответствующему значению в поле «ИдентКод» (листинг

3.68).

Примечания: реализация с помощью мастера.

Форма «ИзменАавнсОтчТАБЛ» - ленточная форма

а) Поля

1) «Месяц»

Назначение: для отображения месяца авансового отчета.

Источник записей: аналогичное поле в исходной таблице.

2) «Сумма»

Назначение: для отображения суммы по соответствующему месяцу авансового

отчета.

Источник записей: аналогичное поле в исходной таблице.

3) «ИдентКод» - скрытое поле

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

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

«ИзменАавнсОтчТАБЛ».

Источник записей: аналогичное поле в исходной таблице.

б) Кнопки

1) «Кнопка8» (Выход).

Назначение: для закрытия текущей формы.

Примечания: реализация с помощью мастера.

Комментарии.

Описанная структура имеет следующие особенности работы

1. Для формы Основная по событию «Текущая запись» в процедуре обработки

событий происходит заполнение временной таблицы «Изменение АвансОтчета» и

обновление формы, с целью отображения последних изменений с подчиненной

форме .

(листинг 3.69).

9. Общая результирующая информация по организациям, адресные и

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

системам для данной организации.

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

трех форм:

1. «ИнфПоОрганизациям» - основная

(источник записей таблица «Заказчики»).

2. «ИнфоПоОрганСистемы» - подчиненная1 (к основной)

(источник записей временная таблица «ИнфоПоСистемамЗаказчика»).

3. «ИнфоПоОрганSub» - подчиненная2 (к основной)

(источник записей временная таблица «ИнфоПоСистемамЗаказчика»).

Форма «ИнфПоОрганизациям»

а) Поля

1) «Образец»

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

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

события кнопки «Кнопка24»(Найти).

Вводимое значение: текстовое или цифровое.

2) «Список13» - список.

Назначение: свободное поле для поиска организации и перехода на

требуемую запись.

Источник записей: SQL - запрос по таблице «Заказчики».

Примечания: сформирован с помощью мастера.

3) Другие поля данной формы являются полями для отображения адресных и

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

соответствующие поля в исходной таблице.

б) Кнопки

1) «Кнопка24»(Найти).

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

образцу введенному в поле «Образец». Процедура обработки событий (листинг

3.70).

Примечания:.

2) «Кнопка57» (Обновить) - необходимость?.

Назначение: для обновления данных для текущей формы. Процедура

обработки событий (листинг 3.71).

Примечания: считывание обновленных данных из исходной таблицы на

сетевом диске.

3) «Кнопка26» (Адрес, реквизиты).

Назначение: для вывода на экран адресных и банковских реквизитов

организации (листинг 3.72).

Примечания: задание свойству Visible форм Подчиненная1 и Подчиненная2

значения False.

4) «Кнопка28» (Счета).

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

текущей организации. (листинг 3.73).

Примечания: заполнение временной таблицы «ИнфоПоСистемамЗаказчика»,

задание свойству Visible формы Подчиненная1 значения True и Подчиненная2

значения False.

5) «Кнопка27» (Системы).

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

организации. (листинг 3.74).

Примечания: заполнение временной таблицы «ИнфоПоСистемамЗаказчика»,

задание свойству Visible формы Подчиненная1 значения False и Подчиненная2

значения True.

6) «Кнопка25» (Выход).

Назначение: для закрытия текущей формы.

Примечания: реализация с помощью мастера.

Форма «ИнфоПоОрганСистемы» - ленточная форма

а) Поля данной формы являются полями для отображения информации

временной таблицы источника данных формы и имеют источниками данных

соответствующие поля в исходной таблице.

Форма «ИнфоПоОрганSub» - ленточная форма

а) Поля

1) «Поле4»

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

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

Источник записей: =Format([Поле20];"mmmm yyyy").

2) «ДатаПМС»

Назначение: для отображения даты конца сопровождения текущей системы по

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

Источник записей: =Format([Поле2];"mmmm yyyy").

3) Другие поля данной формы являются полями для отображения адресных и

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

соответствующие поля в исходной таблице.

10. Обмен сообщениями между пользователями (в дальнейшем возможно

использование для заказа счетов актов и так далее? ).

Форма «Сообщения»

а) Поля

1) «username» (Кому) - поле со списком

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

отправлено сообщение.

Источник строк: SQL - запрос.

Заполнение: по SQL - запросу.

(SELECT DISTINCTROW [usersTable].[Код], [usersTable].[user] FROM

[usersTable];)

Примечания:

2) «messageText» (Текст сообщения)

Назначение: для ввода текста сообщения.

Заполнение: ввод с клавиатуры.

б) Кнопки

1) «Кнопка8» (Послать сообщение).

Назначение: для отсылки сообщения. Процедура обработки событий (листинг

3.75).

Примечания: заполнение временной таблицы «flagsTable».

2) «Кнопка28» (Выход).

Назначение: для закрытия текущей формы.

Примечания: реализация с помощью мастера.

Форма «HiddenFormForCheck»

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

Visible для данной формы задается значение False.

Комментарии.

Описанная структура имеет следующие особенности работы

1. Для формы HiddenFormForCheck по событию «Таймер» в процедуре

обработки событий происходит проверка содержимого таблицы «flagsTable» на

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

для него.

(листинг 3.76).

11. Инициализация глобальных переменных НдсДляСчета и ВалДляСчета.

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

«Сервис» в «Общей области», и используются при выписке счетов, актов ,

счетов-фактур, накладных.

Форма «ТипСчета» и «ТипСчета1»

а) Группы

1). «Группа0»

Назначение: для задание, по событию «После обновления» в процедуре

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

False в зависимости от положения переключателей. (листинг 3.77).

2). «Группа11»

Назначение: для задание, по событию «После обновления» в процедуре

обработке событий, глобальной переменной ВалДляСчета значения True или

False в зависимости от положения переключателей. (листинг 3.78).

Заключение. Оценка качества программного обеспечения.

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

Когда это направление получит достаточное развитие, то будут разработаны

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

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

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

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

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

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

Боэм, Браун и Лайпоу занимались проблемой вычисления единой

обобщающей меры качества и пришли к выводу, что это невозможно, так как

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

должно принять решение об относительной важности следующих характеристик:

1) своевременное выполнение;

2) эффективность использования таких ресурсов, как:

а) процессоры;

б) память;

в) периферийные устройства;

3) аспекты обслуживания программы, такие как:

а) понимаемость;

б) модифицируемость;

в) удобство переноса с ЭВМ на ЭВМ.

Важность входящих в данный перечень характеристик изменяется в

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

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

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

кадров могут сосредоточить свое внимание на модифицируемости.

Метрики Боэма, Брауна и Лайпоу.

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

характеристики. Боэм, Браун и Лайпоу описали иерархическое дерево

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

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

программа должна быть хорошо тестируемой, понимаемой и модифицируемой.

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

программного обеспечения. Боэм, Браун и Лайпоу подчеркивают достоинства

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

такие вопросы:

1. Как хорошо (просто, надежно, эффективно) могу я использовать

данный пакет в том виде, как он есть?

2. Насколько просто его обслуживать (разобраться в нем,

модифицировать, перепроверить)?

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

(удобство переноса)?

Характеристики самого нижнего уровня представляют собой "примитивы",

комбинации которых образуют характеристики среднего уровня. Эти примитивы

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

характеристик, так и характеристик более высоких уровней.

Боэм, Браун и Лайпоу разработали 51 возможную метрику оценки

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

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

опирающаяся на практический опыт, однако, Боэм, Браун и Лайпоу не

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

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

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

руководство по ее составлению.

Метрики программного обеспечения Джилба.

Джилб приводит не претендующий на полноту набор метрик программного

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

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

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

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

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

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

Прагматической оценкой программной надежности является единица минус

отношение числа логических сбоев к общему числу запусков.

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

Джилбом в качестве меры точности (свободы от ошибок). Так же, как Боэм,

Браун и Лайпоу, Джилб считает, что точность необходима для надежности

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

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

числителе которой стоит число фактических ошибок на входе, а в знаменателе

- общее число наблюденных ошибок, причинами которых явились эти ошибки на

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

периода времени 100 сообщений об ошибках, то прецизионность равна 0.01.

Второй большой категорией, введенной Джилбом, является гибкость, в

которую входят:

1) логическая сложность;

2) внутренняя гибкость;

3) открытость (адаптируемость);

4) толерантность (к изменениям входа системы);

5) универсальность;

6) удобство переноса;

7) совместимость.

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

"двоичных принятий решений". Такая оценка может быть получена вручную или

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

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

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

предсказания стоимости программы.

Кроме этих, Джилб приводит еще большое количество иных метрик, но это

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

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

идей на практике дает обескураживающие результаты. Большинство

характеристик очень трудно получить; сбивает с толку и то, что оценки

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

программы на некоторую группу характеристик.

Оценка сложности Маккейба.

Маккейб описывает оценку сложности с помощью теории графов и

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

сложностью программы. Следует оговорить, что в данном исследовании Маккейб

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

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

выборов решений в программе.

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

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

трудно тестировать или обслуживать.

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

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

числа V(G) для графа с n вершинами, e ребрами и p компонентами связности:

V(G) = e - n + p

Маккейб использует следующую теорему: в сильно связанном графе G

цикломатическое число равно максимальному числу линейно-независимых циклов.

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

граф с одним выходом. Каждой вершине графа соответствует блок кода с

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

программы. Каждой вершины можно достигнуть из входной вершины и из каждой

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

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

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

вычисления числа линейно-независимых путей, цикломатической сложности V(G),

а также управления размером программ с помощью ограничения V(G) и

использования V(G) как основы для методологии тестирования. Маккейб

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

является 10. Если программисты переступают эту границу, им следует или

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

Оценка цикломатической сложности Маккейба полезна при подготовке

тестовых данных и может дать нужную информацию о логической сложности

программы. Однако при такой оценке не принимается во внимание выбор

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

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

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

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

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

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

равняется 6, что не превышает верхнюю границу сложности. Ориентированный

граф модуля представлен на рис.14.1. Это позволяет сделать вывод о

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

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

проекта.

Понимаемость.

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

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

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

Авторы работы "Predicting Software Comprehensibility"

экспериментировали с 36 профессиональными программистами, предложив им по

25 минут изучать 3 программы, а затем восстановить их за 20 минут. Были

использованы 3 класса задач (инженерные, статические и не численные) и 3

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

Было также введено 3 уровня мнемоничности имен переменных.

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

неструктурированные программы, лучше всего - частично структурированные.

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

эксперимента.

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

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

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

структурированности.

Выводы.

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

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

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

надежное обслуживание. В любом из этих случаев не следует забывать о

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

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

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

безболезненную стыковку. К сожалению, приемлемый набор оценок пока еще не

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

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

проверить их пригодность следует экспериментально.

Список литературы к специальной части.

1. Р.Ахаян и др. «Эффективная работа с СУБД», Санкт-Петербург,

«Питер», 1997г.

2. «Проектирование и разработка систем автоматизации предприятий».

3. «Database Unleashed», Indianapolis USA, «SAMS Publishing»,

1996г.

4. Боуман Джудит, Эмерсон Сандра, Дарновски Марси. «Практическое

руководство по SQL. 3-е издание». Пер с англ. – Киев,

Диалектика. 1997.

5. Дейт, К. «Введение в системы баз данных».-М.:Наука, Диалектика.

1980.

6. Мартин, Дж. «Организация баз данных в вычислительных системах».-

М.:Наука, Диалектика. 1980.

7. ANSI SQL Standart. The 1992 ISO-ANSI SQL standart is available

through ANSI as document X3.135-1992 and through ISO as document

ISO/EC 9075:1992.

8. Кодд, Е.Ф. «Реляционная модель данных». Пер с англ. – Киев,

Диалектика. 1996.

9. Ипстейн, Роберт. «Реляционная производительность: Понимание

производительности реляционных баз данных». Пер с англ. – Киев,

Диалектика. 1996.

10. Ross, Ronald G. «Entity Modeling: Techniques and Application».

Boston: Database Research Group, Inc. 1995.

11. Гайн, Крисс. «Введение в SQL» .-М.:Наука, Диалектика. 1980.

12. Праг, Керри Н. и др. «Секреты Access 97» Пер с англ. – Киев,

Диалектика. 1997.

13. Кент, Вилиам. «Введение в пять нормальных форм в теории

реляционных баз данных». Пер с англ. – Киев, Диалектика. 1996.

14. Ларcон, Брюс. «Руководство по экспертным базам данных». Пер с

англ. – Киев, Диалектика. 1996.

15. Date C.J. «An Introduction to Database Systems» Volume 1,

Reading, Mass.: Addison-Wesley Publishing Company, 1989.

16. Date C.J. «An Introduction to Database Systems» Volume 2, 2-th

edition. Reading, Mass.: Addison-Wesley Publishing Company,

1989.

17. Перкинсон, Р.С. «Анализ данных: Ключ к проектированию баз

данных». Пер с англ. – Киев, Диалектика. 1996.

18. Microsoft Corporation. «Описание Transact-SQL» .-М.:Наука,

Диалектика. 1980.

Приложение А

Листинг программ

1) Преобразование числового денежного номера в строчное выражение

Public Function NewNumber(nnn As Double) As String

Dim numb(21) As String

Dim numb1(11) As String

Dim numb2(11) As String

Dim mil, tus, ed As Long

Dim sot, des, ed1 As Integer

Dim strval, strkop As String

Dim kop As Integer

Dim str1, str2 As String

Dim numstr As Integer

If (nnn > 999999999) Then

MsgBox ("Слишком большое число!")

Exit Function

End If

'

nnn = CDbl(Format(nnn, "Currency"))

If GetStrAfterSign(CStr(nnn) & "0") = "" Then

NewNumber = "00 копеек"

Exit Function

End If

kop = CInt(Left(GetStrAfterSign(CStr(nnn) & "0"), 2))

nnn = kop

numb(0) = " один"

numb(1) = " двe"

numb(2) = " три"

numb(3) = " четыре"

numb(4) = " пять"

numb(5) = " шесть"

numb(6) = " семь"

numb(7) = " восемь"

numb(8) = " девять"

numb(9) = " десять"

numb(10) = " одиннадцать"

numb(11) = " двенадцать"

numb(12) = " тринадцать"

numb(13) = " четырнадцать"

numb(14) = " пятнадцать"

numb(15) = " шестнадцать"

numb(16) = " семнадцать"

numb(17) = " восемнадцать"

numb(18) = " девятнадцать"

numb1(0) = " двадцать"

numb1(1) = " тридцать"

numb1(2) = " сорок"

numb1(3) = " пятьдесят"

numb1(4) = " шестьдесят"

numb1(5) = " семьдесят"

numb1(6) = " восемьдесят"

numb1(7) = " девяносто"

numb2(0) = " сто"

numb2(1) = " двести"

numb2(2) = " триста"

numb2(3) = " четыреста"

numb2(4) = " пятьсот"

numb2(5) = " шестьсот"

numb2(6) = " семьсот"

numb2(7) = " восемьсот"

numb2(8) = " девятьсот"

numb(19) = " одна"

numb(20) = " две"

mil = nnn \ 1000000

tus = (nnn - mil * 1000000) \ 1000

ed = nnn - mil * 1000000 - tus * 1000

If (mil <> 0) Then

sot = mil \ 100

des = (mil - sot * 100) \ 10

ed1 = mil - sot * 100 - des * 10

If (sot > 0) Then

strval = strval & numb2(sot - 1)

End If

If (des > 0) Then

If (des = 1) Then

strval = strval & numb(des * 10 + ed1 - 1) & " миллионов"

GoTo nex

Else

strval = strval & numb1(des - 2)

End If

End If

If (ed1 = 0) Then

strval = strval & " миллионов"

ElseIf (ed1 = 1) Then

strval = strval & " один миллион"

ElseIf (ed1 > 1 And ed1 < 5) Then

strval = strval & numb(ed1 - 1) & " миллиона"

Else

strval = strval & numb(ed1 - 1) & " миллионов"

End If

End If

nex:

If (tus <> 0) Then

sot = tus \ 100

des = (tus - sot * 100) \ 10

ed1 = tus - sot * 100 - des * 10

If (sot > 0) Then

strval = strval & numb2(sot - 1)

End If

If (des > 0) Then

If (des = 1) Then

strval = strval & numb(des * 10 + ed1 - 1) & " тысяч"

GoTo nex1

Else

strval = strval & numb1(des - 2)

End If

End If

If (ed1 = 0) Then

strval = strval & " тысяч"

ElseIf (ed1 = 1) Then

strval = strval & " одна тысяча"

ElseIf (ed1 = 2) Then

strval = strval & " две тысячи"

ElseIf (ed1 > 2 And ed1 < 5) Then

strval = strval & numb(ed1 - 1) & " тысячи"

Else

strval = strval & numb(ed1 - 1) & " тысяч"

End If

End If

nex1:

If (ed <> 0) Then

sot = ed \ 100

des = (ed - sot * 100) \ 10

ed1 = ed - sot * 100 - des * 10

If (sot > 0) Then

strval = strval & numb2(sot - 1)

End If

If (des > 0) Then

If (des = 1) Then

strval = strval & numb(des * 10 + ed1 - 1) & " копеек"

GoTo nex2

Else

strval = strval & numb1(des - 2)

End If

End If

If (ed1 = 0) Then

strval = strval & " копеек"

ElseIf (ed1 = 1) Then

strval = strval & " одна копейка"

ElseIf (ed1 > 1 And ed1 < 5) Then

strval = strval & numb(ed1 - 1) & " копейки"

Else

strval = strval & numb(ed1 - 1) & " копеек"

End If

Else

strval = strval & " копеек"

End If

nex2:

strval = LTrim(strval)

NewNumber = strval

End Function

2) Занесение денежных средств по счету на авансовый остаток.

Sub Кнопка347_Click()

On Error GoTo Err_Кнопка347_Click

Dim dbs As Database

Dim rst, rstПоCчету, rstПоАО As Recordset

Dim rstПоДате As Recordset

Dim strSQL As String

Dim i, j As Integer

Dim Цена, ЦенаП, Сопровождение, Сумма As Double

Dim Дата As Date

Dim ДатаTMP As Date

Dim ДатаПМС As Date

Dim ДатаTMP2 As Date

Dim ДАТАПМП As Date

Dim flagДата As Boolean

Dim flagБольше As Boolean

Dim flagГолоеСопр As Boolean

Dim Разница As Currency

Dim sing As String

'Dim ЦенаП_Р, Сумма_Р As Currency

flagБольше = False

Set dbs = CurrentDb

Me.Refresh

sing = Chr(34)

Set dbs = CurrentDb

strSQL = "SELECT DISTINCTROW ОсновныеСчета.НомерСчета, Дистрибутивы.Цена AS

Страницы: 1, 2, 3, 4, 5, 6


© 2010 БИБЛИОТЕКА РЕФЕРАТЫ