rendered paste body#include <stdio.h>
#include <stdlib.h>
struct oikonomika{
int im,mi,ye;
float poso;
char onoma[15];
};
int menu(); //Auto to menu einai diamorfwmeno an to arxeio den yparxei
int menu2(); //Diamorfwmeno gia pliri leitourgia
void dimiourgia();
void provoli();
void anazitisi();
void diorthwsi();
//void delete();
struct oikonomika o;
FILE *x;
int flag2=0;
char buffer;
int main(void){
int y; //flag tha xrisimipoiithei gia to menu
x=fopen("oikonomika.dat","rb"); //O logos pou to anoigei einai gia na doume apla an yparxei
if(!x)
flag2=1;
y=1;
while(y!=0)
{
if(flag2==1)
y=menu(); //Auto to menu einai diamorfwmeno an to arxeio den yparxei
else
y=menu2();//Diamorfwmeno gia pliri leitourgia
switch(y){
case 1:{
dimiourgia();
break;
}
case 2:{
provoli();
break;
}
case 3:{
anazitisi();
break;
}
case 4:{
diorthwsi();
break;
}
//case 5:{
// delete();
// break;
//}
case 0:{
printf("\nTelos programmatos\n");
break;
}
default:{
printf("\nLathos epilogi\n");
break;
}
}
}
return 0;
}
int menu()
{
int z;
do{
printf("\n1) Dimiourgeia neas kataxwrisei");
printf("\n0) Exodos");
printf("\n\nTi theleis na kaneis? ");
scanf("%d",&z);
scanf("%c",&buffer);
}while(z<0 || z>1);
return z;
}
int menu2()
{
int z;
do{
printf("\n1) Dimiourgeia neas kataxwrisei");
printf("\n2) Provoli kataxwrisewn arxeiou");
printf("\n3) Anazitisi");
printf("\n4) Diorthwsi");
printf("\n5) Diagrafi");
printf("\n0) Exodos");
printf("\n\nTi theleis na kaneis? ");
scanf("%d",&z);
scanf("%c",&buffer);
}while(z<0 || z>5);
return z;
}
void dimiourgia()
{
int telos;
int flag;
x=fopen("oikonomika.dat","ab");
if(!x)
{
x=fopen("oikonomika.dat","wb");
flag=1;
}
do{
printf("\n Gia poia imerominia thes na kataxwriseis ta eksoda sou? ");
//printf("\n Dwse mera: ");
do{
printf("\n Dwse mera: ");
scanf("%d",&o.im);
scanf("%c",&buffer);
}while(o.im<1 || o.im>31);
do{
printf("\n Dwse mina: ");
scanf("%d",&o.mi);
scanf("%c",&buffer);
}while(o.mi<1 || o.mi>12);
do{
printf("\nDwse year: ");
scanf("%d",&o.ye);
scanf("%c",&buffer);
}while(o.ye<2000 || o.ye>2100);
printf("\n Ti agorases? ");
scanf("%s",o.onoma);
printf("\n Posa lefta ksodepses? ");
scanf("%f",&o.poso);
fwrite(&o,sizeof(struct oikonomika),1,x);
o.im=NULL; //otan ekanes alli eisagwgi evgaze provlima sto buffer
o.mi=NULL;
o.ye=NULL;
printf("Thes na kaneis k alli eisagwgi?\n 1.NAI\n0.OXI\n");
do{
scanf("%d",&telos);
scanf("%c",&buffer);
}while(telos<0 || telos>1);
}while(telos==1);
flag2=0; //leei sto menu oti yparxei k emfanizei menu2
fclose(x);
}
void provoli()
{
int v=0;
x=fopen("oikonomika.dat","rb");
printf("\na/a Hmerominia Antikeimeno Poso\n");
do{
fread(&o,sizeof(struct oikonomika),1,x);
v++; //aukson arithmos
if(!feof(x))
printf("%d) %d:%d:%d %-10s %.2f\n",v,o.im,o.mi,o.ye,o.onoma,o.poso);
}while(!feof(x));
fclose(x);
}
void anazitisi()
{
int i,m,y,c=1; //i c gia ton a/a
int epit=1; //epityxeia i apotyxeia anazitisis
x=fopen("oikonomika.dat","rb");
printf("\nMe vasi poia imerominia thes na anazitiseis? Dwse imera,mina kai xronia: ");
scanf("%d%d%d",&i,&m,&y);
printf("\na/a Hmerominia Antikeimeno Poso\n");
do{
fread(&o,sizeof(struct oikonomika),1,x);
if(feof(x))
break;
if(o.im==i && o.mi==m && o.ye==y)
{
printf(" %d %d:%d:%d %-10s %.2f\n",c,o.im,o.mi,o.ye,o.onoma,o.poso);
epit=0;
c++;
}
}while(!feof(x));
if(epit==1)
printf("De vrethike kapoio apotelesma\n");
fclose(x);
}
void diorthwsi()
{
int i,m,y;
int vrethike=0; //an vrethike i oxi i eggrafi
char logos[15];
printf("Me vasi poia imerominia theleis na ginei i diorthwsi? Dwse imera,mina kai xronia: \n");
scanf("%d%d%d",&i,&m,&y);
printf("\n Se ti ta ksodepses?\n");
scanf("%s",&logos);
x=fopen("oikonomika.dat","rb");
while(!feof(x)){
fread(&o,sizeof(struct oikonomika),1,x);
if(feof(x))
break;
if(o.im==i && o.mi==m && o.ye==y && strcmp(o.onoma,logos)==0)
{
x=fopen("oikonomika.dat","rb+");
vrethike=1;
fseek(x,-sizeof(struct oikonomika),SEEK_CUR);
printf("Dwse ta nea stoixeia:\n");
do{
printf("\n Dwse mera: ");
scanf("%d",&o.im);
scanf("%c",&buffer);
}while(o.im<1 || o.im>31);
do{
printf("\n Dwse mina: ");
scanf("%d",&o.mi);
scanf("%c",&buffer);
}while(o.mi<1 || o.mi>12);
do{
printf("\nDwse year: ");
scanf("%d",&o.ye);
scanf("%c",&buffer);
}while(o.ye<2000 || o.ye>2100);
printf("\n Ti agorases? ");
scanf("%s",o.onoma);
printf("\n Posa lefta ksodepses? ");
scanf("%f",&o.poso);
fwrite(&o,sizeof(struct oikonomika),1,x);
vrethike=1;
break;
}
}
if(vrethike==0)
printf("H egrafi pou zitises de vrethike! \n");
fclose(x);
}
/*void delete()
{
{
int i,m,y;
// int vrethike2=0; //an vrethike i oxi i eggrafi
char logos[15];
printf("Me vasi poia imerominia theleis na ginei i diagrafi? Dwse imera,mina kai xronia: \n");
scanf("%d%d%d",&i,&m,&y);
printf("\n Se ti ta ksodepses?\n");
scanf("%s",&logos);
x=fopen("oikonomika.dat","rb");
while(!feof(x)){
fread(&o,sizeof(struct oikonomika),1,x);
if(feof(x))
break;
if(o.im==i && o.mi==m && o.ye==y && strcmp(o.onoma,logos)==0)
{
x=fopen("oikonomika.dat","rb+");
// vrethike2=1;
fseek(x,-sizeof(struct oikonomika),SEEK_CUR);
o.im=NULL;
o.mi=NULL;
o.ye=NULL;
o.poso=NULL;
o.onoma=NULL;
}
}
}
//if(vrethike2==0)
// printf("H egrafi pou zitises de vrethike! \n");
fclose(x);
} */