Напишите программу ведения банковских счетов. Ежемесячная процентная ставка по банковским вкладам составляет 6 % от суммы вклада. Если вклады сделаны до десятого числа, то проценты начисляются за весь месяц. Для того чтобы вкладчики не изымали часто вклады, приняты следующие меры: с вкладчика с минимальным балансом менее 1000 долларов, делающего более пяти изъятий в месяц, удерживают 50 центов с каждого изъятия после пяти изъятий. Процент начисляется ежемесячно по минимальному месячному балансу. Программа должна обеспечивать: ввод и хранение в файле информации (номер банковского счета; фамилия вкладчика; дата проведения операции; вид операции; сумма, с которой проводилась операция; остаток вклада);
| Код | #include <stdio.h> #include <conio.h> #include <string.h>
struct bank {char F[20]; // фамилия вкладчика int date, number; // date - (день меясца <= 30), number - номер банковского счета int start, k; // start - первоначальная сумма, float end; // остаток }bk;
float vklad (int day, int money) { if (day<10) return (money*1.06); else return (money+(money*(30-day)*0.002)); }
void input() { FILE *f; printf ("Введите фамилию вкладчика\n"); gets(bk.F); printf ("Введите номер счета\n"); scanf ("%d", &bk.number); printf ("Сегоднешнее число\n"); scanf ("%d", &bk.date); printf ("Сумма которую вы хотите внести\n"); scanf ("%d", &bk.start); bk.end = vklad(bk.date, bk.start); printf ("%f", bk.end); bk.k=0; f=fopen ("bank.dat","ab+");
fwrite (&bk, sizeof(bank),1,f); fclose(f); }
void output(char fam[15]) \\ В этой функции информация не изменяется а дополняется в конец файла { FILE *f; f=fopen ("bank.dat","ab+"); float min; while (feof(f)==0) { fread (&bk, sizeof(bank),1,f); if (strcmp (fam,bk.F)==0 && feof(f)==0) { printf ("Остаток на вашем счете: %f\n", bk.end); printf ("Какую сумму вы хотите снять:\n"); scanf ("%f", &min); if (bk.end>1000) { bk.end-=min; printf ("Остаток %f \n", bk.end); } else { printf ("Количество операций снятия %d \n", bk.k); if (bk.k>5) { bk.end=bk.end-min-0.05; printf ("Остаток %d \n", bk.end); bk.k++; } }
}
} fwrite (&bk, sizeof(bank),1,f); fclose(f); }
void poiskN (int a) { FILE *f; f=fopen ("bank.dat","rb"); while (feof(f)==0) { fread (&bk, sizeof(bank),1,f); if (a==bk.number && feof(f)==0) printf ("%d %s %d %d %f", bk.number, bk.F, bk.date, bk.start, bk.end); } fclose(f); }
void poiskF(char fam[15]) { FILE *f; f=fopen ("bank.dat","rb"); while (feof(f)==0) { fread (&bk, sizeof(bank),1,f); if (strcmp (fam,bk.F)==0 && feof(f)==0) printf ("%d %s %d %d %f", bk.number, bk.F, bk.date, bk.start, bk.end); } fclose(f); }
void main() { int No; char fam[15], s='\0'; char temp[20]; int k=0, tempN; FILE *f; f=fopen ("bank.dat","ab+"); if(f!=0) { do { clrscr(); printf ("Создать новый файл 0\n"); printf (" 1 Положить на счет\n"); printf ("Выбрать тип операции:\n"); printf (" 2 Снять со счета\n");
printf("\n 3 Поиск информации по номеру счета\n"); printf ("Поиск информации:\n"); printf(" 4 Поиск информации по Фамилии\n"); //clrscr(); s=getche(); } while ( s!='0' && s!='1' && s!='2' && s!='3' && s!='4'); } if (s=='0') { f=fopen("bank.dat", "wb+"); }
if (s=='1') { input(); getch(); }
if (s=='2') { printf ("Введите фамилию\n"); gets(fam); output(fam); } if (s=='3') { printf ("\nВведите номер счета"); scanf ("%d", &No); poiskN(No); getch(); }
if (s=='4') { printf ("\nВведите фамилию вкладчика"); gets(fam); poiskF(fam); getch(); } }
|
Прошу исправить косяк в функции output. Заране благодарен.
|