Mavzu: Trikоtаj firmаsidа tоvаrlаrni sоtish jаrаyonini аvtоmаtlаshtirish


Download 0.69 Mb.
bet1/2
Sana23.01.2023
Hajmi0.69 Mb.
#1113571
  1   2
Bog'liq
Misol ucun


Bajardi: Abdullajonov Xojiakbar 640 22- guruh talabasi
Mavzu: Trikоtаj firmаsidа tоvаrlаrni sоtish jаrаyonini аvtоmаtlаshtirish
Reja:
KIRISH .......................................................................................................... 3 I. NAZARIY QISM....................................................................................... 5 1.1. O’zgaruvchilar turlari, obektlar haqida ma’lumotlar ................... 5 1.2. Shart operatori ................................................................................... 7 1.3. Fayllar bilan ishlash........................................................................... 8 1.4. Klasslar haqida ma’lumot va ular bilan ishlash............................................................... 10 II. Amaliy qism XULOSA ...................................................................................................... 17 Foydalanilgan adabiyotlar:........................................................................ 18 ILOVA..........................................................................................................

KIRISH.
Axborot texnologiyalarining bugungi rivojlangan davrida kompyuter texnologiyalari barcha sohalarga kirib bormoqda. Hususan, hayotiy masalalarni yechishda dasturlash yordamida, masalalarni matematik modellarini tuzib, ularni yechish algoritm va dasturlarini tuzish orqali jarayonlarni kompyuterlashtirish dolzarb masalalardan biri. Mazkur kurs ishida massivlar yordamida masalalarni echish usullari va mos dasturlari ko’rib chiqiladi. Kurs ishi kirish, nazariy qism, masalaning qo’yilishi, echilish algoritmi, C++ tilidagi dasturi va natijalaridan iborat. C++ dasturlash tili C tiliga asoslangan. C esa o'z navbatida B va BCPL tillaridan kelib chiqqan. BCPL 1967 yilda Martin Richards tomonidan tuzilgan va operatsion sistemalarni yozish uchun mo'ljallangan edi. Ken Thompson o'zining B tilida BCPL ning ko'p hossalarini kiritgan va B da UNIX operatsion sistemasining birinchi versiyalarini yozgan. BCPL ham, B ham tipsiz til bo'lgan. Yani o'zgaruvchilarning ma'lum bir tipi bo'lmagan - har bir o'zgaruvchi kompyuter hotirasida faqat bir bayt yer egallagan. O'zgaruvchini qanday sifatda ishlatish esa, ya’ni butun sonmi, kasrli sonmi yoki harfdekmi, dasturchi vazifasi bo'lgan. C tilini Dennis Ritchie B dan keltirib chiqardi va uni 1972 yili ilk bor Bell Laboratories da, DEC PDP-11 kompyuterida qo'lladi. C o'zidan oldingi B va BCPL tillarining juda ko'p muhim tomonlarini o'z ichiga olish bilan bir qatorda o'zgaruvchilarni tiplashtirdi va bir qator boshqa yangiliklarni kiritdi. Boshlanishda C asosan UNIX sistemalarida keng tarqaldi. Hozirda operatsion sistemalarning asosiy qismi C/C++ da yozilmoqda. C mashina arhitekturasiga bog'langan tildir. Lekin yaxshi rejalashtirish orqali dasturlarni turli kompyuter platformalarida ishlaydigan qilsa bo'ladi. 1983 yilda, C tili keng tarqalganligi sababli, uni standartlash harakati boshlandi. Buning uchun Amerika Milliy Standartlar Komiteti (ANSI) qoshida X3J11 tehnik komitet tuzildi va 1989 yilda ushbu standart qabul qilindi. 4 Standartni dunyo bo'yicha keng tarqatish maqsadida 1990 yilda ANSI va Dunyo Standartlar Tashkiloti (ISO) hamkorlikda C ning ANSI/ISO 9899:1990 standartini qabul qilishdi. Shu sababli C da yozilgan dasturlar kam miqdordagi o'zgarishlar yoki umuman o'zgarishlarsiz juda ko'p kompyuter platformalarida ishlaydi. C++ 1980 yillar boshida Bjarne Stroustrup tomonidan C ga asoslangan tarzda tuzildi. C++ juda ko'p qo'shimchalarni o'z ichiga olgan, lekin eng asosiysi u ob'ektlar bilan dasturlashga imkon beradi. Dasturlarni tez va sifatli yozish hozirgi kunda katta ahamiyat kasb etmoda. Buni ta'minlash uchun ob'ektli dasturlash g'oyasi ilgari surildi. Huddi 70-chi yillar boshida strukturali dasturlash kabi, programmalarni hayotdagi jismlarni modellashtiruvchi ob'ektlat orqali tuzish dasturlash sohasida inqilob qildi. C++ dan tashqari boshqa ko'p ob'ektli dasturlshga yo'naltirilgan tillar paydo bo'ldi. Shulardan eng ko'zga tashlanadigani Xerox ning Palo Altoda joylashgan ilmiy-qidiruv markazida (PARC) tuzilgan Smalltalk dasturlash tilidir. Smalltalk da hamma narsa ob'ektlarga asoslangan. C++ esa gibrid tildir. Unda C ga o'xshab strukturali dasturlash yoki yangicha, ob'ektlar bilan dasturlash mumkin. Yangicha deyishimiz ham nisbiydir. Ob'ektli dasturlash falsafasi paydo bo'lganiga ham yigirma yildan oshayapti. C++ funksiya va ob'ektlarning juda boy kutubhonasiga ega. 5 I. NAZARIY QISM 1.1. O’zgaruvchilar turlari, obektlar C++ tili Byarn Straustrup tomonidan 1980 yilning boshlarida ishlab chiqilgan. C++ tilida yaxshi dastur tuzish uchun “aql, farosat va sabr” kerak boʻladi. Bu til asosan tizim sathida dasturlovchilar uchun yaratilgan. C/C++ algoritmik tilining alifbosi: 1. 26 ta lotin harflari(katta va kichik); 2. 0 dan 9 gacha boʻlgan arab raqamlari; 3. Maxsus belgilar: - + * / : ; . , % ? ! = “” № <>{ } [ ] ( ) $ # &^ va h.k. Dastur bajarilishi jarayonida oʻz qiymatini oʻzgartira oladigan kattaliklar oʻzgaruvchilar deyiladi. Oʻzgaruvchilarning nomlari harfdan boshlanuvchi harf va raqamlardan iborat boʻlishi mumkin. Oʻzguruvchilarni belgilashda katta va kichik harflar bir biridanfarq qiladi(A va a harflari 2 ta oʻzgaruvchini bildiradi). Har bir oʻzgaruvchi oʻz nomiga, tipiga, xotiradan egallagan joyiga va son qiymatiga ega boʻlishi kerak. Oʻzgaruvchiga murojaat qilish uning nomi orqali boʻladi. Oʻzgaruvchi uchun xotiradan ajratilgan joyning tartib raqami uning manzili hisoblanadi. Oʻzgaruvchi ishlatilishidan oldin u aniqlangan boʻlishi lozim. Oʻzgaruvchilarning son qiymatlari quyidagi koʻrinishda yoziladi: Butun tipli oʻnlik sanoq tizimida: ular faqat butun sondan iborat boʻladilar.masalan: 5; 76; -674 va h.k. Sakkizlik sanoq tizimidagi sonlar: 0 (nol)dan boshlanib, 0 dan 7 gacha boʻlgan raqamlardan tashkil topadi. Masalan: x=0453217; char belgi tipi uning oʻzgarish intervali 0 dan 255 gacha yoki apostrof ichidagi ixtiyoriy 1ta simvol. xotiradan 1 bayt joy oladi. Simvollar ASCII kodlariga mos keladi. (ASCII – American Standart Code for Information Interchange). Butun tipli oʻzgaruvchilar: int. Masalan: int a, i, j ; Bu yerda dasturda ishlatilayotgan a, i, j oʻzgaruvchilarining tipi butun ekanligi koʻrsatildi. Bu tipdagi oʻzgaruvchilar 2 bayt joy egallaydi. Ularning oʻzgarish oraligʻi: -32768 dan +32767 6 gacha; (Hozirgi 32 razryadli kompyuterlarda 4 bayt joy oladi va oraligʻi 2 marta oshgan) Butun tipli katta (uzun) oʻzgaruvchilar: long. Masalan: long s, s2, aa34; Bu tipdagi oʻzgaruvchilar 4 bayt joy egallaydi. Ular – 2147483648 dan +2147483647 gacha bo‘lganoraliqdagi sonlarni qabul qilishi mumkin. Ishorasiz butun oʻzgaruvchilar: unsigned short – 2 bayt joy oladi,oʻzgarish oralig‘i 0 dan 65535 gacha; unsigned long – 4 bayt joy oladi, oʻzgarish oralig‘i: 0 dan 4294967295 gacha; unsigned char – 1 bayt joy oladi, oʻzgarish oralig‘i 0 dan 255 gacha Haqiqiy tipdagi oʻzgaruvchilar: float. Masalan: float a, b: Bu yerda dasturda ishlatilayotgan a, b oʻzgaruvchilarining tipi haqiqiy ekanligi koʻrsatilgan. Bu tipdagi oʻzgaruvchilar 4 bayt joy egallaydi va qabul qilish chegarasi 10-38 dan 10+38 gacha. Katta yoki kichik qiymatli oʻzgaruvchilarni ifoda etishda double tipi ishlatiladi. Ular uchun 8 bayt joy ajratiladi va qabul qilish chegarasi 10-304 dan 10+304 gacha. Juda katta yoki juda kichik qiymatli oʻzgaruvchilar uchun longdouble tipi ishlatiladi, u 10 bayt joy oladi va qabul qilish chegarasi 3.4*10-4932 dan 1.1*10- 4932 gacha. Qator tipidagi oʻzgaruvchilar uchun ham char tipi belgilangan. Ular ham 1 bayt joy oladi va 0 dan 256 tagacha boʻlgan simvollar ketma-ketligidan iborat boʻlishi mumkin. Satr tipidagi oʻzgaruvchilar qoʻshtirnoq (“) ichida yoziladi. C++ tilida oʻzgaruvchilarni initsializatsiya qilish degan tushuncha ham mavjud. Initsializatsiya qilish degani oʻzgaruvchini eʻlon qilish barobarida unga boshlangʻich qiymatini ham berish demakdir. Masalan: int a=5, b, s=-100;– a, b, s oʻzgaruvchilari butun tipli ekanligi koʻrsatildi va a oʻzgaruvchisiga 5 (a=5), s oʻzgaruvchisiga esa – 100 (s=-100) boshlangʻich qiymatlar berildi. 7 1.2. Shart operatorlari Shartli operatorlar.Toʻliqsiz tarmoqlanish if operatori. if operatori qandaydir shartni rostlikka tekshirish natijasiga koʻra dasturda tarmoqlanishni amalga oshiradi: if ()1; Bu yerda har qanday ifoda boʻlishi mumkin, odatda u taqqoslash operatori boʻladi. Agar tekshiriladigan_shart rost (true) boʻlsa, 1 bajariladi, aks holda(false) dastur keyingi operatorlarni bajarishga oʻtadi. C++ tilida bir nechta amallarni blok(guruh)larga birlashtirish mumkin. Blok ʻ{ʻ va ʻ}ʻ belgi oraligʻiga olingan amallar ketma-ketligi boʻlib, u kompilyator tomonidan yaxlit bir operator deb qabul qilinadi. Toʻliq tarmoqlanish. if – else operatori: Misol. Ikkita butun sonni kiriting va ulardan kichigini ekranga chiqaring. Blok-sxemasi 8 1.3. fayllar bilan ishlash Fayl — bu kompyuter xotira qurilmalaridan birida saqlanayotganva oʻz nomiga ega boʻlgan ma’lumotlar toʻplamidir. Fayl boʻsh boʻlishi ham mumkin. Fayllar maʻlumot saqlashningeng qulay usuli ekanligining sababi quyidagilardan iborat: 1)odatda dasturni bajarib, olingan natijalar dastur oʻz ishinitugatgandan soʻng, EHM xotirasidan oʻchib ketadi. Bu ma’lumotlargayana ehtiyoj paydo boʻlsa, dasturni yangidan ishgatushirishga toʻgʻrikeladi. Buning oldini olish uchun hosil qilingan natijalarni fayllargayozib qoʻyish mumkin; 2)fayldasaqlanayotgan ma’lumotlar koʻplab masala va dasturlar uchun yangi asos boʻlishi mumkin, yaʻni dastur natijalari saqlabqoʻyilsa, bu ma’lumotlardan foydalanib boshqa masalalami yechishmumkin; 3)ma’lumotlarsoni EHMning operativ xotirasiga sigʻmaydigandarajada koʻp boʻlishi mumkin. Bunday vaqtda maʻlumotlaming birqismini biror faylda vaqtincha saqlab qoʻyish mumkin; 4)fayllardan ulardagi ma’lumotlar doirasidagi ixtiyoriy maqsad va masalalar uchun foydalanish mumkin. Fayllar oʻzining manzili hamda nomiga ega boʻladi. Faylningnomi odatda ikkita qismdan iborat boʻlishi mumkin: nom vakengaytma Tiplashgan fayllar faqat maʻlum bir tipdagi maʻlumotlamisaqlaydi. Maʻlum bir tipga mansub boʻlgan va fayllarda saqlanayotganma’lumotlar yozuv deb ataladi. Faylning yozuvlari baytlar bilanoʻlchanadigan chekli hajmga ega va bu hajm barcha yozuvlar uchunbir xil. Har bir yozuvning faylda turgan oʻrnini doimo aniqlashmumkin. Tiplashmagan fayllar maʻnosi dasturchi tomonidan aniqlanadigan baytlaming chiziqli ketma-ketligini oʻz ichiga oladi. Fayllarni C ++ sinflari orqali ishlash. C ++ da fayllar, asosan, fstream sarlavha faylida mavjud boʻlgan uchta ofstream, ifstream, fstream oqimlari yordamida koʻrib chiqiladi. Ular: 9 ofstream:fayllarga ma’lumotlarni yozish uchun sinf oqimi; ifstream:fayllardan ma’lumotlarni oʻqish uchun sinf oqimi; fstream: fayllardan ma’lumotlarni oʻqish va fayllarga yozish uchun sinf oqimi. Faylni ochish. Odatda ushbu sinflar orqali hosil qilingan obʻekt yordamida bajariladigan birinchi operatsiya uni haqiqiy faylga bogʻlashdir.Ushbu jarayonfaylni ochishsifatida maʻlum.Ochiq fayl dastur ichidaoqim bilan taqdim etiladi(masalan, ushbu sinflardan birining obʻekti; oldingi misolda bu meningfaylim deb nomlangan edi) va ushbu oqim obʻekti ustida bajarilgan har qanday kirish yoki chiqish operatsiyalari bogʻlangan fizik faylga qoʻllaniladi, yaʻni har qanday 170 bajargan kodlarimizning natijasi biz yaratgan fayl ichida namoyon boʻladi. Oqim obʻekti yordamida faylni ochish uchun biz uning a’zo funksiyasi boʻlgan open dan foydalanamiz:open (faylnomi, mode); Ikkilik rejimda ochilgan fayl oqimlari kirish va chiqish operatsiyalarini har qanday format nuqtai nazaridan mustaqil ravishda amalga oshiradi. Ikkilik boʻlmagan fayllar matnli fayllar deb nomlanadi va baʻzi bir maxsus belgilar (masalan, yangi qator va yetkazadigan qaytaruvchi belgilar)ni formatlash tufayli baʻzi o‘zgartirishlar yuzaga kelishi mumkin. Fayl oqimida bajariladigan birinchi vazifa odatda faylni ochish boʻlganligi sababli, ushbu uchta sinf avtomatik ravishda ochiq a’zo funktsiyasini chaqiradigan va ushbu a’zo bilan bir xil parametrlarga ega boʻlgan konstruktorni oʻz ichiga oladi. Shuning uchun biz oldin meningfaylim obʻektini eʻlon qilishimiz va avvalgi misolimizdagi bilan bir xil boʻlgan ochilish operatsiyasini yozish orqali amalga oshirishimiz mumkin 10 1.4. Klasslar haqida ma’lumot Sinf sifatida ma'lumotlar to'plami va ularga boqlangan funktsiyalarni qarash mumkin. Sinflar C++ tili ichki imkoniyatlarini kengaytirib dasturchi oldida amaliyotning murakkab masalalarini echishda ancha qulaylik yaratadi. C++ tilida inkapsulyatsiya printsipi sinf deb ataluvchi nostandart tiplarni(foydalanuvchi tiplarini) qosil qilish orqali qimoya qilinadi. To'qri aniqlangan sinf ob'ektini butun dasturiy modul sifatida ishlatish mumkin. qaqiqiy sinfning barcha ichki ishlari yashirin bo'lishi lozim. To'qri aniqlangan sinfning foydalanuvchilari uning qanday ishlashini bilishi shart emas, ular sinf qanday vazifani bajarishini bilsalar etarlidir. C++ tili ob'ektga mo'ljallangan dasturlash printsiplarini qo'llab quvvatlaydi. Bu printsiplar quyidagilardir: inkapsulyatsiya, merosxo'rlik, polimorfizm Inkapsulyatsiya. Agarda muqandis ishlab chiqarish jarayonida rezistorni qo'llasa, u buni yangidan ixtiro qilmaydi, omborga (magazinga) borib mos parametrlarga muvofiq kerakli detalni tanlaydi. Bu qolda muqandis joriy rezistor qanday tuzilganligiga e'tiborini qaratmaydi, rezistor faqatgina zavod xarakteristikalariga muvofiq ishlasa etarlidir. Aynan shu tashqi konstruktsiyada qo'llaniladigan yashirinlik yoki ob'ektni yashirinligi yoki avtonomligi xossasi inkapsulyatsiya deyiladi. Inkapsulyatsiya yordamida berilganlarni yashirish ta'minlanadi. Bu juda yaxshi xarakteristika bo'lib foydalanuvchi o'zi ishlatayotgan ob'ektning ichki ishlari qaqida umuman o'ylamaydi. qaqiqatan qam, xolodilnikni ishlatishda refrijektorni ishlash printsipini bilish shart emas. Yaxshi ishlab chiqilgan dastur ob'ektini qo'llashda uning ichki o'zgaruvchilarining o'zaro munosabati qaqida qayqurish zarur emas. Yana bir marta takrorlash joizki, rezistorni samarali qo'llash uchun uning ishlash printsipi va ichki qurilmalari qaqidagi ma'lumotlarni bilish umuman shart emas. Rezistorning barcha xususiyatlari inkapsulyatsiya qilingan, ya'ni yashirilgan. Rezistor faqatgina o'z funktsiyasini bajarishi etarlidir. 11 C++ tilida inkapsulyatsiya printsipi sinf deb ataluvchi nostandart tiplarni(foydalanuvchi tiplarini) qosil qilish orqali qimoya qilinadi. Sinflar qanday tuzilishga ega ekanligi bilan keyinroq tanishib chiqamiz. To'qri aniqlangan sinf ob'ektini butun dasturiy modul sifatida ishlatish mumkin. qaqiqiy sinfning barcha ichki ishlari yashirin bo'lishi lozim. To'qri aniqlangan sinfning foydalanuvchilari uning qanday ishlashini bilishi shart emas, ular sinf qanday vazifani bajarishini bilsalar etarlidir. Merosxo'rlik. Acme Motors kompaniyasi injenerlari yangi avtomobil konstruktsiyasini yaratishga aqd qilishsa, ular ikkita variantdan birini tanlashlari lozim. Birinchisi, avtomobilning konstruktsiyasini boshidan boshlab yangidan ixtiro qilish, ikkinchisi esa mavjud Star modelini o'zgartirishdir. Star modeli qariyb ideal, faqatgina unga turbokompressor va olti tezlanishli uzatma qo'shish lozim. Bosh muqandisikkinchi variantni tanladi. Ya'ni noldan boshlab qurishni emas, balki Star avtomobiliga ozgina o'zgartirish qilish orqali yaratishni tanladi. Uni yangi imkoniyatlar bilan rivojlantirmoqchi bo'ldi. Shuning uchun, yangi modelni Quasar deb nomlashni taklif qildi. Quasar-Star modeliga yangi detallarni qo'shish orqali yaratilgan. C++ tili qam shunday merosxo'rlikni qimoya qiladi. Bu yangi berilganlar tipi (sinf), oldindan mavjud bo'lgan sinfni kengaytirishdan qosil bo'ladi. Bunda yangi sinf oldingi sinfning merosxo'ri deb ataladi. Polimorfizm. Akselatorni bosilishida Star modeliga nisbatan yangi yaratilgan Quasar modelida boshqacharoq amallar bajarilishi mumkin. Quasar modelida dvigatelga yoqilqini sepuvchi injektor sistemasi va Star modelidagi korbyurator o'rniga turbokompressor o'rnatilgan bo'lishi mumkin. Lekin foydalanuvchi bu farqlarni bilishi shart emas. U rulga o'tirgach oddiygina akselatorni bosadi va avtomobilning mos reaktsiyasini kutadi. C++ tili bir xil nomdagi funktsiya turli ob'ekt tomonidan ishlatilganda turli amallarni bajarishi imkoniyatini ta'minlaydi. Bu funktsiya va sinfning polimorfligi 12 deb nomlanadi. Poli – ko'p, morfe – shakl degan ma'noni anglatadi. Polimorfizm – bu shaklning ko'p xilligidir. Bu tushunchalar bilan keyinchalik batafsil tanishamiz. Sinflar va sinf a'zolari. Yangi tip sinfni e'lon qilish bilan tuziladi. Sinf - bu bir – biri bilan funktsional orqali boqlangan o'zgaruvchilar va metodlar to'plamidir. Sinflarga amaliyotdan ko'pgina misollar keltirish mumkin. Masalan, avtomabilni qildirak, eshik, o'rindiq, oyna va boshqa qismlardan tashkil topgan kollektsiya yoki qaydash tezligini oshirish, to'xtatish, burish imkoniyatlariga ega bo'lgan ob'ekt deb tasavvur qilish mumkin. Avtomobil o'zida turli eqtiyot qismlarni va ularni funktsiyalarini inkapsulyatsiya qiladi. Avtomobil kabi sinfda qam inkapsulyatsiya qator imkoniyatlarni beradi. Barcha ma'lumotlar bitta ob'ektda yiqilgan va ularga osongina murojaat qilish, ularni o'zgartirish va ko'chirish mumkin. Sizning sinfingiz bilan ishlovchi dasturiy qismlar, ya'ni mijozlar sizning ob'ektingizdan, uning qanday ishlashidan tashvishlanmasdan, bemalol foydalanishlari mumkin. Sinf o'zgaruvchilarning ixtiyoriy kombinatsiyasidan, shuningdek boshqa sinflar tiplaridan iborat bo'lishi mumkin. Sinfdagi o'zgaruvchilar o'zgaruvchi – a'zolar yoki xossalar deyiladi. Sar sinfi o'rindiq, radiopriyomnik, shina va boshqa o'zgaruvchi - a'zolardan iborat. O'zgaruvchi – a'zolar faqatgina o'zlarining sinflarida yotadilar. qildirak va motor avtomobilning qanday tarkibiy qismi bo'lsa, o'zgaruvchi – a'zolar qam sinfning shunday tarkibiy qismidir. Sinfdagi funktsiyalar odatda o'zgaruvchi a'zolar ustida biror bir amal bajaradilar. Ular funktsiya – a'zolar yoki sinf metodlari deb aytiladi. Mashina sinfi metodlari qatoriga Haydash() va Tuxtatish() metodlari kiradi. Mushuk sinfi qayvonni yoshi va oqirligini ifodalovchi o'zgaruvchi – a'zolarga ega bo'lishi mumkin. Shuningdek, bu sinfning funktsional qismi Uxlash(), Miyovlash(), SichqonTutish() metodlaridan iborat bo'ladi. Funktsiya – a'zolar qam o'zgaruvchi a'zolar singari sinfda yotadi. Ular o'zgaruvchi a'zolar ustida amallar bajaradi va sinfni funktsional imkoniyatlarini aniqlaydi. Sinflar orasidagi munosabatlar. Murakkab sinflarni qosil qilishda oldin uni tashkil etuvchi oddiyroq sinflarni e'lon qilib, keyin esa ularni birlashtirish orqali 13 sinfni qosil qilish maqsadga muvofiqdir. Masalan, qildirak sinfi, motor sinfi, uzatish korobkasi sinfi va boshqa sinflarni qosil qilib, keyin esa ularni birlashtirish orqali avtomobil sinfini qurish oldimizga turgan masalani echishni ancha osonlashtiradi. Ikkinchi misolni ko'rib chiqamiz. To'qri to'rtburchak chiziqlardan tashkil topgan. Chiziq esa ikki nuqta orqali aniqlanadi. qar bir nuqta x va u koordinatalar yordamida aniqlanadi. To'qri to'rtburchak to'rtta nuqtani birlashtiruvchi to'rtta chiziq yordamida aniqlanadi. Bunda qar bir nuqta grafikda koordinatalarga ega bo'ladi. Shuning uchun oldin qar bir nuqtaning x, u koordinatalarini saqlash uchun Nuqta sinfi e'lon qilingan.. II. Amaliy qism Loyiha ishimning mavzusi “Kinоtеаtrdа аvtоmаtlаshtirilgаn ishchi o’rni (sеаnslаr grаfigi,nаrхi vа tоmоshаbinlаr ishtirоki хisоbi) “. Buni avtomotlashtirish uchun quyidagi dasturni tuzdim. U haqida quyida tanishib chiqamiz. 29 30 31 32 XULOSA Men kurs ishimda moqimli sinflar xaqida malumotlar berdim va strukturalarning qurilishiga misoollar keltirdim sinflar bilan ishlashni ko`rsatdim , fayllar bilab ishlshni ko`rib chiqdim. Amaliy misolimni qurilishini strukturada ishladim va blok sxemasini qurdim. Men dasturimni dev C++ da bajardim faylar bilan ishladin kiritish chiqarish oqimlaridan foydalandim oqimlisinflarning mazmuni biln tanishdim. C++ tilida dastur tuzishda oqimli sinflarning vazifasini o`rgandim. Ushbu kurs ishini bajarish davomida C++ dasturlash tilida dasturlash to’g’risidagi bilimlarimni amaliy jihatdan o’rgandim va nazariy bilimlarimni amaliy jihatdan mustahkamlab oldim. Dastur tuzish davomida C++ Builderda ma’lumotlar bazalari bilan ishlashni o’rgandim. Ma’lumotlar bazalarini dasturga bog’lash, ma’lumotlar bazalaridagi jadvallar bilan ishlash, ya’ni ma’lumotlarni qo’shish, qo’shilgan ma’lumotlarni o’zgartirish, o’chirish kabi amallarni bajarishni o’rganib oldim va amalga oshirdim. C++ Builderda mavjud bo’lgan ko’plab komponentalar 33 haqida ma’lumotga ega bo’ldim. Komponentalarning turlari, ularning vazifalari, dasturda yaratadigan qulayliklari haqida tushunchaga ega bo’ldim va ko’plab komponentalarni o’z dasturimni tuzish davomida ishlatdim. Kurs ishini bajarish davomida dasturdagi ko’plab komponentalar palitrasidan, komponentalardan foydalanishni o’rgandim.O’z dasturimni tayyorlash jarayonida dasturda yuzaga kelishi mumkin bo’lgan hatoliklar, hamda turli xildagi istisno holatlarni oldindan bilib, ularni bartaraf qilish bo’yicha kerakli chora tadbirlarni amalga oshirdim.Dasturda hatolikka olib keladigan ma’lumotlar kiritilganda foydalanuvchini ogoxlantirish xabarlarini chiqaruvchi dastur kodlaridan foydalandim.

//C++ PROYEKT


//DASTUR NURTEKS TRIKOTAJ FIRMASI UCHUN YOZILDI


#include


#include
#include
#include
#include
#include

using namespace std;


//CLASS boshlanishi


class firma


{

int room_no;


char name[30];
char fname[50];
char ishvaqti[50];
char phone[20];

public:

void main_menu();
void add();
void display();
void rooms();
void edit();
int check(int);
void modify(int);
void delete_rec(int);
void bill(int);
};
//CLASS tugadi
void firma::main_menu()
{

int gs;
while(gs!=5)


{

system("cls");


cout<<"\n\t\t\t\::::::::::::::::::::::::::\ NURTEKS :::::::::::::::::::::::::::::::: ";
cout<<"\n\t\t\t\t *****************************";
cout<<"\n\t\t\t\t * XUSH KELIBSIZ *";
cout<<"\n\n\n\t\t\t1. Maxsulotni ro'yxatga olish ";
cout<<"\n\t\t\t2. Ishlab chiqarilgan maxulotni QR raqami orqali qidirish";
cout<<"\n\t\t\t3. Maxsulotlar jadvali ";
cout<<"\n\t\t\t4. Maxsulotlar malumotlarini taxrirlash ";
cout<<"\n\t\t\t5.Chiqish";
cout<<"\n\n\t\t\tTanlovingizni Kiriting: ";
cin>>gs;

switch(gs)


{

case 1: add();


break;

case 2: display();


break;

case 3: rooms();


break;

case 4: edit();


break;

case 5: break;


default:
{


cout<<"\n\n\t\t\tNoto'g'ri tanlov.....!!!";


cout<<"\n\t\t\tDavom ettirish uchun enter tugmasini bosing....!!";
getch();

}


}

}


}
void firma::add()
{

system("cls");


int r,flag;
ofstream fout("Record.dat",ios::app);

cout<<"\n ";


cout<<"\n -----------------------------";
cout <<"\n Malumotlar bazasiga kiritilayotgan maxsulot QR raqamini kiriting :- "<cin>>r;

flag=check(r);


if(flag)
cout<<"\n Uzr..!!!Bunday maxsulot QR raqami bazada mavjud emas yoki bazaga allaqachon kiritilgan.... ";


else
{


room_no=r;


cout<<" Maxsulot nomi : ";
cin>>name;
cout<<" Maxsulot tan-narxi : ";
cin>>fname;
cout<<" Qaysi do'kon uchun ishlab chiqarildi :";
cin>>ishvaqti;
cout<<" ishlab chiqarilgan sana : ";
cin>>phone;

fout.write((char*)this,sizeof(firma));


cout<<"\n Malumotlar Muvoffaqiyatli saqlandi...!!!";

}


cout<<"\n Bosh menyuga qaytish uchun enter tugmasini boshing.....!!";

getch();
fout.close();


}
void firma::display()


{

system("cls");


ifstream fin("Record.dat",ios::in);


int r,flag;

cout<<"\n Maxsulot QR raqamini kiriting. Muayyan maxsulotning tafsilotlari uchun :- "<
cin>>r;

while(!fin.eof())


{

fin.read((char*)this,sizeof(firma));


if(room_no==r)
{

system("cls");


cout<<"\n Malumotlar ";
cout<<"\n ----------------";
cout<<"\n\n Maxsulot QR raqami: "<cout<<"\n Maxsulot nomi: "<cout<<"\n Maxsulot tan-narxi:"<cout<<" Qasi dokon uchun ishlab chiqarildi:"<cout<<"\n Ishlab chiqarilgan sana: "<
flag=1;
break;

}


}

if(flag==0)


cout<<"\n Kechirasiz bunday maxsulot QR raqami bazadan ro'yxatidan o'tmagan....!!";
cout<<"\n\n Davom etish uchun istalgan tugmani bosing....!!";

getch();
fin.close();


}
void firma::rooms()
{

system("cls");


ifstream fin("Record.dat",ios::in);


cout<<"\n\t\t\t Maxsulot malumotlari ";
cout<<"\n\t\t\t ----------------------";
cout<<"\n\n QR raqami.\t\tNomi\t\t Narxi\t\t\t qayer uchun\t\t\tIshlab chiqarilgan sana.\n";

while(!fin.eof())


{

fin.read((char*)this,sizeof(firma));


cout<<"\n\n "<cout<<"\t\t\t"<

}


cout<<"\n\n\n\t\t\tDavom etish uchun istalgan tugmani bosing.....!!";
getch();
fin.close();

}
void firma::edit()


{

system("cls");


int choice,r;


cout<<"\n EDIT MENU";
cout<<"\n ---------";
cout<<"\n\n 1.Maxsulot malumotlarini o'zgartirish ";
cout<<"\n 2.Maxsulot malumotlarini o'chirish ";
cout<<"\n 3.Maxsulot malumotlarini tekshirish ";
cout<<"\n Tanlovingizni kiriting: ";

cin>>choice;


system("cls");

cout<<"\n Maxsulot QR raqamini kiriting: " ;


cin>>r;

switch(choice)


{

case 1: modify(r);


break;

case 2: delete_rec(r);


break;

case 3: bill(r);


break;

default: cout<<"\n Noto'g'ri tanlov.....!!";


}
cout<<"\n Davom etish uchun istalgan tugmani bosing....!!!";


getch();
}


int firma::check(int r)
{

int flag=0;


ifstream fin("Record.dat",ios::in);


while(!fin.eof())


{

fin.read((char*)this,sizeof(firma));


if(room_no==r)
{

flag=1;
break;


}


}

fin.close();


return(flag);

}


void firma::modify(int r)
{

long pos,flag=0;


fstream file("Record.dat",ios::in|ios::out|ios::binary);


while(!file.eof())


{

pos=file.tellg();


file.read((char*)this,sizeof(firma));

if(room_no==r)


{

cout<<"\n Yangi Tafsilotlarni Kiriting ";


cout<<"\n -----------------";
cout<<"\n Maxsulot nomi : ";
cin>>name;
cout<<"\n Maxsulot tan-narxi : ";
cin>>fname;
cout<<"Qaysi dokon uchun ishlab chiqarilgan :";
cin>>ishvaqti;
cout<<" Ishlab chirarilgan sana : ";
cin>>phone;
file.seekg(pos);
file.write((char*)this,sizeof(firma));
cout<<"\n Malumot o'zgartirildi....!!";
flag=1;
break;

}


}

if(flag==0)


cout<<"\n Bunday maxsulot QR raqami bazaga kiritilmagan...!!";
file.close();

}


//O'zgartirish funksiyasi ishga tushadi
void firma::delete_rec(int r)
{

int flag=0;


char ch;
ifstream fin("Record.dat",ios::in);
ofstream fout("temp.dat",ios::out);

while(!fin.eof())


{

fin.read((char*)this,sizeof(firma));


if(room_no==r)

{


cout<<"\n Maxsulot nomi: "<cout<<"\n Maxsulot tan-narxi : "<cout<<"\n Maxsulotga mijoz dokon :"<cout<<"\n Ishlab chiqarilgan sana : "<
cout<<"\n\n Siz bu naxsulot malumotini o'chirishni istaysimi : ";
cin>>ch;

if(ch=='n')


fout.write((char*)this,sizeof(firma));
flag=1;

}


else
fout.write((char*)this,sizeof(firma));

}


fin.close();
fout.close();

if(flag==0)


cout<<"\n Bunday maxsulot QR raqami bazada mavjud emas...!!";

else
{


remove("Record.dat");


rename("temp.dat","Record.dat");

}


}
//o'chirish qismi tugadi
//for operatori

void firma::bill(int r)


{

firma h1;


ifstream f1;
f1.open("record.dat",ios::in|ios::binary);

if(!f1)
cout<<"cannot open";


else
{


f1.read((char*)&h1,sizeof (firma));


while(f1)

{


f1.read((char*)&h1,sizeof(firma));

}


if (h1.room_no == r)
{

}


else
{ cout<<"..............";}

}


f1.close();
getch();

}


//Billing qism tugadi

//Bosh menyuga start


int main()
{

firma h;

system("cls");

cout<<"\n\t\t\t\ \xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2";


cout<<"\n\t\t\t* NURTEKS ISHLAB CHIQARISHNI AVTOMATLASHTIRISH VA RO'YXATGA OLISH XIZMATIGA XUSH KELIBSIZ *";
cout<<"\n\t\t\t\ \xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2\xB2";
cout<<"\n\n\n\n\n\n\n\t\t\t\t\tDavom ettirish uchun enter tugmasini bosing....!!";

getch();



h.main_menu();
return 0;
}



Download 0.69 Mb.

Do'stlaringiz bilan baham:
  1   2




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