Axborot texnologiyalari servisi



Download 3,92 Mb.
bet47/47
Sana01.01.2022
Hajmi3,92 Mb.
#287383
1   ...   39   40   41   42   43   44   45   46   47
TOVAR

TOVAR_NAME

SON_

REJA_

REJA_

SON_

SOTISH_

SON_

SOTISH_

_ID




KELGAN

DONA

KUTARA

SOTILGAN_

DONA

SOTILGAN

KUTARA
















DONA




_KUTARA































1

Картошка

60

1367

1300

0

0

34

1574




























2

Памидор

50

1700

1600

7

1700

22

2036




























3

Пиёз

60

3667

3267

28

2793

16

3463




























4

Карам

70

2700

2600

26

2700

65

2978




























5

Сабзи

100

1400

1300

5

1300

34

1765




























6

Олма

20

6000

5500

52

5644

18

6000




























7

Узум

50

4500

4000

24

4292

0

0




























8

Нок

30

8500

7500

31

8500

28

8143




























11

Ананас

10

30000

28000

13

30000

31

33548




























12

Банан

60

20000

18417

30

23600

53

37566




























13

Киви

25

43000

40000

30

41000

0

0




























16

Мол гўшти

60

41500

41000

15

42000

10

45000




























17

Кўй гўшти

30

35000

34667

39

35974

22

38545




























18

Товук гўшти

40

30000

28500

38

13386

18

1500




























19

Окорачка

65

18154

17692

12

20000

12

2000




























20

Дудланган гўшт

40

49250

48750

25

11260

20

2475




























21

Колбаса (1)

40

35000

34375

0

0

15

21107




























27

Патир

60

2200

2200

37

2800

62

3871




























Endi Z_OUT_IN_TOVAR_BAXO tasavvuridan donalab va ko‘tara sotilgan tovarlarning foyda qiymatini aniqlash mumkin

CREATE VIEW Z_OUT_IN_TOVAR_BAXO_FIOZ AS

SELECT TOVAR_ID, TOVAR_NAME,

IF(SOTISH_DONA<>0, ROUND((1-SOTISH_DONA/REJA_DONA)*100,0), 0) AS DONA_FOIZ, IF(SOTISH_KUTARA<>0, ROUND((1-SOTISH_KUTARA/REJA_KUTARA)*100,0), 0) AS KUTARA_FOIZ

FROM Z_OUT_IN_TOVAR_BAXO

TOVAR_ID

TOVAR_NAME

DONA_FOIZ

KUTARA_FOIZ













1

Картошка

0

-21













2

Памидор

0

-27













3

Пиёз

24

-6













4

Карам

0

-15













5

Сабзи

7

-36













6

Олма

6

-9













7

Узум

5

0













8

Нок

0

-9













11

Ананас

0

-20













12

Банан

-18

-104













13

Киви

5

0













16

Мол гўшти

-1

-10













17

Кўй гўшти

-3

-11













18

Товук гўшти

55

95













19

Окорачка

-10

89













20

Дудланган гўшт

77

95













21

Колбаса (1)

0

39













27

Патир

-27

-76













Endi MySQL da funksiya yaratish jarayoni qaraladi. Dastlab MySQL Manager tayyor vosita orqali funksiya yaratish jarayoni ko‘rib o‘tiladi. Funksiya biror tanlangan MB bo‘yicha yaratiladi. Buning uchun MySQL Manager vositasida SAVDO MB ustida sichqonchani o‘ng tomoni bosilgandan paydo bo‘lgan konteks menyudan “Sozdat→Xranimaya protsedura” bo‘limi tanlanadi.

Natijani quyidagi jadvalda hosil qilamiz



Bu yerda IMYA bo‘limiga yaratilayotgan protsedera/funksiya nomi kiritiladi. TIP bo‘limida esa saqlanadigan jarayon protsedera yoki funksiya ekanligi kshrsatiladi. Vozvrashayet bo‘limida funksiya qaytaradigan ma’lumot turi kiritiladi. Telo protseduri bo‘limiga yaratilayotgan protsedura asosi yoziladi. Funksiya yoki protseduraga kiruvchi ma’lumotlar (argumentlar) soni va уларнинг tipi Parametri vkladkasidan ko‘rsatiladi.



Funksiya tanasiga foizni xisoblovchi dasturiy kodlar kiritilgandan so‘ng uning ko‘rinishi quyidagicha bo‘ladi.



Bundan Vыполнить процедуру(ы) tugmasini bosilsa funksiyaga qiymat kiritilishini so‘raydi.



Yuqorida yaratilgan foizda nomli funksiyani SQL buyruqlari orqali ham quyidagicha yaratish mumkin.

DELIMITER $$

CREATE FUNCTION foizda(kirish int(3)) RETURNS VARCHAR(50)

BEGIN

DECLARE chiqish VARCHAR(50);

IF kirish<0 THEN SET chiqish='Зарар';

ELSEIF kirish>=0 AND kirish <10 THEN SET chiqish='Кам фойдали';

ELSEIF kirish>=10 AND kirish <20 THEN SET chiqish='Яхши фойдали';

ELSE SET chiqish='Юкори фойдали';

END IF;

RETURN chiqish;

END$$

Eslatma. Odatda SQL buyruqlari yakunlanganligi nuqta vergul belgisi (;) orqali belgilanadi. Saqlanuvchi funksiya tarkibida bir nechta “;” belgisi ishlatilishi sababi bilan SQL buyruqlarini yakunlashni vaqtincha boshqa belgiga almashtirish zarur. Bunda DELIMITER kalit qo‘llaniladi.

Funksiya ichki va tashqi parametrlari to‘g‘ri bo‘lsa, avtomatik MB saqlanib qoladi. Keyingi marta ushbu funksiyani nomi bilan (Max, Min, Avg, Count, Sum funksiyalari kabi) chaqirib ishlatish mumkin bo‘ladi.

Edi Z_OUT_IN_TOVAR_BAXO_FIOZ nomli tasavvurda ushbu funksiyani

chaqirib natijalarni ko‘ramiz.



SELECT *,

FOIZDA(DONA_FOIZ) AS DONA_FOYDA,



FOIZDA(KUTARA_FOIZ) AS KUTARA_FOYDA

FROM Z_OUT_IN_TOVAR_BAXO_FIOZ

TOVAR_ID

TOVAR_NAME

DONA_FOIZ

KUTARA_FOIZ

DONA_FOYDA

KUTARA_FOYDA



















1

Картошка

0

-21

Кам фойдали

Зарар



















2

Памидор

0

-27

Кам фойдали

Зарар



















3

Пиёз

24

-6

Юкори фойдали

Зарар



















4

Карам

0

-15

Кам фойдали

Зарар



















5

Сабзи

7

-36

Кам фойдали

Зарар



















6

Олма

6

-9

Кам фойдали

Зарар



















7

Узум

5

0

Кам фойдали

Кам фойдали



















8

Нок

0

-9

Кам фойдали

Зарар



















11

Ананас

0

-20

Кам фойдали

Зарар



















12

Банан

-18

-104

Зарар

Зарар



















13

Киви

5

0

Кам фойдали

Кам фойдали



















16

Мол гўшти

-1

-10

Зарар

Зарар



















17

Кўй гўшти

-3

-11

Зарар

Зарар



















18

Товук гўшти

55

95

Юкори фойдали

Юкори фойдали



















19

Окорачка

-10

89

Зарар

Юкори фойдали



















20

Дудланган гўшт

77

95

Юкори фойдали

Юкори фойдали



















21

Колбаса (1)

0

39

Кам фойдали

Юкори фойдали



















27

Патир

-27

-76

Зарар

Зарар



















Saqlanuvchi protseduralar

Bizga Savdo MBda quyidagi so‘rovni bajaruvchi tasavvur va uning natijasi berilgan bo‘lsin.



CREATE VIEW Z_TOVAR_NAME

SELECT z.BLOK AS BLOK,

z.TYPE_NAME AS TOVAR_TURI,

T.TOVAR_ID AS TOVAR_ID,

T.TOVAR_NAME AS TOVAR_NAME,

E.EDIN_NAME AS EDIN_NAME

FROM z_ks_type Z

JOIN tovar T ON z.TYPE_ID = T.TYPE_ID JOIN edin E ON E.EDIN_ID = T.EDIN_ID

Oddiy misol. Ushbu Z_TOVAR_NAME tasavvurdagi istalgan o‘lcham birligidagi tovarlarni topish talab etilgan bo‘lsin. Buning uchun Edin_name maydoniga shart qo‘yib, quyidagicha so‘rov tuziladi.



SELECT *

FROM z_tovar_name

WHERE EDIN_NAME=”КГ”;

Bundan ko‘rinib turibdiki, o‘lcham birligi so‘rov tarkibiga ”KG” kabi qo‘yilmoqdaAgar boshqa o‘lcham birligi uchun albatta so‘rovni o‘zgartirish lozim. Bu esa foydalanuvchiga qiyinchilik tug‘diradi.

Bu oddiy masalani SQL da protsedura orqali xal qilish mumkin. YA’ni protsedura so‘rovdagi o‘zgaruvchi qiymatini tashqaridan kiritish imkoniyati beradi. Buning uchun funksiya kabi protsedura yaratiladi.

MB ustida sichqonchani o‘ng tomoni bosilgandan paydo bo‘lgan konteks menyudan “СоздатьХранимая процедура” bo‘limi tanlanadi.

Paydo bo‘lgan oynadagi Имя bo‘limiga yaratilayotgan protsedura nomi kiritiladi: BIRLIK. Parametri vkladkasidan protseduraga kiruvchi/chiquvchi o‘zgaruvchi(lar) kiritiladi.





Тип bo‘limidan Protsedura tanlanadi. Тело процедуры qismidagi BEGIN … END o‘rtasiga quyidagi SQL so‘rovi yoziladi.

SELECT * FROM z_tovar_name WHERE EDIN_NAME=A;

Сохранить tugmasi bosilgandan so‘ng ushbu protsedura paydo bo‘ladi.

Mazkur potsedurani ishlatib ko‘rish uchun Выполнить процедуру(ы) tugmasini bosiladi. Natijada protseduraga qiymat kiritishni so‘raydi.












Protseduralarga nom qo‘yilganligi va uning asosiy tanasiga maxsus kod yozilganligi, undan dasturlash tillaridagi kabi qism dastur sifatida foydalanish mumkin. Protsedurani bajarishda CALL buyruqi ishlatiladi.

CALL BIRLIK('д')

Protseduraga murakkab misol.

Masalaning qo‘yilishi. Savdo MBdagi chiquvchi tovarlar jadvaliga ma’lumot yozilish vaqtida sotilayotgan tovarning sotilish narxi kirish narxidan katta bo‘lgandagina yozilishini ta’minlash bo‘lsin. Kiruvchi tovarlar jadvalи (TOVAR_IN)



Chiquvchi tovarlar jadvali (TOVAR_OUT)

Ushbu kiruvchi va chiquvchi tovar jadvallari o‘zaro TOVAR_ID, SOTUVCH_ID, PULTURI_ID maydonlari orqali bog‘langan.

Masalani tushunish uchun savdo jarayonini xayotiy ravishda batafsil yoritaylik. Faraz qilaylik, kiruvchi tovarlar TOVAR_IN jadvaliga yozishda tovar kodi, kelgan sana, donalab va ko‘tara sotishning rejaviy bahosi kiritiladi. Sotishda ham tovar kodi, sotilgan sana, donalab yoki ko‘tara sotilganlik belgisi va sotilish bahosi kiritiladi. Shuni e’tiborga olish kerakki, tovarning qaysidir sanada sotilish baxosi ushbu tovarning sotilishi sanasiga teng yoki undan oldingi sanadagi narxi orqali aniqlanadi. Odatda, chiqish jadvaliga ma’lumot yozayotganda bu shartlar tekshirilmasdan, foydalanuvchi ko‘rsatilgan qiymat birliklarini kiritadi. Misol uchun joriy yilning 10, 15, 25 oktabr kunlarida kelgan N kodli tovarni sotishni 10 oktabrdan oldingi sana bilan amalga oshirishi, yoki 20 oktyabda sotgan ushbu tovarni 25 oktabr narxida ko‘rsatishi yoki sotilib tugatilgan tovarni yana sotishi kabi xolatlar bo‘lishi mumkin. Bu esa MBning amaliy axamiyatini kamaytiradi. Bunday hollarda muammoni administrator-dasturchi dasturiy ta’minot orqali hal qiladi.

Ushbu muammoni, ya’ni sotilayotgan tovarning sonini tekshirish, tovarning sotilayotgan sanasiga qarab unga mos sanadagi narxni aniqlash kabi masalalarni maxsus saqlanuvchi protseduralar orqali MBBTning o‘zida ham yechish mumkin.

Ushbu masala bir nechta so‘rovlar quyidagicha ketma-ketlikda amalga oshiriladi.



1-qadam. Сотилаётган N-кодли товарнинг S-санага мос ушбу товарнинг сўнгги кириш C-санани аниқлаш. Мисол учун N=3, S=2019-10-20. Бунда дастлаб кириш жадвалидан N кодли товарларни аниқлаб олинади.

SELECT *

FROM TOVAR_IN

WHERE TOVAR_ID=3

Yuqoridagi jadvaldan endi S sanadan kichik yoki teng bo‘lgan ushbu tovar kodiga mos sanani aniqlash quyidagicha amalga oshiriladi:



SELECT MAX(ITOVAR_DATA) AS C

FROM TOVAR_IN

WHERE TOVAR_ID=3 AND ITOVAR_DATA<='2019-10-20'



2-qadam. Endi aniqlangan S sana bo‘yicha N-kodli tovarning kirish kodi aniqlanadi.

SELECT ITOVAT_ID

FROM TOVAR_IN

WHERE TOVAR_ID=3 AND ITOVAR_DATA=(

SELECT MAX(ITOVAR_DATA) AS C

FROM TOVAR_IN

WHERE TOVAR_ID=3 AND ITOVAR_DATA<='2019-10-20')

Biz kirish tovarning unikal kodini aniqlab oldik. Bu kod orqali uning istalgan parametrini (olingan baxo, rejadagi baxolar va x.k.) aniqlash mumkin.



3-qadam. MySQL Manager ilovasida protsedura yaratamiz. Protseduraning kiruvchi elementlariga chiqish tovarlari jadvalidagi (TOVAR_OUT) maydonlari olinadi. Misol uchun tovar kodi, sanasi, donalab yoki ko‘tara sotish belgisi, sotish narxi va soni va x.k.).

MySQL ManagerSAVDOСоздатьХранимая процедура” Protsedura nomi SOTUV_JARAYONI deb belgilanaadi.

Uning kiruvchi parametrlariga ushbu o‘zgaruvchilar belgilanadi:



SOTUV_JARAYONI protseduraning asosiy qismiga quyidagi kod yoziladi.

BEGIN

DECLARE S DATE;

DECLARE ID, B, CUM INT;

DECLARE XATO VARCHAR(255);

SET ID=(SELECT ITOVAT_ID

FROM TOVAR_IN

WHERE TOVAR_ID=TOV_ID AND

ITOVAR_DATA=

(SELECT MAX(ITOVAR_DATA) AS C

FROM TOVAR_IN

WHERE TOVAR_ID=TOV_ID AND ITOVAR_DATA<=O_DATA));

IF O_SHAKL=1 THEN

SET CUM=(SELECT ITOVAR_BAXO_1 FROM TOVAR_IN WHERE ITOVAT_ID=ID);

ELSE

