Войти Регистрация

Docx

  • Рефераты
  • Дипломные работы
  • Прочее
    • Презентации
    • Рефераты
    • Курсовые работы
    • Дипломные работы
    • Диссертациии
    • Образовательные программы
    • Инфографика
    • Книги
    • Тесты

Информация о документе

Цена 10000UZS
Размер 1,011.7KB
Покупки 0
Дата загрузки 06 Ноябрь 2026
Расширение pdf
Раздел Курсовые работы
Предмет Экономика

Продавец

Bohodir Jalolov

Savdo avtomatlarini boshqarish va mahsulot hisobini yuritish

Купить
O‘	ZBEKISTON	 RESPUBLIKASI	 	
OLIY	 TA	’LIM,	 FAN	 VA	 INNOVATSIYALAR	 VAZIRLIGI	 	
SHAROF	 RASHIDOV	 NOMIDAGI	 SAMARQAND	 DAVLAT	 	
UNIVERSITETI	 	
 
 	
MATEMATIKA	 FAKULTETI	 	
AMALIY	 MATEMATIKA	 Y	O‘	NALISHI	 	
207	-GURUH	 TALABASI	 	
KARIMOV	  LOCHINBEK	NING	 	
ALGORITMIK	 TILLAR	 VA	 DASTURLASH	 FANIDAN	 	
“SAVDO	  AVTOMATLARINI	  BOSHQARISH	  VA	  MAHSULOT	 	
HISOBINI	  YURITISH	 DASTUR	  ILOVASINI	  YARATISH	” 	
MAVZUSIDA	 TAYYORLAGAN	 	
 
 
KURS	 	ISHI	 	
 
 
 
Tekshirdi:	 Meliyev	 F.	 	
 
 
SAMARQAND	 – 202	5 	
 
 
 	
 	  2 	
 	
Reja:	 	
Kirish	 	
1.	 	Savdo	 avtomatlari	 orqali	 savdo	 qilish	 sohasining	 faoliyati	 bilan	 	
tanishish	 va	 ma	’lumotlarni	 tayyorlash	  	
2.	 	Savdo	 avtomatlarini	 boshqarish	 uchun	 m	o‘	ljallangan	 dastur	 	
ilovasining	 grafik	 dizaynini	 ishlab	 chiqish	 va	 loyihalash	 	
3.	 	Ilovaning	 funksional	 imkoniyatlarini	 shakllantirish	 	
4.	 	Ilovaga	 ma	’lumotlarni	 kiritish	, natijalar	 olish	 va	 testlash	 	
Xulosa	 	
 	  3 	
 	
Kirish	 	
Savdo	 avtomatlari	 (vending	 mashinalari)	 bugungi	 kunda	 keng	 tarqalgan	 	
bo‘	lib,	 ularni	 samarali	 boshqarish	 muhim	 vazifaga	 aylangan.	 Mahsulot	 qoldiqlarini	 	
qo‘	lda	 kuzatish,	 hisob	-kitob	 qilish	 va	 to‘	ldirish	 jarayonlari	 ko‘	p vaqt	 talab	 etadi	 va	 	
xatoliklarga	 olib	 kelishi	 mumkin.	 Shu	 bois,	 ushbu	 jarayonlarni	 avtomatlashtirish	 	
dolzarb	 masala	 hisoblanadi.	 	
Ushbu	 kurs	 ishi	m	ning	 asosiy	 maqsadi	 – C++/CLI	 va	 Windows	 Forms	 asosida	 	
savdo	 avtomatlaridagi	 mahsulotlar	 (nomi,	 narxi,	 soni,	 kodi)	 hisobini	 yuritish	 va	 	
soddalashtirilgan	 savdo	 jarayonini	 amalga	 oshirish	 uchun	 dasturiy	 ilova	 yaratishdir.	 	
Mazkur	 ilova	 Microsoft	 Visual	 Studio	 2015	 dasturlash	 muhitida	 ishlab	 	
chiqilgan.	 Ilova	 mahsulotlarni	 qo‘	shish,	 tahrirlash,	 o‘	chirish,	 ro‘	yxatni	 ko‘	rish,	 	
ma	’lumotlarni	 faylga	 saqlash	 hamda	 virtual	 savdo	 orqali	 umumiy	 narxni	 hisoblash	 	
imkoniyatlarini	 taqdim	 etadi.	 	
Bunday	 dasturning	 ahamiyati	 shundaki,	 u vending	 biznesida	 mahsulotlar	 	
boshqaruvini	 optimallashtiradi,	 inventarizatsiyani	 osonlashtiradi,	 mahsulotlarning	 	
o‘	z vaqtida	 to‘	ldirilishini	 ta	’minlaydi	 va	 natijada	 sotuv	 samaradorligini	 oshiradi.	 	
Raqamli	 hisob	-kitob	 kelajakdagi	 tahlillar	 va	 strategik	 qarorlar	 uchun	 asos	 yaratadi.	 	
Kelajakda	 bu	 kabi	 dasturlarni	 yanada	 takomillashtirish	 mumkin.	 Bunga	 real	 	
vaqt	 rejimida	 ishlaydigan	 IoT	-integratsiyasi	 (mahsulot	 qoldi	g‘	i va	 texnik	 holatni	 	
avtomatik	 kuzatish),	 xodimlar	 uchun	 mobil	 ilovalar,	 naqd	 pulsiz	 to‘	lov	 tizimlari	 	
bilan	 integratsiya	 hamda	 chuqurlashtirilgan	 tahliliy	 hisobotlar	 kabi	 funksiyalarni	 	
qo‘	shish	 kiradi.	 	
Umuman,	 	vending	 	sohasida	 	nafaqat	 	hisob	-kitob,	 	balki	 	mijozlar	 	bilan	 	
interaktiv	 aloqa,	 masofadan	 boshqaruv	 va	 marketing	 vositalarini	 o‘	z ichiga	 olgan	 	
kompleks	 dasturiy	 majmualarga	 ehtiyoj	 mavjud.	 Ushbu	 kurs	 ishida	 yaratilgan	 ilova	 	
ana	 shunday	 zamonaviy	 yechimlarni	 ishlab	 chiqish	 yo‘	lidagi	 dastlabki,	 ammo	 	
muhim	 qadamdir	 va	 sohani	 raqamlashtirishning	 ahamiyatini	 ko‘	rsatadi.	 	
 	
 	  4 	
 	
