close

Вход

Забыли?

вход по аккаунту

?

Отчет по практике (6)

код для вставкиСкачать
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет автоматики и вычислительной техники
Кафедра автоматики и телемеханики
Отчет по учебно-вычислительной практике
Выполнил студент группы У-31_________________ / Шмаков И.С./
(подпись)
Проверил преподаватель: _________________ / Поздин В.Н./
(подпись)
Киров 2012
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет автоматики и вычислительной техники
Кафедра автоматики и телемеханики
ЗАДАНИЕ НА УЧЕБНО-ВЫЧИСЛИТЕЛЬНУЮ ПРАКТИКУ
Студент Шмаков И.С. группы У-31 . 1. Тема работы: применение компонентов и объектов среды программирования BC++ Builder при разработке приложений Windows (работа с текстовыми файлами, базы данных).
2. Дата выдачи задания: 28.06.2012 г
3. Срок сдачи студентом законченной работы: 22.07.2012 г
4. Формулировка задания:
Часть I: Работа с текстовыми файлами:
- подсчет количества слов определенной длины (от 1 до 10 включительно);
- перекодировка из OEM-кода в ANSI-код и обратно;
- вывод статистики (кол-во букв, кол-во слов, частота встречи слов в тексте);
- гистограмма;
- сохранение статистики в текстовый файл;
- незначительное редактирование текста;
Часть II: База данных (Таблицы).
Сформировать базу данных, которая включает в себя не менее двух таблиц (в каждой таблице не менее 4-х полей). Поля должны иметь типы INTEGER (целое 32-х разрядное число), FLOAT (вещественное число) и VARCHAR (переменная строка). Необходимо обеспечить взаимосвязь таблиц по одному из полей.
Для формирования базы данных необходимо написать сценарий, который представляет собой текстовый файл, сформированный в обычном текстовом редакторе типа EDIT.
Часть III: База данных (Программа).
Общее задание.
Разработать программу для работы с базой данных (БД) (использовать БД созданную на второй части практики).
Требования к программе. Программа должна включать:
1. ввод данных;
2. удаление данных;
3. редактирование данных;
Примечание. Данные функции должны быть реализованы:
- без использования навигатора;
- не с помощью SQL запросов вводимых с клавиатуры (использовать динамические запросы).
4. обеспечение связи по полям таблиц (при работе с БД связи не должны нарушаться);
5. работа на основе связей по таблицам (например, по выбору данных из одной таблицы, поиск в другой, формирование результирующей таблицы);
6. функции поиска;
7. функции сортировки;
Индивидуальное задание:
- формирование вычисляемого поля в таблице 1, которое содержит количество моделей каждого производителя;
- комплексный поиск. Подсветка строк, подходящих под поиск.
5. Требования, предъявляемые к реализации программ:
- Помощь по использованию программы;
- Сведения о проектировщике;
- Наличие общего меню и дублирование его функций на панели инструментов;
- Защита от "дурака";
- Подробные комментарии в тексте программ.
Внешний интерфейс - на усмотрение разработчика (единственное требование: продуманность с точки зрения максимального удобства работы оператора и функциональности).
6. График выполнения курсового проекта: 28.06 - Получение задания.
04.07 - Выполнена 1 часть задания.
11.07 - Выполнена 2 часть задания.
18.07 - Выполнена 3 часть задания.
22.07 - Выполнено индивидуальное задание.
22.07 - Оформлен отчет.
Руководитель работы: _______________ / Поздин В.Н./ _____________2012 г.
(подпись)
Задание принял: _______________ / Шмаков И.С. / ___________2012 г.
(подпись)
РЕФЕРАТ
Шмаков И.С.: Учебно-вычислительная практика ТПЖА 210131.156: / ВятГУ, каф. АТ: рук. Поздин В.Н. - Киров, 2012. 26 с., 2 табл., 4 рис., 3 источника.
ТЕКСТОВЫЙ ФАЙЛ, OEM-КОДИРОВКА, ANSI-КОДИРОВКА, РЕЛЯЦИОННАЯ БАЗА ДАННЫХ, РЕДАКТИРОВАНИЕ, ВСТАВКА, УДАЛЕНИЕ, СВЯЗАННЫЕ ТАБЛИЦЫ, СОРТИРОВКА, ПОИСК, IBTABLE, SQL ЗАПРОС.
Цель практики - разработка программных продуктов в среде Borland C++ Builder.
Введение__
1. Работа с текстовым файлом__
2. Структурированный язык запросов SQL__
3. Работа с базами данных__
Заключение__
ПРИЛОЖЕНИЕ А. Библиографический список__
ПРИЛОЖЕНИЕ Б. Листинг программы.__
Введение
Borland C++Builder,сегодня является наиболее совершенной визуальной средой быстрой разработки на Си++ для Windows. В ее состав входит около 200 самых разных компонентов, а создание законченной программы требует минимума усилий. Ближайший конкурент Borland C++Builder - это не система Microsoft Visual C++, которая построена по другой схеме, a Microsoft Visual Basic. Однако эффективность программ, создаваемых с помощью C++Builder, в десятки раз превосходит быстродействие программ, написанных на MS Visual Basic. Да и по числу свободных доступных компонентов равных среде C++Builder сегодня не найти.
C++Builder поддерживает основные принципы объектно-ориентированного программирования - инкапсуляцию, полиморфизм и множественное наследование, а также нововведенные спецификации и ключевые слова в стандарте языка C++.
C++Builder обеспечивает высокое быстродействие при компиляции и сборке 32-разрядных приложений для современных операционных систем Windows 95 и Windows NT, включая OLE взаимодействие клиент-сервер. Система даже отображает время, затраченное на основные этапы построения программ. Результирующие программы хорошо оптимизированы по скорости исполнения и затратам памяти. Хотя отладочный режим низкого уровня полностью интегрирован в среду C++Builder, к отладке также пришлось привыкать. Дизайнер форм. Инспектор объектов и другие средства остаются доступными во время работы программы, поэтому вносить изменения можно в процессе отладки.
C++ Builder поддерживает связь с различными базами данных 3-х видов: dBASE и Paradox: Sybase, Oracle, InterBase и Informix; Excel, Access, FoxPro и Btrieve. Механизм BDE (Borland Database Engine) придает обслуживанию связей с базами данных удивительную простоту и прозрачность. Проводник Database Explorer позволяет изображать связи и объекты баз данных графически.
Благодаря средствам управления проектами, двусторонней интеграции приложения и синхронизации между средствами визуального и текстового редактирования, а также встроенному отладчику (с ассемблерным окном прокрутки, пошаговым исполнением, точками останова, трассировкой и т.п.) - C++ Builder корпорации Borland предоставляет собой впечатляющую среду разработки.
1. РАБОТА С ТЕКСТОВЫМ ФАЙЛОМ
1.1 Назначение программы
Программа предназначена для работы с текстовыми файлами, выполняет все действия, указанные в задании и работает в операционной системе Windows на персональных ЭВМ. 1.2 Входные данные
Текстовые файлы.
1.3 Выходные данные
Выходными данными для программы являются:
- статистика в виде текстового файла;
- гистограмма;
- текстовые файлы с измененной кодировкой. 1.4 Структура программы
Данная программа содержит 1 форму, на которой находятся все компоненты, необходимые для выполнения задания. Она содержит:
MainMenu - для формирования меню;
OpenDialog - для реализации функции открытия файлов (на локальном диске и в сетевых ресурсах);
SaveDialog - для сохранения файлов;
RichEdit - для отображения текстовой информации.
1.5 Алгоритм работы
После запуска программы перед пользователем появляется окно, изображенное на рисунке (Рисунок 1). Рисунок1. Далее необходимо открыть текстовый файл, с которым будет происходить дальнейшая работа, для этого следует выбрать пункт главного меню Файл/Открыть файл. Появится диалоговое окно открытия файла. После выбора файла, текст будет отображен на форме. Если текст не читаем, необходимо произвести его перекодировку. Для этого необходимо выбрать пункт главного меню Редактировать/Преобразовать кодировку. Чтобы подсчитать количество слов определенной длины (от 1 до 10 включительно) необходимо выбрать пункт меню Статистика/Расчет. Данный пункт доступен только при открытых текстовых файлах. Для сохранения статистики необходимо выбрать Файл/Сохранить. На рисунке 2 изображена программа со всеми выполняемыми функциями.
Информацию о разработчике программы и задание можно просмотреть, выбрав в главном меню Help/About. Для выхода из программы необходимо выбрать в главном меню Файл/Выход.
Рисунок 2
1.6 Функциональная реализация процедур
Листинг программы с комментариями можно посмотреть в Приложении Б.
1.7 Выводы по первой части
В результате выполнения задания по первой части был получен исполнительный файл проекта Project1.ехе, соответствующий заданию.
Были изучены методы работы с текстовыми файлами.
2. СТРУКТУРИРОВАННЫЙ ЯЗЫК ЗАПРОСОВ SQL
2.1 Назначение программы
Данная программа предназначена для реализации простейшего редактора базы данных с использованием стандартного компонента DBNavigator. В программе реализована связь между таблицами.
2.2 Входные данные
Входными данными для программы является база данных, сформированная согласно требованиям задания и содержащая 2 таблицы. Назначение полей можно проследить по следующей таблице:
НаименованиеИнтерпретация ТипТаблица 1 TAB1IDИдентификаторINTEGER NOT NULLmarkНазвание маркиCHAR(20) NOT NULLCountryСтрана-производительCHAR(30)dataГод основанияINTEGER CapitalСтолицаCHAR(25) NOT NULLТаблица 2 TAB2IDИдентификаторINTEGER NOT NULLmodelНазвание моделиCHAR(20) NOT NULLHpМощность двигателяINTEGERVolОбъем двигателяINTEGERmspeedМаксимальная скоростьINTEGER База данных создаётся на основе файла сценария ( файл сценария составляется с помощью стандартных средств создания текстовых файлов ), который затем запускается в программном пакете InterBase. Содержание файла сценария представлено в Приложении В.
2.3 Выходные данные
Выходными данными является база данных.
2.4 Функциональная реализация процедур
Листинг программы с комментариями можно посмотреть в Приложении Б.
2.5 Выводы по второй части
Был изучен язык структурированных запросов SQL. Создана база данных, при этом был изучен пакет программ InterBase, а также рассмотрены функции создания и подключения баз данных. 3. РАБОТА С БАЗАМИ ДАННЫХ
3.1 Назначение программы
Данная программа работает с базой данных, созданной во второй части.
3.2 Входные данные
Входными данными для программы является база данных BASE.GDB, созданная во второй части практики.
3.3 Выходные данные
Выходными данными является информация, извлекаемая из базы данных и сама база данных.
3.4 Структура программы
Данная программа содержит 1 форму, которая содержит компоненты:
IBDatabase - компонент для подключения базы данных;
IBTransaction - компонент для подключения транзакций;
DataSource - компонент для привязки таблицы из базы данных к соответствующему окну вывода;
IBTable - компонент для подключения таблиц из базы данных;
DBGrid - сетка для отображения содержимого таблиц базы данных;
IBQuery - для организации доступа к базе данных и её отображению на экране.
Button - кнопки для выполнения определённых операций;
Edit - для ввода данных с клавиатуры.
3.5 Алгоритм работы
После запуска программы перед пользователем появляется окно, изображенное на рисунке (Рисунок 3). Рисунок3
На форме расположены таблицы, содержащие названия марок, стран-производителей, моделей автомобилей. Первая таблица (Марки) содержит вычисляемое поле (Моделей), которое подсчитывает количество моделей каждой марки. Для добавления марки необходимо заполнить поля под таблицей и нажать кнопку Добавить новую запись. Произойдет добавление марки. Для редактирования модели необходимо выбрать её из первой таблицы (нажав по нужной строке левой кнопкой мыши), все данные из таблицы вынесутся в строку под таблицей, где их можно изменить. Для применения изменений необходимо нажать Редактировать запись. Так же есть функции удаления. Работа с таблицей "Модели" осуществляется аналогично.
На рисунке 4 изображена программа со всеми выполняемыми функциями комплексного поиска. При выполнении поиска откроется новое окно, где необходимо ввести параметры поиска; так же, в основном окне, строки, подходящие по результатам поиска будут выделяться.
Рисунок 4
Функциональная реализация процедур
Листинг программы с комментариями можно посмотреть в Приложении Б.
3.6 Выводы по третьей части
При реализации третьей части изучены:
- методы работы с базой данных, организации доступа к базе данных и отдельным её частям;
- некоторые возможности компонента Query, посредством которого можно организовать более быстрый доступ к информации базы данных;
- сложные запросы.
Заключение
По окончанию учебно-вычислительной практики все поставленные задания выполнены с соблюдением требований. Результатом прохождения практики являются две законченные программы.
Основой прохождения практики было самостоятельное изучение материала и применение его для решения поставленных задач.
ПРИЛОЖЕНИЕ А. Библиографический список
1. Методические указания по учебно-вычислительной практике;
2. Архангельский "Borland C++ Builder";
3. Материалы сайта www.sql.ru.
ПРИЛОЖЕНИЕ Б. Листинг программ.
1 часть.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "string.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int cnt_of_words[10];
int other = 0;
float cnt = 0, freq[10];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
if(OpenDialog1->Execute())
RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName.c_str());
N12->Enabled = 0;
N13->Enabled = 0;
TabSheet2->TabVisible = 0;
PageControl1->ActivePageIndex = 0;
N3->Enabled = 1;
N5->Enabled = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OEMANSI1Click(TObject *Sender)
{
char *buf;
buf=(char*)malloc(RichEdit1->Text.Length());
strcpy(buf,RichEdit1->Text.c_str());
OemToAnsi(buf,buf);
RichEdit1->Text=buf;
free(buf); }
//---------------------------------------------------------------------------
void __fastcall TForm1::ANSIOEM1Click(TObject *Sender)
{
char *buf;
buf=(char*)malloc(RichEdit1->Text.Length());
strcpy(buf,RichEdit1->Text.c_str());
AnsiToOem(buf,buf);
RichEdit1->Text=buf;
free(buf); }
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
RichEdit1->PlainText = 1;
if(SaveDialog1->Execute())
RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N11Click(TObject *Sender)
{
AnsiString wrd;
char *dev = " ,.!?\n";
memset (cnt_of_words, 0, sizeof(cnt_of_words));
memset (freq, 0, sizeof(freq));
cnt = 0;
other = 0;
Series1->Clear();
Series2->Clear();
char *buf;
char* str=new char[RichEdit1->Text.Length()];
strcpy(str,RichEdit1->Text.c_str());
buf = strtok(str, dev);
while (buf != NULL)
{
if (strlen(buf)<=10) cnt_of_words[strlen(buf)-1]++;
else other++;
cnt++;
buf = strtok(NULL, dev);
}
for(int i=1; i<=10; i++)
{
Form2->StringGrid1->Cells[1][i] = cnt_of_words[i-1];
freq[i-1] = cnt_of_words[i-1]*100/cnt;
Form2->StringGrid1->Cells[2][i] = FloatToStrF(freq[i-1], ffFixed, 4,2);
}
for(int j=1; j<=10; j++)
if (cnt_of_words[j-1])
{
Series1->Add(cnt_of_words[j-1], (AnsiString)j + "-буквенное" , RGB(random(256),random(256),random(256)));
Series2->Add(freq[j-1], (AnsiString)j + "-буквенное" , RGB(random(256),random(256),random(256)));
}
if (other) Series1->Add(other, "остальные", clWhite);
delete str;
TabSheet2->TabVisible = 1;
PageControl1->ActivePageIndex = 1;
N12->Enabled = 1;
N13->Enabled = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N13Click(TObject *Sender)
{
Form2->Visible = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N6Click(TObject *Sender)
{
exit(0); }
//---------------------------------------------------------------------------
void __fastcall TForm1::N8Click(TObject *Sender)
{
RichEdit1->CutToClipboard();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N9Click(TObject *Sender)
{
RichEdit1->CopyToClipboard();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N10Click(TObject *Sender)
{
RichEdit1->PasteFromClipboard();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N12Click(TObject *Sender)
{
AnsiString str1, str2, str3;
TStringList* stat = new TStringList();
stat->Add(" слов частота" );
stat->Add(" ");
for(int i=0; i<=9; i++)
{
str1 = String().StringOfChar(' ', 5-strlen(IntToStr(i+1).c_str()));
str2 = String().StringOfChar(' ', 6-strlen(IntToStr(cnt_of_words[i]).c_str()));
stat->Add((AnsiString)(i+1) + " -буквенное:" + str1 + "|" + " " +
IntToStr(cnt_of_words[i]) + str2 + "|" + " " + FloatToStrF(freq[i], ffFixed, 4,2));
}
if(SaveDialog1->Execute()) stat->SaveToFile(SaveDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OpenDialog1->InitialDir = GetCurrentDir();
SaveDialog1->InitialDir = GetCurrentDir();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::About1Click(TObject *Sender)
{
Form3->Visible = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N14Click(TObject *Sender)
{
RichEdit1->CutToClipboard(); }
//---------------------------------------------------------------------------
void __fastcall TForm1::N15Click(TObject *Sender)
{
RichEdit1->CopyToClipboard(); }
//---------------------------------------------------------------------------
void __fastcall TForm1::N16Click(TObject *Sender)
{
RichEdit1->PasteFromClipboard(); }
//---------------------------------------------------------------------------
2 часть.
CREATE DATABASE "c:\base.gdb" USER "SYSDBA" PASSWORD "masterkey" PAGE_SIZE 8192;/*4096;2048*/
CREATE TABLE TAB1 (
id int,
mark varchar(20) NOT NULL,
country varchar(30),
data int,
UNIQUE(mark)
);
CREATE TABLE TAB2 (
id int,
model varchar(20),
hp int,
vol int,
mspeed int
);
INSERT INTO TAB1 VALUES (1, 'Audi', 'Германия', 1909);
INSERT INTO TAB1 VALUES (2, 'BMW', 'Германия', 1916);
INSERT INTO TAB1 VALUES (3, 'Mercedes', 'Германия', 1871);
INSERT INTO TAB1 VALUES (4, 'Honda', 'Япония', 1948);
INSERT INTO TAB1 VALUES (5, 'Volvo', 'Швеция', 1927);
INSERT INTO TAB2 VALUES (1, 'A3', 140, 1968, 207);
INSERT INTO TAB2 VALUES (1, 'A6', 204, 2773, 232);
INSERT INTO TAB2 VALUES (1, 'A8', 250, 2967, 250);
INSERT INTO TAB2 VALUES (2, '318', 115, 1995, 201);
INSERT INTO TAB2 VALUES (2, '520', 150, 1991, 220);
INSERT INTO TAB2 VALUES (2, 'M3', 321, 3201, 250);
INSERT INTO TAB2 VALUES (3, 'E320', 220, 3199, 235);
INSERT INTO TAB2 VALUES (3, 'C280', 193, 2295, 230);
INSERT INTO TAB2 VALUES (3, 'S600', 394, 5987, 250);
INSERT INTO TAB2 VALUES (4, 'Civic', 140, 1799, 205);
INSERT INTO TAB2 VALUES (4, 'NSX', 280, 3179, 270);
INSERT INTO TAB2 VALUES (4, 'S2000', 237, 2157, 241);
INSERT INTO TAB2 VALUES (5, 'c30', 177, 1984, 220);
INSERT INTO TAB2 VALUES (5, 's80', 304, 2953, 250);
INSERT INTO TAB2 VALUES (5, 'XC90', 315, 4414, 210);
COMMIT;
3 часть
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int sort[4], sort2[5];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("select * from tab1");
IBQuery1->Open();
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add("select * from tab2");
IBQuery2->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{String str;
str = "insert into tab2 values(";
str = str + " "+StringGrid2->Cells[0][1]+" ";
str = str + ", ";
str = str + " '"+StringGrid2->Cells[1][1]+"' ";
str = str + ", ";
str = str + " "+StringGrid2->Cells[2][1]+" ";
str = str + ", ";
str = str + " "+StringGrid2->Cells[3][1]+" ";
str = str + ", ";
str = str + " "+StringGrid2->Cells[4][1]+" ";
str = str + ")";
IBQuery2->Close();
IBQuery2->SQL->Clear(); IBQuery2->SQL->Add(str);
IBQuery2->ExecSQL();
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add("select * from tab2");
IBQuery2->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
String str;
int ID = IBQuery1->FieldValues["id"];
IBQuery1->Close();
IBQuery1->SQL->Clear();
str = "update tab1 set ";
str = str + "id = "+StringGrid1->Cells[0][1]+", ";
str = str + "mark = '"+StringGrid1->Cells[1][1]+"', ";
str = str + "country = '"+StringGrid1->Cells[2][1]+"', ";
str = str + "data = "+StringGrid1->Cells[3][1]+" ";
str = str + "where id = "+ID+" ";
IBQuery1->SQL->Add(str);
IBQuery1->ExecSQL();
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("select * from tab1");
IBQuery1->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGrid1CellClick(TColumn *Column)
{
StringGrid1->Cells[0][1] = IBQuery1->FieldValues["id"];
StringGrid1->Cells[1][1] = IBQuery1->FieldValues["mark"];
StringGrid1->Cells[2][1] = IBQuery1->FieldValues["country"];
StringGrid1->Cells[3][1] = IBQuery1->FieldValues["data"];
Form3->IBQuery1->Close();
Form3->IBQuery1->SQL->Clear();
Form3->IBQuery1->SQL->Add("select * from tab2 where id = "+IBQuery1->FieldValues["id"]+" ");
Form3->IBQuery1->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
StringGrid1->Cells[0][0] = "ID";
StringGrid1->Cells[1][0] = "Марка";
StringGrid1->Cells[2][0] = "Страна";
StringGrid1->Cells[3][0] = "Год основания";
StringGrid2->Cells[0][0] = "ID";
StringGrid2->Cells[1][0] = "Модель";
StringGrid2->Cells[2][0] = "Мощность";
StringGrid2->Cells[3][0] = "Объем двигателя";
StringGrid2->Cells[4][0] = "Макс. скорость";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
String str;
str = "insert into tab1 values(";
str = str + " "+StringGrid1->Cells[0][1]+" ";
str = str + ", ";
str = str + " '"+StringGrid1->Cells[1][1]+"' ";
str = str + ", ";
str = str + " '"+StringGrid1->Cells[2][1]+"' ";
str = str + ", ";
str = str + " "+StringGrid1->Cells[3][1]+" ";
str = str + ")";
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add(str);
IBQuery1->ExecSQL();
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("select * from tab1");
IBQuery1->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button10Click(TObject *Sender)
{
String str, mod;
mod = IBQuery2->FieldValues["model"];
IBQuery2->Close();
IBQuery2->SQL->Clear();
str = "update tab2 set ";
str = str + "id = "+StringGrid2->Cells[0][1]+", ";
str = str + "model = '"+StringGrid2->Cells[1][1]+"', ";
str = str + "hp = "+StringGrid2->Cells[2][1]+", ";
str = str + "vol = "+StringGrid2->Cells[3][1]+", ";
str = str + "mspeed = "+StringGrid2->Cells[4][1]+" ";
str = str + "where model = '"+mod+"' ";
IBQuery2->SQL->Add(str);
IBQuery2->ExecSQL();
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add("select * from tab2");
IBQuery2->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGrid2CellClick(TColumn *Column)
{
StringGrid2->Cells[0][1] = IBQuery2->FieldValues["id"];
StringGrid2->Cells[1][1] = IBQuery2->FieldValues["model"];
StringGrid2->Cells[2][1] = IBQuery2->FieldValues["hp"];
StringGrid2->Cells[3][1] = IBQuery2->FieldValues["vol"];
StringGrid2->Cells[4][1] = IBQuery2->FieldValues["mspeed"];
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button9Click(TObject *Sender)
{
String str1, str2;
int ID = IBQuery1->FieldValues["id"];
str1 = str1+ "delete from tab1 where id = "+ID+" ";
str2 = str2+ "delete from tab2 where id = "+ID+" ";
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add(str1);
IBQuery1->ExecSQL();
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add(str2);
IBQuery2->ExecSQL();
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("select * from tab1");
IBQuery1->Open();
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add("select * from tab2");
IBQuery2->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button11Click(TObject *Sender)
{
String str, mod;
mod = IBQuery2->FieldValues["model"];
IBQuery2->Close();
IBQuery2->SQL->Clear();
str = str + "delete from tab2 where model = '"+mod+"' ";
IBQuery2->SQL->Add(str);
IBQuery2->ExecSQL();
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add("select * from tab2");
IBQuery2->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGrid2TitleClick(TColumn *Column)
{
String str;
str = "select * from tab2 ";
if(sort2[Column->ID] == 0)
{
str = str + "order by "+Column->FieldName+" asc";
sort2[Column->ID] = 1;
} else
{
str = str + "order by "+Column->FieldName+" desc";
sort2[Column->ID] = 0;
}
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add(str);
IBQuery2->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGrid1TitleClick(TColumn *Column)
{
String str;
str = "select * from tab1 ";
if(sort[Column->ID] == 0)
{
str = str + "order by "+Column->FieldName+" asc";
sort[Column->ID] = 1;
} else
{
str = str + "order by "+Column->FieldName+" desc";
sort[Column->ID] = 0;
}
IBQuery1->Close();
IBQuery1->SQL->Clear(); IBQuery1->SQL->Add(str);
IBQuery1->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("select * from tab1");
IBQuery1->Open(); }
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add("select * from tab2");
IBQuery2->Open(); }
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
Form3->Show(); }
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
Form2->Show(); }
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
String str;
if (RadioGroup2->ItemIndex == 0)
{
if(RadioGroup1->ItemIndex == 0)
{
if(Edit2->Text=="") {ShowMessage("Заполните поле!"); return;}
else
str = "select id, model, hp, vol, mspeed from tab2 where id in(" ;
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("select id from tab1 where country = '"+Edit2->Text+"'");
IBQuery1->Open();
IBQuery1->First();
str = str + IBQuery1->Fields->Fields[0]->AsString;
while(!IBQuery1->Eof)
{
IBQuery1->Next();
str = str + ", " + IBQuery1->Fields->Fields[0]->AsString;
}
str = str + ")";
}
if(RadioGroup1->ItemIndex == 1)
{
if(Edit3->Text=="" || Edit4->Text=="") {ShowMessage("Заполните поле!"); return;}
else
str = "select id, model, hp, vol, mspeed from tab2 where ";
str = str + "hp>= "+StrToInt(Edit3->Text)+" AND hp<= "+StrToInt(Edit4->Text)+"";
}
if(RadioGroup1->ItemIndex == 2)
{
if(Edit5->Text=="" || Edit6->Text=="") {ShowMessage("Заполните поле!"); return;}
else
str = "select id, model, hp, vol, mspeed from tab2 where ";
str = str + "mspeed>="+StrToInt(Edit5->Text)+" AND mspeed<="+StrToInt(Edit6->Text)+"";
}
} else
{
if (Edit2->Text == "" || Edit3->Text=="" || Edit4->Text=="" || Edit5->Text=="" || Edit6->Text=="")
{ShowMessage("Заполните все поля!"); return;}
else
{
str = "select id, model, hp, vol, mspeed from tab2 where id in(" ;
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("select id from tab1 where country = '"+Edit2->Text+"'");
IBQuery1->Open();
IBQuery1->First();
str = str + IBQuery1->Fields->Fields[0]->AsString;
while(!IBQuery1->Eof)
{
IBQuery1->Next();
str = str + ", " + IBQuery1->Fields->Fields[0]->AsString;
}
str = str + ")";
str = str + "AND hp>= "+StrToInt(Edit3->Text)+" AND hp<= "+StrToInt(Edit4->Text)+"";
str = str + "AND mspeed>="+StrToInt(Edit5->Text)+" AND mspeed<="+StrToInt(Edit6->Text)+"";
}
}
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add(str);
IBQuery2->Open();
Form1->srch = 1;
Form1->DBGrid2->Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button3Click(TObject *Sender)
{
String str;
str = "select id, model, hp, vol, mspeed from tab2 where ";
str = str + "hp>= "+StrToInt(Edit3->Text)+" AND hp<= "+StrToInt(Edit4->Text)+"";
IBQuery2->Close();
IBQuery2->SQL->Clear();
IBQuery2->SQL->Add(str);
IBQuery2->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::RadioGroup1Click(TObject *Sender)
{
if(RadioGroup1->ItemIndex == 0)
{Edit2->Enabled=1; Edit3->Enabled=0; Edit4->Enabled=0;
Edit5->Enabled=0; Edit6->Enabled=0;
Label1->Enabled = 0; Label2->Enabled = 0;
Label3->Enabled = 0; Label4->Enabled = 0;}
if(RadioGroup1->ItemIndex == 1)
{Edit2->Enabled=0; Edit3->Enabled=1; Edit4->Enabled=1;
Edit5->Enabled=0; Edit6->Enabled=0;
Label1->Enabled = 1; Label2->Enabled = 1;
Label3->Enabled = 0; Label4->Enabled = 0;}
if(RadioGroup1->ItemIndex == 2)
{Edit2->Enabled=0; Edit3->Enabled=0; Edit4->Enabled=0;
Edit5->Enabled=1; Edit6->Enabled=1;
Label1->Enabled = 0; Label2->Enabled = 0;
Label3->Enabled = 1; Label4->Enabled = 1;}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::RadioGroup2Click(TObject *Sender)
{
if (RadioGroup2->ItemIndex == 1)
{
RadioGroup1->Enabled = 0;
Edit2->Enabled=1; Edit3->Enabled=1; Edit4->Enabled=1;
Edit5->Enabled=1; Edit6->Enabled=1;
Label1->Enabled = 1; Label2->Enabled = 1;
Label3->Enabled = 1; Label4->Enabled = 1;
}
if (RadioGroup2->ItemIndex == 0)
RadioGroup1->Enabled = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
Edit2->Enabled=1; Edit3->Enabled=0; Edit4->Enabled=0;
Edit5->Enabled=0; Edit6->Enabled=0;
Label1->Enabled = 0; Label2->Enabled = 0;
Label3->Enabled = 0; Label4->Enabled = 0; }
//---------------------------------------------------------------------------
Документ
Категория
Без категории
Просмотров
120
Размер файла
372 Кб
Теги
практике, отчет, практика
1/--страниц
Пожаловаться на содержимое документа