19577

Информационные системы. Домашняя бухгалтерия

Курсовая

Информатика, кибернетика и программирование

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

Русский

2014-06-10

1.58 MB

57 чел.

PAGE  2

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Курсовая работа

Информационные системы. Домашняя бухгалтерия.


ОГЛАВЛЕНИЕ
 

[1] Курсовая работа

[1.0.1] Информационные системы. Домашняя бухгалтерия.


Описание предметной области. Постановка задачи.

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

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

Таким образом, форма должна иметь вид:

Чтобы в ней можно было:

  •  Ввести информацию о поступлениях/расходах (кто, когда, откуда/куда,  сколько, примечание, если  необходимо)
  •  Счет и категорию выбрать из имеющегося списка.
  •  Во всех полях, кроме примечания, информация обязательно должна быть.
  •  Добавить новый счет и категорию.
  •  Всегда видеть приобретенную/потраченную со всех счетов сумму за день, неделю, месяц, год.
  •  Просмотреть интересующую информацию по заданным параметрам.
  •  Выводить отчеты об остатках на счетах и доходах/расходах по категориям.
  •  В отчетах видеть сумму за каждый месяц и год.


Информационная модель

 

                 Счета Категории

                                Доходы/расходы

                                    Вывод отчетов

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

Главная задача СУБД – учет доходов и расходов, где фиксируются:

  •  Счет
  •  Дата денежной операции
  •  Категория
  •  Примечание.

Кроме того, нужно хранить информацию о счетах:

  •  Название счета.

А также информацию о категориях:

  •  Название категории

Таким образом, получились 3 таблицы: Счета, Категории, Учет.


Программная схема решения

Таблицы:

№1 “Scheta

Эта таблица предназначена для хранения списка счетов.

Имя поля

Тип данных

Размер поля

Подпись

Ключевое/обязательное поле

KodScheta

Счетчик

Длинное целое

да/нет

Schet

Текстовый

50

Счет

нет/да

2Kategoriya”

Эта таблица предназначена для хранения списка категорий.

Имя поля

Тип данных

Размер поля

Подпись

Ключевое/обязательное поле

Kod

Счетчик

Длинное целое

да/нет

Kategoriya

Текстовый

50

Категория

нет/да

нVid

Числовой

Целое

нет/да

Ддя поля “Vid”:

  •  условие на значение – 1 or -1.

№3 Uchet

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

Имя поля

Тип данных

Размер поля

Подпись

Ключевое/обязательное поле

Schet

Числовой

Длинное целое

Счет

нет/нет

Data

Дата/время

Дата

нет/да

Kategoriya

Числовой

Длинное целое

Категория

нет/да

Summa

Денежный

Сумма

нет/да

Primechanie

Текстовый

50

Примечание

нет/нет

Для поля 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” преобразовать в поле со списком:

  1.  число столбцов – 2;
  2.  ширина столбцов –  0см;3см;
  3.  источник строк – Scheta 
  4.  присоединенный столбец – 1;

Поле “Kategoriya” преобразовать в поле со списком:

  1.  число столбцов – 3;
  2.  ширина столбцов –  0см;3см;0см;
  3.  источник строкSELECT Kategoriya.* FROM Kategoriya WHERE (((Kategoriya.Vid)=Forms!Uchet!Vid1)) ORDER BY Kategoriya.Kategoriya; (аналогично форме “Kategoriya”, + поле Kategoriya, где сортировка по возрастнию)
  4.  присоединенный столбец – 1;

Создать поле со списком “Vid1” (в заголовке формы):

  •  фиксированный набор значений;
  •  число столбцов – 2;
  •  ширина столбцов –  2,542см;0см;
  •  источник строк –  "Доход";1;"Расход";-1 ;
  •  присоединенный столбец – 2;
  •  ограничиться списком – да;
  •  автоподстановка –да;
  •  значение по умолчанию – -1
  •  после обновления – процедура обработки событий:

Me.Requery

