c语言饭卡管理系统_200分求救!C语言饭卡管理系统代码!

匿名用户

1级

2014-05-07 回答

花半小时简单的写了一下,你看看行不行.

最开始运行程序的时候,要先建立文件,就是要选菜单1.

#include <stdio.h>

struct Card

{

int ID; //卡号

char name[20];

double value; //金额

int flag; //挂失信息

}

card[1000]; //假设最多1000张

int counts; //当前已有饭卡数量

FILE * fp;

int menu()

{

int choose;

printf("|-------------------------------|\n");

printf("| 请输入选项编号(0--7) |\n");

printf("|-------------------------------|\n");

printf("| 0——退出 |\n");

printf("| 1——建立饭卡文件 |\n");

printf("| 2——买饭 |\n");

printf("| 3——续钱 |\n");

printf("| 4——添加新饭卡 |\n");

printf("| 5——注销旧饭卡 |\n");

printf("| 6——设置与解除挂失 |\n");

printf("| 7——显示全部饭卡信息 |\n");

printf("|-------------------------------|\n");

scanf("%d",&choose);

return choose;

}

void write_file()

{

int i;

FILE * f;

f=fopen("card.dat","w");

for(i=0;i<counts;i++)

fprintf(f,"%d %s %lf %d\n",card[i].ID,card[i].name,card[i].value,card[i].flag);

fclose(f);

}

void create_file() //如果已经存在了card.dat那么就打开该文件

{

int i=0;

fp=fopen("card.dat","r");

if(fp!=NULL) //如果已经存在

{

printf("文件已经存在!\n");

while(fscanf(fp,"%d%s%lf%d",&card[i].ID,card[i].name,&card[i].value,&card[i].flag)!=EOF)

i++;

counts=i;

fclose(fp);

return ;

}

fp=fopen("card.dat","w");

printf("输入卡号,姓名,金额,挂失信息(0/1)(卡号-1表示输入结束!):\n");

while(scanf("%d%s%lf%d",&card[i].ID,card[i].name,&card[i].value,&card[i].flag),card[i].ID!=-1)

i++;

counts=i;

fclose(fp);

write_file();

}

void buy1(int card_id,double cost)

{

int i;

for(i=0;i<counts;i++)

{

if(card[i].ID==card_id)

{

if(card[i].flag==1)

{

printf("本卡已挂失!\n");

return ;

}

if(card[i].value<5)

{

printf("金额不足!\n");

return ;

}

printf("%lf\n",card[i].value);

card[i].value-=cost;

printf("%lf\n",card[i].value);

}

}

printf("非法卡!\n");

}

void buy()

{

int id;

double v;

printf("输入卡号和消费金额:\n");

scanf("%d%lf",&id,&v);

buy1(id,v);

}

void add_value()

{

int id,i;

double v;

printf("输入卡号和续钱金额:\n");

scanf("%d%lf",&id,&v);

for(i=0;i<counts;i++)

{

if(card[i].ID==id)

{

printf("%lf\n",card[i].value);

card[i].value+=v;

printf("%lf\n",card[i].value);

printf("ok!\n");

return ;

}

}

printf("error!\n");

}

void add_card()

{

int i=counts;

printf("输入卡号,姓名,金额,挂失信息(0/1)(卡号-1表示输入结束!):\n");

while(scanf("%d%s%lf%d",&card[i].ID,card[i].name,&card[i].value,&card[i].flag),card[i].ID!=-1)

i++;

counts=i;

}

void del_card()

{

int id;

int i,j;

printf("输入要注销的卡号:\n");

scanf("%d",&id);

for(i=0;i<counts;i++)

{

if(card[i].ID==id)

{

for(j=i;j<counts-1;j++)

card[j]=card[j+1];

printf("注销成功!\n");

return ;

}

}

}

void set_flag()

{

int id,i,f;

printf("输入卡号和挂失信息(1:挂失,0:解除挂失)\n");

scanf("%d%d",&id,&f);

for(i=0;i<counts;i++)

{

if(card[i].ID==id)

{

card[i].flag=f;

printf("设置完成 !\n");

break;

}

}

}

void output()

{

int i;

printf("%6s%11s%10s%6s\n","卡号","姓名","金额","挂失");

for(i=0;i<counts;i++)

printf("%6d%11s%10.3lf%2d\n",card[i].ID,card[i].name,card[i].value,card[i].flag);

}

void main()

{

int m;

while(m=menu(),m)

{

switch(m)

{

case 1:

create_file();

break;

case 2:

buy();

break;

case 3:

add_value();

break;

case 4:

add_card();

break;

case 5:

del_card();

break;

case 6:

set_flag();

break;

case 7:

output();

break;

default:

printf("输入有误,重新输入!\n");

}

}

write_file(); //退出系统的时候,把数据保存到文件

}

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值