воскресенье, 15 августа 2010 г.

Пишем простую бухгалтерскую программу

Часть 1

В этом цикле статей мы поговорим о том, как можно реализовать простую бухгалтерскую программу. И так, функционал:
  1. Нам нужно указывать поступление и снятие денег со счета;
  2. Желательно видеть статистику прихода, расхода средств.
Для реализации этого функционала, предлагаю использовать GUI, поскольку это более традиционное решение. Разработку приложения будем вести используя библиотеки Qt. Приложение должно хранить данные о поступлении и списании средств, для этого нам понадобится база данных, с такой задачей легко справится SQLite. В качестве средст разработки, предлагаю использовать Qt Creator — для разработки приложения, и sqlitebrowser для проектирования базы данных.

А начнем мы именно с базы данных.
Нам понадобится две таблицы:
  1. Счет;
  2. Операции над счетом.
Таблица «Счет» будет хранить текущее состояние счета и имеет вид:

Рисунок 1. Таблица "Счет"
AccountID — это идентификатор счета (в будущем можно будет сделать несколько счетов)
Balance — это баланс счета (по умолчанию ноль)

Таблица «Операции над счетом» будет хранить операции проводимые над счетами и имеет вид:

Рисунок 2. Таблица "Операции над счетом"
OperationID — это идентификатор операции;
AccountID — идентификатор счета, над которым проводится операция;
Amount — сумма прибавляемая к счету (если снимаем деньги, то она отрицательная);
OperationDateTime — дата и время проведения операции.

Теперь, когда мы определились с таблицами, переходим к их разработке. Для этого запустим SQLite Database Browser и создадим в нем таблицы.

Рисунок 3. Проектирование базы

Файл с базой данных, я назвал Base.db и сохранил его в папку с проектом. При создании полей таблиц, следует указывать тип поля, но в редакторе есть не все типы. Поэтому мы указываем недостающие типы самостоятельно.

В следующей части, мы приступим к проектированию пользовательского интерфейса.

среда, 17 февраля 2010 г.

Опыт работы с линукс

Летом 2009 года я решил попробовать выполнять свои повседневные задачи используя линукс. Выбор пал на Ubuntu 8.10, которая у меня была в наличии. Я установил ее на флэшку и при загрузке ноутбука просто выбирал загрузку с USB HDD. Ось спокойно стартовала, никаких проблем с драйверами не возникло, кроме одного нюанса - не работал WiFi. Выяснять причины я не стал, просто использовал кабель для выхода в интернет. При использовании ось, никаких неудобств не возникло, Gnome был интуитивно понятен, для выполнения всех моих потребностей базового набора приложений было вполне достаточно. Немного освоившись я обновил дистрибутив до 9.04, но опыт не удался. Пришлось его скачивать и устанавливать с диска, но плюсом было то, что заработал WiFi.
Со временем я установил Wine, NetBeans, QDevelop - в общем начал усиленно осваивать ось уже не как для домашнего использования, а как рабочий иструмент. KDevelop мне не понравился громоздкостью проектов, QDevelop в этом плане гораздо лучше, но вот NetBeans по возможностям был лучшим на мой взгляд, но я не знал как в нем разрабатывать QT приложения. Под Wine я установил Steam HL2 (лицензионный) и обнаружилось что он хоть и идет без тормозов, но стыки между полигонами почему-то просвечивают. В сентябре я поставил 64-битную сборку 9.04 и стыки в полигонах пропали, что показалось мне странным.
И вот в ноябре я обновил систему до 9.10. Хоть система и обновилась по сети, мне показалось что обновление прошло криво, ось, как-будто потеряла стабильность, пришлось повторить опыт с 9.04. Но и после переустановки мне казалось что с системой что-то не так и тогда я установил 32-битную версию. Стабильность сразу вернулась, к тому времени я уже знал о существовании QTCreator, который мне нравился гораздо больше чем NetBeans (благодаря высокой скорости работы).
Сейчас Ubuntu 9.10 является основной системой на моем ноутбуке и на компьютере жены. У тещи Windows XP и хоть он лицензионный, но проблем с ним хватает. Тема на моей Ubuntu - Win2k-7, выбором очень доволен т.к. не испытываю при работе каких-либо проблем.