1.	 Savdo	 avtomatlari	 orqali	 savdo	 qilish	 sohasining	 faoliyati	 bilan	 	
tanishish	 va	 ma	’lumotlarni	 tayyorlash	 	
1.1.	 Avtomatik	 savdo	 qurilmalari:	 umumiy	 tushuncha	 va	 faoliyat	 	
jarayonlari	 	
Savdo	 avtomatlari	 – bu	 maxsus	 qurilmalar	 orqali	 turli	 xil	 mahsulotlarni	 	
(odatda	 ichimliklar,	 yeguliklar,	 gazaklar)	 mijozlarga	 vositachisiz,	 avtomatik	 tarzda	 	
sotish	 tizimidir.	 Ushbu	 savdo	 modeli	 qulayligi,	 24/7	 ishlash	 imkoniyati	 va	 kam	 	
xodim	 talab	 etishi	 bilan	 ajralib	 turadi.	 Savdo	 avtomatlari	 orqali	 savdo	 qilish	 asosan	 	
quyidagi	 asosiy	 faoliyat	 jarayonlarini	 o‘	z ichiga	 oladi:	 	
1.	 	Joylashuvni	 tanlash	 va	 o‘	rnatish:	 Qurilmalarni	 odamlar	 gavjum	 	
joylarga	 (ofis	 markazlari,	 o‘	quv	 yurtlari,	 kasalxonalar,	 transport	 bekatlari,	 savdo	 	
majmualari)	 o‘	rnatish	 muhim.	 Joylashuv	 apparatning	 daromadligiga	 bevosita	 ta	’sir	 	
qiladi.	 
2.	 	Mahsulot	 assortimentini	 shakllantirish:	 Muayyan	 joylashuvdagi	 	
potensial	 mijozlar	 ehtiyojlariga	 mos	 mahsulotlarni	 tanlash.	 	
3.	 	Mahsulot	 bilan	 ta	’minlash	 (T	o‘	ldirish):	 Qurilmalardagi	 mahsulot	 	
qoldiqlarini	 muntazam	 tekshirish	 va	 kam	 qolgan	 mahsulotlar	 bilan	 o‘	z vaqtida	 	
to‘	ldirib	 borish.	 	
4.	 	Naqd	 pulni	 yi	g‘	ish	 va	 hisob	-kitob:	 Apparatlardan	 tushgan	 naqd	 pulni	 	
yi	g‘	ib	 olish	 va	 hisoblash	 (agar	 mavjud	 bo‘	lsa),	 elektron	 tushumlarni	 nazorat	 qilish.	 	
5.	 	Texnik	 xizmat	 ko‘	rsatish	 va	 ta	’mirlash:	 Qurilmalarning	 soz	 holatda	 	
ishlashini	 ta	’minlash,	 tozalash,	 nosozliklarni	 bartaraf	 etish.	 	
6.	 	Monitoring	 va	 tahlil:	 Har	 bir	 savdo	 apparatining	 savdo	 hajmini,	 qaysi	 	
mahsulotlar	 ko‘	proq/kamroq	 sotilayotganini	 kuzatib	 borish	 va	 tahlil	 qilish.	 	
1.2.	 Sohada	 ishlanadigan	 m	a’lumotlar	 turlari	 	
Avtomatik	 savdo	 qurilmalari	 orqali	 savdoni	 samarali	 boshqarish	 uchun	 turli	 	
xil	 ma	’lumotlarni	 yi	g‘	ish,	 qayta	 ishlash	 va	 saqlash	 talab	 etiladi.	 Asosiy	 ma	’lumot	 	
turlari:	 
Mahsulot	 haqida	 ma	’lumotlar:	 Nomi	 (Nomi	), kodi	 (Kodi	), sotish	 narxi	 	
(Narxi	), qoldiq	 soni	 (Soni	 - bu	 dasturda	 soddalashtirilgan	). 	
Savdo	 apparati	 haqida	 ma	’lumotlar:	 Qurilma	 identifikatori,	 joylashgan	 	
manzili,	 modeli,	 sig‘	imi,	 texnik	 holati	 (bu	 dasturda	 to‘	liq	 qamrab	 olinmagan	). 	
 
Savdo	 (Tranzaksiya)	 ma	’lumotlari:	 Sotilgan	 mahsulot,	 miqdori	 (Miqdor	), 	
savdo	 vaqti,	 umumiy	 summa	 (Jami	 narx	). 	
Inventarizatsiya	 (Qoldiq)	 ma	’lumotlari:	 Har	 bir	 apparatdagi	 har	 bir	 	
mahsulotning	 	aniq	 joriy	 	qoldi	g‘	i 	(dasturda	 	"Soni"	 	umumiy	 	atribut	 	sifatida	 	
kiritilgan	).  5 	
 	
Moliyaviy	 ma	’lumotlar:	 Tushumlar,	 xarajatlar.	 	
1.3.	 Ma	’lumotlarni	 saqlash	 zarurati	 va	 qiyinchiliklar	 	
Samarali	 faoliyat	 uchun	 mahsulot	 katalogi,	 apparatlar	 ro‘	yxati,	 savdo	 tarixi	 va	 	
ayniqsa,	 qoldiqlar	 hisobini	 aniq	 yuritish	 shart.	 An	’anaviy	 (dastursiz)	 boshqaruvda	 	
qoldiqni	 aniqlash	 qiyin,	 ma	’lumotlar	 tarqoq	 bo‘	ladi,	 tahlil	 qilish	 murakkab	 va	 inson	 	
omili	 tufayli	 xatolar	 yuzaga	 keladi.	 Bu	 vaqt	 va	 resurs	 yo‘	qotilishiga	 olib	 keladi.	 	
Shuning	 uchun	 bu	 jarayonlarni	 avtomatlashtiruvchi	 dasturiy	 ta	’minotga	 ehtiyoj	 	
katta.	 
1.4.	 Natija	 sifatida	 olinishi	 kerak	 bo‘	lgan	 m	a’lumotlar	 	
Samarali	 boshqaruv	 tizimi	 (jumladan,	 ishlab	 chiqilgan	 dasturiy	 ilova)	 	
quyidagi	 natijalarni	 taqdim	 etishi	 kerak:	 	
Mavjud	 mahsulotlar	 ro‘	yxati	 (nomi,	 narxi,	 kodi,	 soni).	 	
Savdo	 jarayoni	 natijalari	 (tanlangan	 mahsulotlar,	 miqdori,	 umumiy	 narxi).	 	
Ma	’lumotlarni	 tashqi	 faylda	 (masalan,	 CSV)	 saqlash	 imkoniyati.	 	
Ma	’lumotlarni	 jadval	 ko‘	rinishida	 tasvirlash	 (ushbu	 dastur	 uchun	 	
m	uhim):	 	
Ushbu	 kurs	 ishida	 ishlab	 chiqilgan	 dastur	 asosan	 quyidagi	 ma	’lumotlar	 bilan	 	
ishlaydi	 va	 ularni	 saqlashga	 qaratilgan:	 	
Dasturning	 MyForm	 oynasida	 mahsulot	 ma	’lumotlari	 quyidagicha	 qayta	 	
ishlanadi	 va	 saqlanadi:	 	
Mahsulotning	 Nomi	 textBox1	 komponentasiga	 kiritiladi	 va	 dataGridView1	 	
jadvalining	 birinchi	 ustunida	 (indeks	 0)	 saqlanadi.	 	
Mahsulotning	 Narxi	 textBox2	 komponentasiga	 kiritiladi	 va	 dataGridView1	 	
jadvalining	 ikkinchi	 ustunida	 (indeks	 1)	 aks	 etadi.	 	
Mahsulotning	 Soni	 (bu	 dasturda	 soddalashtirilgan	 bo‘	lib,	 aniq	 qoldiq	 emas,	 	
balki	 umumiy	 son	 yoki	 partiya	 hajmini	 ifodalashi	 mumkin)	 textBox3	 ga	 kiritiladi	 va	 	
dataGridView1	 jadvalining	 uchinchi	 ustunida	 (indeks	 2)	 ko‘	rsatiladi.	 	
 
Mahsulotni	 noyob	 aniqlash	 uchun	 m	o‘	ljallangan	 Kodi	 textBox4	 ga	 kiritiladi	 	
va	 dataGridView1	 jadvalining	 to‘	rtinchi	 ustunida	 (indeks	 3)	 saqlanadi.	 	
MyForm1	 (Savdo	 jarayoni)	 oynasida	 esa	 quyidagi	 ma	’lumotlar	 bilan	 	
ishlanadi:	 	
Mavjud	 mahsulotlar	 ro‘	yxatidan	 keraklisi	 listBox1	 komponentasi	 orqali	 	
tanlanadi.	 	
Mijoz	 	tomonidan	 	tanlangan	 	sotib	 	olinadigan	 	miqdor	 	textBox1	 	
komponentasiga	 kiritiladi.	 	
Tanlangan	 mahsulot,	 uning	 miqdori	 va	 hisoblangan	 oraliq	 jami	 narxi	 	
(mahsulot	 narxi	 x miqdor)	 listView1	 komponentasida,	 mos	 ravishda,	 birinchi,	  6 	
 
ikkinchi	 va	 uchinchi	 ustunlarda	 ko‘	rsatiladi	 (kodda	 miqdor	 1-ustun,	 narx	 2-ustunda	 	
ko‘	rsatilgan).	 	
Savatchadagi	 barcha	 mahsulotlarning	 hisoblangan	 umumiy	 jami	 narxi	 	
label4	 komponentasida	 aks	 ettiriladi.	 	
1.5.	 Dasturiy	 ilovada	 foydalanilgan	 asosiy	 komponentlar	 	
Ushbu	 dasturiy	 ilovani	 Microsoft	 Visual	 Studio	 2015	 muhitida	 C++/CLI	 va	 	
Windows	 Forms	 kutubxonasi	 yordamida	 yaratishda	 quyidagi	 asosiy	 vizual	 va	 	
funksional	 komponentlardan	 foydalanildi:	 	
Form	: Dasturning	 asosiy	 oynalarini	 (MyForm	, MyForm1	, MyForm2	) 	
yaratish	 uchun	 asos	 bo‘	lib	 xizmat	 qiladi.	 	
Label	: Matnli	 yozuvlarni	 ("Nomi:",	 "Narxi:",	 "Jami	 narx:"	 kabi)	 ekranga	 	
chiqarish	 uchun	 ishlatilgan.	 	
TextBox	: Foydalanuvchi	 ma	’lumotlarni	 (mahsulot	 nomi,	 narxi,	 soni,	 kodi,	 	
miqdori)	 kiritishi	 uchun	 maydonlar	 yaratadi.	 	
Button	: Muayyan	 amallarni	 ("Q	o‘	shish",	 "Saqlash",	 "O‘	chirish",	 "Ortga"	 va	 	
h.k.)	 bajarish	 uchun	 bosiladigan	 tugmalar.	 	
DataGridView	: Ma	’lumotlarni	 jadval	 ko‘	rinishida	 ko‘	rsatish	 va	 ular	 bilan	 	
ishlash	 (tanlash,	 qo‘	shish)	 uchun	 ishlatilgan	 (MyForm	dagi	 mahsulotlar	 ro‘	yxati).	 	
ListBox	: Ro‘	yxat	 shaklidagi	 ma	’lumotlarni	 ko‘	rsatish	 va	 ulardan	 birini	 	
tanlash	 imkonini	 beradi	 (MyForm1	dagi	 mahsulotlar	 ro‘	yxati).	 	
ListView	: Elementlarni	 batafsilroq	 (ustunlar	 bilan)	 ro‘	yxat	 ko‘	rinishida	 aks	 	
ettirish	 uchun	 ishlatilgan	 (MyForm1	dagi	 savatcha).	 	
PictureBox	: Rasmlarni	 ko‘	rsatish	 uchun	 m	o‘	ljallangan	 maydon	 (MyForm2	). 	
FolderBrowserDialog	: 	Papka	 	tanlash	 	uchun	 	standart	 	dialog	 	oynasi	 	
(MyForm2	). 	
Fayll	a bilan ishlash	 vositalari	 (StreamWriter	, Directory	 klasslari):	 	
Ma	’lumotlarni	 CSV	 fayliga	 yozish	 va	 papkadagi	 fayllar	 ro‘	yxatini	 olish	 uchun	 	
foydalanilgan.	 	
1.	 	Savdo	 avtomatlarini	 boshqarish	 uchun	 m	o‘	ljallangan	 dastur	 	
ilovasining	 grafik	 dizaynini	 ishlab	 chiqish	 va	 loyihalash	 	
2.1.	 Dastur	 interfeysining	 umumiy	 tuzilishi	 	
Savdo	 	avtomatlarini	 	boshqarish	 	va	 	mahsulot	 	hisobini	 	yuritish	 	uchun	 	
m	o‘	ljallangan	 ushbu	 dasturiy	 ilova	 foydalanuvchiga	 qulay	 va	 tushunarli	 interfeys	 	
taqdim	 etish	 maqsadida	 Microsoft	 Visual	 Studio	 2015	 muhitida	 C++/CLI	 va	 	
Windows	 Forms	 texnologiyalari	 asosida	 loyihalandi.	 Dastur	 mantiqiy	 jihatdan	 	
ajratilgan	 vazifalarni	 bajaruvchi	 uchta	 asosiy	 oynadan	 (formadan)	 tashkil	 topgan:	 	
1.	 	MyForm	 (Asosiy	 oyna):	 Mahsulotlarni	 boshqarish	 markazi.	  7 	
 	
2.	 	MyForm1	 (Savdo	 jarayoni	 oynasi):	 Savdo	 jarayonini	 simulyatsiya	 	
qilish	 va	 tanlangan	 mahsulotlar	 ro‘	yxatini	 shakllantirish	 oynasi.	 	
3.	 	MyForm2	 (Rasmlar	 oynasi):	 Q	o‘	shimcha	 vizual	 ma	’lumotlarni	 	
(masalan,	 mahsulot	 rasmlarini)	 ko‘	rish	 oynasi.	 	
Bu	 oynalar	 o‘	rtasida	 ma	’lumot	 almashinuvi	 va	 navigatsiya	 foydalanuvchi	 	
amallari	 (tugmalarni	 bosish)	 orqali	 amalga	 oshiriladi.	 Har	 bir	 oyna	 o‘	z vazifasiga	 	
mos	 ravishda	 maxsus	 boshqaruv	 elementlari	 (komponentalar)	 bilan	 jihozlangan.	 	
2.2.	 MyForm	 - m	ahsulotlarni	 boshqarish	 oynasi	 dizayni	 	
Bu	 oyna	 dasturning	 asosiy	 boshqaruv	 markazi	 bo‘	lib,	 savdo	 avtomatlariga	 	
yuklanadigan	 mahsulotlar	 haqidagi	 ma	’lumotlarni	 kiritish,	 ko‘	rish,	 tahrirlash,	 	
o‘	chirish	 va	 saqlash	 vazifalarini	 bajaradi.	 	
Maqsadli	 vazifalari:	 Mahsulot	 ma	’lumotlarini	 markazlashtirilgan	 holda	 	
boshqarish	 (CRUD	 - Create,	 Read,	 Update,	 Delete	 amallari	 uchun	 asosiy	 interfeys).	 	
Grafik	 dizayn	 va	 komponentalar:	 	
Oynaning	 sarlavhasi	 label1	 ("Mahsulotlar	 boshqaruvi")	 orqali	 ko‘	rsatilgan.	 	
Ma	’lumot	 kiritish	 bloki	 (chap	 taraf):	 	
 
Label	 komponentalari	 ("Nomi:",	 "Narxi:",	 "Soni:",	 "Kodi:")	 yordamida	 	
kiritilishi	 kerak	 bo‘	lgan	 ma	’lumot	 turlari	 ko‘	rsatilgan.	 	
TextBox	 komponentalari	 (textBox1	 dan	 textBox4	 gacha)	 foydalanuvchi	 	
mahsulotning	 nomi,	 narxi,	 soni	 va	 kodini	 kiritishi	 uchun	 maydonlar	 vazifasini	 	
bajaradi.	 	
Ma	’lumotlarni	 ko‘	rsatish	 bloki	 (o‘	ng	 taraf):	 	
DataGridView	 	(dataGridView1	) 	komponentasi	 	kiritilgan	 	mahsulotlar	 	
ro‘	yxatini	 jadval	 ko‘	rinishida	 (Ustunlar:	 "Mahsulot	 nomi:",	 "Narxi:",	 "Soni:",	 	
"Kodi:")	 aks	 ettiradi.	 Bu	 komponent	 ma	’lumotlarni	 ko‘	rish	 (Read)	 va	 keyinchalik	 	
tahrirlash	 yoki	 o‘	chirish	 uchun	 qator	 tanlash	 imkonini	 beradi.	 	
Boshqaruv	 tugmalari	 bloki	 (pastki	 qism	 va	 chap	 taraf):	 	
Button	 komponentalari	 asosiy	 amallarni	 bajarish	 uchun	 xizmat	 qiladi:	 	
"Q	o‘	shish"	 (button1	): Chapdagi	 TextBox	 larga	 kiritilgan	 ma	’lumotlarni	 	
DataGridView	 ga	 yangi	 qator	 sifatida	 qo‘	shadi	 (Create).	 	
"Tahrirlash"	 (button2	): DataGridView	 da	 tanlangan	 qator	 ma	’lumotlarini	 	
tahrirlash	 uchun	 chapdagi	 TextBox	 larga	 yuklaydi	 (Update	 uchun	 tayyorgarlik).	 	
"O‘	chirish"	 (button3	): DataGridView	 dan	 tanlangan	 qatorni	 olib	 tashlaydi	 	
(Delete).	 	
"Saqlash"	 (button4	): DataGridView	 dagi	 joriy	 ma	’lumotlarni	 tashqi	 faylga	 	
("mahsulot.csv")	 saqlaydi.	  8 	
 	
