#include
#include
#include
#include
#include
#include
#define CARD_NUM 1024
#define CARD_FILE "card_information.txt"
class CARD
{
public:
long int id; /* 编号 4B */
short flag; /* 标志:0,无效 1,有效 2, 挂失 2B */
char name[16]; /* 名字 16B */
short money; /* 费用 2B */
} ;
class CARD_HANDLE
{
public:
int exitflg;
int nsel;
long int id;
char name[16];
short money;
CARD mycard[CARD_NUM];
public:
int card_init();
int card_exit();
int card_add();
int card_modflag(short flag);
int card_modfare();
int card_del();
void card_showlist();
int card_showbyid();
void menu();
};
int CARD_HANDLE:: card_init()
{
FILE *stream;
int nread, ncnt;
memset( mycard, 0x00, CARD_NUM * sizeof( CARD ) );
stream=fopen( CARD_FILE, "rb" );
if (stream == (FILE *)NULL)
{
return -1;
}
nread=0;
ncnt=0;
while(1)
{
nread=fread( &mycard[ ncnt ], sizeof( CARD), CARD_NUM-ncnt, stream );
if (nread<=0)
{
break;
}
ncnt+=nread;
}
fclose( stream );
return 0;
}
int CARD_HANDLE::card_exit()
{
FILE *stream;
int nread, ncnt;
stream = fopen( CARD_FILE, "wb" );
if (stream == (FILE *)NULL)
{
return -1;
}
nread = 0;
ncnt = 0;
while(1)
{
/* 写数据 */
nread = fwrite( &mycard[ ncnt ], sizeof( CARD ), CARD_NUM - ncnt, stream );
if ( nread <= 0)
{
break;
}
ncnt+=nread;
if (ncnt==CARD_NUM)
{
break;
}
}
fclose(stream);
return 0;
}
int CARD_HANDLE::card_add()
{
int i;
for (i = 0; i
if (mycard[i].flag == 0)
{
mycard[i].id = id;
strcpy(mycard[i].name, name );
mycard[i].money = money;
mycard[i].flag = 1;
cout<<"友情提醒:IC卡的编号是您身份识别的唯一标识,请牢记!"<
}
}
return -1;
}
int CARD_HANDLE::card_modflag(short flag )
{
int i;
if (id<0)
{
return -1;
}
for (i=0;i
if (mycard[i].id==id)
{
mycard[i].flag=flag;
return i;
}
}
return 0;
}
int CARD_HANDLE::card_modfare()
{
int i;
if (id<0)
{
return -1;
}
for (i=0;i
if (mycard[i].id==id)
{
if ( mycard[i].flag!= 1 )
{
return -1;
}
mycard[i].money+=money;
cout<<"充值成功!"<
}
}
}
int CARD_HANDLE::card_del()
{
int i;
if (id<0)
{
return -1;
}
for (i=0;i
if (mycard[i].id==id)
{
mycard[i].flag = 0;
}
}
return 0;
}
void CARD_HANDLE::card_showlist()
{
int i;
cout<<"所有公交卡信息如下:"<
if (mycard[ i ].flag != 0)
{
cout<<"编号:"<
}
cout<
int CARD_HANDLE::card_showbyid()
{
int i=0;
if (id<0)
{
return -1;
}
cout<<"公交卡信息如下:"<
if (mycard[ i ].id==id)
{
cout<<"编号:"<
}
cout<
}
void CARD_HANDLE::menu()
{
cout<<"\t菜单\n" ;
cout<< "1) 公交IC卡录入.\n" ;
cout<< "2) 为公交IC卡充值.\n" ;
cout<< "3) 注销公交IC卡.\n" ;
cout<< "4) 挂失公交IC卡.\n" ;
cout<< "5) 查询公交IC卡信息.\n" ;
cout<< "6) 显示所有公交IC卡信息.\n" ;
cout<< "0) 退出.\n" ;
cout<<"请选择功能:"<
int main()
{
CARD_HANDLE handle;
handle.card_init();
handle.exitflg = 0;
while(1)
{
handle.menu();
fflush(stdin);
handle.nsel = -1;
cin>>handle.nsel;
switch (handle.nsel)
{
case 0:
handle.exitflg=1;
break;
case 1:
cout<<"编号:"<
cout<<"姓名:"<
cout<<"金额: "<
handle.card_add();
break;
case 2:
cout<<"所需充值编号 : "<
cout<<"所需充值金额 : "<
handle.card_modfare();
break;
case 3:
cout<<"所需注销编号 :"<
handle.card_modflag(0);
cout<<"已注销!"<
case 4:
cout<<"所需挂失编号 : "<
handle.card_modflag(2);
cout<<"已挂失!"<
case 5:
cout<<"所需查询编号 : "<
handle.card_showbyid();
break;
case 6:
handle.card_showlist();
break;
default:
break;
}
if (handle.exitflg==1)
{
break;
}
system( "pause" );
system( "cls" );
}
handle.card_exit();
return 0;
}