ここから本文です

【至急】自分は今c言語で銀行のシステムを作ってて、IDを入れたら名前と残高が表示...

miyamotiさん

2019/7/2822:17:37

【至急】自分は今c言語で銀行のシステムを作ってて、IDを入れたら名前と残高が表示されてswitchで出金や入金を行うという簡単なものを作りたいんですけど

#include <stdio.h>int main( void )
{
FILE* fp;
char name[ 20 ];
int choice;
int zandaka;
int id, kingaku;

fp = fopen( "Account.txt", "r" );
if(fp == NULL)
{
printf( "ファイルを開くことが出来ませんでした。\n" );
return 1;
}
while((fscanf( fp, "%s %d %d", name, &id, &zandaka)) != EOF )
{
;
}
printf( "IDを入力してください:" );
scanf( "%d", &id );
printf( "%s ¥%d\n", name, zandaka );
printf( "1.出金 2.入金:" );
scanf( "%d", &choice );
printf( "出金または入金金額を入力してください:" );
scanf( "%d", &kingaku );

switch ( choice )
{
case 1:
zandaka = zandaka - kingaku;
if( zandaka < 0 )
{
printf( "エラー\n" );
return 1;
}
printf( "残金は%d円です。", zandaka );
break;
case 2:
zandaka = zandaka + kingaku;
printf( "残金は%d円です。", zandaka );
break;
default:
break;
}

fclose( fp );
return 0;
}

でAccount.txtの中身が
aさん 4321 100000
bさん 1234 120000
cさん 3333 200000
ってのをとりあえず書いたんですけど、IDを入れた後が絶対「Cさん 200000」しか表示されなくて困ってます。
どう書き加えればいいですか?それともそんなことできないんでしょうか?
明日の12時までに完成させたいのでお願いします。

補足追加で名前とIDを入れて合ってたら残金が表示されるようにしたいです

閲覧数:
37
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

pok********さん

2019/7/2823:02:54

ファイルを開いた後にある

while((fscanf( fp, "%s %d %d", name, &id, &zandaka)) != EOF );

ってのは、
name、id、zandakaにそれぞれ上書して入れている。
そのため、最後のCのデータしか使えない。

例えば、100人分のデータを扱うのなら

char name[100][ 20 ];
int zandaka[100];
int id[100];

それぞれ配列で100分入れるものを確保し

int loop=0;
while((fscanf( fp, "%s %d %d", name[loop], &id[loop], &zandaka[loop])) != EOF ){
loop++;
}

このように順番にデータを入れていく。

その後、IDを入力してもらって、そのIDで
ID入力 1234ならBさんの場所、上でいえばplace=1とし
zandaka[place]のように指定していく。

int place;
for(i=0;i<100;i++){
if(input_id==id[i]){ //input_idは入力されたid
place=i; //idが何処の配列をさすか
break;
}
}

---------------------------

もしくは、ファイルを読み込む前にidを入力してもらい

scanf("%d",input_id);

//対象のidデータのものだけ取り出して使う

int check=0;//該当データの有無を調べる

while((fscanf( fp, "%s %d %d", name, &id, &zandaka)) != EOF )
{
if(input_id==id){ //入力されたid=該当idでループを終えるとそのデータが残る
check=1;
break;
}
}

if(check==0){
printf("該当するIDのファイルデータはありません\n");
}

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/7/29 00:47:46

なんとかできました!ありがとうございます!

ベストアンサー以外の回答

1〜1件/1件中

pdp********さん

2019/7/2823:05:42

DB使っていない銀行のシステムってあるんですか?
どこのベンダーの銀行のシステムでしょうか?
トランザクション制御も無ければ、銀行で運用されているように思えません。

Account.txtが盗まれたり改ざんされたらどうするのでしょうか?
随分お粗末です。

これは、本当に銀行のシステムですか?
それとも学習として銀行をネタにした練習ですか?

ちなみに常にファイルの最終行を表記しているように見えます。

入力したIDがある行のみピンポイントでファイルを読むようにしたらいいと思います。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる