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

Python016

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

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

最开始运行程序的时候,要先建立文件,就是要选菜单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=0i<countsi++)

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=0i<countsi++)

{

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=0i<countsi++)

{

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=0i<countsi++)

{

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

{

for(j=ij<counts-1j++)

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=0i<countsi++)

{

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

{

card[i].flag=f

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

break

}

}

}

void output()

{

int i

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

for(i=0i<countsi++)

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()//退出系统的时候,把数据保存到文件

}

定义

struct Card

{

int ID//卡号

char name[20]//姓名

double value//金额

int flag//挂失信息

} //特别注意,这里的分号不可以少

以后,struct Card就是和int,char一样是一种类型了

然后可以定义变量

struct Card card

card.ID,card.flag等等就可以用了

如果是在C++中

struct Card card和Card card效果一样

但是C中,定义变量的时候,struct不可以省略,如果要省略的话,在定义这个struct的时候用typedef定义一个别名

typedef struct Card

{

..

}Card//Card变成struct Card的别名

然后可以使用struct Card card或者Card card来定义变量

struct Card

{

int ID//卡号

char name[20]//姓名

double value//金额

int flag//挂失信息

}card[1000]表示定义一个card数组,该包含了1000个Card变量

就变成了card[0].ID,card[1].name这样了

假如struct Card card

struct Card *p=&card

当变量是指针的时候,用p->ID,p->name //指针的时候这种更常用

等价于(*p).ID,(*p).name

#include "stdio.h"

static int num =1

static int name =2

static int type =3

static int m

static void Sel()

static void Sel1()

static void Dis()

static void Dis1()

static void Sel()

{

/*这里读者号,姓名和读者类型默认为1 2 3*/

scanf("%d", & num)

scanf("%d", & name)

scanf("%d", & type)

if (num == 1)

{

if (name == 2)

{

if (type == 3)

{

Dis1()

Sel1()

}

}

}

else

{

printf("你输入的信息有误。")

printf("请输入读者号,姓名和读者类型,中间用空格隔开:\n")

}

}

/*输入信息提示界面*/

static void Dis()

{

Sel()

}

/*功能选择界面*/

static void Dis1()

{

printf("+++ 服务 +++\n")

printf("+++1.挂失 +++\n")

printf("+++2.功能2+++\n")

}

/*读者信息输入和验证功能*/

/*挂失功能*/

static void Sel1()

{

int c

scanf("%d", & m)

if (m == 1)

{

printf("确定要挂失吗?\r\n 1.确定 2.取消\n")

scanf("%d", &c)

if (c == 1)

{

printf("挂失成功!")

}

else

{

Dis1()

Sel1()

}

}

}

int main(void)

{

printf("请输入读者号,姓名和读者类型,中间用空格隔开:\n")

Sel()

return 0

}