SET CUM=(SELECT ITOVAR_BAXO_2 FROM TOVAR_IN WHERE ITOVAT_ID=ID); END IF;

IF CUM<=O_BAXO THEN

INSERT INTO TOVAR_OUT (TOVAR_ID, OTOVAR_DATA, OTOVAR_SON, OTOVAR_BAXO, SOTISH_SHAKLI, PULTURI_ID, XARIDOR_ID, SOTUVCH_ID)

VALUES (TOV_ID, O_DATA, O_SON, O_BAXO, O_SHAKL,

O_PUL, O_XARIDOR, O_SOTUVCHI);



ELSE

SET S=(SELECT ITOVAR_DATA FROM TOVAR_IN WHERE ITOVAT_ID=ID);

SET B=(SELECT ITOVAR_BAXO FROM TOVAR_IN WHERE ITOVAT_ID=ID);

SET XATO=CONCAT('Бу товар охирги марта ', S, ' санада ', B, ' келган. ', 'Сиз киритган бахо ', O_BAXO, ' тугри келмайди!');

SELECT XATO;

/*SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = XATO;*/

END IF;

END

Yaratilgan protsedura 8 ta o‘zgaruvchi parametrga ega. Asosiy kodda oldin sotilayotgan tovar sanasi bo‘yicha, kiruvchi tovar jadvalidan oxirgi sanasi va uning asosida kiruvchi tovar kodi aniqlanadi. Ushbu tovar kodi asosida esa, kirishda rejalashtirilgan donalav/kutara sotish baxolari anilanib, CUM o‘zgaruvchiga yoziladi. Keyin esa, CUM o‘zgaruvchi protseduraga kirtilgan parametr O_BAXO (sotilayotgan tovarning baxosi) qiymatlari taqqoslanadi. Agar sotish narxi (O_BAXO) kirish narxi (CUM) dan katta bo‘lsa, tovar sotiladi, ya’ni tovar chiqish jadvaliga protseduraga kiruvchi qiymatlar INSERT qilinadi. Aks xolda foydalanuvchiga sotilayotgan tovar baxosi kirish baxosidan kichikligi to‘g‘risida xabar beradi.



Protsedurani ishlatish uchun Выполнить процедуру(ы) tugmasi bosiladi. Natijada protseduraga ketma-ket bir nechta qiymatlarni aloxida-aloxida kiritishni so‘raydi. 1) tovar kodi:

Tovar sotish sanasi:





Tovar sotish sanasi:

Sotish baxosi:

Sotish shakli kodi (dona-0, kutara-1)

Tovar uchun to‘lanayotgan pul turi kodi(1-nakd, 2-plastik):



Xaridor turi kodi:



Tovarni sotgan sotuvchining kodi:



Natija quyidagicha bo‘ladi.



Bundan ko‘rinadiki, biz kiritgan qiymatlarga ega sotuvni amalga oshirib bo‘lmaydi. Chunki 10 oktyabda 3 kodli tovarning rejalashtirilgan donalab sotilish baxosi 2500 sum, lekin biz uni 500 so‘mdan sotmoqchi bo‘lganmiz.

Ushbu taxlikadja boshqa protseduralarni yaratishimiz yoki ushbu protseduraga tovaralrning sonini tekshirish kodlarini xam kiritish mumkin.

Topshiriqlarni bajaring va ballarni qo‘lga kiriting.

Topshiriqlarni alohida “Topshiriq savollari” jildidan olishingiz mumkin

19-Laboratoriya ishi

Mavzu: C++ va ma`lumotlar bazasi yordamida oddiy interfeys yaratish

Ishdan maqsad: C++ va ma`lumotlar bazasi yordamida oddiy interfeys yaratishni o`rganish va ko`nikmaga ega bo`lish.

Masalani qo`yilishi: C++ builder 6 dasturining ma`lumotlar bazasi bilan ishlaydigan komponentalarni o`rganish va ular ishtirokida ma`lumotlar bazasi ma`lumotlari bilan oddiy interfeys yaratish. Ma`lumotlar bazasi sifatida Oracle va interfeys sifatida C++ builder 6 dasturlari o`rtasida aloqa o`rnatish.

Uslubiy ko`rsatmalar: C++ dasturlash tilida ma`lumotlar bazasi bilan ishlaydigan ADO, DataAccess, DataControl va dbExpress kabi komponenta bo`limlari mavjud. Ular orqali ma`lumotlar bazasi ustida amallar bajarilishi mumkin. Interfeysda ma`lumotlar bazasini chaqirish uchun ADOConnection, ADOQuery va DataSource komponentalaridan foydalanish kifoya. Ma`lumotlar bazasidagi ob`yektni aks ettirish

uchun esa DBGrid komponentasidan foydalaniladi. DBGrid komponentasi jadvallarni aks ettiradigan komponenta hisoblanadi.

ADOConnection komponentasi ADO bo`limida joylashgan bo`lib, u ma`lumotlar bazasi bilan aloqa o`rnatishga xizmat qiladi.

ADOQuery komponentasi ham ADO bo`limida joylashgan bo`lib bog`langan ma`lumotlar bazasiga so`rovlar yozishda ishlatiladi.

DataSource komponentasi esa Data Access bo`limida joylashgan bo`lib, so`rovlarni dbGrid komponentasi, ya`ni so`rovlarni jadvallarda aks ettiradi.

