Розміри відсоткових ставок по кредитам в комерційних банках міста Ужгорода з використанням InterBase

Інформація про навчальний заклад

ВУЗ:
Ужгородський національний університет
Інститут:
Не вказано
Факультет:
Інженерно технічний
Кафедра:
Не вказано

Інформація про роботу

Рік:
2013
Тип роботи:
Курсова робота
Предмет:
Основи баз даних

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ Ужгородський національний університет Інженерно-технічний факультет Кафедра Комп’ютерних систем та мереж КУРСОВА РОБОТА з дисципліни “Основи баз даних” на тему: Розміри відсоткових ставок по кредитам в комерційних банках міста Ужгорода з використанням InterBase Зміст Вступ 3 Розділ І. Теоретичні відомості. 4 1.1.Поняття бази даних 4 1.2.Еволлюція баз данних 5 1.3.Архітектура «Клієнт-Сервер» 6 1.4.Створення таблиць за допомогою SQL-запитів в IBConsole 7 Розділ ІІ. Проектування баз даних 11 2.1. Постановка задачі на розробку програми 11 Висновок 14 Додаток 15 Текст основного модуля 15 Перелік використаної літератури 25 Вступ Основні ідеї сучасної інформаційної технології базуються на концепції баз даних (БД). Відповідно до даної концепції основою інформаційної технології є дані, організовані в БД, що адекватно відбивають реалії дійсності в тій або іншій предметній області, і які забезпечують користувача актуальною інформацією у відповідній предметній області. Основне призначення системи управління базами даних (скорочено – СУБД) — створення та підтримка в актуальному стані бази даних, а також зв'язок її з програмами розв'язування завдань (прикладні програми користувачів). У світі існує безліч СУБД. Незважаючи на те, що вони можуть по-різному працювати з різними об'єктами і надають користувачу різні функції й засоби, більшість СУБД спираються на єдиний устояний комплекс основних понять. Це дає нам можливість розглянути одну систему й узагальнити її поняття, прийоми й методи на весь клас СУБД. Система управління базами даних (СУБД) поєднує відомості з різних джерел в одній реляційній базі даних. Створювані форми, запити і звіти дозволяють швидко й ефективно обновляти дані, отримувати відповіді на питання, здійснювати пошук потрібних даних, аналізувати дані, друкувати звіти, діаграми і поштові наклейки. Розділ І. Теоретичні відомості. Поняття бази даних Відомі два підходи до організації інформаційних масивів: файлова організація та організація у вигляді бази даних. Файлова організація передбачає спеціалізацію та збереження інформації, орієнтованої, як правило, на одну прикладну задачу, та забезпечується прикладним програмістом. Така організація дозволяє досягнути високої швидкості обробки інформації, але характеризується рядом недоліків. Характерна риса файлового підходу - вузька спеціалізація як обробних програм, так і файлів даних, що служить причиною великої надлишковості, тому що ті самі елементи даних зберігаються в різних системах. Оскільки керування здійснюється різними особами (групами осіб), відсутня можливість виявити порушення суперечливості збереженої інформації. Розроблені файли для спеціалізованих прикладних програм не можна використовувати для задоволення запитів користувачів, які перекривають дві і більше області. Крім того, файлова організація даних внаслідок відмінностей структури записів і форматів передання даних не забезпечує виконання багатьох інформаційних запитів навіть у тих випадках, коли всі необхідні елементи даних містяться в наявних файлах. Тому виникає необхідність відокремити дані від їхнього опису, визначити таку організацію збереження даних з обліком існуючих зв'язків між ними, яка б дозволила використовувати ці дані одночасно для багатьох застосувань. Вказані причини обумовили появу баз даних. База даних може бути визначена як структурна сукупність даних, що підтримуються в активному стані та відображає властивості об'єктів зовнішнього (реального) світу. В базі даних містяться не тільки дані, але й описи даних, і тому інформація про форму зберігання вже не схована в сполученні "файл-програма", вона явним чином декларується в базі. База даних орієнтована на інтегровані запити, а не на одну програму, як у випадку файлового підходу, і використовується для інформаційних потреб багатьох користувачів. В зв'язку з цим бази даних дозволяють в значній мірі скоротити надлишковість інформації. Перехід від структури БД до потрібної структури в програмі користувача відбувається автоматично за допомогою систем управління базами даних (СУБД). Еволлюція баз данних Пpостi файли. Хаpактеpизується послiдовною оpганiзацiєю фiзичних даних. - оpiєнтацiя на одне застосування; - високий piвень надлишковостi; - вiдсутня незалежнiсть; - забезпечується тiльки ввiд/вивiд даних без поточної їх обpобки; - цiлiснiсть та захист вiдсутнi; - пpацює тiльки в пакетному pежимi; Файловi системи з типовими методами доступу. Хаpактеpизується набоpами даних з послiдовним чи пpямим доступом. - пеpеважна оpiєнтацiя на одне застосування; - значний piвень надлишковостi; - iнфоpмацiю на носiях можна змiнювати без змiни пpикладних пpогpам; - пpисутнi типовi методи доступу з piзними механiзмами адpесацiї; - низька надiйнiсть системи; - дозволяється pобота в pеальному часi та опеpативна обpобка даних; Пеpшi СУБД. - багато застосувань; - мiнiмальна надлишковiсть; - незалежнiсть фiзичної стpуктуpи даних вiд пpикладних пpогpам; - забезпечуються piзнi шляхи доступу до одних i тих же даних для piзних застосувань; адpесацiя на piвнi полiв та гpуп; пошук по багатьом ключам; - пiдтpимка цiлiсностi та захисту; Сучаснi СУБД. - логiчна та фiзична незалежнiсть даних; - пiдтpимка шиpокого дiапазону мов пpогpамування piзного пpизначення; - високий piвень iнтеpфейсу; Архітектура «Клієнт-Сервер» Курсова робота була розроблена на сервері InterBase. Пояснити цей вибір неважко: InterBase – «рідний» сервер для Delphi (тому для доступа до нього непотрібно встановлювати додаткові драйвери SQL Links, які необхідні при роботі програм, написаних на Delphi, із інших СУБД). В Delphi входить локальний сервер IB SQL-сервер IB являється «промисловою» СУБД, призначена для зберігання і видачі великих об’ємів даних при використанні архітектури «клієнт-сервер» в умовах одночасної робот из БД великої кількості клієнтських програм. Для задання посилальної і змістової цілісності в БД визначаються: Відношення підпорядкованості між таблицями БД шляхом визначення первинних(PRIMARY) ключів у батьківських і зовнішніх(FOREIGN) ключів у дочірніх таблицях. Бізнес-правила за допомогою тригерів (TRIGGER) – підпрограм, автоматично виконуємих сервером до і(або) після події зміни запису в таблиці БД. Унікальні значення необхідних полів шляхом створення і використовування генератора(GENERATOR). Деякі технічні характеристики сервера (К -1024 байта) Характеристика Значення  Максимальний розмір одної БД Рекомендуется не выше 10 Гбайт. Однако известны случаи объема одной БД в 10-20 Гбайт  Максимальне число таблиць в одній БД 65,536  Максимальне число полів в одній таблиці 1000  Максимальна кількість записів в одній таблиці Не ограничено  Максимальна довжина запису 64 К (не считая полей BLOB)  Максимальна довжина поля 32 К (кроме полей BLOB)  Максимальна довжина поля BLOB Не ограничена  Максимальне число індексів в БД 65,536  Максимальное число полей в индексе 16  Максимальна кількість вложеності SQL-запита 16  Створення таблиць за допомогою SQL-запитів в IBConsole Середовище IBconsole широко використовується для програмування баз даних. Найчастіше, бази даних як певний підбір даних, організовані за допомогою таблиць. В реляційних базах даних таблиці представляють інформацію про об”єкти одного типу. Одиницею таблиці є запис, що містить декілька полів. Головне вікно програми має наступний вигляд:  Створювати таблиці в IBConsole, проводити їх модифікацію та отримувати з них дані можна, зокрема, через написання на мові SQL (Structured Query Language) запитів. Основними групами операторів SQL є оператори визначення даних та оператори маніпулювання даними. Оператори визначення даних дозволяють створювати і видаляти таблиці, змінювати визначення таблиць і додавати правила цілостності. Створення таблиць. CREATE TABLE "MAIN" ( "N" VARCHAR(30) CHARACTER SET WIN1251, "FAM" VARCHAR(100) CHARACTER SET WIN1251, "NAME" VARCHAR(100) CHARACTER SET WIN1251, "POB" VARCHAR(100) CHARACTER SET WIN1251, "TYPEKR" VARCHAR(12) CHARACTER SET WIN1251, "PLASE" VARCHAR(100) CHARACTER SET WIN1251, "STREET" VARCHAR(100) CHARACTER SET WIN1251, "BUD" VARCHAR(10) CHARACTER SET WIN1251, "KV" VARCHAR(10) CHARACTER SET WIN1251, "TEL" VARCHAR(100) CHARACTER SET WIN1251, "IDNUM" VARCHAR(30) CHARACTER SET WIN1251, "STAVKA" DOUBLE PRECISION, "KRED" DOUBLE PRECISION, "TERMIN" INTEGER, "DATAOF" VARCHAR(30) CHARACTER SET WIN1251, "DATAZAK" VARCHAR(30) CHARACTER SET WIN1251, "PASPORT" VARCHAR(30) CHARACTER SET WIN1251, "ZASTAVA" VARCHAR(100) CHARACTER SET WIN1251, "CINAZASTAVU" VARCHAR(100) CHARACTER SET WIN1251, "MONTHS" INTEGER, "BANKTYPE" VARCHAR(100) CHARACTER SET WIN1251, "SUMASPLAT" INTEGER ); При запуску цього запиту створюється таблиця з ім’ям main, в якій є поля N,FAM,NAME,POB,TYPEKR,PLASE,STREET,BUD,KV,TEL,IDNUM,STAVKA,KRED,TERMIN,DATAOF, DATAZAK,PASPORT,ZASTAVA,CINAZASTAVU,MONTHS,SUMASPLAT,BANKTYPE текстового типу. Вилучення таблиць. SQL DROP TABLE main При запуску цього запиту таблиця main знищується. Оператори маніпулювання даними використовуються для видалення, додавання та пошуку записів в таблицях. Додавання записів. Щойно створену таблицю students можна заповнити даними. INSERT INTO main (id,name,surname) VALUES (‘00000001’, Будник’,’Андрій’,……) Інструкція VALUES вставляє в таблицю main один рядок, параметри VALUES: VALUES (‘00000001’, Будник’,’Андрій’,……)записуються у відповідні поля таблиці.  Модифікація даних. UPDATE main SET lastname=”Іванович” Пошук даних. Вибір даних з таблиці здійснюється за допомогою інструкції SELECT. SELECT * FROM main,income,free WHERE main.N=income.N and main.N=free.N and main.name =’ Іванович’ Для виконання всіх попередніх вправ було використано IBConsole, але все це можна зробити і за допомогою елемента керування TQuery в програмах, написаних на Delphi. Друга таблиця по «Поручителях»  Розділ ІІ. Проектування баз даних 2.1. Постановка задачі на розробку програми Дана програма створена для полегшення та автоматизації роботи по наданню кредитів в комерційних банках. База даних легко коригується і може розширюватися простим додаванням позичальників, типів кредитів, відсоткових ставок,поручителів і т.д. Програма дуже зручна і легка у застосуванні. Завдяки ній легко можна знайти дані які стосуються даного позичальника, ….. 2.3. Деякі форми програми Вигляд пронрами :  Вибравши пункт «Оформити кредит»:  Вибравши “Застава”, бачимо:  Вибравши “Поручитель”, бачимо:  Встановивши курсор на таблиці БД на буть якого позичальника , якщо він має поручителя то будуть виведені данні про нього. Спільним полем є ‘Щомісячний внесок’. Висновок На даній курсовій роботі я набув навичок у програмуванні в Delphi 7 з використанням SQL-запитів, а також з використанням InterBase. Основним завдання було розробити програму «Оформлення кркдитів». Дана програма може бути використана в Банках. Зміна даних в БД проводиться легко і користувачу непотрібно знати принцип роботи програми. Меню має інтуїтивно зрозумілий вигляд, що полегшує користування цією програмою. Додаток Текст основного модуля unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IBQuery, Grids, DBGrids, DB, IBCustomDataSet, IBDatabase, ExtCtrls, DBCtrls,unit2, StdCtrls, Menus; type TForm1 = class(TForm) IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; DBGrid1: TDBGrid; DataSource1: TDataSource; Button1: TButton; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; EXIT1: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; N12: TMenuItem; N13: TMenuItem; N14: TMenuItem; N15: TMenuItem; N16: TMenuItem; Image1: TImage; Image2: TImage; IBQuery1: TIBQuery; Label1: TLabel; IBQuery2: TIBQuery; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Bevel1: TBevel; Label21: TLabel; Label22: TLabel; Label23: TLabel; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure N12Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure DBGrid1CellClick(Column: TColumn); private { Private declarations } public { Public declarations } end; var Form1: TForm1; curdate: string; implementation uses Unit4; {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin //ibtransaction1.Active:=true; curdate:=DateToStr(Date); end; procedure TForm1.Button1Click(Sender: TObject); begin form2.Visible:=true; end; procedure TForm1.N12Click(Sender: TObject); begin form1.Visible:=false end; procedure TForm1.N10Click(Sender: TObject); begin if image1.Visible=false then image1.Visible:=true else image2.Visible:=false end; procedure TForm1.N11Click(Sender: TObject); begin if image2.Visible=false then image2.Visible:=true else image1.Visible:=false end; procedure TForm1.N16Click(Sender: TObject); begin Form4.visible:=True end; procedure TForm1.DBGrid1CellClick(Column: TColumn); var n: integer; fam,name,pob,num,obl,plase,street,bud,kv,tel,pasport,sumaspl:string; begin n:=dbgrid1.SelectedIndex; dbgrid1.SelectedIndex:=0; num:=dbgrid1.SelectedField.AsString; dbgrid1.SelectedIndex:=n; ibquery2.Active:=false; ibquery2.SQL.Text:='select * from por where N='+#39+num+#39; ibquery2.Active:=true; fam:=ibquery2.FieldByName('fam').AsString; if fam<>'' then begin label1.Visible:=true; label2.Visible:=true; label3.Visible:=true; label4.Visible:=true; label5.Visible:=true; label6.Visible:=true; label7.Visible:=true; label8.Visible:=true; label9.Visible:=true; label10.Visible:=true; label11.Visible:=true; label12.Visible:=true; label13.Visible:=true; label14.Visible:=true; label15.Visible:=true; label16.Visible:=true; label17.Visible:=true; label18.Visible:=true; label19.Visible:=true; label20.Visible:=true; label21.Visible:=true; fam:=ibquery2.FieldByName('fam').AsString; name:=ibquery2.FieldByName('name').AsString; pob:=ibquery2.FieldByName('pob').AsString; obl:=ibquery2.FieldByName('obl').AsString; plase:=ibquery2.FieldByName('plase').AsString; street:=ibquery2.FieldByName('street').AsString; bud:=ibquery2.FieldByName('bud').AsString; kv:=ibquery2.FieldByName('kv').AsString; tel:=ibquery2.FieldByName('tel').AsString; pasport:=ibquery2.FieldByName('pasport').AsString; label1.Caption:=fam; label2.Caption:=name; label3.Caption:=pob; label4.Caption:=obl; label5.Caption:=plase; label6.Caption:=street; label7.Caption:=bud; label8.Caption:=kv; label9.Caption:=tel; label10.Caption:=pasport; end else begin label1.Visible:=false; label2.Visible:=false; label3.Visible:=false; label4.Visible:=false; label5.Visible:=false; label6.Visible:=false; label7.Visible:=false; label8.Visible:=false; label9.Visible:=false; label10.Visible:=false; label11.Visible:=false; label12.Visible:=false; label13.Visible:=false; label14.Visible:=false; label15.Visible:=false; label16.Visible:=false; label17.Visible:=false; label18.Visible:=false; label19.Visible:=false; label20.Visible:=false; label21.Visible:=false; end; ibquery2.Active:=false; ibquery2.SQL.Text:='select sumasplat from main where N='+#39+num+#39; ibquery2.Active:=true; label23.Caption:=ibquery2.fieldbyname('sumasplat').AsString; end; end. Unit – 2 unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, IBCustomDataSet, IBDatabase, IBQuery; type TForm2 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; ComboBox1: TComboBox; ComboBox2: TComboBox; Label5: TLabel; Label6: TLabel; Edit5: TEdit; Label7: TLabel; Label8: TLabel; Edit7: TEdit; Edit6: TEdit; Edit8: TEdit; Label9: TLabel; Edit9: TEdit; Label10: TLabel; Edit10: TEdit; Edit11: TEdit; Edit12: TEdit; Edit13: TEdit; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Edit14: TEdit; Label15: TLabel; ComboBox3: TComboBox; Label16: TLabel; RadioGroup1: TRadioGroup; Button1: TButton; Button2: TButton; Edit15: TEdit; Edit16: TEdit; Label17: TLabel; Label18: TLabel; Button3: TButton; DataSource1: TDataSource; IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; IBQuery1: TIBQuery; procedure Button2Click(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; Form3: TForm2; implementation uses Unit1; {$R *.dfm} procedure TForm2.Button2Click(Sender: TObject); begin form3:=Tform2.Create(nil); form3.Edit1.Destroy; form3.Label1.Destroy; form3.Label5.Destroy; form3.ComboBox1.Destroy; form3.ComboBox2.Destroy; form3.ComboBox3.Destroy; form3.Label6.Destroy; form3.Edit5.Destroy; form3.Edit6.Destroy; form3.Edit7.Destroy; form3.Edit8.Destroy; form3.Label7.Destroy; form3.Label8.Destroy; form3.Label9.Destroy; form3.Label16.Destroy; form3.RadioGroup1.Destroy; form3.Button2.Destroy; form3.Edit2.Top:=form3.Edit2.Top; form3.Button3.Visible:=true; form3.Button1.Visible:=false; form3.Visible:=true; end; procedure TForm2.RadioGroup1Click(Sender: TObject); begin if radiogroup1.ItemIndex = 1 then begin button2.Visible:=true; edit15.Visible:=false; edit16.Visible:=false; Label17.Visible:=false; Label18.Visible:=false; end else if radiogroup1.ItemIndex = 0 then begin button2.Visible:=false; Edit15.Visible:=true; Label17.Visible:=true; Label18.Visible:=true; edit16.Visible:=true; end; end; procedure TForm2.Button1Click(Sender: TObject); var summa:integer; summaS:string; begin summa:= Round(((StrToFloat(edit7.Text)/100)* StrToFloat(edit5.Text)*(StrToInt(edit6.Text)/12) + StrToFloat(edit7.Text))/StrToInt(edit6.Text)); //summa:= Round(((StrToFloat(edit7.Text)* StrToFloat(edit5.Text)/100)+ StrToFloat(edit7.Text))/ StrToInt(edit6.Text)) SummaS:=IntToStr(summa); ibquery1.Active:=false; ibquery1.SQL.Text:='insert into main (N,fam,name,pob,typekr,STAVKA,termin,kred,dataof,pasport,plase,street,bud,kv,tel,banktype,sumasplat) values('+#39+edit1.Text+#39+','+#39+edit2.Text+#39+','+#39+edit3.Text+#39+','+#39+edit4.Text+#39+','+#39+combobox1.Text+','+combobox2.Text+#39+','+#39+edit5.Text+#39+','+#39+edit6.Text+#39+','+#39+edit7.Text+#39+','+#39+edit8.Text+#39+','+#39+edit9.Text+#39+','+#39+edit10.Text+#39+','+#39+edit11.Text+#39+','+#39+edit12.Text+#39+','+#39+edit13.Text+#39+','+#39+edit14.Text+#39+','+#39+combobox3.Text+#39+','+#39+summaS+#39+')'; ibquery1.Active:=true; IBTransaction1.CommitRetaining; form1.IBQuery1.Active:=false; form1.IBQuery1.SQL.Text:='select N, FAM, NAME, POB, PLASE, STREET, BUD, KV, TEL, PASPORT from MAIN'; //, TYPEKR, KRED, STAVKA form1.IBQuery1.Active:=true; form2.Visible:=false; end; procedure TForm2.Button3Click(Sender: TObject); begin form3.ibquery1.Active:=false; form3.ibquery1.SQL.Text:='insert into por (N,fam,name,pob,pasport,plase,street,bud,kv,tel) values('+#39+form2.edit1.Text+#39+','+#39+form3.edit2.Text+#39+','+#39+form3.edit3.Text+#39+','+#39+form3.edit4.Text+#39+','+#39+form3.edit9.Text+#39+','+#39+form3.edit10.Text+#39+','+#39+form3.edit11.Text+#39+','+#39+form3.edit12.Text+#39+','+#39+form3.edit13.Text+#39+','+#39+form3.edit14.Text+#39+')'; form3.ibquery1.Active:=true; form3.IBTransaction1.CommitRetaining; form3.Visible:=false; end; end. Unit – 3 unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm3 = class(TForm) private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.dfm} end. Unit – 4 unit Unit4; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm4 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label4: TLabel; Button1: TButton; Image1: TImage; Image2: TImage; private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} end. Перелік використаної літератури Сорокин А. В. Delphi. Разработка баз данных. — СПб: Питер, 2005. — 480 с. Фаронов В. В. Delphi 2005. Разработка приложений для баз данных и Интернета. — СПб: Питер, 2005. — 608 с. Епанешников А. М., Епанешников В. А. Delphi. Программирование СУБД. — М.: ДИАЛОГ-МИФИ, 2001. — 528 с. Ковязин А. Н., Востриков С. М. Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/Firebird/Yaffil. — М.: Кудиц, 2005. — 496 с. Скляр А. М. Введение в InterBase. — М.: Горячая линия–Телеком, 2002. — 517 с. Фленов М. Е. Библия Delphi. — СПб: BHV, 2004. — 880 с. Хармон Э. Руководство разработчика баз данных в Delphi/Kylix. — М.: Вильямс, 2002. — 368 с. Галисеев Г. В. Программирование в среде Delphi 7. Самоучитель. — К.: Диалектика, 2003. — 288 с. Керман М. К. Программирование и отладка в Delphi. Учебный курс. — М.: Вильямс, 2004. — 720 с. Пачеко К. Delphi for .NET. Руководство разработчика. — М.: Вильямс, 2005. — 960 с.
Антиботан аватар за замовчуванням

05.02.2013 19:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!