O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI Dif 317-20 guruh talabasi: Berdiyev Ma’ruf Qabul qildi: Latipova Nodira Toshkent 2023 INDIVIDUAL LOYIHA II 1. Tanlangan mavzu nomi “Haydovchilik guvohnomasi olish uchun online test sinovi” veb ilovasini loyihalash 3. Anatatsiya Haydovchilik guvohnomasi olish uchun online test sinovi web ilovalari, haydovchilik litsenziyasi olish uchun sertifikat sinovlarini o'tkazishga imkon beradigan virtual sinov tizimlaridir. Bu tizimlar, potensial haydovchilar uchun qo'llanmalar va bilimlar jamlanmasini tekshirish imkonini beradi . 4. Loyiha ishini bajarishdan olingan natijalar Foydalanuvchilar uchun qulay va tushunarli interfesy (inglizcha interface) Kiritiladigan ma’lumotlar asosan maqola shaklida bo‘ladi, bu esa ma’lumotlarni dinamik shaklda boshqarish imkonini beradi 5. Ishni topshirih muddati 15.05.2023 1 MUNDARIJA KIRISH...................................................................................................................3 Asosiy qism.............................................................................................................3 I. BOB VEB DASTURLASH ASOSLARI VA ZAMONAVIY PLATFORMALAR...............................................................................................6 1.1 Server texnalogiyalar…………………………………………………...5 1.2 .Net dasturlash tili………………………………………………….…...8 1.3 Veb sayt yaratish asoslarini o‘rgatuvchi veb ilovalar yaratishning zamonaviy tizimlari………………………………………………………..10 II. .NET VA MSSQL YORDAMIDA VEB ILOVAMIZ SAYTINI YARATISH……………………………………………………………...………….....12 2.1 .NET va MSSQL bog‘liqligi va ma’lumotlar bazasini boshqarish tizimi.………………………………………………………………………13 2.2 .NET yordamida ma’lumotlar bazasiga bog‘lanish……......................................................................……………...14 2.3 Internet tarmog‘ida saytlarni ishlab chiqish uchun veb sayt yaratish asoslarini o‘rgatuvchi kuchli veb ilovani ishlab chiqish…………………..17 III .XULOSA.....................................................................................................25.1 IV Code bo’limi .................................................................................................27 FOYDALANILGAN ADABIYOTLAR……………………………………….22 2 KIRISH NET da kodlangan va MSSQL dan foydalanadigan kalendar kuni birliklarini o'zgartiruvchi veb-sayt ma'lumotlar bazasini boshqarish tizimi foydalanuvchilarga sanalarni turli kalendar tizimlari o'rtasida o'zgartirish imkonini berishi mumkin. Masalan, veb-sayt foydalanuvchilarga sanalarni Grigoriy taqvimi (ko'pgina G'arb mamlakatlarida qo'llaniladi) va Julian taqvimi, Islom taqvimi yoki ibroniy taqvimi kabi boshqa kalendarlar o'rtasida o'zgartirishga ruxsat berishi mumkin. Shu bilan bir qatorda, veb-sayt foydalanuvchilarga bir xil kalendar tizimida turli vaqt birliklari o'rtasida sanalarni aylantirish imkonini berishi mumkin. Masalan, foydalanuvchilar Grigorian taqvimida kunlar, haftalar, oylar yoki yillar oralig'ida konvertatsiya qilishlari mumkin edi. Veb-sayt shuningdek, ikki sana orasidagi kunlar sonini hisoblash, berilgan sanadan ma'lum kunlar sonini qo'shish yoki ayirish yoki joriy sanani turli kalendar tizimlarida ko'rsatish kabi qo'shimcha funktsiyalarni taqdim etishi mumkin. Umuman olganda, .NET-da kodlangan va MSSQL-dan ma'lumotlar bazasini boshqarish tizimi sifatida foydalaniladigan kalendar kun birliklarini o'zgartiruvchi veb-sayt turli kalendar tizimlarida sanalar bilan ishlash yoki bir xil taqvim tizimida turli vaqt birliklari o'rtasida konvertatsiya qilish kerak bo'lgan odamlar uchun foydali vosita bo'ladi. Mavzuning dolzarbligi: .NET da kodlangan va MSSQL dan foydalangan holda taqvim kuni birliklarini o'zgartiruvchi veb-sayt mavzusi bir qator kontekstlarda dolzarbdir. Birinchidan, turli kalendar tizimlarida sana va vaqt bilan ishlaydigan odamlar, masalan, tarixchilar, genealoglar yoki xalqaro biznesda ishlaydigan odamlar uchun bunday vosita juda foydali bo'lishi mumkin. Bu ularga turli taqvim tizimlari o'rtasida osongina konvertatsiya qilish va notanish kalendarlar bilan ishlashda yuzaga kelishi mumkin bo'lgan xatolardan qochish imkonini beradi. 3 Ikkinchidan, .NET va MSSQL bilan ishlaydigan dasturchilar uchun veb-sayt ushbu texnologiyalar yordamida kalendar kun birliklari konvertorini qanday amalga oshirishning foydali namunasi bo'lib xizmat qilishi mumkin. Shuningdek, ushbu kontekstda ma'lumotlar bazasini loyihalash va optimallashtirish bo'yicha eng yaxshi amaliyotlar haqida tushuncha berishi mumkin. Va nihoyat, talabalar yoki taqvim va vaqtni hisoblash haqida ko'proq ma'lumot olishni istaganlar uchun veb-sayt qimmatli ta'lim vositasi bo'lishi mumkin. Bu turli xil kalendar tizimlari va vaqt birliklarini o'rganish uchun qulay interfeys, shuningdek, ular qanday ishlashi va nima uchun ishlatilishini tushuntirishi mumkin. Ishning maqsadi: .NET va MSSQL yordamida kalendar kun birliklarini o'zgartiruvchi veb-sayt yaratishdan maqsad turli kalendar tizimlari yoki vaqt birliklari o'rtasida konvertatsiya qilish kerak bo'lgan odamlar uchun amaliy yechimni taqdim etishdir. Bundan tashqari, u .NET va MSSQL bilan ishlashga qiziqqan dasturchilar uchun qimmatli o'rganish tajribasi bo'lib xizmat qilishi mumkin. Masalaning qo’yilishi: Muammo .NET va MSSQL-dan foydalangan holda taqvim kun birliklarini o'zgartiruvchi veb-saytni yaratishdir, bu foydalanuvchilarga bir xil kalendar tizimida turli xil kalendar tizimlari va vaqt birliklari o'rtasida sanalarni aylantirish imkonini beradi. Veb-sayt ma'lumotlar bazasi dizayni va ishlashini optimallashtirishga qaratilgan holda foydalanuvchilarga qulay, intuitiv va sezgir bo'lishi kerak. Bundan tashqari, veb-sayt bir nechta tillarni va madaniy konventsiyalarni qo'llab-quvvatlashi va xatolarni qayta ishlash, disk raskadrovka va xavfsizlik uchun xususiyatlarni o'z ichiga olishi kerak. Veb-saytning maqsadi turli kalendar tizimlari va vaqt birliklarida sana va vaqt bilan ishlashga muhtoj bo'lgan odamlar uchun amaliy yechim, shuningdek, .NET va MSSQL bilan ishlashga qiziqqan dasturchilar uchun o'rganish imkoniyati. 4 O‘rganilgan masalalar: • Taqvim tizimlari va sanani o'zgartirish: Turli kalendar tizimlarini o'rganish va ular o'rtasida sanalarni qanday o'zgartirishni o'rganish, jumladan, algoritmlar va hisob-kitoblar. • Ma'lumotlar bazasini loyihalash va optimallashtirish: MSSQL yordamida ma'lumotlar bazalarini loyihalash va optimallashtirish bo'yicha ilg'or tajribalarni o'rganish, shu jumladan unumdorlikni oshirish va ma'lumotlarning ortiqchaligini minimallashtirish usullari. • Foydalanuvchi interfeysi dizayni va qulayligi: Intuitiv, foydalanuvchilar uchun qulay va foydalanish mumkin bo'lgan foydalanuvchi interfeyslarini loyihalash bo'yicha eng yaxshi amaliyotlarni o'rganish, shu jumladan sezgir dizayn va o'zaro brauzer muvofiqligi. • Mahalliylashtirish va xalqarolashtirish: veb-saytdagi bir nechta tillar va madaniy konventsiyalarni, jumladan sana va vaqtni formatlash, tarjima va mintaqaviy sozlamalarni qo'llab-quvvatlash usullarini o'rganish. 5 I. BOB VEB DASTURLASH ASOSLARI VA ZAMONAVIY PLATFORMALAR 1.1 Server texnologiyalar Bitta Veb serverda bir qancha tashkilot yoki korxonalarning Veb saytlari Veb sahifalari joylashishi mumkin. WWW texnologiyasida biror bir informatsion resursga quyidagi yo‘llar bilan bog’lanish mumkin. 1.1 - rasm 1. Unikal nomer va marshrutga ga ega bo‘lgan, berilganlarni shu marshrutlar orqali oldi-berdi kiruvchi IP – tarmoqlar. Bular DNS nomlar servisi bilan ishlaydi. 2. WWW server mavjud bo‘lib u WWW klientlar so‘rovlariga javob qaytaradi. So‘rovda axborotlar gipertekstli hujjatlar shaklida bo‘ladi. Bu hujjatlar HTML – gipertekstli hujjatlarni hosil qiluvchi tilda bo‘lishi lozim. Bu hujjatlar statik ko‘rinishda yoki dinamik ko‘rinishda bo‘ladi. Statik ko‘rinishda hujjatlar fayllar shaklida disklarda saqlanadi. Dinamik shaklda esa so‘rov parametrlariga qarab maxsus dasturiy ta’minot orqali dinamik holda hosil qilinadi Dinamik hujjatlar yaratishda, WWW server maxsus CGI dasturlari shaklida hosil qilinadi. 6 Veb sahifa va veb saytlarga xizmat ko‘rsatish uchun mezbon kompyuterlar va serverlarda ishlatish uchun server dasturiy ta’minoti kerak bo‘ladi. Veb saytlar va bu saytlarni yaratish, boshqarish uchun mo`ljallangan dasturiy ta’minot mezbon kompyuterda joylashgan bo‘ladi, mezbon kompyuterlar bog’lanish protokollarini boshqaradi. Mezbon kompyuterlar Unix, Windows yoki Macintosh kabi turli operatsion tizim ostida ishlaydilar. Bu operatsion tizimlarning hammasi tarkibiga TCP/IP protokolini qo‘llab-quvvatlovchi dasturiy vositalar kiradi. Server dasturiy ta’minoti serverlarda joylashgan bo‘lib, klient kompyuteridagi veb brauzer talablariga ko‘ra so‘ralgan veb sahifalarga xizmat ko‘rsatadi va boshqa amallarni bajaradi. Server dasturiy ta’minoti TCP/IP bog‘lanishlar uchun javob bermaydi. Buni serverdagi operatsion tizim bajaradi. Lekin server dasturiy ta’minoti operatsion tizim yordamida HTTP bog‘lanishlar va talablarini qo‘lga kiritadi va ularni qayta ishlaydi. Server dasturiy ta’minotining har xil turlari, masalan ma’lumotlar ombori serveri, FTP serveri, tarmoq serverlari mavjud. Xususan, veb server HTTP serverining bir turi bo‘lib, uning vazifasiga klient kompyuterlariga HTTP protokoli yordamida turli ma’lumotlarni jo‘natish kiradi. Odatda, klient kompyuteridagi veb brauzer serverga HTML xujjatni jo‘natish kabi talablarni qo‘yadi. Server bunday talablarni olgach, unga javob beradi. Bu javobning boshida uzatish haqida ma’lumot, qolgan qismi HTML fayldan iborat bo‘ladi. Albatta, veb serverlar sahifalarni veb brauzerga uzatishdan boshqa ishlarni ham qiladi. U veb sahifadagi CGI stsenariylarini mos CGI ilovalariga uzatadi. Bu stsenariylar tashqi mini-dasturlarni ishga tushiradi. Zarurat bo‘lganda, bu dasturlar ishining natijalarini veb server orqaga veb brauzerga qaytaradi. Bulardan tashqari, veb serverlar tarkibiga konfiguratsiya fayllari va utilitlar kiradi, ular veb saytlarni turli usullarda himoya qilish va boshqarish imkonini beradilar. 7 1.2 .NET dаsturlаsh tili .NET zamonaviy ilovalarni yaratish uchun bepul, ochiq manbali, krossplatforma asosidir. U Microsoft tomonidan ishlab chiqilgan va birinchi marta 2002 yilda chiqarilgan. Ramka ikki asosiy komponentdan iborat: Common Language Runtime (CLR) va .NET Class Library. CLR .NET tillarida yozilgan kodni bajaradigan vosita bo'lib, .NET Class Library esa ishlab chiquvchilar uchun qayta foydalanish mumkin bo'lgan sinflar va funktsiyalar to'plamini taqdim etadi. .NET bilan foydalanish mumkin bo'lgan bir nechta dasturlash tillari mavjud, jumladan C#, F#, Visual Basic va boshqalar. C# tili .NET ni ishlab chiqishda eng ko'p qo'llaniladigan til bo'lib, sodda, zamonaviy va ob'ektga yo'naltirilgan bo'lishi uchun yaratilgan. F# funktsional dasturlash tili bo'lib, ma'lumotlarni ko'p talab qiladigan va ilmiy hisoblash ilovalari uchun juda mos keladi. .NET ning asosiy afzalliklaridan biri uning platformalararo muvofiqligidir. .NET bilan yaratilgan ilovalar Windows, macOS va Linuxda ishlashi mumkin, bu esa uni ko'p qirrali va moslashuvchan ramkaga aylantiradi. Bundan tashqari, .NET dasturchilarga yuqori sifatli ilovalarni tezda yaratishni osonlashtirib, ishlab chiqish vositalari va kutubxonalarning boy to‘plamini taqdim etadi. .NET dan ba'zi bir keng tarqalgan foydalanish ish stoli ilovalari, vebilovalar, mobil ilovalar va bulutga asoslangan xizmatlarni yaratishni o'z ichiga oladi. Ramka, shuningdek, korxonalarni rivojlantirishda keng qo'llaniladi, ko'plab yirik tashkilotlar o'zlarining muhim ilovalari uchun .NET ni qo'llaydilar. Xulosa qilib aytganda, .NET zamonaviy ilovalarni yaratish uchun kuchli va ko'p qirrali ramka hisoblanadi. U keng ko'lamli ishlab chiqish vositalarini taqdim etadi va bir nechta dasturlash tillarini qo'llab-quvvatlaydi, bu esa uni ishlab chiquvchilar uchun mashhur tanlovga aylantiradi. O'zining platformalararo muvofiqligi va mustahkam funktsiyalar to'plami bilan .NET turli xil ilovalar va xizmatlarni yaratish uchun ajoyib tanlovdir. 8 C# Misol: 1-rasm. 1-rasm. Ushbu misolda biz xossa va usul bilan oddiy sinfni aniqlaymiz. Keyin biz sinfning namunasini yaratamiz, xususiyatni o'rnatamiz va salomlashish uchun usulni chaqiramiz. F# Misol: 2-rasm. Ushbu misolda biz n-Fibonachchi sonini hisoblash uchun rekursiv funktsiyani aniqlaymiz. Keyin biz 10 qiymatiga ega funktsiyani chaqiramiz va natijani chiqaramiz. E'tibor bering, F# funktsional dasturlash tilidir, shuning uchun sintaksis C# yoki boshqa ob'ektga yo'naltirilgan tillardan ancha farq qiladi. 9 Veb sayt yaratish asoslarini o‘rgatuvchi veb ilovalar yaratishning zamonaviy tizimlari Veb-ilovalarni yaratish haqida gap ketganda, siz boshlashingizga yordam beradigan turli xil zamonaviy tizimlar va vositalar mavjud. Ushbu tizimlar odatda veb-ilovalarni yaratish uchun asosni, shuningdek, tezda ishga tushishingizga yordam beradigan kutubxonalar, asboblar va andozalar to'plamini taqdim etadi. Veb-ilovalarni yaratish uchun mashhur tizimlardan biri bu MEAN stekidir, u MongoDB (NoSQL ma'lumotlar bazasi), Express (Node.js uchun veb-ramka), Angular (front-end ramka) va Node.js (server-) dan iborat. yon JavaScript ish vaqti). MEAN stek dinamik va kengaytiriladigan veb-ilovalarni yaratish uchun juda mos keladi. Veb-ilovalarni yaratishning yana bir mashhur tizimi bu MERN stekidir, u MEAN stekiga o'xshaydi, lekin Angular o'rniga React (javascript-ning oldingi kutubxonasi) dan foydalanadi. MERN to'plami, ayniqsa, bir sahifali ilovalarni (SPA) yaratish uchun juda mos keladi. Ushbu steklardan tashqari, Ruby on Rails, Django, Flask va Laravel kabi turli xil veb-ishlab chiqish ramkalari va vositalari ham mavjud. Ushbu ramkalar Ruby, Python yoki PHP kabi muayyan dasturlash tillarida veb-ilovalarni yaratish uchun vositalar va kutubxonalar to'plamini taqdim etadi. Veb-sayt yaratish asoslarini o'rgatish haqida gap ketganda, ushbu zamonaviy tizim va vositalardan foydalanadigan turli xil manbalar mavjud. Ko'pgina onlayn kurslar va o'quv qo'llanmalar HTML, CSS, JavaScript va vebishlab chiqish ramkalari kabi mavzularni qamrab oladi va veb-ilovalarni yaratishda mashq qilishda yordam beradigan amaliy loyihalarni taqdim etadi. Veb-ilovalarni yaratish uchun ba'zi zamonaviy tizimlar va vositalarni ko'rsatadigan diagramma: 10 11 II. BOB .NET VA MSSQL YORDAMIDA VEB ILOVAMIZ SAYTINI YARATISH 2.1 .NET va MSSQL bog‘liqligi va MSSQL ma’lumotlar bazasini boshqarishtizimi .NET va MSSQL veb-ilovalarni yaratishda birgalikda ishlatiladigan ikkita texnologiyadir. .NET ramkasi Microsoft tomonidan yaratilgan ishlab chiqish platformasi boʻlib, ishlab chiquvchilarga C#, F# va Visual Basic kabi turli dasturlash tillaridan foydalangan holda ilovalarni yaratish va oʻrnatish usullarini taqdim etadi. Boshqa tomondan, MSSQL, shuningdek, Microsoft tomonidan yaratilgan ma'lumotlar bazasini boshqarish tizimi bo'lib, u ilovalar uchun ma'lumotlarni saqlash va olishning samarali va xavfsiz usulini ta'minlaydi. MSSQL-ni .NET bilan ishlatish uchun ishlab chiquvchilar odatda ma'lumotlar bazalari bilan o'zaro aloqa qilish uchun kutubxonalar to'plamini taqdim etadigan ADO.NET kabi ma'lumotlarga kirish texnologiyasidan foydalanadilar. ADO.NET .NET dasturchilariga MSSQL ma'lumotlar bazalariga ulanishlar yaratish, so'rovlarni bajarish va ma'lumotlarni olish va tranzaksiyalarni boshqarish imkonini beradi. MSSQL ma'lumotlar bazasiga ulanish va ma'lumotlarni olish uchun ADO.NET dan qanday foydalanishga misol: using System; using System.Data.SqlClient; namespace MyApplication { class Program { static void Main(string[] args) { 12 // Set connection string string connectionString Source=myServerAddress;Initial = "Data Catalog=myDatabase;User ID=myUsername;Password=myPassword"; // Create connection using (SqlConnection connection = new SqlConnection(connectionString)) { // Open connection connection.Open(); // Create command string query = "SELECT * FROM Customers"; using (SqlCommand command = new reader = SqlCommand(query, connection)) { // Execute reader using (SqlDataReader command.ExecuteReader()) { // Read and output results while (reader.Read()) { Console.WriteLine(reader["CustomerName"].ToString()); } } } 13 } } } } ADO.NET dan tashqari, ishlab chiquvchilar, shuningdek, Entity Framework, NHibernate va Dapper kabi turli xil ORM (Object-Relational Mapping) ramkalaridan foydalanishlari mumkin, ular ma'lumotlar bazasi ustida abstraksiya qatlamini ta'minlaydi va ma'lumotlar bazasi jadvallarini . NET. MSSQL ma'lumotlar bazalarini boshqarish haqida gap ketganda, Microsoft turli xil vositalarni taqdim etadi, jumladan SQL Server Management Studio (SSMS) va Azure Data Studio. Ushbu vositalar ma'lumotlar bazasi ma'murlariga ma'lumotlar bazalarini boshqarish, jadvallar va ko'rinishlar yaratish, so'rovlarni bajarish va ishlashni kuzatish imkonini beradi. Bundan tashqari, MSSQL ushbu vositalar orqali boshqarilishi mumkin bo'lgan replikatsiya, zaxiralash va tiklash va xavfsizlik opsiyalari kabi xususiyatlarni qo'llab-quvvatlaydi. Umuman olganda, .NET va MSSQL kombinatsiyasi ishlab chiquvchilarga ma'lumotlarni xavfsiz va ishonchli tarzda saqlashi va olishi mumkin bo'lgan veb-ilovalarni yaratishning kuchli va samarali usulini taqdim etadi. 2.2 Internet tarmog‘ida saytlarni ishlab chiqish uchun veb sayt yaratish asoslarini o‘rgatuvchi kuchli veb ilovani ishlab chiqish. Veb-saytlarni ishlab chiqish asoslarini o'rgatadigan kuchli veb-ilovani ishlab chiqish yangi boshlanuvchilarni veb-ishlab chiqish kontseptsiyalari bilan tanishtirish va ularning ko'nikmalarini rivojlantirishga yordam berishning 14 ajoyib usuli bo'lishi mumkin. Qanday boshlash kerakligi haqida ba'zi maslahatlar: Maqsadli auditoriyangizni aniqlash: maqsadli auditoriyangiz kimligini va ular nimaga erishmoqchi ekanligini ko'rib chiqing. Ular hech qanday tajribaga ega bo'lmagan yangi boshlanuvchilarmi yoki HTML, CSS va JavaScript bo'yicha ba'zi asosiy bilimlarga egami? Maqsadli auditoriyangizni aniqlash sizning veb-ilovangiz uchun mos murakkablik va tarkib darajasini aniqlashga yordam beradi. Dasturlash tili va veb-ishlab chiqish ramkasini tanlang: Ruby on Rails, Django, Flask yoki .NET kabi turli xil dasturlash tillari va veb-ishlab chiqish ramkalari mavjud. Maqsadlaringiz, maqsadli auditoriyangiz va rivojlanish ko'nikmalaringizga qaysi til va ramka eng mos kelishini ko'rib chiqamiz. Veb-ilovangizning funksiyalari va funksionalligini rejalashtirish: Vebilovangizga foydalanuvchi autentifikatsiyasi, kontentni boshqarish va interaktiv elementlar kabi kiritmoqchi boʻlgan xususiyatlar va funksiyalarni aniqlang. Tartib va tuzilmani tasavvur qilishda yordam berish uchun vebilovangizning simli ramkasi yoki maketini yaratamiz. Veb-saytlarni ishlab chiqishning asosiy kontseptsiyalarini amalga oshiring: Foydalanuvchilaringizni HTML, CSS va JavaScript kabi veb-saytlarni ishlab chiqishning asosiy tushunchalari bilan tanishtiring. Foydalanuvchilarga o'z ko'nikmalarini rivojlantirish va o'rganganlarini amalda qo'llashga yordam beradigan oddiy qo'llanmalar va mashqlar yaratamiz. Kengaytirilgan funksiyalar va funksionallikni qoʻshing: Foydalanuvchilar oʻsib borishi bilan siz veb-ilovangizga API-larni integratsiyalash, maxsus animatsiyalar va effektlarni yaratish va yanada ilgʻor veb-ishlab chiqish konsepsiyalaridan foydalanish kabi ilgʻor xususiyatlar va funksiyalarni 15 qoʻshishimiz mumkin. Veb-ilovangizni sinab ko'ring va yangilang: veb-ilovangizni kutilgandek ishlashiga va maqsadli auditoriyangiz ehtiyojlariga javob berishiga ishonch hosil qilish uchun doimiy ravishda sinovdan o'tkazing va takomillashtiring. Foydalanuvchilarning fikr-mulohazalarini to'plang va foydalanuvchi tajribasini yaxshilash uchun kerak bo'lganda tuzatishlar kiritamiz. Umuman olganda, veb-saytlarni ishlab chiqish asoslarini o'rgatuvchi kuchli veb-ilovani ishlab chiqish puxta rejalashtirishni, maqsadli auditoriyangizni puxta o'ylab ko'rishni va foydalanuvchilarga o'z ko'nikmalari va bilimlarini oshirishga yordam beradigan qimmatli kontent va interaktiv xususiyatlarni taqdim etishga e'tiborni talab qiladi. 1) Ilovaning ishga tushushi : 16 2)Ilovadan ruyhatdan o’tish 3)Ro’yhatdan o’tgandan so’ng, home oynasi 17 4) Profile oynasi 5) Til tanlash bo’limi 6)Testni boshlash buttini 18 7)Bilet tanlash oynasi 19 8) Testlar oynasi 20 9) Javob tanlanganda ekranda hosil bo’lgan natija 10)Pagination qismi 11)Natija oynasi 21 12)Foydalanuvchilar ro’yxati bo’limi 22 13)Statistika bo’limi 14)Dastur xaqidagi oyna 23 Xulosa Haydovchilik guvohnomasi olish uchun online test sinovi web ilovalari, haydovchilik bilimlarini oshirish va sinovlarda ishtirok etish imkonini beradigan foydali resurslar hisoblanadi. Bu tizimlar, haydovchilikni o'rganishga va haydovchilik guvohnomasi olishga qiziqishgan odamlar uchun keng doirasidagi ma'lumotlar, savol-javoblar, tahlil va sertifikat taqdim etadi. Bu ilovalar orqali, iste'molchilar test sinovlarini o'tkazib, haydovchilikning turli sohalarini tahlil qilish, xatolarini aniqlash va umumiy natijalarni o'rganish imkoniyatiga ega bo'ladi. Bu natijalar, iste'molchilar uchun shaxsiy tarzda bo'lgan bilimlarni identifikatsiya qilishga yordam beradi va ularni o'zlashtirilgan ma'lumotlarni oshirishga imkon beradi. Bundan tashqari, muvaffaqiyatli test natijalarini olish uchun online tizimlar sertifikatlar taklif etadi. Bu sertifikatlar, haydovchilik sohasidagi bilim va malakangizni tasdiqlaydi va ish topishda, yangi imkoniyatlarga ega bo'lishda yoki qo'shimcha ta'lim olganingizni ko'rsatishda foydali bo'ladi. 24 Shuningdek, online test sinovi web ilovalari foydalanuvchilarga haydovchilikning eng yangi xilma-xilliklari, qoidalari va tarixiy ma'lumotlarni taqdim etish orqali haydovchilik bilimlarini yangilashga yordam beradi. Bu, haydovchilik sohasida rivojlanishni davom ettirish va haydovchilar uchun mustahkam va afzal imkoniyatlar yaratishga qaratilgan qulay usuldir..NET yordamida veb-sayt yaratishning muhim afzalliklaridan biri bu ishlab chiquvchilar uchun mavjud vositalar va xususiyatlarning mustahkam to'plamidir. .NET ramkasi ishlab chiquvchilarga kuchli va kengaytiriladigan ilovalarni yaratishda yordam beradigan keng doiradagi vositalar va kutubxonalarni taqdim etadi. Bundan tashqari, MSSQL bilan integratsiya ma'lumotlarni samarali saqlash va olish imkonini beradi, bu esa katta hajmdagi ma'lumotlarni boshqarishni osonlashtiradi. Bundan tashqari, foydalanuvchilarga qulay va sezgir veb-sayt yaratish foydalanuvchi interfeysi dizayni va qulayligiga diqqat bilan e'tibor berishni talab qiladi. Ishlab chiquvchilar veb-sayt aniq va ixcham tartib va yaxshi tashkil etilgan axborot arxitekturasi bilan intuitiv va ulardan foydalanish oson bo'lishini ta'minlashi kerak. Foydalanuvchilarga qulay tajribani taqdim etish orqali ishlab chiquvchilar foydalanuvchilarning faolligini va qoniqishini oshirishi mumkin, bu esa veb-saytni qabul qilish va undan foydalanishni oshirishga olib keladi. .NET va MSSQL-dan foydalangan holda taqvim birliklarini o'zgartiruvchi veb-sayt yaratish foydalanuvchilar uchun qimmatli vosita va ishlab chiquvchilar uchun muhim o'rganish tajribasini taqdim etishi mumkin bo'lgan foydali ishdir. Ma'lumotlar bazasi dizayni, foydalanuvchi interfeysi dizayni va xavfsizligiga ehtiyotkorlik bilan e'tibor berish orqali ishlab chiquvchilar intuitiv, samarali va foydalanuvchilarning ehtiyojlariga javob beradigan veb-sayt yaratishlari mumkin. Foydalanilgan adabiyotlar ro‘yhati 1. Tkacz, Ewaryst; Kapczynski, Adrian. Internet — Technical Development and Applications. Springer. — 2020. — С. 255. — ISBN 978-3-642-05018-3 2. Laura Tomson i LyeokVelling. razrobotka web -prilojeniy na php sql. DiaSoft. Sankt-Peterburg – 2021. 3. A. V. Volokitin, A. P. Manoshkin. elektronnaya kommertsiya. Uchebnoe posobie dlya slujashix gosudarstvennıx 25 organizatsii kommercheskix firm. 4. https://dotnet.microsoft.com/learn 5. https://w3school.com 6. https://youtube.com 7. https://developer.mozilla.org 8. https://github.com 9. https://stackoverflow.com Code bo’limi : Home controller codlari : using Autotest.Mvc.Models; using Microsoft.AspNetCore.Mvc; using System.Diagnostics; using Autotest.Mvc.Repositories; using Autotest.Mvc.Services; using DataBase.Entietes; namespace Autotest.Mvc.Controllers; public class HomeController : Controller { private readonly UserRepository _userRepository; private readonly ILogger<HomeController> _logger; private readonly UsersService _usersService; public HomeController(ILogger<HomeController> logger, UserRepository userRepository, UsersService usersService) { _logger = logger; _userRepository = userRepository; _usersService = usersService; } public IActionResult Index() { if (!_usersService.IsLoggedIn(HttpContext)) { return View(); } else { var userId = HttpContext.Request.Cookies["user_id"]; var user = _userRepository.GetUserById(userId!); return RedirectToAction("Dashboard"); } } public IActionResult Privacy() { return View(); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); 26 } public IActionResult Dashboard() { if(!_usersService.IsLoggedIn(HttpContext)) { return RedirectToAction("SignUp", "Users"); } else { var userId = HttpContext.Request.Cookies["user_id"]; var user = _userRepository.GetUserById(userId!); return View(user); } } public IActionResult TicketResults() { var user = _usersService.GetCurrentUser(HttpContext); if (user == null) { return RedirectToAction("SignUp","Users"); } return View(user); } public IActionResult About() { return View(); } } Ticket controller bo’limi codlari: using Autotest.Mvc.Models; using Autotest.Mvc.Repositories; using Autotest.Mvc.Services; using DataBase.Entietes; using Microsoft.AspNetCore.Mvc; namespace Autotest.Mvc.Controllers; public class TicketsController : Controller { private readonly UsersService _usersService; private readonly QuestionService _questionService; public TicketsController(UsersService usersService, QuestionService questionService) { _usersService = usersService; _questionService = questionService; } public IActionResult Index() { var user = _usersService.GetCurrentUser(HttpContext); if (user == null) return RedirectToAction("SignIn", "Users"); return View(user); } public IActionResult StartTicket(int ticketIndex) 27 { var user = _usersService.GetCurrentUser(HttpContext); if (user == null) return RedirectToAction("SignIn", "Users"); var tickets = _usersService.TicketRepository.GetTicketsList(user.Id, user.Language); if (tickets[0].Id > ticketIndex && ticketIndex > tickets[^1].Id) return View("NotFound"); user.CurrentTicketIndex = ticketIndex; user.CurrentTicket = user.CurrentTicketIndex == null ? null :_usersService.TicketRepository.GeTicket(user.CurrentTicketIndex!.Value, user.Language); _usersService.UserRepository.UpdateUser(user); return RedirectToAction("Questions", new { id = user.CurrentTicket?.StartIndex }); } public IActionResult Questions(int id, int? choiceIndex = null) { User? user = _usersService.GetCurrentUser(HttpContext); if (user == null) return RedirectToAction("SignIn", "Users"); if (user.CurrentTicketIndex == null) return RedirectToAction("Index"); if (id > user.CurrentTicketIndex * 10 + 10) { return RedirectToAction(nameof(Result)); } var question = _questionService.Questions?.FirstOrDefault(x => x.Id == id); if (question == null) return View("NotFound"); ViewBag.Question = question; ViewBag.IsAnswer = choiceIndex != null; user = _usersService.GetCurrentUser(HttpContext); if (choiceIndex != null) { var answer = new TicketQuestionAnswer() { TicketId = user.CurrentTicketIndex.Value, ChoiceIndex = choiceIndex.Value, QuestionIndex = id, CorrectIndex = question.Choices.IndexOf(question.Choices.First(c => c.Answer)) }; _usersService.TicketRepository.AddTicketAnswer(answer,user.Language); ViewBag.Answer = answer; } return View(user); } public IActionResult Result() { var user = _usersService.GetCurrentUser(HttpContext); if (user == null) return RedirectToAction("SignIn", "Users"); 28 return View(user); } } User controller bo’limi codlari : using Autotest.Mvc.Models; using Autotest.Mvc.Repositories; using Autotest.Mvc.Services; using Microsoft.AspNetCore.Mvc; namespace Autotest.Mvc.Controllers; public class UsersController : Controller { private readonly UsersService _usersService; private readonly QuestionService _questionService; public UsersController(UsersService usersService, QuestionService questionService) { _usersService = usersService; _questionService = questionService; } [HttpGet] public IActionResult SignUp() { return View(); } [HttpPost] public IActionResult SignUp(CreateUserModel createUser) { if (!ModelState.IsValid) { return View(createUser); } _usersService.Register(createUser, HttpContext); return RedirectToAction("Index", "Home"); } [HttpGet] public IActionResult SignIn() { return View(); } [HttpPost] public IActionResult SignIn(SignInUserModel signInUserModel) { if (!ModelState.IsValid) { return View(signInUserModel); } var isLogin = _usersService.LogIn(signInUserModel, HttpContext); if (!isLogin) { ModelState.AddModelError("Username", "Username or Password is incorrect"); return View(); } 29 return RedirectToAction("Profile"); } public IActionResult Profile() { var user = _usersService.GetCurrentUser(HttpContext); if (user == null) { return RedirectToAction("SignUp"); } return View(user); } public IActionResult LogOut() { _usersService.LogOut(HttpContext); return RedirectToAction("SignIn"); } public IActionResult ChangeLanguage(string language) { _questionService.LoadJson(language); var userId = HttpContext.Request.Cookies["user_id"]; var user = _usersService.UserRepository.GetUserById(userId!); user!.Language = language; _usersService.UserRepository.UpdateUserLanguage(user,language); return RedirectToAction("Dashboard", "Home"); } } 30