5fan_ru_Информационные системы. Домашняя бухгалтерия. Руководство по установке и требованиям 17 Описание предметной области. Постановка задачи
Скачать 1.58 Mb.
|
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Курсовая работаИнформационные системы. Домашняя бухгалтерия.ОГЛАВЛЕНИЕ Курсовая работа 1 ОГЛАВЛЕНИЕ 2 Описание предметной области. Постановка задачи. 3 Информационная модель 4 Программная схема решения 5 Таблицы: 5 Схема данных: 5 Формы: 6 Фильтр 8 Добавление нового счета и категории 10 Просмотр отчетов: 11 Отчеты 12 Меню 13 Тестирование 14 Руководство пользователя 16 Оценка результатов 17 Руководство по установке и требованиям 17 Описание предметной области. Постановка задачи. Тема моей курсовой работы – домашняя бухгалтерия. В рамках обычной семьи совершаются различные действия с деньгами, такие как их поступление, хранение и трата. В семье несколько человек, а значит счетов, с которых производятся операции, может быть несколько. Кроме того, средства могут поступать из различных источников и тратиться на различные нужды Необходимо создать базу данных такую, чтобы с ее помощью можно было бы быстро и удобно вводить, хранить и анализировать информацию об этих денежных операциях. Таким образом, форма должна иметь вид: Чтобы в ней можно было: Ввести информацию о поступлениях/расходах (кто, когда, откуда/куда, сколько, примечание, если необходимо) Счет и категорию выбрать из имеющегося списка. Во всех полях, кроме примечания, информация обязательно должна быть. Добавить новый счет и категорию. Всегда видеть приобретенную/потраченную со всех счетов сумму за день, неделю, месяц, год. Просмотреть интересующую информацию по заданным параметрам. Выводить отчеты об остатках на счетах и доходах/расходах по категориям. В отчетах видеть сумму за каждый месяц и год. Информационная модель Счета Категории Доходы/расходы Вывод отчетов Стрелки показывают, что таблицы должны быть связаны между собой. Для вывода отчета необходимо взять информацию из всех таблиц базы данных. Главная задача СУБД – учет доходов и расходов, где фиксируются: Счет Дата денежной операции Категория Примечание. Кроме того, нужно хранить информацию о счетах: Название счета. А также информацию о категориях: Название категории Таким образом, получились 3 таблицы: Счета, Категории, Учет. Программная схема решения Таблицы: №1 “Scheta” Эта таблица предназначена для хранения списка счетов.
№2 “Kategoriya” Эта таблица предназначена для хранения списка категорий.
Ддя поля “Vid”: условие на значение – 1 or -1. №3 “Uchet” В этой таблице хранятся данные об операциях, совершаемых со счетом.
Для поля “Data”: значение по умолчанию – Date(); Поле Schet для связи с таблицей “Scheta”. Поле Kategoriya для связи с таблицей “ Kategoriya ”. Схема данных: Формы: №1 “Scheta” Автоформа: ленточная. Источник записей: таблица “Scheta” Поле “KodScheta”: вывод на экран – нет; Кнопка “Udalit” (с помощью мастера): категория – обработка записей; действие – удалить запись. №2 “Kategoriya” Автоформа: ленточная. Источник записей: таблица “Kategoriya ”. Поля : “Kod”, “Vid” ”: вывод на экран – нет; Создать поле со списком “Vid1” (в заголовке формы): фиксированный набор значений; число столбцов – 2; ширина столбцов – 2,542см;0см; источник строк – "Доход";1;"Расход";-1 ; присоединенный столбец – 2; ограничиться списком – да; автоподстановка –да; значение по умолчанию – -1 после обновления – процедура обработки событий: Me.Requery Me.Vid.DefaultValue = Me.Vid1 Me.Kat1.Requery (после создания поля со списком Kat1) Источник записей формы (с помощью построителя): SELECT Kategoriya.* FROM Kategoriya WHERE (((Kategoriya.Vid)=Forms!Kategoriya!Vid1)); (все поля таблицы категория + поле “Vid”, где в условии отбора - [Forms]![Kategoriya]![Vid1]) Закрытие формы: процедура обработки событий : On Error Resume Next DoCmd.SetWarnings False Form("uchet").Requery DoCmd.SetWarnings True Кнопка “Udalit2” (с помощью мастера): категория – обработка записей; действие – удалить запись. №3 “Uchet” Автоформа: ленточная. Источник записей: таблица “ Uchet ”. Поле “Schet” преобразовать в поле со списком: число столбцов – 2; ширина столбцов – 0см;3см; источник строк – Scheta присоединенный столбец – 1; Поле “Kategoriya” преобразовать в поле со списком: число столбцов – 3; ширина столбцов – 0см;3см;0см; источник строк – SELECT Kategoriya.* FROM Kategoriya WHERE (((Kategoriya.Vid)=Forms!Uchet!Vid1)) ORDER BY Kategoriya.Kategoriya; (аналогично форме “Kategoriya”, + поле Kategoriya, где сортировка по возрастнию) присоединенный столбец – 1; Создать поле со списком “Vid1” (в заголовке формы): фиксированный набор значений; число столбцов – 2; ширина столбцов – 2,542см;0см; источник строк – "Доход";1;"Расход";-1 ; присоединенный столбец – 2; ограничиться списком – да; автоподстановка –да; значение по умолчанию – -1 после обновления – процедура обработки событий: Me.Requery Me.Kategoriya.Requery Поле “Kategoriya” преобразовать в поле со списком: число столбцов – 3; ширина столбцов – 0см;3см;0см; источник строк – SELECTKategoriya.* FROMKategoriyaWHERE (((Kategoriya.Vid)=Forms!Uchet!Vid1)) ORDERBYKategoriya.Kategoriya; (аналогично форме “Kategoriya”, + поле Kategoriya, где сортировка по возрастнию, вывод на экран – нет) присоединенный столбец – 1; Для вывода суммы дохода/расхода за день, неделю, месяц, год создать поля соответственно “sum_today”, “sum_week”, “sum_month”, “sum_year” + запросы: “today”: таблицы: “Kategoriya”, “Uchet” поле Sum1: Summa из табл. “Uchet”, групповая операция – Sum; поле Data из табл. “Uchet”, групповая операция – Условие, условие отбора – Date(), вывод на экран – нет; поле Vid из табл. “Kategoriya”, групповая операция – Условие, условие отбора – [Forms]![Uchet]![Vid1], вывод на экран – нет. “Week”: таблицы: “Kategoriya”, “Uchet” поле Sum1: Summa из табл. “Uchet”, групповая операция – Sum; поле Data из табл. “Uchet”, групповая операция – Условие, условие отбора – Between (Date()-Weekday(Date())+2) And (Date()-Weekday(Date())+8) вывод на экран – нет; поле Vid из табл. “Kategoriya”, групповая операция – Условие, условие отбора – [Forms]![Uchet]![Vid1], вывод на экран – нет. “mesyac”: таблицы: “Kategoriya”, “Uchet” поле Sum1: Summa из табл. “Uchet”, групповая операция – Sum; поле Month([Data]) из табл. “Uchet”, групповая операция – Условие, условие отбора – Month(Date()) вывод на экран – нет; поле Vid из табл. “Kategoriya”, групповая операция – Условие, условие отбора – [Forms]![Uchet]![Vid1], вывод на экран – нет. поле Year([Data]) групповая операция – Условие, условие отбора – Year(Date()), вывод на экран – нет. “God”: таблицы: “Kategoriya”, “Uchet” поле Sum1: Summa из табл. “Uchet”, групповая операция – Sum; поле Vid из табл. “Kategoriya”, групповая операция – Условие, условие отбора – [Forms]![Uchet]![Vid1], вывод на экран – нет. поле Year([Data]) групповая операция – Условие, условие отбора – Year(Date()), вывод на экран – нет. Для полей формы “Uchet” “sum_today” “sum_week” “sum_month” “sum_year” данные =DLookUp("sum1";"today") =DLookUp("sum1";"Week") =DLookUp("sum1";"Mesyac") =DLookUp("sum1";"God") Фильтр Для фильтрации данных по дате, счету, категории, примечанию создать: Поля: “Dat1”: формат поля – краткий формат даты; значение по умолчанию Date()-7; после обновления – процедура обработки событий: Me.Requery “dat2”: формат поля – краткий формат даты; значение по умолчанию Date(); после обновления – процедура обработки событий: Me.Requery Поля со списком: “schet1”: источник строк – SELECT Scheta.Schet FROM Scheta; нажатие кнопки – процедура обработки событий: Me.Requery “Kat1”: источник строк – SELECT Kategoriya.Kategoriya FROM Kategoriya WHERE (((Kategoriya.Vid)=Forms!Uchet!Vid1)) ORDER BY Kategoriya.Kategoriya;; нажатие кнопки – процедура обработки событий: Me.Requery “Prim1”: нсточник строк – SELECT Uchet.Primechanie FROM Uchet GROUP BY Uchet.Primechanie; нажатие кнопки – процедура обработки событий: Me.Requery Флажки: “k1”: значение по умолчанию – истина; нажатие кнопки – процедура обработки событий: Me.Requery “k2”: значение по умолчанию – ложь; после обновления – процедура обработки событий: If k2 = True Then Me.schet1.Requery Else Me.schet1.SetFocus Me.schet1 = "" End If нажатие кнопки – процедура обработки событий: Me.Requery “k3”: значение по умолчанию – ложь; после обновления – процедура обработки событий: If K3 = True Then Me.Kat1.Requery Else Me.Kat1.SetFocus Me.Kat1 = "" End If нажатие кнопки – процедура обработки событий: Me.Requery “k4”: значение по умолчанию – ложь; после обновления – процедура обработки событий: If k4 = True Then Me.Prim1.Requery Else Me.Prim1.SetFocus Me.Prim1 = "" End If нажатие кнопки – процедура обработки событий: Me.Requery Запрос:“Filtr1” В режиме SQL: SELECT Uchet.* FROM Scheta INNER JOIN (Kategoriya INNER JOIN Uchet ON Kategoriya.Kod = Uchet.Kategoriya) ON Scheta.KodScheta = Uchet.Schet WHERE (((Uchet.Data) Between (IIf([Forms]![Uchet]![k1],[Forms]![Uchet]![Dat1],Date()-10000)) And (IIf([Forms]![Uchet]![k1],[Forms]![Uchet]![Dat2],Date()+10000))) AND ((Scheta.Schet) Like IIf([Forms]![Uchet]![k2],[Forms]![Uchet]![schet1],"*")) AND ((Uchet.Primechanie) Like IIf([Forms]![Uchet]![k4],"*" & [Forms]![Uchet]![Prim1] & "*","*")) AND ((Kategoriya.Vid)=[Forms]![Uchet]![Vid1]) AND ((Kategoriya.Kategoriya) Like IIf([Forms]![Uchet]![k3],[Forms]![Uchet]![Kat1],"*"))) OR (((Uchet.Data) Between (IIf([Forms]![Uchet]![k1],[Forms]![Uchet]![Dat1],Date()-10000)) And (IIf([Forms]![Uchet]![k1],[Forms]![Uchet]![Dat2],Date()+10000))) AND ((Scheta.Schet) Like IIf([Forms]![Uchet]![k2],[Forms]![Uchet]![schet1],"*")) AND ((Kategoriya.Vid)=[Forms]![Uchet]![Vid1]) AND ((Kategoriya.Kategoriya) Like IIf([Forms]![Uchet]![k3],[Forms]![Uchet]![Kat1],"*")) AND ((IsNull([Uchet].[Primechanie]))<>False)) ORDER BY Uchet.Data DESC , Scheta.Schet; Добавление нового счета и категории Создать формы “Scheta2”,“Kategoriya2” из форм “Scheta”,“Kategoriya” (сохранить как), перетащить их в примечание формы “Uchet”. “Scheta2”: режим по умолчанию – ленточные формы; после обновления – процедура обработки событий: Me.Parent.Schet.Requery закрытие – процедура обработки событий: On Error Resume Next DoCmd.SetWarnings False Form("uchet").Requery DoCmd.SetWarnings True “Kategoriya2”: режим по умолчанию – ленточные формы; текущая запись – процедура обработки событий: Me.Vid.DefaultValue = Me.Parent.Vid1 после обновления – процедура обработки событий: Me.Parent. Kategoriya.Requery закрытие – процедура обработки событий: On Error Resume Next DoCmd.SetWarnings False Form("uchet").Requery DoCmd.SetWarnings True Создать кнопки: “shet_plus”: нажатие кнопки – процедура обработки событий: On Error GoTo Err_shet_plus_Click Me.Scheta2.Visible = True Me.[Scheta2].Form.AllowEditing = True Exit_shet_plus_Click: Exit Sub Err_shet_plus_Click: MsgBox Err.Description Resume Exit_shet_plus_Click всплывающая подсказка – добавить счет. “kategoriya_plus”: нажатие кнопки – процедура обработки событий: On Error GoTo Err_kategoriya_plus_Click Me. Kategoriya2.Visible = True Me.[Kategoriya2].Form.AllowEditing = True Exit_kategoriya_plus_Click: Exit Sub Err_kategoriya_plus_Click: MsgBox Err.Description Resume Exit_kategoriya_plus_Click всплывающая подсказка – добавить категорию. Форма: текущая запись: Me.sum_today.Requery Me.Sum_Week.Requery Me.Sum_month.Requery Me.sum_year.Requery Me.Kategoriya2.Visible = False Me.Scheta2.Visible = False Просмотр отчетов: Создать кнопки: “PoKategorii”: категории – работа с отчетом; действия – просмотр отчета СуммаПоКатегории; всплывающая подсказка – Просмотр отчета по категориям “PoSchetu”: категории – работа с отчетом; действия – просмотр отчета СуммаПоСчету; всплывающая подсказка – Просмотр отчета по счетам. Отчеты СуммаПоКатегории Создать простой запрос СуммаПоКатегории из таблиц “Kategoriya”, “Uchet”.
Создать перекрестный запрос “СуммаПоКатегории_перекрестный”. В запросе вывести запрос СуммаПоКатегории; в качестве заголовков строк – Kategoriya, Vid ; в качестве заголовков столбцов – Data; интервал – месяц; провести вычисления Сумма(Сумма); вычислить итоговое значение – да. Поле Kategoriya сортировка по возрастанию; поле Итоговое значение “Сумма переименовать” в “Всего за год”. Создать автоотчет ленточный, источник записей – запрос “СуммаПоКатегории_перекрестный”, сохранить как “СуммаПоКатегории”. Поле Vid преобразовать в поле со списком, тип источника строк – список значений; источник строк – -1;"РАСХОД: всего за месяц";1;" ДОХОД: всего за месяц"; число столбцов – 2; ширна – 0см;2,501см. СуммаПоСчету Создать простой запрос СуммаПоСчету из таблиц “Scheta”, “Kategoriya”, “Uchet”.
Создать перекрестный запрос “СуммаПоСчету_перекрестный”. В запросе вывести запросСуммаПоСчету; в качестве заголовков строк – Schet; в качестве заголовков столбцов – Data; интервал – месяц; провести вычисления Сумма(Сумма); вычислить итоговое значение – нет. Создать автоотчет ленточный, источник записей запрос “СуммаПоСчету_перекрестный”; сохранить как “СуммаПоСчету”. Меню Структура меню
Новые меню: Таблицы, команды – добавить все таблицы; Отчеты, команды – добавить все отчеты; Закрыть, команды – выход. Тестирование В любых процессах человеческий фактор играет важнейшую роль. Конечно, полностью защитить базу от неправильного ввода нельзя, но уменьшить число ошибок можно. В данной базе предусмотрено следующее: Тип категории выбирается из списка: Аналогично счет и категория при вводе новой записи, а так же счет, категория и примечание в фильтре выбираются из списка (примечание по частичному совпадению). При неправильном вводе даты об ошибке сообщается: Не может быть введена сумма меньше нуля: Ввести что-либо в поля группы “Сумма за” нельзя. Поскольку примечание, название счета в таблице Счета и категории в таблице Категории может быть любым, ограничения ввести нельзя. Руководство пользователя Откройте файл “Домашняя бухгалтерия.rar” – “бухгалтерия.mdb”. Перед Вами откроется главная форма. В “Домашней бухгалтерии” каждую операцию доходов и расходов можно относить к конкретному счету. Счетами могут быть счет в банке, кредитная карточка, кошелек, электронные деньги и т.д. Система счетов необходима для того, чтобы можно было отслеживать, где и сколько у Вас осталось денег. Вы можете использовать неограниченное количество счетов. Для того, чтобы добавить новый счет, нажмите возле поля Счет. Появится форма, куда можно ввести данные. Либо в меню Таблицы – Счета. Для того, чтобы удалить счет, в таблице нажмите . Для того, чтобы посмотреть остатки на счетах, нажмите , либо в меню Отчеты – Всего на счете. Для облегчения ввода расходов и доходов, в “Домашней бухгалтерии” есть списки категорий. Для того, чтобы добавить новый счет, нажмите возле поля Категория. Появится форма, куда можно ввести данные. Либо в меню Таблицы – Категории. Для того, чтобы удалить счет, в таблице нажмите Для того, чтобы посмотреть доход/расход по категориям, нажмите . либо в меню Отчеты – доход/расход по категориям Все операции по доходам/расходам совершаются в главной таблице (меню Таблицы – Главная). В таблице есть поля: Тип категории (выбрать доход или расход); Счет (с каким счетом совершались операции); Дата (дата совершения операции); Категория (выбор категории); Примечание (при необходимости можно ввести). В группе полей “Сумма за” выводится информация о сумме дохода или расхода за период. В группе полей “Фильтр по” можно просмотреть все операции, отобранные по необходимым параметрам. Если флажок стоит – фильтр включен, в списке выбрать необходимое, либо ввести (дату). Для того чтобы выйти, нажать Закрыть. Оценка результатов В данной базе данных есть несколько недочетов, таких как: В главной форме добавить новый счет и категорию можно лишь, если новая запись еще не сделана (например, если ввести название счета, то новая категория не сможет быть добавлена и т.п.). Это можно исправить. Как это сделать описано на сайте http://www.accesssoft.ru Для ввода даты удобнее использовать календарь, чем вводить вручную. Это можно исправить. Для этого необходим, например, Microsoft Office 2007. Руководство по установке и требованиям Данная база данных называется Домашняя бухгалтерия.mdb; Минимальный размер – 200 Кб; Минимальные системные требования: MS Office 2003 и более поздние версии; MS Windows XP; CPU Pentium 100 MHz (Intel или AMD). |