"Savdo	 	jarayoniga	 	o‘	tish"	 	(button5	): 	MyForm1	 	oynasini	 	ochadi	 	
(navigatsiya).	 	
"Yopish"	 (button6	): Dasturdan	 chiqishni	 ta	’minlaydi.	 	
Vizual	 	ko‘	rinish:	 	Oyna	 	uchun	 	och	 	ko‘	k 	fon	 	(BackColor	 	= 	
Color::	FromArgb(192,	 255,	 255)	) tanlangan.	 Tugmalar	 funksiyalariga	 ko‘	ra	 turli	 	
ranglarda	 (firuza,	 sariq,	 och	 to‘	q sariq,	 qizil)	 ajratilgan,	 bu	 esa	 foydalanuvchiga	 	
vizual	 yo‘	nalish	 beradi.	 Elementlar	 mantiqiy	 guruhlangan	 holda	 joylashtirilgan.	 	
 	
 	
2.3.	 MyForm1	 - savdo	 jarayoni	 oynasi	 dizayni	 	
Bu	 oyna	 mijoz	 tomonidan	 mahsulot	 tanlash	 va	 xarid	 qilish	 jarayonini	 	
soddalashtirilgan	 holda	 simulyatsiya	 qilish	 uchun	 m	o‘	ljallangan.	 	
Maqsadli	 vazifalari:	 Mavjud	 mahsulotlar	 ro‘	yxatini	 ko‘	rsatish,	 ulardan	 	
tanlash,	 miqdorini	 belgilash,	 virtual	 savatchaga	 qo‘	shish	 va	 umumiy	 narxni	 	
hisoblash.	 	
Grafik	 dizayn	 va	 komponentalar:	 	
Oyna	 sarlavhasi	 label3	 ("Savdo	 jarayoni")	 orqali	 ifodalangan.	 	
Mahsulotlar	 ro‘	yxati	 bloki	 (chap	 taraf):	 	
label1	 ("Mahsulotlar	 ro‘	yxati")	 blokka	 nom	 beradi.	 	
ListBox	 (listBox1	) komponentasi	 sotuvdagi	 mahsulotlar	 ro‘	yxatini	 (nomi	 va	 	
narxi	 bilan)	 ko‘	rsatadi.	 Foydalanuvchi	 bu	 yerdan	 kerakli	 mahsulotni	 tanlashi	 	
mumkin.	 	
label2	 ("Soni:")	 va	 textBox1	 (TextBox	) tanlangan	 mahsulot	 uchun	 sotib	 	
olinadigan	 miqdorni	 kiritish	 imkonini	 beradi.	  9 	
 	
Savatcha	 bloki	 (o‘	ng	 taraf):	 	
ListView	 (listView1	) komponentasi	 virtual	 savatcha	 vazifasini	 bajaradi.	 U	 	
tanlangan	 	mahsulotlarni	 	"Nomi",	 	"Miqdor",	 	"Narxi"	 	ustunlari	 	bilan	 	batafsil	 	
ko‘	rinishda	 (View	 = View::Details	) aks	 ettiradi.	 	
label4	 ("Jami	 narx:")	 savatchadagi	 mahsulotlarning	 umumiy	 hisoblangan	 	
narxini	 ko‘	rsatish	 uchun	 xizmat	 qiladi.	 	
Boshqaruv	 tugmalari	 bloki	 (pastki	 qism):	 	
Button	 komponentalari:	 	
"Q	o‘	shish"	 (button1	): ListBox	 dan	 tanlangan	 va	 textBox1	 da	 miqdori	 	
ko‘	rsatilgan	 mahsulotni	 ListView	 ga	 qo‘	shadi.	 	
"Ortga"	 (button3	): Joriy	 oynani	 yopib,	 MyForm	 ga	 qaytishni	 ta	’minlaydi	 	
(navigatsiya).	 	
"Jami	 narx"	 (button2	): ListView	 dagi	 mahsulotlar	 asosida	 umumiy	 summani	 	
hisoblab,	 label4	 da	 ko‘	rsatadi.	 	
"Savdo	 rasmlari	 formasi"	 (button4	): MyForm2	 oynasini	 ochadi	 (navigatsiya).	 	
Vizual	 	ko‘	rinish:	 	Oyna	 	uchun	 	och	 	pushti	 	fon	 	(BackColor	 	= 	
Color::FromArgb(255,	 192,	 255)	) ishlatilgan.	 Komponentlar	 ikki	 asosiy	 qismga	 – 	
mahsulot	 tanlash	 va	 savatcha	 – ajratilgan.	 Boshqaruv	 tugmalari	 (havorang)	 pastki	 	
qismda	 jamlangan.	 	
 	
  10	 	
 	
 
2.4.	 MyForm2	 - savdo	 jarayoni	 rasmlari	 oynasi	 dizayni	 	
Bu	 yordamchi	 oyna	 bo‘	lib,	 savdo	 jarayoni	 bilan	 bo	g‘	liq	 rasmlarni	 (masalan,	 	
mahsulotlarning	 tashqi	 ko‘	rinishi	 yoki	 reklama	 materiallari)	 ko‘	rish	 imkonini	 	
beradi.	 
Maqsadli	 vazifalari:	 Tanlangan	 papkadagi	 rasmlarni	 ko‘	rsatish	 va	 ular	 	
orasida	 harakatlanish	 (navigatsiya).	 	
Grafik	 dizayn	 va	 komponentalar:	 	
Oyna	 sarlavhasi	 label1	 ("Savdo	 jarayoni	 rasmlari")	 orqali	 ko‘	rsatilgan.	 	
Rasm	 ko‘	rsatish	 bloki	 (markaziy	 qism):	 	
PictureBox	 (pictureBox1	) komponentasi	 asosiy	 maydonni	 egallaydi	 va	 	
tanlangan	 rasmni	 aks	 ettiradi.	 	
label2	 (Label	) joriy	 ko‘	rsatilayotgan	 rasmning	 tartib	 raqamini	 (va	 ba	’zan	 	
umumiy	 sonini)	 ko‘	rsatish	 uchun	 ishlatilishi	 mumkin.	 	
Boshqaruv	 tugmalari	 bloki	 (pastki	 qism):	 	
Button	 komponentalari:	 	
"PAPKANI	 TANLASH"	 (button1	): Foydalanuvchiga	 rasmlar	 joylashgan	 	
papkani	 tanlash	 uchun	 FolderBrowserDialog	 oynasini	 ochadi.	 	
"<"	 (button2	): Oldingi	 rasmga	 o‘	tish.	 	
">"	 (button3	): Keyingi	 rasmga	 o‘	tish.	 	
"Ortga	 qaytish"	 (button4	): Joriy	 oynani	 yopib,	 MyForm1	 ga	 qaytishni	 	
ta	’minlaydi	 (navigatsiya).	 	
Vizual	 ko‘	rinish:	 Oyna	 uchun	 och	 sar	g‘	ish/t	o‘	q sariq	 fon	 (BackColor	 = 	
Color::FromArgb(255,	 224,	 192)	) tanlangan.	 Asosiy	 ur	g‘	u rasmni	 ko‘	rsatish	 	
maydoniga	 berilgan.	 Navigatsiya	 va	 boshqaruv	 tugmalari	 (binafsha/k	o‘	k va	 to‘	q 	
sariq	 ranglarda)	 pastki	 qismda	 joylashgan.	 	
 
 
 
 	
  11	 	
 	
2.5.	 Oynalararo	 aloqa	 va	 umumiy	 dizayn	 yondashuvi	 	
Dastur	 oynalari	 o‘	rtasidagi	 aloqa	 asosan	 tugmalar	 orqali	 amalga	 oshiriladi:	 	
MyForm	 dan	 MyForm1	 ga,	 MyForm1	 dan	 MyForm2	 ga	 o‘	tiladi.	 Shuningdek,	 	
MyForm1	 dan	 MyForm	 ga	 va	 MyForm2	 dan	 MyForm1	 ga	 qaytish	 imkoniyati	 	
mavjud.	 MyForm	 da	 kiritilgan	 va	 saqlangan	 ma	’lumotlar	 (garchi	 kodda	 to‘g‘	ridan	-	
to‘g‘	ri ko‘	rsatilmagan	 bo‘	lsa	 ham)	 MyForm1	 dagi	 ListBox	 ni	 to‘	ldirish	 uchun	 asos	 	
bo‘	lishi	 mumkin	 (masalan,	 "mahsulot.csv"	 faylini	 o‘	qish	 orqali).	 	
3.	 Ilovaning	 funksional	 imkoniyatlarini	 shakllantirish	 	
3.1.	 MyForm	 (Mahsulotlarni	 boshqarish)	 oynasi	 funksiyalari	 	
Bu	 oyna	 mahsulotlar	 ma	’lumotlar	 bazasini	 (bu	 holda	 DataGridView	 va	 CSV	 	
fayl)	 boshqarish	 uchun	 asosiy	 vositalarni	 taqdim	 etadi.	 	
Yangi	 	m	ahsulot	 	qo‘	shish	 	(button1_Click	 	hodisasi):	 	
Foydalanuvchi	 "Q	o‘	shish"	 tugmasini	 bosganda,	 textBox1	 dan	 textBox4	 gacha	 	
bo‘	lgan	 maydonlardagi	 matnlar	 olinadi.	 Keyin	 bu	 ma	’lumotlar	 dataGridView1	 	
komponentasiga	 yangi	 qator	 sifatida	 qo‘	shiladi.	 Ushbu	 amal	 bajarilgandan	 so‘	ng,	 	
kiritish	 maydonlari	 (TextBox	lar)	 tozalanadi,	 bu	 esa	 keyingi	 mahsulotni	 kiritishga	 	
tayyorgarlikni	 ta	’minlaydi.	 	
private	: 	System::	Void	 	button1_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	String	^ nomi	 = textBox1	->Text;	 	
 	String	^ narxi	 = textBox2	->Text;	 	
 	String	^ soni	 = textBox3	->Text;	 	
 	String	^ kodi	 = textBox4	->Text;	 	
 
 	dataGridView1	->ColumnCount	 = 4;	 	
 	dataGridView1	->Columns[0]	->Name	 = "Mahsulot	 nomi:"	; 	
 	dataGridView1	->Columns[1]	->Name	 = "Narxi:"	; 	
 	dataGridView1	->Columns[2]	->Name	 = "Soni:"	; 	
 	dataGridView1	->Columns[3]	->Name	 = "Kodi:"	; 	
 	dataGridView1	->Rows	->Add(nomi,	 narxi,	 soni,	 kodi);	 	
 
 	textBox1	->Clear();	 	
 	textBox2	->Clear();	 	
 	textBox3	->Clear();	 	
 	textBox4	->Clear();	 	
 	} 	
Mahsulotni	 	tahrirlashga	 	tayyorlash	 	(button2_Click	 	hodisasi):	 	
Foydalanuvchi	 dataGridView1	 da	 biror	 qatorni	 tanlab,	 "Tahrirlash"	 tugmasini	  12	 	
 
bossa,	 dastur	 avval	 faqat	 bitta	 qator	 tanlanganligini	 tekshiradi.	 Agar	 shart	 bajarilsa,	 	
tanlangan	 qatorning	 indeksi	 (tahrirlashindeksi	 o‘	zgaruvchisiga)	 saqlanadi	 va	 shu	 	
qatordagi	 ma	’lumotlar	 ("Nomi",	 "Narxi",	 "Soni",	 "Kodi"	 ustunlaridan)	 olinib,	 	
tegishli	 textBox	 larga	 joylashtiriladi.	 Bu	 foydalanuvchiga	 mavjud	 ma	’lumotni	 	
o‘	zgartirish	 imkonini	 beradi	 (ammo	 o‘	zgartirishni	 saqlash	 uchun	 odatda	 	
"Saqlash"	 yoki	 alohida	 "Yangilash"	 tugmasi	 kerak	 bo‘	ladi,	 bu	 kodda	 button4_Click	 	
qisman	 bajarishi	 mumkin).	 Agar	 birorta	 ham	 qator	 yoki	 birdan	 ko‘	p qator	 tanlangan	 	
bo‘	lsa,	 xatolik	 haqida	 xabar	 chiqariladi.	 	
 	
private	: int	 tahrirlashindeksi	 = -1;	 	
private	: System::	Void	 button2_Click(System::	Object	^  	sender	, 	
System::	EventArgs	^  	e) { 	
 	if	 (dataGridView1	->SelectedRows	->Count	 ==	 1)	 	
 	{ 	
 	 	tahrirlashindeksi	 	= 	dataGridView1	-	
>SelectedRows[0]	->Index;	 	
 	 	textBox1	->Text	 	= 	dataGridView1	-	
>Rows[tahrirlashindeksi]	->Cells[	"Nomi"	]->Value	->ToString();	 	
 	 	textBox2	->Text	 	= 	dataGridView1	-	
>Rows[tahrirlashindeksi]	->Cells[	"Narxi"	]->Value	->ToString();	 	
 	 	textBox3	->Text	 	= 	dataGridView1	-	
>Rows[tahrirlashindeksi]	->Cells[	"Soni"	]->Value	->ToString();	 	
 	 	textBox4	->Text	 	= 	dataGridView1	-	
>Rows[tahrirlashindeksi]	->Cells[	"Kodi"	]->Value	->ToString();	 	
 	} 	
 	else	 	
 	{ 	
 	 	MessageBox	::Show(	"Iltimos,	 	tahrirlash	 	uchun	 	
bitta	 qatorni	 tanlang!"	);	 	
 	} 	
} 
Mahsulotni	 	o‘	chirish	 	(button3_Click	 	hodisasi):	 	
"O‘	chirish"	 tugmasi	 bosilganda,	 xuddi	 tahrirlashdagi	 kabi,	 faqat	 bitta	 qator	 	
tanlanganligi	 	tekshiriladi.	 	Agar	 	shart	 	bajarilsa,	 	tanlangan	 	qatorning	 	indeksi	 	
aniqlanadi	 va	 dataGridView1	->Rows	->RemoveAt()	 metodi	 yordamida	 shu	 qator	 	
jadvaldan	 o‘	chiriladi.	 	Muvaffaqiyatli	 o‘	chirilgandan	 	so‘	ng	 	yoki	 xatolik	 	yuz	 	
berganda	 (qator	 tanlanmagan	 bo‘	lsa)	 foydalanuvchiga	 tegishli	 xabar	 ko‘	rsatiladi.	  13	 	
 	
private	: 	System::	Void	 	button3_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 
 
if	 (dataGridView1	->SelectedRows	->Count	 ==	 1)	 	
 	{ 	
 	 	int	 	tanlanganindeks	 	= 	dataGridView1	-	
>SelectedRows[0]	->Index;	 	
 	 	dataGridView1	->Rows	-	
>RemoveAt(tanlanganindeks);	 	
 	 	MessageBox	::Show(	"Mahsulot	 	o‘	chirildi!"	, 	
"Ma	’lumot"	, 	MessageBoxButtons	::	OK	, 	
MessageBoxIcon	::	Information	);	 	
 	} 	
 	else	 	
 	{ 	
 	 	MessageBox	::Show(	"Iltimos,	 	o‘	chirish	 	uchun	 	
bitta	 qatorni	 tanlang!"	);	 	
 	} 	
} 
Ma	’lumotlarni	 	faylga	 	saqlash	 	(button4_Click	 	hodisasi):	 	
"Saqlash"	 tugmasi	 dataGridView1	 dagi	 joriy	 ma	’lumotlarni	 "mahsulot.csv"	 nomli	 	
faylga	 yozish	 uchun	 m	o‘	ljallangan.	 System::IO::StreamWriter	 obyekti	 yaratilib,	 	
fayl	 ochiladi.	 Avvaliga	 faylga	 ustun	 nomlari	 (sarlavha)	 yoziladi.	 So‘	ngra	 sikl	 	
yordamida	 dataGridView1	 ning	 har	 bir	 qatoridagi	 (oxirgi	 bo‘	sh	 qatordan	 tashqari)	 	
ma	’lumotlar	 olinadi	 va	 nuqtali	 vergul	 (;)	 bilan	 ajratilgan	 holda	 faylga	 yoziladi.	 	
Faylga	 yozish	 tugagach,	 StreamWriter	 yopiladi	 va	 foydalanuvchiga	 ma	’lumotlar	 	
saqlanganligi	 haqida	 xabar	 beriladi.	 	
private	: 	System::	Void	 	button4_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	String	^ nomi	 = "mahsulot.csv"	; 	
 	System::IO::	StreamWriter	^ 	fayl	 	= 	gcnew	 	
System::IO::	StreamWriter	(nomi);	 	
 	fayl	->WriteLine(	"Mahsulot	 	nomi:;	 	Narxi:;	 	Soni:;	 	
Kodi:"	);	 	
 	for	 (int	 i = 0;	 i < dataGridView1	->Rows	->Count	 - 1;	 	
i++)	 { 	
 	 	fayl	->WriteLine(	  14	 	
 	
 	dataGridView1	->Rows[i]	->Cells[0]	->Value	 + ";"	+ 	
 	dataGridView1	->Rows[i]	->Cells[1]	->Value	 + ";"	+ 	
 	dataGridView1	->Rows[i]	->Cells[2]	->Value	 + ";"	+ 	
 	dataGridView1	->Rows[i]	->Cells[3]	->Value	 	
 	 	);	 	
} 
 	fayl	->Close();	 	
 	MessageBox	::Show(	"Mahsulotlar	 saqlandi!"	);	 	
} 
Oynalararo	 navigatsiya	 (button5_Click	 va	 button6_Click	 hodisalari):	 	
"Savdo	 jarayoniga	 o‘	tish"	 (button5	) tugmasi	 bosilganda,	 MyForm1	 sinfidan	 yangi	 	
obyekt	 yaratiladi	 va	 ShowDialog()	 metodi	 orqali	 yangi	 oyna	 ochiladi.	 ShowDialog()	 	
oynani	 modal	 rejimda	 ochadi,	 ya	’ni	 yangi	 oyna	 yopilmaguncha	 asosiy	 oyna	 	
(MyForm	) bilan	 ishlash	 mumkin	 bo‘	lmaydi.	 "Yopish"	 (button6	) tugmasi	 esa	 	
Application::Exit()	 metodini	 chaqirib,	 butun	 dasturning	 ishlashini	 to‘	xtatadi.	 	
private	: 	System::	Void	 	button5_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	MyForm1	^ f1	 = gcnew	 MyForm1	();	 	
 	f1	->ShowDialog();	 	
} 
private	: 	System::	Void	 	button6_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	Application	::Exit();	 	
} 
3.2.	 MyForm1	 (Savdo	 jarayoni)	 oynasi	 funksiyalari	 	
Bu	 oyna	 mahsulot	 tanlash	 va	 virtual	 savatchani	 shakllantirish	 jarayonini	 	
amalga	 oshiradi.	 	
Mahsulotni	 	savatchaga	 	qo‘	shish	 	(button1_Click	 	hodisasi):	 	
Foydalanuvchi	 listBox1	 dan	 biror	 mahsulotni	 tanlab,	 textBox1	 ga	 miqdorini	 kiritib,	 	
"Q	o‘	shish"	 tugmasini	 bossa,	 tanlangan	 mahsulot	 haqidagi	 ma	’lumot	 (nomi	 va	 narxi)	 	
listBox1	->SelectedItem	 dan	 olinadi.	 Bu	 satr	 ‘-’ belgisi	 bo‘	yicha	 ajratilib,	 mahsulot	 	
nomi	 va	 birlik	 narxi	 aniqlanadi.	 textBox1	 dagi	 miqdor	 olinadi.	 Shu	 ma	’lumotlar	 	
asosida	 ListViewItem	 obyekti	 yaratiladi:	 asosiy	 element	 sifatida	 mahsulot	 nomi,	 	
qo‘	shimcha	 elementlar	 (sub	-items)	 sifatida	 miqdor	 va	 umumiy	 narx	 (narx	 * miqdor)	 	
qo‘	shiladi.	 Tayyor	 bo‘	lgan	 ListViewItem	 listView1	 (savatcha)	 ga	 qo‘	shiladi.	 Agar	 	
listBox1	 dan	 hech	 qanday	 mahsulot	 tanlanmagan	 bo‘	lsa,	 ogohlantirish	 xabari	 	
chiqariladi.	 	
  15	 	
 	
