📄 051150053.cpp
字号:
#include<stdio.h>
#include<string.h>
struct bankdata /*定义一个结构体*/
{ int num;
char name[20];
float balance;
}
create(FILE *ptr) /*创建具有结构体的空文档*/
{ int num;
struct bankdata data={-1,"NONAME",0};
for(num=0;num<=15;num++)
{ fseek(ptr,num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fwrite(&data,sizeof(struct bankdata),1,ptr); /*写文件*/
}
}
view(FILE *ptr) /*查看文档内容*/
{int num;
struct bankdata data;
clrscr(); /*清屏函数*/
for(num=0;num<=15;num++)
{ fseek(ptr,num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fread(&data,sizeof(struct bankdata),1,ptr); /*读文件*/
printf("%-10d%-16s%-10f\n",data.num,data.name,data.balance);
}
}
add(FILE *ptr) /*添加一个帐目*/
{int num;
struct bankdata data;
printf("Enter new account number(0-15):\n");
scanf("%d",&num); /*提示用户输入帐号*/
fseek(ptr,num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fread(&data,sizeof(struct bankdata),1,ptr); /*读文件*/
if(data.num!=-1)
printf("Account %d already contains information.\n",num);
else
{ printf("Enter name.\n");
scanf("%s",data.name);
printf("Enter balance.\n");
scanf("%f",&data.balance);
data.num=num; /*提示用户输入信息并存储*/
}
fseek(ptr,data.num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fwrite(&data,sizeof(struct bankdata),1,ptr); /*写文件*/
}
delete(FILE *ptr) /*删除一个帐目*/
{ int num;
int num2;
int num1[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; /*定义数组变量并赋初值*/
char name1[20];
char name2[20]; /*定义数组变量*/
struct bankdata blankdata={-1,"NONAME",0};
struct bankdata data;
printf("Enter delete name.\n");
scanf("%s",name1);
for(num=0;num<=15;num++)
{ fseek(ptr,num*(sizeof(struct bankdata))+sizeof(int),SEEK_SET); /*移动文件指针*/
fread(name2,20,1,ptr); /*读文件*/
if(strcmp(name1,name2)==0) num1[num]=num;
}
for(num=0,num2=0;num<=15;num++)
{ if (num1[num]!=-1)
{ fseek(ptr,num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fread(&data,sizeof(struct bankdata),1,ptr); /*读文件*/
printf("%-10d%-16s%-10f\n",data.num,data.name,data.balance);
num2++;
}
}
if (num2>1)
{ printf("Which account do you want to delete?\n");
scanf("%d",&num);
fseek(ptr,num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fwrite(&blankdata,sizeof(struct bankdata),1,ptr); /*写文件*/
}
if(num2==1)
{fseek(ptr,data.num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fwrite(&blankdata,sizeof(struct bankdata),1,ptr); /*写文件*/
}
if(num2==0) printf("There is no your name.\n");
}
modify(FILE *ptr) /*修改帐目*/
{ int num;
int num2;
int num3[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
float num1;
char name1[20];
char name2[20];
struct bankdata data;
printf("Enter modify name.\n");
scanf("%s",name1);
for(num=0;num<=15;num++)
{ fseek(ptr,num*(sizeof(struct bankdata))+sizeof(int),SEEK_SET); /*移动文件指针*/
fread(name2,20,1,ptr); /*读文件*/
if(strcmp(name1,name2)==0) num3[num]=num;
}
for(num=0,num2=0;num<=15;num++)
{ if(num3[num]!=-1)
{fseek(ptr,num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fread(&data,sizeof(struct bankdata),1,ptr); /*读文件*/
printf("%-10d%-16s%-10f\n",data.num,data.name,data.balance);
num2++;
}
}
if(num2>1)
{ printf("Which account do you want to modify?\n");
scanf("%d",&num);
fseek(ptr,num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fread(&data,sizeof(struct bankdata),1,ptr); /*读文件*/
printf("Enter charge(+)or payment(-)\n");
scanf("%f",&num1);
data.balance+=num1;
fseek(ptr,num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fwrite(&data,sizeof(struct bankdata),1,ptr); /*写文件*/
}
if(num2==1)
{printf("Enter charge(+)or payment(-)\n");
scanf("%f",&num1);
data.balance+=num1;
fseek(ptr,data.num*sizeof(struct bankdata),SEEK_SET); /*移动文件指针*/
fwrite(&data,sizeof(struct bankdata),1,ptr); /*写文件*/
}
if(num2==0) printf("There is no your name.\n");
}
main()
{FILE *fptr; /*定义文件指针*/
int choice=0;
if((fptr=fopen("d:\\account.txt","r++"))==NULL) /*打开文件并判断文件打开状况*/
printf("File couldn't be opened.\n"); /*提示出错信息*/
else
{ while(choice!=5) /*当用户选择不是退出时*/
{printf("\nEnter your choice\n" /*菜单*/
"0-create account\n"
"1-view account\n"
"2-add account\n"
"3-delete account\n"
"4-modify account\n"
"5-quit\n");
scanf("%d",&choice); /*提示用户选择功能*/
switch(choice) /*根据用户选择调用不同的功能函数*/
{ case 0:create(fptr);
break;
case 1:view(fptr);
break;
case 2:add(fptr);
break;
case 3:delete(fptr);
break;
case 4:modify(fptr);
break;
}
}
}
fclose(fptr); /*关闭文件*/
getch();
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -