帮忙解答这个程序哪里出错了
题目使用计算机对一种杂志的订阅进行管理。该杂志拥有订户最多不超过10人,每个订户的信息包括姓名、性别、地址、电话号码、杂志单价、订阅数、订阅的期限(至x×年×)
现要求用菜单选择并完成如下功能:
(1)增加新订户,即将订户的全部信息输入到文件中。
(2)根据当天的日期对订户文件进行查询,删除已到期的订户记录。
(3)统计本期杂志订户数并打印运算结果。
#include
#include
#include
#define max 10
struct magazine
{
char name[6];
char sex[3];
char addr[13];
char phone_number[12];
char unit_price[5];
char amount[4];
char time_limit[9];
}order[max];
void menu();
void add();
void search();
void statistic();
int load_record;
void input(int i);
void save(int n);
void print_one(int i);
void print_n(int n);
int main1()
{
FILE*fp;
fp=fopen("record.txt","w");
fclose(fp);
menu();
return 0;
}
void menu()
{
int n,w;
do{
printf("欢迎来到杂志订阅系统\n\n\n");
printf("请选择您的操作(1-4):【 】\b\b\b");
printf("1:添加用户信息\n");
printf("2:查询用户信息\n");
printf("3:统计用户信息\n");
printf("4:退出系统\n");
scanf("%d",&n);
if(n<1||n>4)
{
w=1;
getchar();
}
else
{
w=0;
}
}while(w);
switch(n)
{
case 1:add();break;
case 2:search();break;
case 3:statistic();break;
case 4:exit(0);break;
}
}
void add()
{
printf("add\n");
int t,m,i;
t=load_record;
printf("您希望添加几组用户信息?\n");
printf("请输入数字:【 】\b\b\b");
scanf("%d",&m);
for(i=0;i<m;i++)
{
printf("\请输入第%d组用户记录\n",i+1);
input(t+i);
}
save(t+m);
menu();
}
void input(int i)
{
printf("调用了input函数\n");
printf("请输入:\n 姓名 性别 地址 电话号码 杂志单价 订阅数 订阅期限\n");
scanf("%s%s%s%s%s%s%s",&order[i].name,&order[i].sex,&order[i].addr,&order[i].phone_number,&order[i].unit_price,&order[i].amount,&order[i].time_limit);
}
void search()
{
printf("search\n");
FILE*fp;
char date[9],str[2];
int t,i,sum=0;
t=load_record;
printf("请输入日期:【 】\b\b\b\b\b\b\b\b\b");
scanf("%s",date);
printf("\n");
if((fp=fopen("record.txt","w"))==NULL)
{
printf("文件无法打开\n\n");
exit(0);
}
printf("\n");
for(i=0;i<t;i++)
{
if(strcmp(order[i].time_limit,date)<0)
{
sum++;
printf("\n");
print_one(i);
printf("\n\n该用户信息已过期");
printf("\n\n您希望删除此信息吗?(‘Y’或‘N’):【】\b\b");
scanf("%s",str);
if(strcmp(str,"Y")==0||strcmp(str,"y")==0)
continue;
}
fwrite(&order[i],sizeof(struct magazine),1,fp);
}
fclose(fp);
if(sum==0)
{
printf("找不到您要的信息\n\n");
}
printf("\n\n\n任意键返回上一步\n\n");
getchar();
menu();
}
void print_one(int i)
{
printf("%-10s %-5s %-10s %-11s %-4s %-3s %-10s\n\n",order[i].name,order[i].sex,order[i].addr,order[i].phone_number,order[i].unit_price,order[i].amount,order[i].time_limit);
}
void statistic()
{
printf("statistic\n");
int t;
t=load_record;
print_n(t);
printf("\n\n\n按任意键返回\n\n");
getchar();
getchar();
menu();
}
void print_n(int n)
{
int j;
printf("姓名 性别 地址 电话号码 杂志单价 订阅数 订阅期限\n\n");
for(j=0;j<n;j++)
{
if((j+1)%11==0)
{
printf("\n\n按任意键继续");
getchar();
puts("\n\n");
}
print_one(j);
}
}
int load_recod()
{
printf("load_record()\n");
FILE*fp;
if((fp=fopen("record.txt","r"))==NULL)
{
printf("\n文件无法打开\n");
exit(0);
}
int i;
for(i=0;!feof(fp);i++)
{
fread(&order[i],sizeof(struct magazine),1,fp);
}
fclose(fp);
return(i-1);
}
void save(int n)
{
printf("调用了save函数\n");
FILE*fp;
int i;
fp=fopen("record.txt","w");
if(fp==NULL)
{
printf("\n文件无法打开\n");
exit(0);
}
for(i=0;i<n;i++)
{
fwrite(&order[i],sizeof(struct magazine),1,fp);
}
fclose(fp);
}