rendered paste body#include <stdio.h>#include <cstring>#include <string>#define DBFILE "records.db"void mainmenu();void read_records();void add_records();void search_records();int db_file_exist();struct record { int EGN; int NOMER; int NALICHNOST;};int main() { printf("Welcome to BANKA 1.0"); mainmenu();}int db_file_exist() { FILE* fin = fopen(DBFILE,"r"); if (!fin) return 0; fclose(fin); return 1;}// GLAVNO MENUvoid mainmenu() { if (!db_file_exist()) { printf("\n\nBazata danni e prazna, vyvejdane na klienti..\n\n"); add_records(); } else printf("\n\nMolia izberete:\n" "[1] Pokaji vsichki\n" "[2] Tyrsene\n" "[3] Dobavi\n" "[4] Vyvedi nanovo (nulirane)\n" "[0] Quit\n\n" "> "); switch(getchar()) { case '1': read_records(); break; case '2': search_records(); break; case '3': printf("\n"); add_records(); break; case '4': remove(DBFILE); add_records(); break; case '0': return; }}// DOBAVIANE NA ZAPISIvoid add_records() { record* newrecord = (struct record*) malloc(sizeof(struct record)); FILE* fin = fopen(DBFILE,"a"); char y[10]; int x; do { memset(newrecord,0,sizeof(struct record)); printf(" EGN [10 digits]: "); scanf("%d",&newrecord->EGN); while (newrecord->EGN < 1000000000 || newrecord->EGN > 9999999999) { printf("> Nevalidno EGN, vyvedete 10 znaka.\a\n\n"); printf(" EGN [10 digits]: "); scanf("%d",&newrecord->EGN); } printf(" Nomer: "); scanf("%d",&newrecord->NOMER); printf(" Nalichnost [0/1]: "); scanf("%d",&newrecord->NALICHNOST); while (newrecord->NALICHNOST != 0 && newrecord->NALICHNOST != 1) { printf("> Nevalidna nalichnost. Izberete 1 ili 0.\a\n\n"); printf(" Nalichnost [0/1]: "); scanf("%d",&newrecord->NALICHNOST); } printf("\n> Dobavi nov klient? [1 - da / 0 - ne]\n"); scanf("%d",&x); while (x != 0 && x != 1) { printf("\n> Dobavi nov klient? [1 - da / 0 - ne]\n"); scanf("%d",&x); } fwrite(newrecord,sizeof(struct record),1,fin);} while (x);free(newrecord);fclose(fin);gets(y); // for pausemainmenu();}// CHETENE NA ZAPISITEvoid read_records() { record* crecord = (struct record*) malloc(sizeof(struct record)); FILE* fin = fopen(DBFILE,"rb+"); int found = 0; char x[10]; memset(crecord,0,sizeof(struct record)); while(!feof(fin)) { if (fread(crecord,sizeof(struct record),1,fin)) { printf("\n EGN: %d\n",crecord->EGN); printf(" Nomer: %d\n",crecord->NOMER); printf(" Nalichnost: %s\n",crecord->NALICHNOST ? "DA" : "NE"); found++; } } if (found == 1) printf("\n> Obshto: 1 zapis."); else printf("\n> Obshto: %d zapisa.", found); free(crecord); fclose(fin); gets(x); // for pause mainmenu();}// TYRSENE NA ZAPISIvoid search_records() { record* crecord = (struct record*) malloc(sizeof(struct record)); FILE* fin = fopen(DBFILE,"rb+"); char what[100], EGN[20], NOMER[20], NALICHNOST[5]; int found = 0; memset(crecord,0,sizeof(struct record)); printf("\nTyrsi: "); scanf("%s",&what); while(!feof(fin)) { if (fread(crecord,sizeof(struct record),1,fin)) { itoa(crecord->EGN,EGN,10); itoa(crecord->NOMER,NOMER,10); itoa(crecord->NALICHNOST,NALICHNOST,10); if (!strcmp(EGN,what) || !strcmp(NOMER,what) || !strcmp(NALICHNOST,what)) { printf("\n EGN: %d",crecord->EGN); if (!strcmp(EGN,what)) printf(" <- found"); printf("\n Nomer: %d",crecord->NOMER); if (!strcmp(NOMER,what)) printf(" <- found"); printf("\n Nalichnost: %s",crecord->NALICHNOST ? "DA" : "NE"); if (!strcmp(NOMER,what)) printf(" <- found"); printf("\n"); found++; } } } if (!found) printf("\n> Nishto ne e namereno.\a"); else if (found == 1) printf("\n> Nameren e 1 rezultat."); else printf("\n> Namereni sa %d rezultata.", found); getchar(); free(crecord); fclose(fin); mainmenu();}