谁能帮我做这个啊,怎么实现循环啊,好像函数写错了,真心要蒙了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 20
#define N 1000
#define Print() printf("\t%-9s%-10s%-10s%-10s%-7s%-10s%-10s\n","航 班","日 期","起 始 站","终 点 站","时 间","座位号","票 价");
typedef int Status;
typedef struct flightnumber{
char flight[MAX];
char date[MAX];
char start[MAX];
char to[MAX];
char clock[MAX];
int seat;
float charge;
}flightnum;//航班 flightnum flight[N]
flightnum flight[N]=
{
"","","","","",0,0.0,
"K567","01月13日","Hefei","Shanghai","09:30",100,578.0,
"K839","01月13日","Nanjing","Shanghai","14:30",100,378.0,
"D5763","01月13日","Shanghai","Beijing","18:20",100,276.0,
"K237","07月17日","Beijng","Hefei","11:30",100,274.0,
"D5848","11月23日","Beijing","Nanjing","09:45",100,345.0,
"D8939","04月23日","Nanjing","Hefei","10:36",100,123.0
};
typedef struct userinfo{
char name[MAX];
char IDcardnum[MAX];
int ticket;
char flight[MAX];
char date[MAX];
char start[MAX];
char to[MAX];
char clock[MAX];
int seat;
float charge;
}userinfo; //用户结构体
userinfo user[N]; //userinfo user[N]
Status Homepage();//主要函数
Status Booking();
/*Status Returning();
Status Querying();
Status STquerying();// 各种航班查询
Status Datequerying();
Status Flightquerying();
Status usernamequerying();
*/
Status searching(int j,char start[],char to[]);
void userinfostorage(int i,int j,char name[],char IDcardnum[]);//对用户而言
int p;//全局变量记录用户个数
int q;
void main()
{
Homepage();
}
Status Homepage()
{
int choice;
printf("%49s\n%48s\n%49s\n","**************************","欢迎来到中国航空售票系统","**************************");
printf(" ******** 1:订票(Booking) ********\n\n"
" ******** 2:退票(Returning) ********\n\n"
" ******** 3:查询(Querying) ********\n\n"
" ******** 4:退出(EXIT) ********\n\n");
printf("请选择: ");
scanf("%d",&choice);
switch(choice)
{
case 1:
Booking();
break;
/*case 2:
Returning();
break;
case 3:
Querying();
break;
*/
default:
printf("你没有进行任何操作!");
break;
}
return 0;
}
Status Booking()//订票
{
char a;
int i=0,j=1;
char name[MAX];
char IDcardnum[MAX];
char start[MAX];
char to[MAX];
printf("请输入姓名及身份证号码 (按Enter键结束输入)\n");
scanf("%s%s",name,IDcardnum);
printf("请输入起点站和终点站 (首字母大写! 例如:Hefei Shanghai) (按Enter键结束输入)\n");
scanf("%s%s",start,to);
searching(j,start,to);// 显示所订票的信息return j
userinfostorage(++i,j,name,IDcardnum);//存储用户信息// 打印信息
printf("用户 %s 您好,所购机票信息如下: \n",user[i].name);
Print();
printf("\t%-8s%-11s%-10s%-10s%-8s%-9d%-5.2f\n",flight[j].flight,flight[j].date,
flight[j].start,flight[j].to,flight[j].clock,user[i].seat,flight[j].charge);//查看所订票信息*/
printf("是否继续订票? (Y/N) (按Enter键结束输入)\n");
a=getchar();
getchar();
if(a=='Y'||a=='y'){
Booking();
}
else{
Homepage();
}
return i;
}
Status searching(int j,char start[],char to[])//查找航班 j==1
{
int a;
int b;
a=strcmp(flight[j].start,start);//存在这样的航班
b=strcmp(flight[j].to,to);
if(a==0&&b==0){
flight[j].seat--;
printf("成功订购了1 张机票!\n");
}
else{
searching(j++,start,to);
}
return j;
}
void userinfostorage(int i,int j,char name[],char IDcardnum[])//用户信息存储
{
int seat;
srand(time(NULL));
seat=1+rand()%100;
strcpy(user[i].name,name);
strcpy(user[i].IDcardnum,IDcardnum);
user[i].ticket++;
strcpy(user[i].flight,flight[j].flight);
strcpy(user[i].date,flight[j].date);
strcpy(user[i].clock,flight[j].clock);
user[i].seat=seat;
user[i].charge=flight[j].charge;
}
[解决办法]
please post your code in the right format, so every one can read it easily!
you need to tell your requirement, your purpose and what is wrong
[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 20
#define N 1000
#define Print() printf("\t%-9s%-10s%-10s%-10s%-7s%-10s%-10s\n","航 班","日 期","起 始 站","终 点 站","时 间","座位号","票 价");
typedef int Status;
typedef struct flightnumber{
char flight[MAX];
char date[MAX];
char start[MAX];
char to[MAX];
char clock[MAX];
int seat;
float charge;
} flightnum;//航班 flightnum flight[N]
flightnum flight[N]=
{
"","","","","",0,0.0,
"K567","01月13日","Hefei","Shanghai","09:30",100,578.0,
"K839","01月13日","Nanjing","Shanghai","14:30",100,378.0,
"D5763","01月13日","Shanghai","Beijing","18:20",100,276.0,
"K237","07月17日","Beijing","Hefei","11:30",100,274.0,
"D5848","11月23日","Beijing","Nanjing","09:45",100,345.0,
"D8939","04月23日","Nanjing","Hefei","10:36",100,123.0
};
typedef struct userinfo{
char name[MAX];
char IDcardnum[MAX];
int ticket;
char flight[MAX];
char date[MAX];
char start[MAX];
char to[MAX];
char clock[MAX];
int seat;
float charge;
}userinfo; //用户结构体
userinfo user[N]; //userinfo user[N]
Status Homepage();//主要函数
Status Booking();
/*Status Returning();
Status Querying();
Status STquerying();// 各种航班查询
Status Datequerying();
Status Flightquerying();
Status usernamequerying();
*/
Status searching(int *index, char start[], char to[]);
void userinfostorage(int i,int j,char name[],char IDcardnum[]);//对用户而言
int p;//全局变量记录用户个数
int q;
void main()
{
Homepage();
}
Status Homepage()
{
int choice;
while(1)
{
printf("%49s\n%48s\n%49s\n","**************************","欢迎来到中国航空售票系统","**************************");
printf(" ******** 1:订票(Booking) ******** \n\n"
" ******** 2:退票(Returning) ******** \n\n"
" ******** 3:查询(Querying) ******** \n\n"
" ******** 4:退出(EXIT) ********\n\n");
printf("请选择: ");
scanf("%d",&choice);
switch(choice)
{
case 1:
Booking();
break;
/*case 2:
Returning();
break;
case 3:
Querying();
break;
*/
case 4:
return 0;
default:
printf("你没有进行任何操作!");
break;
}
}
return 0;
}
Status Booking()//订票
{
char a;
//int i=0,j=1;
static i = 0;
int index;
char name[MAX];
char IDcardnum[MAX];
char start[MAX];
char to[MAX];
do{
printf("请输入姓名及身份证号码 (按Enter键结束输入)\n");
scanf("%s%s",name,IDcardnum);
printf("请输入起点站和终点站 (首字母大写! 例如:Hefei Shanghai) (按Enter键结束输入)\n");
scanf("%s%s",start,to);
searching(&index, start, to);// 显示所订票的信息return j
userinfostorage(i++, index, name, IDcardnum);//存储用户信息// 打印信息
printf("用户 %s 您好,所购机票信息如下: \n", name/*user[i].name*/);
Print();
printf("\t%-8s%-11s%-10s%-10s%-8s%-9d%-5.2f\n",flight[index].flight,flight[index].date,
flight[index].start,flight[index].to,flight[index].clock,user[index].seat,flight[index].charge);//查看所订票信息*/
printf("是否继续订票? (Y/N) (按Enter键结束输入)\n");
/*
a=getchar();
getchar();
*/
scanf(" %c", &a);
}while(a == 'Y'
[解决办法]
a == 'y');
/*
if(a=='Y'
[解决办法]
a=='y')
{
Booking();
}
else
{
Homepage();
}
*/
Homepage();
return i;
}
Status searching(int *index, char start[], char to[])//查找航班 j==1
{
int a;
int b;
for (int i = 0; i < N; i++)
{
a = strcmp(flight[i].start, start);//存在这样的航班
b = strcmp(flight[i].to, to);
if(a==0 && b==0)
{
flight[i].seat--;
*index = i;
printf("成功订购了1 张机票!\n");
}
else
{
//searching(j++,start,to);开始没看到这一步,所以就用循环了
}
}
return i;
}
void userinfostorage(int i, int j,char name[],char IDcardnum[])//用户信息存储
{
int seat;
srand(time(NULL));
seat = 1 + rand() % 100;
strcpy(user[i].name,name);
strcpy(user[i].IDcardnum,IDcardnum);
user[i].ticket++;
strcpy(user[i].flight,flight[j].flight);
strcpy(user[i].date,flight[j].date);
strcpy(user[i].clock,flight[j].clock);
user[i].seat=seat;
user[i].charge=flight[j].charge;
}