#include<stdio.h>
#include<math.h>
#include<string.h>
#define max 30
#include<stdlib.h>
typedef struct flight
{
char station;
int num;
char time;
int ticketnum;//余票
}ft;
typedef struct userdata {
char user_username[20];
char user_password[8];
int ticket=0;
}user[max];
ft f[max];
int flightnum;//航班数
int n;//航班号
int i;
int usernum;
void writein()//录入航班信息
{
FILE *fp = fopen("flight.txt", "w");
if (fp == NULL) {
printf("open file failed!\n");
exit(0);
}
int a;
printf("请输入需录入的航班数: ");
scanf("%d", &flightnum);
getchar();
for(a=0;a<flightnum;a++)
{
printf("请输入第%d个航班的信息\n",a+1);
printf("请输入终点站\n");
scanf("%s",&f[a].station);
printf("请输入航班号\n");
scanf("%d",&f[a].num);
printf("请输入票数\n");
scanf("%d",&f[a].ticketnum);
printf("请输入起飞时间\n");
scanf("%s",f[a].time);
fprintf(fp,"%s %d %d %s",f[a].station,f[a].num,f[a].ticketnum,f[a].time);
printf("录入成功");
}
fclose(fp);
}
void book()//订票
{
int booknum,y=0;
printf("请输入要预定的航班号");
scanf("%d",&n);
printf("请输入预定的票数");
scanf("%d",&booknum);
for(i=0;i<flightnum;i++){
if(n==f[i].num)
y= 1; break; //若查找成功
}
if(y==1)
{
if(booknum<f[i].ticketnum)
{
printf("订票成功!");
f[i].ticketnum=f[i].ticketnum-booknum;
user[i].ticket=booknum;
}
else
printf("余票不足");
}
else if(y==0)
{
printf("输入错误!");
}
else
{
printf("输入错误!");
}
}
void delay()//退票
{
int delaynum,m=0;
printf("请输入要退票的航班号");
scanf("%d",&n);
printf("请输入退票的票数");
scanf("%d",&delaynum);
for(i=0;i<flightnum;i++){
if(n==f[i].num && user[usernum].ticket!=0 ){
m= 1;
break;
} //若查找成功
}
if(m==1)
{
f[i].ticketnum= f[i].ticketnum+delaynum;
}
else if(m==0)
{
printf("输入错误!");
}
else
{
printf("输入错误!");
}
}
这是出现报错的几个函数源代码,下面是截图
在函数writein中,fprintf函数没有执行,后面的打印录入成功也没有执行,求解答程序比较复杂,麻烦了
user 数组 不要这样定义,像我之前给你写的 ft 一样,单独定义
ticket = 0,这个赋值也是非法的, 去掉= 0
另外,我上一版给你改的,你为啥没全部复制过去,错的还是错的。。。你去看看上一版的