На протяжении всего периода применения компьютеров и компьютерных систем существует тенденция создания высоконадежных управляющих комплексов, ориентированных на получение и использование информационных ресурсов. Эта тенденция выразилась в процессе создания различных видов систем, как встроенных в уникальные объекты информационно-технологических комплексов. В последнее время информационные технологии стали неотъемлемой частью нашей жизни. Информационные системы, связанные с предоставлением и обработкой информации для всех уровней управления объектами, приобретают особую важность в общественной жизни.
Целью работы является разработка информационной системы торговой организации. Начальным этапом построения проекта является проектирование базы данных на основе свободной системы управления базами данных MYSQL, составление запросов и взаимосвязей между различными таблицами. Для построения клиентского приложения применяется библиотека Qt4 и среда разработки «Qt Creator».
1 Теоретическая основа разработки автоматизированной
информационной системы
1.1 Qt — кросс-платформенный инструментарий разработчика прикладного программного обеспечения
Qt – кросс-платформенный инструментарий разработчика прикладного программного обеспечения, широко используемый для создания графических интерфейсов. Он написан на C++ и предоставляет мощные расширения этого языка. Также доступны интерфейсы для других языков программирования, таких как Python (PyQt), Ruby (Korundum/QtRuby) и Perl (PerlQt).
Отличительная особенность Qt от других библиотек — использование Meta Object Compiler (MOC) — предварительной системы обработки исходного кода. MOC позволяет во много раз увеличить мощь библиотек, вводя такие понятия, как слоты и сигналы. Кроме того, это позволяет сделать код более лаконичным. Утилита MOC ищет в заголовочных файлах на C++ описания классов, содержащие макрос Q_OBJECT, и создаёт дополнительный исходный файл на C++, содержащий метаобъектный код.
Qt позволяет создавать собственные плагины и размещать их непосредственно в панели визуального редактора. Также существует возможность расширения привычной функциональности виджетов, связанной с размещением их на экране, отображением, перерисовкой при изменении размеров окна.
Qt комплектуется визуальной средой разработки графического интерфейса «Qt Designer», позволяющей создавать диалоги и формы в режиме WYSIWYG. В поставке Qt есть «Qt Linguist» — графическая утилита, позволяющая упростить локализацию и перевод программы на многие языки; и «Qt Assistant» — справочная система Qt, упрощающая работу с документацией по библиотеке, а также позволяющая создавать кросс-платформенную справку для разрабатываемого на основе Qt ПО. Начиная с версии 4.5.0 в комплект Qt включена среда разработки «Qt Creator», которая включает в себя редактор кода, справку, графические средства «Qt Designer» и возможность отладки приложений. «Qt Creator» может использовать GCC или Microsoft VC++ в качестве компилятора и GDB в качестве отладчика. Для Windows версий библиотека комплектуется компилятором, заголовочными и объектными файлами MinGW [1].
Системы разработки месторождений
... (топи, болота) и геологические условия определили применение ползучей системы на Самотлорском месторождении. Системы разработки с размещением скважин по равномерной сетке считают целесообразными при ... нефтяной промышленности. Проблема оптимальной плотности сетки скважин, обеспечивающей наиболее эффективную разработку месторождений, была самой острой на всех этапах развития нефтяной промышленности. ...
Библиотека разделена на несколько модулей, для четвёртой версии библиотеки это:
- QtCore — классы ядра библиотеки, используемые другими модулями;
- QtGui — компоненты графического интерфейса;
- QtNetwork — набор классов для сетевого программирования. Поддержка различных высокоуровневых протоколов может меняться от версии к версии. В версии 4.2.x присутствуют классы для работы с протоколами FTP и HTTP. Для работы с протоколами TCP/IP предназначены такие классы, как QTcpServer, QTcpSocket для TCP и QUdpSocket для UDP;
- QtOpenGL — набор классов для работы с OpenGL;
- QtSql — набор классов для работы с базами данных с использованием языка структурированных запросов SQL. Основные классы данного модуля в версии 4.2.х: QSqlDatabase — класс для предоставления соединения с базой, для работы с какой-нибудь конкретной базой данных требует объект, унаследованный от класса QSqlDriver — абстрактного класса, который реализуется для конкретной базы данных и может требовать для компиляции SDK базы данных. Например, для сборки драйвера под базу данных FireBird/InterBase требует .h файлы и библиотеки статической линковки, входящие в комплект поставки данной БД;
- QtScript — классы для работы с Qt Scripts;
- QtSvg — классы для отображения и работы с данными Scalable Vector Graphics (SVG);
- QtXml — модуль для работы с XML, поддерживается SAX и DOM модели работы;
- QtDesigner — классы создания расширений QtDesigner для своих собственных виджетов;
- QtUiTools — классы для обработки в приложении форм Qt Designer;
- QtAssistant — справочная система;
- Qt3Support — модуль с классами, необходимыми для совместимости с библиотекой Qt версии 3.х.х;
- QtTest — модуль для работы с UNIT тестами;
- QtWebKit — модуль WebKit, интегрированный в Qt и доступный через её классы;
- QtXmlPatterns — модуль для поддержки XQuery 1.0 и XPath 2.0;
- Phonon — модуль для поддержки воспроизведения и записи видео и аудио, как локально, так и с устройств и по сети;
- QtCLucene — модуль для поддержки полнотекстового поиска, применяется в новой версии Assistant в Qt 4.4;
- ActiveQt — модуль для работы с ActiveX и COM технологиями для Qt разработчиков под Windows. QtDeclarative — модуль, предоставляющий декларативный фреймворк для создания динамичных, настраиваемых пользовательских интерфейсов.
В Qt используется CamelCasing: имена классов выглядят как MyClassName, а имена методов – как myMethodName. При этом имена всех классов Qt начинаются с Q, например QObject, QList или QFont. Большинству классов соответствуют заголовочные файлы с тем же именем (без расширения .h).
Контрольная работа: Оценка рыночной стоимости объектов недвижимости, ...
... нормативно-правовые акты. В контрольной работе будут рассмотрены два вопроса: первый- дать понятие недвижимости, ее классификация, признаки. Второй вопрос – оценка объектов недвижимости незавершенных строительством. Недвижимое имущество, Оценочная деятельность Под ...
Для эффективной работы с классами на стадии выполнения в Qt используется специальная объектная модель, расширяющая модель C++. В частности, добавляются следующие возможности:
- древовидные иерархии объектов;
- аналог dynamic_cast для библиотеки, не использующий RTTI;
- взаимодействие объектов через сигналы и слоты;
- свойства объектов.
Многие объекты определяются значением сразу нескольких свойств, внутренними состояниями и связями с другими объектами. Они представляют собой индивидуальные сущности, и для них не имеет смысла операция буквального копирования, а также разделение данных в памяти. В Qt эти объекты наследуют свойства QObject [2].
В тех случаях, когда объект требовалось бы рассматривать не как сущность, а как значение (например, при хранении в контейнере) – используются указатели. Иногда указатель на объект, наследуемый от QObject, называют просто объектом.
При создании графических пользовательских интерфейсов взаимодействие объектов часто осуществляется через обратные вызовы, т.е. передачу кода для последующего выполнения (в виде указателей на функции, функторов, и т.д.).
Также популярна концепция событий и обработчиков, в которой обработчик действует как перехватчик события определенного объекта.
В Qt вводится концепция сигналов и слотов.
Сигнал отправляется при вызове соответствующего ему метода. Программисту при этом нужно только указать прототип метода в разделе signals.
Слот является методом, исполняемым при получении сигнала. Слоты могут объявляться в разделе pulic slots, protected slots или private slots. При этом уровень защиты влияет лишь на возможность вызова слотов в качестве обычных методов, но не на возможность подключения сигналов к слотам.
Модель сигналов и слотов отличается от модели событий и обработчиков тем, что слот может подключаться к любому числу сигналов, а сигнал может подключаться к любому числу слотов. При отправке сигнала будут вызваны все подключенные к нему слоты [3].
Таким образом, для эффективной работы с классами на стадии выполнения Qt использует специальную объектную модель, в которой при помощи наследования от QObject и генерирования кода компилятором метаобъектов реализованы:
- иерархии объектов;
- специальный аналог dynamic_cast, не зависящий от RTTI;
- система сигналов и слотов;
- система свойств объектов;
- динамическая работа с классами.
1.2 Система управления базами данных MySQL
Под базами данных (БД) понимаются системы хранения и обработки данных, для доступа к которым используется язык SQL (Structured Query Language).
База данных представляет собой структурированную совокупность данных. Поскольку компьютеры замечательно справляются с обработкой больших объемов данных, управление базами данных играет центральную роль в вычислениях. Реализовано такое управление может быть по-разному — как в виде отдельных утилит, так и в виде кода, входящего в состав других приложений.
MySQL — это система управления реляционными базами данных. В реляционной базе данных данные хранятся в отдельных таблицах, благодаря чему достигается высокая скорость и гибкость работы. Таблицы связываются между собой при помощи отношений, благодаря чему обеспечивается возможность объединять при выполнении запроса данные из нескольких таблиц. SQL как часть системы MySQL можно охарактеризовать как язык структурированных запросов плюс наиболее распространенный стандартный язык, используемый для доступа к базам данных.
Разработка базы данных информационной системы для автоматизации ...
... были выбраны следующие виды расчетов для автоматизации движения денежных средств через кассу: расчетные поручения, расчеты по ... выбрать структуру хранения данных и реализовать систему доступа к ним. 2 Модель СУБД Модель СУБД напрямую транслируется из ... данных составлена логическая модель базы данных представленная на рисунке 1. Рисунок 1 - Логическая модель базы данных В логической модели базы данных ...
СУБД MySQL использует традиционную архитектуру клиент/сервер, поэтому, работая с СУБД MySQL, пользователь реально работает с двумя программами. Программой сервера базы данных, расположенной на компьютере, где
хранится база данных. Она «прослушивает» запросы клиентов, поступающие
по сети, и осуществляет доступ к содержимому базы данных для
предоставления информации, которую запрашивают клиенты. Клиентской программой, которая является программой, осуществляющей
подключение к серверу и передающей запросы на сервер.
Дистрибуция СУБД MySQL включает в себя несколько клиентских программ и сервер. Клиентские программы используются в соответствии с поставленными целями. Одной из наиболее популярных и наиболее привлекательных клиентских программ является mysql. Это интерактивная программа, позволяющая создавать запросы и просматривать полученные результаты. Другими клиентскими программами являются утилита mysqldump и mysqlimport, которые осуществляют дамп базы данных в файл и восстановление его обратно, и утилита mysqladmin, позволяющая производить проверку состояния сервера и осуществлять административные задачи, такие как выключение сервера (shut-down) [4].
По степени их универсальности различаются два вида СУБД — системы общего назначения и специализированные системы. СУБД общего назначения не ориентированны на какую — либо конкретную предметную область или на информационные потребности конкретной группы пользователей. Каждая система такого рода реализуется как программный продукт, способный функционировать на некоторой модели ЭВМ в определенной обстановки, и поставляется многим пользователям как коммерческое изделие. СУБД общего назначения обладают средствами настройки на работу с конкретной БД в условиях конкретного применения.
Использование СУБД общего назначения в качестве инструментального средства для создания автоматизированных информационных систем, основанных на технологии БД, позволяет существенно сокращать сроки разработки, экономить трудовые ресурсы. Развитые функциональные возможности таких СУБД, присущая им, как правило, функциональная избыточность позволяют иметь значительный «запас мощности», необходимый для безболезненного эволюционного развития построенных на их основе информационных систем в рамках их жизненного цикла. Вместе с тем средства настройки дают возможность достигнуть приемлемого уровня производительности информационной системы в процессе ее эксплуатации.
Однако в некоторых случаях доступные СУБД общего назначения не позволяют добиться требуемых характеристик производительности и/или удовлетворить заданные ограничения по объему памяти, предоставляемой для хранения БД.
Тогда приходится разрабатывать специализированную СУБД для данного конкретного применения. Решение указанных проблем при этом может оказаться возможным благодаря знанию специфических особенностей данного применения, к которым оказываются нечувствительными средства настройки доступных СУБД общего назначения, либо за счет ущемления каких либо функций системы, не имеющих жизненно важного значения. Как правило, в этой роли оказываются, прежде всего функции, обеспечивающие комфортную работу пользователя.
Разработка базы данных для автоматизированной системы управления ...
... базы данных реализована поддержка переносимых табличных пространств, система управления потоками данных Oracle Streams и модель распределенных SQL-запросов. Для переноса существующих баз данных ... -серверных приложений на базе MS Access рекомендует использовать в качестве движка базы данных СУБД MS SQL Server. ... Описание структуры курсового проекта: В данной работе рассматривается предметная область ...
СУБД общего назначения — это сложные программные комплексы, предназначенные для выполнения всей совокупности функций, связанных с созданием и эксплуатацией БД информационной системы. Они позволяют определить структуру создаваемой БД, инициализировать ее и произвести начальную загрузку данных. Системные механизмы выполняют также функции управления ресурсами среды хранения, обеспечения логической и физической независимости данных, предоставления доступа пользователям к БД, защиты логической целостности БД, обеспечения ее физической целостности — защиты от разрушений. Другая важная группа функций — управления полномочиями пользователей на доступ к БД, настройка на конкретные условия применения, организация параллельного доступа пользователей к базе данных в социальной пользовательской среде, поддержка деятельности системного персонала, ответственного за эксплуатацию БД.
Для создания БД разработчик описывает ее логическую структуру, организацию в среде хранения, а также способы видения базы данных пользователями. При этом используются предоставляемые СУБД языковые средства определения данных, и система настраивается на работу с конкретной БД. Такие описания БД называются соответственно схемой (или логической схемой, или концептуальной схемой) БД, схемой хранения (или внутренней схемой) и внешними схемами.
Обрабатывая схемы БД, СУБД создает пустую БД требуемой структуры хранилище, которое можно далее наполнить данными о предметной области начать эксплуатировать для удовлетворения информационных потребностей пользователей.
Принципиально важное свойство СУБД заключается в том, что она позволяет различать и поддерживать два независимых взгляда на БД — взгляд пользователя, воплощаемой в «логическом» представлении данных, и «взгляд» системы «физическое» представление, характеризующее организацию хранимых данных. Пользователя не интересует при его работе с БД байты и биты, представляющие данные в среде хранения, их размещения в памяти, указателя, поддерживающие связи между структурными различными компонентами хранимых данных, выбранные методы доступа. В то же время эти факторы важны для выполнения функций управления данными самой СУБД.
Обеспечение логической независимости данных — одна из важнейших функций СУБД, предоставляющая определенную степень свободы вариации «логического» представления БД без необходимости соответствующей модификации «физического» представления. Благодаря этому достигается возможность адаптации взгляда пользователя на БД к его реальным потребностям, конструирования различных «логических» взглядов на одну и ту же «физическую» БД, что весьма важно в социальной пользовательской среде.
Под «физической» независимостью данных понимается способность СУБД предоставлять некоторую свободу модификации способов организации БД в среде хранения, не вызывая необходимости внесения соответствующих изменений в «логическое» представление. Благодаря этому вносить изменения в организацию хранимых данных, производить настройку системы с целью повышения ее эффективности, не затрагивая созданных прикладных программ, использующих базу данных. «Физическая» независимость данных реализуется в СУБД за счет тех же самых трансформационных механизмов архитектуры системы, которые обеспечивают «логическую» независимость данных.
Использование баз данных и СУБД для обработки экономической информации
... в виде наглядных документов. Современная жизнь немыслима без эффективного управления. Важной категорией являются системы обработки информации, от которых во многом зависит эффективность работы любого предприятия ли учреждения. База данных ...
Поддержка логической целостности (непротиворечивости) базы данных другая важная функция СУБД. В развитых системах ограничения целостности базы данных объявляются в схеме базы данных, и их проверка осуществляется при каждом обновлении объектов данных или связей между ними, являющихся аргументами таких ограничений.
Реляционные базы данных
Реляционная модель требует от СУБД гораздо более высокого уровня сложности. В ней делается попытка избавить программиста от выполнения рутинных операций по управлению данными, столь характерных для иерархической и сетевой моделей.
В реляционной модели база данных представляет собой централизованное хранилище таблиц, обеспечивающее безопасный одновременный доступ к информации со стороны многих пользователей. В строках таблиц часть полей содержит данные, относящиеся непосредственно к записи, а часть — ссылки на записи других таблиц. Таким образом, связи между записями являются неотъемлемым свойством реляционной модели.
В реляционной модели достигается информационная и структурная независимость. Записи не связаны между собой настолько, чтобы изменение одной из них затронуло остальные, а изменение структуры базы данных не обязательно приводит к перекомпиляции работающих с ней приложений.
В реляционных СУБД применяется язык SQL, позволяющий формулировать произвольные, нерегламентированные запросы. Это язык четвертого поколения, поэтому любой пользователь может быстро научиться составлять запросы. К тому же, существует множество приложений, позволяющих строить логические схемы запросов в графическом виде. Все это происходит за счет ужесточения требований к производительности компьютеров. К счастью, современные вычислительные мощности более чем адекватны.
Реляционные базы данных страдают от различий в реализации языка SQL, хотя это и не проблема реляционной модели. Каждая реляционная СУБД реализует какое-то подмножество стандарта SQL плюс набор уникальных команд, что усложняет задачу программистам, пытающимся перейти от одной СУБД к другой. Приходится делать нелегкий выбор между максимальной переносимостью и максимальной производительностью. В первом случае нужно придерживаться минимального общего набора команд, поддерживаемых в каждой СУБД. Во втором случае программист просто сосредоточивается на работе в данной конкретной СУБД, используя преимущества ее уникальных команд и функций.
Объектно-ориентированные базы данных
Объектно-ориентированная база данных (ООБД) позволяет программистам, которые работают с языками третьего поколения, интерпретировать все свои информационные сущности как объекты, хранящиеся в оперативной памяти. Дополнительный интерфейсный уровень абстракции обеспечивает перехват запросов, обращающихся к тем частям базы данных, которые находятся в постоянном хранилище на диске. Изменения, вносимые в объекты, оптимальным образом переносятся из памяти на диск.
Преимуществом ООБД является упрощенный код. Приложения получают возможность интерпретировать данные в контексте того языка программирования, на котором они написаны. Реляционная база данных возвращает значения всех полей в текстовом виде, а затем они приводятся к локальным типам данных. В ООБД этот этап ликвидирован. Методы манипулирования данными всегда остаются одинаковыми независимо от того, находятся данные на диске или в памяти.
Проектирование и разработка базы данных ‘Магазин продажи одежды’
... комфорт при пользовании данным приложением. 1. Анализ предметной области Задачей курсовой работы является проектирование и разработка базы данных «Магазина продажи одежды». Особенности: Введение данных в БД осуществляется с админ ... password name phone ip .3 Описание физической БД СУБД mySql server идеально подходит для разработки БД для «Магазин продажи одежды» так как эта среда моделирует среду ...
Данные в ООБД способны принять вид любой структуры, которую можно выразить на используемом языке программирования. Отношения между сущностями также могут быть произвольно сложными. ООБД управляет кэшбуфером объектов, перемещая объекты между буфером и дисковым хранилищем по мере необходимости.
С помощью ООБД решаются две проблемы. Во-первых, сложные информационные структуры выражаются в них лучше, чем в реляционных базах данных, а во-вторых, устраняется необходимость транслировать данные из того формата, который поддерживается в СУБД. Например, в реляционной СУБД размерность целых чисел может составлять 11 цифр, а в используемом языке программирования — 16. Программисту придется учитывать эту ситуацию.
Объектно-ориентированные СУБД выполняют много дополнительных функций. Это окупается сполна, если отношения между данными очень сложны. В таком случае производительность ООБД оказывается выше, чем у реляционных СУБД. Если же данные менее сложны, дополнительные функции оказываются избыточными. В объектной модели данных поддерживаются нерегламентированные запросы, но языком их составления не обязательно является SQL. Логическое представление данных может не соответствовать реляционной модели, поэтому применение языка SQL станет бессмысленным. Зачастую удобнее обрабатывать объекты в памяти, выполняя соответствующие виды поиска.
Большим недостатком объектно-ориентированных баз данных является их тесная связь с применяемым языком программирования. К данным, хранящимся в реляционной СУБД, могут обращаться любые приложения, тогда как, к примеру, Java-объект, помещенный в ООБД, будет представлять интерес лишь для приложений, написанных на Java.
Объектно-реляционные базы данных
Объектно-реляционные СУБД объединяют в себе черты реляционной и объектной моделей. Их возникновение объясняется тем, что реляционные базы данных хорошо работают со встроенными типами данных и гораздо хуже — с пользовательскими, нестандартными. Когда появляется новый важный тип данных, приходится либо включать его поддержку в СУБД, либо заставлять программиста самостоятельно управлять данными в приложении.
Перестройка СУБД с целью включения в нее поддержки нового типа данных — не лучший выход из положения. Вместо этого объектно-реляционная СУБД позволяет загружать код, предназначенный для обработки «нетипичных» данных. Таким образом, база данных сохраняет свою табличную структуру, но способ обработки некоторых полей таблиц определяется извне, т.е. программистом.
2 Проектирование и разработка клиентского приложения информационной системы торговой организации
2.1 Создание структуры базы данных MySQL торговой организации
Процесс разработки (проектирования) базы данных включает два этапа: разработку логической организации базы данных и создание ее на носителе. Логическая организация базы данных — это предоставление пользователя о предметной области, информация о которой должна храниться в базе данных.
Под физической организацией базы данных понимается совокупность средств и методов размещения данных во внешней памяти и на их основе внутренняя модель данных. Внутренняя модель является средством отображения логической модели данных, показывает, каким образом записи размещаются в базе данных, как они упорядочиваются, как организуются связи, каким путем можно осуществить выборку и так далее.
Модели панельных данных для групп складских запасов торгового ...
... некоторые неудобства. Большинство моделей панельных данных оценивается либо в предположении фиксированных эффектов. [7, c.499] 1.2 Модель с фиксированными эффектами Модель с фиксированными эффектами ... построена регрессионная модель по панельным данным наиболее важных для изучения групп товаров. 1. Модели основанные на панельных данных 1.1 Преимущества панельных данных Множество данных, состоящих из ...
Проектирование базы данных торговой организации начиналось с создания всех нужных таблиц в базе, всех полей входящих в каждую таблицу, взаимодействия таблиц между собой с помощью специальных отношений (один ко многим, многие ко многим) и создание в соответствии с этими параметрами первичных и вторичных ключей.
Структура базы данных информационной системы торговой организации:
I. Торговая точка (trade)
1. Номер точки (trade_id)
2. Тип торговой точки (универмаг, магазин, киоск) (trade_type)
3. Число торговых залов (trade_number)
4. Платежи за аренду (стоимость) (trade_rent)
5. Коммунальные услуги (стоимость) (trade_utilities)
II. Продавец (seller) 1. Номер (seller_id) 2. Фамилия (seller_family) 3. Имя (seller_name) 4. Оклад (seller_oklad) 5. Код торговой точки (trade_id) III. Заявка (application) 1. Номер заявки (application_id) 2. Наименование товара (application_description) 3. Количество (application_sum) 4. Стоимость (application_cost) 5. Дата заявки (application_date) 5. Код товара (catalog_id) 6. Код поставщика (distributor_id) IV. Поставщик (distributor) 1. Номер (distributor_id) 2. Категория (фирма, дилер) (distributor_category) 3. Адрес (distributor_adress) 4. Название (distributor_name) V. Покупатель (buyer) 1. Номер покупателя (buyer_id) 2. Имя покупателя (buyer_name) 3. Фамилия покупателя (buyer_family) 4. Тип (частное или физическое лицо) (buyer_type) VI. Продажи (sales) 1. Номер покупки (sales_id) 2. Дата покупки (sales_date) 3. Количество единиц (sales_sum) 4. Цена (sales_price)
5. Код товара (catalog_id)
6. Код продавца (seller_id)
7. Код покупателя (buyer_id)
VII. Справочник товаров (номенклатура, склад) (catalog)
1. Номер товара (catalog_id) — первичный
2. Название товара (catalog_name)
3. Количество (catalog_sum)
4. Цена (catalog_price)
VIII. Распределение (raspredelenie)
1. Код товара (catalog_id)
2. Код точки (trade_id)
2.2 Разработка клиентского приложения в Qt Creator
В библиотеке Qt есть отдельный модуль, предоставляющий удобный функционал использования базы данных — QtSql.
К уровню драйверов относятся классы для получения данных на физическом уровне, такие, как:
- QSqlDriver;
- QsqlDriverCreator ;
- QSqlDriverCreatorBase;
- QSqlDriverPlugin;
- QSqlResult.
QSqlDriver является абстрактным базовым классом, предназначенный для доступа к специфичным БД. Класс не должен быть использован «прямо», взамен нужно воспользоваться QsqlDatabase. Для создания собственного драйвера SQL можно наследовать функции от QSqlDriver и реализовать необходимые виртуальные функции.
QSqlDriverCreator — шаблонный класс, предоставляющий фабрику SQL драйвера для специфичного типа драйвера. Шаблонный параметр должен быть подклассом QSqlDriver.
QSqlCreatorBase — базовый класс для фабрик SQL драйверов, чтобы возвращать экземпляр специфичного подкласса класса QSqlDriver.
QSqlDatabase несет ответственность за загрузку и управление плагинов драйверов баз данных. Когда база данных добавлена с помощью функции QSqlDatabase::addDatabase()), необходимый плагин драйвера загружается, используя QSqlDriverPlugin. QSqlDriverPlugin предоставляет собой абстрактный базовый класс для пользовательских QSqlDriver плагинов. [5]
Проектирование и разработка информационно-поисковой системы
... реализации поисковой системы. Для проектирования и разработки информационно-поисковой системы используются следующие инструменты: 1. Intellij idea - IDE для разработки приложений ... сложность обучения. В данной работе я рассмотрю 2 варианта разработки такой системы. С использованием стандартного ... в представление для рендеринга. Spring Web model-view-controller работает с помощью DispatcherServlet, ...
QSqlResult предоставляет абстрактный интерфейс для доступа к данным специфичных БД. В курсовом проекте мы используем QSqlQuery вместо QSqlResult, поскольку QSqlQuery предоставляет обертку для БД-специфичных реализации QSqlResult.
В проекте файла ipk2012.pro записываются все основные подключения и название проекта. Для того чтобы, проект мог работать с базой банных и обрабатывать запросы на sql в первой строке указывается код: sql: QT += core gui sql.
В файле mainwindow.h указывается подключение нужных библиотек, описание выбранного класса, описание конструктора, описание записанных слотов (записываются автоматически при создании), описание соответствующих указателей и функций (листинг 3.1).
Листинг 3.1 – Подключение библиотек в QT #ifndef MAINWINDOW_H #define MAINWINDOW_H #include окно Qmainwindow #include кодеки для использования русских симовлов #include создание или подключение базы #include создание реляционной таблицы модели #include создание аппликации #include создание определённых виджетов namespace Ui { class MainWindow; } class MainWindow : public QMainWindow описание класса и наследование { Q_OBJECT public: explicit MainWindow(QApplication *a, QWidget *parent = 0); описание конструктора ~MainWindow(); описание деструктора private slots: описание слотов void on_actionExit_triggered(); void on_action_triggered(); void on_action_2_triggered(); void on_action_3_triggered(); void on_action_4_triggered(); void on_action_5_triggered(); void on_action_6_triggered(); void on_action_7_triggered(); void on_action_8_triggered(); void on_action_9_triggered(); void on_action_10_triggered(); void on_action_11_triggered(); void on_action_12_triggered(); void on_action_13_triggered(); void on_action_14_triggered(); void on_action_15_triggered(); private: Ui::MainWindow *ui; указатель на класс QTextCodec *codec; указатель на кодеки QSqlDatabase *db; указатель на подключение или создание QAbstractTableModel *model; указатель на абстрактную модель таблицы bool createConnection(); функция создания подключения void createRelationalTables(); функция создания реляционной таблицы void initializeModel(); функция инициализации модели };
#endif // MAINWINDOW_H
В файле mainwindow.cpp записывается подключения нужных библиотек, файлов, а также весь процесс реализации данного класса mainwindow (листинг 3.2).
Листинг 3.2 – Реализация класса mainwindow #include «mainwindow.h» #include «ui_mainwindow.h» подключения файла данной формы #include создания или подключение базы #include ошибок подключения #include ошибок запросов #include текстовых сообщений #include создания реляционной таблицы #include создания определённых виджетов #include создания для работы с файлами #include создания реляционного делегата типа sql #include создания функции для работы с датами в Qt4 #include создания аппликации #include создания виджета типа QPushButton #include создания класса Qprinter #include создания класса QTextDocument #include создания класса QPrintDialog #include создания кодеков для отображения текста #include «dialog.h» подключение файлов формы диалог #include «dialog2.h»
MainWindow::MainWindow(QApplication *a, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) процесс реализации класса и конструктора с параметрами и выделения памяти { ui->setupUi(this); указатель на setupUi QTextCodec *codec = QTextCodec::codecForName(«CP1251»); codec = QTextCodec::codecForName(«CP1251»); установка кодировки сp1251 для отображения русских символов среде Qt QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec); ui->tw->horizontalHeader()->setResizeMode(QHeaderView::Stretch); установка горизонтальной шапки таблицы ui->tw->setItemDelegate(new QSqlRelationalDelegate(ui->tw)); создание реляционного делегата типа sql и выделения для него памяти ui->tw->setWindowTitle(«Информационная система торговой организации»); QSqlDatabase db=QSqlDatabase::addDatabase(«QMYSQL»); подключение к MYSQL db.setHostName(«127.0.0.1»); Имя хоста db.setPort(3306); Порт db.setDatabaseName(«ipk2012»); Название базы данных MYSQL db.setUserName(«root»); Имя пользователя базы данных MYSQL db.setPassword(«12345»); Пароль if (!db.open()) {
QMessageBox::critical(parent,QObject::tr(«Database Error»),db.lastError().text()); } Процесс вывода ошибки при невозможности подключиться к базе данных QSqlTableModel *model=new QSqlTableModel; создание реляционной модели и выделение для неё памяти model->setTable(«trade»); if (model->lastError().isValid() ) процедура вывода ошибки {
QMessageBox::critical(parent,QObject::tr(«Query Error»),model->lastError().text()); } model->setHeaderData(0, Qt::Horizontal, QObject::tr(«Номер точки»)); model->setHeaderData(1, Qt::Horizontal, QObject::tr(«Тип торговой точки»)); model->setHeaderData(2, Qt::Horizontal, QObject::tr(«Число торговых залов»)); model->setHeaderData(3, Qt::Horizontal, QObject::tr(«Платежи за аренду, руб.»)); model->setHeaderData(4, Qt::Horizontal, QObject::tr(«Коммунальные услуги, руб.»)); Описание шапки таблицы с помощью функции setHeaderData model->select(); Функция выборки ui->tw->setModel(model); Указатель на модель this->model = model; ui->tw->show(); Функция show-вывод на экран model->submitAll(); Функция submitall-представляет запись всех изменений } MainWindow::~MainWindow() Деструктор класса { delete ui; }
Процедура выполнения готовых всех классов выполняется в файле main.cpp (листинг 3.3).
Листинг 3.3 – Выполнение классов в файле main.cpp
#include подключение библиотеки QApplication
#include «mainwindow.h» подключение файла mainwindow.h
#include подключение библиотеки QTextCodec
int main(int argc, char *argv[])
{
QApplication a(argc, argv); выполнение класса QApplication a
MainWindow w(&a); выполнение класса MainWindow w(&a)
w.show(); вывод на экран класс w.show();
- return a.exec();
}
Для вывода таблиц используется виджет Qtableview (модель таблицы для отображения таблиц базы данных и запросов).
Описывая слот и процедуру, применяется обработка события мыши типа щелчок. Все данные процедуры события автоматически записываются в файл mainwindow.сpp. Здесь указывается алгоритм вывода таблицы или определенного запроса (листинг 3.4).
Листинг 3.4 – Вывод таблиц с помощью функции QSqlTableModel
void MainWindow::on_actionExit_triggered()
{
QMessageBox::information(0,»Info»,»exit pressed.»);
}
void MainWindow::on_action_triggered()
{
QSqlTableModel *model=new QSqlTableModel;
- model->setTable(«trade»);
- model->setHeaderData(0, Qt::Horizontal, QObject::tr(«Номер точки»));
- model->setHeaderData(1, Qt::Horizontal, QObject::tr(«Тип торговой точки»));
- model->setHeaderData(2, Qt::Horizontal, QObject::tr(«Число торговых залов»));
- model->setHeaderData(3, Qt::Horizontal, QObject::tr(«Платежи за аренду, руб.»));
- model->setHeaderData(4, Qt::Horizontal, QObject::tr(«Коммунальные услуги, руб.»));
- model->select();
- ui->tw->setModel(model);
- delete this->model;
- this->model = model;
- ui->tw->show();
}
Текст обработки события для добавления строки имеет такой код (листинг 3.5):