Yuqorida ko`rib chiqilgan komponentalar ma`lumotlar bazasi bilan aloqa o`rnatishda muhim komponentalar hisoblanadi. Ma`lumotlar bazasini boshqarish tizimining qaysi turi bo`lishidan qat`iy nazar bu komponentalardan foydalaniladi. Shunday ekan C++ builder 6 dasturi va Oracle ma`lumotlar bazasi bog`lashni ko`rib chiqilgan.

7.1 rasm. C++ Builder 6 dasturining bosh oynasi

7.1 rasmda C++ Builder 6 dasturining bosh oynasi keltirilgan bo`lib, ma`lumotlar bazasi bilan aloqa o`rnatishda ADO va DataAccess bo`limlaridan foydalaniladi. Avvalo bu uchta komponentani ishga tushirish kerak bo`ladi. Bu komponentalar dastur ishga tushganda ko`rinmaydi. Ular forma osti komponentalari hisoblanadi.

7.2 rasm. Asosiy komponentalarni ishga tushirilishi

7.2 rasmda asosiy komponentalar ishga tushirilgan. Keyingi qadam har bir komponentani xususiyatiga o`zgartirishlar kiritish bilan bo`g`liq. Birinchi navbatda ADOConnect komponentasi xususiyatining kerakli sozlamalari kiritiladi.

7.3. rasm. ADOConnection komponentasining xususiyati ADOConnection komponentasining xususiyatlarini kerakli bo`limlariga

o`zgartirishlar kiritilishi shart. Bulardan biri ConnectionString xususiyatidir. Uni ishga tushirganimizda 7.3 rasmdagi oyna hosil bo`ladi. Ma`lumotlar bazasi bilan aloqa o`rnatishimiz uchun undagi “Build” tugmasi bosiladi va ma`lumotlar bazasini boshqarish tizimiga moslab kerakli bo`limi tanlanadi. Masalan Oracle bilan bog`lanishni amalga oshirish uchun “Microsoft OLE DB Provider for Oracle” bo`limi tanlanadi

7.4 rasm. MBBTni tanlash oynasi

Ushbu bo`lim tanlanib “Далее” tugmasi bosiladi va 7.5 rasm hosil bo`ladi.

7.5 rasm. MBBT bilan bog`lash bo`limi

7.5 rasmda ko`rsatilgan oyna asosiy qilinadigan amallardan tashkil topgan. Bunda server nomini kiritish talab etiladi. Agar Oracle serverga joylashmagan bo`lsa shaxsiy kompyuterni IP adressini yozish kifoya. Keyingi qadamda esa MBBT foydalanuvchi nomi va paroli kiritiladi. So`ralgan ma`lumotlar kiritilgandan so`ng ma`lumotlar bazasi bilan bog`langanligini tekshirib ko`rish mumkin va “OK” tugmasi bosiladi.

7.6 rasm. ADOQuery komponentasi xususiyatlari

ADOQuery komponentasining Connection xususiyatini “ADOConnection1” va
DataSource xususiyatini “DataSource1” nomlari bilan belgilash maqsadga muvofiq.
Bunda uchta komponenta bir biri bilan aloqa bo`ladi.
Keyingi qadam esa ADOQuery komponentasining SQL xususiyatga so`rov yozish bilan davom ettiriladi.

7.7. rasm. SQL xususiyati oynasi

ADOQuery komponentasining Active xususiyatiga “True” belgilanadi. Shundagina kiritilgan so`rov ishga tushadi va tekshiriladi. DataSource komponentasininng DataSet xususiyatiga “ADOQuery1” belgilanadi. Bu bilan ikkita komponent o`rtasida aloqa o`rnatiladi.

Kiritilga so`rovni aks ettirish uchun yana bir komponenta DBGrid komponentasi kerak bo`ladi. Bu komponenta Data Controls bo`limida joylashgan. U ishga tushirilgandan keyin esa Data Source xususiyatiga “DataSource1” belgilanadi.

Tayyor bo`lgan loyiha kompilyatsiya qilinadi. Bu jarayon 7.8. rasmda aks ettirilgan.

7.8. rasm. Kompilyatsiya jarayoni
Bu loyiha har safar ishga tushirilganda ma`lumotlar bazasi logini va paroli
tizim tomonidan so`raladi. Buni oldini olish uchun ADOConnection komponentasining LoginPromt xususiyatiga “False” belgilanadi.

Bu yerda keltirilgan Laboratoriya ishi Oracle ma’lumotlar bazasi uchun qurilgan bo’lib, agarda birorta muammo bo’ladigan bo’lsa ma’ruza mashg’ulotlariga tayangan holatda biror bir ma’lumotlar bazasini qo’llab quvvatlaydigan dasturiy ta’minot(Microsoft Access, Denwer, Open Server, SQL Server va boshqalar) dan foydalanishingiz mumkin



20- Laboratoriya ishi

Mavzu: C++ da ADO va ODBC dan foydalanib qatorlarga ma’lumot

kiritish, o`zgartirish va o`chirish

