">
Информатика ![]() | |||||||||||||||||||||||||||||||||||||||||
Похожие работы:
| |||||||||||||||||||||||||||||||||||||||||
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНСТИТУТ МАТЕМАТИКИ ЕСТЕСТВЕННЫХ НАУК И ИНФОРМАЦОННЫХ ТЕХНОЛОГИЙ КАФЕДРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ КУРСОВАЯ РАБОТА по предмету «Разработка и Стандартизация Программных Средств и Информационных Технологий» на тему: Создание базы данных «Svadba» Выполнила: студент 2 курса специальности «ПИвЭ» группа Руководитель: Тюмень 2012 Постановка задачи: Создание базы данных «Svadba» - информационной системы, упрощающей обслуживание клиентов, покупающих свадебные платья. БД разработана в среде программирования Delphi. Таблицы имеют следующую структуру (структуру полей) Таблица1 Zakaz № Имя поля Тип Поля Размер Назначение 1 Key S Первичный ключ 2 Fio A 60 Имя заказчика 3 Dress S Вторичный ID Таблица 2 Dress 4 Cafe A 60 Название кафе Таблица2 Dress № Имя поля Тип поля Размер Назначение 1 Key S Первичный ключ 2 Dress A 60 Название платьев 3 Cost Money Стоимость платья 4 Color A 60 Цвет платья 5 Material A 60 Материал платья Связь между таблицами (Рис.1 Связь между таблицами): Рис.1 Связь между таблицами Создание таблиц БД в формате Paradox. Создать таблицы Zakaz и Dress в формате PARADOX с помощью Database Desktop. Запустить Database Desktop, зайти в меню File – New – Table (Рис.2 Create Table) Рис.2 Create Table Table type оставить Paradox 7, нажать ОК. Задать структуру полей таблицы (Рис.3 Zakaz.DB) Рис.3 Zakaz.DB После того, как все поля заданы, нажать кнопку Save As, задать имя таблицы Zakaz. Повторить все шаги для таблицы Dress (Рис.4 Dress.DB) Рис.4 Dress.DB Реализация интерфейса БД в Delphi Создание DataModule Создать новый проект Создать невизуальную форму (DataModule, т.е. «модуль данных»), на которой будут располагаться компоненты БД: БД: File – New – DataModule Поставить на форму DataModule компоненты Table1, Table2 Установить свойства: TableName – Zakaz.DB TableName – Dress.DB Рядом с каждой таблицей установить компонент DataSource Установить свойство: Dataset – соответствующая таблица БД Поставить на форму DataModule компоненты Query1, Query2, Query3, Query4, Query5, Query6 Рядом с каждым Query установить компонент DataSource (Рис.5 DataModule) Установить свойство: Dataset – соответствующий Query Рис.5 DataModule Поэтапное описание работы БД Главная форма приложения Рассмотрим функции приложения на главной форме: Таблица Zakaz Установить на форму DBGrid1для отображения таблицы Zakaz Для того чтобы связать Unit1и Unit2: File – Use Unit – Unit2 или командой Alt + F11 Установить свойство: DataSource - DataModule2.DataSource1 Определим обработчик события FormActivate главной формы - Form1: procedure TForm1.FormActivate(Sender: TObject); begin DataModule2.Table1.Filtered:= False; DataModule2.Table1.Active:=True; end; Сортировка Устаносить на форму RadioGroup1, в котором укажем сортировки БД (Рис.6 Сортировка): Caption=’Сортировка’ Items= По ключу По фамилии По платью По кафе Создание Secondary Indexes Запустить Database Desktop, зайти в меню File – Open – Table – Zakaz. Зайти в Table – Restructure и в Table properties выбрать Secondary Indexes, нажать кнопку Define. В открывшемся окне Define Secondary Indexes выбрать поля: Fio, Cafe, Dress. Дать им названия FI, CI, DI. Сохранить изменения нажатием кнопки Save. Определим обработчик события OnClick этого компонента: procedure TForm1.RadioGroup1Click(Sender: TObject); begin Case RadioGroup1.ItemIndex of 0: DataModule2.Table1.IndexName:=; 1: DataModule2.Table1.IndexName:=FI; 2: DataModule2.Table1.IndexName:=DI; 3: DataModule2.Table1.IndexName:=CI; end; end; Рис.6 Сортировка Фильтры Установить на Form1 компонент GroupBox1 (Рис.7 Фильтры). Caption = ’Фильтры’ Возможность фильтрации, т.е. вывода только части записей, соответствующих некоторому условию, например, только по номеру платья, превышающего номер платья указанного пользователем в Edit. Установим на главной форме компонент Button и запишем обработчик его события OnClick: procedure TForm1.Button3Click(Sender: TObject); begin DataModule2.Query1.Filtered:=False; DataModule2.Table1.Filter:=Dress >+chr(39)+Edit10.Text+chr(39); DataModule2.Table1.Filtered:= True; end; Рис.7 Фильтры Поиск записей: Рассмотрим на функции Lookup (Рис.8 Поиск записей). Эта функция находит первую запись, удовлетворяющую критериям поиска, но не делает ее текущей, а возвращает значение указанных полей этой записи. procedure TForm1.Button7Click(Sender: TObject); var LookupRezults:Variant; begin LookupRezults:=DataModule2.Table1.Lookup(Dress,Edit5.Text,Fio); case VarType( LookupRezults) of varEmpty:ShowMessage(Номер не указан); varNull:Showmessage(Запись не найдена) else Showmessage (Фамилия клиента +LookupRezults); end; end; Рис.8 Поиск записей Запросы: Запросы по таблице Zakaz реализуется с помощью следующей формы (Рис.9 Запросы): Рис.9 Запросы Обычный SQL-запрос. Поиск клиента по фамилии или букве, на которую начинается фамилия (Рис.10 Простой SQL-запрос). Текст запроса: procedure TForm9.Button1Click(Sender: TObject); begin DataModule2.Query1.SQL.Text:=select * from Zakaz where Fio like+chr(39)+ % +Edit1.Text+%+chr(39); DataModule2.Query1.Active:=true; Form10.show; end; Рис.10 Простой SQL-запрос Параметрический запрос (Рис.11 Параметрический запрос). Выдает записи соответствующие введенному значению (название кафе). procedure TForm11.FormActivate(Sender: TObject); begin with DataModule2.Query3 do begin Params[0].AsString:=Form9.Edit2.Text; Active:=true; end; Label1.Caption:=Колечство найденных записей = ; Label1.Caption:=Label1.Caption++inttostr(DataModule2.Query3.RecordCount); N_Row:=DataModule2.Query3.RecordCount; end; Select * from Zakaz Where Cafe=:KK Рис.11 Параметрический запрос Агрегатные функции. Подсчитывает среднюю стоимость платья (Рис.11 Агрегатные функции). procedure TForm8.FormShow(Sender: TObject); begin DataModule2.Query5.Active:=true; end; Select AVG(Cost) from Dress Рис.12 Агрегатные функции Действия с таблицей (добавление, редактирование, удаление записей): Добавление Добавление записей в таблице Zakaz реализуется с помощью следующей формы (Рис.13 Добавление): Рис.13 Добавление Загрузить картинку procedure TForm7.Button1Click(Sender: TObject); begin Image1.Visible:=True; If OpenDialog1.Execute then if OpenDialog1.FileName<> then begin Image1.Picture.LoadFromFile(OpenDialog1.FileName); fname:=OpenDialog1.FileName; Clickk:=True end else ShowMessage(Ioeaea n oaeeii); end; Оk procedure TForm7.BitBtn1Click(Sender: TObject); begin If clickk then begin DataModule2.Table1.Append; DataModule2.Table1.FieldByName(ID).AsInteger:= DataModule2.Table1.RecordCount+1; DataModule2.Table1.FieldByName(Fio).AsString:=Edit1.Text; DataModule2.Table1.FieldByName(Dress).AsInteger:= strtoint(label4.Caption); DataModule2.Table1.FieldByName(Cafe).AsString:= Edit3.Text; DataModule2.Table1Foto.LoadFromFile(fname); DataModule2.Table1.Post; Form7.Hide; Form1.Show; end else ShowMessage(Caa?oceoa ecia?a?aiea) end; Выйти без сохранения Form7.Hide; Form1.Show; Справочник (Рис.14 Справочник) Form7.Hide; Form3.Show; DataModule2.Table2.Filtered:= False; DataModule2.Table2.Active:=True; Form3.Button1.Visible:=True; Рис.14 Справочник Удаление и редактирование Удаление и редактирование записей в таблице Zakaz осуществляется с помощью следующих кнопок, под таблицей (Рис.15 Удаление и редактирование): Рис.15 Удаление и редактирование Отображение в Edit procedure TForm1.DBGrid1CellClick(Column: TColumn); begin Edit1.Text:=DataModule2.Table1FIO.Value; Edit2.Text:=DataModule2.Table1Dress.AsString; Edit3.Text:=DataModule2.Table1Cafe.AsString; Image1.Picture:=DBImage1.Picture; end; Удалить текущую запись procedure TForm1.Button11Click(Sender: TObject); begin if MessageDlg(Oaaeeou oaeouo? caienu?,mtConfirmation, [mbYes,mbNo],0)=mrYes then DataModule2.Table1.Delete; end; Изменить procedure TForm1.Button1Click(Sender: TObject); begin Proverka; if flag then begin DataModule2.Table1.Edit; DataModule2.Table1.FieldByName(Fio).AsString:=Edit1.Text; DataModule2.Table1.FieldByName(Dress).AsInteger:=StrToInt(Edit2.Text); DataModule2.Table1.FieldByName(Cafe).AsString:=Edit3.Text; if Image1.Visible=true then DataModule2.Table1Foto.LoadFromFile(fname); DataModule2.Table1.Post; end; DBImage1.Visible:=True; Image1.Visible:=False; end; Сменить картинку procedure TForm1.Button9Click(Sender: TObject); begin if OpenPictureDialog1.Execute then if OpenPictureDialog1.FileName<> then begin fname:=OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile(fName); Image1.Visible:=true; DBImage1.Visible:=false; end; end; COM-технологии: В программе реализован экспорт данных в Microsoft Word и Microsoft Excel (Рис.16 COM-технологии). Рис.16 COM-технологии Программный код реализующий экспорт в MS Word (Рис.17 MS Word): procedure TForm10.Button2Click(Sender: TObject); var c,MyDoc,t:variant; begin WD:=CreateOleObject(Word.Application); WD.Visible:=true; WD.Documents.Add; t:=Wd.Selection; Mydoc:=WD.Documents; t.Font.Bold:=true; T.Font.Size:=20; t.typeText(Iiene eeeaioa ); T.TypePAragraph; t.font.bold:=false; t.font.size:=14; DataModule2.Query1.First; while not DataModule2.Query1.Eof do begin t.typeText(DataModule2.Query1.FieldByName(ID).AsString+ +DataModule2.Query1.FieldByName(Fio).AsString+ +DataModule2.Query1.FieldByName(Dress).AsString+ +DataModule2.Query1.FieldByName(Cafe).AsString); T.TypePAragraph; DataModule2.Query1.Next; end; end; Рис.17 MS Word Программный код, реализующий экспорт в MS Excel (Рис.18 MS Excel): procedure TForm10.Button1Click(Sender: TObject); var i,j:integer; begin XL:=CreateOleObject(Excel.Application); XL.Workbooks.Add; //nicaaiea ?aai?ae eieae XL.WorkBooks[1].Worksheets[1].Name:=Aaoi?u; XL.WorkBooks[1].Worksheets[2].Name:=Aoi?ie eeno; XL.Visible:=true; XL.Workbooks[1].Worksheets[1].Cells[1,1]:=?; XL.Workbooks[1].Worksheets[1].Cells[1,2]:=Eeeaioa; XL.Workbooks[1].Worksheets[1].Cells[1,3]:=Ieaoua; XL.Workbooks[1].Worksheets[1].Cells[1,4]:=Eaoa; XL.Workbooks[1].Worksheets[1].Cells[1,1].font.bold:=true; XL.Workbooks[1].Worksheets[1].Cells[1,2].font.bold:=true; XL.Workbooks[1].Worksheets[1].Cells[1,3].font.bold:=true; XL.Workbooks[1].Worksheets[1].Cells[1,4].font.bold:=true; for j:=1 to 4 do begin DataModule2.Query1.First; for i:=2 to N_Row+1 do begin XL.Workbooks[1].Worksheets[1].Cells[i,j]:=DBGrid1.Columns[j-1].Field.Value; DataModule2.Query1.Next; end; end; end; Рис.18 MS Excel Справочная система В приложение встроена справочная система. При нажатии клавиши F1 вызывается тот раздел справки, который связан с активным в данный момент компонентом (Рис.19 Справочная система). Рис.19 Справочная система |
© 2010–2021 Эссе.рф: Библиотека учебных материалов |