#include<stdio.h>
#include<math.h>
#include<string.h>
#define max 30
#include<stdlib.h>
typedef struct flight
{
char station[max];
int num;
char time[max];
int ticketnum;//余票
}ft;
typedef struct userdata {
char user_username[20];
char user_password[8];
int ticket;
int airnum;
}userinfo;
userinfo userin[max];
ft f[max];
int n;//航班号
int i;//航班数
int usernum;
int m;
int flightnum;
下面是用户的函数
void printall()//1列出所有航班
{
//打开文件
//打开文件
FILE *pfile = fopen("flight.txt", "rb");
if (pfile == NULL) {
printf("open file failed!\n");
exit(0);
}
//读取文件长度,读完后把文件指针复位到开头
fseek(pfile,0, SEEK_END);
int file_length = ftell(pfile);
rewind(pfile);
//申请一段内存空间用来放文件中的文本内容,并置零
int text_length = file_length * sizeof(char) + 1;
char * text_buffer = (char*)malloc(text_length);
// memset(text_buffer, 0, text_length);
//把文件文本内容读到申请的内存空间中
fread(text_buffer, 1, file_length, pfile);
/*if (read_length != file_length) {
printf("read file failed!\n");
exit(0);
}*/
//打印文件文本内容,释放申请的内存空间,关闭文件流
printf(" 终点站 余票 航班号 起飞时间\n");
printf(text_buffer);
free(text_buffer);
fclose(pfile);
}
void listrest()//列出余票
{
printf("请选择查找方式\n");
printf("1.按航班号查找\n");
printf("2.按终点站查找\n");
int way2,z;
scanf("%d",&way2);
if(way2==1)
{ /*1.输入航班号查找航班信息并输出*/
printf("请输入要查找的航班号:");
scanf("%d",&n);//printf("%d",);
/*for(m=0;m<i+1;m++){
printf("%d\n",f[m].num);
if(n==f[m].num)
{
z= 1; //printf("%d",z);
break;} //若查找成功
}*/
judgen(n,z);
if(judge(n,z)==0){
printf("未查找到该航班号信息!");
}
else if(judgen(n,z)==0){
// printf("z%d i%d",z,i);
system("cls");
printf("\n航班号:%d\n",f[m].num);
printf("\n----------------查找到的航班信息--------------\n\n");
printf("余票%d",f[i].ticketnum);
//输出查找结果
}
else
printf("输入错误");
}
else if(way2==2)/*2.按终点站查找航班的函数*/
{
printf("请输入终点站");
char sta1[max];
scanf("%s",&sta1);
for(m=0;m<i;m++){
if(sta1==f[i].station)
z= 1; break; //若查找成功
}
if(judgen(n,z)==0){
printf("未查找到该航班号信息!");printf("%d\n",i);
}
else if(judgen(n,z)==1)
{
system("cls");
printf("\n航班号:%d\n",n);
printf("\n----------------查找到的航班信息--------------\n\n");
printf("余票%d",f[i].ticketnum);
}
}
else
{
printf("输入错误");
}
void lookup()//查找航班信息
{
printf("请选择查找方式\n");
printf("1.按航班号查找\n");
printf("2.按终点站查找\n");
int way1;
scanf("%d",&way1);
if(way1==1)
{ /*1.输入航班号查找航班信息并输出*/
printf("请输入要查找的航班号:");
scanf("%d",&n);
/*for(m=0;m<i;m++){
if(n==f[m].num)
x= 1; break; //若查找成功
}*/
if(x==0){
printf("未查找到该航班号信息!");
}
else
{system("cls");
printf("\n航班号:%d\n",n);
printf("\n----------------查找到的航班信息--------------\n\n");
printf("航班号%d 终点站%s 起飞时间%s\n",f[i].num,f[i].station,f[i].time);
//输出查找结果
}
}
else if(way1==2)/*2.按航班号查找航班的函数*/
{
printf("请输入终点站");
char sta[max];
scanf("%s",&sta);
for(m=0;m<i;m++){
if(sta==f[m].station)
x= 1; break; //若查找成功
}
if(x==0){
printf("未查找到该航班号信息!");
}
system("cls");
printf("\n航班号:%d\n",n);
printf("\n----------------查找到的航班信息--------------\n\n");
printf("航班号%d 终点站%s 起飞时间%s\n",f[i].num,f[i].station,f[i].time); //输出查找结果
}
else
{
printf("输入错误");
}
}
}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("输入错误!");
}
}
后台人员的函数
void revise()
{
FILE *fp = fopen("flight.txt", "w");
if (fp == NULL) {
printf("open file failed!\n");
exit(0);
}
printf("请输入要修改的航班号");
scanf("%d",n);
judgen(n,x);
if(x==0)
{
printf("error");
}
else if(x==1)
{
printf("请输入终点站\n");
scanf("%s",f[a].station);
getchar();
printf("请输入票数\n");
scanf("%d",&f[a].ticketnum);
printf("请输入航班号\n");
scanf("%d",&f[a].num);
printf("请输入起飞时间\n");
scanf("%s",f[a].time);
getchar();
fprintf(fp,"%s %d %d %s\n", f[m].station,f[m].ticketnum,f[m].num,f[m].time);
}
fclose(fp);
}void writein()
{
FILE *fp = fopen("flight.txt", "w");
if (fp == NULL) {
printf("open file failed!\n");
exit(0);
}
int a;
printf("请输入需录入的航班数: ");
scanf("%d", &i);
getchar();
printf("请输入第%d个航班的信息",i);
for(a=0;a<i;a++)
{
printf("请输入终点站\n");
scanf("%s",f[a].station);
getchar();
printf("请输入票数\n");
scanf("%d",&f[a].ticketnum);
printf("请输入航班号\n");
scanf("%d",&f[a].num);
printf("请输入起飞时间\n");
scanf("%s",f[a].time);
getchar();
fprintf(fp,"%s %d %d %s\n", f[a].station,f[a].ticketnum,f[a].num,f[a].time);
}
fclose(fp);
}
main
if(strcmp(u->user_username,adminer)!=0)
{
usermenu();
int choice1;
scanf("%d",choice1);
if(choice1==1)
{
printall();
}
else if(choice1==2)
{
listrest();
}
else if(choice1==3)
{
}
}
else
{
adminmenu();
int choice2;
scanf("%d",choice2);
if(choice2==1)
{
printall();
}
else if(choice2==2)
{
writein();
}
else if(choice2==3)
{
}
}
以上函数可以单独在main中运行,但是放在ifelse就不能运行,查找航班信息无论怎么输入都是差找不到信
息,而且f中的ticketnum始终=0
这个问题可能是因为你在 if-else 语句中使用了全局变量 ticketnum,但是这个变量没有被正确初始化。在函数中,每次调用该函数时,ticketnum 的值都会被重置为 0。
下面是小小代码示例,示例使用静态变量 ticketnum 来保存输入的机票号码。在函数 f() 中,将输入的机票号码保存在静态变量中,并返回它的值。在主函数中,将输入的机票号码传递给函数 f(),并将返回值保存在变量 t 中。最后,输出了两个变量 ticketnum 和 t 的值,以验证它们是否正确。
#include <iostream>
using namespace std;
int f(int t) {
static int ticketnum = 0;
ticketnum = t;
cout << "ticketnum in f(): " << ticketnum << endl;
return ticketnum;
}
int main() {
int ticketnum;
cout << "Enter ticket number: ";
cin >> ticketnum;
if (ticketnum < 1000) {
cout << "Sorry, the ticket number must be greater than 1000." << endl;
} else {
int t = f(ticketnum);
cout << "ticketnum in main(): " << ticketnum << endl;
cout << "ticketnum in f(): " << t << endl;
}
return 0;
}
C语言完成
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define T1 p->data.fNumber //宏定义其中常用变量,便于书写
#define T2 p->data.place_go
#define T3 p->data.place_to
#define T4 p->data.seat_total
#define T5 p->data.seat_remainder
#define T6 p->data.goTime
#define T7 p->data.toTime
#define T8 p->data.price
#define R1 p->data.name
#define R2 p->data.fNumber
#define R3 p->data.id
#define R4 p->data.number
#define R5 p->data.Votes
typedef struct //航班结点定义
{
char place_go[20]; //始发地
char place_to[20]; //目的地
int seat_total; //座位总数
int seat_remainder; //剩余座位数
int fNumber; //航班号
char goTime[6]; //起飞时间
char toTime[6]; //抵达时间
char price[6]; //票价
}plane;
typedef struct PNode //航班结构体定义
{
plane data;
struct PNode *next;
}PNode,*PlaneList;
typedef struct //乘客结点定义
{
char name[14]; //姓名
char id[30]; //身份证号码
int number; //购票数
int Votes; //订单号
int fNumber; //航班号
}passenger;
typedef struct RNode
{
passenger data;
struct RNode *next;
}RNode,*RenList;
void input(PNode* head){ //用文件输入航班信息的方法
FILE *fp,*fp1;
PlaneList p,r;
char qq[3];
int i,m;
r = head;
if((fp=fopen("新建文本文档.txt","r"))==NULL){
printf("航空基本信息文件打开失败!");
}
if((fp1=fopen("新建文本文档2.txt","r"))==NULL){
printf("航空补充信息文件打开失败!");
}
for(i=1;i<=9;i++) //自定义了9个航班信息,所以这里循环9次
{
p = (PlaneList)malloc(sizeof(PNode));
p->next = NULL;
fscanf(fp,"%d",&p->data.fNumber);
fgets(p->data.place_go,5,fp);
fgets(p->data.place_to,5,fp);
fscanf(fp,"%d",&m);
fgets(p->data.goTime,6,fp1);
fgets(p->data.toTime,6,fp1);
fgets(p->data.price,4,fp1);
p->data.seat_total = m;
p->data.seat_remainder = m;
r->next = p;
r = p;
}
}
void input_1(PNode* head){ //由控制台输入航班信息的方法
PlaneList p,t;
int m,x;
int fn;
char go[20],to[20];
p = head;
while(p->next!=NULL){
p=p->next; //将p指向head最后一个航班,方便在其后面链上其他航班信息
} //也防止新录入的信息顶掉已有信息
printf("请输入需要输入的航班数:");
scanf("%d",&x);
printf(".......................................开始录入.......................................\n");
for(int i=1;i<=x;i++)
{
printf("***********开始输入第%d个航班信息***********\n",i);
t = (PlaneList)malloc(sizeof(PNode));
t->next=NULL;
printf("请输入航班号:");
scanf("%d",&fn);
in: while(1){
PlaneList p;
p = head;
int tip = 1;
while(p->next!=NULL){
p=p->next;
if(fn==p->data.fNumber){
printf("输入错误!该航班已存在!\n");
printf("请重新输入航班号:");
scanf("%d",&fn);
tip = 2;
break;
}
}
if(tip==2){
goto in;
}else{
t->data.fNumber = fn;
break;
}
}
printf("请输入始发地:");
scanf("%s",go);
while(1){
if(strlen(go)<=8&&strlen(go)>=2){
strcpy(t->data.place_go,go);
break;
}
else
{
printf("请重新输入始发地(1至4个汉字或2至8个英文字符):");
scanf("%s",go);
}
}
printf("请输入目的地:");
scanf("%s",to);
while(1){
if(strlen(to)<=8&&strlen(to)>=2){
strcpy(t->data.place_to,to);
break;
}
else
{
printf("请重新输入目的地(1至4个汉字或2至8个英文字符):");
scanf("%s",to);
}
}
printf("请输入机票总数:");
scanf("%d",&m);
t->data.seat_total = m;
t->data.seat_remainder = m;
printf("请输入飞机起飞时间:");
scanf("%s",t->data.goTime);
printf("请输入飞机抵达时间:");
scanf("%s",t->data.toTime);
printf("请输入该航班票价:");
scanf("%s",t->data.price);
p->next = t;
p = t;
}
printf(".......................................录入完成.......................................\n");
}
void inout(PNode* head) //查看所有航班信息的方法
{
PlaneList p;
p = head;
int i=0;
printf(".........................咸阳机场欢迎你.........................\n");
printf(" 航班号 始发地 目的地 机票总数 剩余票数 出发时间 抵达时间 价格\n");
while(p->next!=NULL){
p = p->next;
printf("%9d %10s %8s %d %d %10s %6s %4s\n",T1,T2,T3,T4,T5,T6,T7,T8);
}
}
void inout_1(RNode* rhead) //查看乘客订单信息的方法
{
RenList p;
p = rhead;
if(p->next==NULL){
printf("没有订单信息!\n");
}else{
printf(".........................咸阳机场欢迎你.........................\n");
printf(" 姓名 航班 身份证号码 订单号 票数 \n");
}
while(p->next!=NULL){
p = p->next;
printf("%8s %d %18s %8d %d\n",R1,R2,R3,R4,R5);
}
}
void research_1(PNode* head) //通过航班号查看航班信息的方法
{
int x,tip;
PlaneList p;
p = head;
tip = 1;
printf("请输入要查找的航班号:");
scanf("%d",&x);
printf("开始查找\n");
while(p->next!=NULL)
{
p = p->next;
if(p->data.fNumber==x)
{
printf(" 航班号 始发地 目的地 机票总数 剩余票数 出发时间 抵达时间 价格\n");
printf("%9d %10s %8s %d %d %10s %6s %4s\n",T1,T2,T3,T4,T5,T6,T7,T8);
tip = 2;
break;
}
}
if(tip==1){
printf("该航班不存在\n");
}
}
void research_2(PNode* head) //通过目的地和始发地查看航班信息的方法
{
char str1[20],str2[20];
PlaneList p;
int tip;
tip = 1;
p = head;
printf("请输入要查找的始发地:");
scanf("%s",str1);
printf("请输入要查找的目的地:");
scanf("%s",str2);
printf("开始查找\n");
while(p->next!=NULL){
p = p->next;
if(!strcmp(str1, p->data.place_go)&&!strcmp(str2, p->data.place_to)){
printf(" 航班号 始发地 目的地 机票总数 剩余票数 出发时间 抵达时间 价格\n");
printf("%9d %10s %8s %d %d %10s %6s %4s\n",T1,T2,T3,T4,T5,T6,T7,T8);
tip = 2;
break;
}
}
if(tip==1){
printf("未找到该航班or该航班不存在\n");
}
}
void revise(PNode* head) //修改航班信息的方法
{ //别问我为什么航空客运订票系统还可以修改航班信息,问就是题目要求的
PlaneList p;
int x,tip;
p = head;
printf("请输入要修改的航班号:");
scanf("%d",&x);
printf("开始修改\n");
while(p->next!=NULL)
{
p = p->next;
if(p->data.fNumber==x)
{
printf("请输入要修改的信息\n");
printf("请输入航班号:");
scanf("%d",&p->data.fNumber);
fflush(stdin);
printf("请输入始发地:");
scanf("%s",p->data.place_go);
printf("请输入目的地:");
scanf("%s",p->data.place_to);
printf("请输入机票总数:");
scanf("%d",&p->data.seat_total);
tip = 2;
break;
}
}
if(tip==1){
printf("未找到该航班or该航班不存在\n");
}
}
void purchase (PNode* head,RNode* rhead) //乘客买票的方法
{
PlaneList p;
RenList r,h;
r = (RenList)malloc(sizeof(RNode));
r->next = NULL;
int x,t,tip,tip1;
p = head;
h = rhead;
tip = 1;
tip1 = 1;
char name[14];
char id[30];
if(h->next!=NULL){ //让h指向rhead表尾,防止新输入信息替换掉已有信息
h = h->next;
}
printf("请输入真实姓名:");
scanf("%s",name);
while(1){
if(strlen(name)<=14&&strlen(name)>=4){
strcpy(r->data.name,name); //对信息筛选后赋给新申请的乘客信息结点
break; //以下大致相同,不在赘述
}
else
{
printf("请重新输入姓名(2-7个汉字):");
scanf("%s",name);
}
}
printf("请输入身份证号:");
scanf("%s",id);
while(1){
if(strlen(id)==18){
for(int i=1;i<=18;i++)
{
if(id[i]<='0'&&id[i]>='9')
{
break;
}
}
strcpy(r->data.id,id);
break;
}
else
{
printf("请输入合法身份证号码:");
scanf("%s",id);
}
}
printf("请选择乘坐航班:");
scanf("%d",&x);
while(1){
while(p->next!=NULL)
{
p = p->next;
if(p->data.fNumber==x)
{
tip1 = 2;
break;
}
}
if( tip1 != 2 )
{
printf("该航班不存在,请重新输入:");
p = head;
scanf("%d",&x);
}
else break;
}
printf("请输入需要购买的票数;");
scanf("%d",&t);
while(1)
{
while(p!=NULL)
{
if(p->data.seat_remainder>=t)
{
p->data.seat_remainder-=t; //购票成功则修改剩余机票信息
tip = 2;
r->data.number = x-123; //依据航班号生成订单号
r->data.Votes = t;
r->data.fNumber = x;
printf("购票成功!\n");
}
break;
}
if(tip!=2)
{
printf("还要%d张票\n",p->data.seat_remainder);
printf("机票不足,请重新输入:\n");
scanf("%d",&t);
}
else break;
}
h->next=r; //让h指向新申请并已赋值的乘客结点
h = r; //其实就是乘客链表的创建过程,只不过中间掺杂了对输入信息的筛选语句
//所以比较分散
}
void quash(PNode* head,RNode* rhead) //乘客退票方法
{
PlaneList p;
RenList r;
int x,t,tip;
p = head;
r = rhead;
tip = 1;
char name[14];
char id[18];
qq: for(int i=1;i<=3;i++){
if(tip==2)
break;
printf("请输入身份证号:");
scanf("%s",id);
while(r->next!=NULL){
r=r->next;
if(!strcmp(id,r->data.id)){
printf("请选择航班:");
scanf("%d",&x);
if(r->data.fNumber!=x){
printf("你没有购买过该航班的票!");
printf("您还有%d次机会!!\n!",3-i);
break;
}
else{
while(p->next!=NULL)
{
p = p->next;
if(p->data.fNumber==x) //找到航班信息,并修改票数
{
printf("请输入需要退票的票数;");
scanf("%d",&t);
if(t<=r->data.number){
p->data.seat_remainder+=t;
r->data.number-=t;
tip = 2;
printf("退票成功!");
break;
}else{
printf("票数异常!!!\n");
printf("您还有%d次机会!!\n!",3-i);
}
}
}
}
}
}
}
if(tip==1){
printf("退票失败\n");
}
}
void print() //优化界面,也便于后期维护
{
printf(" ******************************************************************************** \n");
printf(" ****************************欢迎进入航空订票系统******************************** \n");
printf("\n");
printf(" 1 订票 \n");
printf("\n");
printf(" 2 退票 \n");
printf("\n");
printf(" 3 查询航班信息 \n");
printf("\n");
printf(" 4 修改航班信息 \n");
printf("\n");
printf(" 5 录入航班信息 \n");
printf("\n");
printf(" 6 打印订票信息 \n");
printf("\n");
printf(" 7 退出程序 \n");
printf("\n");
printf(" ******************************************************************************** \n");
}
void print1() //优化界面,也便于后期维护
{
printf(" ******************************************************************************** \n");
printf(" ****************************欢迎进入航空订票系统******************************** \n");
printf("\n");
printf("\n");
printf(" 1 查询所有航班 \n");
printf("\n");
printf(" 2 按航班号查询航班 \n");
printf("\n");
printf(" 3 按航程查询航班 \n");
printf("\n");
printf(" 4 返回 \n");
printf("\n");
printf("\n");
printf(" ******************************************************************************** \n");
}
int main()
{
PNode *head; //定义航班链表和乘客链表并进行初始化
RNode *rhead;
int select;
head = (PlaneList)malloc(sizeof(PNode));
head->next = NULL;
rhead = (RenList)malloc(sizeof(RNode));
rhead->next = NULL;
input(head); //直接从文件中读取航班信息,这样就可直接测试系统,
//不用在输入大量航班才能进行测试
to: while(1){
system("cls");
printf("\n");
printf("\n");
print();
printf("请输入要进行的操作:");
scanf("%d",&select);
switch (select) {
case 1:
purchase(head,rhead);
printf("三秒后程序将返回.......");
Sleep(3*1000); //让程序停止运行三秒
system("cls"); //清除界面,配合break达到自动返回的目的
break;
case 2:
quash(head,rhead);
printf("三秒后程序将返回.......");
Sleep(3*1000);
system("cls");
break;
case 3:
while(1){
system("cls");
print1();
printf("请选择查询方式:");
scanf("%d",&select);
switch (select) {
case 1:
inout(head);
printf("五秒后程序将返回.......");
Sleep(5*1000);
system("cls");
break;
case 2:
research_1(head);
printf("五秒后程序将返回.......");
Sleep(5*1000);
system("cls");
break;
case 3:
research_2(head);
printf("五秒后程序将返回.......");
Sleep(5*1000);
system("cls");
break;
case 4:
goto to;
default:
printf(" 错误指令 #304 ");
break;
}
}
case 4:
revise(head);
printf("五秒后程序将返回.......");
Sleep(5*1000);
system("cls");
break;
case 5:
input_1(head);
printf("五秒后程序将返回.......");
Sleep(5*1000);
system("cls");
break;
case 6:
inout_1(rhead);
printf("五秒后程序将返回.......");
Sleep(5*1000);
//system("cls");
break;
case 7:
exit(0);
default:
printf(" 错误指令 #304 ");
break;
}
}
return 0;
}
在if else内部打个断点,看看代码能否执行到if else里面,如果能执行进入,再检查看看进入的相关变量、参数的值是否正常
不知道你这个问题是否已经解决, 如果还没有解决的话:public class PrizeController {
private Logger logger = LoggerFactory.getLogger(PrizeController.class);
public AwardRes awardToUser(AwardReq req) {
String reqJson = JSON.toJSONString(req);
AwardRes awardRes = null;
try {
logger.info("奖品发放开始{}。req:{}", req.getuId(), reqJson);
// 按照不同类型方法商品[1优惠券、2实物商品、3第三方兑换卡(爱奇艺)]
if (req.getAwardType() == 1) {
CouponService couponService = new CouponService();
CouponResult couponResult = couponService.sendCoupon(req.getuId(), req.getAwardNumber(), req.getBizId());
if ("0000".equals(couponResult.getCode())) {
awardRes = new AwardRes("0000", "发放成功");
} else {
awardRes = new AwardRes("0001", couponResult.getInfo());
}
} else if (req.getAwardType() == 2) {
GoodsService goodsService = new GoodsService();
DeliverReq deliverReq = new DeliverReq();
deliverReq.setUserName(queryUserName(req.getuId()));
deliverReq.setUserPhone(queryUserPhoneNumber(req.getuId()));
deliverReq.setSku(req.getAwardNumber());
deliverReq.setOrderId(req.getBizId());
deliverReq.setConsigneeUserName(req.getExtMap().get("consigneeUserName"));
deliverReq.setConsigneeUserPhone(req.getExtMap().get("consigneeUserPhone"));
deliverReq.setConsigneeUserAddress(req.getExtMap().get("consigneeUserAddress"));
Boolean isSuccess = goodsService.deliverGoods(deliverReq);
if (isSuccess) {
awardRes = new AwardRes("0000", "发放成功");
} else {
awardRes = new AwardRes("0001", "发放失败");
}
} else if (req.getAwardType() == 3) {
String bindMobileNumber = queryUserPhoneNumber(req.getuId());
IQiYiCardService iQiYiCardService = new IQiYiCardService();
iQiYiCardService.grantToken(bindMobileNumber, req.getAwardNumber());
awardRes = new AwardRes("0000", "发放成功");
}
logger.info("奖品发放完成{}。", req.getuId());
} catch (Exception e) {
logger.error("奖品发放失败{}。req:{}", req.getuId(), reqJson, e);
awardRes = new AwardRes("0001", e.getMessage());
}
return awardRes;
}
private String queryUserName(String uId) {
return "花花";
}
private String queryUserPhoneNumber(String uId) {
return "15200101232";
}
}
ifelse
非常直接的实现出来业务需求的一坨代码,如果仅从业务角度看,研发如期甚至提前实现了功能。ifelse
还会继续增加。从你提供的代码片段来看,我注意到了一些可能导致问题的地方:
在你的scanf()
函数调用中,你需要传入一个指向变量的指针,而不是变量本身。所以你应该用&
获取变量的地址。例如,你的scanf("%d",choice1);
应该改为scanf("%d",&choice1);
,其他的类似。
在你比较字符串时,你不能直接使用==
操作符,因为它会比较指针,而不是字符串的内容。你应该使用strcmp()
函数,例如strcmp(sta1, f[i].station) == 0
。
在你的judgen()
函数中,你可能没有正确地返回查找结果,因为你在调用这个函数的时候,期望它能够改变z
的值。但是,根据你提供的代码,我们无法看到judgen()
函数的实现。如果judgen()
函数中没有使用指针来改变z
的值,那么这将不会工作。
你的printall()
函数打开文件时使用了"rb"模式(二进制读模式),但之后你又试图读取文件作为文本。你应该使用"r"模式(文本读模式)打开文件。
在delay()
函数中,user[usernum].ticket
未定义,因为user
数组在代码中没有找到。在其他函数中也存在类似的问题。
你的代码缺少了一些必要的函数声明和定义,例如judgen()
, usermenu()
, adminmenu()
等,这些函数在代码中被调用,但是我们看不到它们的实现。这可能是因为你没有提供完整的代码。
对于为什么在if-else结构中无法运行,可能是因为上述的一些问题,或者可能是因为函数在if-else结构中的调用方式有误。我建议你检查你的if-else结构和函数调用,看看是否存在输入或逻辑错误。
修复这些问题后,如果你仍然遇到问题,我建议你尝试一步步调试你的代码,看看每一步都发生了什么,这样可以帮助你找到问题的根源。
你这个里面的基础语法错误有点多,如果你能够写出这种系统,应该不至于还犯这些错误。应该是哪里白嫖的代码吧,劝你回去找那个人给你完整的
回答部分参考、引用ChatGpt以便为您提供更准确的答案:
根据您提供的代码,有几个问题可能导致程序无法正确运行:
lookup()
和listrest()
中,您使用了一个未定义的变量x
。请确认变量x
的定义和赋值,以确保这些条件判断正确执行。book()
和delay()
中,您使用了一个未定义的数组user
,并且在这些函数中对它进行了操作。请确认user
数组的定义和赋值,以避免出现错误。revise()
和writein()
中,您打开了文件并尝试将数据写入文件。请确保文件路径正确,并在写入完成后关闭文件流。main
中,您获取用户输入后的选择,并根据选择调用相应的函数。请确保您正确地读取用户输入并传递给相应的函数。另外,请检查以下几点:
f
数组之前对其进行正确的赋值。在代码中,我没有看到您对f
数组的赋值操作,这可能导致f
数组中的数据始终为默认值。userin
数组之前对其进行正确的赋值。在代码中,我没有看到您对userin
数组的赋值操作,这可能导致userin
数组中的数据始终为默认值。请检查并修复上述问题,并确保所有的变量和数组都被正确定义、赋值和使用。这样可以提高程序的正确性和可运行性。如果问题仍然存在,请提供更多代码细节或具体的错误信息,以便我可以更好地帮助您解决问题。
代码中存在一些错误和不完整的部分,建议你按照以下步骤逐个排查修改:
在主函数中调用用户和后台人员的函数时,需要传递相应的参数,比如 listrest()
需要传入 f
数组和 flightnum
,writein()
需要传入 f
数组和 i
。
在 lookup()
和 listrest()
函数中,查找终点站和航班号的方法不完整,可以使用 strcmp
函数比较字符串。同时,在查找成功后需要将 x
或 z
赋值为 1。
在 book()
和 delay()
函数中,需添加判断用户是否存在、输入的票数是否超出订票上限等条件判断。
在 revise()
函数中,应该先打开文件读取航班信息,查找到要修改的航班号之后,可以根据需求修改相应信息,最后重新写入文件。
在 writein()
函数中,需要使用追加写入的方法,将多个航班信息写入文件。
希望这些提示能够帮助你定位并解决问题。在进行修改时,可以加入一些调试输出语句,定位代码中的错误。此外,建议不要让代码逻辑过于复杂,尽量将每个函数一个功能模块拆分成小的子函数,方便调试和修改。