首页 > 解决方案 > 使用操作文件制作程序

问题描述

我是编程新手,我正在尝试创建一个程序来学习。我在 3 周内完成了这个 ATM 程序,但程序中仍然存在错误。我正在尝试创建一个程序,该程序需要在 nasabah 中存储一个帐户。txt 并且每笔交易都将保存在每个帐户的历史记录中。

当我创建帐户时,名称不会显示在 .txt 文件中,当我想取钱时,金额为 0,这是我输入余额 5000000 的地方,你们能帮我解决这个问题吗?

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <time.h>

FILE *fp, *fr[2];

struct alamat {
    char jl[25];
    char kota[25];
    int pos[6];
};

struct nasabah{
    char id[11];
    char pin[6];
    char nama[50];
    struct alamat rumah;
    int saldo;
};

struct nasabah user[3];

time_t now;

void bahasa(); void login(); void utama (); void tarik(); void ambil(); void transfer();
void pembayaran(); void cek_saldo(); void ganti_pin(); void payment(); void byr_payment();
void pay(); void byr_tel(); void hp(); void pln(); void nulis(); void mari();

char buff[100], pbahasa, menu, pin[9], pil, bayar, bpln, pilpay, bpayment, btel;
int tambil, cek, nid, bpay, pins, lpin, notel, i, fro,saldo;



void main(){
    system("cls");
    fp=fopen("nasabah.txt","r+");
        while(fgets(buff, sizeof(buff), fp) !=NULL)
        {
            if (buff[0] !='\n')
                sscanf(buff,"%[^,],%[^,],%[^,],%d,%[^,],%[^,],%[^,]",user[i].id,user[i].nama,user[i].pin,&user[i].saldo,user[i].rumah.jl,user[i].rumah.kota,user[i].rumah.pos);
                else i--;
                i++;
        }
    system("cls");
    printf("\n\t\t\t SELAMAT DATANG DI BANK KG\n\n\n\n");
    printf("\t\t\t SILAHKAN MASUKKAN KARTU ANDA\n\n");
    printf("\n\n\t\t tekan 1 untuk memasukkan kartu");
    printf("\n\n\t\t tekan 2 untuk membuat akun"); 
    pil=getch();
    if (pil=='1') bahasa(); 
    else if(pil=='2') buatakun(); 
    else main();
}

void buatakun(){
    system("cls");
    fp=fopen("nasabah.txt","a");
    
    for(int i=0; i<1; i++){
        printf("masukkan nama anda : ");
        scanf("%s",user[i].nama);
        printf("masukkan nomor rekening yang anda inginkan : ");
        scanf("%s",user[i].id);
        printf("masukkan pin yang anda inginkan            : ");
        scanf("%s",user[i].pin);
        printf("masukkan saldo untuk setor tunai           : ");
        scanf("%d",&user[i].saldo);
    }
     for (int i = 0; i < 1; i++)
    {
        fprintf(fp, "%s\t%s\t%s\t%d\n", user[i].nama, user[i].id, user[i].pin,user[i].saldo);
    }
    fclose(fp);
    main();
}


void bahasa(){

    system("cls");
    printf("\n\t\t\t SELAMAT DATANG DI BANK KG\n\n\n\n");
    printf("\n\t\t\t SILAHKAN PILIH BAHASA\n\n");
    printf("\t\t\t PLEASE SELECT THE LANGUAGE \n\n");
    printf("1. ENGILISH \t 2. INDONESIA\n\n");
    pbahasa=getch();
    if (pbahasa=='1' || pbahasa=='2') login();
    else{
        system("cls");
        printf("\t\t\t MAAF PILIHAN BAHASA TIDAK TERSEDIA.\n\t\t\t MOHON ULANGI PILIH BAHASA\n\n");
        printf("\t\t\t SORRY LANGUAGE IS UNAVAILABLE.\n\t\t\t PLEASE CHOICE THE LANGUAGE AGAIN"); 
        Sleep(3000);
    }bahasa();
}

void login(){
    fp=fopen("nasabah.txt","r+");
    char id[11];
    int cpin=0;
    system("cls");
    if (pbahasa=='1'){
        printf("\n\t\t\t WELCOME TO BANK KG\n\n\n\\n");
        printf("\t\t\t PLEASE ENTER YOUR ID NUMBER :\n\n\t\t\t");
    }
    else{printf("\n\t\t\t SELAMAT DATANG DI BANK KG\n\n\n\n");
    printf("\t\t\t SILAHKAN MASUKKAN ID ANDA :\n\n\t\t\t");};
    gets(id);
    fscanf(fp, "%s", user[i].id);
    for (i=0;i<3;i++){
        if(strcmp(id,user[i].id) == 0){
            if (strcmp(user[i].pin, "blokir") ==0){
                if(pbahasa == '1') 
                printf("sorry, your account has been blocked.\nplease contact our customer services");
                else 
                printf("maaf, akun anda telah diblokir.\nsilahkan hubyungi customer service kami.");
                Sleep(3000); 
                main();
            }
            else{
                for (cpin=0; cpin<3; cpin++){
                    system("cls");
                    if(pbahasa=='1'){
                        printf("\n\t\t\t WELCOME TO BANK KG\n\n\n\n");
                        printf("\t\t\t PLEASE ENTER YOUR PIN:\n\t\t\t");
                    }
                    else{
                        printf("\n\t\t\t SELAMAT DATANG DI BANK KG\n\n\n\n");
                        printf("\t\t\t SILAHKAN MASUKKAN PIN ANDA :\n\t\t\t");
                    }
                    gets(pin);
                    fscanf(fp, "%s", user[i].pin);
                    if(strcmp(pin,user[i].pin) ==0)
                        utama();
                    else
                    {
                        if (pbahasa == '1'){system("cls"); printf("\n\n\n\t\t SORRY, YOUR ENTERED THE WRONG PIN."); Sleep(2000); 
                        }
                        else {
                            system("cls"); printf("\n\t\t\tMAAF, PIN YANG ANDA MASUKKAN SALAH.\n"); Sleep(2000); 
                            }
                    }
                    }
                        strcpy(user[i].pin,"blokir");
                    if (pbahasa =='1'){
                        printf ("\n\nSORRY, YOUR ACCOUNT HAS BEEN BLOCKED.\nBECAUSE YOU ENTERING THE WRONG PIN THREE TIMES.");
                        printf("\nPLEASE CONTACT OUR CUSTOMER SERVICES");
                    }
                    else {
                        printf("\n\nMAAF, AKUN ANDA TELAH TERBLOKIR.\nKARENA KESALAHAN MEMASUKKAN PIN TIGA KALI.");
                        printf("\nSILAHKAN HUBUNGI CUSTOMER SERVICES KAMI.");
                    }
                    Sleep(3000);
                    main();
                }
        }
    }
                    if(pbahasa=='1'){
                        system("cls");
                        printf("\n\t\t SORRY, THE ID YOUR ENTERED IS NO REGISTERED.\n\t\t\t PLEASEENTER YOUR ID CORRECTLY.");
                    }
                    else
                    {
                        system("cls");
                        printf("\n\t\t MAAF, ID YANG ANDA MASUKKAN TIDAK TERDAFTAR.\n\t\t\t SILAHKAN MASUKKAN ID DENGAN BENAR.");
                    }Sleep(3000); 
                    login();
    fclose(fp);
};

void utama(){
    char menu;
    system("cls");
    if (pbahasa == '1'){
        printf("\n\t\t\t MAIN MENU\n\n\t\tBANK NOTES RP.50.000\n\n");
        printf("\n1. 100.000\t\t\t2. 200.000\n");
        printf("\n3. 300.000\t\t\t4. 500.000\n");
        printf("\n5. PAYMENT\t\t\t6. WITHDRAWAL OTHER AMOUNT\n");
        printf("\n7. CHECK BALANCE\t\t\t8. CHANGE PIN");
        printf("\n9. TRANSFER\n\n");
    }
    else{
        printf("\n\t\t\tMENU UTAMA\n\n\t\t PECAHAN UANG RP.50.000\n\n");
        printf("\n1. 100.000\t\t\t2. 200.000\n");
        printf("\n3. 300.000\t\t\t4. 500.000\n");
        printf("\n5. PEMBAYARAN\t\t\t6. PENARIKAN JUMLAH LAIN\n");
        printf("\n7. CEK SALDO\t\t\t8. CHANGE PIN");
        printf("\n9. TRANSFER\n\n");
    }
    menu=getch();
    switch(menu){
        case '1': tambil = 100000; tarik(); break;
        case '2': tambil = 200000; tarik(); break;
        case '3': tambil = 300000; tarik(); break;
        case '4': tambil = 500000; tarik(); break;
        case '5': payment(); break;
        case '6': ambil(); break;
        case '7': cek_saldo(); break;
        case '8': ganti_pin(); break;
        case '9': transfer(); break;
        default: if (pbahasa =='1'){
                    printf("\n\nYOUR CHOICE IS UNAVAILABLE. PLEASE RECHOICE");
                    }
                 else{
                    printf("\n\nPILIHAN MENU TIDAK TERSEDIA. SILAHKAN ULANGI");
                    }
                 Sleep(1500); 
                 utama();
    }
};

