Учебная программа QT/C++/Java, SQLite (1 таблица)
Нужны исходники простой программы для поиска по базе телефонных номеров.
База данных: SQLite3.
Реализация на любом языке, желательно Java.
БД:
CREATE TABLE phones (
id INTEGER PRIMARY KEY,
phone varchar,
name varchar,
adress varchar,
tabel varchar,
bday varchar,
allfields varchar;
CONSTRAINT phones_unique UNIQUE (phone,name,adress,tabel)
);
Внешний вид (Главные активные виджеты):
1. Окно (главная форма);
2. Виджет ListView (Для отображения результата поиска БД);
3. Строка поиска (TextBox);
4. Кнопка (Искать).
Поведение программы:
1. При запуске окна таблица пустая;
2. Обновляется значение "Всего записей в БД";
3. На кнопку Искать привязан запрос поиск по БД;
4. Результат выводится в таблицу;
5. Обновляется значение "Результатов по запросу".
Движек поиска:
Для ускорения запросов по LIKE поле allfields содержит все другие поля (кроме ID) одной строкой (через пробел).
1) Строка запроса разбивается на отдельные слова (пробел тут является разделителем);
2) Формируется запрос: select * from phones where allfields like % [СЛОВО_ЗАПРОСА] %
Например если поле запроса примет вид: "333 Абра Кадабра" то запрос будет выглядеть так:
select * from phones where allfields like '%333%' AND like '%Абра%' AND like '%Кадабра%';
3) Результат записывается в массив RESULT;
4) Выполняются запросы по каждому элементу массива RESULT (строке результат предыдущего запроса), каждый запрос выглядит так:
select * from phones where name = [Поле name из массива (результаты предыдущего поиска)];
Результаты каждого запроса пункта 4 добавляются к массиву RESULT;
5) Вывод массива RESULT в таблицу.
В приложении фотка как эта прога выглядит.
Зачем по каждому результату делать еще запрос по имени:
Если искать в базе по телефону или части телефона результатом будет список нескольких людей.
Затем надо по каждому найденому человеку определить какие еще имеются у него телефоны (у одного человека может быть несколько номеров).
Замечания по интерфейсу:
Кнопка поиска прилеплена к правому краю.
Поле поиска растягивается до левого края кнопки поиска.
Таблица растягивается.
Поле Телефон 12-15 символов.
Поле День рождения 12-15 символов
Поля Имя, Адрес, Табель на всю оставшуюся ширину таблицы равной ширины.
Текстовое поле для поиска немного крупнее стандарта 14-16 размер шрифта, кнопка поиска соответственно чуть по крупнее.
Результат нужен в исходниках, а также в скомпилированном виде.
Подразумевается что файл Базы данных программа ищет рядом.
Если язык Java то скомпилированный вариант вместе с библиотекой чтоб запускался на Windows где нет Java машины.
База данных будет в UPPER CASE, поэтому все строки для запроса приводить предварительно соответственно в UPPERCASE.
Срок 1-2 дня
500 рублей. WMR
Спасибо.