rendered paste body#include <stdio.h>#include <cstring>#include <string>#define DBFILE "court.db"void mainmenu();void read_records();void add_records();void search_records();int db_file_exist();struct record { int EGN; char DATA[30]; char RESHENIE[200];};int main() { printf("COURT 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 podsydimi..\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(" DATA: "); scanf("%s",&newrecord->DATA); printf(" RESHENIE [200 chars]: "); gets(newrecord->RESHENIE); //scanf("%*[ \n\t]%c",&newrecord->RESHENIE); //x = 0; getchar(); printf("\n> Dobavi nov podsydim? [1 - da / 0 - ne]\n"); scanf("%d",&x); while (x != 0 && x != 1) { printf("\n> Dobavi nov podsydim? [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(" Data: %s\n",crecord->DATA); printf(" Reshenie: %s\n",crecord->RESHENIE); 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[15]; int found = 0; memset(crecord,0,sizeof(struct record)); printf("\nTyrsi [kliuchova duma/data/egn]: "); scanf("%s",&what); itoa(crecord->EGN,EGN,10); while(!feof(fin)) { if (fread(crecord,sizeof(struct record),1,fin)) { if (strstr(EGN,what) > 0 || strstr(crecord->DATA,what) > 0 || strstr(crecord->RESHENIE,what) > 0) { printf("\n EGN: %s",EGN); if (strstr(EGN,what) > 0) printf(" <- found"); printf("\n Data: %s",crecord->DATA); if (strstr(crecord->DATA,what) > 0) printf(" <- found"); printf("\n Reshenie: %s",crecord->RESHENIE); if (strstr(crecord->RESHENIE,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();}