资源描述
(word完整版)c语言饭卡管理系统代码档
c语言饭卡管理系统代码档
#include<stdio.h〉
#include<string.h>
#include<conio。h〉
#include〈stdlib.h〉
#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(temp.name);
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,temp.name,temp。money,temp.g);
i++;
printf(”\n 请输入第%d个记录:\n”,i);
printf(” 卡号(用#结束输入):”);
do
{
gets(temp。num);
}
while(strcmp(temp。num,”")==0);
printf(" 姓名(用#结束输入):”);
gets(temp。name);
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;p<record+n;p++)
if(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<mtemp)
{
printf(”金额不足,请续钱\n”);
return;
}
}
}
fp=fopen(”d:\\JiLu.dat”,"w");
if(fp==NULL)
{
printf(”\n 打开文件失败!\n");return;
}
for(p=record;p〈record+n;p++)
fprintf(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;p<record+n;p++)
if(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;p〈record+n;p++)
fprintf(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(temp。name);
printf(”\n 请输入新添加的金额: ”);
scanf(”%f”,&temp.money);
printf(”\n 请输入新添加的挂失信息: ");
scanf(”%d”,&temp。g);
for(p=record;p〈record+n;p++)
if(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;p〈record+n+1;p++)
fprintf(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;k<record+n;k++)
if(strcmp(tempnum,k—>num)==0) break;
if(k<record+n)
for(p=k;p<k+n—1;p++)
*p=*(p+1);
else printf(”\n 无此卡!\n”);
fp=fopen(”d:\\JiLu。dat”,”w”);
if(fp==NULL)
{
printf("\n 打开文件失败!\n");return;
}
for(p=record;p<record+n-1;p++)
fprintf(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;p〈record+n;p++)
if(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;p〈record+n;p++)
fprintf(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,temp.name,&temp.money,&temp.g);
printf("%15s%15s%15f%15d\n",temp.num,temp。name,temp。money,temp。g);
n++;
}
if(n==0) printf("\n 文件中无记录!\n");
else printf("\n 文件中共有%d个记录!\n”,n);
fclose(fp);
}
展开阅读全文