2.2 Разработка конвертера таблицы Excel в БД
Одна из первых проблем, появившихся при формировании БД, - это перенос существующих данных из простой таблицы в Excel в файл с расширением *.db. Перенести данные ручным набором не представлялось возможным из-за большого количества записей (около 3500). Поэтому помимо основного проекта DataBase был создан проект Converter. Суть его работы заключается в переносе содержимого из файла с расширением *.csv (файл такого формата представляет из себя набор ячеек таблицы Excel, разделенных между собой точкой с запятой), в таблицу Students. Тонкость работы этой программы в том, что работать она будет только для конкретного csv-файла (отформатированного конкретным образом). На выходе мы должны будем получить таблицу Students, в состав которой уже входят все студенты КФ МГТУ, т.е. с заполненными полями Номер, ФИО, Факультет, Курс, Группа. Помимо того, в каждую из 5 баз данных (КМК, МТК, СЭК, ФНК, ЭИУК) запишется список всех групп данного факультета.
2.3 Разработка интерфейса главной формы СУБД
Главная форма для отображения БД использует компонент DBGrid, а для управления БД – главное меню, имеющее следующие пункты: Файл(Функции поиска в БД), Правка (Редактирование информации в БД), Дополнительно (Процедура перевода всех записей в БД на один семестр вперед) и Справка (Открытие файла ReadMe, см. Инструкцию пользователя).
2.4 Разработка модуля отображения БД
При запуске программы мы должны получить наибольшее возможное рабочее пространство занятое компонентом DBGrid, заполненным следующим образом: сортировка осуществляется по полям Факультет, Курс, Группа, и уже в каждой группе происходит отдельная сортировка по фамилии и затем нумерация внутри группы. Для этого используется один компонент Table (отображение всей таблицы Students) и 3 компонента Query, с помощью которых мы будем осуществлять SQL-запросы для различных операций с БД (в том числе – сортировка и нумерация). Для приведения компонента DBGrid к нужному нам виду используется следующая процедура:
procedure Vid_DBGrid;
begin
With Form1.DBGrid1 do begin
//Выравниваем ширину столбцов
Columns[0].Width:=20;
Columns[1].Width:=250;
Columns[3].Width:=30;
Columns[5].Width:=100;
Columns[6].Width:=55;
Columns[7].Width:=90;
Columns[8].Width:=250;
Columns[9].Width:=100;
Columns[10].Width:=230;
//Делаем столбец поощрения всплывающим списком
With Columns[5].PickList do begin
Add('Мат. помощь');
Add('Соц. стипендия');
Add('Соц. выплаты');
Add('Другие поощрения');
end;
//Делаем столбец поездки всплывающим списком
With Columns[9].PickList do begin
Add('Москва');
Add('Снакт-Петербург');
Add('Юг');
end;
end;
end;
Для сортировки и нумерации БД каждый раз при открытии формы выполняется следующая процедура:
//Открываем БД
Table1.Active:=true;
//Открываем БД с факультетами
With Query3 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM Facultets.db');
Open;
end;
//счетчик записей
n:=0;
//от 1 до количества факультетов
for i:=1 to Query3.RecordCount do begin
//Открываем БД, название которой соответсвует полю факультет текущей записи в БД Факультеты
With Query2 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM '+Query3['Факультет']+'.db');
Open;
end;
//От 1 до количества групп на факультете
for j:=1 to Query2.RecordCount do begin
//Открываем БД студенты и считываем только те записи, в которых поле группа соответствует полю группа в текущей записи БД Факультет
With Query1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM Students.db');
SQL.Add('WHERE Группа LIKE "'+Query2['Группа']+'"');
SQL.Add('ORDER BY ФИО');
Open;
end;
//От 1 до количества студентов в группе
for k:=1 to Query1.RecordCount do begin
//Добавляем в конец БД студенты запись с порядковым номером студента внутри группы
Table1.AppendRecord([k,Query1['ФИО'], Query1['Факультет'], Query1['Курс'], Query1['Группа'], Query1['Поощрения'], Query1['Сумма'], Query1['Дата выдачи'], Query1['Примечание'], Query1['Поездки'], Query1['Примечания']]);
Query1.Next;
n:=n+1;
end;
//Переходим на следующую группу
Query2.Next;
end;
//Переходим на следующий факультет
Query3.Next;
end;
//Возвращаемся к началу БД студенты
Table1.First;
//Удаляем все записи, кроме недавно добавленных
for i:=1 to n do
Table1.Delete;
2.5 Разработка средств редактирования БД
Также в курсовом проекте предусмотрено добавление и удаление студентов, а также добавление и удаление групп.
Добавление студентов осуществляется в новом окне, а сама процедура добавления заключается в нижеприведенном коде:
//Добавляем запись, поля которой соответствуют текущим значениям 3-х списков и полю Edit1 в конец БД
Form1.Table1.AppendRecord([1,Edit1.Text,ComboBox1.Items[ComboBox1.ItemIndex],ComboBox2.Items[ComboBox2.ItemIndex],ComboBox3.Items[ComboBox3.ItemIndex]]);
Form1.Table1.First;
Затем заново происходит сортировка и нумерация всей БД, чтобы сразу же поставить новую запись именно в то место таблицы Students, где она должна находиться.
Про удаление студентов будет рассказано ниже. Добавление новых групп и удаление старых – процедуры, надобность в которых возникнет лишь в результате создания новых специальностей на факультете или исчезновения старых. Осуществляются эти процедуры добавлением (удалением) записи в таблице относящейся к конкретному факультету.
... или отменить редактирования записи. При выборе пункта 4 на экран выведутся все записи. Упорядочивание по алфавиту происходит автоматически при создании, удалении или редактировании записи. При выборе пятого пункта пользователю предлагается сначала выбрать тип вместимости стадионов (равно, больше, меньше, больше или равно, меньше или равно), затем ввести вместимость, по которой хотите ...
... int(11)); mysql> DESCRIBE pokup; mysql> CREATE TABLE sale (cod_s int(11), cost_s float, date_s date, cod_pokup int(11), cod_prodav int(11)); mysql> DESCRIBE sale; Посмотрим список созданных таблиц mysql> SHOW TABLES; Вводим данные в таблицы. Сначала заполним таблицу sale mysql> INSERT INTO sale -> VALUES (3003, 767, "2005-03-04", 2001, 1001); ...
... за счет доменов прямо пропорционально количеству полей всех таблиц. Поэтому, обычно создают достаточное количество доменов для описания таблиц в БД, а потом создают сами таблицы. Вот выдержка из реальной базы данных для создания доменов: CREATE DOMAIN IZMER_NUM INTEGER NOT NULL; CREATE DOMAIN ACTIVITIES_NUM INTEGER NOT NULL; . . . CREATE DOMAIN NAMES_TYPE VARCHAR(45) COLLATE PXW_CYRL; CREATE ...
... Мягкий 31.07.2006 240 Познавательная Внешним ключом таблицы является поле Автор. Структуры созданных таблиц выглядят следующим образом: Структура таблицы «Авторы» созданной базы данных «Картотека книг» Имя поля Тип данных Описание КодАвтора Счетчик Отражает числовое значение кода авторов книг Имя Текстовый (10) Имя автора Фамилия Текстовый (20) Фамилия автора ...
0 комментариев