Рефераты. Разработка системы автоматизации для малого коммерческого предприятия работающего в сфере информационных услуг p> Общий подход состоит в оценке сложности программы с помощью вычисления числа линейно-независимых путей, цикломатической сложности 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
Цена, Дистрибутивы.Сопровождение AS Сопровождение FROM [ОсновныеСчета]
INNER JOIN Дистрибутивы ON ОсновныеСчета.КодСчета = Дистрибутивы.КодСчета
WHERE (((ОсновныеСчета.НомерСчета)=" & sing &
Forms![Просмотр]![ОсновныеСчета].Form![НомерСчета] & sing & "));"

Set rst = dbs.OpenRecordset(strSQL)

If Forms![Просмотр]![ОсновныеСчета].Form![ВнесениеВАО] = True And Разница =
0 Then

Msg = "Суммы по счету уже внесены в авансовый отчет." ' Сообщение.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.