private	: System::	Void	 button1_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	 	if	 (listBox1	->SelectedIndex	 !=	 -1)	 { 	
 	 	 	String	^ tanlanganMahsulot	 = listBox1	-	
>SelectedItem	->ToString();	 	
 	 	 	array	<String	^>^	 parts	 = tanlanganMahsulot	-	
>Split(	‘-’);	 	
 
if	 (parts	->Length	 < 2)	 { 	
 	throw	 gcnew	 Exception	("Not	o‘g‘	ri	 formatdagi	 	
mahsulot	 ma	’lumoti!"	);	 	
 	 	 	} 	
 
 	 	 	String	^ mahsulotNomi	 = parts[0]	->Trim();	 	
 	 	 	int	 narx	 = Convert	::ToInt32(parts[1]	-	
>Trim());	 	
 	 	 	int	 miqdor	 = Convert	::	ToInt32(textBox1	-	
>Text);	 	
 
 	 	 	ListViewItem	^ item	 = gcnew	 	
ListViewItem	(mahsulotNomi);	 	
 	 	 	item	->SubItems	->Add(miqdor.ToString());	 	
 	 	 	item	->SubItems	->Add((narx	 * 	
miqdor).ToString());	 	
 	 	 	listView1	->Items	->Add(item);	 	
 	 	} 	
 	 	else	 { 	
 	 	 	MessageBox	::Show(	"Iltimos,	 mahsulotni	 	
tanlang!"	);	 	
 	 	} 	
 	} 	
Jami	 	narxni	 	hisoblash	 	(button2_Click	 	hodisasi):	 	
"Jami	 narx"	 tugmasi	 bosilganda,	 listView1	 (savatcha)	 ichidagi	 barcha	 elementlar	 	
(ListViewItem	) bo‘	yicha	 sikl	 aylanadi.	 Har	 bir	 elementning	 uchinchi	 qo‘	shimcha	 	
elementi	 (SubItems[2]	, ya	’ni	 hisoblangan	 narx)	 olinadi,	 butun	 songa	 (Int32	) 	
o‘	tkaziladi	 va	 umumiy	 yi	g‘	indiga	 (totalSum	) qo‘	shib	 boriladi.	 Sikl	 tugagach,	 	
hisoblangan	 umumiy	 summa	 label4	 ning	 matniga	 chiqariladi.	 	
  16	 	
 	
private	: 	System::	Void	 	button2_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	int	 totalSum	 = 0;	 	
    	for	 each	 (ListViewItem	 ^ item	 in	 listView1	->Items)	 { 	
//	 Diqqat:	 listView1	 bo‘	lishi	 kerak	 	
        	//	 Jami	 summani	 hisoblash	 	
        	totalSum	 	+=	 	Convert	::	ToInt32(item	->SubItems[2]	-	
>Text);	 	
    	} 	
    	label4	->Text	 	= 	"Jami:	 	" 	+ 	totalSum.ToString()	 	+ 	" 	
so‘	m"	; 	
} 
Oynalararo	 navigatsiya	 (button3_Click	 va	 button4_Click	 hodisalari):	 	
"Ortga"	 (button3	) tugmasi	 joriy	 MyForm1	 oynasini	 this	->Hide()	 metodi	 yordamida	 	
yashiradi	 (yopmaydi),	 bu	 esa	 MyForm	 ga	 qaytish	 imkonini	 beradi	 (chunki	 u 	
ShowDialog	 bilan	 ochilgan	 edi).	 "Savdo	 rasmlari	 formasi"	 (button4	) tugmasi	 esa	 	
xuddi	 MyForm	 dagi	 kabi,	 MyForm2	 sinfidan	 obyekt	 yaratib,	 uni	 ShowDialog()	 	
orqali	 modal	 rejimda	 ochadi.	 	
private	: 	System::	Void	 	button3_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	this	->Hide();	 	
} 
private	: 	System::	Void	 	button4_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	MyForm2	^ f2	 = gcnew	 MyForm2	();	 	
 	f2	->ShowDialog();	 	
} 
3.3.	 MyForm2	 (Savdo	 jarayoni	 rasmlari)	 oynasi	 funksiyalari	 	
Bu	 oyna	 rasmlarni	 ko‘	rish	 va	 ular	 orasida	 harakatlanish	 uchun	 oddiy	 	
funksiyalarni	 taqdim	 etadi.	 	
Papka	 	tanlash	 	va	 	rasmlarni	 	yuklash	 	(button1_Click	 	hodisasi):	 	
"PAPKANI	 TANLASH"	 tugmasi	 bosilganda,	 standart	 FolderBrowserDialog	 oynasi	 	
ochiladi.	 Foydalanuvchi	 papka	 tanlab	 "OK"	 ni	 bossa,	 tanlangan	 papkaning	 yo‘	li 	
(dialog	->SelectedPath	) olinadi.	 	
So‘	ngra	 System::IO::Directory::GetFiles()	 metodi	 yordamida	 shu	 papkadagi	 	
barcha	 .jpg	 kengaytmali	 fayllarning	 to‘	liq	 yo‘	llari	 rasmfayllari	 nomli	 massivga	 	
(array)	 yoziladi.	 hozirgirasm	 indeksi	 0 ga	 tenglashtiriladi	 (birinchi	 rasm).	 Agar	  17	 	
 
papkada	 	.jpg	 	fayllar	 	topilsa,	 	birinchi	 	rasm	 	(rasmfayllari[0]	) 	pictureBox1	 	
komponentasida	 ko‘	rsatiladi	. 	
private	: array	<String	^>^	 rasmfayllari;	 	
 	 	 	 	 int	 hozirgirasm	 = 0;	 	
 	private	: System::	Void	 button1_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	 	FolderBrowserDialog	^ 	dialog	 	= 	gcnew	 	
FolderBrowserDialog	();	 	
 
 	 	if	 	(dialog	->ShowDialog()	 	==	 	
System::Windows::Forms::	DialogResult	::	OK	) { 	
 	 	 	rasmfayllari	 	= 	
System::IO::	Directory	::GetFiles(dialog	->SelectedPath,	 	
"*.jpg"	);	 	
 	 	 	hozirgirasm	 = 0;	 	
 
 	 	 	if	 (rasmfayllari	->Length	 > 0)	 { 	
 	 	 	 	pictureBox1	->ImageLocation	 	= 	
rasmfayllari[hozirgirasm];	 	
 	 	 	} 	
 	 	} 	
 	} 	
Rasmlararo	 	o‘	tish	 	(button2_Click	 	va	 	button3_Click	 	hodisalari):	 	
"<"	 (button2	) tugmasi	 bosilganda,	 agar	 rasmfayllari	 massivi	 mavjud	 bo‘	lsa	 va	 joriy	 	
rasm	 indeksi	 (hozirgirasm	) 0 dan	 katta	 bo‘	lsa,	 indeks	 bittaga	 kamaytiriladi.	 ">"	 	
(button3	) tugmasi	 bosilganda	 esa,	 agar	 massiv	 mavjud	 va	 joriy	 indeks	 massivning	 	
oxirgi	 elementidan	 kichik	 bo‘	lsa,	 indeks	 bittaga	 oshiriladi.	 Har	 ikkala	 holda	 ham,	 	
yangi	 indeksga	 mos	 keluvchi	 rasm	 yo‘	li pictureBox1	->ImageLocation	 ga	 o‘	rnatiladi	 	
va	 label2	 dagi	 hisoblagich	 yangilanadi.	 Bu	 foydalanuvchiga	 rasmlar	 galereyasida	 	
oldinga	 va	 orqaga	 yurish	 imkonini	 beradi.	 	
private	: 	System::	Void	 	button2_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 
 	if	 (rasmfayllari	 &&	 hozirgirasm	 > 0)	 { 	
 	 	hozirgirasm	--	; 	
 	 	pictureBox1	->ImageLocation	 	= 	
rasmfayllari[hozirgirasm];	  18	 	
 	
 	 	label2	->Text	 = (hozirgirasm	 + 1).ToString()	 + " 	
/ " + rasmfayllari	->Length.ToString();	 	
 	} 	
} 
private	: 	System::	Void	 	button3_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	if	 	(rasmfayllari	 	&&	 	hozirgirasm	 	< 	rasmfayllari	-	
>Length	 - 1)	 { 	
 	 	hozirgirasm++;	 	
 	 	pictureBox1	->ImageLocation	 	= 	
rasmfayllari[hozirgirasm];	 	
 	 	label2	->Text	 = (hozirgirasm	 + 1).ToString()	 + " 	
/ " + rasmfayllari	->Length.ToString();	 	
 	} 	
} 
Ortga	 qaytish	 (button4_Click	 hodisasi):	 "Ortga	 qaytish"	 (button4	) tugmasi	 	
xuddi	 MyForm1	 dagi	 "Ortga"	 tugmasi	 kabi	 ishlaydi:	 joriy	 MyForm2	 oynasini	 this	-	
>Hide()	 metodi	 bilan	 yashiradi	 va	 boshqaruvni	 uni	 chaqirgan	 MyForm1	 oynasiga	 	
qaytaradi.	 	
private	: 	System::	Void	 	button4_Click(System::	Object	^  	
sender	, System::	EventArgs	^  	e) { 	
 	this	->Hide();	 	
} 
 
4.	 Ilovaga	 ma	’lumotlarni	 kiritish,	 natijalar	 olish	 va	 testlash	 	
Ma	’lumotlarni	 kiritish	 jarayoni	 	
Dastur	 bilan	 ishlash	 foydalanuvchidan	 ma	’lum	 bir	 ketma	-ketlikdagi	 amallarni	 	
bajarishni	 talab	 qiladi:	 	
Mahsulotlarni	 kiritish	 (MyForm	 oynasi):	 	
Dastur	 ishga	 tushirilganda	 birinchi	 bo‘	lib	 MyForm	 oynasi	 ochiladi.	 	
Yangi	 mahsulot	 qo‘	shish	 uchun	 foydalanuvchi	 oynaning	 chap	 qismidagi	 	
maydonlarga	 ma	’lumotlarni	 kiritadi:	 	
textBox1	: Mahsulotning	 nomi	 (masalan,	 "Coca	-Cola").	 	
textBox2	: Mahsulotning	 narxi	 (masalan,	 "8000").	 	
textBox3	: Mahsulotning	 soni	 (masalan,	 "50"	 - bu	 yerda	 ombordagi	 yoki	 	
partiyadagi	 umumiy	 son	 nazarda	 tutiladi).	 	
textBox4	: Mahsulotning	 kodi	 (masalan,	 "CC01").	 	
Ma	’lumotlar	 kiritilgach,	 "Q	o‘	shish"	 (button1	) tugmasi	 bosiladi.	  19	 	
 	
Mahsulotni	 saqlash	 (MyForm	 oynasi):	 	
Mavjud	 mahsulot	 .csv	 qilib	 saqlaydi	 	
Mahsulotni	 o‘	chirish	 (MyForm	 oynasi):	 	
Keraksiz	 bo‘	lib	 qolgan	 mahsulotni	 o‘	chirish	 uchun	 dataGridView1	 dan	 	
tegishli	 qator	 tanlanadi.	 	
"O‘	chirish"	 (button3	) tugmasi	 bosiladi.	 	
Savdo	 jarayonini	 simulyatsiya	 qilish	 (MyForm1	 oynasi):	 	
MyForm	 oynasidan	 "Savdo	 jarayoniga	 o‘	tish"	 (button5	) tugmasi	 bosilib,	 	
MyForm1	 oynasi	 ochiladi.	 	
Foydalanuvchi	 	chapdagi	 	listBox1	 	ro‘	yxatidan	 	sotib	 	olmoqchi	 	bo‘	lgan	 	
mahsulotni	 tanlaydi.	 	
O‘	ng	 pastdagi	 textBox1	 maydoniga	 tanlangan	 mahsulotdan	 necha	 dona	 sotib	 	
olmoqchi	 ekanligini	 (miqdorini)	 kiritadi.	 	
"Q	o‘	shish"	 (button1	) tugmasini	 bosadi.	 Bu	 amal	 tanlangan	 mahsulotni	 	
miqdori	 va	 hisoblangan	 narxi	 bilan	 o‘	ngdagi	 listView1	 (savatcha)	 ga	 qo‘	shadi.	 	
 
 
Boshqa	 mahsulotlarni	 qo‘	shish	 uchun	 yuqoridagi	 qadamlar	 takrorlanadi.	 	
Rasmlarni	 ko‘	rish	 (MyForm2	 oynasi):	 	
MyForm1	 oynasidan	 "Savdo	 rasmlari	 formasi"	 (button4	) tugmasi	 bosilib,	 	
MyForm2	 oynasi	 ochiladi.	 	
"PAPKANI	 TANLASH"	 (button1	) tugmasi	 bosiladi	 va	 kompyuterdan	 .jpg	 	
formatidagi	 rasmlar	 joylashgan	 papka	 tanlanadi.	 	
MyForm	 oynasida:	 	
"Q	o‘	shish"	 tugmasi	 bosilgandan	 so‘	ng,	 kiritilgan	 yangi	 mahsulot	 haqidagi	 	
ma	’lumotlar	 dataGridView1	 jadvalining	 oxirgi	 qatorida	 paydo	 bo‘	ladi.	 Kiritish	 	
maydonlari	 (textBox	lar)	 bo‘	shaydi.	  	
"Tahrirlash"	 tugmasi	 bosilgandan	 so‘	ng,	 tanlangan	 qatordagi	 ma	’lumotlar	 	
tegishli	 textBox	 larga	 yuklanadi.	 	
"O‘	chirish"	 tugmasi	 bosilgandan	 so‘	ng,	 tanlangan	 qator	 dataGridView1	 dan	 	
g‘	oyib	 bo‘	ladi	 va	 "Mahsulot	 o‘	chirildi!"	 xabari	 chiqadi.	 	
"Saqlash"	 	tugmasi	 	bosilgandan	 	so‘	ng,	 	dataGridView1	 	dagi	 	barcha	 	
ma	’lumotlar	 dastur	 joylashgan	 papkada	 "mahsulot.csv"	 nomli	 faylga	 yoziladi	 va	 	
"Mahsulotlar	 saqlandi!"	 xabari	 ko‘	rsatiladi.	 Bu	 faylni	 keyinchalik	 (masalan,	 	
Excelda)	 ochib	 ko‘	rish	 mumkin.	  20	 	
 	
 
 	
 
 
 
 
 
MyForm1	 oynasida:	  21	 	
 	
"Q	o‘	shish"	 tugmasi	 bosilgandan	 so‘	ng,	 tanlangan	 mahsulotning	 nomi,	 	
kiritilgan	 miqdori	 va	 shu	 miqdor	 uchun	 hisoblangan	 narx	 listView1	 (savatcha)	 ga	 	
yangi	 qator	 bo‘	lib	 qo‘	shiladi.	  	
"Jami	 	narx"	 	tugmasi	 	bosilgandan	 	so‘	ng,	 	listView1	 	dagi	 	barcha	 	
mahsulotlarning	 	umumiy	 	narxi	 	hisoblanib,	 	label4	 	da	 	"Jami:	 	XXX	 	so‘	m"	 	
ko‘	rinishida	 aks	 etadi.	 	
 	
MyForm2	 oynasida:	 	
Papka	 tanlangandan	 so‘	ng,	 agar	 papkada	 .jpg	 rasmlar	 mavjud	 bo‘	lsa,	 birinchi	 	
rasm	 pictureBox1	 maydonida	 ko‘	rinadi.	 label2	 da	 esa	 joriy	 rasm	 raqami	 va	 umumiy	 	
rasmlar	 soni	 (masalan,	 "1	 / 15")	 ko‘	rsatiladi	 	
"<"	 va	 ">"	 tugmalari	 bosilganda	 pictureBox1	 dagi	 rasm	 almashadi	 va	 label2	 	
dagi	 raqamlar	 yangilanadi.	 	
 
 
 
 
  22	 	
 	
  	
 	 	
 
 
 
 
 
 
 
 
 
 
 	
 	  23	 	
 	
Xulosa	 	
Ushbu	 kurs	 ishimda	 men	 savdo	 avtomatlaridagi	 mahsulotlar	 hisobini	 yuritish	 	
va	 savdo	 jarayonini	 soddalashtirish	 uchun	 dasturiy	 ilova	 ishlab	 chiqdim.	 Maqsadim	 	
– sohadagi	 qo‘	lda	 bajariladigan	 vazifalarni	 avtomatlashtirish	 orqali	 samaradorlikni	 	
oshirish	 edi.	 Loyihani	 Microsoft	 Visual	 Studio	 2015	 muhitida,	 C++/CLI	 tili	 va	 	
Windows	 Forms	 texnologiyasi	 asosida	 amalga	 oshirdim.	 	
Men	 yaratgan	 dastur	 uchta	 asosiy	 oyna	 (MyForm	, MyForm1	, MyForm2	) 	
orqali	 quyidagi	 funksiyalarni	 bajaradi:	 	
• 	Mahsulotlarni	 	(nomi,	 	narxi,	 	soni,	 	kodi)	 	kiritish,	 	ko‘	rish	 	
(DataGridView	), tahrirlashga	 tayyorlash	 va	 o‘	chirish	 (MyForm	). 	
• 	Mahsulot	 ma	’lumotlarini	 CSV	 fayliga	 saqlash	 (MyForm	). 	
• 	Mavjud	 mahsulotlardan	 tanlab	 (ListBox	), miqdorini	 belgilab,	 virtual	 	
savatchaga	 (ListView	) qo‘	shish	 va	 umumiy	 narxni	 hisoblash	 (MyForm1	). 	
• 	Tanlangan	 papkadagi	 rasmlarni	 ko‘	rsatish	 (PictureBox	) va	 ular	 orasida	 	
harakatlanish	 (MyForm2	). 	
Buning	 	uchun	 	TextBox	, 	Button	, 	DataGridView	, 	ListBox	, 	ListView	, 	
PictureBox	 kabi	 standart	 komponentalar	 hamda	 fayllar	 bilan	 ishlash	 vositalaridan	 	
foydalandim.	 	
Xulosa	 qilib	 aytganda,	 ushbu	 kurs	 ishim	 savdo	 avtomatlari	 faoliyatini	 	
boshqarishning	 asosiy	 ehtiyojlarini	 qondiruvchi,	 soddalashtirilgan	 amaliy	 yechimni	 	
taqdim	 etadi.	 Bu	 ish	 kelajakda	 men	 uchun	 yanada	 mukammal	 tizimlarni	 yaratish	 	
yo‘	lidagi	 	dastlabki	 	qadam	 	va	 	tanlangan	 	texnologiyalarning	 	imkoniyatlarini	 	
namoyon	 etuvchi	 asos	 bo‘	lib	 xizmat	 qiladi.	 	
 
 
 
 
 
 
 
 
 
 
 
 	
 	  24	 	
 	
Foydalanilgan	 adabiyotlar:	 	
1.	 	Microsoft	 	Docs	 	(hozirgi	 	Microsoft	 	Learn):	 	C++/CLI	 	
Language	 Reference.	 - Microsoft	 korporatsiyasining	 C++/CLI	 tiliga	 oid	 rasmiy	 	
hujjatlari.	  https	://	learn	.microsoft	.com	/en	-us	/cpp	/dotnet	/cpp	-cli	-language	-reference	 	
2.	 	Stack	 Overflow:	 Visual	 Studio	 2015	 bilan	 ishlashda	 duch	 	
kelinadigan	 aniq	 muammolar,	 xatoliklar	 yoki	 sozlamalar	 bo‘	yicha	 savol	 berish	 va	 	
tayyor	 yechimlarni	 topish	 uchun	 eng	 faol	 manbalardan	 biri.	 	
URL:	 https://stackoverflow.com/questions/tagged/visual	-studio	-2015	 	
3.	 	Johnson,	 B.	 Visual	 Studio	 2015	 Cookbook.	 Packt	 Publishing,	 2015.

Savdo avtomatlarini boshqarish va mahsulot hisobini yuritish

Купить
  • Похожие документы

  • Bank faoliyatida avtomatlashtirilgan axborot tizimlari va texnologiyalari
  • Bozor iqtisodyotning avzalliklari va kamchiliklari
  • Bozor iqtisodiyoti o‘tishning hozirgi zamon modellari, bozor munosabatlariga o‘tish modellarining shakllanishi
  • Firma va uning tashkiliy-iqtisodiy asoslari
  • Iqtisodiy muvozanatlik, xususiy va umumiy muvozanatlik, makroiqtisodiy barqarorlik

Подтвердить покупку

Да Нет

© Copyright 2019-2026.

  • Инструкция по снятию с баланса
  • Контакты
  • Инструкция использования сайта
  • Инструкция загрузки документов
  • O'zbekcha