Me.Kategoriya.Requery

Поле “Kategoriya” преобразовать в поле со списком:

  1.  число столбцов – 3;
  2.  ширина столбцов –  0см;3см;0см;
  3.  источник строк – SELECT Kategoriya.* FROM Kategoriya WHERE (((Kategoriya.Vid)=Forms!Uchet!Vid1)) ORDER BY Kategoriya.Kategoriya; (аналогично форме “Kategoriya”, + поле Kategoriya, где сортировка по возрастнию, вывод на экран – нет)
  4.  присоединенный столбец – 1;

Для вывода суммы дохода/расхода за день, неделю, месяц, год создать поля соответственно “sum_today”, “sum_week”, “sum_month”, “sum_year” + запросы:

  1.  today”:

таблицы: “Kategoriya”, Uchet”

поле Sum1: Summa из табл. “Uchet”, групповая операция – Sum;

поле Data из табл. “Uchet”, групповая операция – Условие, условие отбора – Date(), вывод на экран – нет;

поле Vid из табл. “Kategoriya”, групповая операция – Условие, условие отбора – [Forms]![Uchet]![Vid1], вывод на экран – нет.

  1.  Week”:

таблицы: “Kategoriya”, Uchet”

поле Sum1: Summa из табл. “Uchet”, групповая операция – Sum;

поле Data из табл. “Uchet”, групповая операция – Условие, условие отбора – Between (Date()-Weekday(Date())+2) And (Date()-Weekday(Date())+8) вывод на экран – нет;

поле Vid из табл. “Kategoriya”, групповая операция – Условие, условие отбора – [Forms]![Uchet]![Vid1], вывод на экран – нет.

  1.  “mesyac”:

таблицы: “Kategoriya”, “Uchet”

поле Sum1: Summa из табл. “Uchet”, групповая операция – Sum;

поле Month([Data]) из табл. “Uchet”, групповая операция – Условие, условие отбора – Month(Date()) вывод на экран – нет;

поле Vid из табл. “Kategoriya”, групповая операция – Условие, условие отбора – [Forms]![Uchet]![Vid1], вывод на экран – нет.

поле Year([Data]) групповая операция – Условие, условие отбора – Year(Date()), вывод на экран – нет.

  1.  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")

Фильтр

Для фильтрации данных по дате, счету, категории, примечанию создать:

  1.  Поля:

Dat1:

  •  формат поля – краткий формат даты;
  •  значение по умолчанию Date()-7;
  •  после обновления – процедура обработки событий:

Me.Requery

dat2”:

  •  формат поля – краткий формат даты;
  •  значение по умолчанию Date();
  •  после обновления – процедура обработки событий:

Me.Requery

  1.  Поля со списком:

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

  1.  Флажки:

“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

  1.  Запрос: “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

Просмотр отчетов:

Создать кнопки:

  1.  “PoKategorii”: категории – работа с отчетом; действия – просмотр отчета СуммаПоКатегории; всплывающая подсказка – Просмотр отчета по категориям
  2.  “PoSchetu”: категории – работа с отчетом; действия – просмотр отчета СуммаПоСчету; всплывающая подсказка – Просмотр отчета по счетам.

Отчеты

СуммаПоКатегории

Создать простой запрос СуммаПоКатегории из таблиц “Kategoriya”, “Uchet”.

Поле:

Vid

Kategoriya          

Data

Сумма: ([Summa])

Year([data])

Имя таблицы:

Kategoriya

Kategoriya

Uchet

Групповая операция:

Группировка

Группировка

Группировка

Группировка

Условие

Создать перекрестный запрос “СуммаПоКатегории_перекрестный”. В запросе вывести запрос СуммаПоКатегории; в качестве заголовков строк – Kategoriya, Vid ; в качестве заголовков столбцов – Data; интервал – месяц; провести вычисления Сумма(Сумма); вычислить итоговое значение – да. Поле Kategoriya сортировка по возрастанию; поле Итоговое значение “Сумма переименовать” в “Всего за год”.