void transfer(){
    time(&now);
    char id[11];
    int r, nominal;
    if (pbahasa=='1')printf("enter destination ID number : \n\n");
    else ("masukkan nomor id tujuan:\n\n");
    gets(id);
    for(r=0;r<3;r++){
        if (strcmp(id, user[r].id)==0){
            if (pbahasa== '1'){
                printf("\nENTERD AMOUNT: RP.");
            }
            else{
                printf("\nMASUKKAN NOMINAL: RP.|");}
                scanf("%d",&nominal); 
                Sleep(1500);
            if (user[i].saldo<nominal){
                if(pbahasa=='1'){
                    printf("SORRY YOUR BALANCE IS INSUFFICIENT\nYOUR BALANCE IS Rp.%d\n",user[i].saldo);
                }
                else{
                    printf("MAAF SALDO ANDA TIDAK MENCUKUPI\nSALDO ANDA Rp.%d\n",user[i].saldo);
                }
                user[i].saldo = user[i].saldo-nominal;
                user[i].saldo = user[i].saldo+nominal;
            fr[0]=fopen("data_transaksi_0000000000.txt","a+");
            fr[1]=fopen("data_transaksi_1111111111.txt","a+");
            fr[2]=fopen("data_transaksi_2222222222.txt","a+");
            fprintf(fr[i],"+%s TRANSFER TUNAI SEBESAR RP %d KE REKENING %s\n\n",ctime(&now),nominal,user[r].id);
            fprintf(fr[r],"+%s MENDAPAT TRANSFER TUNAI SEBESAR RP.%d DARI REKENING %s\n\n",ctime(&now),nominal,user[i].id);
            for(i=0;i<2;i++) fclose(fr[i]);
            if(pbahasa=='1'){
                printf("\nTRANSFER SUCCESS");
                nulis();
                printf("\n\nENTER 0 FOR BACK TO MAIN MENU.\nENTER 1 FOR EXIT.\n\n");
            }
            else{
                printf("\nTRANSFER BERHASIL");
                printf("\n\nMASUKKAN 1 UNTUK KEMBALI KE MENU UTAMA.\nMASUKKAN 0 UNTUK KELUAR.\n\n");
            }mari();
            }
        }if(pbahasa=='1') printf("\nID YOU ENTERED IS NOT REGISTERED.");
            else printf("\nID YANG ANDA MASUKKAN TIDAK TERDAFTAR.");
            Sleep(2000);
            transfer();
    }
}

    void cek_saldo(){
    time(&now);
    system("cls");
    fscanf(fp,"%d", user[i].saldo);
    if(pbahasa=='1'){
        printf("YOUR BALANCE : Rp.%d",user[i],saldo);
        printf("\n\nENTER 1 FOR BACK TO MAIN MENU.\nENTER 0 FOR EXIT.\n\n");
    }
    else{
        printf("SALDO ANDA : Rp.%d",user[i].saldo);
        printf("\n\nMASUKKAN 1 UNTUK KEMBALI KE MENU UTAMA.\nMASUKKAN 0 UNTUK KELUAR.\n\n");
    }
    fr[0]=fopen("data_transaksi_0000000000.txt","a+");
    fr[1]=fopen("data_transaksi_1111111111.txt","a+");
    fr[2]=fopen("data_transaksi_2222222222.txt","a+");
    fprintf(fr[i],"+%s\nCEK SALDO\n",ctime(&now));
    for(i=0;i<2;i++)
    fclose(fr[i]); 
    mari();
};

void ganti_pin(){
    time(&now);
    system("cls");
    if (pbahasa=='1'){printf("ENTER YOUR PIN : ");}
    else{
        printf("MASUKKAN PIN ANDA : ");
    }
    gets(pin);
    if (strcmp(pin, user[i].pin)==0){
        if(pbahasa=='1'){
            printf("\bENTER NEW PIN : ");
        }
        else{
            printf("\nMASUKKAN PIN BARU : ");
        }
        gets(user[i].pin);
        if(pbahasa=='1'){
            printf("PIN CHANGED SUCCESS");
        }
        else{printf("\nPIN EBRHASIL DIGANTI");}
        Sleep(2000);nulis();
        if (pbahasa=='1'){
            printf("\n\nENTER 1 FOR BACK TO MAIN MENU.\nENTER 0 FOT EXIT.\n\n");
        }
        else{printf("\n\nMASUKKAN 1 UNTUK KEMBALI KE MENU UTAMA.\nMASUKKAN 0 UNTUK KELUAR.\n\n");}
        fr[0]=fopen("data_transaksi_0000000000.txt","a+");
        fr[1]=fopen("data_transaksi_1111111111.txt","a+");
        fr[2]=fopen("data_transaksi_2222222222.txt","a+");
        fprintf(fr[i],"+%s\nGANTI PIN\n",ctime(&now));
        for(i=0;i<2;i++) 
        fclose(fr[i]); 
        mari();
        }
    else{
        if(pbahasa=='1'){
            printf("\nYOUR PIN ENTERED IS WRONG. PLEASE REENTERED");
            }
        else{
            printf("\nPIN YANG ANDA MASUKKAN SALAH. ULANGI KEMBALI");
            }
        Sleep(2000); 
        ganti_pin();
    }
};

