Проектирование базы данных
⇐ ПредыдущаяСтр 2 из 2
Процесс проектирования БД включает в себя несколько этапов. Для того, чтобы спроектировать структуру БД необходима исходная информация о предметной области. Инфологическая модель строится первая, затем на её основе строится Даталогическая модель. Физическая и внешняя модель после этого могут строится в любой последовательности. Инфологическая модель
Для данной курсовой работы инфологическая модель будет выглядеть следующим образом:
Инфологическая модель
Даталогическая модель
Таблица 1.
Таблица 2.
Распечатки с Database Desktop. ) По кафедрам.
) По факультетам.
Описание команд
В данной курсовой были реализованы следующие команды: . Ввод, запись и удаление данных. Данная команда позволяет нам ввести в базу данных сведения о кафедрах и факультетах и сохранить их, либо удалить. Для реализации данных команд используем компоненту Button и в ее событие OnClick запишем в редакторе кода код программы.
2. Фильтрация и поиск. Данная команда позволяет осуществлять фильтрацию и поиск в базе данных по каким-то конкретным данным. В данном случае фильтрация осуществляется по следующим полям: по Статусу кафедры, по Коду факультета, по Году основания факультета и по Количеству студентов. Поиск осуществляется по Коду факультета и по Сокращенному названию кафедры. Для реализации данных команд используем компоненту RadioGroup и в ее свойстве Items пишем названия полей, по которым будем проводить фильтрацию. Для фильтрации по ученому званию заведующего кафедрой, сокращенному название кафедры и ученой степени декана используем компоненты ComboBox и в свойсве Items компоненты ComboBox пишем ученые звания заведующих, сокращенные названия кафедр и ученые степени деканов. Чтобы провести фильтрацию по количеству студентов используем две компоненты CSpinEdit. В ее свойстве Value первой компоненте CSpinEdit указываем минимальное количество студентов, а во второй компоненте максимальное количество. А также в свойствах MaxValue и MinValue указываем максимальное и минимальное количество студентов. Поиск по полю Код факультета. Для этого используем компоненту Edit. 3. Вывод. Для вывода используем компоненту QuikRep и связываем ее с таблицей с помощью свойства DataSet. Вывод сведений по кафедрам и факультетам осуществляем на отдельных отчетах. Для вывода данных на компаненте ставим компоненту QRSubDetail. На ней ставим компоненту QRDBText. В ее свойстве DataSet указываем нашу таблицу и в свойстве DataField указываем выводимое поле. Программа //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1KetyaKursovaya.h" #include "Unit2.h" #include "Unit3.h" #include "ShellAPI.h" //--------------------------------------------------------------------------- #pragma package(smart_init)
#pragma link "CSPIN" #pragma resource "*.dfm"*Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------__fastcall TForm1::FormCreate(TObject *Sender) {_naim->Text=Table1Poln_naim->AsString;>Text=Table1Status->AsString;_naim->Text=Table1Sokr_naim->AsString;_spec->Text=Table1Vip_spec->AsString;_zav_kaf->Text=Table1FIO_zav_kaf->AsString;_zaved->Text=Table1Step_zaved->AsString;_fac->Text=IntToStr(Table1Kod_fac->AsInteger);_poln->Text=Table2Naim_poln->AsString;_osnovan->Text=IntToStr(Table2God_osnovan->AsInteger);_students->Text=IntToStr(Table2Kol_students->AsInteger);_dekana->Text=Table2FIO_dekana->AsString;_step_dek->Text=Table2Uch_step_dek->AsString;>Text=IntToStr(Table2Ochniki->AsInteger);>Text=IntToStr(Table2Zaochniki->AsInteger);_sokr->Text=Table2Naim_sokr->AsString;_zaved->ItemIndex=CZvanie_zaved->Items->IndexOf(Table1Zvanie_zaved->AsString);_zvanie_dek->ItemIndex=CUch_zvanie_dek->Items->IndexOf(Table2Uch_zvanie_dek->AsString); } //---------------------------------------------------------------------------__fastcall TForm1::Table1AfterScroll(TDataSet *DataSet) {_naim->Text=Table1Poln_naim->AsString;>Text=Table1Status->AsString;_naim->Text=Table1Sokr_naim->AsString;_spec->Text=Table1Vip_spec->AsString;_zav_kaf->Text=Table1FIO_zav_kaf->AsString;_zaved->Text=Table1Step_zaved->AsString;_fac->Text=IntToStr(Table1Kod_fac->AsInteger);_poln->Text=Table2Naim_poln->AsString;_osnovan->Text=IntToStr(Table2God_osnovan->AsInteger);_students->Text=IntToStr(Table2Kol_students->AsInteger);_dekana->Text=Table2FIO_dekana->AsString;_step_dek->Text=Table2Uch_step_dek->AsString;>Text=IntToStr(Table2Ochniki->AsInteger);>Text=IntToStr(Table2Zaochniki->AsInteger);_sokr->Text=Table2Naim_sokr->AsString;_zaved->ItemIndex=CZvanie_zaved->Items->IndexOf(Table1Zvanie_zaved->AsString);_zvanie_dek->ItemIndex=CUch_zvanie_dek->Items->IndexOf(Table2Uch_zvanie_dek->AsString); } //---------------------------------------------------------------------------__fastcall TForm1::Table2AfterScroll(TDataSet *DataSet) {_naim->Text=Table1Poln_naim->AsString;>Text=Table1Status->AsString;_naim->Text=Table1Sokr_naim->AsString;_spec->Text=Table1Vip_spec->AsString;_zav_kaf->Text=Table1FIO_zav_kaf->AsString;_zaved->Text=Table1Step_zaved->AsString;_fac->Text=IntToStr(Table1Kod_fac->AsInteger);_poln->Text=Table2Naim_poln->AsString;_osnovan->Text=IntToStr(Table2God_osnovan->AsInteger);_students->Text=IntToStr(Table2Kol_students->AsInteger);_dekana->Text=Table2FIO_dekana->AsString;_step_dek->Text=Table2Uch_step_dek->AsString;>Text=IntToStr(Table2Ochniki->AsInteger);>Text=IntToStr(Table2Zaochniki->AsInteger);_sokr->Text=Table2Naim_sokr->AsString;_zaved->ItemIndex=CZvanie_zaved->Items->IndexOf(Table1Zvanie_zaved->AsString);_zvanie_dek->ItemIndex=CUch_zvanie_dek->Items->IndexOf(Table2Uch_zvanie_dek->AsString); } //---------------------------------------------------------------------------__fastcall TForm1::Button1Click(TObject *Sender) {->Insert(); } //---------------------------------------------------------------------------__fastcall TForm1::Button4Click(TObject *Sender) {->Insert(); } //---------------------------------------------------------------------------__fastcall TForm1::Button2Click(TObject *Sender) {s;AnsiString s1=",";=" ";(Table1Poln_naim->AsString!=EPoln_naim->Text)="Название кафедры";(Table1Status->AsString!=EStatus->Text)
{(s!=" ")s+=s1;="Статус"; }(Table1Sokr_naim->AsString!=ESokr_naim->Text) {(s!=" ")s+=s1;="Сокращенное название"; }(Table1Vip_spec->AsString!=EVip_spec->Text) {(s!=" ")s+=s1;="Выпускаемая специальность"; }(Table1FIO_zav_kaf->AsString!=EFIO_zav_kaf->Text) {(s!=" ")s+=s1;="ФИО заведующего кафедрой"; }(Table1Step_zaved->AsString!=EStep_zaved->Text) {(s!=" ")s+=s1;="Степень заведующего кафедрой"; }(IntToStr(Table1Kod_fac->AsInteger)!=EKod_fac->Text) {(s!=" ")s+=s1;="Код факультета"; }(Table1Zvanie_zaved->AsString!=CZvanie_zaved->Text) {(s!=" ")s+=s1;="Звание заведующего кафедрой"; }(s!=" ") {(Application->MessageBox( ("Действительно хотите изменить запись?"+s+"?").c_str(), "Подтвердите изменение",_YESNO+MB_ICONQUESTION)==IDYES) {->Edit();Poln_naim->AsString=EPoln_naim->Text;Status->AsString=EStatus->Text;Sokr_naim->AsString=ESokr_naim->Text;Vip_spec->AsString=EVip_spec->Text;FIO_zav_kaf->AsString=EFIO_zav_kaf->Text;Step_zaved->AsString=EStep_zaved->Text;Kod_fac->AsInteger=StrToInt(EKod_fac->Text);Zvanie_zaved->AsString=CZvanie_zaved->Text; } } } //---------------------------------------------------------------------------__fastcall TForm1::Button3Click(TObject *Sender) {(Application->MessageBox( "Действительно хотите удалить запись?", "Подтвердите решение",_YESNO+MB_ICONEXCLAMATION)==IDYES) Table1->Delete(); } //---------------------------------------------------------------------------__fastcall TForm1::Button5Click(TObject *Sender) {s;AnsiString s1=",";=" ";(Table2Naim_poln->AsString!=ENaim_poln->Text)="Название факультета";(IntToStr(Table2God_osnovan->AsInteger)!=EGod_osnovan->Text) {(s!=" ")s+=s1;="Год основания"; }(IntToStr(Table2Kol_students->AsInteger)!=EKol_students->Text) {(s!=" ")s+=s1;="Количество студентов"; }(Table2FIO_dekana->AsString!=EFIO_dekana->Text) {(s!=" ")s+=s1;="ФИО декана"; }(Table2Uch_step_dek->AsString!=EUch_step_dek->Text) {(s!=" ")s+=s1;="Ученое степень декана"; }(IntToStr(Table2Ochniki->AsInteger)!=EOchniki->Text) {(s!=" ")s+=s1;="Очники"; }(IntToStr(Table2Zaochniki->AsInteger)!=EZaochniki->Text) {(s!=" ")s+=s1;="Заочники"; }(Table2Naim_sokr->AsString!=ENaim_sokr->Text) {(s!=" ")s+=s1;="Название сокрощенное"; }(Table2Uch_zvanie_dek->AsString!=CUch_zvanie_dek->Text) {(s!=" ")s+=s1;="Ученое звание декана"; }(s!=" ") {(Application->MessageBox( ("Действительно хотите изменить запись?"+s+"?").c_str(), "Подтвердите изменение",_YESNO+MB_ICONQUESTION)==IDYES) {->Edit();Naim_poln->AsString=ENaim_poln->Text;God_osnovan->AsInteger=StrToInt(EGod_osnovan->Text);Kol_students->AsInteger=StrToInt(EKol_students->Text);FIO_dekana->AsString=EFIO_dekana->Text;Ochniki->AsInteger=StrToInt(EOchniki->Text);Zaochniki->AsInteger=StrToInt(EZaochniki->Text);Naim_sokr->AsString=ENaim_sokr->Text;Uch_step_dek->AsString=EUch_step_dek->Text;Uch_zvanie_dek->AsString=CUch_zvanie_dek->Text;
} } } //---------------------------------------------------------------------------__fastcall TForm1::Button6Click(TObject *Sender) {(Application->MessageBox( "Действительно хотите удалить запись?", "Подтвердите решение",_YESNO+MB_ICONEXCLAMATION)==IDYES) Table2->Delete(); } //---------------------------------------------------------------------------__fastcall TForm1::N4Click(TObject *Sender) {->ActivePage=TabSheet1; } //---------------------------------------------------------------------------__fastcall TForm1::N6Click(TObject *Sender) {->ActivePage=TabSheet2; } //---------------------------------------------------------------------------__fastcall TForm1::RGF1Click(TObject *Sender) {(RGF1->ItemIndex==0)->Filtered=false; {(RGF1->ItemIndex==1)->Filter="Status='"+CBStatus->Text+"'"; {(RGF1->ItemIndex==2)->Filter="(Kod_fac<="+(SEmax1->Value)+")and(Kod_fac>="+(SEmin1->Value)+")";->Filter="Sokr_naim='"+CBSokr_naim->Text+"'";->Filtered=true; } } } //---------------------------------------------------------------------------__fastcall TForm1::CBStatusChange(TObject *Sender) {(RGF1->ItemIndex==0)->Filtered=false; {(RGF1->ItemIndex==1)->Filter="Status='"+CBStatus->Text+"'"; {(RGF1->ItemIndex==2)->Filter="(Kod_fac<="+(SEmax1->Value)+")and(Kod_fac>="+(SEmin1->Value)+")";->Filter="Sokr_naim='"+CBSokr_naim->Text+"'";->Filtered=true; } } } //---------------------------------------------------------------------------__fastcall TForm1::CBSokr_naimChange(TObject *Sender) {(RGF1->ItemIndex==0)->Filtered=false; {(RGF1->ItemIndex==1)->Filter="Status='"+CBStatus->Text+"'"; {(RGF1->ItemIndex==2)->Filter="(Kod_fac<="+(SEmax1->Value)+")and(Kod_fac>="+(SEmin1->Value)+")";->Filter="Sokr_naim='"+CBSokr_naim->Text+"'";->Filtered=true; } } } //---------------------------------------------------------------------------__fastcall TForm1::SEmin1Change(TObject *Sender) {(RGF1->ItemIndex==0)->Filtered=false; {(RGF1->ItemIndex==1)->Filter="Status='"+CBStatus->Text+"'"; {(RGF1->ItemIndex==2)->Filter="(Kod_fac<="+(SEmax1->Value)+")and(Kod_fac>="+(SEmin1->Value)+")";->Filter="Sokr_naim='"+CBSokr_naim->Text+"'";->Filtered=true; } } } //---------------------------------------------------------------------------__fastcall TForm1::SEmax1Change(TObject *Sender) {(RGF1->ItemIndex==0)->Filtered=false; {(RGF1->ItemIndex==1)->Filter="Status='"+CBStatus->Text+"'"; {(RGF1->ItemIndex==2)->Filter="(Kod_fac<="+(SEmax1->Value)+")and(Kod_fac>="+(SEmin1->Value)+")";->Filter="Sokr_naim='"+CBSokr_naim->Text+"'";->Filtered=true; } } } //---------------------------------------------------------------------------__fastcall TForm1::RGF2Click(TObject *Sender) {(RGF2->ItemIndex==0)->Filtered=false; {(RGF2->ItemIndex==1)->Filter="(God_osnovan<="+(SEmax2->Value)+")and(God_osnovan>="+(SEmin2->Value)+")";->Filter="(Kol_students<="+(SEmax3->Value)+")and(Kol_students>="+(SEmin3->Value)+")";->Filtered=true; } } //---------------------------------------------------------------------------__fastcall TForm1::SEmin2Change(TObject *Sender) {(RGF2->ItemIndex==0)->Filtered=false; {(RGF2->ItemIndex==1)->Filter="(God_osnovan<="+(SEmax2->Value)+")and(God_osnovan>="+(SEmin2->Value)+")";->Filter="(Kol_students<="+(SEmax3->Value)+")and(Kol_students>="+(SEmin3->Value)+")";->Filtered=true; } } //---------------------------------------------------------------------------__fastcall TForm1::SEmax2Change(TObject *Sender)
{(RGF2->ItemIndex==0)->Filtered=false; {(RGF2->ItemIndex==1)->Filter="(God_osnovan<="+(SEmax2->Value)+")and(God_osnovan>="+(SEmin2->Value)+")";->Filter="(Kol_students<="+(SEmax3->Value)+")and(Kol_students>="+(SEmin3->Value)+")";->Filtered=true; } } //---------------------------------------------------------------------------__fastcall TForm1::SEmin3Change(TObject *Sender) {(RGF2->ItemIndex==0)->Filtered=false; {(RGF2->ItemIndex==1)->Filter="(God_osnovan<="+(SEmax2->Value)+")and(God_osnovan>="+(SEmin2->Value)+")";->Filter="(Kol_students<="+(SEmax3->Value)+")and(Kol_students>="+(SEmin3->Value)+")";->Filtered=true; } } //---------------------------------------------------------------------------__fastcall TForm1::SEmax3Change(TObject *Sender) {(RGF2->ItemIndex==0)->Filtered=false; {(RGF2->ItemIndex==1)->Filter="(God_osnovan<="+(SEmax2->Value)+")and(God_osnovan>="+(SEmin2->Value)+")";->Filter="(Kol_students<="+(SEmax3->Value)+")and(Kol_students>="+(SEmin3->Value)+")";->Filtered=true; } } //---------------------------------------------------------------------------__fastcall TForm1::Edit1Change(TObject *Sender) {->ItemIndex=0;->FindNearest(&TVarRec(Edit1->Text),0); } //---------------------------------------------------------------------------__fastcall TForm1::N7Click(TObject *Sender) {->ActivePage=TabSheet3; } //---------------------------------------------------------------------------__fastcall TForm1::N9Click(TObject *Sender) {->ActivePage=TabSheet4; } //---------------------------------------------------------------------------__fastcall TForm1::Button7Click(TObject *Sender) {->QuickRep1->Preview(); } //---------------------------------------------------------------------------__fastcall TForm1::Button8Click(TObject *Sender) {->QuickRep1->Print(); } //---------------------------------------------------------------------------__fastcall TForm1::Button9Click(TObject *Sender) {->QuickRep1->Preview(); } //---------------------------------------------------------------------------__fastcall TForm1::Button10Click(TObject *Sender) {->QuickRep1->Print(); } //---------------------------------------------------------------------------__fastcall TForm1::N10Click(TObject *Sender) {->ActivePage=TabSheet5; } //---------------------------------------------------------------------------__fastcall TForm1::N12Click(TObject *Sender) {->ActivePage=TabSheet6; } //---------------------------------------------------------------------------__fastcall TForm1::N13Click(TObject *Sender) {(Handle,"Open","Справка.doc",NULL,NULL,SW_RESTORE); } //--------------------------------------------------------------------------- Модули программы
Данное приложение содержит одну главную форму Form1. Она запускает ряд процедур, которые являются модулями программ. Список процедур:AfterScroll- обеспечивает отображение данных Таблицы1 (“Kaf.db”) в окне редактирования при перемещении по таблице.AfterScroll- обеспечивает отображение данных Таблицы2 (“Fak.db”) в окне редактирования при перемещении по таблице.Click- обеспечивает отображение данных таблиц в окне редактирования при перемещении по таблице с помощью компоненты навигации по базе данных.Click- осуществляет вставку новой кафедры Таблицы 1 (“Kaf. db ”). Button2Click- осуществляет запись новой кафедры Таблицы 1 (“Kaf. db ”).Click- удаляет запись по кафедре в Таблице 1 (“Kaf. db ”).Click- осуществляет вставку нового факультета Таблицы 2 (“Fak. db ”).Click- производит запись нового факультета Таблицы 2 (“Fak. db ”).Click- удаляет запись из Таблицы 2 (“Fak. db ”).Click- выводит отчет QuickRep1 по кафедрам на экран.Click- выводит отчет QuickRep1 по кафедрам на печать.Click- выводит отчет QuickRep1 по факультетам на экран.Click- выводит отчет QuickRep1 по факультетам на печать. RGF1Click- осуществляет фильтрацию Таблицы 1 (“Kaf. db ”). RGF2 Click - осуществляет фильтрацию Таблицы 2 (“Fak. db ”).Change- осуществляет фильтрацию Таблицы2 (“Fak. db ”) по полю Код факультета. CBStatus Change- осуществляет фильтрацию Таблицы1 (“Kaf. db ”) по полю Статус кафедры. CBSokr_naim Change - осуществляет поиск в Таблице1 (“Kaf. db ”) по полю Сокращенное название кафедры. SEmin1 Change - осуществляет фильтрацию Таблицы1(“Kaf. db ”) по полю Код факультета (начиная с минимального значения). SEmax1 Change- осуществляет фильтрацию Таблицы1(“Kaf. db ”) по полю Код факультета (начиная с максимального значения). SEmin2 Change - осуществляет фильтрацию Таблицы2 (“Fak. db ”) по полю Год основания факультета (начиная с минимального значения). SEmax2 Change- осуществляет фильтрацию Таблицы2 (“Fak. db ”) по полю Год основания факультета (начиная с максимального значения). SEmin3 Change - осуществляет фильтрацию Таблицы2 (“Fak. db ”) по полю Количество студентов (начиная с минимального значения). SEmax3 Change- осуществляет фильтрацию Таблицы2 (“Fak. db ”) по полю Количество студентов (начиная с максимального значения). Также использовалась компонента MainMenu, для создания меню с выпадающим списком. В последующем по которому производится перемещения по страницам проекта. Страницы, с которыми произведена связка в MainMenu, именуются, как TabSheet. Вычислительная техника
Вычислительная техника является неотъемлемой частью при разработке любого приложения, с использованием программы C++ Builder. Поэтому правильный выбор компьютера для разработки проекта играет решающую роль, влияющей на качество и время исполнения проекта. Для установки и работы Builder требуется, чтобы компьютер имел следующую минимальную конфигурацию:
Таблица 3.
Для выполнения данного курсового проекта был использован компьютер со следующими параметрами:
Таблица 4.
Заключение
В процессе выполнения данной курсовой работы была разработана базы данных, позволяющей определять состояние кафедр и факультетов Дагестанского государственного технического университета. Разработанная база данных послужила основанием построения автоматизированной системы, именуемой «Система ДГТУ». Построенная автоматизированная система является очень удобной и простой в обращении. Она дает возможность персоналу ДГТУ осуществлять контроль за изменениями, проводимыми в системе университета и самим организовывать эти изменения. Другими словами она позволяет осуществлять добавление, изменение, удаление данных о кафедрах и факультетах, проводить фильтрацию и поиск данных по ним, выводить данные на печать и просматривать отчеты. Для реализации разработанного алгоритма и создания данной базы данных был выбран язык программирования С++ Builder, так как является наиболее подходящим языком программирования, включающим в себя различные универсальные компоненты.
Список литературы 1. А.Я. Архангельский «Программирование в C++Builder 6» 2-изд.-М.: ООО «Бином-Пресс», 2005г. . Курс лекций по дисциплине “Базы данных”.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|