Создать автоотчет ленточный, источник записей – запрос “СуммаПоКатегории_перекрестный”, сохранить как “СуммаПоКатегории”.

Поле Vid преобразовать в поле со списком, тип источника строк – список значений; источник строк – -1;"РАСХОД: всего за  месяц";1;" ДОХОД: всего за  месяц"; число столбцов – 2; ширна – 0см;2,501см.

СуммаПоСчету

Создать простой запрос СуммаПоСчету из таблиц “Scheta”, “Kategoriya”, “Uchet”.

Поле:

Schet

Data

Сумма: ([Summa]*[vid])

Year([data])

Имя поля:

Scheta

Uchet

Сортировка

по убыванию

Создать перекрестный запрос “СуммаПоСчету_перекрестный”. В запросе вывести запрос СуммаПоСчету; в качестве заголовков строк – Schet; в качестве заголовков столбцов – Data; интервал – месяц; провести вычисления Сумма(Сумма); вычислить итоговое значение – нет.

Создать автоотчет ленточный, источник записей запрос “СуммаПоСчету_перекрестный”; сохранить как “СуммаПоСчету”.

Меню

Структура меню

Таблицы

Отчеты

Закрыть

Главная

Всего на счете

Счета

Доход/расход по категориям

Категории

Новые меню: 

Таблицы, команды – добавить все таблицы;

Отчеты, команды – добавить все отчеты;

Закрыть, команды – выход.

 


Тестирование

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

В данной базе предусмотрено следующее:

  •  Тип категории выбирается из списка:
  •  Аналогично счет и категория при вводе новой записи, а так же счет, категория и примечание в фильтре выбираются из списка (примечание по частичному совпадению).
  •  При неправильном вводе даты об ошибке сообщается:

  •  Не может быть введена сумма меньше нуля:

  •  Ввести что-либо в поля группы “Сумма за” нельзя. 

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


Руководство пользователя

Откройте файл  “Домашняя бухгалтерия.rar” – “бухгалтерия.mdb”.

Перед Вами откроется главная форма.

В “Домашней бухгалтерии” каждую операцию доходов и расходов можно относить к конкретному счету. Счетами могут быть счет в банке, кредитная карточка, кошелек, электронные деньги и т.д. Система счетов необходима для того, чтобы  можно было отслеживать, где и сколько у Вас осталось денег. Вы можете использовать неограниченное количество счетов.

  1.  Для того, чтобы добавить новый счет, нажмите возле поля Счет. Появится форма, куда можно ввести данные. Либо в меню Таблицы – Счета.

Для того, чтобы удалить счет, в таблице нажмите .

Для того, чтобы посмотреть остатки на счетах, нажмите , либо в меню Отчеты – Всего на счете.

Для облегчения ввода расходов и доходов, в “Домашней бухгалтерии” есть списки категорий.

  1.  Для того, чтобы добавить новый счет, нажмите возле поля Категория. Появится форма, куда можно ввести данные. Либо в меню Таблицы – Категории.

Для того, чтобы удалить счет, в таблице нажмите

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

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

  1.  Все операции по доходам/расходам совершаются в главной таблице (меню Таблицы – Главная).

В таблице есть поля:

  •  Тип категории (выбрать доход или расход);
  •  Счет (с каким счетом совершались операции);
  •  Дата (дата совершения операции);
  •  Категория (выбор категории);
  •  Примечание (при необходимости можно ввести).

  1.  В группе полей “Сумма за” выводится информация о сумме дохода или расхода за период.
  2.  В группе полей “Фильтр по” можно просмотреть все операции, отобранные по необходимым параметрам. Если флажок стоит – фильтр включен, в списке выбрать необходимое, либо ввести (дату).
  3.  Для того чтобы выйти, нажать Закрыть.


Оценка результатов

В данной базе данных есть несколько недочетов, таких как:

  1.  В главной форме добавить новый счет и категорию можно лишь, если новая запись еще не сделана (например, если ввести название счета, то новая категория не сможет быть добавлена и т.п.). Это можно исправить. Как это сделать описано на сайте http://www.accesssoft.ru
  2.  Для ввода даты удобнее использовать календарь, чем вводить вручную. Это можно исправить. Для этого необходим, например, Microsoft Office 2007.

Руководство по установке и требованиям

Данная база данных называется Домашняя бухгалтерия.mdb;

Минимальный размер – 200 Кб;

Минимальные системные требования:

MS Office 2003 и более поздние версии;

MS Windows XP;

CPU Pentium 100 MHz (Intel или AMD).


 

А также другие работы, которые могут Вас заинтересовать

9073. Философия Рене Декарта (смысл и назначение философии, принцип методологического сомнения, сущность дедуктивного метода, учение о врожденных идеях.) 17.96 KB
  Философия Рене Декарта (смысл и назначение философии, принцип методологического сомнения, сущность дедуктивного метода, учение о врожденных идеях.) Рене Декарт (1596- 1650).Его философия- рационалистическая. Декарт- основоположник рационализма. Прот...
9074. Рационализм 17 века: основные идеи и представители 15.67 KB
  Рационализм 17 века: основные идеи и представители Основное положение рационализма: главный источник знания- идеи, т. е .мысли и понятия, изначально присущие человеку или являющиеся его врожденными способностями. Рационалисты: Рене Декарт, Г.В...
9075. Эмпиризм 17 века. Основные идеи и представители 15.87 KB
  Эмпиризм 17 века. Основные идеи и представители. Эмпиризм- направление в философии, сторонники которого считают, что в основе познаний лежит опыт. Английские эмпирики- Ф. Бэкон, Г. Гоббс, Дж. Локк. Бэкон: Рационалисты науки- философы. Муравьи- собир...
9076. Христианский предэкзистенциализм С. Кьеркегора 15.58 KB
  Христианский предэкзистенциализм С. Кьеркегора Экзистенциализм- направление философии, главным предметом изучения которого стал человек, его проблемы, трудности, существование в окружающем мире. Основателем экзистенциализма считается датский ф...
9077. Воля к жизни А. Шопенгауэра, воля к власти Ницше 15.63 KB
  Воля к жизни А. Шопенгауэра, воля к власти Ницше Ницше: Воля к власти - это одна из разновидностей волевых импульсов человеческого поведения. Волю к власти Ницше считал определяющим стимулом деятельности и главной способностью человека. Осново...
9078. Имморализм и теория сверхчеловека в философии Ницше 17.35 KB
  Имморализм и теория сверхчеловека в философии Ницше ИММОРАЛИЗМ (или аморализм), направление в этике, отрицающее мораль и какие бы то ни было нравственные нормы, связывающие волю индивида. В качестве представителей Имморализма в новой философии можно...
9079. Философия истории К. Маркса в сравнении с философией истории Гегеля 13.83 KB
  Философия истории К. Маркса в сравнении с философией истории Гегеля Гегель: История тоже развивается по закону Тезис- антитезис- синтез. История имеет свою цель- свобода, освобождение человечества. По Гегелю свобода есть познанная необходимость. Все...
9080. Философия немецкого экзистенциализма 20 века. (М. Хайдеггер и К. Ясперс) 14.95 KB
  Философия немецкого экзистенциализма 20 века. (М. Хайдеггер и К. Ясперс) Мартин Хайдеггер занимался разработкой самих основ экзистенциалистского понимания предмета и задач философии.Большое влияние на Хайдеггера оказала философия Ницше. Хайдегг...
9081. Философия французского экзистенциализма 20 века (Ж.-П. Сартр, А. Камю) 16.51 KB
  Философия французского экзистенциализма 20 века (Ж.-П. Сартр, А. Камю) Основная проблема экзистенциальной философии Жана- Поля Сартра (1905- 1980) - проблема выбора. Центральным понятием сартровской философии является для себя бытие. Для се...