
- •Аннотация
- •Содержание
- •Введение
- •Анализ поставленной задачи
- •Изучение предметной области
- •Обзор и сравнение аналогичных решений
- •Формулировка функциональных требований к разработке
- •Проектирование разработки
- •Описание входных и выходных данных
- •Обоснование выбора средств разработки
- •Экономическая оценка разработки пп
- •Назначение разработки
- •Лицензирование и сертификация
- •Swot-анализ
- •Организационные и правовые вопросы
- •Планирование
- •Список использованных источников
- •Приложение 1 техническое задание
- •1. Назначение разработки
- •2. Цель и задачи
- •3. Требования к разработке
- •4.Методы тестирования соответствия разработки предъявленным требованиям
- •Приложение 2 техническое описание
- •1. Общие сведения о разработке
- •2. Сведения о входных и выходных данных
- •3 Описание логической структуры
- •4. Описание выполнения программы
2. Сведения о входных и выходных данных
2.1 Структура входных данных
Входными данными являются:
о клиентах - (номер клиента, ФИО, электронная почта, телефон);
о картах - (номер карты, номер типа, дата активации, переиздана или нет);
о доставке - (номер доставки, номер покупки, место, время, дата);
об электронных транспортных кошельках – (номер доплаты, номер карты, дата заявки, сумма).
2.2 Структура выходных данных
Выходными данными являются отчеты:
Выполнение отчетов:
информация о сроках активации/деактивации карт;
информация о сумме денежных средств закрепляемой за текущей картой:
количество карт разного типа на разное количество дней;
общая сумма заказов за <указанный период>/ сумма заказов за 3 месяца с распределением по месяцам/ сумма заказов за полгода с распределением по месяцам;
информация о доставках карт клиентам.
Выполнение запросов:
список клиентов, купивших <более чем указанное количество карт>;
количество приобретенных карт каждого типа за <указанный период>;
общее количество карт, заказанных за <указанный период>;
список клиентов, купивших карты на сумму <больше чем>.
3 Описание логической структуры
3.1 Алгоритм программы
Общий алгоритм работы программы представлен на рисунках 1-4.
3.2 Структура программы. Сведения о составных частях программы. Сведения о связях между составными частями программы.
Общий вид структуры базы данных представлен на рисунке П5.5.
3.3 Описание выполняемых функций
Ведение базы данных клиентов, в соответствии с информацией из заявки, поступившей от клиента.
Ведение базы данных, включает в себя добавление записей о клиентах, картах, доставке и редактирование записей в случае, если какие-либо данные изменились или дополнились.
Осуществление поиска необходимой информации из базы данных.
Осуществляется поиск искомых данных, а именно: клиент, карта, доставка.
Формирование отчётов:
информация о сроках активации/деактивации карт (полный список карт которые нужно активировать/деактивировать в текущий день);
информация о сумме денежных средств закрепляемой за текущей картой;
количество карт разного типа на разное количество дней;
общая сумма заказов за <указанный период>/ за 3 месяца (выводится в виде графика количество заказов за предыдущие 3 календарных месяца)/ за полгода (выводится в виде графика количество заказов за предыдущие 6 календарных месяца);
информация о доставках карт клиентам (в случае если заказана доставка).
4. Описание выполнения программы
4.1 Загрузка программы
Установка программного продукта не требуется.
4.2 Способ вызова программы
Программный продукт запускается через файл <karta_gostya.mdb >.
4.3 Режим работы программы
Пользователь работает с программой в диалоговом режиме.
4.4 Завершение выполнения программы
Завершение работы производится закрытием программы MicrosoftAccess, в котором выполняется работа программного продукта.
ПРИЛОЖЕНИЕ
3
ПРОГРАММНЫЙ
КОД
Ниже приведен программный код запуска запросов и графиков, выполнение отчетов, создание форм, создание кнопок поиска и удаления, резервного копирования.
Option Compare Database
Function open_zpr1()
On Error Resume Next
DoCmd.OpenQuery "kupivshie bolee chem ukazano"
End Function
Function BackUp(Tbl As String)
DoCmd.TransferDatabase acExport, "dBase IV", "c:\BackUp", acTable, Tbl, Tbl
End Function
Private Sub Form_Close()
BackUp "Клиент"
End Sub
Function ACTV()
Dim rs As Object
Dim stSql As String
Dim txt As String
Set con = Application.CurrentProject.Connection
stSql = "SELECT Карта.[Дата активации], Карта.ID_карты FROM [Тип карты] INNER JOIN (Карта INNER JOIN Приобретение ON Карта.ID_карты = Приобретение.ID_карты) ON [Тип карты].ID_типа = Карта.ID_типа WHERE (((карта.[Дата активации])=Date()));"
Set rs = CreateObject("ADODB.Recordset")
rs.Open stSql, con, 1 ' 1 = adOpenKeyset
If (rs.EOF) Then
MsgBox "Сегодня нет карт, требующих активации"
GoTo ext:
Else
While (Not (rs.EOF))
txt = txt & " " & rs![ID_карты]
rs.MoveNext
Wend
End If
MsgBox "Следующие коды карт сегодня требуют активации: " & txt
ext:
' Close the recordset and the database.
rs.Close
Set rs = Nothing
Set con = Nothing
txt = ""
Set con = Application.CurrentProject.Connection
stSql = "SELECT Карта.ID_карты FROM [Тип карты] INNER JOIN Карта ON [Тип карты].ID_типа = Карта.ID_типа WHERE (((DateAdd('d',[Тип карты]![срок действия (дни)],[Карта]![Дата активации]))=Date()));"
Set rs = CreateObject("ADODB.Recordset")
rs.Open stSql, con, 1 ' 1 = adOpenKeyset
If (rs.EOF) Then
MsgBox "Сегодня нет карт, требующих активации"
GoTo ext1:
Else
While (Not (rs.EOF))
txt = txt & " " & rs![ID_карты]
rs.MoveNext
Wend
End If
MsgBox "Следующие коды карт сегодня требуют деактивации: " & txt
ext1:
' Close the recordset and the database.
rs.Close
Set rs = Nothing
Set con = Nothing
End Function
Function open_gr1()
On Error Resume Next
DoCmd.OpenForm "3 mesyaca"
End Function
Private Sub Кнопка8_Click()
Dim a As Integer
a = InputBox("Введите ID Клиента")
DoCmd.GoToRecord , , acFirst
While ID_клиента <> 0
If ID_клиента = a Then
Exit Sub
End If
DoCmd.GoToRecord , , acNext
Wend
MsgBox "Нет такого ID"
DoCmd.GoToRecord , , acFirst
End Sub
Private Sub Кнопка2_Click()
Dim inp As Double
inp = Поле0
DoCmd.OpenForm "Клиент1"
While Form_Клиент1.ID_Клиента <> inp
DoCmd.GoToRecord , , acNext
Wend
End Sub
Private Sub Кнопка3_Click()
Dim inp As Double
inp = Поле0
DoCmd.OpenForm "Клиент1"
While Form_Клиент1.ID_клиента <> inp
DoCmd.GoToRecord , , acNext
Wend
Dim strMessage As String
Dim intOptions As Integer
Dim bytChoice As Byte
strMessage = "Вы действительно хотите удалить данную запись?"
intOptions = vbQuestion + vbOKCancel
bytChoice = MsgBox(strMessage, intOptions)
If bytChoice = vbOK Then
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
End If
DoCmd.Close
End Sub
Private Sub Form_Load()
Dim ValSt1 As Integer
Dim ValSt2 As Integer
Dim ValSt3, Max As Integer
Dim ValSt1Per As Integer
Dim ValSt2Per As Integer
Dim ValSt3Per As Integer
Dim OnePer As Integer
On Error Resume Next
Dim con As Object
Dim rs As Object
Dim stSql As String
Set con = Application.CurrentProject.Connection
stSql = "SELECT Sum([Тип карты].стоимость) AS [Общая сумма] FROM [Тип карты] INNER JOIN (Карта INNER JOIN Приобретение ON Карта.ID_карты = Приобретение.ID_карты) ON [Тип карты].ID_типа = Карта.ID_типа HAVING (((Приобретение.[Дата заказа])>DateAdd('m',-1,Date()))) AND (((Приобретение.[Дата заказа]<DateAdd('m',0,Date())));"
Set rs = CreateObject("ADODB.Recordset")
rs.Open stSql, con, 1
If (rs.EOF) Then
MsgBox ""
Else
If IsNull(rs![Общая сумма]) Then
ValSt1 = 0
Else
ValSt1 = rs![Общая сумма]
End If
End If
rs.Close
Set rs = Nothing
Set con = Nothing
Set con = Application.CurrentProject.Connection
stSql = "SELECT Sum([Тип карты].стоимость) AS [Общая сумма] FROM [Тип карты] INNER JOIN (Карта INNER JOIN Приобретение ON Карта.ID_карты = Приобретение.ID_карты) ON [Тип карты].ID_типа = Карта.ID_типа HAVING (((Приобретение.[Дата заказа])>DateAdd('m',-2,Date()))) AND (((Приобретение.[Дата заказа])<DateAdd('m',-1,Date())));"
Set rs = CreateObject("ADODB.Recordset")
rs.Open stSql, con, 1
If (rs.EOF) Then
MsgBox ""
Else
If IsNull(rs![Общая сумма]) Then
ValSt2 = 0
Else
ValSt2 = rs![Общая сумма]
End If
End If
rs.Close
Set rs = Nothing
Set con = Nothing
Set con = Application.CurrentProject.Connection
stSql = "SELECT Sum([Тип карты].стоимость) AS [Общая сумма] FROM [Тип карты] INNER JOIN (Карта INNER JOIN Приобретение ON Карта.ID_карты = Приобретение.ID_карты) ON [Тип карты].ID_типа = Карта.ID_типа HAVING (((Приобретение.[Дата заказа])>DateAdd('m',-3,Date()))) AND (((Приобретение.[Дата заказа])<DateAdd('m',-2,Date())));"
Set rs = CreateObject("ADODB.Recordset")
rs.Open stSql, con, 1
If (rs.EOF) Then
MsgBox ""
Else
If IsNull(rs![Общая сумма]) Then
ValSt3 = 0
Else
ValSt3 = Val(rs![Общая сумма])
End If
End If
rs.Close
Set rs = Nothing
Set con = Nothing
M1.Caption = MName(Month(Date))
M2.Caption = MName(Month(DateAdd("m", -1, Date)))
M3.Caption = MName(Month(DateAdd("m", -2, Date)))
Max = ValSt1
If ValSt2 > Max Then Max = ValSt2
If ValSt3 > Max Then Max = ValSt3
MaxSum.Caption = Max
ValSt1Per = ValSt1 / (Max / 99)
ValSt2Per = ValSt2 / (Max / 99)
ValSt3Per = ValSt3 / (Max / 99)
OnePer = Base.Height / 100
St1.Height = OnePer * ValSt1Per
St2.Height = OnePer * ValSt2Per
St3.Height = OnePer * ValSt3Per
St1.Top = Base.Top + Base.Height - St1.Height
St2.Top = Base.Top + Base.Height - St2.Height
St3.Top = Base.Top + Base.Height - St3.Height
Sum1.Top = St1.Top
Sum1.Caption = ValSt1
Sum2.Top = St2.Top
Sum2.Caption = ValSt2
Sum3.Top = St3.Top
Sum3.Caption = ValSt3
End Sub
Function MName(No As Integer)
Select Case No
Case Is = 1
MName = "Январь"
Case Is = 2
MName = "Февраль"
Case Is = 3
MName = "Март"
Case Is = 4
MName = "Апрель"
Case Is = 5
MName = "Май"
Case Is = 6
MName = "Июнь"
Case Is = 7
MName = "Июль"
Case Is = 8
MName = "Август"
Case Is = 9
MName = "Сентябрь"
Case Is = 10
MName = "Октябрь"
Case Is = 11
MName = "Ноябрь"
Case Is = 12
MName = "Декабрь"
End Select
End Function
ПРИЛОЖЕНИЕ
4
РЕЗУЛЬТАТЫ
РАБОТЫ ПРОГРАММЫ
Ниже приведены скриншоты программного продукта при работе с различными функциями.
Рисунок П4.1 Структура базы данных
Рисунок П4.2 Пункт меню «Ведение базы данных»
Рисунок П4.3 Пункт меню «Клиенты»
Рисунок П4.4 Пункт меню «Клиенты. Добавить клиента»
Рисунок П4.5 Пункт меню «Клиенты. Просмотр клиентов»
Рисунок П4.6 Пункт меню «Клиенты. Изменение клиента»
Пункты меню карта и доставка аналогичны.
Рисунок П4.7 Пункт меню «Работа с запросами»
Рисунок П4.8 Пункт меню «Работа с запросами. Список клиентов, купивших <более чем указанное количество карт>»
Рисунок П4.9 Пункт меню «Работа с запросами. Список клиентов, купивших <более чем указанное количество карт>»
Запросы в пункте меню: “Работа над запросами” аналогичны.
Рисунок П4.10 Пункт меню «Работа с отчетами»
Рисунок П4.11 Пункт меню «Работа с отчетами. Информация о сроках активации/деактивации карт»
Рисунок П4.12 Пункт меню «Работа с отчетами. Информация о сроках активации/деактивации карт»
Рисунок П4.13 Пункт меню «Работа с отчетами. Информация о доставках карт клиентам»
Рисунок П4.14 Пункт меню «Работа с отчетами. Общая сумма заказов за <указанный период>/ Сумма заказов за 3 месяца с распределением по месяцам/ Сумма заказов за полгода с распределением по месяцам»
Рисунок П4.15 Пункт меню «Работа с отчетами. Общая сумма заказов за <указанный период>/ Сумма заказов за 3 месяца с распределением по месяцам/ Сумма заказов за полгода с распределением по месяцам. Сумма заказов за полгода с распределением по месяцам»
ПРИЛОЖЕНИЕ
5
МОДЕЛЬ
РАБОТЫ ПРОДУКТА РАЗРАБОТКИ
Модель работы продукта разработки представлена на рисунках П5.1-П5.4 в виде диаграммы IDEF0, которая позволяет показать не только этапы, по которым ведется работа с системой, но и кто работает с системой и какие ограничения на них накладываются.
Рисунок П5.1 Общий вид системы
Рисунок П5.2 Работа c системой
Рисунок П5.3 Ввод данных
Рисунок П5.4 Формирование документов и отчетов
Структура базы данных приведена на рисунке П5.5.
Рисунок П5.5 Структура базы данных
На данной структуре отображено семь классов базы данных системы, хранящие в себе информацию:
«Клиент» – (номер клиента, ФИО, телефон, электронная почта);
«Карта» – (номер карты, номер типа, дата активации, переиздана или нет);
«Тип карты» – (номер типа, тип (взрослый/детский), срок действия (дни), стоимость);
«Приобретение» – (номер покупки, номер карты, номер клиента, дата заказа, самовывоз или нет);
«Электронный транспортный кошелек» – (номер доплаты, номер карты, дата заявки, сумма);
«Реактивация» – (номер карты, номер клиента, дата переиздания);
«Доставка» – (номер доставки, номер покупки, место, время, дата).