大一新手想做一个信息管理系统,文件的修改方面遇到难题。。。
主要想做一个健身会员信息管理系统包含了三大模块
一是录入基本信息:会员号、姓名、身高体重(初始课程瑜伽、健身、游泳数量为0)
二是记录课程:根据会员号记录,其中有购买课程和消费课程,每消费一次相应课程减一
三是查询资料:根据会员号查询相关基本信息,包括各个课程所剩数量
求大触指导设计!谢谢!
以下是自己码的浅陋代码,错误很多但是头已经很大了,就是想说不是自己毫无思考就来求教的。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct member
{
int ID;
char name[20];
double hight;
double weight;
int yoga;
int jianshen;
int swim;
}member;
void Readfile(member m[20]) //录入函数//
{
FILE *fp;
static int i=1;
m[i].yoga=0,m[i].jianshen=0,m[i].swim=0;
fp=fopen("D:\\file.txt","a");
printf("请输入会员号 姓名 身高(m) 体重(kg)\n");
scanf("%d%s%lf%lf",&m[i].ID,m[i].name,&m[i].hight,&m[i].weight);
if(fp==0)
{
printf("ERROE\n");
exit(1);
}
printf("\n注册成功!\n\n\n");
fprintf(fp,"%d、%d %s %gm %gkg %5d%5d%5d\n",i++,m[i].ID,m[i].name,m[i].hight,m[i].weight,m[i].yoga,m[i].jianshen,m[i].swim);
fclose(fp);
}
void refer(member s[20])//查询函数//
{
double BMI;double h;double w;
int i;int num;
printf("请输入身高、体重和会员号:\n");
scanf("%lf %lf %d",&h,&w,&num);
BMI=w/h/h;
if(BMI<18.5)
{
printf("BMI=%lf 偏瘦\n",BMI);
}
else
{
if(BMI>23.9)
{
printf("BMI=%lf 偏胖\n",BMI);
}
else
{
printf("BMI=%lf 正常\n",BMI);
}
}
FILE *fp;
fp=fopen("D://file.txt","r");
if(fp==0)
{
printf("file error\n");
exit(1);
}
for(i=1;i<11;i++)
{
if(s[i].ID==num)
{
printf("瑜伽=%d 游泳=%d 健身=%d\n",s[i].yoga,s[i].swim,s[i].jianshen);
break;
}
}
}
void purchase(member s[]) //购买函数//
{
int a,k,num,i;
FILE *fp;
fp=fopen("D:\\file.txt","r+");
printf("----请输入您的会员号: ");
scanf("%d",&num);
if(fp==0)
{
printf("file error\n");
exit(1);
}
do{
printf("\n----请选择需要购买项目:\n");
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" ****1.瑜伽****\n");
printf(" ****2.游泳****\n");
printf(" ****3.健身****\n");
printf(" ***0退出***\n");
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~\n");
do //防止操作失误,误按情况//
{
scanf("%d",&a);
if(a>3)
printf("--错误输入,请重试:");
}while(a>3);
if(a==0)
break;
printf("\n----请输入购买数量:");
scanf("%d",&k);
switch(a)
{
case 1:for(i=1;i<20;i++)
{
if(s[i].ID==num)
{
s[i].yoga+=k;
printf("\n****购买成功******\n");
break;
}
}break;
case 2:for(i=1;i<20;i++)
{
if(s[i].ID==num)
{
s[i].swim+=k;
printf("\n****购买成功******\n");
break;
}
}break;
case 3:for(i=1;i<20;i++)
{
if(s[i].ID==num)
{
s[i].jianshen+=k;
printf("\n****购买成功******\n");
break;
}
}break;
}
}while(a>0&&a<4);
fprintf(fp,"%d、%d %s %gm %gkg %5d%5d%5d\n",i,s[i].ID,s[i].name,s[i].hight,s[i].weight,s[i].yoga,s[i].jianshen,s[i].swim);
fclose(fp);
}
void comsume(member s[]) //消费函数//
{
int m,n;
FILE *fp;
fp=fopen("D:\\file.txt","a");
printf("----请输入会员号:");
scanf("%d",&m);
printf("\n----请选择消费项目:\n");
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" ****1.瑜伽****\n");
printf(" ****2.游泳****\n");
printf(" ****3.健身****\n");
printf(" ***0退出***\n");
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~\n");
scanf("%d",&n);
switch(n)
{
case 1:s[m].yoga-=1;
break;
case 2:s[m].swim-=1;
break;
case 3:s[m].jianshen-=1;
break;
case 12:s[m].yoga-=1,s[m].swim-=1;
break;
case 13:s[m].yoga-=1,s[m].jianshen-=1;
break;
case 23:s[m].swim-=1,s[m].jianshen-=1;
break;
case 123:s[m].yoga-=1,s[m].swim-=1,s[m].jianshen-=1;
break;
case 0:break;
}
printf("\n---消费成功!\n");
fprintf(fp,"%d、%d %s %gm %gkg %5d%5d%5d\n",m++,s[m].ID,s[m].name,s[m].hight,s[m].weight,s[m].yoga,s[m].jianshen,s[m].swim);
fclose(fp);
}
void record(member s[]) //记录函数//
{
int i;
do
{
printf("请选择需要服务项目序号:\n");
printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf(" ****** 1.项目购买 ********\n");
printf(" ****** 2.项目消费 ********\n");
printf(" **0退出**\n");
printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
scanf("%d",&i);
if(i==0)
break;
switch(i)
{
case 1:purchase(s);
break;
case 2:comsume(s);
break;
case 0:break;
}
}while(i>0&&i<3);
}
int main()
{
int n;
member mem[20];
do
{
printf("请输入所需服务对应序号,并按回车键结束:\n");
printf("\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf("^^1、*************录入信息*************^^\n");
printf("^^2、*************信息查询*************^^\n");
printf("^^3、*************信息记录*************^^\n");
printf("^^4、*************退出程序*************^^\n");
printf("^^ ^^\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
scanf("%d",&n);
switch(n)
{
case 1: Readfile(mem);
break;
case 2:refer(mem);
break;
case 3:record(mem);
break;
}
}while(n>0&&n<4);
return 0;
}