void ambil(){
    system("cls");
    if(pbahasa=='1'){printf("PLEASE ENTER NUMBER OF WITHDRAWAL \n\t IN MULTIPLE RP. 50000\nMAXIMUM EACH WITHDRAWAL RP 1250000: \n\t");}
    else{
        printf("SILAHKAN MASUKKAN JUMLAH PENARIKAN\n\tDALAM KELIPATAN Rp50000\nMAKSIMAL SEKALI PENARIKAN Rp1250000: \n\tRp.");
    }
    scanf("%d",&tambil); 
    tarik();
};

void tarik(){
    system("cls");
    if(pbahasa=='1'){
        printf("YOUR REQUEST IS BEING PROCESSED");
        }
    else{
        printf("PERMINTAAN ANDA AKAN SEGERA DI PROSES");
        }
        Sleep(2000);
    if(user[i].saldo<tambil)
        {system("cls");
        if(pbahasa =='1'){
        printf("SORRY YOUR BALANCE IS INSUFFICIENT\nYOUR BALANCE Rp %d \n", user[i].saldo);
        printf("\n\nENTER 1 FOR BACK TO MAIN MENU.\nENTER 0 FOT EXIT.\n\n");
        }
        else{
            printf("MAAF SALDO ANDA TIDAK MENCUKUPI.\nSALDO ANDA Rp.%d\n",  user[i].saldo);
            printf("\n\nMASUKKAN 1 UNTUK KEMBALI KE MENU UTAMA.\nMASUKKAN 0 UNTUK KELUAR.\n\n");
        }
        mari();
        }
    else{
        user[i].saldo-=tambil;
        Sleep(1000); 
        system("cls");
        cek=tambil % 50000;
        if (cek!=0|| tambil>1250000){
            if(pbahasa=='1'){ 
                printf("SORRY, PLEASE ENTER IN Rp 50000 MULTIPLE\n\tAND MAXIMUM IS Rp1250000"); 
                }
            else{
                printf("MAAF, MOHON MASUKKAN DALAM KELIPATAN Rp50000\n\tDAN MAKSIMAL Rp1250000");
            }
            Sleep(3000);
            user[i].saldo+=tambil; 
            ambil();
            }
            else{
                 if(pbahasa=='1'){ 
                     printf("\nYOUR REQUEST IS PROCESSED\n\n\t PLEASE TAKE YOUR MONEY"); 
                     }
                 else{ 
                     printf("\tPERMINTAAN ANDA TELAH DI PROSES \n\n\tSILAHKAN AMBIL UANG ANDA"); 
                     }
            }
            Sleep(2000);
             if(pbahasa =='1'){
                printf("\n\nENTER 1 FOR BACK TO MAIN MENU.\nENTER 0 FOT EXIT.\n\n");
                }
             else{ 
                printf("\n\nMASUKKAN 1 UNTUK KEMBALI KE MENU UTAMA.\nMASUKKAN 0 UNTUK KELUAR.\n\n"); 
                }
    }
        fr[0]=fopen("data_transaksi_0000000000.txt","a+");
        fr[1]=fopen("data_transaksi_1111111111.txt","a+");
        fr[2]=fopen("data_transaksi_2222222222.txt","a+");
        fprintf(fr[i],"+%s\nTARIK TUNAI SEBESAR RP %d\n",ctime(&now),tambil);
        for(i=0;i<2;i++) 
        fclose(fr[i]); 
        mari();
};


void mari(){
    pil =getch();
    switch(pil){
    case '0': utama();break;
    case '1': system("cls");
        if (pbahasa=='1'){
            printf("THANKYOU FOR BANJKING WITH US");
        }
        else{ printf("TERIMAKASIH TELAH MENGGUNAKAN LAYANAN KAMI."); }Sleep(3000); main(); break;
    default: mari();
    }
};


void pln(){
    system("cls");
    if (pbahasa=='1'){
        system("cls");
        printf("\tCUSTOMER INFORMATION\n\t---------------------");
        printf("\n\nID CUSTOMER \t:%s",user[i].id);
        printf("\nCUSTOMER NAME \t:%s",user[i].nama);
        printf("\nBILL \t: Rp.150000");
        printf("\n\n[y] PROCESS PAYMENT\n[n] CANCEL");
    }
    else{
         system("cls");
        printf("\tINFORMASI PELANGGAN\n\t---------------------");
        printf("\n\nID PELANGGAN \t:%s",user[i].id);
        printf("\nNAMA PELANGGAN \t:%s",user[i].nama);
        printf("\nTAGIHAN \t: Rp.150000");
        printf("\n\n[y] LAKUKAN PEMBAYARAN\n[n] BATAL");
    }
    bpln = getch();
    if (bpln=='y'){
        user[i].saldo = user[i].saldo - 150000;
        if(pbahasa=='1'){
            printf("TRANSACTION SUCCESS");
        }
        else{ printf("TRANSAKSI BERHASIL"); } nulis();Sleep(2000);
        if(pbahasa =='1'){
           printf("\n\nENTER 1 FOR BACK TO MAIN MENU.\nENTER 0 FOT EXIT.\n\n");
           }
        else{ printf("\n\nMASUKKAN 1 UNTUK KEMBALI KE MENU UTAMA.\nMASUKKAN 0 UNTUK KELUAR.\n\n"); }mari();
    }
    else if(bpln=='n') payment();
    else{ if(pbahasa=='1') printf("\n\nYOUR CHOICE UNAVAILABLE. PLEASE REENTERED.");
        else printf("\n\nPILIHAN TIDAK TERSEDIA. SILAHKAN ULANGI");
    }pln();
}

void payment(){
    system("cls");
    printf("\tPAYMENT\n----------\n");
    printf("1. KOMPAS\n2. INDIHOME\n3. BIZZNET\n4. FIRST MEDIA");
    if(pbahasa=='1') printf("\n\n"); else printf("\n\n");
    pilpay=getch();
    switch(pilpay){
        case '1': pay(); break;
        case '2': pay(); break;
        case '3': pay(); break;
        case '4': pay(); break;
        default: if (pbahasa=='1'){ printf("YOUR CHOICE UNAVAILABLE"); }
                else{
                    printf("PILIHAN TIDAK TERSEDIA");
                }Sleep(2000);payment();
    }
};


void pay(){
    system("cls");
    if (pbahasa=='1'){
        printf("ENTER AMOUNT :Rp.");
        scanf("%d",&bpay);
        system("cls");
        printf("\tCUSTOMER INFORMATION\n\t---------------------");
        printf("\nREFERENCE NUMBER : %s",user[i].id);
        printf("\nTOTAL             : %d",bpay);
        printf("\n\n[y] PROCESS PAYMENT\n[n] CANCEL");
    }
    else{
        printf("MASUKKAN NOMINAL :Rp.");
        scanf("%d",&bpay);
        system("cls");
        printf("\tINFORMASI PELANGGAN\n\t---------------------");
        printf("\nNOMOR REFERENSI : %s",user[i].id);
        printf("\nTOTAL             : %d",bpay);
        printf("\n\n[y] LAKUKAN PEMBAYARAN\n[n] BATAL");
    }; byr_payment();
};


void byr_payment(){
    bpayment = getch();
    if (bpayment=='y'){
        user[i].saldo = user[i].saldo - bpay; system("cls");
        if (pbahasa=='1'){ printf("TRANSACTION SUCCESS"); }
        else { printf("TRANSAKSI BERHASIL"); }nulis();Sleep(2000);
        if(pbahasa=='1'){
            printf("\n\nENTER 1 FOR BACK TO MAIN MENU.\nENTER 0 FOR EXIT.\n\n");
        }
        else{ printf("\n\nMASUKKAN 1 UNTUK KEMBALI KE MENU UTAMA.\nMASUKKAN 0 UNTUK SELESAI.\n\n"); }mari();
        }
        else if (bpayment=='n') payment();
        else byr_payment();
};


void nulis(){
    fp=fopen("nasabah.txt","w+");
    for(i=0;i<3;i++) {
            fprintf(fp,"%s,%s,%s,%d,%s,%s,%s",user[i].id,user[i].nama,user[i].pin,user[i].saldo,user[i].rumah.jl,user[i].rumah.kota,user[i].rumah.pos);
    }
    fclose(fp);
}

标签: c

解决方案


推荐阅读