Hujjat almashinuvi jarayonlarini tezkorlashtirish va xavfsizligini ta`minlash uchun bulutli tizim

O ‘ ZBEKISTON RESPUBLIKASI 
OLIY TA’LIM, FAN VA INNOVATSIYALAR VAZIRLIGI 
MIRZO ULUG‘BEK NOMIDAGI
O ZBEKISTON MILLIY UNIVERSITETINING JIZZAX FILIALIʻ
____________________________________  FAKULTETI
«AXBOROT TIZMLARI VA TEXNALOGIYALARI» kafedrasi
“ALGORITMIK TILLAR VA DASTURLASH” FANIDAN
Mavzu:  Hujjat almashinuvi jarayonlarini tezkorlashtirish  va xavfsizligini ta`minlash uchun 
bulutli tizim
Bajardi:  “Axborot tizmlari va texnalogiyalari ” ta’lim yo ‘ nalishi 3-kurs 501-22 guruh talabasi 
_____________________
Ilmiy rahbar:   _____________
Jizzax – 202 4
1KURS ISHI № Kurs ishi bo yicha ish turlariʻ Ball
1 Kurs ishini hajmi va talab bo yicha rasmiylashtirilganligi:	
ʻ
- talabga javob beradi (7-8);
- talabga qisman javob beradi (6-7);
- talabdan chetga chiqish xolatlari mavjud (5-6);
- talabga javob bermaydi (0-4);
2 Mavzuning dolzarbligining asoslanganligi:
- yetarli darajada asoslanganligi (7-8);
- yetarli darajada asoslanmagan (6-7);
- noaniq (5-6);
-asoslanmagan (0-4);
3 Maqsad vazifalarining aniq ifodalanganligi:
- aniq (7-8);
- to liq aniqlanmagan (6-7);	
ʻ
- aniq emas (5-6);
- ifodalanmagan (0-4)
4 Kurs ishining himoya qismida ijtimoiy-iqtisodiy (ta’lim) sohasida 
qo llashga tavsiya berilganligi:
ʻ
- bevosita qo llashga tavsiya bor (7-8);	
ʻ
- qisman qo llashga tavsiya qilingan (6-7);
ʻ
- tavsiya ishonchli emas (5-6);
- tavsiya yo q (0-4);
ʻ
5 Olingan natijalarni yangiligi va ishonchlilik darajasi:
- natija yangi (7-8);
- ilgari olingan (6-7);
- to la ishonchli emas (5-6);	
ʻ
- eskirgan, ishonchli emas (0-4);
6 Talabaning mavzu bo yicha olingan natijalarini tanqidiy baholanganligi 	
ʻ
darajasi:
- aniq (7-8);
- to liq aniq emas (6-7); 	
ʻ
- juda sayoz (5);
- tanqidiy baholanmagan (0-4);
7 Adabiyotlardan foydalanganlik darajasi:
- qonunlar, qarorlar, ilmiy-amaliy jurnallar, monografiya, yetakchi olimlar 
asarlaridan to la foydalanilgan (7-8);	
ʻ
- darslik, ma’ruza matnlari, o quv-qo llanma va ma’lumotlardangina 	
ʻ ʻ
foydalanganligi  (6-7);
- yetarli foydalanilmagan (5);
- foydalanilmagan (0-4);
8 Talabaning ma’ruzasiga baho:
- a’lo (14-15);
- yaxshi (11-13);
- qoniqarli (9-10);
-qoniqarsiz (0-8) ;
9 Talabaga berilgan savollarga javobi:
- to liq (14-15);	
ʻ
- yaxshi (11-13);
- qoniqarli (9-10);
-qoniqarsiz (0-8);
10 Adabiyotlar tanqidiy taxlili darajasi:
2 № Kurs ishi bo yicha ish turlariʻ Ball
- to la darajada (7) ;	
ʻ
- qisman darajada (5-6);
- noaniq (4-5);
- taxlil yo q (0-3);	
ʻ
11 Internet manbalaridan foydalanganlik idarajasi:
- yetarli, natija yangi (7);
- qisman, ilgari olingan (5-6);
- to la ishonchli emas (4-5);	
ʻ
- foydalanilmagan (0-3);
To plangan ball (bahosi):	
ʻ
Komissiya raisi:
(imzo)
Komissiya a’zolari:
(imzo)
(imzo)
(imzo)
(imzo)
Kurs ishi rahbari:
(imzo)
3 MUNDARIJA
KIRISH ….......……………………………..……...……..…………..…………...3
1-BOB.   Tashkilot   miqiyosida   xujjat   almashinuvi   nazariy
asoslari ....................................................................................................................7
 1.1. Elektron hujjat almashtirish tizimlari xolati va unga bo`lgan talablar.....
…............................................................................................................7
  1.2.   Elektron   hujjat   almashuv   tizimlaridan   foydalanishning   o`ziga   xos
xususiyatlari ....................................…………………………..…....……….…...12
2-BOB.   Tashkilot   miqiyosida   xujjat   almashish   haqida   va   xujjat   almashish
tizimining tahlili...................................................................................................12
2.1. C#da hujjat almashish haqida...............................................................13
2.2. C#  windows  forms  muhitida  dasturining tahlili.................................16
XULOSA ..............................................................................................................19
FOYDALANILGAN ADABIYOTLAR .............................................................21
Tashkilot miqiyosida xujjat almashinuvi  tizimining amaliy asoslari.....................22
ILOVALAR .................……….….………........……….................………..........40 
 
4 Kirish
Biz   tashkilot   doirasida   hujjatlarni   qo'llab-quvvatlashning   amaliy   jihatlarini
ko'rib   chiqamiz.   Biz   elektron   hujjat   tizimlarini   samarali   boshqarish   va   ulardan
foydalanishga   yordam   beradigan   turli   amaliy   elementlarni   o'rganamiz.   Ushbu
amaliy   asoslarni   tushunib,   tashkilotlar   hujjatlarni   qayta   ishlash   samaradorligini
oshirishi, aloqani soddalashtirishi va umumiy samaradorlikni oshirishi mumkin.
Biz elektron hujjat tizimlarini  real  dunyo kontekstida joriy etish va ulardan
foydalanishga   e'tibor   qaratamiz.   Biz   uzluksiz   hujjat   almashinuvi   va   hamkorlikni
osonlashtiradigan amaliy mulohazalar, eng yaxshi amaliyotlar va vositalarni ko'rib
chiqamiz.   Bundan   tashqari,   biz   mashhur   dasturlash   asosi   bo'lgan   C#   windows
formalari   muhitining   xususiyatlari   va   funksiyalarini   o'rganamiz   va   hujjatlar   bilan
bog'liq dasturiy echimlarni ishlab chiqishda qo'llanilishini tahlil qilamiz.
Avtomatlashtirilgan   va   elеktron   kutubxonalar   yaratish   bir   qarashda   oson
ishdеk tuyulsada, aslida bu jarayon uzoq davom etadigan murakkab ishdir.Bu tizim
hozirgi   kundagi   eng   muhim   tizimlardan   biri   hisoblanadi.   Axborotlashgan   davrda
insonlar  uchun  kitobni  onlayn  farmatda,  ya’ni  pdf  farmatda  saqlash   osonroq ham
qulay.   Undan   tashqari,   agar   kutubxonalar   avtomatlashtirilsa,   foydalanuvchilar
uchun   ortiqcha   vaqt   sarflab   uzoq   masofalarga   kitob   qidirib   yurishlariga   hojat
qolmaydi.
Bu   tizim   kutubxonachiga   ham   foydalanuvchiga   ham   ancha   qulayliklar
yaratadi.   Kutubxonachi   o‘zining   shaxsiy   profili   orqali   kutubxonadagi   kitoblar,
ulardan   kimlar  foydalanayapti,  qanday  kitoblar   bor   va  boshqa  ma’lumotlarga   ega
bo‘ladi.   Bu   loyiha   amalga   oshirilsa   kutubxonalardan   kitoblarning   yo qolishiʻ
kamayadi,   hujatlashtirish   ishlari   avtomatlashtirilgan   holda   amalga   oshiriladi.Bu
loyihani amalga oshirish uchun   avtomatlashtirilgan kutubxona ma’lumotlar bazasi
kamida   1   mln.   yozma   ma’lumotga   mo ljallangan   bo lishi   kerak.	
ʻ ʻ
Avtomatlashtirilgan kutubxonada bir-biri bilan bog langan kompyuterlar tizimidan
ʻ
foydalaniladi.   Hujjatlarni  samarali   qo'llab-quvvatlash  va  tashkilot   samaradorligini
5 oshirishga   hissa   qo'shadigan   asosiy   elementlarni   o'rganadigan   ushbu   amaliy
sayohatni boshlaymiz.
Texnologiyalarning   tezroq   rivojlanishi   bilan,   kompaniyalar   o'z   hujjat
boshqaruvi va elektron hujjat almashish tizimlarini yangilashga qiziqmoqdalar. Bu,
yangi   tizimlar,   dasturlar   va   platformalar   ishlab   chiqish   uchun   yanada   ko'p
imkoniyatlar   ochadi.   Korxonalarda   va   tashqi   sharoitlarda   ish   o'zgarishi,   hujjat
boshqaruvi   va   elektron   hujjat   almashishni   muhim   savol   qiladi.   Bu,   soha   uchun
ko'plab imkoniyatlar ochadi va ish bozori talablari o'zgaradi.
Hujjat boshqaruvi va elektron hujjat almashish sohasida mutaxassislar uchun
o'rganish   va   rivojlanish   muhimdir.   Bu,   soha   uchun   kurslar,   darsliklar   va   onlayn
resurslar   talab   qilinmoqda.   Yangi   hujjat   boshqaruvi   va   elektron   hujjat   almashish
tizimlarini   ishlab   chiqishda,   to'g'ridan-to'g'ri   o'zlashtirish   muhimdir.   Bu,   yangi
ma’lumotlarni sifatli va to'g'ri yo'nalishda o'zlashtirishga imkoniyat yaratadi .
Kurs   ishi   mavzusining   maqsadi:   Hujjatlar   boshqaruvi   va   elektron   hujjat
almashish tizimlarini C#da ishlab chiqish. Tashkilotda foydalanishimiz uchun juda
qo’l   keladi.   Masofadan   turib   fayllar   almashish   imkoniyati,   Hujjatlarni   boshqarish
xususiyati. Ma’lumotlar bazasini boshqarish, kabi qator maqsadlari mavjud.
Kurs   ishi   mavzusining   vazifasi:   Ilovada   2   xil   shaklda   kirish   mumkin
Admin   va   xodim   sifatida   Admin   Bazaga   ma’lumotlarni   qo’shish   va   taxrirlash
boshqarish   vazifasini   bajaradi.   Xodim   esa   ma’lumot   almashish   imkoniyatini
beradi.   Bazadan   o’chirish   taxrirlash   imkoniyatini   faqat   admin   tomonidan   amalga
oshiriladi, va xodim qoshilganda u uchun saxifa yaratiladi.
6 I BOB
1.1.1-rasm
Bazaga xodim qo’shish
1.1.2-rasm
Taxrirlashga qaytish
7 1.1.3-rasm
Taxrirlash tugallanib o’zgarishi
8 1.1. Elektron hujjat almashtirish tizimlari xolati va unga
bo`lgan talablar
Fanda, tijoratda, ishlab chikarishda axborot oqimlarining ko`payishi axborot
texnologiyalari   tomonidan   reaktsiya   talab   qiladi.   Jamiyat   uchun   ulkan   qog`oz
miqdoriga   bo`lgan   xarajat   murakkab   muammo   xisoblanadi.   qog`ozli   texnologiya
kontseptsiyasidan   voz   kechish   uchun   xali   bir   necha   o`n   yillar   kerak   bo`ladi.
Shuning   uchun   xozirda   bu   g`oyani   amalga   oshirishning   bir   qismi   haqidagina   ran
bo`lishi mumkin. Bu erda bir qator sabablar mavjud bo`lib, ular quyidagilar:
1.   Muammoning   psixologik   aspektini   ko`rsatish   mumkin.   Axborotni
elektron ko`rinishda olishga ko`nikma xosil bo`lishi kerak;
2. Qog`ozsiz texnologiya texnikaviy ko`llab quvvatlanish aksini talab etadi:
mos   keluvchi   ishlab   chikarish   hisoblash   vositasi,   yukori   o`tkazuvchanlikka   ega
bo`lgan aloqa kanallari, algoritmlarning texnologiyaga yo`naltirilganligi.
3. Qog`ozsiz texnologiya huquqiy qo`llab-quvvatlanish asosini talab etadi.
Respublikamizda   bu   borada   elektron   tijorat   tizimlarini   huquqiy   himoya
qilish, rakamli imzosini me`yoriy huquqiy asoslari tashkil etilgan.
Dunyoda   dastlabki   elektron   hujjat   aylanishi   tizimi   bank   sohasida   paydo
buldi.   Shunday   tizimlardan   biri   -   SWIFT   o`tgan   asrning   70-yillaridan   buyon
ishlatilmokda.   Keyinchalik   ichki   va   banklararo   axborot   tizimlari   ham   rivojlana
boshladi. Tizimlar takomillashib, rivojlandi va biznes-jarayonlar, axborot, tasvirlar
va katta xajmdagi ishlarni boshqarishga yo`naltirildi.
Bugungi   kunda   elektron   hujjat   aylanishi   axborot   taqdim   etishning   asosiy
usuliga aylandi. Turli hujjatlar bilan faol ishlashda ertami, kechmi katta xajmdagi
axborotni  tizimlashtirish,   qayta  ishlash   hamда  xavfsiz   saqlash   muammosi  yuzaga
keladi. Elektron hujjat aylanishi tizimidan foydalanish orkali qog`oz hujjatlar bilan
ishlash   jarayonida   yuzaga   keladigan   ko`plab   tashkiliy   va   texnologik   cheklovlarni
bartaraf   etish   mumkin.   Bu   esa   hujjatlar   bilan   ishlash   samaradorligi,   boshqarish
sifatini oshirish, axborotni ishonchli himoya qilishni ta`minlash imkonini beradi.
9 Elektron   hujjat   aylanishi   tizimlari   nafaqat   bitta   korxona   miqyosida,   balki
mamlakat   iqtisodiyotining   barcha   jabxalarida   qo`llanishi   lozim.   Masalan,   soliq
sohasida   ushbu   tizim   yordamida   soliq   to`lovchilarning   soliq   majburiyatlarini
bajarishi bo`yicha xisobot axborotini tuplash, ularni xisobga olish, axborot-taxliliy
soliq tekshiruvlarini olish hamda taxlil qilish mumkin. Tashqi iqtisodiy faoliyat va
bojxona   sohasida   tashqi   iqtisodiy   faoliyat   ishtirokchilarini   kayd   etish,   bojxona
to`lovlari, import, eksport va tranzit yuk tashishlar to`g`risidagi xisobotlarni olish,
iktisodiyot   va   sanoat   sohasida   makroiqtisodiy   ma`lumotlarni   to`plash,   sanoatning
rivojlanishiga   oid   asosiy   texnik-iqtisodiy   ko`rsatkichlar   prognozi   va   xokazolarga
ega bo`lishga yordam beradi.
Elektron   hujjat   aylanishi   xizmatiga   talab   katta   va   u   elektron   tijorat
tizimlarida   samarali   ko`llanilmokda.   Elektron   tijoratni   amalga   oshirish   uchun
banklar   ichida   va   banklararo   elektron   to`lovlar   tizimlari   hamda   chakana   elektron
to`lovlar   tizimlarini   rivojlantirish   zarur.   So`nggi   yillarda   bank   kreditlari   va   debit
kartlari,   shuningdek,   elektron   hamyonlardan   foydalangan   holda   moliyaviy
operatsiyalarni   bajarishning   muqobil   uslubini   taqdim   etadigan   elektron   to`lov
tizimlari ommalashdi.
Bozor   iqtisodiyoti   sharoitida   tashkilotni   boshqarish   intensifikatsiya   va   xar
bir xodimni xisobga olgan holda butun tashkilotni tashkillashtirilishi  talab etiladi.
SHuning   uchun,   tashkilot   faoliyati   reglamenta   mavjud   ekan,   ayniqsa   ishlab
chiqarishda  axborot   texnologiyalari  kanalizator   kabi  qog`ozsiz  hujjat  almashtirish
asosida avtomatlashtirishning samarali vositasi sifatida xizmat qilishi kerak.
Elektron hujjat almashtirish boshqaruvi ostida tashkilot qismlari o`rtasidagi,
foydalanishlar   o`rtasidagi   hujjat   almashinuvi   tushuniladi.   Hujjatlarning   bunday
xarakatida ularning jismoniy ko`chish emas (chunki ular serverda qoladi), ulardan
foydalanish   huquqi   biror   aniq   foydalanuvchiga   ularni   bajaruvchi   nazorati   ostida
uzatiladi.   Elektron   hujjat   almashinuv   tizimida   qo`yilgan   asosiy   talab   elektron
hujjatni   saqlash   va   ular   bilan   ishlashni   tashkillashtirishdir.   Elektron   hujjat
almashinuv  tizimida hujjatlarga  huquqiy  murojaat  qilish  amalga  oshiriladi, bunda
unga kiritilgan oxirgi o`zgarishlar va uning barcha versiyalari nazorat kilinadi.
10 Xar   qanday   tashkilot   faoliyatida   menejment   uchun   axborot   okimlari   o`zida
aniq kuzatish olib borish imkoniyati va jarayon boshqaruv uchun osonligi nazorat
kilinadi.   Tashkilot   fiksirlanadigan   va   reglamentlanadigan   axborot   ob`ekti   hujjat
xisoblanadi. Tashkilotda hujjatlar xarakati faoliyatini tashkillashtirish qog`oz bilan
ishlash kabi atash kabul kilingan. qog`oz bilan ishlash asosida axborot almashinuvi
strukturasi hujjat oqimi fundamental tushunchasi yotadi.
Xar   qanday   tashkilot   uchun   uchta   asosiy   hujjat   oqimi   ajratib   ko`rsatish
mumkin: kiruvchi, ichki vа chiquvchi.
Qog`oz bilan ish yuritish funktsiyasi kiruvchi hujjatlarni qayta ishlash, firma
ichida   unga   ko`rsatkichlar   o`rnatish,   chiquvchi   hujjatlarni   yuborish,   ro`yxatga
olish,   bajarilishi   nazorat   qilish,   ishni   shakllantirish,   saqlashni   tashkillashtirish   ва
hokazo xisoblanadi. 
Bir EDMS (Elektron Hujjat Almashtirish Tizimi) tashkil etishda, muhim 
ma'lumotlar uchun quyidagi tushunchalar va funksiyalar kerak bo'ladi:
Hujjatlar   va   Ma'lumotlar:   Tizimning   asosiy   maqsadi   hujjatlar   va
ma'lumotlarni boshqarishdir. Bu hujjatlarga elektron ko'chirish, o'chirish, taxminan
tahrirlash,   qidiruv   va   ko'rish   imkoniyatlarini   o'z   ichiga   oladi.   Hujjatlarni   turli
formatlarda   qabul   qilish,   masalan,   matn,   rasmlar,   audio   va   video   fayllar   va
boshqalar.
Foydalanuvchilar Boshqarish va Ruxsatlar:  Tizim administratorlari 
boshqarish paneli orqali yangi foydalanuvchilar qo'shish, ularning ruxsatlari va 
huquqlarni belgilash, foydalanuvchilar to'g'risidagi ma'lumotlarni tahrirlash, 
foydalanuvchi guruhlari yaratish va boshqarish va boshqalar.
Xavfsizlik va Maxfiylik:  Hujjatlarni himoyalash, foydalanuvchilar 
orasidagi maxfiylikni ta'minlash, hujjatlarga kirish vaqtida shifrlash va 
autentifikatsiyani o'z ichiga oladi. Shuningdek, hujjatlarni yo'q qilish, o'chirish 
yoki tahrirlashga ruxsatni bermaslik kabi qo'shimcha xavfsizlik funksiyalari 
bo'lishi kerak.
Integratsiya:  Boshqa korxona tizimlari bilan integratsiya qilish imkoniyati. 
Bu shaxsiy ma'lumotlar bazalari (CRM), hisobotlash tizimlari, elektron pochta, ish 
11 jarayonlarini boshqarish tizimlari (ERP) va boshqalar kabi tizimlarni kiritishni o'z 
ichiga oladi.
Qurilish va Ma'lumotlar Bo'yicha Qo'llanma:  Hujjatlarni yo'q qilish, 
taxminan tahrirlash, ko'rish, ko'rib chiqish va tarqatishning oson bo'lishi kerak. 
Bundan tashqari, hujjatlarni qo'shish va qidirish uchun ma'lumotlar bo'yicha 
qo'llanma muhimdir.
Audit va Kuzatish:  Foydalanuvchilar faoliyatini kuzatish, qaytarish, kim 
qanday vaqtda qaysi hujjatlarga kirish yoki o'chirishini bilish, faoliyatlar tarixini 
saqlash, hujjatlarga qaysi foydalanuvchilar qanday ruxsatga ega ekanligini bilish 
va boshqalar kabi kuzatish funksiyalari.
Mobil qurilma qo'llab-quvvatlash:  Bugungi kunda, mobil qurilmalar 
bo'yicha qo'llanma juda muhimdir. EDMS tizimining mobil ilovalari orqali 
foydalanuvchilar hujjatlarga kirish, ularni o'qish va tahrirlash, kompaniya ichidagi 
komunikatsiyani saqlash va boshqalar mumkin.
12 1.2. Elektron hujjat almashuv tizimlaridan foydalanishning
o`ziga xos xususiyatlari
Elektron hujjat almashuv tizimlari quyidagi maksadda quriladi:
* jarayonlarni integratsiya qilishda;
*   saqlanadigan   axborot   hajmining   kattalashuvi   hisobiga   raxbariyat   va
mutaxassislarning   axborotga   egalik   qilish   darajasini   oshirish,   markazlashtirilgan
axborot   qayta   ishlovi,   hujjatlarni   qidirish   vaqtining   kamayishi   va   xisobot   va
dokladlar   tayyorlash,   bundan   tashxari   xisobotlarning   ishonchligini   vа   tulaligini
oshirish;
*   tashkilot   boshkaruvida   hujjat   almashtiruv   jarayonining   qog`ozli
ko`rinishdan   elektron   ko`rinishgа   o`tkazish   hisobiga   qog`ozga   extiyojning
kamayishi;
* hujjatning arxivda saqlanayotgan originalini qidiruvga ketadigan vaktning
elektron ko`rinishda aniq adresi mavjud emasligi tufayli qisqarishi;
* tashkilot kooperatsiyasi doirasida axborot jarayonlari integratsiyasi;
*   hujjatlarning   yangi,   sifatli   bazasini   yaratish   elektron   hujjat   almashuv
tizimlari tashkilotining quyidagi axborot tashkiliy tuzilmasi bilan mos kelishi va bu
tuzilmada zamonaviy o`zgartirishlarni ta`minlashi kerak.
Elektron   hujjat   almashinuv   tizimi   tashkilotning   hujjatlashtirish   ta`minotini
boshkarishnи avtomatlashtirish uchun mo`ljallangan, bu holda u quyidagilarni o`z
ichiga olishi kerak:
1.   tashkiliy   uyushtirilgan   hujjatlarni   tayyorlash,   kiritish,   saqlash,   qidirish,
izlash va chikarish jarayonlari;
2.   hujjatlar   standart   shakllarining   tayyorlash,   kiritish,   saqlash,   qidiruv   va
chiqаrish jarayonlarni boshqarish;
3. qog`oz bilan ishlash jarayonini boshqarish.
Avtomatlashtirish ob`ekti quyidagi jarayonlar xisoblanadi:
1. hujjat yaratish;
13 2. boshqaruv hujjatlari uchun xisobotni tayyorlash;
3. hujjatlar bilan ishlash.
Tizimga   bo`lgan   asosiy   talab   quyidagicha:   tizimda   axborot   almashinuvi
uchun   korporativ   hisoblash   tarmog`idan   foydalanishi   kerak;   bu   tarmok   o`z
navbatida lokal va uzoklashtirilgan foydalanish tizimlarini o`z ichiga olishi kerak;
elektron   hujjat   almashinuv   tizimi   elektron   pochta   tizimi   va   tashkilotning
avtomatlashtirilgan   boshqarish   tizimi   bilan   aloxida   bo`lishi   kerak;   tizim   kun
davomida   o`z   funktsiyasini   bajarishi   kerak;   tizim   joriy   xolatiga   tashxis   qo`yish
vositasiga ega bo`lishi keraк;
Elektron   hujjat   almashinuv   tizimi   tashkilot   hujjat   almashinuvi   reglamenti
o`zgarishiga   bog`liq   ravishda   elektron   hujjat   almashinuv   tizimi   o`z
xarakteristikasini,   parametrlarini,   hujjat   uzatish   adresatlarini   o`zgartirish
imkoniyatiga ega bo`lishi kerak.
Tizim   ochiq   texnologiyalar   asosida   qurilgan   bo`lishi   kerak,   bunday   ochiq
texnologiyalar   tizimning   keyingi   modernizatsiyasi   va   qaytadan   tizim   usishini
ta`minlaydi. Tizimda apparatli platformadan foydalanish imkoniyati bo`lishi kerak,
xususan, serverni texnik almashtirish va axborotni saqlash qurilmalari ayniqsa tez
rivojlanadi.
14 2-BOB
2.1.  C#da hujjat almashish haqida
Ma’lumotlarni   elektron   almashinuvi   bugungi   kunda   deyarli   hamma   duch
keladigan   haqiqatdir.   Axborot   tizimlari,   kompyuter   tarmoqlari,   elektron   pochta   –
bu   elektron   shaklda   ma’lumotlar   almashinuvi   amalga   oshiriladigan   vositalarning
to’liq ro’yxati emas. 
So’nggi   o’n   yil   ichida   boshqaruv   jarayonlarini   samarali   qo’llab-
quvvatlashning yangi vositalari paydo bo’ldi va tarqaldi. Shu jumladan, boshqaruv
hujjatlarini   qayta   ishlashga   mo’ljallangan   dasturiy   ta’minot   haqida.   Bu   yerda,
birinchi   navbatda,   “Hujjatlarni   boshqarish   tizimlari”   va   “biznes   jarayonlarini
boshqarish   tizimlari”   sinflarining   dasturiy   ta’minotini   eslatib   o’tish   kerak.   Asar
yozishda   quyidagilar   kerak:   elektron   hujjat   va   elektron   hujjatlar   aylanishi
tushunchasini ochib berish; elektron hujjat aylanishini tashkil etishning maqsadlari
va   usullarini   shakllantirish;   elektron   hujjat   aylanishi   va   elektron   raqamli   imzoni
amaliyotga joriy etish bilan bog’liq muammolarni shakllantirish. 
ELEKTRON HUJJAT AYLANISHI:   Elektron hujjat aylanish tizimlari –
bu   bir   qator   vazifalarni   hal   qilishda   qo’llaniladigan   dasturiy   komplekslar,   shu
jumladan korporativ elektron hujjat aylanish tizimlarini yaratish. 
Tashkilotda hujjatni qayta ishlash jarayonini avtomatlashtirishning bir qismi
sifatida u yaratilgan yoki olingan paytdan boshlab muxbirga yuborilgan paytgacha
yoki   ijro   tugagandan   va   ishda   hisobdan   chiqarilgunga   qadar   quyidagi
funktsiyalarning   echimi   ta’minlanishi   kerak:   tashkilotga   kiradigan   hujjatlarni,
tashkilotdan   chiqadigan   hujjatlarni   va   ichki   hujjatlarni   ro’yxatdan   o’tkazish;
tashkilot   rahbariyati   tomonidan   qabul   qilingan   hujjatlarga   binoan   chiqarilgan
qarorlarni   hisobga   olish   va   hujjatlarni   nazoratga   qo’yish;   hujjatlar   ijrosi   ustidan
markazlashgan nazorat; hujjatlarni ishga yozib qo’yish; axborot-ma’lumot ishlarini
olib borish; umuman tashkilot uchun ofis hisobotlarini shakllantirish. 
Elektron   hujjat   aylanish   tizimidan   foydalanish,   hujjatlarning   bajarilishi
borishi   to’g’risidagi   ma’lumotlarni   elektron   shaklda   uzatishni   tashkil   etishga
imkon beradi, bu esa hujjatlarning bajarilishini nazorat qilishni tashkil etishni sifat
15 jihatidan   o’zgartiradi.   Boshqaruv   qarorlari   bilan   markazlashtirilgan   ro’yxatdan
o’tgan   hujjatlarning   kartalari   tegishli   bo’lim   xodimlariga   elektron   shaklda
yuboriladi.   Ular   ularni   tarkibiy   bo’linmalar   rahbarlari   tomonidan   chiqarilgan
hujjatlarni   rasmiylashtirish   to’g’risidagi   qarorlar   bilan   to’ldiradilar.   Hujjatlarning
bajarilish jarayoni to’g’risida ma’lumotlar paydo bo’lishi bilan ushbu ma’lumotlar
tizimga kiritiladi. 
Shu bilan birga, tizim avtomatik ravishda ijro etilish sanasi yaqinlashishi va
aynan   shu   sananing   boshlanishi   to’g’risida   oldindan   xabar   berish   sanasi
boshlanishini kuzatib boradi. 
Tizimning   manfaatdor   foydalanuvchilariga   belgilangan   sanalar   to’g’risida
ma’lumot beriladi. Hujjatlar loyihalarini tasdiqlash jarayoni ham sezilarli darajada
o’zgartirildi,   uning   doirasida   tasdiqlash   jarayonida   ishtirok   etadigan   xodimlar
tasdiqlangan   loyihalarning   elektron   versiyalari   bilan   almashish   imkoniyatiga   ega
bo’lmoqdalar.   Ushbu   texnologiya   loyihalarni   qog’ozga   o’tkazish   uchun
sarflanadigan vaqtni qisqartirishga imkon beradi. 
Elektron hujjat aylanishi tizimi majburiy ravishda joriy elektron arxivni o’z
ichiga   oladi,   bu   ma’lumotlarga   tezkor   kirish   va   bir   nechta   xodimlarning   bir
vaqtning o’zida hujjatdan foydalanish imkoniyatlarini hal qiladi. Saqlashni tashkil
qilishning   ushbu   shakli   ma’lumotni   yo’qotish   ehtimolini   sezilarli   darajada
kamaytiradi   va   kerakli   hujjatni   topish   vaqtini   qisqartirish   orqali   operatsion
samaradorlikni oshiradi. Hujjatlar matnlarini elektron shaklda saqlash to’liq matnli
qidirishni   amalga   oshirishga   imkon   beradi,   bu   esa   ma’lumot-ma’lumot   ishlarini
olib   borishda   printsipial   yangi   imkoniyatlarni   ochadi,   masalan,   ularning
mazmuniga   ko’ra   hujjatlarning   tematik   to’plamlarini   yaratishga   imkon   beradi.
Elektron   arxivdan   foydalanish   arxiv   hujjatlaridan   foydalanish   fondini   yaratish
zaruratini   yo’q   qiladi,   chunki   hujjatning   elektron   nusxasi   istalgan   vaqtda   istalgan
vaqtda   berilishi   mumkin.   Huquqiy   nuqtai   nazardan,   elektron   hujjat   aylanishi
tushunchasi elektron ma’lumotlar
almashinuvi   tushunchasidan   farq   qiladi.   Birinchisi,   elektron   hujjatlarning
qonuniyligiga   (protsessual   qabul   qilinishi   va   daliliy   kuchga)   asoslangan.   Shu
16 sababli,   axborot   texnologiyalarini   takomillashtirish   bilan   bir   qatorda,   elektron
hujjat   aylanishi   infratuzilmasini   yaratish   jarayonida   uning   qonunchilik   ta’minoti
muhim   rol   o’ynashi   kerak,   uning   mohiyati   elektron   shaklda   yaratilgan   va
uzatiladigan   ma’lumotlarga   hujjatning   huquqiy   maqomini   berishdir.   An’anaviy
hujjatning   asosiy   vazifasi   ba’zi   ma’lumotlarni   tasdiqlashdir.   Hujjatni   tuzishda   va
undan   foydalanishda   ikkita   jihat   mavjud:   birinchidan,   ba’zi   ma’lumotlar,
ikkinchidan,   hujjatning   o’zi   taqdim   etilishi   yoki   o’tkazilishi   mumkin   bo’lgan
muhim   narsa.   Ushbu   muhim   narsaning   mavjudligi   hujjatdagi   ma’lumotlarning
to’g’riligini tasdiqlash imkonini beradi.  
17 2.2. C# windows forms muhitida dasturining tahlili
Kodningiz   C#   dasturidagi   fayl   o'tkazish   funktsionalitetini   o'z   ichiga   olgan
bir   Windows   Forms   ilova   bo'lishi   mumkin.   Bu   ilovada   fayllar   o'tkazish   uchun
server va mijozlar orasida TCP protokolini ishlatasiz.
Kodningizda quyidagi funksiyalar mavjud:
1. "startServer"   funksiyasi:   Serverni   boshlash   uchun   ishlatiladi.   U
havfsizlik   porti   11000-da   TCP   portidan   serverni   qo'lga   kiritadi   va   server   ishga
tushadi.
2. "serverTasks" funksiyasi:  Serverning asosiy vazifalarini bajaradi. U
fayl kelishi va faylni qabul qilishni amalga oshiradi. Agar fayl qabul qilinsa, faylni
saqlab turadi yoki bekor qiladi.
3. "searchPC"   funksiyasi:   Tarmoqda   onlayn   bo'lgan   kompyuterlarni
qidirish uchun ishlatiladi. Bu funksiya IP manzil  orqali  tarmoqda mavjud bo'lgan
kompyuterlarni topadi va ro'yxatga joylaydi.
2.2.1-Rasm
Ip manzillarini chiqarish
4. "pingCompletedEvent" funksiyasi:   Ping ishni yakunlaydigan event
handler   funksiyasi.   Bu   funksiya   ping   so'rovi   natijasida   onlayn   bo'lgan
kompyuterlarni ro'yxatga qo'shadi.
18 5. "showNotification"   funksiyasi:   Bildirishnoma   oynasini
ko'rsatadigan   funksiya.   Bu   funksiya   yuborilayotgan   fayl   haqida   foydalanuvchiga
bildirishnoma chiqaradi.
6. "mainForm_Load"   funksiyasi:   Asosiy   formasini   yuklarken   ishga
tushadigan funksiya. U offline holatda ekranga xabar chiqaradi.
7. "startButton_Click"   funksiyasi:   Serverni   boshlash   uchun   tugma
bosilganda ishga tushadigan funksiya. U tarmoqda onlayn kompyuterlarni qidiradi
va ro'yxatga joylaydi.
8. "browseButton_Click" funksiyasi:   Fayl tanlash tugmasi  bosilganda
ishga tushadigan funksiya. U fayl tanlash oynasini ochiradi.
9. "sendFileButton_Click"   funksiyasi:   Fayl   yuborish   tugmasi
bosilganda ishga tushadigan funksiya. U tanlangan kompyuterga faylni yuboradi.
10. "mainForm_FormClosing"   funksiyasi:   Dastur   yopilganda   ishga
tushadigan   funksiya.   U   serverni   to'xtatadi   va   server   bo'lgan   threadlarni   bekor
qiladi.
11. "stopButton_Click"   funksiyasi:   Serverni   to'xtatish   uchun   tugma
bosilganda ishga tushadigan funksiya.
12. "timer1_Tick"   funksiyasi:   Timer   tarmoqni   tekshirish   uchun
ishlatiladi.   U   har   bir   tick-da   tarmoqdagi   kompyuterlarni   qidiradi   va   onlayn
bo'lganlarni ro'yxatga qo'shadigan searchPC funksiyasini chaqiradi.
13. Shu   bilan   birga,   sizning   kod   odatda   Windows   Forms   ilovalarining
asosiy metodlari bilan biriktiriladi:
14. Form_Load:  Asosiy formani yuklarken ishga tushadigan funksiya.
15. Button_Click:  Tugmalarga bosilganda ishga tushadigan funksiyalar.
16. Form_Closing:  Dastur yopilganda ishga tushadigan funksiya.
Bu   metodlar   kodningizning   asosiy   qismini   tashkil   etadi   va   ulardan
foydalanib siz serverni boshlash, kompyuterlarni qidirish, fayl yuborish va serverni
to'xtatish funktsionalitetini amalga oshirishingiz mumkin.
19 Biroq,   sizning   kodlaringizning   to'liq   bir   ko'rsatkichini   topishim   mumkin
emas,   shuning   uchun   siz   kodni   to'liq   ravishda   taqdim   etishingiz   va   men   uni
yaxshilab tahlil qilib, qo'shimcha yordam berishim mumkin.
2.2.2-rasm
Kompanentalar oynasi
Dasturning asosiy vazifalari:
1. Foydalanuvchi   fayl   yuborishni   boshlash   uchun   "startButton"
tugmasini bosing.
2. Tugma  bosilganda,  dastur  yangi  bir   nitka  ochib,  tarmoqlarda  mavjud
kompyuterlarni qidiradi.
3. Kompyuterlarni   topgandan   so'ng,   ularga   ICMP   ping   yuboriladi   va
ularga bog'liq ma'lumotlar olish uchun "pingCompletedEvent" ishga tushadi.
4. Foydalanuvchiga   online   kompyuterlar   ro'yxatini   ko'rsatish   uchun
"onlinePCList"ga kompyuterlarni qo'shadi.
5. Fayl   yuborish   uchun   "browseButton"   tugmasini   bosing   va   faylni
tanlang.
20 6. Fayl   tanlanganidan   so'ng,   fayl   nomini   va   saqlash   joyini
"fileNameLabel" va "savePathLabel" qismlariga joylashtiring.
7. Faylni jo'natish uchun "sendFileButton" tugmasini bosing.
8. Tugma   bosilganda,   tanlangan   faylning   ko'chirilishi   uchun   serverning
ishlashini to'xtatadi.
9. Tanlangan   fayl   nomi   va   IP   manzili   ko'rsatilgan   kompyuterga   TCP
socket orqali yuboriladi.
10. Jo'natish   jarayonida   fayl   nomi,   jo'natuvchi   IP   manzili,   va   jo'natuvchi
kompyuter nomi ulanadi.
11. Fayl yuborildi to'g'risida foydalanuvchiga bildirish yuboriladi.
12. Fayl   yuborish   jarayoni   tugaganda,   server   qayta   ishga   tushadi   va
boshqa fayllarni qabul qilishga tayyor bo'ladi.
13. Serverning   ishlashi   va   kompyuterlarni   qidirish   uchun   tizim   yaxshi
holatga keldi.
14. Agar server ishga tushishga urinish jarayonida xatolik yuz berib qolsa,
foydalanuvchiga xatolik bildiriladi.
15. Fayl   jo'natish   jarayoni   tugaganda,   jo'natilgan   kompyuterga
"NotificationForm"   ochiladi   va   uni   "showNotification"   metod   orqali   bildirish
yuboriladi.
16. "NotificationForm" yopilganda, fayl jo'natish jarayoni yakunlandi deb
hisoblanadi va dastur server ishini davom ettiradi.
17. Server   ishlashida   xatolik   yuz   berib   qolsa,   server   va   serverThread
to'xtatiladi va ulanishni qayta boshlash uchun "startServer" ishga tushadi.
18. Agar server ishga tushmagan bo'lsa, "startServer" ishga tushiriladi.
19. Agar   "stopButton"   tugmasini   bosing,   server   ishini   to'xtatish   uchun
"stopButton_Click.
21 Xulosa
Men kurs ishimdan quyidagi xulosaga keldim Tashkilot miqyosida elektron
xujjat   almashinuv   tizimlari   foydalanuvchilarga   osonlik   bilan   hujjatlarga   kirish,
ularni   tahrirlash   va   almashish   imkonini   berishi   kerak   bunday   imkoniyatning
hujjatlarga kirish va albatta uni tahrirlash va almashish ya’ni ulashish mumkin.
Tizim   hujjatlarni   xavfsiz   saqlash   va   yetkazib   beruvchi   tizimlarga   bog'liq
xavfsizlikni   ta'minlayishi   kerak   bunday   husisiyat   LAN   tarmog’ining   xafsizligiga
bog’liq.
Tizimning   boshqa   dasturlar   va   tizimlar   bilan   integratsiya   qilish   imkonini
ta'minlashi   kerak   bunday   imkoniyat   ilova   takomillashtirishgandan   keyin   ya’ni
Google Sheets orqali malumotlar almashishda foydalanamiz.
Tizimlar   hujjatlarni   avtomatik   ravishda   qidirish,   sortirovka   qilish,
ma'lumotlarni   to'plamlar   ko'rinishida   tahlil   qilish   va   boshqa   avtomatlashtirilgan
amallarni bajarish imkonini berishi mumkin.
Foydalanuvchilar  hujjatlarni  turli   kriteriyalar  bo'yicha  qidirish  va filtratsiya
qilish imkoniga ega bo'lishi mumkin.
Elektron   hujjat   almashuv   tizimlari   hujjatlarni   tahrir   qilish,   yangilash,
almashish va boshqa amallarni o'z ichiga oladi.
Tizimlar   boshqa   tizimlar   va   tizim   komponentlari   bilan   aloqada   bo'lish,
ularga ma'lumot almashish va integratsiya qilish imkonini ta'minlaydi.
C#   Windows   Forms   muhitida   dasturining   tahlili:   C#   Windows   Forms
muhitida   dastur   tahlili,   C#   tilida   Windows   Forms   kutubxonasidan   foydalanib,
grafikali   foydalanuvchi   interfeyslarini   yaratish   va   boshqarishning   nazariy   va
amaliy asoslarini o'z ichiga oladi. Bu muhit dasturlarni interaktiv ko'rinishda ishga
tushirishga imkon beradi va foydalanuvchilar bilan yaxshi muhit o'rnitadi.
Tizim   hujjatlarni   elektron   shaklda   qabul   qiladi   va   ularni   ma'lumotlar
bazasiga saqlaydi.
Foydalanuvchilar   hujjatlarni   turli   kriteriyalar   bo'yicha   qidirish   va   tanlash
imkoniga ega bo'ladi.
22 Tizim   hujjatlarni   almashish   va   almashish   jarayonini   boshqaradi,   to'lov
jarayonini amalga oshiradi va hujjatlarni egallash jarayonini tashkil etadi.
Tizim   hujjatlardagi   ma'lumotlarni  tahlil  qiladi,  statistik  analizlar,  hisobotlar
va ko'rsatkichlar yaratadi.
Tizim   hujjatlarni   xavfsiz   saqlash   va   yetkazib   beruvchi   tizimlarga   bog'liq
xavfsizlikni ta'minlaydi.
Berilgan ma'lumotlar asosida elektron hujjat almashuvining nazariy asoslari
va   tashkilot   miqiyosida   xujjat   almashinuvi   tizimining   amaliy   asoslari   haqida
umumiy   ma'lumotlar   taqdim   etilgan.   Batafsil   tafsilotlar   berilmaganligi   uchun
qo'shimcha ma'lumotlar berib tushuntirish mumkin.
23 Foydalanilgan adabiyotlar va Elektron resurslar
1. O‘zb. Res. Prezidentining “Raqamli iqtisodiyot va elektron hukumatni keng 
joriy yetish chora-tadbirlari to‘g‘risida” gi qarori. Toshkent shahri, 2020 yil 
28 aprel.
2. Сергей Тепляков. Паттерны проектирования на платформе .NET
3.  Date C.J. An Introduction to Database Systems (8 th edition). Addison-
Wesley: 2003. – P. 1034.
4. Основы систем баз данных: Учебник. / Е. Ж. Айтхожаева – Алматы: 
КазНИТУ имени К. И. Сатпаева, 2016. – 279 с. Ил. 38. Табл. 8. 
Библиогр. –53 назв.
5. Андон Ф., Резниченко В. Язык запросов SQL: Учеб. курс. – СПб.: 
Питер, 2006. – 416 с.
6. Бейли Л. Изучаем SQL /Пер. с англ. – СПб.: Питер, 2012. – 573 с.
7. Unity и C#. Геймдев от идеи до реализации | Гибсон Бонд Гибсон Бонд 
Джереми
8. Ицик Бен-Ган. Microsoft SQL Server 2012. Основы T-SQL
9. Дж. Скит. C# для профессионалов. Тонкости программирования
10.  Joe Duffy. Concurrent Programming on Windows
11.  Fayllar almashinuvi haqida:   https://uz.eyewated.com/kompyuter-
tarmoqlarida-fayllar-almashinuviga-kirish/
12.  Matlab haqida malumot va qisqacha fayllar almashinuvi:
https://www.mathworks.com/matlabcentral/content/fx/about.html
13. Fayllar almashinuvi uchun nimalar kerakligi haqida batafsil: 
https://www.techtarget.com/searchmobilecomputing/definition/file-
sharing#:~:text=File%20sharing%20is%20the%20public,use%20the
%20same%20file%20data .
14.  Kodni yozishimda ko’makchi saytlar:
https://www.geeksforgeeks.org/
https://stackoverflow.com/
24 2-BOB. Kutubxonaning avtomatlashtirilgan tizimining amaliy 
asoslari 
2.1.1-rasm
Form1 registratsiya, kirish qismi
2.1.2-rasm
Admin sifatida xodimlar qoshish oynasi
25 2.1.3.-rasm
Xodim sifatida kirish
2.1.4-rasm
Chop etish qismi 
26 Ilovalar
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace File_Transfer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        static string path = 
Environment.CurrentDirectory.Remove(Environment.CurrentDirectory.Length - 
10);
        SqlConnection connection = new SqlConnection($@"Data 
Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename={path}\
Malumotlar.mdf;Integrated Security=True");
       
        private void guna2Button1_Click(object sender, EventArgs e)
        {
            if (guna2TextBox1.Text == "" || guna2TextBox2.Text == "")
            {
                MessageBox.Show(" Login va parol bosh bolishi mumkin emas!", " 
Iltimis toldiring", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (guna2ComboBox1.SelectedIndex > -1)
                {
                    if (guna2ComboBox1.SelectedItem.ToString() == "Admin")
                    {
                        if (guna2TextBox1.Text == "0" && guna2TextBox2.Text == "0")
                        {
                            Admin produc = new Admin();
27                             produc.Show();
                            this.Hide();
                            guna2TextBox2.Text = guna2TextBox1.Text = "";
                        }
                        else
                        {
                            MessageBox.Show("Agar siz Admin bo`lsangiz Foydalanuvchi 
nomi va parolni to`g`ri kiriting", " ", MessageBoxButtons.OK, 
MessageBoxIcon.Warning);
                        }
                    }
                    else
                    {
                        try
                        {
                            SqlCommand cmd = connection.CreateCommand();
                            cmd.CommandType = CommandType.Text;
                            connection.Open();
                            cmd.CommandText = $"select * from xodim where 
username='{guna2TextBox1.Text}' and password='{guna2TextBox2.Text}'";
                            DataTable top = new DataTable();
                            top.Load(cmd.ExecuteReader());
                            connection.Close();
                            MessageBox.Show(top.Rows.Count + "..");
                            if (top.Rows.Count > 0)
                            {
                                this.Hide();
                                new mainForm(top.Rows[0][1].ToString()).Show();
                                guna2TextBox2.Text = guna2TextBox1.Text = "";
                            }
                            else
                            {
                                MessageBox.Show("Noto`g`ri foydalanuvchi nomi yoki parol",
" Noto`g`ri malumot", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                            connection.Close();
28                         }
                    }
                }
                else
                {
                    MessageBox.Show("Noto`g`ri foydalanuvchi nomi yoki parol sdfghj", 
" Noto`g`ri malumot", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        private void guna2Button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Net.NetworkInformation;
using System.Threading;
using System.Data.SqlClient;
namespace File_Transfer
{
    public partial class mainForm: Form
    {
29         String ism;
        public main Form (String ism)
        {
            Initialize Component ();
            this.ism = ism;
        }
        private string IP = "127.0.0.1";
        TcpListener listener;
        TcpClient client;
        Socket socketForClient;
        private Thread serverThread;
        private Thread findPC;
        private Thread notification;
        int flag = 0;
        string fileName = "";
        private bool serverRunning = false;
        private bool isConnected = false;
        int x = 9;
        int y = 308;
        int fileReceived = 0;
        string savePath;
        string senderIP;
        string senderMachineName;
        string targetIP;
        string targetName;
        NotificationForm f2;
        private void mainForm_Load (object sender, EventArgs e)
        {
            notificationLabel.ForeColor = Color.Red;
            notificationLabel.Text = "Offline holatdasiz";
            label2.Text = ism;
        }
        static string path = 
Environment.CurrentDirectory.Remove(Environment.CurrentDirectory.Length - 
10);
        SqlConnection connection = new Sql Connection ($@"Data 
Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename={path}\
Malumotlar.mdf;Integrated Security=True");
        void startServer()
        {
            try
            {
30                 serverRunning = true;
                listener = new TcpListener (IPAddress.Parse(IP), 11000);
                listener.Start();
                serverThread = new Thread (new ThreadStart(serverTasks));
                serverThread.Start();
                while (!serverThread.IsAlive);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        void serverTasks ()
        {
            try
            {
                while (true)
                {
                    if(fileReceived == 1)
                    {
                        if (MessageBox.Show("File saqlansinmi?", "Fayl qabul qilindi", 
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                        {
                            File.Delete(savePath);
                            fileReceived = 0;
                            SqlCommand cmd = connection.CreateCommand();
                            cmd.CommandType = CommandType.Text;
                            FileStream fs = new FileStream(fileNameLabel.Text, 
FileMode.Open, FileAccess.Read);
                            Byte[] meh = new Byte[fs.Length];
                            fs.Read(meh, 0, meh.Length);
                            fs.Close();
                            string date = DateTime.Now.ToString("MM/dd/yyyy HH:mm");
                            cmd.CommandText = $"insert into admin_malumot(Kimdan, 
Kimga, Qachon, fayl,farmat ) values ('{senderMachineName}', 
'{onlinePCList.SelectedItems[1]}', '{date}', @fayl, 
'{fileNameLabel.Text.Substring(fileNameLabel.Text.LastIndexOf('.'))}')";
                            SqlParameter p1 = new SqlParameter("@fayl", 
SqlDbType.VarBinary, meh.Length, ParameterDirection.Input, false, 0, 0, null, 
DataRowVersion.Current, meh);
                            cmd.Parameters.Add(p1);
                            connection.Open();
31                             cmd.ExecuteNonQuery();
                            connection.Close();
                        }
                        else
                        {
                            fileReceived = 0;
                        }
                    }
                   
                    client = listener.AcceptTcpClient();
                    Invoke((MethodInvoker)delegate
                    {
                        notificationPanel.Visible = true;
                        notificationTempLabel.Text = "File kelmoqda..."+"\
n"+fileName+"\n"+"Jonatuvchi IPsi: " + senderIP + " " + senderMachineName;
                   });
                    isConnected = true;
                    NetworkStream stream = client.GetStream();
                    if (flag == 1 && isConnected)
                    {
                        savePath = savePathLabel.Text + "\\" + fileName;
                        using (var output = File.Create(savePath))
                        {
                            var buffer = new byte[1024];
                            int bytesRead;
                            while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
                            {
                                output.Write(buffer, 0, bytesRead);
                            }
                            flag = 0;
                            client.Close();
                            isConnected = false;
                            fileName = "";
                            Invoke((MethodInvoker)delegate
                            {
                                notificationTempLabel.Text = "";
                                notificationPanel.Visible = false;
                            });
                            fileReceived = 1;
                        }
                    }
                    else if (flag == 0 && isConnected)
                    {
                        Byte[] bytes = new Byte[256];
32                         String data = null;
                        int i;
                        while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                        {
                            data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                        }
                        string[] msg = data.Split('@');
                        fileName = msg[0];
                        senderIP = msg[1];
                        senderMachineName = msg[2];
                        client.Close();
                        isConnected = false;
                        flag = 1;
                    }
                }
            }
            catch (Exception)
            {
                flag = 0;
                isConnected = false;
                if (client != null)
                    client.Close();
            }
        }
        private void startButton_Click(object sender, EventArgs e)
        {
            onlinePCList.Items.Clear();
            notificationLabel.ForeColor = Color.Green;
            notificationLabel.Text = "Finding...";
            searchPC();
            try
            {
                findPC = new Thread(new ThreadStart(searchPC));
                findPC.Start();
                while (!findPC.IsAlive) ;
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message);
            }
        }
        void searchPC()
        {
            bool isNetworkUp = NetworkInterface.GetIsNetworkAvailable();
33             if (isNetworkUp)
            {
                var host = Dns.GetHostEntry(Dns.GetHostName());
                foreach (var ip in host.AddressList)
                {
                    if (ip.AddressFamily == AddressFamily.InterNetwork)
                    {
                        this.IP = ip.ToString(); 
                    }
                }
                Invoke((MethodInvoker)delegate
                {
                    infoLabel.Text = "Bu kompyuter: " + this.IP;
                });
                string[] ipRange = IP.Split('.');
                for (int i = 100; i < 255; i++)
                {
                    Ping ping = new Ping();
                    string testIP = ipRange[0] + '.' + ipRange[1] + '.' + ipRange[2] + '.' 
+ i.ToString();
                    if (testIP != this.IP)
                    {
                        ping.PingCompleted += new 
PingCompletedEventHandler(pingCompletedEvent);
                        ping.SendAsync(testIP, 100, testIP);
                    }
                }
                Invoke((MethodInvoker)delegate
                {
                    notificationLabel.ForeColor = Color.Green;
                    notificationLabel.Text = "Online holatdasiz";
                });
                if (!serverRunning)
                    startServer();
            }
            else
            {
                Invoke((MethodInvoker)delegate
                {
                    notificationLabel.ForeColor = Color.Red;
                    notificationLabel.Text = "Offline holatdasiz";
                });
                MessageBox.Show("Lan ga ulaning iltimos!!!");
34             }
        }
        void pingCompletedEvent(object sender, PingCompletedEventArgs e)
        {
            string ip = (string)e.UserState;
            if (e.Reply.Status == IPStatus.Success)
            {
                string name;
                try
                {
                    IPHostEntry hostEntry = Dns.GetHostEntry(ip);
                    name = hostEntry.HostName;
                }
                catch (SocketException ex)
                {
                    name = ex.Message;
                }
                Invoke((MethodInvoker)delegate
                {
                    ListViewItem item = new ListViewItem();
                    item.Text = ip;
                    item.SubItems.Add(name);
                    onlinePCList.Items.Add(item);
                });
            }
        }
        private void browseButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.Filter = "Barcha tipdagi fayllar|*.*";
            openFileDialog1.Title = "File tanlash";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                fileNameLabel.Text = openFileDialog1.FileName;
                fileNameLabel.Tag = openFileDialog1.SafeFileName; 
            }
        }
        private void sendFileButton_Click (object sender, EventArgs e)
        {
            targetIP = null;
            targetName = null;
            if ((onlinePCList.SelectedIndices.Count > 0) && serverRunning && 
fileNameLabel.Text != ".")
35             {
                
                    targetIP = onlinePCList.SelectedItems[0].Text;
                    targetName = onlinePCList.SelectedItems[0].SubItems[1].Text;
                
                try
                {
                    Ping p = new Ping();
                    PingReply r;
                    r = p.Send(targetIP);
                    if (!(r.Status == IPStatus.Success))
                    {
                        MessageBox.Show("Bu kompyuter mavjud emas!", "", 
MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        notification = new Thread(new ThreadStart(showNotification));
                        notification.Start();
                        listener.Stop();
                        serverThread.Abort();
                        serverThread.Join();
                        serverRunning = false;
                        socketForClient = new Socket(AddressFamily.InterNetwork, 
SocketType.Stream, ProtocolType.Tcp);
                        socketForClient.Connect(new 
IPEndPoint(IPAddress.Parse(targetIP), 11000));
                        string fileName = fileNameLabel.Tag.ToString();
                        long fileSize = new FileInfo(fileNameLabel.Text).Length;
                        byte[] fileNameData = Encoding.Default.GetBytes(fileName + "@"
+ this.IP + "@" + Environment.MachineName);
                        socketForClient.Send(fileNameData);
                        socketForClient.Shutdown(SocketShutdown.Both);
                        socketForClient.Close();
                        socketForClient = new Socket(AddressFamily.InterNetwork, 
SocketType.Stream, ProtocolType.Tcp);
                        socketForClient.Connect(new 
IPEndPoint(IPAddress.Parse(targetIP), 11000));
                        socketForClient.SendFile(fileNameLabel.Text);
                        socketForClient.Shutdown(SocketShutdown.Both);
                        socketForClient.Close();
                        notification.Abort();
                        notification.Join();
                        notificationTempLabel.Text = "";
36                         notificationPanel.Visible = false;
                        Invoke((MethodInvoker)delegate
                        {
                            f2.Dispose();
                        });
                       
                      
                        MessageBox.Show("Muvaffaqiyatli qoshildi!!");
                        MessageBox.Show("File jonatildi " + targetIP + " " + targetName, 
"Tasdiqlash", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    if (socketForClient != null)
                    {
                        socketForClient.Shutdown(SocketShutdown.Both);
                        socketForClient.Close();
                    }
                }
                finally
                {
                    for (int i = 0; i < onlinePCList.SelectedIndices.Count; i++)
                    {
                        onlinePCList.Items[this.onlinePCList.SelectedIndices[i]].Selected 
= false;
                    }
                    startServer();
                }
            }
            else
            {
                MessageBox.Show("Maydonlarni va yuborilayotgan kompyuterni 
tanlang");
            }
        }
        void showNotification()
        {
            f2 = new NotificationForm(targetName,targetIP);
            f2.ShowDialog();
        }
        private void mainForm_FormClosing(object sender, FormClosingEventArgs 
e)
37         {
            if (serverRunning)
            {
                listener.Stop();
                if (serverThread != null)
                {
                    serverThread.Abort();
                    serverThread.Join();
                }
                
            }
        }
        private void stopButton_Click(object sender, EventArgs e)
        {
            if (serverRunning)
            {
                serverRunning = false;
                onlinePCList.Items.Clear();
                if (listener != null)
                    listener.Stop();
                if (serverThread != null)
                {
                    serverThread.Abort();
                    serverThread.Join();
                }
                
                notificationLabel.ForeColor = Color.Red;
                notificationLabel.Text = "Offline holatdasiz";
                infoLabel.Text = "";
                fileNameLabel.Text = ".";
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            x = x - 5;
            fileNameLabel.Location = new Point(x, y);
            if (x < (fileNameLabel.Text.Length * (-1)))
                x = 545;
        }
        private void clearButton_Click(object sender, EventArgs e)
        {
38             fileNameLabel.Text = ".";
        }
        private void changeSaveLocButton_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog browse = new FolderBrowserDialog();
            if (browse.ShowDialog() == DialogResult.OK)
            {
                string savePath = browse.SelectedPath;
                savePathLabel.Text = savePath;
            }
        }
        private void exitButton_Click(object sender, EventArgs e)
        {
            if (serverRunning)
            {
                if (listener != null)
                    listener.Stop();
                if (serverThread != null)
                {
                    serverThread.Abort();
                    serverThread.Join();
                }
               
            }
            this.Close();
            new Form1().Show();
        }
        private void savePathLabel_Click(object sender, EventArgs e)
        {
        }
        private void onlinePCList_SelectedIndexChanged(object sender, EventArgs 
e)
        {
            MessageBox.Show(onlinePCList.SelectedItems.Count.ToString());
        }
        private void timer2_Tick(object sender, EventArgs e)
        {
39         }
        private void button1_Click(object sender, EventArgs e)
        {
            DataTable table = new DataTable();
            string queryString = "SELECT * FROM admin_malumot";
            using (SqlConnection connection = new SqlConnection(connectionString: 
@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Users\
Professional\Desktop\File Transfer\File Transfer\Malumotlar.mdf; Integrated 
Security = True"))
            {
                connection.Open();
                using (SqlDataAdapter adapter = new
                SqlDataAdapter(queryString, connection))
                {
                    adapter.Fill(table);
                }
            }
            Malumotlar form = new Malumotlar(table);
            form.Show();
        }
    }
}
40