Ishdan maqsad: C++ da ADO va ODBC dan foydalanib qatorlarga ma‟lumot kiritish, o`zgartirish va o`chirishni o`rganish va ko`nikmaga ega bo`lish.

Masalani qo`yilishi: C++ dasturlash tilining ma`lumotlar bazasi bilan ishlashga mo`ljallangan komponentalardan foydalanib ma`lumotlar bazasiga ma`lumotlarni kiritish, o`zgartirish va o`chirish amallarini bajarish. Bu amallarni DBNavigator komponentasi va so`rovlar orqali hosil qilish maqsadga muvofiqdir.

Uslubiy ko`rsatmalar: C++ da ADO va ODBC dan foydalanib qatorlarga ma‟lumot kiritish, o`zgartirish va o`chirish uchun kerakli komponentalarni ishga tushirish zarur. Bu komponentalarni asosini ma’ruza mashg’ulotlarida ko`rilgan komponentalar tashkil qiladi. Bu laboratoriya mashg`uloti yuqoridagi laboratoriya mashg`uloti davomi sifatida qaraladi. ADO va ODBC dan foydalanib qatorlarga ma‟lumot kiritish, o`zgartirish va o`chirishni tashkil qilish uchun birinchi navbatda BDNavigator komponentasi ishga tushuriladi(Boshqa asosiy komponentalar ma’ruzada ishlatilgan. Bu uning davomi sifatida ishlatiladi).

8.1. rasm C++ Builder 6 dasturining komponentalari

8.1 rasmda ko`rsatilgan komponentalardan foydalanib interfeys orqali ma`lumotlar bazasiga ma`lumot kiritish, o`zgartirish va o`chirish amallari bajariladi.

Birinchi navbatda DBNavigator komponentasidan foydalanib ma`lumotlar ustida amallar bajarishni ko`rib chiqamiz. DBNavigator komponentasi Data Control komponentalar bo`limida joylashgan.

8.2. rasm. Dastur oynasi

8.2. rasmda interfeys keltirilgan bo`lib, unda DBNavigator komponentasi ishga tushirilgan. U komponentani o`lchamlarini o`zgartirish imkoniyati mavjud. Ma`lumotlar ustida amallar bajarish uchun DBNavigator komponentasining DataSource komponentasi DataSource komponentasi nomiga moslashtiriladi (8.3.rasm).



8.3. rasm. DBNavigator xususiyati

8.3. rasmda DBNavigator komponentasining xususiyatlari keltirilgan. Bu xususiyatlar orqali komponentani o`lchamlarini o`zgartirish, formada joylashgan o`rnini aniqlash, datasourceni tanlash kabi xususiyatlarini ko`rish mumkin.
Barcha sozlamalarni o`rnatib bo`lgandan keyin loyixa ishga tushiriladi va DBNavigator bilan Data Source bog`langanligi tekshirib ko`riladi (8.4. rasm).

8.4. rasm. Loyixaning kompilyatsiya jarayon

Interfeys orqali ma`lumotlar ustida amal bajarish uchun boshqa usullardan ham foydalanish imkoniyati mavjud. Buning uchun Edit va Button komponentalaridan foydalaniladi. Qidirilayotgan mahsulot nomi Editda yoziladi va Button orqali qidiruvni amalga oshirishni ko`rib chiqamiz.

8.5. rasm. Edit va Button komponentasidan foydalanish

8.5. rasmda ko`rsatilgan Button komponentasi ustiga sichqonchani chap tugmasi ikki marta bosiladi va dasturning kod qismiga o`tiladi. Button komponentasining kod qismiga o`tilgandan keyin quyidagi C++ operatorlari ketma ketligi yoziladi.
void __fastcall TForm1::Button1Click(TObject *Sender)
{

// Edit komponentasidan ma`lumotni o`qish



String s="SELECT * FROM MAHSULOT WHERE

MAHSULOT_NOMI='"+Edit1->Text+"'"; //ADOQuery1 komponentasi bilan ishlash ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(s); ADOQuery1->Open();

}

Kod yozilgandan keyin dastur kompilyatsiya qilinadi va qidirilayotgan mahsulot nomi yoziladi.



8.6. rasm. Interfeys asosiy oynasi

8.6. rasmda interfeysning asosiy oynasi keltirilgan bo`lib, unda “Olma” so`zi qidirilgan. Bu qidiruvni amalga oshirish uchun Edit komponentasiga qidirilayotgan mahsulot nomi yoziladi va “Qidir” tugmasi bosiladi. Qaysidir ma`noda bu qidiruv deyiladi. Aslida esa tanlash deb yuritiladi, ya`ni bir nechta qatorlar ichidan kerakli bo`lganlarini ajratib olishdir. Bu vazifa tugmani bosgandagina amalga oshadi. Chunki SQL so`rovlar va C++ kod belgilangan tugmaning Click xossasi ichiga yozilgan. Interfeys orqali ma`lumotlarni o`zgartirish va o`chirish imkoniyatlari ham mavjud

21-Laboratoriya ishi

Mavzu: C++da Windows Forms Data Controldan foydalanish

Ishdan maqsad: C++da Windows Forms Data Controldan foydalanishni o`rganish va ko`nikmaga ega bo`lish.

Masalani qo`yilishi: C++ dasturlash tilining Data Controls komponentalar bo`limida mavjud bo`lgan barcha komponentalarni amalda qo`llashdan iborat. Bundan tashqari komponentalarning xususiyatarini o`rganib chiqish ham ko`zda tutilgan.

Uslubiy ko`rsatmalar: C++ dasturlash tilida Data Controls komponentalar bo`limi bo`lib, unda 15 ta komponenta joylashtirilgan. Bular bajaradigan vazifalariga qarab ajratiladi. Asosan bu komponentalar ma`lumotlar bazasi ma`lumotlari bilan ishlash uchun mo`ljallangan.

9.1 . rasm. Data Control komponentalar bo`limi

Data Controls komponentalar bo`limida mavjud bo`lgan komponentalar haqida quyida keltirilgan.

- DBGrid – bu ma`lumotlar bazasi ob`yektlarini intefeysda to`liqligicha aks ettira oladigan yagona komponenta hisoblanadi. BDGrid jadval ko`rinishi shakllantiriladi. U har bir yacheykada joylashgan ma`lumotlarni ”ADOQuery” komponentasining “SQL” xususyatiga yozilgan so`rov orqali oladi.

- DBNavigator – bu komponenta orqali ma`lumotlar bazasi ob`yektlariga to`g`ridan–to`g`ri murojaat qilish mumkin. Komponenta ma`lumotlarni kiritish, o`zgartirish, o`chirish kabi amallarni bajarishga yordam beradi.

- DBText – bu komponenta “Label” komponentasiga o`xshash, lekin buning text xossasi yo`q. U ma`lumotlarni ma`lumotlar bazasidan oladi. DBText komponentasining “DataSource” va “DataField” xususiyatlari bo`lib, unda yaratilgan datasource va belgilangan ob`yekt atributi ko`rsatiladi.

- DBEdit – bu ma`lumotlar bazasidagi ob`yektning belgilangan taributi elementini aks ettiradi.

- DBMemo - Memo matnlarni bir necha qator qilib chiqarish uchun ishlatiladi. Bu matn chiqarish maydoni dasturda natijalarni chiqarishda qo`l keladi.

Natijani chiqarishda u dastur ichida quyidagicha ishlatiladi. Memo1.Lines.add('Echim='+S); Memo maydonini tozalash esa natijani chiqarishdan oldin modulda Memo1.Clear buyrug`ini berish bilan amalga oshiriladi.

- DBListBox - komponenti ro`yxat va bir o`lchamli massiv ko`rinishdagi ma‟lumotlarni ekranga aks ettirishda ishlatiladi. Ma‟lumotlarni kiritishda esa Edit komponentasidan foydalaniladi. DBListBox komponentasi Standart komponentalar palitrasida joylashgan.

- DBComboBox - komponenti ro`yxat va bir o`lchamli massiv ko`rinishdagi ma‟lumotlarni ekrandan kiritish uchun ishlatiladi. U DBListBox va DBEdit komponentalarining birgalikdagi ishini bir o`zi bajaradi. Tashqi ko`rinishdan bu komponent oddiy DBEdit kiritish qatorini eslatadi. Uning o`ng qismida pastga belgisi bo`lib, kiritilayotgan ma‟lumotlarni ko`rib borish mumkin.

- DBCheckBox - bog`liq bo`lmagan tanlash tugmalarini yaratadi

Bundan tashqari Data Control komponentalar bo`limida DBImage,

DBRadioGroup, DBLookupListBox, DBLookupComboBox, DBRichEdit, DBCtrGrid va DBChart komponentalari ham mavjud.

Quyida Data Control komponentalaridan bir nechta misollar keltiriladi. DBrid va DBNavigator komponentlalaridan yuqoridagi laboratoriya ishlarida misollar keltirilgan. DBText va DBEdit komponentalaridan foydalanish ko`rib chiqilgan.

9.2. rasm. DBText komponentasining ishlatilishi

9.2. rasmda keltirilgan DBText komponentasini ishlatish ko`rsatilgan bo`lib, uning xususiyatiga murojaatni amalga oshirish zarur. Bu komponentaning DataSource va DataField xususiyatlari asosiy hisoblanadi. Bu xususiyatlar yordamida ma`lumotlar bazasidan ma`lumotlarni o`qish imkoni mavjud bo`ladi. Buning uchun DataSource xususiyati datasource nomiga va DataField xususiyati esa ma`lumotlar bazasining ob`yekti atributi nomiga tenglashtiriladi. Bu ikki xususiyat DBText komponentasini Label komponentasidan farqlab turadi. Chunki bu xususiyatlar orqali ma`lumotlar bazasi bilan bog`lanish imkoniyati mavjud.

9.3. rasm. DBText komponenttasini ma`lumotlar bazasi bilan bog`lash

9.3. rasm. DBText komponenttasini ma`lumotlar bazasi bilan bog`lash

