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

这个是要求的界面:|-------------------------------||请输入选项编号(0--7)||---------------------------... 这个是要求的界面:
|-------------------------------|
| 请输入选项编号(0--7) |
|-------------------------------|
| 1——建立饭卡文件 |
| 2——买饭 |
| 3——续钱 |
| 4——添加新饭卡 |
| 5——注销旧饭卡 |
| 6——设置与解除挂失 |
| 7——显示全部饭卡信息 |
|-------------------------------|
功能要求:
主菜单选择1,建立名为card.dat的文件,并在其中添加若干人的饭卡号、姓名、金额、挂失信息,要求凡卡号是唯一的;
主菜单选择2,要求用户输入饭卡号、饭费,然后系统自动从该人的饭卡中减去饭钱,并分别显示买饭前后的金额,如果原来饭卡中的余额不足5元,则不能买饭,而且显示“余额不够,请续钱!”如果挂失信息为真,则显示“本卡已冻结!”;
主菜单选择3,要求用户输入饭卡号,续钱金额,续钱完成后分别显示续钱前后的金额;
主菜单选择4:添加新饭卡,这是要求新饭卡号和已有的不能重号;
主菜单选择5:注销旧饭卡;
主菜单选择6:要求用户输入饭卡号和挂失信息,然后更新该饭卡的挂失信息;
主菜单选择7:显示全部饭卡信息;
要运行没问题的!谢谢了!!!!
我需要的只是一个C语言的课程设计实训代码,希望好心人能够帮忙做一下!如果做好了,本人愿意把全部分数奉上!谢谢各位大虾了!
展开
 我来答
luosiyong
推荐于2018-04-04 · TA获得超过3256个赞
知道大有可为答主
回答量:1090
采纳率:0%
帮助的人:1611万
展开全部
花半小时简单的写了一下,你看看行不行.
最开始运行程序的时候,要先建立文件,就是要选菜单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(); //退出系统的时候,把数据保存到文件
}
zhangtqqq
2008-06-07 · TA获得超过274个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:71.9万
展开全部
不需要1万,1000元就可以了,我一个人一个月内就可以搞定.
当然,如果可以用数据库的话,那就更快了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
geagler
2008-06-07
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
呵呵,一个月,这可是大学生实践课内容,一个星期就完事,等你做,黄花菜都凉了!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一点水l25Fb
2018-11-27
知道答主
回答量:3
采纳率:0%
帮助的人:2216
展开全部
N0.100001136
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ptmary
2008-06-09 · TA获得超过136个赞
知道小有建树答主
回答量:201
采纳率:0%
帮助的人:0
展开全部
luosiyong已经写的很不错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 9条折叠回答
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式