/* Bu basit uygulama bir kullanıcıının forex işlemlerinin * kaydının tutulmasını ve sorgulanmasını simüle etmektedir */ #include #include #include #include #define DOSYA_ADI "data" struct fv { struct tm tarih; char dvz[4]; char islemTur; float miktar; float kur; } typedef fiyatveri; void flushStdInBuffer() { scanf("%*[^\n]"); scanf("%*c"); } int tarihAl(struct tm *date) { char buffer[20]; memset(date, 0, sizeof(*date)); // memset(buffer, 0, sizeof(buffer)); printf("\nİşlem Tarihini Giriniz (gg/aa/yy): "); if (fgets(buffer, sizeof(buffer), stdin) == NULL) { perror("Hata: "); return -1; } if (sscanf(buffer, "%d/%d/%d", &date->tm_mday, &date->tm_mon, &date->tm_year) == 3) { if (date->tm_mday > 31 || date->tm_mday < 1 || date->tm_mon > 12 || date->tm_mon < 1) { fprintf(stderr, "Hatalı tarih değeri\n"); return -1; } } return 0; } int dvzAl(char *dvz) { memset(dvz, 0, 4); printf("Döviz Türü (usd/eur/gbp): "); if (fgets(dvz, 4, stdin) == NULL) { perror("Hata: "); return -1; } return 0; } int dvzKontrolEt(char *dvz) { char *baz[] = {"usd", "gbp", "eur", "btc"}; int len = sizeof(baz) / sizeof(baz[0]); int i; for (i = 0; i < len; i++) { if (strcmp(baz[i], dvz) == 0) { return 1; } } return 0; } int yaz(fiyatveri v) { FILE *pDosya; pDosya = fopen(DOSYA_ADI, "a+"); if (pDosya == NULL) { pDosya = fopen(DOSYA_ADI, "w"); if (pDosya == NULL) { perror("Hata: "); return -1; } } fwrite(&v, sizeof(v), 1, pDosya); fclose(pDosya); return 0; } int islemGir() { int rc; fiyatveri v; // tarihi alalım rc = tarihAl(&v.tarih); if (rc != 0) { return rc; } // döviz cinsi do { rc = dvzAl(v.dvz); if (rc != 0) { return rc; } flushStdInBuffer(); } while (dvzKontrolEt(v.dvz) == 0); do { printf("İşlem Türü ( [a]lış / [s]atış ): "); scanf("%c%*c", &v.islemTur); } while (v.islemTur != 97 && v.islemTur != 115); do { printf("İşlem Kuru: "); scanf("%f%*c", &v.kur); } while (v.kur <= 0); do { printf("İşlem Miktaı: "); scanf("%f%*c", &v.miktar); } while (v.miktar <= 0); rc = yaz(v); if (rc != 0) { return rc; } return 0; } void islemListele() { FILE *pDosya; fiyatveri v; pDosya = fopen(DOSYA_ADI, "a+"); if (pDosya == NULL) { printf("Veri dosyası okunamadı. Hiç veri girilmemiş olabilir"); return; } printf("Tarih\t\tDvz\t\tİşlem\tKur\t\t\tİşlem Miktarı\n"); while (fread(&v, sizeof(v), 1, pDosya) == 1) { printf("%d/%d/%d", v.tarih.tm_mday, v.tarih.tm_mon, v.tarih.tm_year); printf("\t%s", v.dvz); printf("\t\t %c", v.islemTur); printf("\t\t%.4f", v.kur); printf("\t\t%.2f", v.miktar); printf("\n"); } } int menu() { int secim = -1; printf("\n\n-------------------------------------------------\n"); printf("(1) İşlem girişi \n"); printf("(2) İşlemleri Listele \n"); printf("ÇIKIŞ İÇİN : 0 \n"); printf("-------------------------------------------------\n\n"); printf("Seçiminizi Giriniz: "); do { scanf("%d%*c", &secim); if (secim < 0 || secim > 3) { printf("\nYanlış değer girdiniz tekrar giriş yapınız: "); } } while (secim < 0 || secim > 3); return secim; } int main() { int secim = 0; int rc; do { rc = 0; secim = menu(); switch (secim) { case 1: islemGir(); break; case 2: islemListele(); break; case 3: //kokluFormul(); break; case 0: return 0; } } while (1 < 2); }