У меня есть этот проект, система учетных записей банкоматов, использующая файлы и структуру в c.теперь у меня отключены почти все функции, кроме функции ввода / вывода.Если я не ошибаюсь, вам просто нужно прочитать файл и вызвать переменную, которую вы хотите использовать в арифметической операции, а затем записать ее обратно в файл, чтобы обновить ее.
Он отлично работает, если пользовательский вводновое значение для указанной переменной (но у меня не может быть этого, потому что тогда пользователь может изменить баланс своего аккаунта по своему усмотрению).
Но когда я это делаю, это не работает.
короче говоря, моя проблема в том, что моя транзакция (пользователь вводит сумму для депозита, и система добавляет эту сумму к балансу учетной записи пользователя, который сохраняется в двоичном файле, а затем система получает сумму этих 2 для новогобаланс счета затем перезаписывает старый баланс аккаунта) не работает конкретно, моя структура и пользовательская переменная ввода не складываются
Вот моя функция
void deposit()
{
system("cls");
FILE *fp,*fp1;
struct acc rec,rec1;
int id,pinc,found=0,count=0;
float dv=0,wv=0;
fp=fopen(fname,"rb");
fp1=fopen("tempacc.dat","wb");
printf("\nEnter Account No :");
scanf("%d",&id);
printf("\nEnter PIN :");
scanf("%d",&pinc);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(rec.no==id && rec.pin==pinc)
{
found=1;
printf("current balance:%0.2f",&rec.id);
printf("\nEnter initial deposit:");
scanf("%d",&rec.id);
printf("\nEnter Deposit value:");
scanf("%f",dv);
rec.id = rec.id + dv; <--- (this part doesn't work)
printf("\nNew Account Balance:%f",rec.id);
fwrite(&rec,sizeof(rec),1,fp1);
}
else
{
fwrite(&rec,sizeof(rec),1,fp1);
}
}
fclose(fp);
fclose(fp1);
if(found==0)
{
printf("Sorry No Record Found\n\n");
}
else
{
fp=fopen(fname,"wb");
fp1=fopen("tempacc.dat","rb");
while(1)
{
fread(&rec,sizeof(rec),1,fp1);
if(feof(fp1))
{
break;
}
fwrite(&rec,sizeof(rec),1,fp);
}
}
fclose(fp);
fclose(fp1);
}
мой основной
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct acc
{
int no;
char name[100];
int pin;
float id;
};
void append();
void display();
void displayAll();
void modify();
void search();
void deposit();
char mygetch();
char fname[]={"accdb.dat"};
int main()
{
char ch;
while(1)
{
system("cls"); //clrscr();
printf("==================Welcome to Banking System=============\n\n");
printf("A. Open an Account \n\n");
printf("B. Bank transaction \n\n");
printf("C. Exit\n\n");
//printf("D. Display\n\n");
//printf("E. Display All\n\n");
//printf("F. Search\n\n");
printf("========================================================\n\n");
printf("\nPlease enter your Choice:");
scanf("%c",&ch);
switch(ch)
{
case 'A': append();
break;
case 'B': modify();
break;
case 'C': exit(0);
case 'D': display();
break;
case 'E': displayAll();
break;
case 'F': search();
break;
}
mygetch();
}
return 0;
}
void append()
{
system("cls");
FILE *fp;
struct acc rec;
fp=fopen(fname,"ab");
printf("\nEnter Account no:");
scanf("%d",&rec.no);
getchar();
printf("\nEnter Account name:");
scanf("%[^\n]s",rec.name);
printf("\nEnter PIN:");
scanf("%d",&rec.pin);
printf("\nEnter Initial Deposit:");
scanf("%f",&rec.id);
fwrite(&rec,sizeof(rec),1,fp);
fclose(fp);
}
void display()
{
system("cls");
FILE *fp;
struct acc rec;
int id,found=0;
fp=fopen(fname,"rb");
printf("\nEnter the account number:");
scanf("%d",&id);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(rec.no==id)
{
found=1;
printf("\n========================================================\n\n");
printf("\t\t Account Details of %d\n\n",rec.no);
printf("========================================================\n\n");
printf("Name\tBalance\n\n");
printf("%s\t",rec.name);
printf("%0.2f\t\n\n",rec.id);
printf("========================================================\n\n");
}
}
if(found==0)
{
printf("\nSorry No Record Found");
}
fclose(fp);
}
void deposit()
{
system("cls");
FILE *fp,*fp1;
struct acc rec,rec1;
int id,pinc,found=0,count=0;
float dv=0,wv=0;
fp=fopen(fname,"rb");
fp1=fopen("tempacc.dat","wb");
printf("\nEnter Account No :");
scanf("%d",&id);
printf("\nEnter PIN :");
scanf("%d",&pinc);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(rec.no==id && rec.pin==pinc)
{
found=1;
printf("current balance:%0.2f",&rec.id);
printf("\nEnter initial deposit:");
scanf("%d",&rec.id);
printf("\nEnter Deposit value:");
scanf("%f",dv);
rec.id = rec.id + dv;
//scanf("%f",&rec.id);
printf("\nNew Account Balance:%f",rec.id);
//scanf("%f",&rec.id);
fwrite(&rec,sizeof(rec),1,fp1);
//fflush(stdin);
}
else
{
fwrite(&rec,sizeof(rec),1,fp1);
}
}
fclose(fp);
fclose(fp1);
if(found==0)
{
printf("Sorry No Record Found\n\n");
}
else
{
fp=fopen(fname,"wb");
fp1=fopen("tempacc.dat","rb");
while(1)
{
fread(&rec,sizeof(rec),1,fp1);
if(feof(fp1))
{
break;
}
fwrite(&rec,sizeof(rec),1,fp);
}
}
fclose(fp);
fclose(fp1);
}
void search()
{
FILE *fp;
struct acc rec;
int found=0;
char name[20];
fp=fopen(fname,"rb");
printf("\nEnter the Account Name:");
scanf("%s",&name);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(strcmp(name,rec.name)==0)
{
printf("\n========================================================\n\n");
printf("\t\t Account Details of %d\n\n",rec.no);
printf("========================================================\n\n");
printf("Name\tbalance\n\n");
printf("%s\t",rec.name);
printf("%0.2f\t\n\n",rec.id);
printf("========================================================\n\n");
}
}
if(found==0)
{
printf("\nSorry No Record Found");
}
fclose(fp);
}
void displayAll()
{
system("cls");
FILE *fp;
struct acc rec;
fp=fopen(fname,"rb");
printf("\n========================================================\n\n");
printf("\t\t All Account Details\n\n");
printf("========================================================\n\n");
printf("ID\tName\tPIN\tBalance\n\n");
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
printf("%d\t",rec.no);
printf("%s\t",rec.name);
printf("%d\t",rec.pin);
printf("%0.2f\t\n\n",rec.id);
}
printf("========================================================\n\n");
fclose(fp);
}
char mygetch()
{
char val;
char rel;
scanf("%c",&val);
scanf("%c",&rel);
return (val);
}
void modify()
{
system("cls");
FILE *fp,*fp1;
struct acc rec,rec1;
int id,pinc,found=0,count=0;
fp=fopen(fname,"rb");
fp1=fopen("tempacc.dat","wb");
printf("\nEnter Account No:");
scanf("%d",&id);
printf("\nEnter PIN:");
scanf("%d",&pinc);
while(1)
{
fread(&rec,sizeof(rec),1,fp);
if(feof(fp))
{
break;
}
if(rec.no==id && rec.pin==pinc)
{
found=1;
int sch;
printf("\tWelcome to Banking System\n");
printf("1.Balance Inquiry\n");
printf("2.Deposit\n");
printf("3.Withdrawal\n");
printf("4.quit\n");
scanf("%d",&sch);
switch (sch)
{
case 1:
display();
break;
case 2:
fclose(fp);
deposit();
break;
case 3:
//withdrawal();
break;
case 4:
printf("Thank you for your patronage\n");
exit(0);
break;
}
}
}
}