Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Банковские счета 
:(
    Опции темы
LiToRBoL
Дата 23.5.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 6.1.2009

Репутация: нет
Всего: нет



Напишите программу ведения банковских счетов. Ежемесячная процентная ставка по банковским вкладам составляет 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. Заране благодарен.




Это сообщение отредактировал(а) mr.Anderson - 23.5.2009, 17:46
PM MAIL   Вверх
zim22
Дата 23.5.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 16
Всего: 69



Цитата

[C++] Банковские счета

не увидел ни одной строчки на С++...
Цитата(LiToRBoL @  23.5.2009,  16:51 Найти цитируемый пост)
Прошу исправить косяк в функции output. Заране благодарен.

в чём косяк то?


--------------------
PM MAIL   Вверх
LiToRBoL
Дата 23.5.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 6.1.2009

Репутация: нет
Всего: нет



Borland C 3.1

Я написал в коментах кода 
Цитата

В этой функции информация не изменяется а дополняется в конец файла

PM MAIL   Вверх
zim22
Дата 23.5.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 16
Всего: 69



Цитата(LiToRBoL @  23.5.2009,  16:51 Найти цитируемый пост)
f=fopen ("bank.dat","ab+");

почитайте про фунцкию fopen

Цитата

"a+"    Open a file for reading and appending. All writing operations are performed at the end of the file, protecting the previous content to be overwritten. You can reposition (fseek, rewind) the internal pointer to anywhere in the file for reading, but writing operations will move it back to the end of file. The file is created if it does not exist.

английский понимаете?


--------------------
PM MAIL   Вверх
mr.Anderson
Дата 23.5.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128




M
mr.Anderson
Модератор: пользуйтесь тегами подсветки! Исправил.


Это сообщение отредактировал(а) mr.Anderson - 23.5.2009, 17:47


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
LiToRBoL
Дата 25.5.2009, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 6.1.2009

Репутация: нет
Всего: нет



Про "а+" понятно, но так все таки что мне делать то? smile

Это сообщение отредактировал(а) LiToRBoL - 25.5.2009, 06:52
PM MAIL   Вверх
zim22
Дата 25.5.2009, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 16
Всего: 69



Цитата(LiToRBoL @  25.5.2009,  06:52 Найти цитируемый пост)
Про "а+" понятно, но так все таки что мне делать то?

использовать другие режимы открытия файла.
также вам пригодится функция fseek


--------------------
PM MAIL   Вверх
LiToRBoL
Дата 25.5.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 6.1.2009

Репутация: нет
Всего: нет



ну я так понимаю читаю и записываю в файл "r+", вот с fseek'ом хз че делать, какие параметры в нем прописать? 

Это сообщение отредактировал(а) LiToRBoL - 25.5.2009, 19:53
PM MAIL   Вверх
zim22
Дата 26.5.2009, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 16
Всего: 69



Цитата(LiToRBoL @  25.5.2009,  19:45 Найти цитируемый пост)
 вот с fseek'ом хз че делать, какие параметры в нем прописать?

http://www.cplusplus.com/reference/clibrary/cstdio/fseek/


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.