All pastes #953820 Raw Edit

Untitled

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