All pastes #953817 Raw Edit

Unnamed

public c v1 · immutable
#953817 ·published 2008-03-23 11:51 UTC
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();}