Kutubxona tizimi

KURS ISHI
Mavzu:  Kutubxona tizimi Reja:
Kirish ................................................................................................................ 3
Loyiha modelini shakllantirish ......................................................................... 5
Loyiha kontroller va ko‘rinishlarini yaratish ................................................. 19
Loyihadan foydalanish bo‘yicha ko‘rsatma ................................................... 58
Xulosa ............................................................................................................. 66
Foydalanilgan adabiyotlar .............................................................................. 68 3Kirish
A xborot-kommunikatsiya   texnologiyalarining   jadal   rivojlanishi   jamiyat
hayotining   barcha   sohalariga,   jumladan   ta’lim   va   madaniyat   tizimlariga   ham
sezilarli   ta’sir   ko‘rsatmoqda.   Ushbu   sohalarning   muhim   va   ajralmas   qismlaridan
biri   hisoblangan   kutubxonalar   faoliyatini   zamonaviy   axborot   texnologiyalari
asosida   tashkil   etish   zarurati   tobora   ortib   bormoqda.   An’anaviy   kutubxona
tizimlarida   ma’lumotlar   bilan   ishlash   jarayonining   qo‘lda   olib   borilishi   vaqt   va
resurslarning samarasiz sarflanishiga olib keladi.
Kutubxona   faoliyatida   kitoblarni   ro‘yxatga   olish,   ularni   saqlash,
o‘quvchilarga   berish   va   qaytarib   olish   jarayonlari   asosiy   amaliy   vazifalar
hisoblanadi.   An ’ anaviy   kutubxonalarda   bu   jarayonlar   juda   ko ‘ p   vaqt   va   mehnatni
talab   etadi . Ushbu jarayonlarni avtomatlashtirish orqali kutubxona fondini samarali
boshqarish, ma’lumotlarni tartibli saqlash hamda foydalanuvchilarga qulay xizmat
ko‘rsatish imkoniyati yaratiladi. Axborot tizimlaridan foydalanish natijasida inson
omili bilan bog‘liq xatoliklar kamayadi va ish unumdorligi oshadi.
Zamonaviy kutubxona axborot  tizimi  kitoblar, mualliflar, janrlar, a’zolar va
ijara jarayonlariga oid ma’lumotlarni yagona markazlashgan tizimda boshqarishga
xizmat   qiladi.   Bunday   tizimlar   foydalanuvchilarga   kerakli   adabiyotlarni   tezkor
izlash,   kutubxona   fondi   holatini   nazorat   qilish   va   mavjud   resurslardan   oqilona
foydalanish imkonini beradi. Shuningdek, kutubxona xodimlari uchun ma’lumotlar
bilan ishlash jarayoni soddalashadi.
Mazkur   kurs   ishining   mavzusi   “Kutubxona   tizimi”   bo‘lib,   unda   kutubxona
faoliyatini avtomatlashtirishga mo‘ljallangan axborot tizimini loyihalash masalalari
yoritiladi.   Kurs   ishi   davomida   tizimning   mantiqiy   modeli   shakllantiriladi,   asosiy
obyektlar   va   ularning   o‘zaro   bog‘lanishlari   aniqlanadi   hamda   dasturiy   yechimlar
ishlab   chiqiladi.   Ushbu   loyiha   amaliy   jihatdan   qo‘llash   mumkin   bo‘lgan   axborot
tizimini yaratishga qaratilgan.
Kurs   ishining   asosiy   maqsadi   -   kutubxona   faoliyatini   samarali   tashkil   etish
uchun   axborot   tizimini   loyihalash   va   uning   funksional   imkoniyatlarini   tahlil 4qilishdan   iborat.   Ushbu   maqsadga   erishish   uchun   quyidagi   vazifalar   belgilandi.
K utubxona   axborot   tizimining   nazariy   asoslarini   o‘rganish,   tizimning   mantiqiy
modelini   shakllantirish,   asosiy   kontroller   va   ko‘rinishlarni   yaratish,   loyihadan
foydalanish   bo‘yicha   amaliy   ko‘rsatmalar   ishlab   chiqish dan   iborat . Bu
tizim   , albatta ,   kutubxonachilarni   ham   vaqtini   , hamda   ishini   kamaytirishga   yordam
berishiga   ishonchim   komil . 5Loyiha   modelini   shakllantirish
Axborot   tizimlarini   loyihalash   jarayonida   modelni   shakllantirish   muhim
bosqichlardan   biri   hisoblanadi .   Model   real   hayotdagi   obyektlar ,   jarayonlar   va
ularning   o ‘ zaro   bog ‘ liqligini   dasturiy   muhitda   ifodalashga   xizmat   qiladi .   Har
qanday   axborot   tizimi   samarali   ishlashi   uchun   undagi   ma ’ lumotlar   aniq   tuzilma
asosida   tashkil   etilishi   lozim .   Shu   sababli   loyihani   yaratishda   dastlab   tizimning
mantiqiy   modeli   ishlab   chiqiladi . [2]
Model   axborot   tizimining   asosiy   tarkibiy   qismi   bo ‘ lib ,   u   berilganlar   bazasida
saqlanadigan   ma ’ lumotlarning   dasturiy   ko ‘ rinishini   belgilaydi .   Model   orqali
foydalanuvchi ,   ma ’ lumotlar   bazasi   va   dastur   o ‘ rtasidagi   bog ‘ lanish   ta ’ minlanadi .
To ‘ g ‘ ri   shakllantirilgan   model   tizimning   keyingi   bosqichlarida   kontroller   va
ko ‘ rinishlarni   ishlab   chiqishni   ancha   yengillashtiradi   hamda   dasturiy   ta ’ minotning
barqaror   ishlashini   kafolatlaydi . [6]
Modelni   shakllantirish   jarayonida   berilganlar   bazasining   mantiqiy   tuzilishi
alohida   e ’ tiborga   olinadi .   Jadval   va   ularning   o ‘ zaro   bog ‘ lanishlari   oldindan
rejalashtirilsa ,   ma ’ lumotlar   bazasi   bilan   ishlash   jarayonida   xatoliklar   kamayadi   va
tizim   unumdorligi   oshadi .   Shu   sababli   modelni   yaratish   bosqichida   tizimning
kelajakda   kengaytirilishi   va   rivojlantirilishi   ham   hisobga   olinadi . [2]
Zamonaviy   axborot   tizimlarida   modelni   shakllantirishda   obyektga
yo ‘ naltirilgan   dasturlash   tamoyillaridan   keng   foydalaniladi .   Ushbu   yondashuv
modellarni   real   obyektlarga   yaqinlashtiradi   va   dasturiy   ta ’ minotning   tushunarli
hamda   qulay   bo ‘ lishini   ta ’ minlaydi .   Natijada   dasturchi   va   foydalanuvchi   o ‘ rtasida
axborotni   qabul   qilish   va   qayta   ishlash   jarayoni   ancha   soddalashadi . [7]
            Kutubxona   tizimi   uchun   model   yaratishda   tizimda   ishtirok   etuvchi   asosiy
obyektlarni   aniqlash   muhim   ahamiyatga   ega.   Ushbu   kurs   ishida   kutubxona
faoliyatini to‘liq qamrab oluvchi quyidagi asosiy modellar tanlandi: Kitob, Muallif,
Janr,   A’zo,   Ijara   va   Aloqa.   Ushbu   obyektlar   kutubxona   tizimining   funksional
imkoniyatlarini   to‘liq   ifodalaydi   va   ma’lumotlar   bazasining   mantiqiy   tuzilishini 6shakllantiradi.
Aloqa   modeli   tizimdagi   boshqa   modellar   bilan  bevosita   bog‘lanmagan   bo‘lib,
mustaqil   model   hisoblanadi.   Ushbu   model   foydalanuvchi   tizimga   yuborgan
xabarnisaqlashga   xizmat   qiladi.   Va   ushbu   murojaatlarni     adminlarga   ko‘rsatib
beradi.
1-rasm. Aloqa modeli.
Ushbu rasmda Aloqa modeli tasvirlangan. Ushbu model foydalanuvchilarning
tizim   orqali   yuborgan   murojaatlari   va   xabarlarini   saqlash   uchun   mo‘ljallangan.
Model   tarkibida   foydalanuvchi   ismi,   elektron   pochta   manzili,   xabar   matni   va
yuborilgan   sana   kabi   maydonlar   mavjud.   Aloqa   modeli   boshqa   modellar   bilan
bevosita bog‘lanmagan bo‘lib, tizimning yordamchi funksional qismi hisoblanadi.
Bu modelda quyidagi xususiyatlar mavjud:
·  Id - murojaatni aniqlovchi birlamchi kalit.
·  Ism  - xabar  yuborgan foydalanuvchining ismini saqlaydi.
·  Email  -  foydalanuvchining elektron pochta manzilini bildiradi. 7·  XabarMatni  -  foydalanuvchi tomonidan yuborilgan xabar matnini saqlaydi.
·  YuborilganSana  -  murojaat yuborilgan vaqtni avtomatik tarzda saqlaydi.
 
2- rasm.  Azo  modeli
Ushbu   rasmda   A’zo   modeli   tasvirlangan   bo‘lib,   u   kutubxona   xizmatlaridan
foydalanuvchi   shaxslar   haqidagi   ma’lumotlarni   saqlash   uchun   mo‘ljallangan.
ICollection<Ijara> navigatsion xususiyati orqali a’zo va ijara modellarining birga–
ko‘p   munosabati   ta’minlangan.   Bu   orqali   har   bir   a’zoning   ijara   tarixi   nazorat
qilinadi.  Modelda  :
·  Id – a’zoni aniqlovchi birlamchi kalit.
·  Ism – a’zoning ismini saqlaydi.
·  Familiya – a’zoning familiyasini saqlaydi.
·  Email – a’zoning elektron pochta manzilini bildiradi.
·  Password – tizimga kirish uchun parolni saqlaydi. 8·  PhoneNumber – a’zoning telefon raqamini saqlaydi.
·     Ijaralar   –   a’zoga   tegishli   barcha   ijara   yozuvlarini   saqlovchi   navigatsion
xususiyat. 
3- rasm.  Ijara  modeli
Mazkur rasmda Ijara modeli ko‘rsatilgan bo‘lib, u kutubxona tizimidagi eng
muhim amaliy jarayonni ifodalaydi. Ushbu model orqali kitoblarni a’zolarga berish
va   qaytarish   jarayoni   boshqariladi.   KitobId   va   AzoId   tashqi   kalitlari   orqali   ijara
mos   ravishda   kitob   va   a’zo   modellariga   bog‘langan.   Natijada   A’zo   ↔   Kitob
o‘rtasidagi   ko‘pga   -   ko‘p   munosabat   ushbu   model   orqali   amalga   oshiriladi. 9Modelda :
·  Id – ijara yozuvini aniqlovchi birlamchi kalit.
·  KitobId – ijaraga berilgan kitobni aniqlovchi tashqi kalit.
·  AzoId – kitobni olgan a’zoni aniqlovchi tashqi kalit.
·  BerilganSana – kitob ijaraga berilgan sanani saqlaydi.
·  QaytarishSana – kitob qaytarilishi kerak bo‘lgan oxirgi muddatni bildiradi.
·   Qaytarildi – kitob real qaytarilgan sanani ko‘rsatadi (agar qaytarilmagan bo‘lsa,
bo‘sh bo‘ladi).
·  Holati – ijara holatini (faol, muddati o‘tgan yoki qaytarilgan) ifodalaydi.
·  Kitob – kitob modeli bilan bog‘lovchi navigatsion xususiyat.
·  Azo – a’zo modeli bilan bog‘lovchi navigatsion xususiyat.  
4- r asm.  Janr  modeli
Ushbu rasmda Janr modeli ko‘rsatilgan. Janr modeli kitoblarni mavzular yoki
kategoriyalar bo‘yicha guruhlash vazifasini bajaradi. Modelda ICollection<Kitob>
navigatsion   xususiyati   orqali   mazkur   janrga   mansub   barcha   kitoblar   bilan
bog‘lanadi.   Janr   modelidan   foydalanish   foydalanuvchilarga   kitoblarni   kategoriya
asosida izlash va saralash imkonini yaratadi.  Modelda :
·  Id – janrni aniqlovchi birlamchi kalit.
·  Name – janr nomini (masalan, ilmiy, badiiy, tarixiy) saqlaydi. 10·  Kitoblar – ushbu janrga mansub barcha kitoblar ro‘yxatini saqlovchi navigatsion
xususiyat.
5- rasm.  Muallif  modeli
Mazkur   rasmda   kutubxona   tizimidagi   Muallif   modeli   tasvirlangan.   Ushbu
model   kitob   mualliflari   haqidagi   asosiy   ma’lumotlarni   saqlash   uchun
mo‘ljallangan.   Modelda   ICollection<Kitob>   navigatsion   xususiyati   orqali   muallif
va   kitoblar   o‘rtasidagi   birga–ko‘p   munosabat   amalga   oshirilgan.   Bu   yondashuv
bitta   muallifga   tegishli   bir   nechta   kitoblarni   tizimli   ravishda   saqlash   imkonini
beradi. Modelda:
·  Id – muallifni yagona aniqlash uchun xizmat qiluvchi birlamchi kalit.
·  FIO – muallifning to‘liq ismi, familiyasi va otasining ismini saqlaydi.
·  Tug_yili – muallifning tug‘ilgan yiliga oid ma’lumotni ifodalaydi.
·   Kitoblar   –   muallifga   tegishli   barcha   kitoblar   ro‘yxatini   saqlovchi   navigatsion
xususiyat bo‘lib, muallif va kitob o‘rtasidagi birga - ko‘p munosabatni ta’minlaydi.
Muallif modeli Kutubxona tizimi uchun eng kerakli modellardan biri hisoblanadi.
Bu   modelimiz   Kitoblar   modeli   bilan   bog‘langan   .   Shunda   har   bir   muallifning
nechta kitobi borligi haqidagi ma’lumotni ham olishimiz mumkin bo‘ladi. 11Quyida eng asosiy modelimiz hisoblangan Kitob modeli keltirilgan .   U orqali
eng zarur  bo‘lgan barcha ma’lumotlarni  hosil  qilishimiz  mumkin bo‘ladi.   Chunki
bu   model   Muallif   ,   Janr   va   Ijara   modellari   bilan   o‘zaro   bog‘langan   .   Bundan
tashqari kitob nusxalar soni va qolganlari soni ham bor. Bu esa Kutubxona uchun
eng zarur xususiyatlar hisoblanadi. 126 -rasm. Kitob modeli
Mazkur   rasmda   kutubxona   tizimining   asosiy   modeli   hisoblangan   Kitob
modeli aks ettirilgan. MuallifId va JanrId tashqi kalitlari orqali kitob mos ravishda
muallif   va   janr   modellariga   bog‘langan.   Ushbu   model   kutubxona   fondini
boshqarish   va   kitoblar   haqidagi   barcha   asosiy   ma’lumotlarni   saqlash   vazifasini 13bajaradi. Modelda :
·  Id – kitobni yagona aniqlash uchun xizmat qiluvchi birlamchi kalit.
·  Name – kitob nomini saqlaydi.
·  ISBN – kitobning xalqaro standart raqamini ifodalaydi.
·  Description – kitob mazmuni yoki qisqacha tavsifini saqlaydi.
·  Soni – kutubxonadagi kitobning umumiy nusxalar sonini bildiradi.
·   Soni_qolgan   –   hozirda   mavjud   bo‘lgan,   ijaraga   berilmagan   nusxalar   sonini
ko‘rsatadi.
·  Image – kitob muqovasining fayl manzilini saqlaydi.
·  KitobFayli – kitobning elektron nusxasi joylashgan fayl manzilini bildiradi.
·  MuallifId – kitob muallifini aniqlovchi tashqi kalit.
·  JanrId – kitobning janrini aniqlovchi tashqi kalit.
·  Muallif – muallif modeli bilan bog‘lovchi navigatsion xususiyat.
·  Janr – janr modeli bilan bog‘lovchi navigatsion xususiyat.
·  Sana – kitob tizimga qo‘shilgan sanani avtomatik saqlaydi.
 
7 -rasm. AppDbContext sinfi. 147- rasmda   kutubxona   tizimining   ma’lumotlar   bazasi   bilan   ishlashini
ta’minlovchi AppDbContext sinfi tasvirlangan. Ushbu sinf Entity Framework Core
texnologiyasi   asosida   ishlab   chiqilgan   bo‘lib,   ma’lumotlar   bazasi   va   dastur
o‘rtasidagi   asosiy   vositachi   (context)   vazifasini   bajaradi.   AppDbContext   sinfi
IdentityDbContext   dan   meros   olgan   bo‘lib,   bu   orqali   tizimda   autentifikatsiya   va
avtorizatsiya mexanizmlaridan foydalanish imkoniyati yaratilgan.  Modelda:
·  AppDbContext(DbContextOptions<AppDbContext> options)
Ushbu   konstruktor   sinf   obyektini   yaratishda   ma’lumotlar   bazasi   bilan   bog‘lanish
parametrlarini   qabul   qiladi.   DbContextOptions   orqali   server   turi,   ulanish   satri   va
boshqa konfiguratsion sozlamalar uzatiladi.
·   DbSet<Kitob> Kitoblar  -  Ma’lumotlar  bazasidagi  Kitoblar  jadvalini  ifodalaydi.
Ushbu   xususiyat   orqali   kitoblar   bilan   bog‘liq   barcha   CRUD   (qo‘shish,   o‘chirish,
tahrirlash, ko‘rish) amallari bajariladi.
·   DbSet<Muallif> Mualliflar - Mualliflar  jadvaliga murojaat qilish uchun xizmat
qiladi.   Mualliflar   haqidagi   ma’lumotlarni   saqlash   va   ular   bilan   ishlash   ushbu
xususiyat orqali amalga oshiriladi.
·     DbSet<Janr>   Janrlar   -   Kitob   janrlarini   saqlovchi   Janrlar   jadvalini   ifodalaydi.
Ushbu xususiyat kitoblarni kategoriyalar bo‘yicha boshqarish imkonini beradi.
·  DbSet<Azo> Azolar - Kutubxona a’zolari haqidagi ma’lumotlarni saqlash uchun
mo‘ljallangan   Azolar   jadvalini   ifodalaydi.   A’zolar   bilan   bog‘liq   barcha
ma’lumotlar aynan shu xususiyat orqali boshqariladi.
·     DbSet<Ijara>   Ijaralar   -   Kitoblarni   ijaraga   berish   va   qaytarish   jarayonlarini
saqlovchi   Ijaralar   jadvalini   ifodalaydi.   Ushbu   xususiyat   tizimdagi   eng   muhim
amaliy jarayonlardan birini boshqaradi.
·     DbSet<Aloqa>   Xabarlar   -   Foydalanuvchilarning   tizim   orqali   yuborgan
murojaatlari   va   xabarlarini   saqlash   uchun   mo‘ljallangan   Xabarlar   jadvalini
ifodalaydi.   Bu   xususiyat   tizimning   foydalanuvchi   bilan   aloqa   qilish   imkoniyatini
ta’minlaydi.
AppDbContext   sinfi   kutubxona   axborot   tizimining   markaziy   komponenti
bo‘lib,   barcha   modellarni   yagona   ma’lumotlar   bazasi   bilan   bog‘laydi.   Ushbu   sinf 15orqali   Entity   Framework   Core   yordamida   ma’lumotlar   bazasi   avtomatik   tarzda
yaratiladi   va   boshqariladi.   To‘g‘ri   tashkil   etilgan   DbContext   tizimning   barqaror
ishlashini va kelgusida kengaytirish imkoniyatini ta’minlaydi.
ViewModelning   ishlatilishi   loyihaning   moduliyligini   va   kengaytirilishini   ham
qo‘llab-quvvatlaydi, yangi  funksiyalarni qo‘shish  jarayonida minimal  o‘zgarishlar
bilan ishlash imkonini beradi. Bu yondashuv foydalanuvchi tajribasini yaxshilaydi
va kodning qayta ishlatilishini  oshiradi, shuningdek, tizim  xavfsizligini  saqlashga
yordam beradi.  [5]
              MVC   arxitekturasida   ViewModel   lar   Model   va   View   o‘rtasida   vositachi
sifatida   xizmat   qiladi.   Ularning   asosiy   vazifasi   foydalanuvchi   interfeysi   uchun
zarur   bo‘lgan   ma’lumotlarni   jamlash   va   faqat   kerakli   maydonlarni   Viewga
uzatishdan   iborat.   Bu   yondashuv   foydalanuvchiga   ortiqcha   yoki   maxfiy
ma’lumotlarning   ko‘rsatilishining   oldini   oladi.   ViewModellardan   foydalanish
orqali ma’lumotlarni kiritish va tahrirlash jarayonlari ancha qulaylashadi. Masalan,
fayl  yuklash,  tasdiqlash  paroli, faqat  ko‘rish uchun mo‘ljallangan maydonlar kabi
funksiyalar   to‘g‘ridan-to‘g‘ri   Model’da   emas,   balki   ViewModel   orqali   amalga
oshiriladi.   Bu   esa   tizim   xavfsizligini   oshiradi   va   kodning   tartibli   bo‘lishini
ta’minlaydi.[8]
Shuningdek,   ViewModellar   bir   nechta   model   ma’lumotlarini   bitta   Viewda
ko‘rsatish   imkonini   beradi.   Natijada,   MVC   arxitekturasi   tamoyillariga   mos,
tushunarli va kengaytirilishi oson bo‘lgan dasturiy tuzilma hosil bo‘ladi.
      public   class   KitobEditVM
    {
         public   int  Id {  get ;  set ; }
        [ Required ]
        [ DisplayName ( "Kitob Nomi" )]
         public   string  Name {  get ;  set ; }
        [ DisplayName ( "ISBN" )]
         public   string  ISBN {  get ;  set ; } 16        [ DisplayName ( "Tavsifi" )]
         public   string  Description {  get ;  set ; }
        [ Required ]
        [ Range (1,  int .MaxValue, ErrorMessage =  "Son 1 dan katta bo'lishi 
   kerak." )]
        [ DisplayName ( "Umumiy Soni" )]
         public   int  Soni {  get ;  set ; }
        [ ReadOnly ( true )] 
        [ DisplayName ( "Mavjud nusxalar soni" )]
         public   int  Soni_qolgan {  get ;  set ; }
        [ Required ]
        [ DisplayName ( "Muallifi" )]
         public   int  MuallifId {  get ;  set ; }
        [ Required ]
        [ DisplayName ( "Janri" )]
         public   int  JanrId {  get ;  set ; }
         public   string  EskiImage {  get ;  set ; }
        [ DisplayName ( "Yangi Rasm" )]
         public   IFormFile ? YangiImage {  get ;  set ; }
         public   string  EskiKitobFayli {  get ;  set ; }
        [ DisplayName ( "Yangi Kitob Fayli" )]
         public   IFormFile ? YangiKitobFayli {  get ;  set ; }
    }
KitobEditVM View Modeli
Mazkur   ViewModel   mavjud   kitob   ma’lumotlarini   tahrirlash   uchun
mo‘ljallangan.   Ushbu   model   orqali   kitob   nomi,  tavsifi,   nusxalar   soni,   muallifi   va
janri   yangilanadi.   Avval   yuklangan   rasm   va   kitob   fayllari   saqlanib   qoladi   hamda
zarurat   tug‘ilganda   yangi   fayllar   bilan   almashtirilishi   mumkin.   Mavjud   nusxalar
soni faqat ko‘rish uchun mo‘ljallangan bo‘lib, u avtomatik tarzda tizim tomonidan
boshqariladi .
public   class   KitobCreateVM 17{
[ Required ]
[ DisplayName ( "Kitob Nomi" )]
public   string  Name {  get ;  set ; }
[ DisplayName ( "ISBN" )]
public   string  ISBN {  get ;  set ; }
[ DisplayName ( "Tavsifi" )]
public   string  Description {  get ;  set ; }
[ Required ]
[ Range (1,  int .MaxValue, ErrorMessage =  "Son 1 dan katta bo'lishi  kerak." )]
[ DisplayName ( "Umumiy Soni" )]
public   int  Soni {  get ;  set ; }
[ Required ]
[ DisplayName ( "Muallifi" )]
public   int  MuallifId {  get ;  set ; }
[ Required ]
[ DisplayName ( "Janri" )]
public   int  JanrId {  get ;  set ; }
[ DisplayName ( "Kitob Rasmi" )]
public   IFormFile ? ImageFile {  get ;  set ; } 
[ Required (ErrorMessage =  "Kitob faylini yuklash shart." )]
[ DisplayName ( "Kitob Fayli (PDF, EPUB)" )]
public   IFormFile  KitobFile {  get ;  set ; }
}
KitobCreateVM View Modeli
Ushbu ViewModel yangi kitobni tizimga qo‘shish jarayonida ishlatiladi. Model
foydalanuvchi   tomonidan   kiritiladigan   ma’lumotlarni   qabul   qiladi   va   majburiy
maydonlar   orqali   tekshiradi.   Kitob   nomi,   umumiy   nusxalar   soni,   muallif   va   janr
tanlash   kabi   asosiy   ma’lumotlar   ushbu   ViewModel   orqali   olinadi.   Shuningdek, 18kitob   rasmi   va   elektron   faylini   yuklash   imkoniyati   mavjud   bo‘lib,   bu   kitobni
tizimda to‘liq ro‘yxatdan o‘tkazishni ta’minlaydi.
  public   class   AdminDashboardVM
 {
      public   int  TotalKitoblar {  get ;  set ; }
      public   int  TotalAzolar {  get ;  set ; }
      public   int  ActiveIjaralar {  get ;  set ; }
      public   int  ExpiredIjaralar {  get ;  set ; } 
      public   List < Azo > RecentAzolar {  get ;  set ; } =  new  
List < Azo >();
      public   List < Ijara > RecentIjaralar {  get ;  set ; } =  new  
      List < Ijara >();
}
AdminDashboardVM View Modeli
Ushbu   ViewModel   administrator   panelida   kutubxona   tizimining   umumiy
holatini tahlil qilish va nazorat qilish uchun mo‘ljallangan. Model orqali tizimdagi
jami  kitoblar  soni,  ro‘yxatdan o‘tgan a’zolar  soni,  faol  ijaralar  va muddati  o‘tgan
ijaralar statistikasi aks ettiriladi.
Bundan   tashqari,   so‘nggi   qo‘shilgan   a’zolar   va   amalga   oshirilgan   ijaralar
ro‘yxati   administratorga   tezkor   qarorlar   qabul   qilish   imkonini   beradi.   Ushbu
ViewModel kutubxona tizimini samarali boshqarishda muhim rol o‘ynaydi. 19Loyiha kontroller va ko‘rinishlarini yaratish
Mazkur   bo‘limda   sayohat   agentligi   axborot   tizimining   funksional   ishlashini
ta’minlovchi   kontrollerlar   (Controller)   va   ko‘rinishlar   (View)ni   yaratish   jarayoni
bayon   etiladi.   Kontrollerlar   MVC   (Model–View–Controller)   arxitekturasining
muhim tarkibiy qismi bo‘lib, foydalanuvchi  so‘rovlarini qabul qilish, ularni qayta
ishlash hamda natijani ko‘rinishlar orqali taqdim etish vazifasini bajaradi. [2]
MVC   arxitekturasi   tizimni   mantiqiy   jihatdan   to‘g‘ri   tashkil   etish,   kodni
soddalashtirish   va   keyinchalik   kengaytirish   imkonini   berishi   bilan   ajralib   turadi.
[4]
Ushbu   loyiha   aynan   shu   tamoyil   asosida   ishlab   chiqilgan   va   undagi
kontrollerlarni quyida birma bir ko‘rib chiqamiz.
HomeController   kutubxona   axborot   tizimining   oddiy   foydalanuvchilar
(kitobxonlar)   bilan   ishlovchi   asosiy   kontrolleri   hisoblanadi.   Ushbu   kontroller
orqali   foydalanuvchilar   tizimdagi   mavjud   kitoblar   bilan   tanishadi,   mashhur
kitoblarni   ko‘radi   hamda   kutubxona   ma’muriyati   bilan   aloqa   o‘rnatish
imkoniyatiga   ega   bo‘ladi.   HomeController   MVC   arxitekturasining   Controller
qismi   sifatida   foydalanuvchi   so‘rovlarini   qabul   qiladi,   ularni   qayta   ishlaydi   va
natija larni  mos  ravishda  View sahifalar orqali  taqdim qiladi.
8 -rasm. HomeController sinfi.
Ushbu rasmda HomeController sinfining umumiy ko‘rinishi keltirilgan. Sinf
konstruktor  orqali  AppDbContext  obyektini qabul  qiladi va bu obyekt yordamida 20ma’lumotlar   bazasi   bilan   ishlaydi.   Kontroller   tarkibida   foydalanuvchiga
mo‘ljallangan  bir   nechta  action  metodlar   mavjud bo‘lib, ularning har  biri  alohida
View sahifa bilan bog‘langan.
9- rasm. HomeController ichidagi 
Index /Mashhur/BizbilanAloqa  metod lar i.
Index() metodi kutubxona tizimining bosh sahifasini shakllantirish vazifasini
bajaradi.   Ushbu   metodda   ma’lumotlar   bazasidagi   kitoblar   orasidan   mavjud
nusxalari soni ma’lum bir miqdordan (15 ta va undan ortiq) ko‘p bo‘lgan kitoblar
tanlab olinadi. Tanlangan kitoblar ro‘yxat ko‘rinishida Viewga uzatiladi.
·  _db.Kitoblar – Entity Framework orqali Kitoblar jadvaliga murojaat qilinadi.
·  Where(k => k.Soni >= 15) – LINQ filter operatori; faqat nusxalari 15 yoki undan
ko‘p bo‘lgan kitoblar tanlanadi.
·  ToList() – natijani ro‘yxat shakliga (List<Kitob>) o‘tkazadi.
·   View(kitoblar)   –   shu   ro‘yxatni   Index.cshtml   sahifasiga   uzatadi.   Mazkur
yondashuv   foydalanuvchilarga   eng   ko‘p   mavjud   bo‘lgan   kitoblarni   tavsiya   qilish
imkonini   beradi   hamda   kutubxona   fondidagi   faol   kitoblarni   tezda   topishni
osonlashtiradi.
Mashhur()   metodi   tizimga   so‘nggi   qo‘shilgan   yoki   faol   bo‘lgan   kitoblarni
aniqlash uchun ishlatiladi.  21·  OrderByDescending(k => k.Id) – kitoblarni identifikator (Id) bo‘yicha kamayish
tartibida tartiblaydi.
·  ToList() – natijani ro‘yxatga o‘tkazadi.
·   View(kitoblar)   –   saralangan   kitoblar   ro‘yxatini   Mashhur.cshtml   sahifasiga
uzatadi.   Metod   kitoblarni   identifikator   qiymati   bo‘yicha   kamayish   tartibida
saralaydi   va   natijani   Viewga   uzatadi.   Natijada   foydalanuvchi   interfeysida   eng
yangi   yoki   mashhur   kitoblar   ro‘yxati   aks   ettiriladi.   Bu   esa   foydalanuvchining
qiziqishini oshiradi va tizimdan foydalanishni qulaylashtiradi.
BizbilanAloqa()   metod i   foydalanuvchilar uchun “Biz bilan aloqa” sahifasini
shakllantiradi.   Metod   hech   qanday   ma’lumot   qaytarmaydi   va   faqatgina   tegishli
View sahifani ko‘rsatadi.
Mazkur sahifa foydalanuvchilarga kutubxona haqida umumiy ma’lumot olish
va aloqa imkoniyatlari bilan tanishish imkonini beradi.
10- rasm. HomeController sinfidagi Xabarjonat metodlari.
Xabarjonat()   metodining   GET   versiyasi   foydalanuvchiga   xabar   yuborish
uchun   mo‘ljallangan   sahifani   shakllantiradi.   Ushbu   metod   foydalanuvchi 22tomonidan   sahifa   ochilganda   ishga   tushadi   va   hech   qanday   ma’lumotlar   bazasi
amallarini bajarmaydi.
Metodning asosiy  vazifasi  — Xabarjonat.cshtml  ko‘rinish  (View)  sahifasini
foydalanuvchiga   taqdim   etishdan   iborat.   Ushbu   sahifada   foydalanuvchi   o‘zining
shaxsiy ma’lumotlari hamda yubormoqchi bo‘lgan xabar matnini kiritishi mumkin.
Xabarjonat()   metodining   POST   versiyasi   foydalanuvchi   tomonidan   forma
orqali kiritilgan ma’lumotlarni qabul qiladi va ularni ma’lumotlar bazasiga saqlash
vazifasini   bajaradi.   Ushbu   metod   HttpPost   atributi   bilan   belgilangan   bo‘lib,
faqatgina   POST   so‘rovlari   orqali   chaqiriladi.   Metod   ish   jarayonida   quyidagi
amallar ketma-ket bajariladi:
·   F oydalanuvchi   tomonidan   kiritilgan   xabar   ma’lumotlari   Aloqa   modeli   orqali
qabul qilinadi;
·   X abar   yuborilgan   sana   va   vaqt   avtomatik   ravishda   DateTime.Now   orqali
belgilanadi;
·  Entity Framework yordamida xabar Xabarlar jadvaliga qo‘shiladi;
·  SaveChanges() metodi orqali ma’lumotlar bazasiga saqlanadi.
Ma’lumotlar   muvaffaqiyatli   saqlangandan   so‘ng,   foydalanuvchiga   xabar
yuborilganligi   haqida   TempData   mexanizmi   orqali   bildirishnoma   chiqariladi   va
foydalanuvchi tizimning bosh sahifasiga (Index) yo‘naltiriladi.
AdminHomeController   kutubxona   axborot   tizimining   ma’muriy
(administrator)   qismini   boshqaruvchi   asosiy   kontroller   hisoblanadi.   Ushbu
kontroller orqali tizim administratorlari kutubxona faoliyatini to‘liq nazorat qilish,
ma’lumotlarni boshqarish va tahrirlash imkoniyatiga ega bo‘ladi.
AdminHomeController   yordamida:   kitoblar,   mualliflar   va   janrlar
boshqariladi;   foydalanuvchilar (a’zolar) ro‘yxati yuritiladi;   kitoblarni ijaraga berish
va   qaytarish   jarayonlari   nazorat   qilinadi;   foydalanuvchilardan   kelib   tushgan
xabarlar   ko‘rib   chiqiladi;   tizim   bo‘yicha   umumiy   statistik   ma’lumotlar
shakllantiriladi. 23Mazkur   kontroller   ASP.NET   Core   MVC   arxitekturasining   Controller   qismi
bo‘lib,   Admin   Area   ichida   joylashgan.   Bu   esa   foydalanuvchi   va   administrator
funksiyalarini qat’iy ajratishga xizmat qiladi.
Kontroller   Entity   Framework   Core   orqali   AppDbContext   bilan,
foydalanuvchilar   autentifikatsiyasi   uchun   esa   ASP.NET   Identity   (UserManager)
bilan integratsiyalashgan.
Umuman   olganda,   AdminHomeController   tizimning   administrator   qismi
funksionalligini   to‘liq   ta’minlab,   ma’lumotlarni   markazlashtirilgan   va   samarali
boshqarishga   xizmat   qiladi   hamda   administratorning   barcha   asosiy   vazifalarini
bajarish uchun qulay interfeys yaratadi.
11 -rasm. AdminHomeController dagi Index() metodi. 24Index()   metodi   administrator   panelining   asosiy   sahifasini   ifodalaydi.   Ushbu
metodda   AdminDashboardVM   ViewModel   obyekti   yaratiladi   va   unga   bir   nechta
muhim statistik ma’lumotlar yuklanadi.  Model orqali:
·  Faol ijaralar (hali qaytarilmagan kitoblar)
·  Muddati o‘tgan ijaralar (qaytarish sanasi o‘tib ketgan kitoblar)
·  Oxirgi 5 ta qo‘shilgan a’zo
·  Oxirgi 5 ta faol ijara
LINQ querylari yordamida ma’lumotlar bazasidan olinadi.
Include() metodi orqali ijaralar bilan bog‘liq kitob va a’zo ma’lumotlari ham
yuklanadi. Bu esa View qismida qo‘shimcha so‘rovlar bo‘lishining oldini oladi va
tizim samaradorligini oshiradi.Yig‘ilgan barcha ma’lumotlar AdminDashboardVM
orqali Index.cshtml sahifasiga uzatiladi. 2512- rasm. AdminHomeController sinfidagi  Janrlar,
AddJanr va EditJanr   metodlari.
Janrlar()   metodi   tizimda   mavjud   bo‘lgan   barcha   janrlar   ro‘yxatini   olish   va
foydalanuvchiga   ko‘rsatish   vazifasini   bajaradi.   Metod   Entity   Framework
yordamida   Janrlar   jadvalidagi   barcha   yozuvlarni   ToList()   orqali   ro‘yxat   shaklida
oladi va ularni View sahifaga uzatadi.
Ushbu metod natijasida administrator janrlar ro‘yxatini to‘liq ko‘rishi va ular
ustida keyingi amallarni bajarishi mumkin bo‘ladi. 26AddJanr()   metodining   GET   versiyasi   yangi   janr   qo‘shish   uchun
mo‘ljallangan   forma   sahifasini   ko‘rsatadi.   Ushbu   metod   hech   qanday   ma’lumot
uzatmaydi va faqatgina mos View sahifani qaytaradi.
Ushbu   AddJanr( Janr   janr )   POST   metodi   foydalanuvchi   tomonidan   forma
orqali   kiritilgan   yangi   janr   ma’lumotlarini   qabul   qiladi.   Kiritilgan   obyekt   Entity
Framework yordamida Janrlar jadvaliga qo‘shiladi va SaveChanges() metodi orqali
ma’lumotlar   bazasiga   saqlanadi.   Ma’lumot   muvaffaqiyatli   saqlangandan   so‘ng,
foydalanuvchi   janrlar   ro‘yxati   sahifasiga   yo‘naltiriladi.   Bu   esa   jarayonning
mantiqiy va uzluksiz bo‘lishini ta’minlaydi.
EditJanr(int   id)   metodi   berilgan   identifikator   (ID)   bo‘yicha   aniq   bir   janrni
topish  va uni   tahrirlash  uchun  View sahifaga  uzatish   vazifasini  bajaradi.  Find(id)
metodi   orqali   janr   ma’lumotlar   bazasidan   qidirib   topiladi.   Agar   ko‘rsatilgan   ID
bo‘yicha   janr   topilmasa,   metod   NotFound()   natijasini   qaytaradi.   Bu   esa   tizimda
xatoliklarning oldini olishga xizmat qiladi.
Mazkur   EditJanr( Janr   janr )     POST   metodi   tahrirlangan   janr   ma’lumotlarini
qabul qiladi va ularni yangilash vazifasini bajaradi. Update() metodi orqali mavjud
janr   yozuvi   yangilanadi   va   o‘zgarishlar   ma’lumotlar   bazasiga   saqlanadi.   Jarayon
muvaffaqiyatli   yakunlangach,   foydalanuvchi   yana   janrlar   ro‘yxati   sahifasiga
yo‘naltiriladi.   Bu   esa   administratorga   amalga   oshirilgan   o‘zgarishlarni   darhol
ko‘rish   imkonini   beradi.   Bunday   imkoniyatlarning   borligi   an’anaviy
kutubxonalarda ishlashdan ancha qulayliklarni yaratib beradi.  2713- rasm. AdminHomeController ichidagi  DeleteJanr ,
Mualliflar , AddMuallif  metod lari .
13 -rasmda   DeleteJanr(int   id)   metodi   ma’lumotlar   bazasidan   aniq   bir   janrni
o‘chirish vazifasini bajaradi. Metodga janrning identifikator qiymati (ID) uzatiladi
va   ushbu   qiymat   asosida   Find(id)   orqali   mos   janr   aniqlanadi.   Agar   berilgan   ID
bo‘yicha janr topilmasa, metod NotFound() natijasini qaytaradi. Bu holat noto‘g‘ri
yoki mavjud bo‘lmagan ma’lumotlar bilan ishlashning oldini oladi. 28Janr muvaffaqiyatli topilgandan so‘ng, u Remove() metodi orqali ma’lumotlar
bazasidan o‘chiriladi va SaveChanges() yordamida o‘zgarishlar saqlanadi. Jarayon
yakunida foydalanuvchi yana janrlar ro‘yxati sahifasiga yo‘naltiriladi.
Mualliflar()   metodi   kutubxona   axborot   tizimida   mavjud   bo‘lgan   barcha
mualliflar haqidagi ma’lumotlarni olish va ularni foydalanuvchiga ko‘rsatish uchun
mo‘ljallangan.   Ushbu   metod   Entity   Framework   texnologiyasidan   foydalangan
holda   Mualliflar   jadvali   bilan   ishlaydi   va   undagi   barcha   yozuvlarni   ma’lumotlar
bazasidan   oladi.   Olingan   yozuvlar   ToList()   metodi   yordamida   ro‘yxat   shakliga
o‘tkazilib,   keyinchalik   Muallif   nomli   View   sahifasiga   uzatiladi.   Natijada
administrator   yoki   tizim   foydalanuvchisi   kutubxonada   ro‘yxatdan   o‘tgan   barcha
mualliflar   bilan   tanishishi,   ularning   ma’lumotlarini   ko‘rishi   hamda   kerakli
boshqaruv amallarini bajarish imkoniyatiga ega bo‘ladi.
AddMuallif()   metodining   GET   versiyasi   yangi   muallifni   tizimga   qo‘shish
uchun   mo‘ljallangan   maxsus   forma   sahifasini   ochadi.   Ushbu   metod   hech   qanday
ma’lumotlar   bazasi   bilan   bog‘lanmagan   holda   faqatgina   View’ni   qaytaradi.   Bu
forma   foydalanuvchiga   yangi   muallifning   ismi,   familiyasi   va   boshqa   zarur
ma’lumotlarini   kiritish   uchun   qulay   interfeys   yaratadi.   Mazkur   bosqichda   hech
qanday   ma’lumot   saqlanmaydi,   balki   foydalanuvchi   ma’lumot   kiritishga   tayyor
holatga keltiriladi.
AddMuallif()   metodining   POST   versiyasi   esa   forma   orqali   kiritilgan   yangi
muallif   ma’lumotlarini   qabul   qiladi   va   ularni   server   tomonida   qayta   ishlaydi.
Kiritilgan   obyekt   Entity   Framework   yordamida   Mualliflar   jadvaliga   qo‘shiladi
hamda   SaveChanges()   metodi   orqali   ma’lumotlar   bazasiga   doimiy   ravishda
saqlanadi.   Ushbu   jarayonda   kiritilgan   ma’lumotlarning   to‘g‘riligi   va   to‘liqligi
tekshiriladi.   Jarayon   muvaffaqiyatli   yakunlangach,   foydalanuvchi   mualliflar
ro‘yxati   sahifasiga   qayta   yo‘naltiriladi.   Natijada   yangi   muallif   ma’lumotlari
tizimga qo‘shilib, kutubxona ma’lumotlar bazasi yangilanadi va tizimning umumiy
funksionalligi kengayadi. 2914- rasm. AdminHomeController ichidagi  EditMuallif ,
DeleteMuallif va Aloqa metodlari
EditMuallif(int   id)   (GET)metod i   mavjud   muallif   ma’lumotlarini   tahrirlash
sahifasini ochish uchun ishlatiladi. Metodga muallifning identifikatori uzatiladi va
shu   orqali   ma’lumotlar   bazasidan   mos   muallif   Find(id)   yordamida   topiladi.   Agar
berilgan   ID   bo‘yicha   muallif   topilmasa,   metod   NotFound()   natijasini
qaytaradi . Agar   muallif   mavjud   bo‘lsa,   uning   ma’lumotlari   View   sahifasiga
uzatiladi .
        EditMuallif(Muallif muallif) (POST) metoditahrirlash formasi orqali kiritilgan 30yangilangan   muallif   ma’lumotlarini   saqlash   vazifasini   bajaradi.   Forma   orqali
kelgan   Muallif   obyektini   Update()   metodi   yordamida   ma’lumotlar   bazasida
yangilaydi.   SaveChanges() chaqirilishi orqali barcha o‘zgarishlar  bazaga yoziladi.
Jarayon   muvaffaqiyatli   yakunlangach,   foydalanuvchi   yana   mualliflar   ro‘yxati
sahifasiga yo‘naltiriladi.
DeleteMuallif(int   id)   metodi   tanlangan   muallifni   ma’lumotlar   bazasidan
o‘chirish   uchun   xizmat   qiladi.   Metodga   uzatilgan   ID   orqali   muallif   aniqlanadi.
Agar   muallif   topilmasa,   NotFound()   qaytariladi.   Aks   holda,   muallif   Remove()
metodi   orqali   bazadan   o‘chiriladi   va   SaveChanges()   yordamida   o‘zgarishlar
saqlanadi. So‘ngra foydalanuvchi mualliflar ro‘yxatiga qayta yo‘naltiriladi.
Aloqa()   metodi   foydalanuvchilar   tomonidan   yuborilgan   aloqa   xabarlarini
ko‘rish   uchun   mo‘ljallangan.   Metod   Xabarlar   jadvalidagi   barcha   xabarlarni
yuborilgan   sanasi   bo‘yicha   kamayish   tartibida   (OrderByDescending)   saralaydi.
Natijada   eng   oxirgi   yuborilgan   xabarlar   birinchi   bo‘lib   ko‘rsatiladi.   Olingan
xabarlar ro‘yxati View sahifasiga uzatiladi.
15 -rasm. AdminHomeController  sinfidagi Kitoblar , AddKitob  metod lar i 31Kitoblar()   metoditizimdagi   barcha   kitoblar   ro‘yxatini   ko‘rsatish   uchun
mo‘ljallangan.  Metod  Entity  Framework’ning  Include()  funksiyasi   yordamida  har
bir   kitobga   tegishli   muallif   va   janr   ma’lumotlarini   ham   birgalikda   yuklaydi.   Bu
yondashuv   kitoblar   ro‘yxatini   to‘liq   va   tushunarli   ko‘rinishda   chiqarish   imkonini
beradi.Olingan   ma’lumotlar   ToList()   orqali   ro‘yxatga   o‘tkazilib,   View   sahifasiga
uzatiladi. 
            AddKitob()   (GET)   metodi   -b u  metod   yangi   kitob   qo‘shish   sahifasini   ochish
vazifasini   bajaradi.   Sahifada   muallif   va   janrni   tanlash   uchun   ViewBag   orqali
ro‘yxatlar   uzatiladi.   SelectList   yordamida   mualliflar   va   janrlar   ma’lumotlar
bazasidan olinib, dropdown (tanlash) ko‘rinishida foydalanuvchiga taqdim etiladi.
16 -rasm. AdminHomeController  sinfidagi AddKitob(davomi),EditKitob  metod lar i 32AddKitob(KitobCreateVM   model)   (POST)   metodi   yangi   kitob   haqidagi
kiritilgan   ma’lumotlarni   qabul   qilib,   bazaga   saqlash   uchun   ishlatiladi.   Avvalo
ModelState.IsValid   orqali   kiritilgan   ma’lumotlarning   to‘g‘riligi   tekshiriladi.   Agar
rasm   yuklangan   bo‘lsa,   u   noyob   nom   bilan   serverdagi   img/kitoblar   papkasiga
saqlanadi,   aks   holda   default.png   ishlatiladi.   Shuningdek,   kitobning   elektron   fayli
ham alohida papkaga yuklanadi.   Shundan so‘ng barcha ma’lumotlar asosida yangi
Kitob obyekt yaratiladi va bazaga qo‘shiladi. Soni_qolgan qiymati dastlab umumiy
son   bilan   teng   qilib   belgilanadi.   Ma’lumotlar   saqlangach,   foydalanuvchi   kitoblar
ro‘yxatiga qayta yo‘naltiriladi.
EditKitob(int   id)   (GET)   metodi   -   b u   metod   mavjud   kitob   ma’lumotlarini
tahrirlash   sahifasini   ochish   uchun   xizmat   qiladi.   Berilgan   ID   orqali   kitob
ma’lumotlar   bazasidan   topiladi.   Agar   kitob   mavjud   bo‘lmasa,   NotFound()
qaytariladi.   Aks   holda,   kitob   ma’lumotlari   KitobEditVM   modeliga   o‘tkazilib,
View sahifasiga yuboriladi. Shuningdek, muallif va janrlar ro‘yxati yana SelectList
orqali uzatiladi. 3317-18 -rasm. AdminHomeController  sinfidagiEditKitob va DeleteKitob  metodlari.
EditKitob(KitobEditVM   model)   (POST)   metodi   mavjud   kitob   haqidagi
tahrirlangan   ma’lumotlarni   qabul   qilish   va   yangilash   uchun   mo‘ljallangan.
Metodga   View’dan   KitobEditVM   modeli   orqali   kiritilgan   ma’lumotlar   uzatiladi.
Avvalo,   kitob   identifikatori   asosida   ma’lumotlar   bazasidan   mos   yozuv   topiladi.
ModelState.IsValid   sharti   yordamida   foydalanuvchi   tomonidan   kiritilgan
ma’lumotlarning to‘g‘riligi tekshiriladi. So‘ng kitobning asosiy maydonlari (nomi,
ISBN,   tavsifi,   muallifi   va   janri)   yangilanadi.   Kitob   sonidagi   o‘zgarish   hisobga
olinib,   mavjud   nusxalar   soni   (Soni _ qolgan)   mos   ravishda   qayta   hisoblanadi   va
manfiy   qiymatga   tushib   ketmasligi   ta’minlanadi.   Agar   foydalanuvchi   yangi   rasm
yuklagan bo‘lsa, eski rasm serverdan o‘chiriladi (agar u standart rasm bo‘lmasa) va
yangi rasm noyob nom bilan saqlanadi. Xuddi shu tartibda kitobning elektron fayli
ham   yangilanadi   -   eski   fayl   o‘chirilib,   yangi   fayl   serverga   joylanadi.   Barcha
o‘zgarishlar   amalga   oshirilgach,   yangilangan   kitob   ma’lumotlari   ma’lumotlar
bazasiga saqlanadi va foydalanuvchi kitoblar ro‘yxati sahifasiga yo‘naltiriladi.  34DeleteKitob(int id) metodi   kitobni tizimdan to‘liq o‘chirish vazifasini bajaradi.
Avvalo, berilgan identifikator orqali  kitob ma’lumotlar  bazasidan  qidirib topiladi.
Agar kitob mavjud bo‘lmasa, NotFound() natijasi qaytariladi.Kitob topilgach, unga
tegishli   rasm   fayli   va   elektron   kitob   fayli   server   xotirasidan   o‘chiriladi.   Bunda
standart   rasm   (default.png)   tasodifan   o‘chib   ketmasligi   alohida   tekshiriladi.
Shuningdek, ushbu kitob bilan bog‘liq bo‘lgan barcha ijara yozuvlari (Ijaralar) ham
bazadan olib tashlanadi.   So‘ngra kitobning o‘zi  Kitoblar jadvalidan o‘chiriladi  va
barcha   o‘zgarishlar   ma’lumotlar   bazasiga   saqlanadi.   Metod   yakunida
foydalanuvchi yana kitoblar ro‘yxati sahifasiga yo‘naltiriladi.
19- rasm. AdminHomeController sinfidagi  Azolar va AddAzo metodlari
Azolar()   metodi   kutubxona   tizimida   ro‘yxatdan   o‘tgan   barcha   a’zolar   ro‘yxatini
shakllantirish vazifasini bajaradi. Ma’lumotlar bazasidagi Azolar jadvalidan barcha
yozuvlar olinadi va ro‘yxat ko‘rinishida View sahifasiga uzatiladi. 35AddAzo() (GET) metodi   yangi a’zo qo‘shish sahifasini ochish uchun xizmat
qiladi.   Metod   hech   qanday   ma’lumotni   qayta   ishlamaydi   va   faqatgina   a’zo
ma’lumotlarini kiritish uchun mo‘ljallangan View sahifani foydalanuvchiga taqdim
etadi.
AddAzo(AzoCreateVM   model)   (POST)   metodi   yangi   a’zo   haqidagi
kiritilgan   ma’lumotlarni   qabul   qilish   va   tizimga   ro‘yxatdan   o‘tkazish   vazifasini
bajaradi.   Avvalo   ModelState.IsValid   orqali   foydalanuvchi   tomonidan   kiritilgan
ma’lumotlarning   to‘g‘riligi   tekshiriladi.   So‘ngra   ASP.NET   Identity   tizimi
yordamida   yangi   foydalanuvchi   uchun   IdentityUser   obyekti   yaratiladi   va
foydalanuvchining   elektron   pochta   manzili   logi n   sifatida   belgilanadi.
Foydalanuvchi   Identity   tizimida   muvaffaqiyatli   yaratilgach,   shu   foydalanuvchiga
mos keluvchi a’zo ma’lumotlari alohida Azo jadvaliga saqlanadi. 3620-21- rasm. AdminHomeController sinfidagi  EditAzo va DeleteAzo metodlari
EditAzo(int   id)   (GET)   metodi     mavjud   foydalanuvchi   ma’lumotlarini
tahrirlash   sahifasini   ochish   uchun   ishlatiladi.   Metodga   foydalanuvchining
identifikatori   (ID)   uzatiladi   va   shu   ID   orqali   _db.Azolar.Find(id)   yordamida
ma’lumotlar   bazasidan   mos   foydalanuvchi   topiladi.   Agar   foydalanuvchi   mavjud
bo‘lsa,   uning   ma’lumotlari   (Ism,   Familiya,   Email,   PhoneNumber)   ViewModel
(AzoEditVM) ga uzatiladi va foydalanuvchi tahrirlash formasini ko‘radi.
EditAzo(AzoEditVM   model)   (POST)   metodi     tahrirlash   formasidan   kelgan
ma’lumotlarni saqlash vazifasini bajaradi.   Bu metod foydalanuvchi ma’lumotlarini
Identity va lokal bazada mos ravishda yangilashni ta’minlaydi, tizimning barqaror
ishlashini kafolatlaydi. 3722- rasm. AdminHomeController sinfidagi  AddIjara metodlari
AddIjara()   (GET)   metodi     ijaraga   berish   sahifasini   ochish   uchun   ishlatiladi.
Mavjud   nusxasi   qolgan   kitoblar   va   tizimdagi   azolar   ro‘yxati   dropdown   shaklida
Viewga   uzatiladi.   Foydalanuvchi   sahifada   kitob   va   azo   tanlay   oladi,   formani
to‘ldiradi.
AddIjara(IjaraCreateVM   model)   (POST)   metodi     foydalanuvchi   tomonidan
to‘ldirilgan   formadagi   ma’lumotlarni   bazaga   saqlash   uchun   ishlatiladi.   Avvalo
tanlangan kitob mavjudligi va qolgan nusxasi tekshiriladi. Agar nusxasi qolmagan
bo‘lsa,   xatolik   qo‘shiladi   va   forma   qayta   ko‘rsatiladi.   Agar   ma’lumotlar   to‘g‘ri
bo‘lsa,   yangi   ijaraga   berish   yozuvi   yaratiladi   va   bazaga   qo‘shiladi.   Kitobning
qolgan   nusxasi   avtomatik   kamaytiriladi.   Bu   jarayoon   orqali   biz   kitoblardan
nechtasi qolganini aniqlashtirib olishimiz mumkin bo ‘ ladi.   Jarayon muvaffaqiyatli
yakunlangach, foydalanuvchi ijaralar ro‘yxatiga yo‘naltiriladi. 3823- rasm. AdminHomeController sinfidagi  Qaytarildi va
 DeleteIjara metodlari
Qaytarildi(int   id) metodi   tanlangan   ijaraning   qaytarilganligini   belgilaydi.Ijara
bazadan   topiladi.   Holati   Qaytarilgan   ga   o‘zgartiriladi   va   qaytarilgan   sana
belgilanadi.Agar   kitob   mavjud   bo‘lsa,   uning   qolgan   nusxasi   avtomatik   oshiriladi.
O‘zgarishlar saqlanadi va ijaralar ro‘yxatiga qaytaradi.
DeleteIjara(int id)   metod i   tanlangan ijarani bazadan o‘chiradi.   Ijara topiladi.
Agar   ijaraning   holati   qaytarilmagan   bo‘lsa,   kitobning   qolgan   nusxasi   oshiriladi.
Ijara   o‘chiriladi   va   o‘zgarishlar   saqlanadi.   Foydalanuvchi   ijaralar   ro‘yxatiga
yo‘naltiriladi. 3924-25 -rasm. HomeController uchun _Layout.cshtml  faylida navigatsiya anelining
(navbar) joylashuvi va Razor    (@RenderBody), Footer  konstruksiyalari. 40_Layout.cshtml   —   bu   saytning   umumiy   shablon   fayli   bo‘lib,   barcha
sahifalarda takrorlanadigan elementlarni (yuqori menyu, navigatsiya paneli, footer,
umumiy dizayn)  bitta  joyda saqlash  uchun  ishlatiladi.  Shu  orqali  saytning  barcha
sahifalarida   bir   xil   ko‘rinish   va   tuzilma   ta’minlanadi   hamda   kodni   qayta-qayta
yozishning oldi olinadi.
Ushbu   rasmda   ASP.NET   Core   MVC   platformasi   asosida   ishlab   chiqilgan
elektron kutubxona tizimining umumiy sahifa shabloni tasvirlangan. Mazkur sahifa
barcha   View   fayllar   uchun   yagona   dizayn   va   tuzilmani   ta’minlab,   veb-ilovaning
vizual   yaxlitligini   saqlashga   xizmat   qiladi.   Sahifaning   yuqori   qismida   kutubxona
nomi   va   logotipi   joylashgan   bo‘lib,   foydalanuvchi   uchun   tizimning   asosiy
yo‘nalishini   aniq   ko‘rsatib   beradi.   Navigatsiya   paneli   yordamida   foydalanuvchi
bosh sahifa, ma’lumot sahifalari va boshqa funksional bo‘limlarga tezkor murojaat
qilishi mumkin. Qidiruv maydoni kitoblarni tez va qulay izlash imkonini yaratadi.
Sahifaning pastki qismida joylashgan footer bo‘limida kutubxona haqida qisqacha
ma’lumot, aloqa manzillari  hamda ijtimoiy tarmoqlarga havolalar  berilgan bo‘lib,
bu   foydalanuvchi   bilan   axborot   almashinuvi   jarayonini   yaxshilaydi.   Layout
sahifasida   tashqi   kutubxonalar,   uslub   fayllari   va   skriptlarning   ulanishi
ta’minlangan   bo‘lib,   @RenderBody()   yordamida   har   bir   sahifaning   asosiy
mazmuni   dinamik   tarzda   yuklanadi.   Ushbu   sahifa   elektron   kutubxona   tizimining
barqaror   ishlashi,   qulay   interfeysi   va   foydalanuvchi   uchun   tushunarli   dizaynini
ta’minlovchi muhim tarkibiy qism hisoblanadi.
@RenderBody()   —   bu   _Layout.cshtml   faylining   eng   muhim   Razor
konstruksiyalaridan  biri   bo‘lib,  har   bir  controller  action’iga  mos   View  sahifaning
asosiy   mazmuni   aynan   shu   joyga   yuklanadi.   Ya’ni,   sahifa   o‘zgaradi,   ammo
umumiy dizayn (navbar, footer) o‘zgarmaydi.
   asp-controller   va   asp-action   yordamida   xizmatlar   va   sahifalarga   dinamik   va
xavfsiz havolalar yaratilgan.
 Footer menyu orqali foydalanuvchi asosiy sahifalarga tezda o‘ta oladi.
 Barcha sahifalarda footer avtomatik ravishda ko‘rinadi, bu esa yagona dizaynni
ta’minlaydi. 4126 -rasm. HomeController ko‘rinishlari uchun _ViewImports.cshtml fayli.
_ViewImports.cshtml   fayli   ASP.NET   Core   MVC   loyihasida   barcha   View
sahifalar uchun umumiy sozlamalarni bir joyda belgilash uchun ishlatiladi. Ushbu
fayl   orqali   Razor   sahifalarda   doimiy   ishlatiladigan   kutubxonalar   va   imkoniyatlar
avtomatik ravishda ulanadi.
@addTagHelper*,   Microsoft.AspNetCore.Mvc.TagHelpers   bu   qatorda
ASP.NET   Corening   standart   Tag   Helperlari   faollashtiriladi.   Natijada   asp-
controller,   asp-action,   asp-for,   asp-validation-for   kabi   Razor   imkoniyatlaridan
barcha View fayllarda qo‘shimcha yozmasdan foydalanish mumkin bo‘ladi.
27 -rasm. HomeController ko‘rinishlari uchun _ViewStart.cshtml fayli.
Ushbu   fayl   barcha   View   sahifalar   uchun   umumiy   bo‘lgan   Layout   faylini
belgilash vazifasini bajaradi. Layout = "_Layout"; ifodasi orqali loyihadagi barcha
sahifalar   avtomatik   ravishda   _Layout.cshtml   shablonidan   foydalanadi.   Natijada
saytning   umumiy   dizayni,   menyu,   footer   va   boshqa   umumiy   elementlar   barcha
sahifalarda bir  xil  ko‘rinishda aks etadi hamda kod takrorlanishining oldi  olinadi.
Bu kod yozishda ham juda ko ‘ p qulaylik yaratib beradi va vaqtimizni ham tejagan
bo ‘ ladi.  4228 -rasm. HomeControllerning Index.cshtml  fayli
Ushbu   rasmda   elektron   kutubxona   tizimining   foydalanuvchilar   uchun
mo‘ljallangan   bosh   sahifasi   tasvirlangan.   Mazkur   sahifa   ASP.NET   Core   MVC
texnologiyasi   asosida   ishlab   chiqilgan   bo‘lib,   foydalanuvchini   tizim   bilan
tanishtirish va uning faol ishtirokini ta’minlashga xizmat qiladi. Sahifaning yuqori
qismida   kitob   o‘qishga   undovchi   motivatsion   matn   joylashtirilgan   bo‘lib,   u
foydalanuvchining   e’tiborini   jalb   qilishga   qaratilgan.   Bosh   sahifada   joylashgan
slayder   qismi   tizimda   mavjud   bo‘lgan   kitoblarning   muqova   rasmlarini   dinamik
tarzda   namoyish   etadi,   bunda   ma’lumotlar   Controller   orqali   Model   yordamida
View   ga   uzatiladi   va   foreach   operatori   orqali   ekranga   chiqariladi.   Bu   yondashuv
sahifadagi ma’lumotlarning avtomatik yangilanib turishini ta’minlaydi. Sahifaning
pastki   qismida   joylashgan   a’zolik   bo‘limi   foydalanuvchilarni   kutubxona   tizimiga 43a’zo   bo‘lishga   undaydi   hamda   elektron   xizmatlardan   foydalanish   imkoniyatlari
haqida   qisqacha   ma’lumot   beradi.   Ushbu   bo‘lim   orqali   foydalanuvchi   ro‘yxatdan
o‘tish,   yangiliklardan   xabardor   bo‘lish   va   kelajakda   shaxsiy   kabinetdan
foydalanish   imkoniyatiga   ega   bo‘ladi.   Umuman   olganda,   bosh   sahifa   elektron
kutubxona  tizimining  asosiy   funksiyalarini  vizual  va   mantiqiy  jihatdan   tushunarli
tarzda aks ettirib, foydalanuvchi bilan tizim o‘rtasida samarali aloqani ta’minlaydi.
29-rasm.  HomeControllerning  Mashhur.cshtml fayli
Ushbu rasmda elektron kutubxona veb-ilovasining “Mashhur kitoblar” bo‘limi
tasvirlangan   bo‘lib,   mazkur   sahifa   foydalanuvchilarga   eng   ko‘p   o‘qilayotgan   va
ommalashgan kitoblarni qulay va vizual ko‘rinishda taqdim etishga mo‘ljallangan.
Mazkur sahifada kitoblar ro‘yxati dinamik tarzda shakllantiriladi, ya’ni sahifadagi
ma’lumotlar qo‘lda yozilmaydi, balki Controller tomonidan ma’lumotlar bazasidan
olinib, Model orqali View sahifasiga uzatiladi. View qismida ushbu Model foreach
sikli   yordamida   qayta   ishlanib,   har   bir   kitob   uchun   alohida   HTML   elementlar
avtomatik   ravishda   hosil   qilinadi.   Natijada,   ma’lumotlar   bazasiga   yangi   kitob
qo‘shilganda   yoki   mavjud   kitoblar   o‘zgartirilganda,   sahifa   tuzilishini 44o‘zgartirmasdan   turib,   yangilangan   ma’lumotlar   foydalanuvchiga   darhol   aks
ettiriladi.Agar   kitob   uchun   elektron   fayl   mavjud   bo‘lsa,   foydalanuvchiga   ushbu
faylni  PDF formatida onlayn o‘qish imkoniyati  yaratilgan, aks holda fayl  mavjud
emasligi   haqida   xabar   ko‘rsatiladi.   Slayder   mexanizmi   Swiper   kutubxonasi
yordamida   amalga   oshirilgan   bo‘lib,   bu   foydalanuvchiga   kitoblar   orasida   qulay
harakatlanish imkonini beradi. Ushbu bo‘lim elektron kutubxona tizimining asosiy
vazifalaridan   biri   bo‘lgan   axborotga   tezkor   va   oson   kirishni   ta’minlaydi   hamda
foydalanuvchilarning tizimga bo‘lgan qiziqishini oshirishga xizmat qiladi.
30-rasm.  HomeControllerning  BizbilanAloqa fayli
30   -   rasmda   elektron   kutubxona   tizimining   “Biz   haqimizda”   sahifasi   uchun
yozilgan View qismi tasvirlangan. Sahifa HTML va Razor sintaksisi asosida ishlab
chiqilgan   bo‘lib,   umumiy   sahifa   tuzilmasi   section,   div   va   semantik   sinflar
yordamida   shakllantirilgan.   Sahifaning   asosiy   qismi   konteyner   ichida
joylashtirilgan   bo‘lib,   u   ikki   ustunli   ko‘rinishda   tashkil   etilgan:   chap   tomonda
tasvir (image), o‘ng tomonda esa matnli kontent joylashgan.
View   faylda   statik   resurslar   (rasmlar   va   ikonlar)   ~   belgisi   orqali   loyihaning
ildiz   katalogidan   chaqirilgan   bo‘lib,   bu   usul   ASP.NET   Core   muhitida   fayllarni
to‘g‘ri   yuklashni   ta’minlaydi.   Matnli   qismda   sarlavha   va   paragraf   teglari 45yordamida   sahifa   mazmuni   strukturalashtirilgan.   Shuningdek,   ikonlar
FontAwesome   kutubxonasi   orqali   chiqarilgan   bo‘lib,   bu   sahifaning   vizual
aniqligini oshiradi. Sahifa oxirida joylashgan tugma asp-action atributi yordamida
Controllerdagi   mos   metodga   bog‘langan   bo‘lib,   bu   Razor   Tag   Helperlar   orqali
marshrutlashni   amalga   oshiradi.   Umuman   olganda,   ushbu   View   qismi   MVC
arxitekturasiga   mos   holda,   mantiqiy   qatlamdan   ajratilgan   holda   faqat
foydalanuvchi interfeysini shakllantirish vazifasini bajaradi.
31 -rasm. HomeController ning  XabarJonat.cshtml fayli
Ushbu sahifa elektron kutubxona tizimida foydalanuvchi bilan samarali aloqa
o‘rnatish uchun mo‘ljallangan bo‘lib, ASP.NET Core MVC texnologiyasi asosida
ishlab   chiqilgan.   Sahifa   strukturasi   section   tegi   orqali   alohida   mantiqiy   blok
sifatida   tashkil   etilgan   va   foydalanuvchi   interfeysining   qulayligini   ta’minlash
maqsadida   rasm   hamda   ma’lumot   kiritish   formasi   yonma-yon   joylashtirilgan.   Bu
dizayn   sahifaning   ko‘rgazmaliligini   oshirib,   foydalanuvchining   e’tiborini   asosiy
funksiyaga qaratishga xizmat qiladi.
Mazkur   sahifadagi   forma   Razor   Tag   Helperlar   yordamida   HomeController
tarkibidagi SendMessage action metodiga bog‘langan. Forma orqali foydalanuvchi
tomonidan kiritiladigan ism, elektron pochta manzili va xabar matni maxsus input
hamda textarea maydonlari orqali qabul qilinadi. Barcha maydonlar majburiy qilib
belgilangan bo‘lib, bu noto‘liq yoki xato ma’lumotlarning serverga yuborilishining
oldini oladi.  46 4732-33 -rasm. AdminHomeController yon paneli va Razor linklar yordamida menyu
tuzilishi.
Ushbu   _Layout.cshtml   fayli   elektron   kutubxona   tizimining   administrator
qismi uchun umumiy dizayn va tuzilmani belgilaydi. Mazkur layout admin panelga
tegishli   barcha   sahifalar   uchun   yagona   interfeysni   ta’minlab,   sahifalar   o‘rtasida
dizayn birligini  saqlaydi.   Layout  tarkibida chap tomonda joylashgan  sidebar  (yon
menyu)   orqali   administrator   asosiy   boshqaruv   bo‘limlariga   —   boshqaruv   paneli,
kitoblar,   mualliflar,   janrlar,   a’zolar,   ijaralar   va   foydalanuvchi   xabarlariga   tezkor
o‘tish imkoniyatiga ega bo‘ladi. Ushbu menyular Razor asp-area, asp-controller va
asp-action  atributlari  yordamida  mos  controller   va  action  metodlariga  bog‘langan
bo‘lib, marshrutlash jarayoni xavfsiz va avtomatik tarzda amalga oshiriladi.
Sahifaning   yuqori   qismida   joylashgan   topbar   bo‘limida   joriy   sahifa
sarlavhasi   (ViewData["Title"])   aks   ettiriladi   hamda   asosiy   foydalanuvchi
sahifasiga   qaytish   uchun   maxsus   ikonka   joylashtirilgan.   @RenderBody()   Razor 48konstruksiyasi   esa   har   bir   admin   sahifaning   asosiy   mazmunini   aynan   shu   layout
ichida dinamik tarzda ko‘rsatishni ta’minlaydi.
Pastki   qismda   joylashgan   footer   bo‘limi   mualliflik   huquqi   va   tizim   nomini
aks ettirib, admin panelning barcha sahifalarida avtomatik tarzda ko‘rinadi. Ushbu
yondashuv   MVC   arxitekturasiga   mos   holda   kod   takrorlanishini   kamaytiradi   va
tizimni boshqarishni qulaylashtiradi.
  
34 -rasm. AdminHomeController uchun ViewImports.cshtml fayli.
_ViewImports.cshtml  fayli Razor sahifalarida TagHelperlar va Models hamda
ViewModels   klasslarini   umumiy   ishlatish   uchun   kerak.   Xuddi   yuqoridagi
aytganimizdek, HomeController uchun ham shundan foydalangan edik. 49 5035-36 -rasm. AdminHomeController Index.cshtml statistik bloklari.
Ushbu   kod   admin   panelining   bosh   sahifasida   (Index.cshtml)   joylashgan
boshqaruv   panelini   tashkil   etadi.   Sahifa   administratorga   tizimning  asosiy   statistik
ko‘rsatkichlarini va so‘nggi ma’lumotlarni bir qarashda ko‘rish imkonini beradi .
Bosh   sahifa   sarlavhasi:   <div   class="page-header-custom">   bo‘limi   sahifa
nomi va ikonka orqali ko‘rsatiladi.
Statistik   kartochkalar:   .dashboard-grid   ichidagi   har   bir   .info-card   sahifadagi
asosiy raqamlarni — jami kitoblar, faol a’zolar, faol ijaralar va muddatidan o‘tgan
ijaralar   sonini   ko‘rsatadi.   Razor   sintaksisi   (@(Model   !=   null   ?   ...))   yordamida
qiymatlar  dinamik ravishda  Model’dan olinadi. Har  bir  kartochka oxirida tegishli
sahifaga   tezkor   o‘tish   uchun   link   (asp-area,   asp-controller,   asp-action)
joylashtirilgan.
So‘nggi   a’zolar   jadvali:   Chap   tomondagi   jadval   Model.RecentAzolar   orqali
so‘nggi   qo‘shilgan   5   a’zoni   dinamik   tarzda   chiqaradi.   Jadvalda   ism,   familiya   va
email ko‘rsatiladi, pastdagi link orqali barcha a’zolar sahifasiga o‘tish mumkin.
Joriy ijaralar jadvali: O‘ng tomondagi jadval Model.RecentIjaralar orqali faol
ijaralarni   chiqaradi.   Har   bir   ijarada   kitob   nomi,   a’zo   ismi   va   qaytarish   muddati
ko‘rsatiladi. Pastdagi link barcha ijaralar sahifasiga yo‘naltiradi. 5137 -rasm.  Mualliflar ro ‘ yxati   (Admin panel)
Ushbu kod admin panelidagi Mualliflar bo‘limini tashkil etadi. Sahifa orqali
administrator   tizimdagi   barcha   mualliflarni   ko‘rishi,   qidirishi,   tahrirlashi   va
o‘chirish imkoniga ega bo‘ladi.
Qidiruv   maydoni:   .search-container   ichida   foydalanuvchi   muallif   F.I.O.
bo‘yicha   ro‘yxatni   tez   qidirishi   mumkin.   Bu   interaktiv   qidiruv   sahifa
foydalanuvchisi uchun qulaylik yaratadi.
Mualliflar   jadvali:   <table>   ichida   Model   orqali   dinamik   ravishda   barcha
mualliflar chiqariladi.
· ID: Muallifning unikal identifikatori.
· F.I.O.: Muallifning ism-familiyasi.
· Tug'ilgan yili: Muallifning tug‘ilgan yili.
·   Amallar:   Har   bir   qatorda   tahrirlash   (EditMuallif)   va   o‘chirish   (DeleteMuallif)
tugmalari   joylashgan.   Tugmalar   Razor   yordamida   dinamik   Id   bilan   bog‘langan,
shuning uchun har bir amal aniq muallifga mos ishlaydi. 5238 -rasm.  Ijaralar  ro‘yxati  (Admin panel)
Ushbu kod orqali admin tizimdagi barcha ijaralarni ko‘rib chiqadi  va ularni
boshqaradi.Jadval   sarlavhalari:   ID,   Kitob   nomi,   A'zo   F.I.O.,   Berilgan   sana,
Qaytarish muddati, Holat va Amallar.
Dinamik   ma’lumotlar:   Model   orqali   barcha   ijaralar   chiqariladi,
OrderByDescending(i   =>   i.BerilganSana)   yordamida   oxirgi   berilganlar   yuqorida
ko‘rinadi.
Holat   belgisi:  switch   orqali  ijaraning  holati   aniqlanadi:   Faol   –  ko‘k  rangli   badge,
hali qaytarilmagan.
Qaytarilgan – yashil badge, qaytarilgan sanasi bilan ko‘rsatiladi.
Muddati O‘tgani – qizil badge, muddatidan o‘tgan ijaralar.
Amallar:Agar   ijara   hali   qaytarilmagan   bo‘lsa,   Qaytarildi   tugmasi   form   orqali
POST   bilan   ishlaydi.Agar   ijara   qaytarilgan   bo‘lsa,   tugma   o‘rniga   “Yopilgan”
yozuvi ko‘rinadi.
39- rasm.  Kitoblar  ro‘yxati  (Admin panel) 53Ushbu   jadval   orqali   admin   tizimdagi   barcha   kitoblarni   boshqaradi   va
ularning mavjudligini kuzatadi.   Jadval ustunlari: ID, Kitob nomi (nomi va ISBN),
Muqova (rasm ko‘rinishi va link orqali kattalashtirish), Muallif, Janr, Soni/Qolgan,
E-Fayl (elektron nusxasi) va Amallar.
Dinamik ma’lumotlar: Model orqali barcha kitoblar chiqariladi.
Miqdor   ko‘rsatkichlari:   Jami   soni   va   qolgan   kitoblar   badge   bilan   aniqlanadi;
qolmagan bo‘lsa “Tugagan” deb belgilanadi.
Muqova   va   fayl:   Kitob   rasmi   ko‘rsatiladi,   kattalashtirish   uchun   link   va   agar
mavjud bo‘lsa e-kitobni yuklab olish tugmasi mavjud.
Amallar: Har bir kitob uchun Tahrirlash va O‘chirish tugmalari berilgan .
Bu  jadval  admin  uchun   kitoblarni   to‘liq  kuzatish,   mavjudlikni   tekshirish  va
boshqarish   markazi   bo‘lib   xizmat   qiladi,   barcha   zarur   holatlar   va   amallar
ko‘rsatilgan.
40 -rasm. Yangi    Kitob    qo ‘ shish  oynasi. 54Ushbu forma admin panelida yangi kitob qo‘shish uchun ishlatiladi. Formada
kitobning barcha zarur ma’lumotlari kiritiladi va fayllar yuklanadi.   Kitob nomi va
ISBN:   Kitobni   aniqlash   uchun,   foydalanuvchi   kitob   nomi   va   ISBN   raqamini
kiritadi;   har   ikki   maydon   uchun   validatsiya   mavjud.   Muallif   va   Janr   tanlash:
Dropdown   orqali   kitob   muallifi   va   janri   tanlanadi;   bu   yerda   ViewBag   orqali
dinamik   ravishda   mavjud   mualliflar   va   janrlar   chiqariladi.   Soni:   Kitobning   jami
soni  raqam  sifatida kiritiladi.   Muqova fayli:  Kitob rasmi  yuklanadi  va faqat  rasm
formatlari   qabul   qilinadi   (image/*).   Elektron   kitob   fayli:   PDF   yoki   EPUB
formatdagi   kitob   fayli   yuklanishi   mumkin.   Description:   Kitob   haqida   qisqacha
matnli   tavsif   kiritish   maydoni.   Amallar:   Formaning   oxirida   kitob   ma’lumotlarini
saqlash tugmasi va adminni orqaga olib boradigan link mavjud. 5541-42 -rasm.  Kitob  ma’lumotlarini  tahrirlash sahifasi
Ushbu sahifa elektron kutubxona tizimida foydalanuvchi bilan samarali aloqa
o‘rnatish uchun mo‘ljallangan bo‘lib, ASP.NET Core MVC texnologiyasi asosida
ishlab   chiqilgan.   Sahifa   strukturasi   section   tegi   orqali   alohida   mantiqiy   blok
sifatida   tashkil   etilgan   va   foydalanuvchi   interfeysining   qulayligini   ta’minlash
maqsadida   rasm   hamda   ma’lumot   kiritish   formasi   yonma-yon   joylashtirilgan.   Bu
dizayn   sahifaning   ko‘rgazmaliligini   oshirib,   foydalanuvchining   e’tiborini   asosiy
funksiyaga qaratishga xizmat qiladi.
Mazkur   sahifadagi   forma   Razor   Tag   Helperlar   yordamida   HomeController
tarkibidagi SendMessage action metodiga bog‘langan. Forma orqali foydalanuvchi
tomonidan kiritiladigan ism, elektron pochta manzili va xabar matni maxsus input
hamda textarea maydonlari orqali qabul qilinadi. Barcha maydonlar majburiy qilib
belgilangan bo‘lib, bu noto‘liq yoki xato ma’lumotlarning serverga yuborilishining
oldini   oladi.   Forma   ma’lumotlari   POST   metodi   orqali   serverga   uzatiladi   va
natijada   foydalanuvchi   murojaatlari   tizim   tomonidan   qabul   qilinib,   keyingi   qayta
ishlash jarayonlari uchun tayyor holatga keltiriladi. 5643 -rasm. Admin panelda yangi  ijara  qo‘shish formasi.
Ushbu   forma   admin   panelida   yangi   ijara   jarayonini   yaratish   va
rasmiylashtirish   uchun   mo‘ljallangan.   Administrator   forma   orqali   tanlov
maydonlari yordamida ijaraga beriladigan kitobni va uni oluvchi a’zoni belgilaydi,
shuningdek   kitobni   qaytarish   muddati   uchun   aniq   sana   kiritadi.   Forma
yuborilganda   kiritilgan   barcha   ma’lumotlar   serverga   uzatiladi   va   ijara   jarayoni
tizimda   rasmiy   ravishda   ro‘yxatdan   o‘tkaziladi.   Har   bir   maydon   uchun   maxsus
validatsiya qoidalari joriy etilgan bo‘lib, noto‘g‘ri yoki to‘ldirilmagan ma’lumotlar
mavjud   bo‘lsa,   xatoliklar   darhol   administratorga   ko‘rsatiladi.   Bu   esa
ma’lumotlarning   to‘g‘ri   va   ishonchli   kiritilishini   ta’minlaydi.   Shuningdek,
administrator   istagan   vaqtda   “Orqaga”   tugmasi   orqali   ijara   ro‘yxati   sahifasiga
qaytish imkoniyatiga ega.
Xuddi   shu   tamoyil   asosida   yangi   muallifni   tizimga   qo‘shish   uchun
mo‘ljallangan alohida forma ham mavjud. Ushbu oynada administrator muallifning
to‘liq ismi hamda tug‘ilgan yilini maxsus maydonlar orqali kiritadi. Har bir kiritish
maydoni   uchun   validatsiya   o‘rnatilgan   bo‘lib,   bo‘sh   yoki   noto‘g‘ri   ma’lumot
kiritilganda   xatoliklar   foydalanuvchiga   darhol   ko‘rsatiladi.   Forma   yuborilgach, 57kiritilgan  ma’lumotlar  serverga  jo‘natiladi   va  yangi  muallif   haqidagi   ma’lumotlar
ma’lumotlar   bazasiga   qo‘shiladi.   Jarayon   yakunlangandan   so‘ng   administrator
mualliflar   ro‘yxati   sahifasiga   qaytishi   yoki   boshqa   boshqaruv   amallarini   davom
ettirishi mumkin.
 
44 -rasm.  Muallif  ma’lumotlarini tahrirlash oynasi.
Ushbu   sahifa   admin   panelida   mavjud   muallif   ma’lumotlarini   tahrirlash   uchun
ishlatiladi. Formada  muallifning to‘liq ismi  va tug‘ilgan yili  ko‘rsatiladi  va kerak
bo‘lsa   o‘zgartiriladi.   Har   bir   maydon   validatsiya   qilinadi,   noto‘g‘ri   yoki   bo‘sh
qiymat   kiritilsa   xato   xabari   chiqadi.   Formani   yuborish   orqali   o‘zgartirilgan
ma’lumotlar serverga jo‘natiladi va bazada yangilanadi. Admin xohlasa “Orqaga”
tugmasi bilan mualliflar ro‘yxatiga qaytishi mumkin. 58Loyihadan foydalanish bo‘yicha ko‘rsatma
Ushbu   loyiha   ASP.NET   Core   MVC   texnologiyasi   asosida   ishlab   chiqilgan.
Loyihani ishga tushirish uchun Visual Studio dasturida loyiha ochiladi va Run (IIS
Express) tugmasi bosiladi. Shundan so‘ng loyiha brauzerda ishga tushadi va asosiy
sahifa ochiladi.
45 -rasm. Asosiy sahifa oynasi.
Loyiha ishga tushirilganda foydalanuvchi asosiy sahifaga yo‘naltiriladi. Ushbu
sahifada   Kitoblardan   oxirgi   qo ‘ shilganlarini   rasmini   ko ‘ rishimiz   mumkin,
s huningdek   loyihaning   asosiy   shiorini   ham   ko‘rish   mumkin.   Asosiy   menyular
qismida   Biz   Haqimizda   va   Mashhur   oynalariga   o ‘ tish   va   Kutubxona   ikonkasi
qatorida esa Admin panelga kirish uchun kichik user ikonkasi mavjud.  5946-47 -rasm.  Biz haqimizda va Biz bilan Aloqa   sahifa lari  
45-rasmda   Biz   haqimizda   sahifasini   ko ‘ rib   turibmiz.   Kutubxona   haqida   qisqa
ma’lumotdan   so ‘ ng   Bizga   yozing   tugmasi   bor.   Bu   tugma   bosilgach   46-rasmdagi
Biz   bilan   Aloqa   oynasiga   o ‘ tamiz.   Bu   oynada   esa   Ism   ,   Email   ni   kiritgan   holda
xabar   jo ‘ natish   imokoniyati   mavjud   .Yuborish   tugmasi   bosilgach   u   xabar   Admin
panelga   yuboriladi   va   Kutubxona   haqidagi   fikrlarni   bemalol   kuzatish   imkoniyati
paydo bo ‘ ladi. 6048- rasm.  Mashhur Kitoblar  sahifa si
Mazkur   sahifada   biz   eng   ko ‘ p   olinayotgan   va   eng   yangi   qo ‘ shilgan   kitoblar
ro ‘ yxatini   ko ‘ rishimiz   mumkin   bo ‘ ladi.   Ko ‘ rib   turganimizdek,   kitoblarning
muqova   rasmi   va   har   bir   kitobning   elektron   faylini   ham   bemalol   ochib   o ‘ qish
imkoniyati yaratilgan. 
49- rasm.  Admin panelning  Bosh  sahifa si(Boshqaruv Paneli)
49-   rasmda   Admin   panelning   bosh   sahifasi   ko‘rsatilgan.   Chap   tomonda   menyu
mavjud   bo‘lib,   u   quyidagi   bo‘limlarga   kirishni   ta’minlaydi:   Boshqaruv   Paneli,
Kitoblar,   Mualliflar,   Janrlar,   A’zolar,   Ijaralar,   va   Xabarlar.   O‘ng   tomonda   esa
asosiy boshqaruv hududi joylashgan. Bu hududda umumiy statistika (kitoblar soni, 61faol   a’zolar,   faol   ijaralar,   muddati   o‘tgan   ijaralar)   va   so‘nggi   qo‘shilgan   a’zolar
hamda joriy ijaralar jadvali ko‘rsatilgan. Har bir jadval ostida barcha a’zolar yoki
ijaralarni   ko‘rish   uchun   havola   mavjud.   Bu   sahifa   admin   uchun   umumiy
monitoring va tezkor boshqaruvni ta’minlaydi.
50-rasm. Kitoblar ro ‘ yxati oynasi
Kitoblar   sahifasi   (Kitoblar/Index.cshtml)   barcha   kitoblarni   jadval   shaklida
ko‘rsatadi. Jadvalda har bir kitob uchun quyidagilar mavjud: nomi, ISBN, muallif,
janr,   muqova   rasmi,   jami   nusxalari   va   qolgan   nusxalari.   Admin   har   bir   kitobni
tahrirlash  yoki  o‘chirish  imkoniyatiga  ega.  Kitob fayllari  yuklab  olish  uchun  link
berilgan.
51-rasm. Yangi Kitob qo ‘ shish  oynasi 62Kitob   qo‘shish   sahifasida   (Kitoblar/AddKitob.cshtml)   kitob   nomi,   ISBN,
muallif,   janr,   umumiy   nusxa   soni,   muqova   rasmi   va   kitob   faylini   yuklash
maydonlari   mavjud.   Forma   yuborilgach,   kitob   bazaga   saqlanadi   va   kitoblar
sahifasiga yo‘naltiriladi.
52-rasm. Kitob ma’lumotlarini tahrirlash   oynasi
Kitob   tahrirlash   sahifasi   (Kitoblar/EditKitob.cshtml)   mavjud   kitob
ma’lumotlarini   oldindan   ko‘rsatadi.   Admin  kitob   nomi,  ISBN,   muallif,  janr,   jami
va qolgan nusxalar, muqova rasm  va faylni  yangilashi  mumkin. Yangi rasm  yoki
fayl yuklanganda eski fayl yangilanadi. 6353-54-rasmlar.Kelgan Xabarlar va uni ko ‘ rish oynasi 
  “Kelgan   xabarlar”   oynasi   -   u shbu   oyna   kutubxona   tizimiga
foydalanuvchilardan   kelib   tushgan   murojaat   va   xabarlarni   ko‘rish   uchun
mo‘ljallangan. Jadvalda jo‘natuvchining ismi, elektron pochtasi, xabar yuborilgan
sana va xabar ustida bajariladigan amallar ko‘rsatiladi.
“Xabar   mazmuni”   oynasi   -   Bu   oyna   tanlangan   xabarning   to‘liq   matnini
ko‘rish imkonini beradi. Unda xabar jo‘natuvchisi va xabar mazmuni aks ettiriladi.
Administrator foydalanuvchi fikr va takliflarini tezkor ko‘rib chiqishi mumkin. 6455-56-rasmlar.Azolar ro ‘ yxati va yangi azo qo ‘ shish oynalari
“A’zolar   ro‘yxati”   oynasi   kutubxona   axborot   tizimida   ro‘yxatdan   o‘tgan
barcha a’zolar haqida to‘liq ma’lumotlarni aks ettirish uchun mo‘ljallangan. Ushbu
oynada   a’zolar   jadval   ko‘rinishida   tasvirlanadi   hamda   unda   har   bir   a’zoning
familiyasi, ismi, otasining ismi (F.I.Sh.), elektron pochta manzili va telefon raqami
kabi   asosiy   ma’lumotlar   ko‘rsatiladi.   Shuningdek,   jadvalda   har   bir   a’zo   uchun
tahrirlash   va   o‘chirish   amallarini   bajarish   imkoniyati   mavjud   bo‘lib,   bu
administratorga   foydalanuvchilar   ma’lumotlarini   yangilash   yoki   tizimdan   olib
tashlashni   qulay   tarzda   amalga   oshirishga   yordam   beradi.   Natijada   a’zolar   bilan
bog‘liq ma’lumotlarni boshqarish jarayoni samarali tashkil etiladi.
“Yangi   a’zo   qo‘shish”   oynasi   kutubxonaga   yangi   foydalanuvchini   tizimga
ro‘yxatdan o‘tkazish uchun xizmat qiladi. Ushbu oynada maxsus forma joylashgan
bo‘lib,   forma   orqali   foydalanuvchining   ismi,   familiyasi,   elektron   pochta   manzili, 65telefon   raqami   va   parol   kabi   zarur   ma’lumotlar   kiritiladi.   Kiritilgan   ma’lumotlar
tizim tomonidan qabul qilinadi va ma’lumotlar bazasiga saqlanadi. Ushbu jarayon
yangi   a’zoning   kutubxona   xizmatlaridan   to‘liq   foydalanishini   ta’minlaydi   hamda
foydalanuvchilar sonini tizimli ravishda kengaytirishga xizmat qiladi.
57-58-rasmlar.Azolar ro ‘ yxati va yangi azo qo ‘ shish oynalari
“Kitob ijaralari” oynasi - Bu oyna kitoblarni ijaraga berish jarayonini nazorat
qilish   uchun   mo‘ljallangan.   Unda   kitob   nomi,   ijaraga   olgan   a’zo,   berilgan   sana,
qaytarish muddati va holati haqida ma’lumotlar aks ettiriladi.
“Yangi ijara qo‘shish” oynasi    kutubxonada kitobni ijaraga berish jarayonini
ro‘yxatdan   o‘tkazish   uchun   mo‘ljallangan.   Unda   a’zo   tanlanadi,   kitob   nomi
kiritiladi   hamda   ijaraga   berilgan   sana   va   qaytarish   muddati   belgilanadi.   Saqlash
orqali ijara ma’lumotlari tizimga qo‘shiladi. 66Xulosa
Mazkur   kurs   ishi   davomida   zamonaviy   kutubxona   faoliyatini   axborot
texnologiyalari   asosida   tashkil   etish   masalalari   chuqur   tahlil   qilindi   va   ushbu
sohada   samarali   ishlovchi   kutubxona   axborot   tizimi   loyihasi   ishlab   chiqildi.
Axborotlashgan   jamiyat   sharoitida   bilim   va   ma’lumotlarga   bo‘lgan   ehtiyojning
ortib   borishi   kutubxona   xizmatlarini   raqamlashtirishni,   ma’lumotlarni
markazlashgan   holda   boshqarishni   hamda   foydalanuvchilarga   tezkor   va   qulay
xizmatlar   ko‘rsatishni   taqozo   etadi.   Shu   sababli,   axborot   tizimlarini   joriy   etish
bugungi kunda kutubxona faoliyatining ajralmas qismiga aylanib bormoqda.
Kurs   ishida   ishlab   chiqilgan   kutubxona   axborot   tizimi   loyihasi   berilganlar
bazasini   loyihalashning   konseptual,   mantiqiy   va   jismoniy   darajalari   asosida
bosqichma-bosqich   amalga   oshirildi.   Konseptual   darajada   kutubxona   faoliyatiga
oid   asosiy   entitetlar   —   kitoblar,   mualliflar,   janrlar,   foydalanuvchilar   va   ijaralar
aniqlanib,   ular   o‘rtasidagi   munosabatlar   ER   diagramma   yordamida   ifodalandi.
Mantiqiy   darajada   esa   ushbu   model   relatsion   tuzilishga   o‘tkazilib,   jadvallar,
birlamchi   va   chet   kalitlar,   shuningdek,   normalizatsiya   qoidalari   asosida
ma’lumotlar   strukturasi   shakllantirildi.   Jismoniy   darajada   esa   tanlangan   DBMS
(SQL Server) imkoniyatlaridan foydalangan holda ma’lumotlar bazasi yaratildi va
amaliy jihatdan sinovdan o‘tkazildi.
Loyihada   kutubxona   fondini   boshqarish,   kitoblar   haqidagi   ma’lumotlarni
saqlash,   foydalanuvchilarni   ro‘yxatdan   o‘tkazish   hamda   kitoblarni   ijaraga   berish
jarayonini   avtomatlashtirish   imkoniyatlari   ko‘zda   tutilgan.   CRUD   (Create,   Read,
Update,   Delete)   amallarining   joriy   etilishi   orqali   ma’lumotlar   bilan   ishlash
jarayonlari   soddalashtirildi   va   tizimning   ishonchliligi   oshirildi.   Ushbu   yondashuv
inson   omilini   kamaytirish,   xatoliklar   ehtimolini   pasaytirish   hamda   kutubxona   ish
faoliyatini samarali boshqarishga xizmat qiladi.
Shuningdek,   kurs   ishini   bajarish   jarayonida   axborot   tizimlarini   joriy   etish
orqali   kutubxona   xizmatlari   sifatini   oshirish,   foydalanuvchilarga   ko‘rsatiladigan
xizmatlarning   shaffofligi   va   qulayligini   ta’minlash   mumkinligi   aniqlandi. 67Tizimdan   foydalanish   natijasida   foydalanuvchilar   mavjud   kitoblar   haqida   tezkor
ma’lumot   olishlari,   ijaraga   berilgan   va   mavjud   nusxalar   holatini   ko‘rishlari,
kutubxona   xodimlari   esa   fondni   samarali   nazorat   qilish   imkoniyatiga   ega
bo‘ladilar.
Xulosa   qilib   aytganda,   mazkur   kurs   ishida   ishlab   chiqilgan   kutubxona
axborot   tizimi   amaliy   jihatdan   foydalanishga   tayyor   bo‘lib,   zamonaviy   axborot
texnologiyalari   asosida   kutubxona   faoliyatini   takomillashtirishga   xizmat   qiladi.
Kurs ishi davomida belgilangan barcha maqsad va vazifalar to‘liq bajarildi hamda
ishlab chiqilgan loyiha kelgusida funksional imkoniyatlarini kengaytirish, masalan,
elektron   kitoblar   bilan   ishlash,   onlayn   bron   qilish,   foydalanuvchi   statistikasi   va
mobil   ilovalar   bilan   integratsiya   qilish   orqali   yanada   rivojlantirish   uchun
mustahkam asos yaratdi. 68Foydalanilgan adabiyotlar
1. Hakimov   M.X.,   Gaynazarov   S.M.   Berilganlar   bazasini   boshqarish   tizimlari.
Darslik. – Toshkent: Fan va texnologiyalar, 2021. – 672 bet.
2. Hakimov M.X. Axborot tizimlarini loyihalash (tamoyil va amaliyot). Darslik. –
Toshkent: Ma’rifat, 2024. – 424 bet.
3. Qodirov   A.,   Xudoyberganov   B.   Axborot   tizimlari   va   texnologiyalari.   –
Toshkent: O‘qituvchi, 2020. – 368 bet.
4. Raxmonov D.Sh. Dasturiy ta’minot injiniringi asoslari. – Toshkent: Fan, 2019.
–320 bet.
5. Abdullayev  A.A.  Ma’lumotlar   bazalarini   loyihalash.  –  Toshkent:  Innovatsiya,
2022. –296 bet.
6. Sattorov N. Web-ilovalarni loyihalash va ishlab chiqish. – Toshkent: Ma’rifat,
2021. –344 bet.
7. Umarov   S.S.   Axborot   tizimlarida   xavfsizlik   asoslari.   –   Toshkent:   Fan   va
texnologiyalar, 2020. –288 bet.
Internet saytlari
8. https://www.arxiv.uz   
9. https://chat    gpt    .com

MUNDARIJA

Kirish

Loyiha modelini shakllantirish

Loyiha kontroller va ko‘rinishlarini yaratish

Loyihadan foydalanish bo‘yicha ko‘rsatma

Xulosa

Foydalanilgan adabiyotlar