搜档网
当前位置:搜档网 › C语言饭卡管理系统代码

C语言饭卡管理系统代码

#include
#include
#include
#include
#define N 100


struct card
{
char num[10]; char name[10];float money;int g;
};

void myprint();
void mycreate();
void mybuy();
void mysave();
void myadd();
void mydel();
void mylost();
void mydisplayall();
void main()
{
char choose='\0',yes_no='\0';
do
{
myprint();
printf(" ");
choose=getch();

switch(choose)
{
case'1':mycreate();break; /*创建*/
case'2':mybuy();break; /*买饭*/
case'3':mysave();break; /*续钱*/
case'4':myadd();break; /*添加*/
case'5':mydel();break; /*注销*/
case'6':mylost();break; /*挂失*/
case'7':mydisplayall();break;/*显示全部*/
case'0':exit(0);
default:printf("\n %c为非法选项!\n",choose);
}
printf("\n 要继续选择吗(Y/N)?\n");
do
{
yes_no=getche();
}
while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}while(yes_no=='Y'||yes_no=='y');
}


void myprint() /*显示菜单界面*/
{
system("cls"); /*调用清屏函数。若在TC下运行,改用clrscr()*/
printf(" |-------------------------------------------|\n");
printf(" | 请输入选项编号(0-7): |\n");
printf(" |-------------------------------------------|\n");
printf(" | 1---- 创建饭卡 |\n");
printf(" | 2---- 买饭 |\n");
printf(" | 3---- 续钱 |\n");
printf(" | 4---- 添加新饭卡 |\n");
printf(" | 5---- 注销旧饭卡 |\n");
printf(" | 6---- 设置与解除挂失 |\n");
printf(" | 7---- 显示全部信息 |\n");
printf(" | 0---- 退出 |\n");
printf(" |-------------------------------------------|\n");

}


void mycreate() /*定义创建饭卡的函数*/
{
int i=1;
struct card temp ={0};
FILE * fp=NULL;

fp=fopen("d:\\JiLu.dat","w");
if (fp==NULL)
{
printf("\n 打开文件夹失败!\n"); return;
}

system("cls"); /*调用清屏函数。若在TC下运行,改用clrscr()*/
printf("\n 请输入第一个记录:\n");
printf(" 卡号(用#结束输入):");
do
{
gets(temp.num);
}
while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(https://www.sodocs.net/doc/b713694416.html,);
printf(" 金额(用#结束输入):");
scanf("%f",&temp.money);
printf(" 挂失信息(1有,-1无)(用#结束输入):");
scanf("%d",&temp.g);

while(temp.num[0]!='#')
{
fprintf(fp,"%15s%15s%15f%15d\n",temp.num,https://www.sodocs.net/doc/b713694416.html,,temp.money,temp.g);
i++;

printf("\n 请输入第%d个记录:\n",i);
printf(" 卡号(用#结束输

入):");
do
{
gets(temp.num);
}
while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(https://www.sodocs.net/doc/b713694416.html,);
printf(" 金额(用#结束输入):");
scanf("%f",&temp.money);
printf(" 挂失信息(1有,-1无)(用#结束输入):");
scanf("%d",&temp.g);
}
fclose(fp);
}

void mybuy() /*定义买饭的函数*/
{
char c='\0';
int n=0;float mtemp;
struct card*find=NULL,temp={0},record[100]={0},*p=NULL;
FILE*fp=NULL;
fflush(stdin);
fp=fopen("d:\\JiLu.dat","r");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%15s%15s%15f%15d\n",p->num,p->name,&p->money,&p->g);
p++;
n++;
}
fclose(fp);

if(n==0)
{
("\n 文件中无记录!\n");return;
}
printf("\n请输入要买饭的学号:");
gets(temp.num);
for(p=record;pif(strcmp(temp.num,p->num)==0)
{
find=p;break;
}

if(p==record+n)
{
printf("\n 无此卡!\n");return;
}
if(p->g==-1)
{
printf("此卡已挂失\n");
return;
}
else
{
if(p->money<5.0)
{ printf("不足5元,请续钱\n");
return;
}
if(p->money>5.0)
{ printf("请输入金额");
scanf("%f",&mtemp);
if(p->money>mtemp)
{
printf("Before:%f元\n",(p->money));
(p->money)=(p->money)-mtemp;
printf("After:%f元\n",(p->money));
}
if(p->money{
printf("金额不足,请续钱\n");
return;
}
}
}
fp=fopen("d:\\JiLu.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");return;
}
for(p=record;pfprintf(fp,"%15s%15s%15f%15d\n",p->num,p->name,p->money,p->g);
fclose(fp);

}

void mysave() /*定义续钱的函数*/
{
char c='\0';
int n=0;float mtemp;
struct card*find=NULL,temp={0},record[100]={0},*p=NULL;
FILE*fp=NULL;
fflush(stdin);
fp=fopen("d:\\JiLu.dat","r");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%15s%15s%15f%15d\n",p->num,p->name,&p->money,&p->g);
p++;
n++;
}
fclose(fp);

printf("\n请输入要续费的卡号:");
gets(temp.num);
for(p=record;pif(strcmp(temp.num,p->num)==0)
{
find=p;break;
}
if(p==record+n)
{
printf("\n 无此卡!\n");return;
}

if(p->g==-1)
{
printf("此卡已挂失\n");
return;
}
printf("请输入金额:");
scanf("%f",&mtemp);
printf("Before:%f元\n",(p->money));
(p->money)=(p->money)+mtemp;
printf("After:%f元\n",(p->money));

fp=fopen("d:\\JiLu.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");return;
}

for(p=record;pfprintf(fp,"%15s%15s%15f%15d\n",p->num,p->name,p->money,p->g);
fclose(fp);

}


void myadd() /*定义添加新饭卡的函数*/
{

char c='\0';
int n=0;
struct card temp={0},record[N]={0},*p=NULL;
FILE * fp=NULL;
fflush(stdin);
fp=fopen("d:\\JiLu.dat","r");
if(fp==NULL)
{
printf("\n 打开文件失败!\n ");
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%15s%15s%15f%15d\n",p->num,p->name,&(p->money),&(p->g));
p++;
n++;
}
fclose(fp);

do
{
printf("\n 请输入新添加的卡号:");
do
{
gets(temp.num);
}
while(strcmp(temp.num,"")==0);
printf("\n 请输入新添加的姓名: ");
gets(https://www.sodocs.net/doc/b713694416.html,);
printf("\n 请输入新添加的金额: ");
scanf("%f",&temp.money);
printf("\n 请输入新添加的挂失信息: ");
scanf("%d",&temp.g);

for(p=record;pif(strcmp(temp.num,p->num)==0)
{
printf("\n 卡号重复,要重新输入吗(Y/N)?");
do
{
c=getche();
}
while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;
}
if(p==record+n)
{*p=temp;break;}
}
while(c=='y'||c=='Y');

fp=fopen("d:\\JiLu.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;pfprintf(fp,"%15s%15s%15f%15d\n",p->num,p->name,(p->money),(p->g));
fclose(fp);
}

void mydel() /*定义注销饭卡的函数*/
{
char tempnum[8]="";
int n=0;
struct card record[N]={0},*p=NULL,*k=NULL;
FILE*fp=NULL;
fflush(stdin);


fp=fopen("d:\\JiLu.dat","r");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");return;
}


p=record;
while(feof(fp)==0)
{
fscanf(fp,"%15s%15s%15f%15d\n",p->num,p->name,&p->money,&p->g);
p++;
n++;
}
fclose(fp);
printf("\n 请输入要注销的卡号:");
gets(tempnum);

p=record;
for(k=record;kif(strcmp(tempnum,k->num)==0) break;
if(kfor(p=k;p*p=*(p+1);
else printf("\n 无此卡!\n");

fp=fopen("d:\\JiLu.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");return;
}

for(p=record;pfprintf(fp,"%15s%15s%15f%15d\n",p->num,p->name,p->money,p->g);
fclose(fp);
}


void mylost() /* 定义修改挂失信息的函数*/
{
char c='\0';
int n=0;
struct card *find=NULL,temp={0},record[100]={0},*p=NULL;
FILE*fp=NULL;
fflush(stdin);
fp=fopen("d:\\JiLu.dat","r");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%15s%15s%15f%15d\n",p->num,p->name,&p->money,&p->g);
p++;
n++;
}
fclose(fp);
if(n==0)
{
printf("\n 文件中无记录!\n");return;
}
printf("\n 请输入要修改挂失信息的卡号:");
gets(temp.num);
for(p=record;pif(strcmp(temp.num,p->num)==0)
{
find=p;break;
}
if(p==record+n)
{
printf("\n 无此卡!\n");return;
}
printf(" 请输入

挂失信息:");
scanf("%d",&p->g);

fp=fopen("d:\\JiLu.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");return;
}

for(p=record;pfprintf(fp,"%15s%15s%15f%15d\n",p->num,p->name,p->money,p->g);
fclose(fp);
}

void mydisplayall() /*定义显示全部信息的函数*/
{
int n=0;
struct card temp={0};
FILE*fp=NULL;

fp=fopen("d:\\JiLu.dat","r");
if(fp==NULL)
{
printf("\n 打开文件失败!\n"); return;
}

system("cls");
printf(" 卡号 姓名 金额 挂失信息\n");
while(feof(fp)==0)
{
fscanf(fp,"%15s%15s%15f%15d\n",temp.num,https://www.sodocs.net/doc/b713694416.html,,&temp.money,&temp.g);
printf("%15s%15s%15f%15d\n",temp.num,https://www.sodocs.net/doc/b713694416.html,,temp.money,temp.g);
n++;
}
if(n==0) printf("\n 文件中无记录!\n");
else printf("\n 文件中共有%d个记录!\n",n);
fclose(fp);
}

相关主题