Реферат по предмету "Информатика, программирование"


Реляційна база данних трудової книжки

Міністерство освіти інауки УкраїниФАКУЛЬТЕТ ІНФОРМАТИКИ
КАФЕДРАРеєстраційний №________
Дата ___________________КУРСОВА РОБОТА
Тема:
Реляційна база данних трудової книжкиРекомендована до захисту
“____” __________ 2008р.
Робота захищена
“____” __________ 2008р.
з оцінкою
_____________________
Підписи членів комісії

ЗмістВступТеоріяПрактична частинаВисновкиЛітература

Вступ
Головною задачею нашою роботи є створення програми роботиреляційної БД трудової книжки, причому в якості мови реалізації була вибранамова програмування С++.
Що стосується загальної термінології реляційного підходу, мибудемо активно користуватися відповідними термінами. До таких термінівставляться назви реляційних операцій: селекція, проекція, з'єднання; назвитеоретико-множинних операцій: об'єднання, перетинання, різниця й т.д.

 
 
ТЕОРІЯ
Основні цілі розроблювачів БД можна сформулювати в такий спосіб:
1.        забезпечитиненавігаційний інтерфейс високого рівня користувача із системою, що дозволяєдосягти незалежності даних і дати можливість користувачам працювати максимальноефективно;
2.        забезпечитирізноманіття припустимих способів використання СУБД, включаючи програмувальнітранзакції, діалогові транзакції й генерацію звітів;
3.        підтримуватидинамічно змінюване середовище баз даних, у якій відносини, індекси, подання,транзакції й інші об'єкти можуть легко додаватися й знищуватися без припиненнянормального функціонування системи;
4.        забезпечитиможливість паралельної роботи з однією базою даних багатьох користувачів здопущенням паралельної модифікації об'єктів бази даних при наявності необхіднихзасобів захисту цілісності бази даних;
5.        забезпечитизасобу відновлення погодженого стану баз даних після різного роду збоївапаратури або програмне забезпечення;
6.        забезпечитигнучкий механізм, що дозволяє визначати різні подання збережених даних йобмежувати цими поданнями доступ користувачів до бази даних по вибірці ймодифікації на основі механізму авторизації;
7.        забезпечитипродуктивність системи при виконанні згаданих функцій, порівнянну ізпродуктивністю існуючих СУБД низького рівня (наприклад, ієрархічних абомережних).
Насамперед відзначимо, що в переважній більшості поставленіцілі при розробці System R були досягнуті. Розглянемо тепер, якими засобамибули досягнуті ці мети і як більш точно можна інтерпретувати їх у контекстіSystem R.
Основою System R є реляційна мова SQL. Іноді його називаютьмовою запитів або мовою маніпулювання даними, але насправді його можливостінабагато ширше. Засобами SQL (з відповідною системною підтримкою) вирішуютьсябагато хто з поставлених цілей. Мова SQL включає засобу динамічної компіляціїзапитів, на основі чого можлива побудова діалогових систем обробки запитів.Допускається динамічна параметризація статично відкомпільованих запитів, урезультаті чого можливе побудова ефективних (не потребуючої динамічноїкомпіляції) діалогових систем зі стандартними наборами (параметризуємих)запитів.
Засобами SQL визначаються всі доступні користувачеві об'єктибаз даних: таблиці, індекси, подання. В System R були й засобу для знищення будь-якоготакого об'єкта. Відповідні оператори мови можуть виконуватися в будь-якиймомент, і можливість виконання операції цим користувачем залежить від ранішенаданих йому прав.
Що стосується цілісності баз даних, то в System R підцілісним станом бази даних розуміється стан, що задовольняє набору данихпредикатів, що зберігають при базі, цілісності. Ці предикати, називані в SystemR умовами цілісності (assertions), задаються також засобами мови SQL. Будь-якапропозиція мови виконується в межах деякої транзакції — неподільної в змістістану бази дані послідовності операторів мови. Неподільність означає, що всізміни, зроблені в межах однієї транзакції, або цілком відображаються в станібази даних, або повністю в ньому відсутні. Остання можливість виникає привідкоті транзакції, що може відбутися з ініціативи користувача (при виконаннівідповідного оператора SQL) або з ініціативи системи. Однієї із причин відкотутранзакції з ініціативи системи є саме порушення цілісності бази даних урезультаті дій даної транзакції (інші можливі умови відкоту транзакції зініціативи системи ми розглянемо пізніше). Мова SQL System R містить засібустановки так званих крапок збереження (savepoint). При ініциируємомкористувачем відкоті транзакції можна вказати номер крапки збереження, вищеякої відкіт не поширюється. Ініциіруємий системою відкіт транзакціївиробляється до найближчої крапки збереження, у якій умова, що викликалавідкіт, уже відсутній. Зокрема, відкіт, ініційований через порушення умовицілісності, виробляється до найближчої крапки збереження, у якій умовицілісності дотримані. (Помітимо, що засобу установки крапок збереження відсутнів комерційних розширеннях System R.)
Природно, що для реального виконання відкоту транзакціїнеобхідне запам'ятовування деякої інформації про виконання транзакції. В SystemR для цих й інших цілей використається спеціальний набір даних — журнал, у якиймістяться записи об всіх змініючих стан бази даних операціях всіх транзакцій.При відкоті транзакції відбувається процес зворотного виконання транзакції(undo), у ході якого у зворотному порядку виконуються всі зміни, зафіксовані вжурналі.
У мові SQL є засіб визначення так званих умовних впливів(triggers), що дозволяють автоматично підтримувати цілісність бази даних примодифікаціях її об'єктів. В System R умовний вплив — це каталогізована операціямодифікації, для якої задане умова її автоматичного виконання. Особливо істотнанаявність такого апарата у зв'язку з наявністю розглянутих нижче подань базиданих, який може бути обмежений доступ до бази даних для ряду користувачів.Можлива ситуація, коли такі користувачі просто не можуть дотримувати цілісностібази даних без автоматичного виконання умовних впливів, оскільки вони «небачать» всієї бази даних й, зокрема, не можуть представити всіх обмеженьїї цілісності. Помітимо, що за винятком ранніх публікацій по System Rреалізація механізму умовних впливів ніде не описувалася, хоча в принципіпідходи до реалізації досить зрозумілі. Цей механізм не реалізований укомерційних системах, що виникли на базі System R. Видимо, це пов'язане звиникаючими додатковими непередбаченими для користувачів накладними витратамипри виконанні транзакцій. (Помітимо, що деякі еквівалентні по можливостяхзасобу реалізовані, наприклад, у СУБД Ingres й Oracle, а тепер обговорюєтьсяможливість включення подібних механізмів у наступний стандарт мови SQL — SQL-3.)
Мова SQL містить засобу визначення подань. Подання — іменований запит, що зберігає це в базі даних, на вибірку даних (з однієї абодекількох таблиць). Оскільки SQL — це реляционный мова, то результатомвиконання будь-якого запиту на вибірку є таблиця, і тому концептуально можнаставитися до будь-якого подання як до таблиці (при визначенні подання можна,зокрема, привласнити імена полям цієї таблиці). У мові допускаєтьсявикористання раніше певних подань практично скрізь, де допускаєтьсявикористання таблиць (з деякими обмеженнями із приводу можливостей модифікаціїбази даних через подання). Наявність можливості визначати подання в сукупностіз розвитий системою авторизації дозволяє обмежити доступ деяких користувачів добази даних виділеним набором подань.
Авторизація доступу до бази даних заснована також на засобахSQL. При створенні будь-якого об'єкта бази даних виконуючу цю операціюкористувач стає повновладним власником цього об'єкта, тобто може виконуватистосовно цього об'єкта будь-яку функцію з визначеного набору. Далі цейкористувач може виконати оператор SQL, що робить передачу всіх його прав на цейоб'єкт (або їхньої підмножини) будь-якому іншому користувачеві. Зокрема, цьомукористувачеві може бути передане право на передачу всіх переданих йому прав(або їхньої частини) третьому користувачеві й т.д. Одним із прав користувачастосовно об'єкта є право на вилучення в інших користувачів всіх або деяких прав,які раніше їм були передані. Ця операція поширюється транзитивно на всіхподальших спадкоємців цих прав.
Наявність у мові засобів визначення подань й авторизації впринципі дозволяє обійтися при експлуатації System R без традиційногоадміністратора баз даних, оскільки практично всі системні дії виробляються наоснові засобів SQL. Проте якщо організаційно адміністратор баз даних потрібно,то його робота досить спрощується за рахунок уніфікованого набору засобівкерування. Крім того, в System R каталоги баз даних підтримуються також увигляді таблиць, і до них застосовані всі запити мови SQL. Помітимо, що вкомерційних СУБД з'явився ряд додаткових утиліт, не пов'язаних з мовою SQL(наприклад, утиліти збору статистики або масове завантаження бази даних), і вцих системах, видимо, без адміністратора бази даних не обійтися.
Що стосується забезпечення паралельної роботи багатьохкористувачів з однією базою даних, те основний підхід System R полягає в тому,що користувач не зобов'язаний знати про наявність інших, конкуруючих з ним задоступ до бази даних, користувачів, тобто система відповідальна за забезпеченняізольованості користувачів з гарантією їхнього взаємного невпливу в межахтранзакцій. Із цього треба, по-перше, що в інтерфейсі користувача із системою(тобто в мові SQL) не повинне бути засобів регулювання взаємодій з іншимикористувачами й, по-друге, що система повинна забезпечити автоматичнусериализацию набору транзакцій, тобто забезпечити режим виконання цього наборутранзакцій, еквівалентний за кінцевим результатом деякому послідовномувиконанню цих транзакцій. Ця проблема вирішується в System R за рахунокавтоматичного виконання синхронизационных захватів (багато хто воліютьвикористати термін «блокування») стосовно всім измененяемым об'єктамбази даних. Є ряд тонкостей, пов'язаних з такою синхронізацією, на яких мизупинимося нижче.
Одним з основних вимог до СУБД, взагалі, і до System R,зокрема, є забезпечення надійності баз даних стосовно різного роду збоям. Дотаких збоїв можуть ставитися програмні помилки прикладного й системного рівня,збої процесора, поломки зовнішніх носіїв і т.д. Зокрема, до одному з видівзбоїв можна віднести згадувані вище порушення цілісності бази даних йавтоматичний, ініциіруємий системою відкіт транзакції — це системний засібвідновлення бази даних після збоїв такого роду. Як ми відзначали, відновленнявідбувається шляхом зворотного виконання транзакції на основі інформації провнесені нею змінах, зафіксованих у журналі. На інформації журналу заснованевідновлення бази даних і після збоїв іншого роду. Керування журнализацией івідновленням в System R досить цікаво, застосовувані методи в ряді випадківвідрізняються від методів, використовуваних в інших СУБД.
Що стосується природних вимог до ефективності системи, те тутосновні рішення зв'язані зі специфікою фізичної організації баз даних назовнішній пам'яті, буферизацієй використовуваних сторінок бази даних воперативній пам'яті й розвитий технікою оптимізації запитів, сформульованих наSQL, виробленої на стадії їхньої компіляції.
Структурна організація System R цілком погодиться зпоставленими при її розробці цілями й обраними рішеннями. Основнимиструктурними компонентами System R є система керування реляционной пам'яттю(Relational Storage System — RSS) і компілятор запитів мови SQL. RSS забезпечуєінтерфейс досить низького, але достатнього для реалізації SQL рівня для доступудо збережених даних. Синхронізація транзакцій, журнализация змін і відновленнябаз даних після збоїв також ставляться до числа функцій RSS. Компілятор запитіввикористає інтерфейс RSS для доступу до різноманітної довідкової інформації(каталоги відносин, індексів, прав доступу, умов цілісності, умовних впливів іт.д.) і робить робочі програми, виконувані надалі також з використаннямінтерфейсу RSS. Таким чином, система природно розділяється на два рівні: рівенькерування пам'яттю й синхронізацією, фактично, що не залежить від базової мовизапитів системи, і мовний рівень (рівень SQL), на якому вирішується більшістьпроблем System R. Помітимо, що ця незалежність скоріше умовна, чим абсолютна:мова SQL можна замінити на іншу мову, але він повинен мати приблизно таку жсемантику.
Далі ми послідовно розглянемо особливості організації RSS,процес компіляції й оптимізації запитів і техніку виконання відкомпільованихтранзакцій (включаючи відзначену вище можливість динамічної компіляціїзапитів).

Практична частина Лістінгпрограм
Головний програма БД – ТРУДОВА КНИЖКА.
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include «Unit9.h»
#include «Unit22.h»
#include «Unit23.h»
#include «Unit4.h»
#include «Unit24.h»
#include «Unit27.h»
#include «Unit28.h»
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tzarplata *zarplata;
Tz_nastr *z_nastr;
extern TOKBottomDlg *OKBottomDlg;
extern TForm4 *Form4;
extern Talgo *algo;
//---------------------------------------------------------------------------
__fastcall Tzarplata::Tzarplata(TComponent* Owner)
 : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N9Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_const_nar»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Настроюванняконстантнарахування»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N6Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_vch_stavka_osv»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Ставказаосвітою»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N10Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_vch_visluga»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Надбавказавислугуроків»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N13Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_const_vidr»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Настроюванняконстантвідрахування»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N12Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_likarnyani»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Нарахуваннялікарняних»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N14Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_derzsluz_visluga»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Держслужбовці- вислуга»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N7Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_vch_kateg»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Вчителі- надбавказакатегорію»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N8Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_vch_kruzok»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Вчителі- закружок»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N11Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_vch_perevirkazosh»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Вчителі- перевірказошитів»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N15Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_spivrob_posadi»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Співробітники(інші)- посади»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N16Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_derzsluz_rang»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Держслужбовці- ранг»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N17Click(TObject *Sender)
{
z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_derzsluz_intensiv»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Держслужбовці- інтенсивність»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N18Click(TObject *Sender)
{
z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_derzsluz_premiya»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Держслужбовці- премія»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N3Click(TObject *Sender)
{
Form4->subkid = 22;
Form4->Button4->Enabled=true;
Form4->ShowModal();
vhidzarp->potoch=0;
vhidzarp->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N4Click(TObject *Sender)
{
Form4->subkid = 22;
Form4->Button4->Enabled=true;
Form4->ShowModal();
algo->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N20Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_derzsluz_posada»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Держслужбовці- посади»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N5Click(TObject *Sender)
{
 z_nastr->Table1->Close();
 z_nastr->Table1->TableName =«z_nastr_adm_posadi»;
 z_nastr->Table1->Open();
 z_nastr->Caption = «Співробітники(адміністрація)- посади»;
 z_nastr->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N2Click(TObject *Sender)
{
 z_oper->Show();
}
//---------------------------------------------------------------------------
void __fastcall Tzarplata::N19Click(TObject *Sender)
{
vhidzarp->potoch=1;
vhidzarp->ShowModal();
}
//---------------------------------------------------------------------------
Додаткові модулі для роботи з SQL запитами.
//---------------------------------------------------------------------------
#include
#include
#pragma hdrstop
#include «Unit24.h»
#include «Unit25.h»
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link «wwdblook»
#pragma resource "*.dfm"
Talgo *algo;
extern Tplusalgo *plusalgo;
int activeflag=1;
//---------------------------------------------------------------------------
__fastcall Talgo::Talgo(TComponent* Owner)
 : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall Talgo::Button1Click(TObject *Sender)
{
knopka();
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo1Change(TObject *Sender)
{
if(activeflag){
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add(
«select constanta from z_nastr_vch_stavka_osvwhere id=»+wwDBLookupCombo1->Text
);
Query1->Open();
}
}
//---------------------------------------------------------------------------
void __fastcall Talgo::DBCheckBox1Click(TObject*Sender)
{
Table1->Edit();
if(CheckBox1->Checked){
 Table1->Fields->FieldByName(«isvchitel»)->AsInteger= 1;
 GroupBox1->Visible=true;
 }
else
 {
 Table1->Fields->FieldByName(«isvchitel»)->AsInteger= 0;
 GroupBox1->Visible=false;
 }
Table1->Post();
}
//---------------------------------------------------------------------------
void __fastcall Talgo::FormActivate(TObject *Sender)
{
activeflag=1;
AnsiString x="";
Query21->Close();
Query21->SQL->Clear();
Query21->SQL->Add(
«select content from variables wherevariables.var='subkobid'»
);
Query21->Open();
int skobid =Query21->Fields->FieldByName(«content»)->AsInteger;
Query21->Close();
Query21->SQL->Clear();
Query21->SQL->Add(
«select count(z_algo.id) as cnt fromz_algo,variables where z_algo.skobid=variables.content andvariables.var='subkobid'»
);
Query21->Open();
if(!(Query21->Fields->FieldByName(«cnt»)->AsInteger>0)){
Query21->Close();
Query21->SQL->Clear();
Query21->SQL->Add(
x+«insert into z_algo values(0,»+skobid+",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)"
);
Query21->ExecSQL();
}
//Table1->Close();
Table1->Filtered=false;
Table1->Filter=x+«skobid = „+skobid;
Table1->Filtered=true;
Table1->Open();
Table2->Close();
Table2->Open();
// vchiteli
CheckBox1->Checked =Table1->Fields->FieldByName(“isvchitel»)->AsInteger?true:false;
CheckBox3->Checked =Table1->Fields->FieldByName(«iskategoriya»)->AsInteger? true:false;
CheckBox2->Checked =Table1->Fields->FieldByName(«isnachskgod»)->AsInteger?true:false;
CheckBox4->Checked =Table1->Fields->FieldByName(«isstklasigod»)->AsInteger?true:false;
CheckBox5->Checked =Table1->Fields->FieldByName(«isgpdgod»)->AsInteger?true:false;
CheckBox6->Checked =Table1->Fields->FieldByName(«iskruzok»)->AsInteger?true:false;
CheckBox7->Checked =Table1->Fields->FieldByName(«isklasruk»)->AsInteger?true:false;
CheckBox8->Checked =Table1->Fields->FieldByName(«iskabinet»)->AsInteger?true:false;
CheckBox9->Checked =Table1->Fields->FieldByName(«isproverkatet»)->AsInteger?true:false;
CheckBox10->Checked =Table1->Fields->FieldByName(«ispsiholog»)->AsInteger?true:false;
CheckBox11->Checked =Table1->Fields->FieldByName(«isorganizator»)->AsInteger?true:false;
CheckBox23->Checked =Table1->Fields->FieldByName(«ismuzskola»)->AsInteger?true:false;
//utrimannya
CheckBox12->Checked =Table1->Fields->FieldByName(«isprofsoyuz»)->AsInteger?true:false;
CheckBox13->Checked =Table1->Fields->FieldByName(«islgotnik»)->AsInteger?true:false;
CheckBox14->Checked =Table1->Fields->FieldByName(«ismnogodetmama»)->AsInteger?true:false;
CheckBox15->Checked = Table1->Fields->FieldByName(«isodinokmama»)->AsInteger? true:false;
CheckBox16->Checked =Table1->Fields->FieldByName(«isvdova»)->AsInteger?true:false;
CheckBox17->Checked =Table1->Fields->FieldByName(«isvdovec»)->AsInteger?true:false;
CheckBox18->Checked = Table1->Fields->FieldByName(«isdetiinvalidi»)->AsInteger? true:false;
CheckBox21->Checked =Table1->Fields->FieldByName(«ispens»)->AsInteger?true:false;
//sotrudniki
CheckBox19->Checked =Table1->Fields->FieldByName(«issotrudnik»)->AsInteger?true:false;
RadioButton1->Checked =Table1->Fields->FieldByName(«isadminsotr»)->AsInteger?true:false;
//derzsluzbovci
CheckBox20->Checked =Table1->Fields->FieldByName(«isderzsluzbovec»)->AsInteger?true:false;
}
//---------------------------------------------------------------------------
void __fastcall Talgo::FormClose(TObject *Sender,TCloseAction &Action)
{
activeflag=0;
Table1->Close();
Table2->Close();
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo2Change(TObject *Sender)
{
if(activeflag){
Query2->Close();
Query2->SQL->Clear();
Query2->SQL->Add(
«select constanta from z_nastr_vch_kateg whereid=»+wwDBLookupCombo2->Text
);
Query2->Open();
}
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo3Change(TObject *Sender)
{
if(activeflag){
Query3->Close();
Query3->SQL->Clear();
Query3->SQL->Add(
«select constanta fromz_nastr_vch_perevirkazosh where id=»+wwDBLookupCombo3->Text
);
Query3->Open();
}
}
//---------------------------------------------------------------------------
void Talgo::knopka()
{
AnsiString x="";
vbazu();
Query8->SQL->Clear();
Query8->SQL->Add(" delete fromz_algo_result ");
Query8->ExecSQL();
Query8->SQL->Clear();
Query8->SQL->Add(" insert intoz_algo_result values(1,0,0,0,0)");
Query8->ExecSQL();
//vchiteli
Query4->Close();
Query4->Open();
char buf[30];
sprintf(buf,"%f",Query4->Fields->FieldByName(«res»)->AsFloat);
Query8->SQL->Clear();
Query8->SQL->Add(
x+" update z_algo_result set vchzarp="+buf
);
Query8->ExecSQL();
//sotrudnik inshi
if(Table1->Fields->FieldByName(«issotrudnik»)->AsInteger&& RadioButton2->Checked){
sprintf(buf,"%f",DBText26->Caption.ToDouble() );
Query8->SQL->Clear();
Query8->SQL->Add(
x+" update z_algo_result set spivrobzarp ="+buf
);
Query8->ExecSQL();
}
//sotrudnik admin
if(Table1->Fields->FieldByName(«issotrudnik»)->AsInteger&& RadioButton1->Checked){
sprintf(buf,"%f",Table1->Fields->FieldByName(«admsotrstavka»)->AsFloat* (1+DBText32->Caption.ToDouble()/100));
Query8->SQL->Clear();
Query8->SQL->Add(
x+" update z_algo_result set spivrobzarp ="+buf
);
Query8->ExecSQL();
}
//derzsluzbovec
if(Table1->Fields->FieldByName(«isderzsluzbovec»)->AsInteger){
sprintf(buf,"%f",(DBText15->Caption.ToDouble()+DBText17->Caption.ToDouble())*(1+DBText19->Caption.ToDouble()/100+DBText21->Caption.ToDouble()/100+DBText29->Caption.ToDouble()/100));
Query8->SQL->Clear();
Query8->SQL->Add(
x+" update z_algo_result set derzsluzzarp ="+buf
);
Query8->ExecSQL();
}
//utrimano
if(wwDBLookupCombo6->Text.ToInt() == 1 ){
 Query9->Close();
 Query9->Open();
sprintf(buf,"%f",Query9->Fields->FieldByName(«res»)->AsFloat);
}
if(wwDBLookupCombo6->Text.ToInt() == 2 ){
 Query16->Close();
 Query16->Open();
sprintf(buf,"%f",Query16->Fields->FieldByName(«res»)->AsFloat);
}
Query8->SQL->Clear();
Query8->SQL->Add(
x+" update z_algo_result set utrim="+buf
);
Query8->ExecSQL();
Query10->Close();
Query10->Open();
}
void Talgo::vbazu(){
 Table1->Refresh();
 Table1->Edit();
// uchiteli
Table1->Fields->FieldByName(«iskategoriya»)->AsInteger= CheckBox3->Checked;
Table1->Fields->FieldByName(«isnachskgod»)->AsInteger= CheckBox2->Checked? 1:0;
Table1->Fields->FieldByName(«isstklasigod»)->AsInteger= CheckBox4->Checked? 1:0;
Table1->Fields->FieldByName(«isgpdgod»)->AsInteger= CheckBox5->Checked? 1:0;
Table1->Fields->FieldByName(«iskruzok»)->AsInteger= CheckBox6->Checked? 1:0;
Table1->Fields->FieldByName(«isklasruk»)->AsInteger= CheckBox7->Checked? 1:0;
Table1->Fields->FieldByName(«iskabinet»)->AsInteger= CheckBox8->Checked? 1:0;
Table1->Fields->FieldByName(«isproverkatet»)->AsInteger= CheckBox9->Checked? 1:0;
Table1->Fields->FieldByName(«ispsiholog»)->AsInteger= CheckBox10->Checked? 1:0;
Table1->Fields->FieldByName(«isorganizator»)->AsInteger= CheckBox11->Checked? 1:0;
Table1->Fields->FieldByName(«ismuzskola»)->AsInteger= CheckBox23->Checked? 1:0;
//sotr
Table1->Fields->FieldByName(«isadminsotr»)->AsInteger= RadioButton1->Checked? 1:0;
// urtimannya
Table1->Fields->FieldByName(«isprofsoyuz»)->AsInteger=CheckBox12->Checked? 1:0;
Table1->Fields->FieldByName(«islgotnik»)->AsInteger=CheckBox13->Checked? 1:0;
Table1->Fields->FieldByName(«ismnogodetmama»)->AsInteger=CheckBox14->Checked? 1:0;
Table1->Fields->FieldByName(«isodinokmama»)->AsInteger=CheckBox15->Checked? 1:0;
Table1->Fields->FieldByName(«isvdova»)->AsInteger=CheckBox16->Checked? 1:0;
Table1->Fields->FieldByName(«isvdovec»)->AsInteger=CheckBox17->Checked? 1:0;
Table1->Fields->FieldByName(«isdetiinvalidi»)->AsInteger=CheckBox18->Checked? 1:0;
Table1->Fields->FieldByName(«ispens»)->AsInteger=CheckBox21->Checked? 1:0;
 Table1->Post();
}
void __fastcall Talgo::CheckBox3Click(TObject*Sender)
{
vbazu();
}
//---------------------------------------------------------------------------
void __fastcall Talgo::wwDBLookupCombo4Change(TObject*Sender)
{
 if(activeflag){
Query5->Close();
Query5->SQL->Clear();
Query5->SQL->Add(
«select constanta from z_nastr_vch_klasrukwhere id=»+wwDBLookupCombo4->Text
);
Query5->Open();
}
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo5Change(TObject *Sender)
{
if(activeflag){
Query6->Close();
Query6->SQL->Clear();
Query6->SQL->Add(
«select constanta from z_nastr_vch_vislugawhere id=»+wwDBLookupCombo5->Text
);
Query6->Open();
}
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo6Change(TObject *Sender)
{
if(activeflag){
Query7->Close();
Query7->SQL->Clear();
Query7->SQL->Add(
«select constanta from z_nastr_sposobpensfondwhere id=»+wwDBLookupCombo6->Text
);
Query7->Open();
}
}
//---------------------------------------------------------------------------
void __fastcall Talgo::Button2Click(TObject *Sender)
{
vbazu();
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo7Change(TObject *Sender)
{
if(activeflag){
Query11->Close();
Query11->SQL->Clear();
Query11->SQL->Add(
«select constanta,znach from z_nastr_adm_posadiwhere id=»+wwDBLookupCombo7->Text
);
Query11->Open();
}
}
//---------------------------------------------------------------------------
void __fastcall Talgo::CheckBox19Click(TObject*Sender)
{
Table1->Edit();
if(CheckBox19->Checked){
 Table1->Fields->FieldByName(«issotrudnik»)->AsInteger= 1;
 GroupBox18->Visible=true;
 }
else
 {
 Table1->Fields->FieldByName(«issotrudnik»)->AsInteger= 0;
 GroupBox18->Visible=false;
 }
Table1->Post();
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo8Change(TObject *Sender)
{
if(activeflag){
Query12->Close();
Query12->SQL->Clear();
Query12->SQL->Add(
«select constanta,znach from z_nastr_derzsluz_posadawhere id=»+wwDBLookupCombo8->Text
);
Query12->Open();
}
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo9Change(TObject *Sender)
{
if(activeflag){
Query13->Close();
Query13->SQL->Clear();
Query13->SQL->Add(
«select constanta,znach fromz_nastr_derzsluz_rang where id=»+wwDBLookupCombo9->Text
);
Query13->Open();
}
}
//---------------------------------------------------------------------------
void __fastcall Talgo::CheckBox20Click(TObject*Sender)
{
Table1->Edit();
if(CheckBox20->Checked){
 Table1->Fields->FieldByName(«isderzsluzbovec»)->AsInteger= 1;
 GroupBox20->Visible=true;
 }
else
 {
 Table1->Fields->FieldByName(«isderzsluzbovec»)->AsInteger= 0;
 GroupBox20->Visible=false;
 }
Table1->Post();
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo10Change(TObject *Sender)
{
if(activeflag){
Query14->Close();
Query14->SQL->Clear();
Query14->SQL->Add(
«select constanta,znach fromz_nastr_derzsluz_intensiv where id=»+wwDBLookupCombo10->Text
);
Query14->Open();
}
}
//---------------------------------------------------------------------------
void __fastcall Talgo::wwDBLookupCombo11Change(TObject*Sender)
{
if(activeflag){
Query15->Close();
Query15->SQL->Clear();
Query15->SQL->Add(
«select constanta,znach fromz_nastr_derzsluz_premiya where id=»+wwDBLookupCombo11->Text
);
Query15->Open();
}
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo13Change(TObject *Sender)
{
 if(activeflag){
Query17->Close();
Query17->SQL->Clear();
Query17->SQL->Add(
«select constanta,znach from z_nastr_vch_vislugawhere id=»+wwDBLookupCombo13->Text
);
Query17->Open();
}
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo12Change(TObject *Sender)
{
 if(activeflag){
Query18->Close();
Query18->SQL->Clear();
Query18->SQL->Add(
«select a.constanta, a.znach,greatest(a.znach,b.znach) as superznach from z_nastr_spivrob_posadia,z_nastr_const_nar b where a.id=»+wwDBLookupCombo12->Text+
" and b.id=1 "
);
Query18->Open();
}
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo14Change(TObject *Sender)
{
if(activeflag){
Query19->Close();
Query19->SQL->Clear();
Query19->SQL->Add(
«select constanta,znach fromz_nastr_derzsluz_visluga where id=»+wwDBLookupCombo14->Text
);
Query19->Open();
}
}
//---------------------------------------------------------------------------
void __fastcallTalgo::wwDBLookupCombo15Change(TObject *Sender)
{
 if(activeflag){
Query20->Close();
Query20->SQL->Clear();
Query20->SQL->Add(
«select constanta,znach from z_nastr_likarnyaniwhere id=»+wwDBLookupCombo15->Text
);
Query20->Open();
}
}
//---------------------------------------------------------------------------

Робота з програмою
Головне вікно управління персоналом
/>
Вікно введення та редагування персональних даних
/>
Всі листинги а також приклади роботи програми знаходяться надискеті
Висновки
Основні ідеї сучасної інформаційноїтехнології базуються на концепції, відповідно до якої дані повинні бутиорганізовані в бази даних з метою адекватного відображення реального миру, щозмінюється, і задоволення інформаційних потреб користувачів. Ці бази данихстворюються й функціонують під керуванням спеціальних програмних комплексів,називаних системами керування базами даних (СУБД).
Збільшення обсягу й структурноїскладності збережених даних, розширення кола користувачів інформаційних системпривели до широкого поширення найбільш зручних і порівняно простих длярозуміння реляційних (табличних) СУБД. Для забезпечення одночасного доступу до данихбезлічі користувачів, нерідко розташованих досить далеко друг від друга й відмісця зберігання баз даних, створені мережні версії СУБД. У них тим або іншимшляхом вирішуються специфічні проблеми паралельних процесів, цілісності(правильності) і безпеки даних, а також санкціонування доступу.

Література
1.        Дейт К.Руководство по реляционной СУБД DB2. — М.: Финансы и статистика, 1988. — 320 с.
2.        КирилловВ.В. Основы проектирования реляционных баз данных. Учебное пособие. — СПб.:ИТМО, 1994. — 90 с.
3.        Мейер М.Теория реляционных баз данных. -М.: Мир, 1987. — 608 с.
4.        УльманДж. Базы данных на Паскале. -М.: Машиностроение, 1990. — 386 с.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :