Вы находитесь на странице: 1из 35

OʻZBEKISTON RESPUBLIKASI

OLIY TA’LIM, FAN VA INNOVATSIYALAR VAZIRLIGI


MIRZO ULUG‘BEK NOMIDAGI
OʻZBEKISTON MILLIY UNIVERSITETINING JIZZAX FILIALI

AMALIY MATEMATIKA FAKULTETI


«KOMPYUTER ILMLARI VA DASTURLASHTIRISH» kafedrasi
“ALGORITMIK TILLAR VA DASTURLASH” FANIDAN

KURS ISHI
Mavzu: _________________________________________________________

Bajardi: “60610200-Axborot tizimlari va texnologiyalari (tarmoqlar va sohalar


bo‘yicha)” ta’lim yo‘nalishi 3-kurs _______ - guruh talabasi__________________.

Ilmiy rahbar: Tojiyev A.H.

Jizzax – 2023
MUNDARIJA
KIRISH ……………………………………………………………………..….......3
I-BOB. VISUAL DASTURLASH MUHITIDA AXBOROT TIZIMLARINI
YARATISH TEXNOLOGIYALARI………………………………………………7
1.1 .Net Framework imkoniyatlari ………………………………….………………...7
1.2 ADO.NET asoslari………………………………………………………………10
II. TASHKILOT XODIMLARINI MA’LUMOTLARIMI JAMLOVCHI TIZIM.
2.1 Dasturiy ta’minotni ishlab chiqish.…………………………………….…………14
2.2 Ma’lumotlar strukturalarini loyihalash ………………………….…………….17
2.3Dasturning ishlash tartibi ………………………………………………………..17
Xulosa………………………………………………………………………………......21
2.4Foydalanilgan adabiyotlar ro‘yxati………………………………………..........22
Ilova……………………………………………………………………………….........23

2
KIRISH
Kurs ishining dolzarbligi. XXI asr boshiga kelib, “Elektron ta’lim”, “Elektron
boshqaruv”, “Ochiq ta’lim”, “Masofaviy ta’lim”, “Axborotlashgan ta’lim” kabi
tushunchalar hayotimizga kundan-kun singib bormoqda. Muxtaram birinchi
prezidentimiz I.A.Karimov so‘zlari bilan aytganda, “Hozirgi axborot, kommunikatsiya,
kompyuter texnologiyalari asrida, internet kundan-kunga hayotimizning barcha
jabhalariga tobora chuqur va keng kirib borayotgan bir paytda, odamlarning ongi va
tafakkuri uchun kurash hal qiluvchi ahamiyat kasb etayotgan bir vaziyatda bu
masalalarning jamiyatimiz uchun naqadar dolzarb va ustuvor bo‘lib borayotgani haqida
gapirib o‘tirishga hojat yo‘q”.
Zamonaviy kompyuter juda ulkan imkoniyatlarga egaki, uning uchun shaxmat
o‘ynashdan tortib, tibbiy tashxis qo‘yish, korxonalarni boshqarish, qadimgi xalqlarning
sirli xatlarini “o‘qib”, mazmunini so‘zlab berish, she’r yozish, kuylar ijro etish, katta
hajmdagi kitoblarga annotatsiyalar yozish, loyihalar tarxini chizish kabi yuzlab mehnat
faoliyati turlarining barchasida, albatta, zamonaviy kompyuter texnologiyalari ham ishchi
kuchi, ham vaqt jihatidan juda yaqin yordamchi sanaladi. Hayotimizda ilm-fan,
texnika,zamonaviy texnologiyalarning jadal suratda kirib kelishi boshqa ko‘p sohalar
qatorida ta’lim sohasida ham yangi qarashlar, uslublar va texnologiyalarni yuzaga
keltirdi. O‘zbеkiston Rеspublikasi 7 Vazirlar Mahkamasining 2001 yil 23 maydagi
“2001-2005 yillarda kompyutеr va axborot tеxnologiyalarini rivojlantirish, Intеrnеtning
xalqaro axborot tizimlariga kеng kirib borishini ta’minlash dasturini ishlab chiqishni
tashkil etish choratadbirlari to‘g‘risida”gi 230-sonli1, 2002 yil 30 maydagi
“Kompyutеrlashtirishni yanada rivojlantirish va axborot-kommunikatsiya
tеxnologiyalarini joriy etish to‘g‘risida”gi Prеzidеntning farmoni, mazkur farmonni
amalga oshirish yuzasidan O‘zbеkiston Rеspublikasi Vazirlar Mahkamasining 2002 yil 6
iyundagi “2002- 2010 yillarda kompyutеrlashtirish va axborot-tеlеkommunikatsiya
tеxnologiyalarini rivojlantirish dasturi” to‘g‘risidagi Qarori e’lon qilindi.

3
Haqiqatda ham intellektual tizimlar borasida dunyoda juda ko‘plab ishlar
qilinmoqda. Buning isboti sifatida Intellektual.ru saytini misol qilib aytish mumkin.
Respublikamiz olimlaridan U.Yuldashev ko‘p yillardan buyon O‘zbekiston Respublikasi
Vazirlar Mahkamasi huzuridagi intellektual tizimlarni ishlab chiqish sohasidagi ishlarni
olib bormoqda. Yana bir olimlardan Sh.Nazarov matematika va axborot texnologiyalari
institutida intellektual tizimlarni yaratish boyicha ilmiy tadqiqot ishlarini olib bormoqda.
Bu ilmiy tadqiqot ishlari eski dasturlash tillarida yaratilganligini aytish mumkin. Hozirgi
kunda dasturlash tillarining yangi avlodlari bo‘lganligi uchun yangi intellektual tizimlarni
yaratish kerak.
O‘zbekistonda yuritilayotgan raqamli iqtisodiyot siyosati zamirida ham yangi
texnologiyalarni rivojlantirish maqsadi ko‘zda tutilmoqda. Davlatimiz rahbarining 2020-
yil 28-apreldagi “Raqamli iqtisodiyot va elektron hukumatni keng joriy yetish chora-
tadbirlari to‘g‘risida” gi qaroriga muvofiq, raqamli iqtisodiyot bilan shug‘ullanadigan
yaxlit tizim yaratildi. “Elektron hukumat”, iqtisodiyot tarmoqlari va qishloq xo‘jaligini
raqamlashtirish, IT parklarini tashkil yetish va boshqarish kabi vazifalar to‘liq Axborot
texnologiyalari va kommunikasiyalarini rivojlantirish vazirligi vakolatiga o‘tdi.
Bugun Yangi O‘zbekiston hayotining barcha sohalari chuqur islohotlar maydoniga
aylangan. Bu jarayonda ijtimoiy sohaning asosi hisoblangan ta’lim tizimidagi
o‘zgarishlar haqida to‘lqinlanib so‘zlamaslikning iloji yo‘q. Mamlakatimizda so‘nggi
yillarda ta’lim tizimining barcha bosqichlarini zamonaviy talablar asosida tashkil etish
bo‘yicha amaliy ishlar hal qiluvchi bosqichga kirdi.

Prezidentimiz ta’kidlaganidek: “Ilimni qadirlang, ilimga intiling! Bir sonya


vaqtingiz ham bekor o‘tmasin! Yoshlik – umurning eng bebaho davri. Ilm o‘tda
yonmaydigan, suvda cho‘kmaydigan, hech kim sizdan tortib ololmaydigan boylik
ekanligini aslo unitmang!”.

Kontseptsiya mazmuni mamlakatimiz oliy ta’lim tizimini isloh qilishning ustuvor


yo‘nalishlarini aks ettiradi. Unda oliy o‘quv yurtlarida qamrov darajasini kengaytirish

4
hamda ta’lim sifatini oshirish, raqamli texnologiyalar va ta’lim platformalarini joriy etish,
yoshlarni ilmiy faoliyatga jalb qilish, innovatsion tuzilmalarni shakllantirish, ilmiy
tadqiqotlar natijalarini tijoratlashtirish, xalqaro e’tirofga erishish hamda boshqa ko‘plab
aniq yo‘nalishlar belgilab berilgan. Bularning barchasi ta’lim jarayonini yangi sifat
bosqichiga ko‘tarish uchun xizmat qiladi.
Kurs ishining maqsadi.OTM kafedralarida hujjatlarni boshqarishni
avtomatlashtirish orqali ish sifatini yaxshilash, vaqt samaradorligini oshirish kurs
ishining asosiy maqsadi hisoblanadi. Hozirda har bir sohani avtomatlashtirish
foydalanuvchilar uchun bir qancha qulayliklarni yaratib bermoqda. Avtomatlashtirish
yordamida kafedra xizmatlari soddalashtiriladi.Har bir tajribali menejer,
avtomatlashtirish dasturining tegishli yordamisiz xizmatlar bilan ishlash juda qiyin
ekanligini yaxshi tushunadi. Avtomatlashtirish sohasi jadal rivojlanmoqda. Raqobat o‘sib
bormoqda. Shu sababli, xizmat ko‘rsatish sohasidagi so‘nggi tendentsiyalarni kuzatib
borish, rivojlantirish, yangi bozorlarni o‘zlashtirish, yangi mehmonlarni jalb qilish,
shunchaki katta miqdordagi daromad olish va erishilgan natijalar bilan to‘xtamaslik
uchun zamonaviy avtomatizatsiya yechimlaridan foydalanish juda muhimdir.Oddiy
xodimlarga tizim boshqaruvini o‘zlashtirishga yordam berish ko‘p vaqt talab qilmaydi.
Dasturimiz foydalanuvchi interfeysi imkon qadar sodda va qulay bo‘lishi uchun maxsus
ishlab chiqilgan.
Kurs ishining vazifalari.Kurs ishining asosiy vazifalari quyidagilardan iborat:
 Xodimlar ishlash sifatini yaxshilash va vaqt samaradorligini yaxshilash
 Kafedra o‘qtuvchilari bilan kafedra mudiri o‘rtasida hujjat almashinuvini
avtomatlashtirish
 O‘tuvchilarni hujjatlarni qog‘oz variantida emas, elektron variantida o‘z
profilida saqlash

5
Kurs ishi tuzilmasining tavsifi: Mazkur tadqiqot ishi kirish, tanlangan ob’ektlar
va tadqiqot usullari, kurs ishi boblari, xulosa hamda foydalanilgan adabiyotlar
ro‘yxatidan iboratdir.
Kurs ishining kirish qismida qaralayotgan ishning dolzarbligi, ishning maqsadi,
ishning ilmiyligi, tadqiqotning amaliy ahamiyati va kurs ishining tuzilishi to‘g‘risidagi
umumiy ma’lumotlar keltirilgan.
Kurs ishining tanlangan ob’ektlar va tadqiqot usullari bo‘limida tadqiqot olib
borilayotgan ob’ekt haqida umumiy ma’lumotlar berilgan. Shu bilan birga tadqiqot
ob’ektini o‘rganish usullari va qo‘yilgan maqsadga erishish uchun kerak bo‘ladigan
qurilma va dasturiy ta’minotlar, ishni amalga oshirish usullari haqida umumiy
ma’lumotlar keltiriladi.
Kurs ishining xulosa qismida bajarilgan ishning amaliyotga qo‘llanilishi natijasida
kelib chiqadigan xulosalar va tavsiyalar keltiriladi.
Kurs ishining so‘ngida esa foydalanilgan adabiyotlar, elektron kitoblar ro‘yxatlari
keltirilgan.
Kurs ishining tuzilishi: Kurs ishi kirish qismi, mundarija, xulosa va ilmiy-amaliy
tavsiyalar hamda foydalangan adabiyotlar ro‘yxatidan iborat.
Men OTM kafedra hujjatlarini boshqarish tizimini kurs ishi sifatida C# dasturlash tilining
keng imkoniyatlaridan foydalangan holda windows yoki krossplatformali muhit uchun
OTM kafedralarida hujjatlarni boshqarish tizimini yaratishni o‘z oldimga maqsad qilib
oldim. Bu turdagi dasturiy mahsulot hozirgi kunda mavjud bo‘lsada, bir tomondan C#
dasturlash tilining keng imkoniyatlarini ommaga taqdim etish, boshqa tomondan OTM
kafedralarida hujjatlarniboshqarish sodda va oddiy ko‘rinishiga talab yuqoriligini
inobatga olgan holda ushbu dasturiy mahsulotni ishlab chiqishga qaror qildim.
Hodim ma’lumotlar bazasida yozuvlarni yaratishi, o‘zgartirishi va o‘chirishi
mumkin. Hodim tomonidan dasturdan foydalanish oson va sodda va intuitiv interfeysga
ega.

6
I-BOB. VISUAL DASTURLASH MUHITIDA AXBOROT TIZIMLARINI
YARATISH TEXNOLOGIYALARI
1.1. .NET Framework imkoniyatlari

Zamonaviy operatsion tizimlar va dasturlar 64 Gigabayt NET Framework —


2002-yilda Microsoft tomonidan chiqarilgan dasturiy platformadir. Platforma turli
dasturlash tillari: C#, Visual Basic .NET, J# va boshqalar uchun mos Common Language
Runtime (CLR)ga asoslangan. CLR funksiyasi ushbu platformadan foydalanadigan har
qanday dasturlash tilida mavjud. .NET Framework hozirda .NET sifatida rivojlanmoqda.
Bu platformada koʻp dasturlarga umumiy komponentlar va optimizatsiyalangan metodlar
bor.

.NET Framework oʻsha paytda mashhur boʻlgan Sun Microsystems


(hozirda Oracle kompaniyasiga tegishli) Java platformasiga Microsoftning javobidir.

.NET Framework Microsoft kompaniyasining oʻz mahsuloti hisoblanib, rasmiy


ravishda Windows operatsion tizimlarida ishlash uchun moʻljallangan boʻlsa-da, baʼzi
boshqa operatsion tizimlarda .NET Framework dasturlarini ishga tushirish imkonini
beruvchi mustaqil loyihalar (birinchi navbatda Mono va Portable.NET) mavjud.

Microsoft Silverlight2.0 versiyasida .NET Frameworkdan koʻp qismlar bor.

Ishlab chiqarish

Platformani ishlab chiqish 1999-yilda boshlangan. Rasmiy ravishda, yangi


texnologiyaning ishlab chiqilishi 2000-yil 13-yanvarda, Bill Geyts Microsoft
rahbarligining Stiv Balmerga oʻtkazilishini paytida rasman eʼlon qilindi. Shu kuni
korporatsiya rahbariyati kompaniya uchun Next Generation Windows Services (NGWS,
“Windows xizmatlarining yangi avlodi”) deb nomlangan yangi strategiyasini eʼlon qildi.
Yangi strategiya foydalanuvchilarga Internetga kirish imkoniga ega simsiz qurilmalardan
shaxsiy kompyuteri (PC)da boʻlgani kabi Internet bilan ishlash imkonini berish uchun
mavjud va kelajakdagi Microsoft ishlanmalarining yagona toʻplamiga birlashtirish edi.

7
Oʻsha kuni boʻlib oʻtgan matbuot anjumanida Balmer shaxsiy kompyuterlarining
ulkan imkoniyatiga qaramay, korporatsiya keyingi avlod xizmatlarining shaxsiy
kompyuter boʻlmagan qurilmalarda ham ishlashi kafolatlanishini taʼminlash muhimligiga
urgʻru bergan. Geytsga kelsak, PatriciaSeybold Group tahlilchisi Enn Tomas Meyns
uning soʻzlarini tahlil qilib, kompaniyaga faqat ish kompyuterlariga eʼtibor qaratishdan
voz kechib, mobil qurilmalarni ishlab chiqishga oʻtish foyda keltirishini aytdi. Uning
fikriga koʻra, Geyts Windows bilan qattiq bogʻlanmagan kompyuterda ishlashning yangi
davriga yoʻl ochdi.

Mobil qurilmalarning xotira hajmi kichik boʻlganligi tufayli ilovalarni saqlash va


uzatish serverlar tomonidan amalga oshirilishi lozim deb qaralgan, holbuki oʻsha paytda
deyarli barcha foydalanuvchi maʼlumotlari va dasturiy taʼminot statsionar
kompyuterlarda lokal ravishda saqlangan. Keyin “serverga asoslangan” modelga oʻtish
gʻoyasi eng yirik IT kompaniyalar rahbarlari orasida kuchli qoʻllab-quvvatlandi. Misol
uchun, Sun Microsystems rahbari Skott Maknili server-mijoz dasturiy taʼminotiga
oʻtishda Microsoft Office bilan raqobatlashadigan ofis dasturiy taʼminoti kompaniyasini
sotib olganini eʼlon qilgan.

.NET arxitekturasi

Har qanday qoʻllab-quvvatlanadigan dasturlash tilida yozilgan .NET Framework


dasturi birinchi navbatda kompilyator tomonidan .NET Common Intermediate Language
(CIL) (ilgari Microsoft Intermediate Language, MSIL) bayt-kodiga tarjima
qilinadi. .NET nuqtayi nazaridan, bu yigʻish (assembly) deb hisoblanadi. Keyin kod
Common Language Runtime (CLR) virtual mashinasi tomonidan bajariladi yoki
NGen.exe tomonidan maʼlum maqsadli protsessor uchun bajariladigan kodga tarjima
qilinadi.

Virtual mashina (VM)dan foydalanish afzalroq, chunki u ishlab chiquvchilarni


apparatning oʻziga xos xususiyatlari haqida tashvishlanishdan xalos qiladi. CLR virtual

8
mashinasidan foydalanilganda, oʻrnatilgan JIT-kompilyator “shu ondayoq” (just in time)
oraliq baytkodni kerakli protsessorning mashina kodlariga aylantiradi. Dinamik
kompilyatsiya qilishning zamonaviy texnologiyasi yuqori darajadagi ishlashga erishishga
imkon beradi. CLR VM shuningdek, asosiy xavfsizlik, xotira boshqaruvi va istisnolar
bilan shugʻullanadi, bu esa ishlab chiquvchiga ishning bir qismini tejaydi.

.NET Framework arxitekturasi Microsoft tomonidan ishlab chiqilgan va ISO va


ECMA tomonidan tasdiqlangan Common Language Infrastructure (CLI)
spetsifikatsiyasida tavsiflangan va ishlab chiqilgan. CLI .NET maʼlumotlar turlarini,
dastur tuzilmasi metamaʼlumotlar formatini, bayt kodini bajarish tizimini va boshqalarni
tavsiflaydi.

Barcha qoʻllab-quvvatlanadigan dasturlash tillari uchun mavjud boʻlgan .NET


obyekt sinflari Framework Class Library (FCL)da mavjud. FCL tarkibiga Windows
Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation
Foundation, Windows Communication Foundation va boshqalar kiradi. FCLʼning
yadrosi asosiy sinf kutubxonasi (BCL) deb ataladi.

.NET platformasini quyidagi dasturlar qoʻllab-quvvatlaydi:

 Microsoft Visual Studio (C#, Visual Basic .NET, Managed C++, F#);
 SharpDevelop;
 MonoDevelop;
 Embarcadero RAD Studio (Delphi for .NET); oldingi Borland Developer
Studio (Delphi for .NET, C#);
 A# (Ada);
 Zonnon;
 PascalABC.NET;
 JetBrains Rider.

9
.NET ilovalari matn muharririda kompilyatorni buyruqlar satridan oddiygina
chaqirish orqali ham foydalanish mumkin.

Microsoft .NET ning asosiy gʻoyalaridan biri bu turli tillarda yozilgan dasturiy
qismlarning mosligidir. Masalan, Microsoft .NET uchun C++ tilida yozilgan xizmat
Delphida yozilgan kutubxonadan sinf usuliga kirishi mumkin; C# da siz Visual
Basic .NET da yozilgan sinfdan meros boʻladigan sinfni yozishingiz mumkin va C# da
yozilgan usul bilan chiqarilgan istisno Delphida amalga oshirilib, ishlov berilishi
mumkin. .NET dagi har bir kutubxonada (montajda) oʻz versiyasi haqida maʼlumot
mavjud boʻlib, bu toʻplamlarning turli versiyalari oʻrtasida yuzaga kelishi mumkin
boʻlgan ziddiyatlarni bartaraf etish imkonini beradi.

Microsoft Visual Studio bilan taʼminlangan tillar:

 C#
 Visual Basic .NET
 JScript .NET
 C++/CLI — Managed C ++ ning yangi versiyasi
 F# — VS2010/VS2012/VS2015/VS2017/VS2019 tarkibiga kiritilgan ML
dasturlash tillari oilasining aʼzosi.
 J# — oxirgi marta VS2005 da kiritilgan
1.2 ADO.NET asoslari

ADO.NETga kirish. Bugungi kunda ma’lumotlar bilan ishlash katta ahamiyatga


ega. Ma’lumotni saqlash uchun turli xil ma’lumotlar bazalarini boshqarish tizimlari
qo‘llaniladi: MS SQL Server, Oracle, MySQL va boshqalar. Ko‘pgina katta dasturlar, bu
yoki boshqa usulda, ma’lumotlarni saqlash uchun ushbu ma’lumotlar bazasini boshqarish
tizimlaridan foydalanadilar. Ammo ma’lumotlar bazasi va C # ilovasi o‘rtasida aloqa
o‘rnatish uchun vositachi kerak. Va aynan shunday vositachi ADO.NET texnologiyasidir.
ADO.NET .NET Framework asosida ma’lumotlar texnologiyasini ta’minlaydi.
Ushbu texnologiya bizga ma’lumotlar bazalariga so‘rovlar yuborish, ulanishlarni
o‘rnatish, ma’lumotlar bazasidan javob olish va boshqa bir qator operatsiyalarni bajarish
uchun sinflar to‘plamini taqdim etadi.

10
Bundan tashqari, ma’lumotlar bazasini boshqarish tizimlari juda ko‘p bo‘lishi
mumkinligini ta’kidlash kerak. O‘zlarining mohiyatiga ko‘ra, ular farq qilishi mumkin.
Masalan, SQL Server so‘rovlarni tuzishda T-SQL dan foydalanadi, MySQL va Oracle esa
PL-SQL-dan foydalanadilar. Turli ma’lumotlar bazalari tizimlarida har xil turdagi
ma’lumotlar bo‘lishi mumkin. Boshqa fikrlar ham farq qilishi mumkin. Biroq,
ADO.NETning funktsional imkoniyatlari ishlab chiquvchilarga keng qamrovli DBMS
bilan ishlash uchun birlashtirilgan interfeysni taqdim etadigan tarzda yaratilgan.
ADO.NET-da ma’lumotlar bazasi bilan o‘zaro ishlash interfeysining asosini
cheklangan ob’ektlar to‘plami taqdim etadi: Connection, Command, DataReader, DataSet
va DataAdapter. Ulanish ob’ekti yordamida ma’lumotlar manbasiga ulanish o‘rnatiladi.
Buyruq ob’ekti ma’lumotlar bazasi ma’lumotlari bilan operatsiyalarni bajarishga imkon
beradi. DataReader ob’ekti so‘rov natijasida olingan ma’lumotlarni o‘qiydi. DataSet
ob’ekti ma’lumotlar bazasidan ma’lumotlarni saqlash uchun mo‘ljallangan va
ma’lumotlar bazasidan qat’i nazar ular bilan ishlashga imkon beradi. Va DataAdapter -
bu DataSet va ma’lumotlar manbai o‘rtasida vositachi. Ko‘pincha ma’lumotlar bazasi
bilan ishlash ushbu ob’ektlardan o‘tadi.
Biroq, turli xil ma’lumotlar manbalari uchun bir xil ob’ektlardan foydalanish
uchun tegishli ma’lumot etkazib beruvchisi talab qilinadi. Aslida, ADO.NET-da
ma’lumotlar etkazib beruvchisi orqali siz ma’lumotlar bazasi bilan o‘zaro aloqada
bo‘lasiz. Bundan tashqari, ADO.NET-dagi har bir ma’lumot manbai uchun yuqorida
ko‘rsatilgan sinflarning aniq bajarilishini aniqlaydigan provayder bo‘lishi mumkin.
Odatiy bo‘lib, ADO.NET-da quyidagi o‘rnatilgan provayderlar mavjud:
• MS SQL Server uchun provayder
• OLE DB uchun Provayder (MS SQL Serverning eski versiyalariga, shuningdek,
Access, DB2, MySQL va Oracle ma’lumotlar bazalariga kirishni ta’minlaydi)
• ODBC uchun provayder (Provayderlar mavjud bo‘lmagan ma’lumotlar
manbalari uchun provayder)
• Oracle uchun provayder
• Provayder EntityClient. ORM Entity Framework Technology uchun ma’lumot
etkazib beruvchi
• SQL Server Compact 4.0 uchun provayder
O‘rnatilgan ushbu provayderlardan tashqari, turli xil ma’lumotlar bazalari uchun
mo‘ljallangan, masalan, MySQL uchun ko‘plab boshqa ma’lumotlar mavjud.
ADO.NET-da ishlatiladigan asosiy nomlar:
•System.Data: ADO.NET arxitekturasini amalga oshiradigan sinflar, interfeyslar,
delegatlarni belgilaydi
•System.Data.Common: barcha ADO.NET provayderlari uchun xos bo‘lgan
sinflarni o‘z ichiga oladi
•System.Data.Design: O‘z ma’lumotlar to‘plamlarini yaratishda foydalaniladigan
sinflarni belgilaydi.

11
•System.Data.Odbc: ODBC uchun ma’lumotlar etkazib beruvchisi funktsiyalarini
belgilaydi
•System.Data.OleDb: OLE DB uchun ma’lumotlar etkazib beruvchisi
funktsiyalarini belgilaydi
•System.Data.Sql: SQL Serverga tegishli funktsiyalarni qo‘llab-quvvatlaydigan
sinflarni saqlaydi
•System.Data.OracleClient: provayderning Oracle ma’lumotlar bazalari uchun
funktsional imkoniyatlarini belgilaydi
•System.Data.SqlClient: MS SQL Server ma’lumotlar bazalari uchun
provayderning funktsional imkoniyatlarini belgilaydi
•System.Data.SqlServerCe: SQL Server Compact 4.0 uchun provayderning
funktsional imkoniyatlarini belgilaydi
•System.Data.SqlTypes: MS SQL Servera ma’lumotlari turlari uchun sinflar
mavjud
•Microsoft.SqlServer.Server: SQL Serverning o‘zaro ishlashi uchun
komponentlarni va umumiy tilning ishlash vaqtini saqlaydi.

Funktsional jihatdan, ADO.NET sinflarini ikki darajaga bo‘lish mumkin: ulangan


va ajratilgan. Har bir .NET ma’lumotlar ta’minotchisi ulanish qatlamini tashkil etuvchi
Connection, Command, DataReader, DataAdapter va boshqa ob’ektlarning o‘z
versiyalarini amalga oshiradi. Ya’ni, ularning yordami bilan MB ga ulanish o‘rnatiladi va
u bilan o‘zaro aloqa amalga oshiriladi. Qoida tariqasida, ushbu ob’ektlarni amalga
oshirish har bir aniq provayder uchun o‘z nomlarida prefiksga ega, bu provayderni
ko‘rsatadi:

12
Accessing Data With ADO.NET DataSet, DataTable, DataRow, DataColumn va
boshqa bir qator sinflar nogiron darajani tashkil etadi, chunki DataSet-da ma’lumotlarni
olgandan so‘ng, biz ulanish o‘rnatiladimi yoki yo‘qligidan qat’iy nazar ushbu
ma’lumotlar bilan ishlashimiz mumkin. Ya’ni, ma’lumotlar bazasidan ma’lumotlarni
olgandan so‘ng, dastur ma’lumot manbasidan uzilishi mumkin.

13
II-BOB. TASHKILOT XODIMLARINI MA’LUMOTLARIMI JAMLOVCHI
TIZIM
2.1. Dasturiy ta’minotni ishlab chiqish
Dasturiy ta’minotni ishlab chiqishdan avval uni albatta loyihalab olish zarur, uning
tashqi interfeysi qulay bo‘lishi hodim uchun juda muhim hisoblanadi.Dastur to‘qqizta
jadvaldan iborat, ular:
1.Admin
2.Hisobchi
3.Ishchi
4.Lavozim
5.Oylik

1-rasm.Dastur bazadagi jadvallar


Bu jadvallar bizning dasturimizning to‘g‘ri va sifatli ishlashi uchun bir –biriga
tashqi va ichki kalitlar bilan bo‘langan.

14
2-rasm.Jadvallarning bir-biri bilan bog‘lanishiga misol
Dastur taqdimot standartlari yordamida ma’lumotlar bazasini qattiq diskda saqlashi
kerak.
Samaradorlik: dastur operatsion tizimda ishlashi va dasturning maqsadi hamda mo-
hiyatiga muvofiq, apparat resurslariga kichik talablar qo‘yishi kerak.Dastur intuitiv
hodim uchun qulay grafik interfeysga ega bo‘lishi kerak.
Dasturning barqaror ishlashi kafolatlangan kompyuterning minimal texnik
xususiyatlari:
Kompyuter protsessor: Pentium 4 toifali protsessorli kompyuter;
Xotira: 512mb;
Monitor: 640x480 piksel yoki undan ortiq piksellar soniga ega monitor;
Operatsion tizim: WindowsXP operatsion tizimi, Microsoft .NET Framework Run-
time v4.0 talab qilinadi;
Ma’lumotlar bazasi hajmi bilan belgilanadigan qattiq diskda bo‘sh disk maydoni
mavjudligi.
Tashqi funktsiyalari:

15
Valyuta ayirboshlaganlarning ma’lumotlarini ma’lumotlar bazasiga qo‘shish;
Komissiya miqdorini o‘zgartirish;
Sana boyicha ma’lumot qidirish;
Valyuta kurslarini Markaziy Bank API sidan foydalangan holda tanlangan valyuta
qiymatni olish;
Hodimlarni qo‘shish, tahrirlash, login parolini o‘zgartirish;
Kritik holatlar:
jurnal ma’lumotlar bazasini saqlashda qattiq diskda bo‘sh joy etishmasligi. Fayl
tizimidagi har qanday operatsiyani bekor qilish kerak;
Windows-ni o‘chirish. Bunday holda, dastur o‘z ishini tugatishi kerak.
Ushbu dasturiy vosita bir-biri bilan o‘zaro ta’sir qiluvchi quyi tizimlarga bo‘linishi
mumkin.
Interfeys quyi tizimi dasturning hodim interfeysini amalga oshiradi. Ma’lumotlar
bazasi jadval ko‘rinishida №, Joylar, Erkin va Rezidentlar ustunlari bilan ma’lumotlarni
saralash va belgilangan mezon bo‘yicha qidirish imkoniyatiga ega.
Ma’lumotlar bazasi bilan ishlash quyi tizimi ma’lumotlar bazasini boshqarishga
kirishni ta’minlaydi:
Ma’lumotlar bazasi yozuvlarini yaratish, o‘chirish, o‘zgartirish;

2.2 Ma’lumotlar strukturasini loyihalash


Tashkilot xodimlari malumotlar jamlovchi tizim

3-rasm.Ma’lumotlar bazasi konseptual modeli

16
2.3 Dasturning ishlash tartibi

4-rasm.Kirish qismi.Admin va o‘qtuvchi. Foydalanuvch login va parol bilan


tizimga kirish qismi

5-rasm. Admin oynasi

17
6-rasm.Ishchi registratsiyadan o`tishi

7-rasm. Admin qismi. Ishchi malumoti

18
XULOSA
Men bu kurs ishi davomida C# dasturlash tili haqida 2-yil davomida olgan
bilimlarimni mustahkamlab, bilmagan joylarimni mustaqil ravishda o‘rganib o‘z bilim va
ko‘nikmalarimni oshirdim.
Mening kurs ishim oliy ta’lim sohasida ya’ni “Tashkilotla tma’lumotlarini
jamlovchi ” tizimi edi. Hozirgi, ya’ni XXI asrning eng asosoiy masalaridan biri bu har bir
sohaga raqamli iqtisodiyotni jalb etish. Ya’ni har bir soha avtomatlashtirilgan tizimga
o‘tishi, bu o‘sha sohaning rivojlanishiga, va sifatli xizmat, mahsulot berishga katta turtki
bo‘ladi. Hozirgi kun talabi hamma jarayon,xizmatlar va boshqalar onlayn shaklda, tez,
ishonchli va xavfsiz bo‘lishidir. Istemolchilar biror xizmat yoki mahsulot uchun ko‘plab
navbatlarda turishini, vaqtini yo‘qotishini istashmay. Shuning uchun har bir sohani
avtomatlashtirish jamiyat rivojiga tasir qiladi. Men kurs ishimda shu masalalarni inobatga
olib tashkilot xodimlarini ma’lumotni jamlovchi tizimini avtomatlashtirishga harakat
qildim.
Kurs ishini qilish davomida o‘z kamchiliklarimni bilib oldim, hamda ularni
to‘ldirishga harakat qildim. Misol uchun men ma’lumotlar bazasi bilan ishlashni oldin
murakkab darajada bilmasdim. Lekin kurs ishi davomida bazada ma’lumotlar bo‘yicha
ishlash bilimlarimni mustahkamlab oldim. Va bu menga kelajakda albatta kerak bo‘ladi.
Sababi har qanday platforma yaxshi va eng muhimi tez ishlashi uchun, bu platforma
ma’lumotlarni tez qayta ishlashi kerak. Bu degani, platformani ma’lumotlar bazasi bilan
bog‘liq joylarini eng ijobiy usllar bilan ishlab chiqish kerak. Biz bu uchun SQL tilida
yetuk mutahhasis bo‘lishimiz kerak. Kurs ishim davomida SQL ning o‘zim bilmagan
funksiyalarini o‘rganib, o‘z bilimimni oshirdim.

19
FOYDALANILGANADABIYOTLAR
1. СергейТепляков. Паттерныпроектированияна платформе .NET2..
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.https://xabar.uz/uz/talim/talim-tizimini-isloh-qilishni-nimadan-boshlash-kerak
8.https://tdi.uz/activity/monitoring/
9. Unity и C#. Геймдев от идеи до реализации | Гибсон Бонд Гибсон Бонд
Джереми
10. Ицик Бен-Ган. Microsoft SQL Server 2012. Основы T-SQL
11. Дж. Скит. C# для профессионалов. Тонкости программирования
12. JoeDuffy. ConcurrentProgrammingonWindows
13. ЭрикФрименидр. HeadFirst. Паттерны проектирования
14. Сергей Тепляков. Паттерны проектирования на платформе .NET
Internet manbalari
1. https://metanit.com
2. https://www.youtube.com
3. https://www.w3schools.com/cs/index.php
4. https://www.w3schools.com/mysql/default.asp

20
ILOVA
Form1
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.Data.SqlClient;

namespace XodimHujjatlari
{
public partial class Kirish : Form
{
SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\
MSSQLLocalDB;AttachDbFilename=C:\Users\ProBook\source\repos\XodimHujjatlari\XodimHujjatlari\
Database1.mdf;Integrated Security=True");
int k;
Form f;
string comand;
public Kirish(int i,Form f)
{
this.k = i;
this.f = f;
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)


{
switch (k)
{
case 1:
{
comand = $"select * from Admin where login=@login and parol=@parol";
panel2.Visible = true;
panel1.Visible = false;
break;
}
case 2:
{
panel2.Visible = false;
panel1.Visible = true;
break;
}

21
case 3:
{
comand = $"select * from Hisobchi where login=@login and parol=@parol";
panel2.Visible = true;
panel1.Visible = false;
label1.Visible = true;
break;
}
}
}

private void button2_Click(object sender, EventArgs e)


{
try
{
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = comand;
cmd.Parameters.AddWithValue("@login", textBox4.Text);
cmd.Parameters.AddWithValue("@parol", textBox3.Text);
DataTable table = new DataTable();
connection.Open();
table.Load(cmd.ExecuteReader());
connection.Close();
if (table.Rows.Count > 0)
{
this.Close();
f.Hide();
if (k == 1) new Admin(table.Rows[0][1].ToString()).Show();
if (k == 3) new oylik(int.Parse(table.Rows[0][0].ToString())).Show();

}
else
{
MessageBox.Show("Login yoki parolingiz xato");
textBox4.Text = textBox3.Text = "";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}
}

private void button1_Click(object sender, EventArgs e)


{
this.Close();

22
}

private void label1_Click(object sender, EventArgs e)


{
panel2.Visible = false;
panel1.Visible = true;
}

private void button3_Click(object sender, EventArgs e)


{

try
{
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
if(k==3)
cmd.CommandText = $"select * from Worker where pasport='{textBox2.Text}' and
lavozim='Hisobchi'";
else
cmd.CommandText = $"select * from Worker where pasport='{textBox2.Text}'";
DataTable table = new DataTable();
connection.Open();
table.Load(cmd.ExecuteReader());
connection.Close();
if (table.Rows.Count > 0)
{
if(k==2)
cmd.CommandText = $"select * from Ishchi where id={table.Rows[0][0]}";
else
cmd.CommandText = $"select * from Hisobchi where id={table.Rows[0][0]}";
DataTable table1 = new DataTable();
connection.Open();
table1.Load(cmd.ExecuteReader());
connection.Close();
if (table1.Rows.Count < 1)
{
this.Close();
f.Hide();
if(k==2)
new Regstr(int.Parse(table.Rows[0][0].ToString())).Show();
if (k == 3)
new Ishchi (int.Parse(table.Rows[0][0].ToString()), table.Rows[0]
[1].ToString()).Show();
}
else
{
MessageBox.Show("Bu passportdan oldin ro'yxatdan o'tgan");
}

23
}
else
{
MessageBox.Show("Siz ro'yxatdan o'tmagansiz");
textBox2.Text= "";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}
}
}
}
Form2
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.Data.SqlClient;
using System.IO;
using System.Windows.Forms;

namespace XodimHujjatlari
{
public partial class Form2 : Form
{
int id;
string admin;
SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\
MSSQLLocalDB;AttachDbFilename=C:\Users\ProBook\source\repos\XodimHujjatlari\XodimHujjatlari\
Database1.mdf;Integrated Security=True");
DataTable table = new DataTable();

public Form2(int id,string admin)


{
this.id = id;
this.admin = admin;
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)


{

24
try
{
label5.Text = DateTime.Now.ToString("dd/MM/yyyy");
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = $"select i.id, i.familya+i.ism, w.pasport, i.tel, i.jins, w.lavozim,
w.kelgan, " +
$"i.rasm " +
$"from Hisobchi i inner join Worker w on w.id=i.id where i.id={id}";
connection.Open();
this.table.Load(cmd.ExecuteReader());
connection.Close();
labelid.Text = table.Rows[0][0].ToString();
labelfish.Text = table.Rows[0][1].ToString();
labelps.Text = table.Rows[0][2].ToString();
labeltel.Text = table.Rows[0][3].ToString();
labeljins.Text = table.Rows[0][4].ToString();
labellav.Text = table.Rows[0][5].ToString();
labelish.Text = table.Rows[0][6].ToString();
Byte[] oldImg = (Byte[])(table.Rows[0][7]);
MemoryStream stream = new MemoryStream(oldImg);
pictureBox1.Image = Image.FromStream(stream);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}
}

private void button4_Click(object sender, EventArgs e)


{
this.Close();
new Admin(admin).Show();
}
}
}
Hisobchi
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;

25
using System.Data.SqlClient;
using System.IO;

namespace XodimHujjatlari
{
public partial class Ishchi : Form
{
string img = "",pas;
int id;
SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\
MSSQLLocalDB;AttachDbFilename=C:\Users\ProBook\source\repos\XodimHujjatlari\XodimHujjatlari\
Database1.mdf;Integrated Security=True");

public Ishchi(int id,string pas)


{
this.id = id;
this.pas = pas;
InitializeComponent();
}

private void Ishchi_Load(object sender, EventArgs e)


{
textBox6.Text = pas;
}

private void button2_Click(object sender, EventArgs e)


{
try
{
if(!textBox1.Text.Equals("") && !textBox2.Text.Equals("") && !textBox4.Text.Equals("") && !
img.Equals("") && !textBox5.Text.Equals(""))
{
if (textBox4.Text.Equals(textBox5.Text))
{
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = $"select * from Hisobchi where login='{textBox2.Text}'";
DataTable data = new DataTable();
connection.Open();
data.Load(cmd.ExecuteReader());
connection.Close();
if (data.Rows.Count < 1)
{
FileStream fs1 = new FileStream(img, FileMode.Open, FileAccess.Read);
Byte[] rasm = new Byte[fs1.Length];
fs1.Read(rasm, 0, rasm.Length);
fs1.Close();
string jins = radioButton1.Checked ? radioButton1.Text : radioButton2.Text;

26
cmd.CommandText = $"insert into
Hisobchi(id,login,parol,ism,familya,tel,jins,rasm) " +
$"values ({id}, '{textBox2.Text}', '{textBox4.Text}', '{textBox1.Text}',
'{textBox3.Text}','{maskedTextBox1.Text}','{jins}', @fayl)";
SqlParameter p2 = new SqlParameter("@fayl", SqlDbType.VarBinary, rasm.Length,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, rasm);
cmd.Parameters.Add(p2);
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
MessageBox.Show("Muavfaqiyatli ro'yxatdan o'tdingiz");
textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = textBox5.Text =
textBox6.Text = maskedTextBox1.Text = img = "";
this.Close();
new Bosh().Show();
}
else
{
MessageBox.Show("Bunday logindan allaqochon ro'yxatdan o'tilgan");
textBox5.Text = "";
}
}
else
{
MessageBox.Show("Parollar mos kelmayabdi");
textBox6.Text = textBox4.Text = "";
}
}

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}
}

private void button1_Click(object sender, EventArgs e)


{
try
{
openFileDialog1.Filter = "Select image(*.jpg;*.png;*.Gif)|*.jpg;*.png;*.Gif";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
img = openFileDialog1.FileName.ToString();
}
}

27
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
Malumot
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.Data.SqlClient;
using System.IO;
using System.Drawing.Printing;
using System.Windows.Forms;

namespace XodimHujjatlari
{
public partial class Malumot : Form
{
int id;
string admin;
SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\
MSSQLLocalDB;AttachDbFilename=C:\Users\ProBook\source\repos\XodimHujjatlari\XodimHujjatlari\
Database1.mdf;Integrated Security=True");
DataTable table = new DataTable();
public Malumot(int id,String admin)
{
this.id = id;
this.admin = admin;
InitializeComponent();
}

private void Malumot_Load(object sender, EventArgs e)


{
try
{
label5.Text = DateTime.Now.ToString("dd/MM/yyyy");
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = $"select i.id, i.familya+i.ism, w.pasport, i.tel, i.jins, i.tug,
i.manzil, w.lavozim, w.kelgan, " +

28
$"i.mehnat, i.mformat, i.fayl, i.format " +
$"from Ishchi i inner join Worker w on w.id=i.id where i.id={id}";
connection.Open();
this.table.Load(cmd.ExecuteReader());
connection.Close();
label1.Text = table.Rows[0][1] + " ma'lumotlari";
labelid.Text = table.Rows[0][0].ToString();
labelfish.Text = table.Rows[0][1].ToString();
labelps.Text = table.Rows[0][2].ToString();
labeltel.Text = table.Rows[0][3].ToString();
labeljins.Text = table.Rows[0][4].ToString();
labeldate.Text = table.Rows[0][5].ToString();
labelmanzil.Text = table.Rows[0][6].ToString();
labellav.Text = table.Rows[0][7].ToString();
labelish.Text = table.Rows[0][8].ToString();
DataTable oylik = new DataTable();
cmd.CommandText = $"select o.olgavVaqt, o.kun,o.miqdor from oylik o inner join Ishchi i on
i.id=o.ishchiId where i.id={id}";
connection.Open();
oylik.Load(cmd.ExecuteReader());
connection.Close();
for (int i=0; i<oylik.Rows.Count; i++)
{
Label l1 = new Label();
l1.Text = "Oylik olgan sana:";
l1.Font = label20.Font;
l1.Location = new Point(345, 500+(i*50));
l1.AutoSize = label20.AutoSize;
panel1.Controls.Add(l1);
Label l2 = new Label();
l2.Text = oylik.Rows[i][0].ToString();
l2.Font = label18.Font;
l2.Location = new Point(500, 500+i*50);
l2.ForeColor = Color.Blue;
l2.AutoSize = label18.AutoSize;
panel1.Controls.Add(l2);
Label l3 = new Label();
l3.Text = "Necha kun:";
l3.Font = label20.Font;
l3.Location = new Point(720, 500 + (i * 50));
l3.AutoSize = label20.AutoSize;
panel1.Controls.Add(l3);
Label l4 = new Label();
l4.Text = oylik.Rows[i][1].ToString();
l4.Font = label18.Font;
l4.Location = new Point(820, 500 + i * 50);
l4.ForeColor = Color.Blue;
l4.AutoSize = label18.AutoSize;

29
panel1.Controls.Add(l4);
Label l5 = new Label();
l5.Text = "Oylik miqdori:";
l5.Font = label20.Font;
l5.Location = new Point(920, 500 + (i * 50));
l5.AutoSize = label20.AutoSize;
panel1.Controls.Add(l5);
Label l6 = new Label();
l6.Text = oylik.Rows[i][2].ToString();
l6.Font = label18.Font;
l6.Location = new Point(1042, 500 + i * 50);
l6.ForeColor = Color.Blue;
l6.AutoSize = label18.AutoSize;
panel1.Controls.Add(l6);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}

private void pictureBox3_Click(object sender, EventArgs e)


{
try
{
var name = table.Rows[0][1].ToString();
var mehnat = (Byte[])(table.Rows[0][9]);
var mformat = table.Rows[0][10];
var newFileName = name + mformat;
File.WriteAllBytes(newFileName, mehnat);
System.Diagnostics.Process.Start(newFileName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void pictureBox2_Click(object sender, EventArgs e)


{
try
{
var name = table.Rows[0][1].ToString();
var fayl = (Byte[])(table.Rows[0][11]);
var format = table.Rows[0][12];

30
var newFileName = name + format;
File.WriteAllBytes(newFileName, fayl);
System.Diagnostics.Process.Start(newFileName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Bitmap bmp;
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
Rectangle reg = e.PageBounds;
e.Graphics.DrawImage(bmp, (reg.Width / 2) - (this.panel1.Width / 2),
this.panel1.Location.Y+50);
}

private void pictureBox1_Click_1(object sender, EventArgs e)


{
panel1.Visible = true;
}

private void button4_Click(object sender, EventArgs e)


{
panel1.Visible = false;
}

private void pictureBox4_Click(object sender, EventArgs e)


{
bmp = new Bitmap(panel1.Width + 1000, panel1.Height);
panel1.DrawToBitmap(bmp, new Rectangle(0, 0, panel1.Width, panel1.Height));
printPreviewDialog1.ShowDialog();
}

private void button1_Click(object sender, EventArgs e)


{
this.Close();
new Admin(admin).Show();
}
}
}
Oylik
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;

31
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace XodimHujjatlari
{
public partial class oylik : Form
{
int id, ishId;
bool ishchi = true;
DataTable qiymat;
SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\
MSSQLLocalDB;AttachDbFilename=C:\Users\ProBook\source\repos\XodimHujjatlari\XodimHujjatlari\
Database1.mdf;Integrated Security=True");
public oylik(int id)
{
this.id = id;
InitializeComponent();
}

private void oylik_Load(object sender, EventArgs e)


{
try
{
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = $"select * from Hisobchi where id={id}";
DataTable kim = new DataTable();
connection.Open();
kim.Load(cmd.ExecuteReader());
connection.Close();
label1.Text = kim.Rows[0][4] + " " + kim.Rows[0][3] + " profilingizga xush kelibsiz";
cmd.CommandText = $"select i.id,i.ism+i.familya as 'Ism familiya', i.tel as 'telefon
nomer',lavozim as 'Lavozimi' from Ishchi i inner join Worker w on i.id=w.id ";
DataTable data = new DataTable();
connection.Open();
data.Load(cmd.ExecuteReader());
connection.Close();
dataGridView1.DataSource = data;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}
}

32
private void button1_Click(object sender, EventArgs e)
{
try
{
ishchi = true;
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = $"select i.id,i.ism+i.familya as 'Ism familiya', i.tel as 'telefon
nomer',lavozim as 'Lavozimi' from Ishchi i inner join Worker w on i.id=w.id ";
DataTable data = new DataTable();
connection.Open();
data.Load(cmd.ExecuteReader());
connection.Close();
dataGridView1.DataSource = data;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}
}

private void button2_Click(object sender, EventArgs e)


{
try
{
ishchi = false;
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = $"select i.id,i.ism+i.familya as 'Ism familiya', o.olgavVaqt as 'Oxirgi
oylik sanasi',o.kun as 'Ish kuni', o.miqdor as 'Oylik miqdori(so`m)', h.familya+h.ism as 'Oylik chiqargan
hisobchi' from oylik o inner join Ishchi i on i.id=ishchiId inner join Hisobchi h on h.id=o.hisobchiId";
DataTable data = new DataTable();
connection.Open();
data.Load(cmd.ExecuteReader());
connection.Close();
dataGridView1.DataSource = data;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}
}

private void button6_Click(object sender, EventArgs e)


{

33
try
{
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
if (ishchi)
{
cmd.CommandText = $"select i.id,i.ism+i.familya as 'Ism familiya', i.tel as 'telefon
nomer',lavozim as 'Lavozimi' from Ishchi i inner join Worker w on i.id=w.id " +
$"where (i.ism like '%{textBox2.Text}' or i.ism like '%{textBox2.Text}%' or i.ism
like '{textBox2.Text}%' or i.familya like '%{textBox2.Text}' or i.familya like '%{textBox2.Text}%' or i.familya
like '{textBox2.Text}%')";
}
else
cmd.CommandText = $"select i.id,i.ism+i.familya as 'Ism familiya', o.olgavVaqt as
'Oxirgi oylik sanasi',o.kun as 'Ish kuni', o.miqdor as 'Oylik miqdori(so`m)', h.familya+h.ism as 'Oylik chiqargan
hisobchi' from oylik o inner join Ishchi i on i.id=ishchiId inner join Hisobchi h on h.id=o.hisobchiId " +
$"where (i.ism like '%{textBox2.Text}' or i.ism like '%{textBox2.Text}%' or i.ism
like '{textBox2.Text}%' or i.familya like '%{textBox2.Text}' or i.familya like '%{textBox2.Text}%' or i.familya
like '{textBox2.Text}%')";
DataTable data = new DataTable();
connection.Open();
data.Load(cmd.ExecuteReader());
connection.Close();
dataGridView1.DataSource = data;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)


{

try
{
if (e.RowIndex != -1 && e.RowIndex != dataGridView1.Rows.Count - 1 && ishchi)
{
ishId =int.Parse( dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
textBox6.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
ishchi = false;
SqlCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = $"select i.id,i.ism+i.familya as 'Ism familiya', o.olgavVaqt as
'Oxirgi oylik sanasi',o.kun as 'Ish kuni', o.miqdor as 'Oylik miqdori(so`m)', h.familya+h.ism as 'Oylik chiqargan

34
hisobchi' from oylik o inner join Ishchi i on i.id=ishchiId inner join Hisobchi h on h.id=o.hisobchiId where
i.id={dataGridView1.Rows[e.RowIndex].Cells[0].Value}";
DataTable data = new DataTable();
connection.Open();
data.Load(cmd.ExecuteReader());
connection.Close();
dataGridView1.DataSource = data;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
connection.Close();
}
}

private void button4_Click(object sender, EventArgs e)


{
this.Close();
new Bosh().Show();
}
}
}

35

Вам также может понравиться