Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Проектирование базы данных




 

Процесс проектирования БД включает в себя несколько этапов. Для того, чтобы спроектировать структуру БД необходима исходная информация о предметной области.

Инфологическая модель строится первая, затем на её основе строится Даталогическая модель. Физическая и внешняя модель после этого могут строится в любой последовательности.

Инфологическая модель

 

Для данной курсовой работы инфологическая модель будет выглядеть следующим образом:

 


Инфологическая модель

 


Даталогическая модель

 

Таблица 1.

Кафедры

Наименование Назначение Тип Размер
1 Poln_naim Название кафедры A 55
2 Sokr_naim Сокращенное название A 15
3 Status Статус кафедры A 30
4 Vip_spec Выпускаемая специальность A 70
5 FIO_zav_kaf ФИО зав. кафедрой A 40
6 Step_zaved Ученая степень заведующего A 30
7 Zvanie_zaved Ученое звание заведующего A 15
8 Kod_fac Код факультета I  

 

Таблица 2.

Факультеты

Наименование Назначение Тип Размер
1 Kod_fac Код факультета I  
2 Naim_poln Название факультета A 55
3 Naim_sokr Сокращенное название A 8
4 FIO_dekana ФИО декана A 40
5 Uch_step_dek Ученая степень декана A 30
6 Uch_zvanie_dek Ученое звание декана A 15
7 Kol_students Количество студентов I  
8 Ochniki Количество очников I  
9 Zaochniki Количество заочников I  
10 God_osnovan Год основания факультета I  

 

Распечатки с 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.

Наименование Характеристики
Процессор (CPU) Pentium 2 300 mhz
Озу (DIMM) 64 Mb
Видеокарта (SVGA) 16 Mb
Блок питания (ATX) 250W
Материнская плата (MB) Любая
Монитор Любой
Клавиатура Genius
Манипулятор Мышь Genius 250 dpi
Принтер Lexmark E232 600/1200/2400 dpi 22 стр/мин
Dvd-rom Не обязательно
Floppy Nec
Операционная система Windows 95 и выше

 

Для выполнения данного курсового проекта был использован компьютер со следующими параметрами:

 

Таблица 4.

Наименование Характеристики
Процессор (CPU) Pentium 4 3000 mhz
Озу (DIMM) 512 Mb Kingston
Видеокарта (SVGA) 256 Mb Palit FX5600
Блок питания (ATX) 350W
Материнская плата (MB) Asus P4P800
Монитор Samsung TFT LCD 1280*1024 17 дюймов
Клавиатура Genius
Манипулятор Мышь Genius 250 dpi
Принтер Canon LASER SHOT LBP 3000
Dvd-rom LG 16/32/48
Floppy Nec
Операционная система Windows XP service pack 2 (build 2006)

 


Заключение

 

В процессе выполнения данной курсовой работы была разработана базы данных, позволяющей определять состояние кафедр и факультетов Дагестанского государственного технического университета. Разработанная база данных послужила основанием построения автоматизированной системы, именуемой «Система ДГТУ».

Построенная автоматизированная система является очень удобной и простой в обращении. Она дает возможность персоналу ДГТУ осуществлять контроль за изменениями, проводимыми в системе университета и самим организовывать эти изменения. Другими словами она позволяет осуществлять добавление, изменение, удаление данных о кафедрах и факультетах, проводить фильтрацию и поиск данных по ним, выводить данные на печать и просматривать отчеты.

Для реализации разработанного алгоритма и создания данной базы данных был выбран язык программирования С++ Builder, так как является наиболее подходящим языком программирования, включающим в себя различные универсальные компоненты.

 


Список литературы

1. А.Я. Архангельский «Программирование в C++Builder 6» 2-изд.-М.: ООО «Бином-Пресс», 2005г.

.   Курс лекций по дисциплине “Базы данных”.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...