9.3. rasmda DBText komponentasini ikkita xususiyati ajratib ko`rsatilgan.

Ma`lumotlar bazasi bilan bog`lanishda bu xususiyatlar muhim.



Topshiriq savollari.

  1. Xo‘jalik mollari ma’lumotlar bazasi.

  2. Temir yo‘l vokzali ma’lumotlar bazasi.

  3. Mobil operatorlari ma’lumotlar bazasi.

  4. Internet provayderlar ma’lumotlar bazasi.

  5. Kutubxona ma’lumotlar bazasi.

  6. Tamaddi hona ma’lumotlar bazasi.

  7. Avto salon ma’lumotlar bazasi.

  8. Universitetlarning ma’lumotlar bazasi.

  9. Maktablarning ma’lumotlar bazasi.

  10. Maktagacha ta’lim ma’lumotlar bazasi.

  11. Marka savdo majmuasi ma’lumotlar bazasi.

  12. Marjon savdo majmuasi ma’lumotlar bazasi.

  13. Atlas savdo majmuasi ma’lumotlar bazasi.

  14. Oilaviy poliklinika ma’lumotlar bazasi.

  15. Yashil bozor savdo majmuasi ma’lumotlar bazasi.

  16. Avto turargoh ma’lumotlar bazasi.

  17. Ishlab chiqarish korxonalari ma’lumotlar bazasi.

  18. Dorixona ma’lumotlar bazasi.

  19. Tez tibbiy yordam ko‘rsatish ma’lumotlar bazasi.

  20. Neft va gazni qayta ishlash korxonalari ma’lumotlar bazasi.

  21. Kompyuter do‘koni ma’lumotlar bazasi.

  22. Telefon do‘koni ma’lumotlar bazasi.

  23. Muzeylar ma’lumotlar bazasi.

  24. Elektr ta’minoti korxonasi ma’lumotlar bazasi.

  25. Avto lizing ma’lumotlar bazasi.

  26. Fudbol klublari ma’lumotlar bazasi.

  27. Kurerlik tashkilotlari ma’lumotlar bazasi.

  28. Pitsaga buyurtma berish ma’lumotlar bazasi.


Izoh: Ushbu topshiriqlar laboratoriya mashg‘ulotlariga nisbatan tuzilgan. Talaba bu mavzularga hos bo‘lgan masalalarni o‘zi loyihalashtirishi va uni laboratoriya mashg‘ulotlari mavzulariga yo‘naltira olishi zarur. Yuqoridagi shartlar bajarilganda talabaning bajargan laboratoriya mashg‘ulotlari baholanadi va unga 2 soatlik laboratoriya ishi uchun 1 ball beriladi(Ishchi dasturda kelitirilgan). Talabalar bu mavzularni jo‘rnal nomeri bo‘yicha oladilar. O‘z tartib nomeriga nisbatan mashg‘ulotni bajarmagan talabalarga ballar berilmaydi.

Tavsiya etilgan adabiyotlar ro‘yxati

Asosiy adabiyotlar


  1. Nazirova E.SH, Usmonov J.T. Ma’lumotlar bazasi va banki fanidan laboratoriya ishlari bo’yicha uslubiy ko’rsatma // Laboratoriya ishlarini bajarish uchun uslubiy ko’rsatma. Toshkent, 2014, 40 b.

  2. Usmonov J.T., Xujaqulov T.A. Ma’lumotlar bazasini boshqarish tizimi// o’quv qo’llanma, - T.: Aloqachi, 2018. – 96 b.

  3. Usmonov J.T., Xo’jaqulov T.A. Ma’lumotlar bazasini boshqarish tizimi fanidan laboratoriya ishlarini bajarish bo’yicha uslubiy ko’rsatma – T.: TATU, 2016. – 55 b.

  4. Eric Redmond, Jim R. Wilson. A Guide to Modern Databases and the NoSQL Movement- 347c. AQSH, 2015 г.

  5. Фиайди К. SQL: Пер.с англ. – М.: ДМК Пресс. – 456 с. Москва. 2013 г.

  6. Jeffrey A. Hoffer, Mary B. Prescott, and Fred R. Mefadden. Modern DatabaseManagement (8th ED.) – 557 p. Prentice-Hall , 2007.

  7. For those seeking a stronger technical treatment of database systems: Elmasri, R. and S.B.Navathe Fundamentals of Database Systems (5th Ed.) – 671 p. Addison Wesley, 2015.

Qo‘yshimcha adabiyotlar

  1. Mirziyoyev Sh.M. O‘zbekiston Respublikasi prezidentining “O‘zbekiston Respublikasini yanada rivojlantirish bo‘yicha Harakatlar strategiyasi to‘g‘risida”gi Farmoni 2017 yil.

  2. Mirziyoyev Sh.M. Buyuk kelajagimizni mard va olijanob xalqimiz bilan birga quramiz. Toshkent. “O‘zbekiston”, NMIU, 2017. – 488b.

  3. Deyt K., Vvedeniye v sistem baz dannix, M. Nauka 2005 g.

  4. Faronov V.V., Shumakov P.V.. Delphi. Rukovodstvo razrabotchika baz dannix. M.: Nolidj, 2000.

  5. Kuznetsov S.D. Vvedeniye v standarti yazika baz dannix SQL..M.1998

  6. Nazirova E.SH. Usmonov J.T. Ma’lumotlar bazasi va banki fanidan laboratoriya ishlari bo‘yicha uslubiy ko‘rsatma// Laboratoriya ishlarini bajarish uchun uslubiy ko‘rsatma/ Toshkent 2014. 40 bet.

Интернет сайтлари

  1. www.intuit.ru

  2. www.oracle.com

  3. www.library.tuit.uz

  4. www.w3school.com

  5. www.intuit.ru

  6. www.ziyonet.uz

Download 3,92 Mb.

Do'stlaringiz bilan baham:
1   ...   39   40   41   42   43   44   45   46   47




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish