#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define BUFFERSIZE 1024
#define MAXACCOUNT 1000
typedef struct BankAccount
{
int account
int key
char name[32]
float balance
}BANKACCOUNT
BANKACCOUNT accountCollection[MAXACCOUNT]
int curAccount = 0
void InsertAccount(FILE *fp)
{
BANKACCOUNT newaccount
printf("please input the account information\n")
printf(">>account num:")
scanf("%d",&(newaccount.account))
printf(">>key:")
scanf("%d",&(newaccount.key))
printf(">>name:")
scanf("%s",newaccount.name)
printf(">>balance:")
scanf("%f",&(newaccount.balance))
fseek(fp,0L,SEEK_END)
fprintf(fp,"%d %d %s %.2f\n",newaccount.account,newaccount.key,newaccount.name,newaccount.balance)
}
void GetAccount(FILE *fp)
{
int accountnum
int key
char name[32]
float balance
int i =0,j
char buffer[BUFFERSIZE]
int len
curAccount = 0
fseek(fp,0,SEEK_SET)
while(!feof(fp)) /* 因为feof()最后会读2遍,所以最后curAccount多加了1 */
{
fscanf(fp,"%d %d %s %f",&accountnum,&key,name,&balance)
accountCollection[curAccount].account = accountnum
accountCollection[curAccount].key = key
strcpy(accountCollection[curAccount].name ,name)
accountCollection[curAccount].balance = balance
curAccount++
}
}
void ListAccount(FILE *fp)
{
int i =0
printf("There is %d accounts at all:\n",curAccount-1)/* curAccount减去多加的1 */
for(i = 0i<curAccount-1i++)
{
printf("ACCOUNT[%d]:\n",i+1)
printf("account:%d\n",accountCollection[i].account)
printf("name:%s\n",accountCollection[i].name)
printf("balance:%.2f\n",accountCollection[i].balance)
}
}
int SearchAccount(FILE *fp,int accountnum)
{
int i =0
for(i = 0i<curAccount-1i++)
{
if(accountCollection[i].account == accountnum)
{
printf("ACCOUNT[%d]:\n",i+1)
printf("account:%d\n",accountCollection[i].account)
printf("name:%s\n",accountCollection[i].name)
printf("balance:%.2f\n",accountCollection[i].balance)
return 1
}
}
return 0
}
void DelAccount(FILE *fp,int accountnum)
{
int i
if(SearchAccount(fp,accountnum)==0)
printf("Can't find the account\n")
else
{
for(i = 0i<curAccount-1i++)
{
if(accountCollection[i].account != accountnum)
fprintf(fp,"%d %d %s %.2f\n",accountCollection[i].account,accountCollection[i].key,accountCollection[i].name,accountCollection[i].balance)
}
printf("delete successfully!\n")
}
}
int main()
{
FILE *fp
int accountnum
int i
do{
system("cls")//清屏
puts("********************************************")
puts("*You can choose : *")
puts("*1 : Insert a new Account *")
puts("*2 : List all Accounts*")
puts("*3 : Find a Account *")
puts("*4 : Delete a Account *")
puts("*5 : quit *")
puts("********************************************")
printf("Please input your choice:")
scanf("%d",&i)
system("cls")//清屏
switch(i)
{
case 1:
if(!(fp = fopen("account.txt","a+")))
{
printf("can't open the file account.txt\n")
exit(0)
}
InsertAccount( fp)
printf("press any key to continue.....\n")
getch()
fclose(fp)
break
case 2:
if(!(fp = fopen("account.txt","r")))
{
printf("can't open the file account.txt\n")
exit(0)
}
GetAccount(fp)
ListAccount(fp)
fclose(fp)
printf("press any key to continue.....\n")
getch()
break
case 3:
printf("please input the account num:\n")
scanf("%d",&accountnum)
if(!(fp = fopen("account.txt","r")))
{
printf("can't open the file account.txt\n")
exit(0)
}
GetAccount(fp)
if(!SearchAccount(fp,accountnum))
printf("There is not the account:%d\n",accountnum)
fclose(fp)
printf("press any key to continue.....\n")
getch()
break
case 4:
printf("please input the account num:\n")
scanf("%d",&accountnum)
if(!(fp = fopen("account.txt","r")))
{
printf("can't open the file account.txt\n")
exit(0)
}
GetAccount(fp)
fclose(fp)
if(!(fp = fopen("account.txt","w+")))
{
printf("can't open the file account.txt\n")
exit(0)
}
DelAccount(fp,accountnum)
fclose(fp)
printf("press any key to continue.....\n")
getch()
break
default:
break
}
}while(i != 5)
return 0
}
这里账户数据文件名已经设定为account.txt,这个文件要和上面这个程序放在同一个文件夹下面,不然就得用绝对路径(比如"d:\\book\\account.txt"),account内容可以用记事本打开自己改动,然后运行程序后就可以在程序中添加或删除。account.txt一个参考内容如下:
1 10023 zhangsl 100.50
2 32001 sunq 5000.00
3 20010 wangxi 2500.00 4
如果你用VC编译,有几处警告,你可以把下面有双斜杠那一行去掉就行通过VC++6.0编译
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define BUFFERSIZE 1024
#define MAXACCOUNT 1000
typedef struct BankAccount
{
int account
int key
char name[32]
float balance
}BANKACCOUNT
BANKACCOUNT accountCollection[MAXACCOUNT]
int curAccount = 0
void InsertAccount(FILE *fp)
{
BANKACCOUNT newaccount
printf("please input the account information\n")
printf(">>account num:")
scanf("%d",&(newaccount.account))
printf(">>key:")
scanf("%d",&(newaccount.key))
printf(">>name:")
scanf("%s",newaccount.name)
printf(">>balance:")
scanf("%f",&(newaccount.balance))
fseek(fp,0L,SEEK_END)
fprintf(fp,"%d %d %s %.2f\n",newaccount.account,newaccount.key,newaccount.name,newaccount.balance)
}
void GetAccount(FILE *fp)
{
int accountnum
int key
char name[32]
float balance
int i =0
//char buffer[BUFFERSIZE]
//int len
curAccount = 0
fseek(fp,0,SEEK_SET)
while(!feof(fp)) /* 因为feof()最后会读2遍,所以最后curAccount多加了1 */
{
fscanf(fp,"%d %d %s %f",&accountnum,&key,name,&balance)
accountCollection[curAccount].account = accountnum
accountCollection[curAccount].key = key
strcpy(accountCollection[curAccount].name ,name)
accountCollection[curAccount].balance = balance
curAccount++
}
}
void ListAccount(FILE *fp)
{
int i =0
printf("There is %d accounts at all:\n",curAccount-1)/* curAccount减去多加的1 */
for(i = 0i<curAccount-1i++)
{
printf("ACCOUNT[%d]:\n",i+1)
printf(">>accountnum:%d\n",accountCollection[i].account)
printf(">>accountnum:%s\n",accountCollection[i].name)
printf(">>accountnum:%.2f\n",accountCollection[i].balance)
}
}
int SearchAccount(FILE *fp,int accountnum)
{
int i =0
for(i = 0i<curAccount-1i++)
{
if(accountCollection[i].account == accountnum)
{
printf("ACCOUNT[%d]:\n",i+1)
printf(">>accountnum:%d\n",accountCollection[i].account)
printf(">>accountnum:%s\n",accountCollection[i].name)
printf(">>accountnum:%.2f\n",accountCollection[i].balance)
return 1
}
}
return 0
}
void DelAccount(FILE *fp,int accountnum)
{
int i
if(SearchAccount(fp,accountnum)==0)
printf("Can't find the account\n")
else
{
for(i = 0i<curAccount-1i++)
{
if(accountCollection[i].account != accountnum)
fprintf(fp,"%d %d %s %.2f\n",accountCollection[i].account,accountCollection[i].key,accountCollection[i].name,accountCollection[i].balance)
}
printf("delete successfully!\n")
}
}
int main()
{
FILE *fp
int accountnum
int i
do{
// clrscr()
puts("********************************************")
puts("*You can choose : *")
puts("*1 : Insert a new Account *")
puts("*2 : List all Accounts*")
puts("*3 : Find a Account *")
puts("*4 : Delete a Account *")
puts("*5 : quit *")
puts("********************************************")
puts("Please input your choice:")
scanf("%d",&i)
//clrscr()
switch(i)
{
case 1:
if(!(fp = fopen("account.txt","a+")))
{
printf("can't open the file account.txt\n")
exit(0)
}
InsertAccount( fp)
printf("press any key to continue.....\n")
//getch()
fclose(fp)
break
case 2:
if(!(fp = fopen("account.txt","r")))
{
printf("can't open the file account.txt\n")
exit(0)
}
GetAccount(fp)
ListAccount(fp)
fclose(fp)
printf("press any key to continue.....\n")
//getch()
break
case 3:
printf("please input the account num:\n")
scanf("%d",&accountnum)
if(!(fp = fopen("account.txt","r")))
{
printf("can't open the file account.txt\n")
exit(0)
}
GetAccount(fp)
if(!SearchAccount(fp,accountnum))
printf("There is not the account:%d\n",accountnum)
fclose(fp)
printf("press any key to continue.....\n")
//getch()
break
case 4:
printf("please input the account num:\n")
scanf("%d",&accountnum)
if(!(fp = fopen("account.txt","r")))
{
printf("can't open the file account.txt\n")
exit(0)
}
GetAccount(fp)
fclose(fp)
if(!(fp = fopen("account.txt","w+")))
{
printf("can't open the file account.txt\n")
exit(0)
}
DelAccount(fp,accountnum)
fclose(fp)
printf("press any key to continue.....\n")
// getch()
break
default:
break
}
}while(i != 5)
//getch()
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)