-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMagazaOtomasyonu.py
853 lines (686 loc) · 37.3 KB
/
MagazaOtomasyonu.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
# 18010011087
# HEDİYE ORHAN
"""
KODU TAMAMEN ÇALIŞTIRDIĞIMIZDA SATIŞ YAP FONKSİYONUNDA, SATIŞ BİLGİLERİ VE MÜŞTERİ BİLGİLERİ TUTULAN 2 ADET DOSYA DAHA OLUŞTURULUYOR.
PROJEMDE 3 TANE TXT DOSYASI KULLANDIM. GÖNDERDİĞİM TXT DOSYASI İSE ÜRÜNLER BİLGİSİ TUTAN TXT DOSYASI.
YANİ YENİ ÜRÜN KAYIT FONKSİYONUNDA EKLEDİĞİMİZ ÜRÜNLERİ TUTAN DOSYA.
"""
import random
# DOSYADAKİ STRİNGLERİ VE KULLANICININ GİRDİĞİ STRİNGLERİ KARŞILAŞTIRMAK İÇİN TÜRKÇE KARAKTERLERİ DE KÜÇÜK HARF YAPAN FONKSİYONU YAZDIM.
# BÖYLECE AŞAĞIDAKİ FONKSİYONLARDA TÜM KELİMELERİ KÜÇÜK HARF YAPIP O ŞEKİLDE KARŞILAŞTIRMA YAPILIYOR.
def trlower(metin):
metin2 = " "
for harf in metin:
if harf == 'I':
sonuc = 'ı'
elif harf == 'İ':
sonuc = 'i'
else:
sonuc = harf.lower()
metin2 += sonuc
return metin2
# BURADA MÜŞTERİ BİLGİLERİ VE SATIŞ YAPILAN ÜRÜN BİLGİLERİ ALINIYOR. SATIŞ VE MÜŞTERİLER DOSYASINA VERİLER KAYDEDİLİYOR.
def SatisYap():
Musteriler = dict()
while True:
try:
satissayisi = int(input("Kaç adet satış yapacaksınız : "))
break
except ValueError:
print("Lütfen integer bir değer giriniz !!")
print("\n")
for i in range(1, satissayisi + 1):
bilgi = dict()
# SATIŞ BİLGİLERİ İÇİ AYRI MÜŞTERİ BİLGİLERİ İÇİN AYRI DOSYA AÇTIM.
dosya = open("18010011087(2).txt", "a", encoding="utf-8")
dosya2 = open("18010011087(3).txt", "a", encoding="utf-8")
MusteriAdSoyad = input("{}. Müşterinin adı ve soyadını giriniz : ".format(i))
bilgi["AD SOYAD"] = MusteriAdSoyad.title()
dosya.write("MÜŞTERİ AD-SOYAD : " + MusteriAdSoyad.title() + " -- ")
dosya2.write("MÜŞTERİ AD-SOYAD : " + MusteriAdSoyad.title() + " -- ")
MusteriNumara = input("{}. Müşterinin telefon numarasını giriniz : ".format(i))
bilgi["TELEFON NUMARASI"] = MusteriNumara
dosya2.write("MÜŞTERİ TELEFON NUMARASI : " + MusteriNumara + " -- ")
uruntur = input("Ürünün türünü giriniz.(Örneğin : Pantolon,Gömlek..) : ")
bilgi["ÜRÜN TÜRÜ"] = uruntur.title()
dosya.write("ÜRÜN TÜR : " + uruntur.title() + " -- ")
urunrenk = input("Ürünün rengini giriniz : ")
bilgi["ÜRÜN RENK"] = urunrenk.title()
dosya.write("ÜRÜN RENK : " + urunrenk.title() + " -- ")
urunbeden = input("Ürünün bedenini giriniz.(Örneğin : S,M,XL,L.. ya da 36,38..) : ")
bilgi["ÜRÜN BEDEN"] = urunbeden
dosya.write("ÜRÜN BEDEN: " + urunbeden + " -- ")
urunmarka = input("Ürünün markasını giriniz : ")
bilgi["ÜRÜN MARKA"] = urunmarka.title()
dosya.write("ÜRÜN MARKA : " + urunmarka.title() + " -- ")
while True:
try:
urunfiyat = float(input("Ürünün fiyatını giriniz : "))
break
except ValueError:
print("Lütfen integer ya da float bir değer giriniz !!")
bilgi["ÜRÜN FİYAT"] = urunfiyat
dosya.write("ÜRÜN FİYAT : " + str(urunfiyat) + " -- ")
# MÜŞTERİNİN ALDIĞI ÜRÜNÜN FİYATINA GÖRE İNDİRİM UYGULAMALARI VARSA ONLARI UYGULAMASI İÇİN ÜRÜNÜN FİYATINI BU FONKSİYONA GÖNDERİYORUZ.
# BURADA ÖDENECEK FİYATI HEMEN HESAPLAYIP BİZE GERİ DÖNDÜRMESİ İÇİN İÇ İÇE FONKSİYON KULLANDIM.
def fiyathesapla(urunfiyat):
sonfiyat = 0
while True:
try:
indirim = input("Ürünlerin etiketlerinde indirim var mı ?(E : EVET / H : HAYIR) : ")
if indirim == 'H' or indirim == 'h':
sonfiyat = urunfiyat
break
elif indirim == 'E' or indirim == 'e':
while True:
try:
indirim_orani = float(input("Üründeki indirim oranını yazınız.(Örneğin 0.5 ya da 0.20 şeklinde) : "))
sonfiyat = urunfiyat - (urunfiyat * indirim_orani)
break
except ValueError:
print("Lütfen float bir değer giriniz !!")
break
else:
raise BaseException("Lütfen H/h ya da E/e giriniz !!")
except BaseException:
print("Lütfen H/h ya da E/e giriniz !!")
while True:
try:
odemesekli = input("Ödeme şekli giriniz.(KART : K / TAKSİT : T / NAKİT : N) : ")
if odemesekli == 'K' or odemesekli == 'k':
sonfiyat += (sonfiyat * 0.03)
break
elif odemesekli == 'T' or odemesekli == 't':
# YAPILAN TAKSİT MİKTARINA GÖRE HER AY İÇİN 10 TL ÖDENECEK ŞEKİLDE AYARLADIM.
while True:
try:
adet = int(input("Kaç aylık taksit yaptırmak istiyorsunuz ? (2 - 12 arası yapılabilir.) : "))
sonfiyat += (adet * 5)
break
except ValueError:
print("Lütfen integer bir değer giriniz !!")
break
elif odemesekli == 'N' or odemesekli == 'n':
sonfiyat = sonfiyat
break
else:
raise BaseException("Lütfen K/k, N/n ya da T/t giriniz !!")
except BaseException:
print("Lütfen K/k, N/n ya da T/t giriniz !!")
# 300 TL VE ÜZERİ ÜRÜNLERDE 15 TL İNDİRİM.
if urunfiyat >= 300:
sonfiyat -= 15
while True:
try:
kart = input("Müşterinin mağaza kartı var mı ? (E : EVET / H : HAYIR) : ")
# MÜŞTERİMİZDE MAĞAZAMIZIN ÖZEL KARTINDAN BULUNUYORSA VE BELLİ BİR PUAN ÜZERİNDE TOPLADIYSA İNDİRİM UYGULANIYOR.
# HER ALIŞVERİŞTE MAĞAZA KART PUANI ARTAR VE MÜŞTERİ PUAN TOPLAR.
if kart == 'E' or kart == 'e':
while True:
try:
magaza_kart = int(input("Müşterinin toplam mağaza kart puanını giriniz : "))
magaza_kart += 10
if magaza_kart >= 100:
indirim_fiyat = (magaza_kart // 300) * 5
sonfiyat = sonfiyat - indirim_fiyat
break
except ValueError:
print("Lütfen integer bir sayı giriniz !!")
break
elif kart == 'H' or kart == 'h':
magaza_kart = 0
sonfiyat = sonfiyat
break
else:
raise BaseException("Lütfen E/e ya da H/h giriniz !!")
except BaseException:
print("Lütfen E/e ya da H/h giriniz !!")
return sonfiyat, magaza_kart
toplamfiyat, magaza_kart = fiyathesapla(urunfiyat)
bilgi["MAĞAZA KART PUANI"] = magaza_kart
dosya2.write("MAĞAZA KART PUANI : " + str(magaza_kart) + "\n")
bilgi["ÖDENEN FİYAT"] = toplamfiyat
dosya.write("ÖDENEN FİYAT : " + str(toplamfiyat) + "\n")
Musteriler[i] = bilgi
print("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
dosya.close()
dosya2.close()
print("\nYENİ SATIŞLAR\n")
print(Musteriler)
# DEPOYA YENİ GELEN ÜRÜNLERİ EKLEME FONKSİYONU
def YeniUrunKayit():
YeniUrun = dict()
while True:
try:
urunsayisi = int(input("Kaç adet yeni ürün bilgisi gireceksiniz ? "))
break
except ValueError:
print("Lütfen integer bir değer giriniz !!")
print("\n")
for i in range(1,urunsayisi+1):
bilgi = dict()
# DEPODAKİ ÜRÜN BİLGİLERİNİ TUTMASI İÇİN ÜRÜNLER.TXT DOSYASI OLUŞTURDUM.
dosya = open("18010011087.txt", "a", encoding="utf-8")
# DEPOYA EKLEDİĞİMİZ ÜRÜNLERE RASTGELE KOD ATAMASI YAPIYOR BÖYLECE DİĞER FONKSİYONLARDA BU KOD İLE ÜRÜNLERE ERİŞECEĞİZ.
kod = random.randint(10000,99999)
bilgi["ÜRÜN KODU"] = kod
dosya.write("ÜRÜN KODU : " + str(kod) + " -- ")
tur = input("{}. Ürünün türünü giriniz.(Örneğin : Pantolon,Gömlek..) : ".format(i))
bilgi["Tür"] = tur.title()
dosya.write("TÜR : " + tur.title() + " -- ")
renk = input("{}. Ürünün rengini giriniz : ".format(i))
bilgi["Renk"] = renk.title()
dosya.write("RENK : " + renk.title() + " -- ")
beden = input("{}. Ürünün bedenini giriniz.(Örneğin : S,M,XL,L.. ya da 36,38..) : ".format(i))
bilgi["Beden"] = beden
dosya.write("BEDEN : " + beden + " -- ")
marka = input("{}. Ürünün markasını giriniz : ".format(i))
bilgi["MARKA"] = marka.title()
dosya.write("MARKA : " + marka.title() + " -- ")
while True:
try:
fiyat = float(input("{}. Ürünün fiyatını giriniz : ".format(i)))
break
except ValueError:
print("Lütfen integer ya da float bir değer giriniz !!")
bilgi["Fiyat"] = fiyat
dosya.write("FİYAT : " + str(fiyat) + "\n")
YeniUrun[i] = bilgi
print("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
dosya.close()
print("\nÜRÜNLER EKLENDİ\n")
print(YeniUrun)
# DEPODAKİ ÜRÜNLER İÇİNDEN ARAMA YAPMA FONKSİYONU
def UrunArama(urun):
dosya = open("18010011087.txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
# TXT DOSYASINI OKUMA MODUNDA AÇTIM VE READLİNES() İLE HER SATIRI TEK TEK OKUDUM.
# OKUNAN SATIRLAR BİR LİSTEDE TUTULUYOR.
for i in satir: # HER SATIRI TEK TEK DOLANARAK İÇİNDE ÜRÜN KODUMUZ BULUNAN SATIRI YAZDIRDIM.
if trlower(urun) in trlower(i):
print("\nÜRÜN BULUNDU\n")
print(i)
# İSTEDİĞİMİZ MÜŞTERİNİN BİLGİLERİNİ ARAMA FONKSİYONU
def MusteriArama(musteriad):
dosya = open("18010011087(3).txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
# TXT DOSYASINI OKUMA MODUNDA AÇTIM VE READLİNES() İLE HER SATIRI TEK TEK OKUDUM.
# OKUNAN SATIRLAR BİR LİSTEDE TUTULUYOR.
for i in satir:
if trlower(musteriad) in trlower(i):
# HER SATIRI TEK TEK DOLANARAK İÇİNDE MÜŞTERİMİZİN ADI BULUNAN SATIRI YAZDIRDIM.
print("\nMÜŞTERİ BİLGİLERİ\n")
print(i)
def SatisBilgisiArama(musteriad,uruntur):
dosya = open("18010011087(2).txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
for i in satir:
if trlower(musteriad) in trlower(i):
if trlower(uruntur) in trlower(i):
print("\nSATIŞ BİLGİSİ BULUNDU\n")
print(i)
# DEPOYA EKLEDİĞİMİZ ÜRÜNLERDEN İSTEDİĞİMİZİ SİLME FONKSİYONU
def UrunSilme(kod):
dosya = open("18010011087.txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
# TXT DOSYASINI OKUMA MODUNDA AÇTIM VE READLİNES() İLE HER SATIRI TEK TEK OKUDUM.
# OKUNAN SATIRLAR BİR LİSTEDE TUTULUYOR.
dosya = open("18010011087.txt", "w", encoding="utf-8")
# SİLME İŞLEMİ DOSYADA DEĞİŞİKLİK YAPACAĞI İÇİN DOSYAYI YAZMA MODUNDA AÇTIM.
for i in satir:
if trlower(kod) in trlower(i):
# HER SATIRI TEK TEK DOLANARAK İÇİNDE ÜRÜN KODUMUZ BULUNAN SATIRIN İNDEKSİNİ ALDIM VE O SATIRI SİLDİM.
indeks = satir.index(i)
del satir[indeks]
print("\nÜRÜN BAŞARIYLA SİLİNDİ.\n")
else:
pass
dosya.writelines(satir) # KALAN SATIRLARI TEKRAR DOSYAMIZA YAZDIRDIM.
dosya.close()
print("\n-- KALAN ÜRÜNLER --\n")
for i in satir:
print(i)
# YAPTIĞIMIZ SATIŞLARIN BİLGİLERİNDEN İSTEDİĞİMİZİ SİLME FONKSİYONU
def SatisBilgisiSilme(musteriad):
dosya = open("18010011087(2).txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
# TXT DOSYASINI OKUMA MODUNDA AÇTIM VE READLİNES() İLE HER SATIRI TEK TEK OKUDUM.
# OKUNAN SATIRLAR BİR LİSTEDE TUTULUYOR.
dosya = open("18010011087(2).txt", "w", encoding="utf-8")
# SİLME İŞLEMİ DOSYADA DEĞİŞİKLİK YAPACAĞI İÇİN DOSYAYI YAZMA MODUNDA AÇTIM.
for i in satir:
if trlower(musteriad) in trlower(i):
# HER SATIRI TEK TEK DOLANARAK İÇİNDE MÜŞTERİMİZİN ADI BULUNAN SATIRIN İNDEKSİNİ ALDIM VE O SATIRI SİLDİM.
indeks = satir.index(i)
del satir[indeks]
print("\nKAYIT BAŞARIYLA SİLİNDİ.\n")
else:
pass
dosya.writelines(satir) # KALAN SATIRLARI TEKRAR DOSYAMIZA YAZDIRDIM.
dosya.close()
print("\n-- KAYITLI SATIŞ BİLGİLERİ --\n")
for i in satir:
print(i)
# İSTEDİĞİMİZ MÜŞTERİNİN KAYDINI SİLME FONKSİYONU
def MusteriKayitSilme(isim):
dosya = open("18010011087(3).txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
# TXT DOSYASINI OKUMA MODUNDA AÇTIM VE READLİNES() İLE HER SATIRI TEK TEK OKUDUM.
# OKUNAN SATIRLAR BİR LİSTEDE TUTULUYOR.
dosya = open("18010011087(3).txt", "w", encoding="utf-8")
# SİLME İŞLEMİ DOSYADA DEĞİŞİKLİK YAPACAĞI İÇİN DOSYAYI YAZMA MODUNDA AÇTIM.
for i in satir:
if trlower(isim) in trlower(i):
# HER SATIRI TEK TEK DOLANARAK İÇİNDE MÜŞTERİMİZİN ADI BULUNAN SATIRIN İNDEKSİNİ ALDIM VE O SATIRI SİLDİM.
indeks = satir.index(i)
del satir[indeks]
print("\nMÜŞTERİ BAŞARIYLA SİLİNDİ.\n")
else:
pass
dosya.writelines(satir) # KALAN SATIRLARI TEKRAR DOSYAMIZA YAZDIRDIM.
dosya.close()
print("\n-- KAYITLI MÜŞTERİ BİLGİLERİ --\n")
for i in satir:
print(i)
# ÜRÜNLER.TXT DOSYASINDAKİ BİLGİLERİ BU FONKSİYON İLE ALDIM (HER SATIRDAKİ BİLGİLERİ TEK TEK ALDIM).
# BU FONKSİYONDAN DÖNEN DEĞERLERİ DİĞER FONKSİYONLARDA KULLANMAK İÇİN BU FONKSİYONU YAZDIM.
def UrunBilgisi(kod):
with open("18010011087.txt", "r", encoding="utf-8") as dosya:
for bilgi in dosya:
bilgi = bilgi[:-1]
bilgiler = bilgi.split(" -- ") # BİLGİLER ARASINDA -- İŞARETİ OLDUĞU İÇİN -- İŞARETİNDEN AYIRARAK İNDEKSLEME YAPTIM.
if kod in bilgiler[0]:
tur = bilgiler[1]
renk = bilgiler[2]
beden = bilgiler[3]
marka = bilgiler[4]
fiyat = bilgiler[5]
return tur,renk,beden,marka,fiyat
# DEPODAKİ ÜRÜNLERİN İSTEDİĞİMİZ ÖZELLİKLERİNİ GÜNCELLEME FONKSİYONU
def UrunGuncelleme(kod):
dosya = open("18010011087.txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
# TXT DOSYASINI OKUMA MODUNDA AÇTIM VE READLİNES() İLE HER SATIRI TEK TEK OKUDUM.
# OKUNAN SATIRLAR BİR LİSTEDE TUTULUYOR.
for i in satir:
if trlower(kod) in trlower(i):
tur, renk, beden, marka, fiyat = UrunBilgisi(kod) # YUKARIDA YAZDIĞIM FONKSİYON İLE ÜRÜNLER.TXT DOSYASI İÇİNDEKİ DEĞERLERİ ALDIM.
indeks = satir.index(i)
print("\n",i,"\n")
dosya = open("18010011087.txt", "w", encoding="utf-8")
# GÜNCELLEME İŞLEMİ DOSYADA DEĞİŞİKLİK YAPACAĞI İÇİN DOSYAYI YAZMA MODUNDA AÇTIM.
secim = input("1 : Tür / 2 : Renk / 3 : Beden / 4 : Marka / 5 : Fiyat\nLütfen güncellemek istediğiniz özelliği seçiniz : ")
# SEÇİLEN ÖZELLİĞE GÖRE ÜRÜNÜ GÜNCELLEYİP TEKRAR DOSYAYA YAZDIRDIM.
if secim == "1":
tur2 = input("Tür giriniz : ")
tur = tur2
eklenecekler = "ÜRÜN KODU : " + kod + " -- TÜR : " + tur.title() + " -- " + renk.title() + " -- " + beden + " -- " + marka.title() + " -- " + str(
fiyat) + "\n"
elif secim == "2":
renk2 = input("Renk giriniz : ")
renk = renk2
eklenecekler = "ÜRÜN KODU : " + kod + " -- " + tur.title() + " -- RENK : " + renk.title() + " -- " + beden + " -- " + marka.title() + " -- " + str(
fiyat) + "\n"
elif secim == "3":
beden2 = input("Beden giriniz : ")
beden = beden2
eklenecekler = "ÜRÜN KODU : " + kod + " -- " + tur.title() + " -- " + renk.title() + " -- BEDEN : " + beden + " -- " + marka.title() + " -- " + str(
fiyat) + "\n"
elif secim == "4":
marka2 = input("Marka giriniz : ")
marka = marka2
eklenecekler = "ÜRÜN KODU : " + kod + " -- " + tur.title() + " -- " + renk.title() + " -- " + beden + " -- MARKA : " + marka.title() + " -- " + str(
fiyat) + "\n"
elif secim == "5":
fiyat2 = float(input("Fiyat giriniz : "))
fiyat = fiyat2
eklenecekler = "ÜRÜN KODU : " + kod + " -- " + tur.title() + " -- " + renk.title() + " -- " + beden + " -- " + marka.title() + " -- FİYAT : " + str(
fiyat) + "\n"
del satir[indeks]
# HER KOŞULA GÖRE AYRI STRİNGLER OLUŞTURDUM VE EN SONDA BU STRİNGİ DOSYAYA EKLEDİM.
eklenecekler = str(eklenecekler)
satir.insert(indeks, eklenecekler)
dosya.writelines(satir)
dosya.close()
print("\nGÜNCELLEME BAŞARILIYLA TAMAMLANDI.\n")
break
else:
pass
print("\n-- GÜNCEL ÜRÜNLER --\n")
for i in satir:
print(i)
# SATİSVEMUSTERİLER.TXT DOSYASINDAKİ BİLGİLERİ BU FONKSİYON İLE ALDIM (HER SATIRDAKİ BİLGİLERİ TEK TEK ALDIM).
# BU FONKSİYONDAN DÖNEN DEĞERLERİ DİĞER FONKSİYONLARDA KULLANMAK İÇİN BU FONKSİYONU YAZDIM.
def BilgiCekme(musteriad):
with open("18010011087(2).txt", "r", encoding="utf-8") as dosya:
for bilgi in dosya:
bilgi = bilgi[:-1]
bilgiler = bilgi.split(" -- ") # BİLGİLER ARASINDA -- İŞARETİ OLDUĞU İÇİN -- İŞARETİNDEN AYIRARAK İNDEKSLEME YAPTIM.
if trlower(musteriad) in trlower(bilgiler[0]):
ad = bilgiler[0]
tur = bilgiler[1]
renk = bilgiler[2]
beden = bilgiler[3]
marka = bilgiler[4]
fiyat = bilgiler[5]
odenen = bilgiler[6]
return ad, tur, marka, fiyat, odenen, renk, beden
# MUSTERİLER.TXT DOSYASINDAKİ BİLGİLERİ BU FONKSİYON İLE ALDIM (HER SATIRDAKİ BİLGİLERİ TEK TEK ALDIM).
# BU FONKSİYONDAN DÖNEN DEĞERLERİ DİĞER FONKSİYONLARDA KULLANMAK İÇİN BU FONKSİYONU YAZDIM.
def MusteriBilgi(ad):
with open("18010011087(3).txt", "r", encoding="utf-8") as dosya:
for bilgi in dosya:
bilgi = bilgi[:-1]
bilgiler = bilgi.split(" -- ") # BİLGİLER ARASINDA -- İŞARETİ OLDUĞU İÇİN -- İŞARETİNDEN AYIRARAK İNDEKSLEME YAPTIM.
if trlower(ad) in trlower(bilgiler[0]):
ad = bilgiler[0]
numara = bilgiler[1]
kart = bilgiler[2]
return ad, numara, kart
# MÜŞTERİ BİLGİSİ GÜNCELLEME FONKSİYONU
def MusteriBilgisiGuncelleme(guncelad):
dosya = open("18010011087(3).txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
# TXT DOSYASINI OKUMA MODUNDA AÇTIM VE READLİNES() İLE HER SATIRI TEK TEK OKUDUM.
# OKUNAN SATIRLAR BİR LİSTEDE TUTULUYOR.
for i in satir:
if trlower(guncelad) in trlower(i):
ad, numara, kart = MusteriBilgi(guncelad) # YUKARIDA YAZDIĞIM FONKSİYON İLE MUSTERİLER.TXT DOSYASINDAKİ BİLGİLERİ ALDIM.
indeks = satir.index(i)
print("\n",i,"\n")
dosya = open("18010011087(3).txt", "w", encoding="utf-8")
# GÜNCELLEME İŞLEMİ DOSYADA DEĞİŞİKLİK YAPTIĞI İÇİN YAZMA MODUNDA AÇTIM.
secim = input("1 : Ad Soyad / 2 : Telefon Numarası / 3: Mağaza Kart Puanı\nLütfen güncellemek istediğiniz durumu seçiniz : ")
# YAPILAN SEÇİME GÖRE MÜŞTERİ BİLGİSİNİ GÜNCELLEDİ VE DOSYAYA YAZDI.
if secim == "1":
ad2 = input("Müşteri adı ve soyadı giriniz : ")
ad = ad2
eklenecekler = "MÜŞTERİ AD-SOYAD : " + ad.title() + " -- " + numara + " -- " + kart + "\n"
elif secim == "2":
numara2 = input("Müşteri telefon numarası giriniz : ")
numara = numara2
eklenecekler = ad.title() + " -- MÜŞTERİ TELEFON NUMARASI : " + numara + " -- " + kart + "\n"
elif secim == "3":
kart2 = input("Müşterinin mağaza kart puanını giriniz : ")
kart = kart2
eklenecekler = ad.title() + " -- " + numara + " -- MAĞAZA KART PUANI : " + kart + "\n"
del satir[indeks]
# HER KOŞULA GÖRE AYRI STRİNGLER OLUŞTURDUM VE EN SONDA BU STRİNGİ DOSYAYA EKLEDİM.
eklenecekler = str(eklenecekler)
satir.insert(indeks, eklenecekler)
dosya.writelines(satir)
dosya.close()
print("\nGÜNCELLEME BAŞARILIYLA TAMAMLANDI.\n")
break
else:
pass
print("\n-- GÜNCEL MÜŞTERİ BİLGİLERİ --\n")
for i in satir:
print(i)
# YAPTIĞIMIZ SATIŞLARDA İSTEYEN MÜŞTERİLERİMİZİN ÜRÜN DEĞİŞİMİNİ YAPAN FONKSİYON
def UrunDegisim(musteri,urun):
dosya = open("18010011087(2).txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
# TXT DOSYASINI OKUMA MODUNDA AÇTIM VE READLİNES() İLE HER SATIRI TEK TEK OKUDUM.
# OKUNAN SATIRLAR BİR LİSTEDE TUTULUYOR.
for i in satir:
if trlower(musteri) in trlower(i):
if trlower(urun) in trlower(i):
ad, tur, marka, fiyat, odeme, mevcutrenk, mevcutbeden = BilgiCekme(musteri)
# YUKARIDA YAZDIĞIM FONKSİYON İLE SATIŞ BİLGİLERİNİ ALDIM.
indeks = satir.index(i)
print("\n",i,"\n")
print("\nSadece beden ve renk değişimi yapabilirsiniz.\n")
dosya = open("18010011087(2).txt", "w", encoding="utf-8")
secim = input("Renk değişimi : R / Beden değişimi : B\n Seçim : ")
# DEĞİŞİM YAPAN MÜŞTERİNİN SATIŞ BİLGİSİNDE DEĞİŞİM YAPILDIĞI NOT OLARAK GÖRÜNÜYOR.
# SEÇİME GÖRE MÜŞTERİNİN 2 ÖZELLİKTEN BİRİNİ DEĞİŞTİRME HAKKI VAR.
# DOSYA BUNA GÖRE YENİDEN YAZILIYOR.
del satir[indeks]
if secim == "R" or secim == "r":
renk = input("Renk giriniz : ")
beden = mevcutbeden
eklenecekler = ad.title() + " -- " + tur.title() + " (DEĞİŞİM YAPILDI) -- ÜRÜN RENK : " + renk.title() + " -- " + beden + " -- " + marka + " -- " + fiyat + " -- " + odeme + "\n"
elif secim == "B" or secim == "b":
beden = input("Beden giriniz : ")
renk = mevcutrenk
eklenecekler = ad.title() + " -- " + tur.title() + " (DEĞİŞİM YAPILDI) -- " + renk.title() + " -- ÜRÜN BEDEN : " + beden + " -- " + marka + " -- " + fiyat + " -- " + odeme + "\n"
# HER KOŞULA GÖRE AYRI STRİNGLER OLUŞTURDUM VE EN SONDA BU STRİNGİ DOSYAYA EKLEDİM.
eklenecekler = str(eklenecekler)
satir.insert(indeks, eklenecekler)
dosya.writelines(satir)
dosya.close()
print("\nDEĞİŞİM YAPILDI.\n")
break
else:
pass
else:
pass
print("\n-- GÜNCEL SATIŞLAR DURUMU --\n")
for i in satir:
print(i)
# YAPTIĞIMIZ SATIŞLARDA İSTEYEN MÜŞTERİLERİMİZİN ÜRÜN İADESİNİ YAPAN FONKSİYON
def UrunIade(musteri,urun):
dosya = open("18010011087(2).txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
# TXT DOSYASINI OKUMA MODUNDA AÇTIM VE READLİNES() İLE HER SATIRI TEK TEK OKUDUM.
# OKUNAN SATIRLAR BİR LİSTEDE TUTULUYOR.
for i in satir:
if trlower(musteri) in trlower(i):
if trlower(urun) in trlower(i):
ad, tur, marka, fiyat, odeme, renk, beden = BilgiCekme(musteri)
# YUKARIDA YAZDIĞIM FONKSİYON İLE SATIŞ BİLGİLERİNİ ALDIM.
indeks = satir.index(i)
print("\n",i,"\n")
dosya = open("18010011087(2).txt", "w", encoding="utf-8")
# İADE YAPAN MÜŞTERİNİN SATIŞ BİLGİSİNDE İADE EDİLDİĞİ NOT OLARAK GÖRÜNÜYOR.
# DOSYA BUNA GÖRE YENİDEN YAZILIYOR.
del satir[indeks]
eklenecekler = ad.title() + " -- ÜRÜN TÜR : "+ urun.title() + " (ÜRÜN MÜŞTERİ TARAFINDAN İADE EDİLDİ) -- " + renk + " -- " + beden + " -- " + marka + " -- " + fiyat + " -- " + odeme + "\n"
eklenecekler = str(eklenecekler)
satir.insert(indeks, eklenecekler)
dosya.writelines(satir)
dosya.close()
print("\nİADE İŞLEMİ YAPILDI.\n")
break
else:
pass
else:
pass
print("\n-- GÜNCEL SATIŞ DURUMU --\n")
for i in satir:
print(i)
# BELİRLİ BİR FİYAT VE ÜZERİNDE KAÇ ALIŞVERİŞ YAPILDIĞINI KULLANICIYA SÖYLEYEN FONKSİYON
def FiyataGoreListeleme(arananfiyat):
with open("18010011087(2).txt", "r", encoding="utf-8") as dosya:
sayac = 0
for fiyat in dosya:
fiyat = fiyat[:-1]
# DOSYADAKİ SATIRLARI "ÖDENEN FİYAT : " STRİNGİNE GÖRE AYIRDIM VE SON İNDİSE FİYAT KISMI KALDI.
fiyatlar = fiyat.split("ÖDENEN FİYAT : ")
aranan = fiyatlar[-1]
aranan = float(aranan) # STRİNGİ FLOATA ÇEVİRDİM VE KOŞULU SAĞLAYIP SAĞLAMADIĞINA BAKTIM.
if aranan >= arananfiyat :
sayac += 1
print(fiyatlar[0] +"ÖDENEN FİYAT : " +fiyatlar[1])
else:
pass
print("\n{} tane {} TL ve üzeri satış yapılmıştır.".format(sayac,arananfiyat))
# EN ÇOK ALIŞVERİŞ YAPAN MÜŞTERİLERİ LİSTELEYEN FONKSİYON
def EnCokAlisverisYapanMusteriler():
with open("18010011087(3).txt", "r", encoding="utf-8") as dosya:
print("\nEN ÇOK ALIŞVERİŞ YAPAN MÜŞTERİLER\n")
for fiyat in dosya:
fiyat = fiyat[:-1]
# DOSYADAKİ SATIRLARI "MAĞAZA KART PUANI : " STRİNGİNE GÖRE AYIRDIM VE SON İNDİSE KART PUANI KISMI KALDI.
fiyatlar = fiyat.split("MAĞAZA KART PUANI : ")
aranan = fiyatlar[-1]
aranan = int(aranan)
if aranan >= 300: # MAĞAZA KART PUANI 300 ÜZERİNDE OLAN MÜŞTERİLERİ LİSTELE BU MÜŞTERİLER EN ÇOK ALIŞVERİŞ YAPANLAR GRUBUNA GİRİYOR.
print("\nMağaza kart puanı 300 ve üzeri olan daimi müşterilerimiz : \n")
print(fiyat)
else:
pass
# DEPODAKİ ÜRÜNLERİ LİSTELEYEN FONKSİYON
def UrunListele():
dosya = open("18010011087.txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
print("\nDEPODAKİ ÜRÜNLER\n")
for i in satir:
print(i)
# SİSTEMDE KAYITLI MÜŞTERİLERİMİZİN TAMAMINI KULLANICIYA LİSTELEYEN FONKSİYON
def MusteriListele():
dosya = open("18010011087(3).txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
print("\nKAYITLI MÜŞTERİ BİLGİLERİ\n")
for i in satir:
print(i)
# YAPILAN BÜTÜN SATIŞLARIN BİLGİSİNİ KULLANICIYA LİSTELEYEN FONKSİYON
def SatisBilgisiListele():
dosya = open("18010011087(2).txt", "r", encoding="utf-8")
satir = dosya.readlines()
dosya.close()
print("\nYAPILAN BÜTÜN SATIŞLARIN BİLGİLERİ\n")
for i in satir:
print(i)
def menu():
print("\n---- MAĞAZA OTOMASYONUNA HOŞGELDİNİZ ----")
print("\nNOT : GÖNDERDİĞİM DOSYA ÜRÜN BİLGİLERİNİ TUTTUĞU İÇİN ÜRÜN ARAMA, ÜRÜN GÜNCELLEME, ÜRÜN LİSTELEME, ÜRÜN SİLME İŞLEMLERİNİ DİREKT ÇALIŞTIRABİLİRSİNİZ.", "DİĞER İŞLEMLERİ YAPMAK İÇİN ÖNCELİKLE SATIŞ YAP İŞLEMİNİ YAPMANIZ GEREKLİ ÇÜNKÜ MÜŞTERİ BİLGİLERİ VE SATIŞ BİLGİLERİ DOSYALARI O FONKSİYONDA OLUŞUYOR.","BENİM GÖNDERDİĞİM SADECE ÜRÜN BİLGİLERİNİ İÇEREN TXT DOSYASI.PROJEMDE 3 TANE DOSYA KULLANDIM.\n")
while True:
# MENÜDE BAZI İŞLEMLER 2 VEYA 3 DOSYA ÜZERİNDE DE GERÇEKLEŞEBİLECEĞİ İÇİN ALT KISIMLARA AYIRDIM.
print("\n-------------------------------------------------------------------------------\n")
menu = input(
"1) SATIŞ YAP\n2) YENİ ÜRÜN EKLE\n3) ARAMA İŞLEMLERİ\n\t-Ürün Arama\n\t-Müşteri Arama\n\t-Satış Bilgisi Arama\n4) SİLME İŞLEMLERİ\n\t-Ürün Silme\n\t-Satış Bilgisi Silme\n\t-Müşteri Kaydı Silme\n5) ÜRÜN DEĞİŞİMİ\n6) ÜRÜN İADE\n7) GÜNCELLEME İŞLEMLERİ\n\t-Ürün Güncelleme\n\t-Müşteri Kayıt Bilgisi Güncelleme\n8) LİSTELEME İŞLEMLERİ\n\t-Depodaki Ürünleri Listele\n\t-Kayıtlı Müşteri Bilgilerini Listele\n\t-Mevcut Satış Bilgilerini Listele\n\t-En Çok ALışveriş Yapan Müşterileri Listele\n9) ... TL ve Üzeri Yapılan Satışlar\n10) Çıkış\nLütfen menü seçiniz : ")
print("\n-------------------------------------------------------------------------------\n")
if menu == "1":
SatisYap()
elif menu == "2":
YeniUrunKayit()
elif menu == "3":
while True:
print("\n-------------------------------------------------------------------------------\n")
secim = input("1) Ürün Arama\n2) Müşteri Arama\n3) Satış Bilgisi Arama\n4) Ana Menü\nLütfen menü seçiniz : ")
print("\n-------------------------------------------------------------------------------\n")
if secim == "1":
urun = input("Aramak istediğiniz ürünün kodunu giriniz.(Kodu bilmiyorsanız ürünün türünü giriniz.) : ")
UrunArama(urun)
elif secim == "2":
musteriad = input("Aramak istediğiniz müşterinin adını ve soyadını giriniz : ")
MusteriArama(musteriad)
elif secim == "3":
musteriad = input("Satış bilgisini aradığınız müşterinin adını giriniz : ")
uruntur = input("Müşterinin aldığı ürünün türünü giriniz : ")
SatisBilgisiArama(musteriad, uruntur)
elif secim == "4":
break
else:
print("Geçersiz menü seçimi!")
elif menu == "4":
while True:
print("\n-------------------------------------------------------------------------------\n")
secim = input(
"1) Ürün Silme\n2) Satış Bilgisi Silme\n3) Müşteri Kaydı Silme\n4) Ana Menü\nLütfen menü seçiniz : ")
print("\n-------------------------------------------------------------------------------\n")
# SİLME İŞLEMİNDEN ÖNCE BİLGİLERİ EKRANA YAZDIRDIM KULLANICININ GÖRMESİ İÇİN.
if secim == "1":
dosya = open("18010011087.txt", "r", encoding="utf-8")
satir = dosya.readlines()
for i in satir:
print(i)
dosya.close()
kod = input("Silmek istediğiniz ürünün kodunu giriniz : ")
UrunSilme(kod)
elif secim == "2":
dosya = open("18010011087(2).txt", "r", encoding="utf-8")
satir = dosya.readlines()
for i in satir:
print(i)
dosya.close()
ad = input("Satış bilgilerini silmek istediğiniz müşterinin adını ve soyadınız giriniz : ")
SatisBilgisiSilme(ad)
elif secim == "3":
dosya = open("18010011087(3).txt", "r", encoding="utf-8")
satir = dosya.readlines()
for i in satir:
print(i)
dosya.close()
isim = input("Sistemden kaydını silmek istediğiniz müşterinin adını ve soyadını giriniz : ")
MusteriKayitSilme(isim)
elif secim == "4":
break
else:
print("Geçersiz menü seçimi!")
elif menu == "5":
musteri = input("Değişim işlemi yapacak müşterinin adını ve soyadını giriniz : ")
urun = input("Değişimi yapılacak ürünün türünü giriniz : ")
UrunDegisim(musteri, urun)
elif menu == "6":
musteri = input("İade işlemi yapacak müşterinin adını ve soyadını giriniz : ")
urun = input("İadesi yapılacak ürünün türünü giriniz : ")
UrunIade(musteri, urun)
elif menu == "7":
while True:
# GÜNCELLEME İŞLEMİNDEN ÖNCE BİLGİLERİ EKRANA YAZDIRDIM KULLANICININ GÖRMESİ İÇİN.
print("\n-------------------------------------------------------------------------------\n")
secim = input(
"1) Ürün Güncelleme\n2) Müşteri Kayıt Bilgisi Güncelleme\n3) Ana Menü\nLütfen menü seçiniz : ")
print("\n-------------------------------------------------------------------------------\n")
if secim == "1":
dosya = open("18010011087.txt", "r", encoding="utf-8")
satir = dosya.readlines()
for i in satir:
print(i)
dosya.close()
kod = input("Güncellemek istediğiniz ürünün kodunu giriniz : ")
UrunGuncelleme(kod)
elif secim == "2":
dosya = open("18010011087(3).txt", "r", encoding="utf-8")
satir = dosya.readlines()
for i in satir:
print(i)
dosya.close()
guncelad = input("Güncellemek istediğiniz müşterinin adını ve soyadını giriniz : ")
MusteriBilgisiGuncelleme(guncelad)
elif secim == "3":
break
else:
print("Geçersiz menü seçimi!")
elif menu == "8":
while True:
print("\n-------------------------------------------------------------------------------\n")
secim = input(
"1) Depodaki Ürünleri Listele\n2) Kayıtlı Müşteri Bilgilerini Listele\n3) Mevcut Satış Bilgilerini Listele\n4) En Çok Alışveriş Yapan Müşterileri Listele\n5) Ana Menü\nLütfen menü seçiniz : ")
print("\n-------------------------------------------------------------------------------\n")
if secim == "1":
UrunListele()
elif secim == "2":
MusteriListele()
elif secim == "3":
SatisBilgisiListele()
elif secim == "4":
EnCokAlisverisYapanMusteriler()
elif secim == "5":
break
else:
print("Geçersiz menü seçimi!")
elif menu == "9":
aranacakfiyat = float(input("Aramak istediğiniz fiyatı giriniz : "))
FiyataGoreListeleme(aranacakfiyat)
elif menu == "10":
print("ÇIKIŞ YAPILIYOR..")
exit()
else:
print("Geçersiz menü seçimi!")
menu()