飞机订票系统源代码

飞机订票系统源代码问题及代码:/****************************************************  *版权所有(C)2017,张思琦 *文件名称:飞机订票系统  *文件标识:无  *内容摘要:实现录入航班信息、订票、退票、预约、 *          查询航班、查询订单、查看预约、修改航班功能。 *其他内容:无  *当前版本:VC++6.0  *作    者:

大家好,又见面了,我是你们的朋友全栈君。


问题及代码:

  1. /****************************************************  
  2. *版权所有(C)2017,张思琦 
  3. *文件名称:飞机订票系统  
  4. *文件标识:无  
  5. *内容摘要:实现录入航班信息、订票、退票、预约、 
  6. *          查询航班、查询订单、查看预约、修改航班功能。 
  7. *其他内容:无  
  8. *当前版本:VC++6.0  
  9. *作    者:zsq 
  10. *完成日期:2017.12.21  
  11. *修改记录:无  
  12. ****************************************************/    

1、plane.h的代码


  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. #include <conio.h>  
  5.   
  6. typedef struct flightnode  
  7. {  
  8.     char flight_num[10];//航班号  
  9.     char start_time[15];//起飞时间  
  10.     char end_time[15];//抵达时间  
  11.     char start_place[20];//起飞城市  
  12.     char end_place[20];//降落城市  
  13.     int left;//空座数  
  14.     float price;//票价  
  15.     int ifull;//航班是否满仓  
  16.     struct flightnode *next;//指向下一节点  
  17. }flightnode;  
  18.   
  19. typedef struct passengernode  
  20. {  
  21.     char name[20];//姓名  
  22.     char ID_num[20];//证件号  
  23.     char flight_num[10];//航班号  
  24.     int order_num;//订单号  
  25.     int ticket_num;//订票数量  
  26.     struct passengernode *next;//指向下一节点  
  27. }passengernode;  
  28.   
  29. typedef struct passengerList  
  30. {  
  31.     passengernode *head;  
  32.     passengernode *rear;  
  33. }passengerList;  
  34.   
  35. typedef struct waitnode  
  36. {  
  37.     char name[20];//姓名  
  38.     char phone[20];//手机号  
  39.     char flight_num[10];//航班号  
  40.     int ticket_num;//订票数量  
  41.     int order_num;//预约排队号  
  42.     struct waitnode *next;//指向下一节点  
  43.   
  44. }waitnode;  
  45.   
  46. typedef struct waitList  
  47. {  
  48.     waitnode *front;  
  49.     waitnode *rear;  
  50. }waitList;  
  51.   
  52. void init_flight(flightnode *&h);//建立以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表  
  53. void init_passengerList(passengerList *&pList);//建立一个带有头尾指针的空链表,存储带有顾客信息的节点  
  54. void init_waitList(waitList *&wList);//建立一个带有头尾指针的空链表,存储带有预约客户信息的节点  
  55.   
  56. void save_flight(flightnode *h);//保存航班信息到指定的数据文件中  
  57. void load_flight(flightnode *&h);//从存储航班信息的文件导入航班信息到航班链表中  
  58.   
  59. void save_passenger(passengerList *PList);//保存客户信息到指定数据文件中  
  60. void load_passenger(passengerList *&PList);//从存储客户信息的文件导入客户信息到客户链表中  
  61.   
  62. void save_wait(waitList *WList);//保存预约客户信息到指定数据文件中  
  63. void load_wait(waitList *&WList);//从存储预约客户信息的文件导入预约客户信息到预约客户链表中  
  64.   
  65. void add_flight(flightnode *&h);//录入航班信息后调用insert_flight函数增加航班  
  66. //录入航班情况或增加新的航班后,将新的航班结点插入到航线链表中  
  67. void insert_flight(flightnode *&h, char *flight_num, char *start_place, char *end_place, char *start_time, char *end_time, int left, float price, int ifull);  
  68.   
  69. //完成客户订票,将客户结点插入客户链表,并修改相应的航班信息  
  70. int book(flightnode *&h,passengerList *&PList,waitList *WList);  
  71. //客户订票时输入的航班号对应航班已满,提供其他可选航班并输出显示  
  72. int find_same_flight(flightnode *h,char *flight_num);  
  73. //在客户订票后,将该客户结点插入到客户链表,并修改相应航班信息  
  74. void insert_passengerList(flightnode *&h, passengerList *&PList, char *name, char *ID_num, char *flight_num, int ticket_num);  
  75.   
  76. //在客户预约票后,将该预约客户结点插入到预约客户链表  
  77. void insert_waitList(waitList *&WList, char *name, char *phone, char *flight_num, int ticket_num,int order_num);  
  78.   
  79. //完成退票,将订单从客户链表删除并修改相应航班信息  
  80. void cancel(passengerList *&PList,flightnode *&h);  
  81. //按照要退票的客户姓名和证件号查找该客户结点,进行删除操作  
  82. int delete_passenger(passengerList *&PList,flightnode *&h, char *name, char *ID_num);  
  83.   
  84. void flight_check(flightnode *h);//选择使用何种方式对航班信息进行查询  
  85. void check_all_flight(flightnode *h);//浏览所有航班信息  
  86. int place_check(flightnode *h, char *start_place, char *end_place);//按照起飞抵达城市查询航班信息  
  87. int flight_num_check(flightnode *h, char *flight_num);//按照航班号查询航班信息  
  88.   
  89. void passenger_check(passengerList *PList);//选择使用何种方式查询订单信息  
  90. void check_all_passenger(passengerList *PList);//浏览所有订单信息  
  91. int ID_name_check(passengerList *PList, char *name, char *ID_num);//按客户姓名和证件号查询订单信息  
  92.   
  93. void check_all_wait(waitList *WList);//浏览所有预约客户信息  
  94.   
  95. void modify_flight(flightnode *&h, passengerList *&PList);//修改航班信息  
  96. void delete_flight(flightnode *&h, passengerList *&PList);//按照某个航班号删除航班结点  
  97. void modify_flight_time(flightnode *&h, passengerList *&PList);//修改航班时间  
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

typedef struct flightnode
{
	char flight_num[10];//航班号
	char start_time[15];//起飞时间
    char end_time[15];//抵达时间
	char start_place[20];//起飞城市
	char end_place[20];//降落城市
	int left;//空座数
	float price;//票价
	int ifull;//航班是否满仓
	struct flightnode *next;//指向下一节点
}flightnode;

typedef struct passengernode
{
	char name[20];//姓名
	char ID_num[20];//证件号
	char flight_num[10];//航班号
	int order_num;//订单号
	int ticket_num;//订票数量
	struct passengernode *next;//指向下一节点
}passengernode;

typedef struct passengerList
{
	passengernode *head;
	passengernode *rear;
}passengerList;

typedef struct waitnode
{
	char name[20];//姓名
	char phone[20];//手机号
	char flight_num[10];//航班号
	int ticket_num;//订票数量
	int order_num;//预约排队号
	struct waitnode *next;//指向下一节点

}waitnode;

typedef struct waitList
{
	waitnode *front;
	waitnode *rear;
}waitList;

void init_flight(flightnode *&h);//建立以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表
void init_passengerList(passengerList *&pList);//建立一个带有头尾指针的空链表,存储带有顾客信息的节点
void init_waitList(waitList *&wList);//建立一个带有头尾指针的空链表,存储带有预约客户信息的节点

void save_flight(flightnode *h);//保存航班信息到指定的数据文件中
void load_flight(flightnode *&h);//从存储航班信息的文件导入航班信息到航班链表中

void save_passenger(passengerList *PList);//保存客户信息到指定数据文件中
void load_passenger(passengerList *&PList);//从存储客户信息的文件导入客户信息到客户链表中

void save_wait(waitList *WList);//保存预约客户信息到指定数据文件中
void load_wait(waitList *&WList);//从存储预约客户信息的文件导入预约客户信息到预约客户链表中

void add_flight(flightnode *&h);//录入航班信息后调用insert_flight函数增加航班
//录入航班情况或增加新的航班后,将新的航班结点插入到航线链表中
void insert_flight(flightnode *&h, char *flight_num, char *start_place, char *end_place, char *start_time, char *end_time, int left, float price, int ifull);

//完成客户订票,将客户结点插入客户链表,并修改相应的航班信息
int book(flightnode *&h,passengerList *&PList,waitList *WList);
//客户订票时输入的航班号对应航班已满,提供其他可选航班并输出显示
int find_same_flight(flightnode *h,char *flight_num);
//在客户订票后,将该客户结点插入到客户链表,并修改相应航班信息
void insert_passengerList(flightnode *&h, passengerList *&PList, char *name, char *ID_num, char *flight_num, int ticket_num);

//在客户预约票后,将该预约客户结点插入到预约客户链表
void insert_waitList(waitList *&WList, char *name, char *phone, char *flight_num, int ticket_num,int order_num);

//完成退票,将订单从客户链表删除并修改相应航班信息
void cancel(passengerList *&PList,flightnode *&h);
//按照要退票的客户姓名和证件号查找该客户结点,进行删除操作
int delete_passenger(passengerList *&PList,flightnode *&h, char *name, char *ID_num);

void flight_check(flightnode *h);//选择使用何种方式对航班信息进行查询
void check_all_flight(flightnode *h);//浏览所有航班信息
int place_check(flightnode *h, char *start_place, char *end_place);//按照起飞抵达城市查询航班信息
int flight_num_check(flightnode *h, char *flight_num);//按照航班号查询航班信息

void passenger_check(passengerList *PList);//选择使用何种方式查询订单信息
void check_all_passenger(passengerList *PList);//浏览所有订单信息
int ID_name_check(passengerList *PList, char *name, char *ID_num);//按客户姓名和证件号查询订单信息

void check_all_wait(waitList *WList);//浏览所有预约客户信息

void modify_flight(flightnode *&h, passengerList *&PList);//修改航班信息
void delete_flight(flightnode *&h, passengerList *&PList);//按照某个航班号删除航班结点
void modify_flight_time(flightnode *&h, passengerList *&PList);//修改航班时间

2、plane.cpp的代码


  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. #include <conio.h>  
  5. #include “plane.h”  
  6.   
  7. //建立以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表  
  8. void init_flight(flightnode *&h)  
  9. {  
  10.     h=(flightnode *)malloc(sizeof(flightnode));//申请头结点空间  
  11.     if(h==NULL)  
  12.         exit(0);  
  13.     h->next=NULL;//将头结点h的指针域置为空  
  14. }  
  15. //建立一个带有头尾指针的空链表,存储带有客户信息的节点  
  16. void init_passengerList(passengerList *&pList)  
  17. {  
  18.     pList=(passengerList *)malloc(sizeof(passengerList));  
  19.     pList->head=(passengernode *)malloc(sizeof(passengernode));//创建头结点  
  20.     pList->rear=pList->head;  
  21.     pList->rear->order_num=0;//订单号从0开始计数  
  22.     pList->head->next=NULL;  
  23. }  
  24. //建立一个带有头尾指针的空队,存储带有预约客户信息的节点  
  25. void init_waitList(waitList *&wList)  
  26. {  
  27.     wList=(waitList *)malloc(sizeof(waitList));  
  28.     wList->front=(waitnode *)malloc(sizeof(waitnode));//创建头结点  
  29.     wList->rear=wList->front;  
  30.     wList->rear->order_num=0;//预约排队号从0开始计数  
  31.     wList->front->next=NULL;  
  32. }  
  33.   
  34. //保存航班信息到指定的数据文件中  
  35. void save_flight(flightnode *h)  
  36. {  
  37.     FILE *fp=fopen(“flightList.dat”,“wb”);//以只写(‘wb’)的方式打开名为’flightList.dat’的文件  
  38.     if(fp==NULL)  
  39.         return;  
  40.     flightnode *temp=h->next;  
  41.     while(temp!=NULL)  
  42.     {  
  43.         fwrite(temp,sizeof(flightnode),1,fp);//向其中写入temp(temp是指针)地址的l个flightnode类型的数据  
  44.         temp=temp->next;  
  45.     }  
  46.     fclose(fp);//关闭fp指向的文件  
  47. }  
  48. //从存储航班信息的文件导入航班信息到航班链表中  
  49. void load_flight(flightnode *&h)  
  50. {  
  51.     flightnode *pt=h;  
  52.     FILE *fp=fopen(“flight.dat”,“rb”);  
  53.     if(fp==NULL)  
  54.         return;  
  55.     flightnode *q;  
  56.     int n;  
  57.     while(!feof(fp))//文件指针没有到达文件末尾(最后一个字符的下一个位置,即读失败时的位置)  
  58.     {  
  59.         q=(flightnode *)malloc(sizeof(flightnode));  
  60.         n=fread(q,sizeof(flightnode),1,fp);//将写入的数据读取出来  
  61.         if(n!=1)  
  62.             break;  
  63.         pt->next=q;  
  64.         pt=q;  
  65.     }  
  66.     pt->next=NULL;  
  67.     fclose(fp);  
  68. }  
  69.   
  70. //保存已订票客户信息到指定数据文件中  
  71. void save_passenger(passengerList *PList)  
  72. {  
  73.     FILE *fp=fopen(“passenger.dat”,“wb”);  
  74.     if(fp==NULL)  
  75.         return;  
  76.     passengernode *temp=PList->head->next;  
  77.     while(temp!=NULL)  
  78.     {  
  79.         fwrite(temp,sizeof(passengernode),1,fp);//向其中写入temp(temp是指针)地址的l个passengernode类型的数据  
  80.         temp=temp->next;  
  81.     }  
  82.     fclose(fp);//关闭fp指向的文件  
  83. }  
  84. //从存储客户信息的文件导入客户信息到客户链表中  
  85. void load_passenger(passengerList *&PList)  
  86. {  
  87.     FILE *fp=fopen(“passenger.dat”,“rb”);  
  88.     if(fp==NULL)  
  89.         return;  
  90.     passengernode *q;  
  91.     int n;  
  92.     while(!feof(fp))//文件指针没有到达文件末尾(最后一个字符的下一个位置,即读失败时的位置)  
  93.     {  
  94.         q=(passengernode *)malloc(sizeof(passengernode));  
  95.         n=fread(q,sizeof(passengernode),1,fp);//将写入的数据读取出来  
  96.         if(n!=1)  
  97.             break;  
  98.         PList->rear->next=q;  
  99.         PList->rear=q;  
  100.     }  
  101.     PList->rear->next=NULL;  
  102.     fclose(fp);  
  103. }  
  104.   
  105. //保存预约客户信息到指定数据文件中  
  106. void save_wait(waitList *WList)  
  107. {  
  108.     FILE *fp=fopen(“waitpassenger.dat”,“wb”);  
  109.     if(fp==NULL)  
  110.         return;  
  111.     waitnode *temp=WList->front->next;  
  112.     while(temp!=NULL)  
  113.     {  
  114.         fwrite(temp,sizeof(waitnode),1,fp);//向其中写入temp(temp是指针)地址的l个waitnode类型的数据  
  115.         temp=temp->next;  
  116.     }  
  117.     fclose(fp);//关闭fp指向的文件  
  118. }  
  119. //从存储预约客户信息的文件导入预约客户信息到预约客户链表中  
  120. void load_wait(waitList *&WList)  
  121. {  
  122.     FILE *fp=fopen(“waitpassenger.dat”,“rb”);  
  123.     if(fp==NULL)  
  124.         return;  
  125.     waitnode *w;  
  126.     int n;  
  127.     while(!feof(fp))//文件指针没有到达文件末尾(最后一个字符的下一个位置,即读失败时的位置)  
  128.     {  
  129.         w=(waitnode *)malloc(sizeof(waitnode));  
  130.         n=fread(w,sizeof(waitnode),1,fp);//将写入的数据读取出来  
  131.         if(n!=1)  
  132.             break;  
  133.         WList->rear->next=w;  
  134.         WList->rear=w;  
  135.     }  
  136.     WList->rear->next=NULL;  
  137.     fclose(fp);  
  138. }  
  139. /********************************************************* 
  140. * 功能描述: 新航班结点插入航线链表 
  141. * 输入参数: 航班各项信息 
  142. * 输出参数: 无 
  143. * 返回值  : 无 
  144. * 其它说明: 无 
  145. *********************************************************/  
  146. void insert_flight(flightnode *&h, char *flight_num, char *start_place, char *end_place, char *start_time, char *end_time, int left, float price, int ifull)  
  147. {  
  148.     flightnode *q;//定义q为新增加的航班节点的指针的形参  
  149.     flightnode *p=h;  
  150.     q=(flightnode *)malloc(sizeof(flightnode));//为节点q申请空间  
  151.     strcpy(q->flight_num,flight_num);  
  152.     strcpy(q->start_place,start_place);  
  153.     strcpy(q->end_place,end_place);  
  154.     strcpy(q->start_time,start_time);  
  155.     strcpy(q->end_time,end_time);  
  156.     q->left=left;  
  157.     q->price=price;  
  158.     q->ifull=ifull;  
  159.     //用strcpy函数将新增加航班的各种信息复制到q节点中  
  160.     q->next=p->next;//将q节点的指针域置为空  
  161.     p->next=q;  
  162.     p=p->next;//将指针后移  
  163. }  
  164. /********************************************************* 
  165. * 功能描述: 录入航班信息 
  166. * 输入参数: 航班各项信息 
  167. * 输出参数: 匹配的航班各项信息 
  168. * 返回值  : 无 
  169. * 其它说明: 无 
  170. *********************************************************/  
  171. void add_flight(flightnode *&h)  
  172. {  
  173.     flightnode *p=h;  
  174.     char flight_num[10],start_time[10],end_time[10],start_place[10],end_place[10];  
  175.     int left,ifull,mark=1;  
  176.     float price;  
  177.     for(;p->next!=NULL;p=p->next)  
  178.     {}//移动指针,找到最后一个节点  
  179.     while(mark==1)  
  180.     {  
  181.         printf(“\t\t请输入你要增加的航班号:”);  
  182.         scanf(“%s”,flight_num);  
  183.         printf(“\t\t请输入出发地:”);  
  184.         scanf(“%s”,start_place);  
  185.         printf(“\t\t请输入目的地:”);  
  186.         scanf(“%s”,end_place);  
  187.         printf(“\t\t请输入起飞时间:”);  
  188.         scanf(“%s”,start_time);  
  189.         printf(“\t\t请输入抵达时间:”);  
  190.         scanf(“%s”,end_time);  
  191.         printf(“\t\t请输入票价:”);  
  192.         scanf(“%f”,&price);  
  193.         printf(“\t\t请输入剩余座位数:”);  
  194.         scanf(“%d”,&left);  
  195.         printf(“\t\t请输入是否满仓(0表示没有满仓,1表示已满仓):”);  
  196.         scanf(“%d”,&ifull);  
  197.         insert_flight(h, flight_num, start_place, end_place, start_time, end_time, left, price, ifull);  
  198.         printf(“\t\t增加航班号%s成功!\n”,flight_num);  
  199.         printf(“\t\t是否继续录入航班信息(1表示继续录入,0表示停止录入)\n”);  
  200.         printf(“\t\t请输入:”);  
  201.         scanf(“%d”,&mark);  
  202.     }  
  203. }  
  204. /********************************************************* 
  205. * 功能描述: 订票 
  206. * 输入参数: start_place,end_place,客户各项信息 
  207. * 输出参数: 匹配的航班信息 
  208. * 返回值  : 无 
  209. * 其它说明: 1—订票或预约  0—失败 
  210. *********************************************************/  
  211. //完成客户订票,将客户结点插入客户链表,并修改相应的航班信息  
  212. int book(flightnode *&h,passengerList *&PList,waitList *WList)  
  213. {  
  214.     char name[20];  
  215.     char ID_num[20];  
  216.     char flight_num[10];  
  217.     char start_place[20];  
  218.     char end_place[20];  
  219.     char phone[20];  
  220.     int ticket_num;  
  221.     int order_num=0;  
  222.     int k;  
  223.     flightnode *p=h->next;  
  224.     printf(“\t\t请输入信息:\n”);  
  225.     printf(“\t\t请输入起飞城市:”);  
  226.     scanf(“%s”,start_place);  
  227.     printf(“\t\t请输入抵达城市:”);  
  228.     scanf(“%s”,end_place);  
  229.     if(place_check(h,start_place,end_place)==1)  
  230.     {  
  231.         printf(“\t\t航班号:”);  
  232.         scanf(“%s”,flight_num);  
  233.         while(flight_num==NULL)  
  234.         {  
  235.             printf(“航班号不能为空!\n”);  
  236.             printf(“\t\t航班号:”);  
  237.             scanf(“%s”,flight_num);  
  238.         }  
  239.         while(p!=NULL)  
  240.         {  
  241.             if(strcmp(p->flight_num,flight_num)==0)  
  242.             {  
  243.                 printf(“\t\t姓名:”);  
  244.                 scanf(“%s”,name);  
  245.                 printf(“\t\t证件号码:”);  
  246.                 scanf(“%s”,ID_num);  
  247.                 printf(“\t\t订票数量:”);  
  248.                 scanf(“%d”,&ticket_num);  
  249.                 while(name==NULL)  
  250.                 {  
  251.                     printf(“客户姓名不能为空!\n”);  
  252.                     printf(“\t\t姓名:”);  
  253.                     scanf(“%s”,name);  
  254.                 }  
  255.                 while(ID_num==NULL)  
  256.                 {  
  257.                     printf(“客户证件号码不能为空!\n”);  
  258.                     printf(“\t\t证件号码:”);  
  259.                     scanf(“%s”,ID_num);  
  260.                 }  
  261.                 while(ticket_num==0)  
  262.                 {  
  263.                     printf(“客户订票数量不能为空!\n”);  
  264.                     printf(“\t\t订票数量:”);  
  265.                     scanf(“%d”,&ticket_num);  
  266.                 }  
  267.                 if(p->left>0 && p->left>=ticket_num)  
  268.                 {  
  269.                     insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);  
  270.                     printf(“\t\t你应付金额¥%8.2f。\n”,p->price*ticket_num);  
  271.                     getch();  
  272.                     printf(“\t\t恭喜您,订票成功!\n”);  
  273.                     return 1;  
  274.                 }  
  275.                 else  
  276.                 {  
  277.                     printf(“\t\t***很遗憾,该航班已满!***\n”);  
  278.                     printf(“\t\t***如选择其他航班请输入——1\n\t\t***预约请输入——2\n\t\t***不选则输入——0***\n”);  
  279.                     printf(“\t\t输入数字进行选择:”);  
  280.                     scanf(“%d”,&k);  
  281.                     if(k==1)  
  282.                     {  
  283.                         printf(“\t\t请输入您选的航班:”);  
  284.                         scanf(“%s”,flight_num);  
  285.                         insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);  
  286.                         printf(“\t\t恭喜您,订票成功!\n”);  
  287.                         return 1;  
  288.                     }  
  289.                     else if(k==2)  
  290.                     {  
  291.                         printf(“\t\t请输入您的手机号:”);  
  292.                         scanf(“%s”,phone);  
  293.                         printf(“\t\t请输入您需要预约的航班号:”);  
  294.                         scanf(“%s”,flight_num);  
  295.                         insert_waitList(WList, name,phone,flight_num, ticket_num,order_num);  
  296.                         printf(“\t\t如有退票,会尽快联系您!\n”);  
  297.                         return 1;  
  298.                     }  
  299.                 }  
  300.             }  
  301.             else  
  302.                 p=p->next;  
  303.         }  
  304.         if(p==NULL)  
  305.             printf(“\t\t对不起,您输入的航班不存在!\n”);  
  306.     }  
  307.     return 0;  
  308. }  
  309. /********************************************************* 
  310. * 功能描述: 客户结点插入客户链表,修改航班信息 
  311. * 输入参数: 无 
  312. * 输出参数: 无 
  313. * 返回值  : 无 
  314. * 其它说明: 无 
  315. *********************************************************/  
  316. void insert_passengerList(flightnode *&h, passengerList *&PList, char *name, char *ID_num, char *flight_num, int ticket_num)  
  317. {  
  318.     flightnode *p=h->next;  
  319.     for(;p!=NULL;p=p->next)  
  320.         if(strcmp(p->flight_num,flight_num)==0)  
  321.         {  
  322.             p->left=p->left-ticket_num;  
  323.             if(p->left==0)  
  324.                 p->ifull=1;  
  325.         }  
  326.     passengernode *q=(passengernode *)malloc(sizeof(passengernode));//新建结点,存放新的客户订单信息  
  327.     strcpy(q->name,name);  
  328.     strcpy(q->ID_num,ID_num);  
  329.     strcpy(q->flight_num,flight_num);  
  330.     q->ticket_num=ticket_num;  
  331.     q->next=NULL;  
  332.     //将新订单连接到链表中  
  333.     PList->rear->next=q;  
  334.     q->order_num=PList->rear->order_num+1;//生成订单号  
  335.     PList->rear=q;  
  336. }  
  337. /********************************************************* 
  338. * 功能描述: 预约客户结点插入预约客户队列 
  339. * 输入参数: 无 
  340. * 输出参数: 无 
  341. * 返回值  : 无 
  342. * 其它说明: 无 
  343. *********************************************************/  
  344. void insert_waitList(waitList *&WList, char *name, char *phone, char *flight_num, int ticket_num,int order_num)  
  345. {  
  346.     waitnode *p=(waitnode *)malloc(sizeof(waitnode));  
  347.     strcpy(p->name,name);  
  348.     strcpy(p->phone,phone);  
  349.     strcpy(p->flight_num,flight_num);  
  350.     p->ticket_num=ticket_num;  
  351.     p->next=NULL;  
  352.     if(WList->rear==NULL)  
  353.     {  
  354.         WList->front=WList->rear=p;  
  355.     }  
  356.     else  
  357.     {  
  358.         WList->rear->next=p;  
  359.         p->order_num=WList->rear->order_num+1;//生成预约排队号  
  360.         WList->rear=p;  
  361.     }  
  362. }  
  363. /********************************************************* 
  364. * 功能描述: 提供其他可选航班 
  365. * 输入参数: 无 
  366. * 输出参数: 对应航班信息 
  367. * 返回值  : 1—成功  0—失败 
  368. * 其它说明: 无 
  369. *********************************************************/  
  370. int find_same_flight(flightnode *h,char *flight_num)  
  371. {  
  372.     flightnode *t=h->next,*p=h->next;  
  373.     int mark=0;  
  374.     printf(“%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s\n”,“航班号”,“起飞城市”,“抵达城市”,“起飞时间”,“抵达时间”,“价格”,“是否满仓”,“空座数”);  
  375.     while(p!=NULL)  
  376.     {  
  377.         if((strcmp(t->start_place,p->start_place)==0) && (strcmp(t->end_place,p->end_place)==0) && (strcmp(t->flight_num,p->flight_num)!=0))  
  378.         {  
  379.             printf(“%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n”,p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->ifull,p->left);  
  380.             mark=1;  
  381.         }  
  382.         p=p->next;  
  383.     }  
  384.     if(mark=0)  
  385.     {  
  386.         printf(“\t\t抱歉,无可选航班!\n”);  
  387.         return 0;  
  388.     }  
  389.     return 1;  
  390. }  
  391.   
  392. /********************************************************* 
  393. * 功能描述: 退票 
  394. * 输入参数: name,ID_num 
  395. * 输出参数: 无 
  396. * 返回值  : 无 
  397. * 其它说明: 无 
  398. *********************************************************/  
  399. void cancel(passengerList *&PList, flightnode *&h)  
  400. {  
  401.     char name[20],ID_num[20];  
  402.     printf(“\t\t请输入你的姓名:”);  
  403.     scanf(“%s”,name);  
  404.     printf(“\t\t请输入你的证件号:”);  
  405.     scanf(“%s”,ID_num);  
  406.     delete_passenger(PList,h,name,ID_num);  
  407. }  
  408. /********************************************************* 
  409. * 功能描述: 查找客户结点,进行删除 
  410. * 输入参数: 无 
  411. * 输出参数: name,ID_num 
  412. * 返回值  : 1—成功  0—失败 
  413. * 其它说明: 无 
  414. *********************************************************/  
  415. int delete_passenger(passengerList *&PList,flightnode *&h, char *name, char *ID_num)  
  416. {  
  417.     passengernode *p,*pr=PList->head;//pr指向客户链表的头结点  
  418.     p=pr->next;  
  419.     while(p!=NULL)  
  420.     {  
  421.         if(strcmp(name,p->name)==0 && strcmp(ID_num,p->ID_num)==0)  
  422.         {  
  423.             for(flightnode *f=h->next;f!=NULL;f=f->next)  
  424.             {  
  425.                 if(strcmp(p->flight_num,f->flight_num)==0)  
  426.                 {  
  427.                     f->left=f->left+p->ticket_num;  
  428.                     f->ifull=0;  
  429.                     break;  
  430.                 }  
  431.             }  
  432.             pr->next=p->next;  
  433.             free(p);  
  434.             printf(“\t\t客户%s,%s退票成功!\n”,name,ID_num);  
  435.             return 1;  
  436.         }  
  437.         pr=pr->next;  
  438.         p=pr->next;  
  439.     }  
  440.     printf(“\t\t无此客户,无法退票!\n”);  
  441.     return 0;  
  442. }  
  443. /********************************************************* 
  444. * 功能描述: 选择使用何种方式对航班信息进行查询 
  445. * 输入参数: flight_num,start_place,end_place 
  446. * 输出参数: 无 
  447. * 返回值  : 无 
  448. * 其它说明: 无 
  449. *********************************************************/  
  450. void flight_check(flightnode *h)  
  451. {  
  452.     flightnode *p=h->next;  
  453.     char flight_num[10],start_place[20],end_place[20];  
  454.     char a;  
  455.     printf(“\t\t请选择航班查询方式:\n”);  
  456.     printf(“\t\t1、按航班号进行查询:\n”);  
  457.     printf(“\t\t2、按起飞抵达城市进行查询:\n”);  
  458.     printf(“\t\t3、浏览全部航班信息.\n\t\t请输入:\n”);  
  459.     a=getch();  
  460.     printf(“%c\n”,a);  
  461.     if(a==‘1’)  
  462.     {  
  463.         printf(“\t\t请输入航班号:”);  
  464.         scanf(“%s”,flight_num);  
  465.         flight_num_check(p,flight_num);  
  466.     }  
  467.     else if(a==‘2’)  
  468.     {  
  469.         printf(“\t\t请输入起飞城市:”);  
  470.         scanf(“%s”,start_place);  
  471.         printf(“\t\t请输入抵达城市:”);  
  472.         scanf(“%s”,end_place);  
  473.         place_check(p,start_place,end_place);  
  474.     }  
  475.     else if(a==‘3’)  
  476.         check_all_flight(p);  
  477.     else  
  478.         return;  
  479. }  
  480. /********************************************************* 
  481. * 功能描述: 按照航班号查询航班信息 
  482. * 输入参数: 无 
  483. * 输出参数: 对应航班信息 
  484. * 返回值  : 1—成功  0—失败 
  485. * 其它说明: 无 
  486. *********************************************************/  
  487. int flight_num_check(flightnode *h, char *flight_num)  
  488. {  
  489.     flightnode *p=h;  
  490.     printf(“%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s\n”,“航班号”,“起飞城市”,“抵达城市”,“起飞时间”,“抵达时间”,“价格”,“是否满仓”,“空座数”);  
  491.     for(;p!=NULL;p=p->next)  
  492.     {  
  493.         if(strcmp(p->flight_num,flight_num)==0)  
  494.         {  
  495.             printf(“%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n”,p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->ifull,p->left);  
  496.             return 1;  
  497.         }  
  498.     }  
  499.     printf(“\t\t抱歉,没有航班号为%s的航班信息!\n”,flight_num);  
  500.     return 0;  
  501. }  
  502. /********************************************************* 
  503. * 功能描述: 按照起飞抵达城市查询航班信息 
  504. * 输入参数: 无 
  505. * 输出参数: 对应航班信息 
  506. * 返回值  : 1—成功  0—失败 
  507. * 其它说明: 无 
  508. *********************************************************/  
  509. int place_check(flightnode *h, char *start_place, char *end_place)  
  510. {  
  511.     flightnode *p=h;  
  512.     int mark=0;  
  513.     printf(“%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s\n”,“航班号”,“起飞城市”,“抵达城市”,“起飞时间”,“抵达时间”,“价格”,“是否满仓”,“空座数”);  
  514.     for(;p!=NULL;p=p->next)  
  515.     {  
  516.         if(strcmp(p->start_place,start_place)==0 && strcmp(p->end_place,end_place)==0)  
  517.         {  
  518.             printf(“%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n”,p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->ifull,p->left);  
  519.             mark=1;  
  520.         }  
  521.     }  
  522.     if(mark==0)  
  523.     {  
  524.         printf(“\t\t抱歉,没有从%s到%s的航班信息!\n”,start_place,end_place);  
  525.         return 0;  
  526.     }  
  527.     return 1;  
  528. }  
  529. /********************************************************* 
  530. * 功能描述: 浏览所有航班信息 
  531. * 输入参数: 无 
  532. * 输出参数: 对应航班信息 
  533. * 返回值  : 1—成功  0—失败 
  534. * 其它说明: 无 
  535. *********************************************************/  
  536.   
  537. void check_all_flight(flightnode *h)  
  538. {  
  539.     flightnode *p=h;  
  540.     int mark=0;  
  541.     printf(“%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s\n”,“航班号”,“起飞城市”,“抵达城市”,“起飞时间”,“抵达时间”,“价格”,“是否满仓”,“空座数”);  
  542.     for(;p!=NULL;p=p->next)  
  543.     {  
  544.             printf(“%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n”,p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->ifull,p->left);  
  545.             mark=1;  
  546.     }  
  547.     if(mark==0)  
  548.         printf(“\t\t航班信息为空!\n”);  
  549. }  
  550. /********************************************************* 
  551. * 功能描述: 选择使用何种方式查询订单信息 
  552. * 输入参数: name,ID_num 
  553. * 输出参数: 无 
  554. * 返回值  : 无 
  555. * 其它说明: 无 
  556. *********************************************************/  
  557.   
  558. void passenger_check(passengerList *PList)  
  559. {  
  560.     char name[20],ID_num[15];  
  561.     char a;  
  562.     printf(“\t\t请选择订单查询方式:\n”);  
  563.     printf(“\t\t1、按客户姓名和证件号进行查询\n”);  
  564.     printf(“\t\t2、查看全部订单信息\n\t\t请选择输入:”);  
  565.     a=getch();  
  566.     printf(“%c\n”,a);  
  567.     if(a==‘1’)  
  568.     {  
  569.         printf(“\t\t请输入客户姓名:”);  
  570.         scanf(“%s”,name);  
  571.         printf(“\t\t请输入证件号:”);  
  572.         scanf(“%s”,ID_num);  
  573.         ID_name_check(PList,name,ID_num);  
  574.     }  
  575.     else if(a==‘2’)  
  576.     {  
  577.         check_all_passenger(PList);  
  578.     }     
  579. }  
  580. /********************************************************* 
  581. * 功能描述: 按客户姓名和证件号查询订单信息 
  582. * 输入参数: 无 
  583. * 输出参数: 对应订单信息 
  584. * 返回值  : 1—成功  0—失败 
  585. * 其它说明: 无 
  586. *********************************************************/  
  587. int ID_name_check(passengerList *PList, char *name, char *ID_num)  
  588. {  
  589.     passengernode *p=PList->head->next;  
  590.     int mark=0;  
  591.     printf(“%-8s%-20s%-20s%-10s%-8s%\n”,“订单号”,“姓名”,“证件号”,“航班号”,“订票数量”);  
  592.     for(;p!=NULL;p=p->next)  
  593.     {  
  594.         if(strcmp(p->ID_num,ID_num)==0 && strcmp(p->name,name)==0)  
  595.         {  
  596.             printf(“%-8d%-20s%-20s%-10s%-8d%\n”,p->order_num,p->name,p->ID_num,p->flight_num,p->ticket_num);  
  597.             mark=1;  
  598.         }  
  599.     }  
  600.     if(mark==0)  
  601.     {  
  602.         printf(“\t\t抱歉,没有%s,%s的订单信息!\n”,name,ID_num);  
  603.         return 0;  
  604.     }  
  605.     return 1;  
  606. }  
  607. /********************************************************* 
  608. * 功能描述: 浏览所有订单信息 
  609. * 输入参数: 无 
  610. * 输出参数: 对应订单信息 
  611. * 返回值  : 1—成功  0—失败 
  612. * 其它说明: 无 
  613. *********************************************************/  
  614. void check_all_passenger(passengerList *PList)  
  615. {  
  616.     passengernode *p=PList->head->next;  
  617.     int m=0;  
  618.     printf(“%-8s%-20s%-20s%-10s%-8s%\n”,“订单号”,“姓名”,“证件号”,“航班号”,“订票数量”);  
  619.     for(;p!=NULL;p=p->next)  
  620.     {  
  621.         printf(“%-8d%-20s%-20s%-10s%-8d%\n”,p->order_num,p->name,p->ID_num,p->flight_num,p->ticket_num);  
  622.         m=1;  
  623.     }  
  624.     if(m==0)  
  625.         printf(“\t\t订单信息为空!\n”);  
  626. }  
  627.   
  628. /********************************************************* 
  629. * 功能描述: 浏览所有预约客户信息 
  630. * 输入参数: 无 
  631. * 输出参数: 对应预约订单信息 
  632. * 返回值  : 1—成功  0—失败 
  633. * 其它说明: 无 
  634. *********************************************************/  
  635. void check_all_wait(waitList *WList)  
  636. {  
  637.     waitnode *a=WList->front->next;  
  638.     int m=0;  
  639.     printf(“%-20s%-20s%-10s%-8s%\n”,“姓名”,“手机号”,“航班号”,“订票数量”,“预约排队号”);  
  640.     for(;a!=NULL;a=a->next)  
  641.     {  
  642.         printf(“%-20s%-20s%-10s%-8d%\n”,a->name,a->phone,a->flight_num,a->ticket_num,a->order_num);  
  643.         m=1;  
  644.     }  
  645.     if(m==0)  
  646.         printf(“\t\t预约客户信息为空!\n”);  
  647. }  
  648.   
  649. /********************************************************* 
  650. * 功能描述: 修改航班信息 
  651. * 输入参数: 无 
  652. * 输出参数: 无 
  653. * 返回值  : 1—成功  0—失败 
  654. * 其它说明: 无 
  655. *********************************************************/  
  656. void modify_flight(flightnode *&h, passengerList *&PList)  
  657. {  
  658.     flightnode *p=h->next;  
  659.     char a;  
  660.     printf(“\t\t****************************\n”);  
  661.     printf(“\t\t********航线信息修改********\n”);  
  662.     printf(“\t\t****************************\n”);  
  663.     printf(“\t\t*       增加航班——1      *\n”);  
  664.     printf(“\t\t*       删除航班——2      *\n”);  
  665.     printf(“\t\t*       修改航班时间——3  *\n”);  
  666.     printf(“\t\t****************************\n”);  
  667.     printf(“\t\t请选择:”);  
  668.     a=getch();  
  669.     printf(“%c\n”,a);  
  670.     if(a==‘1’)  
  671.         add_flight(h);  
  672.     else if(a==‘2’)  
  673.         delete_flight(h,PList);  
  674.     else if(a==‘3’)  
  675.     {  
  676.         modify_flight_time(h,PList);   
  677.     }  
  678.     else  
  679.         return;  
  680. }  
  681. /********************************************************* 
  682. * 功能描述: 按照某个航班号删除航班结点 
  683. * 输入参数: flight_num 
  684. * 输出参数: flight_num 
  685. * 返回值  : 1—成功  0—失败 
  686. * 其它说明: 无 
  687. *********************************************************/  
  688. void delete_flight(flightnode *&h, passengerList *&PList)  
  689. {  
  690.     flightnode *p,*pr;  
  691.     passengernode *q,*qr;  
  692.     char flight_num[10];  
  693.     int mark=1;  
  694.     qr=PList->head;//pr为客户链表的头结点  
  695.     q=qr->next;//用p作为中间指针对客户链表中要删除的客户节点进行查找  
  696.     pr=h;//pr为航线链表的头结点  
  697.     p=pr->next;//用p作为指针对航班链表中要删除的航班节点进行查找  
  698.     printf(“\t\t请输入您要删除的航班号:”);  
  699.     scanf(“%s”,flight_num);  
  700.     while(p!=NULL)//要删除的航班不存在,下面进行删除操作  
  701.     {  
  702.         if(strcmp(flight_num,p->flight_num)==0)  
  703.         {  
  704.             pr->next=p->next;//移动指针找要删除的航班节点  
  705.             free(p);  
  706.             printf(“\t\t删除%s航班成功!\n”,flight_num);  
  707.             mark=0;  
  708.             p=NULL;  
  709.         }  
  710.         if(pr->next!=NULL)  
  711.         {  
  712.             pr=pr->next;  
  713.             p=pr->next;  
  714.         }  
  715.     }  
  716.     if(mark==1)  
  717.         printf(“\t\t无此航班,无法删除!\n”);  
  718.     else  
  719.     {  
  720.         while(q!=NULL)//要删除的客户不存在,下面进行删除操作  
  721.         {  
  722.             if(strcmp(flight_num,q->flight_num)==0)  
  723.             {  
  724.                 qr->next=q->next;//移动指针找要删除的客户节点  
  725.                 free(q);  
  726.                 q=NULL;  
  727.             }  
  728.             if(qr->next!=NULL)  
  729.             {  
  730.                 qr=qr->next;  
  731.                 q=qr->next;  
  732.             }  
  733.         }  
  734.     }  
  735. }  
  736. /********************************************************* 
  737. * 功能描述: 修改航班时间 
  738. * 输入参数: flight_num,start_time,end_time 
  739. * 输出参数: flight_num 
  740. * 返回值  : 无 
  741. * 其它说明: 无 
  742. *********************************************************/  
  743. void modify_flight_time(flightnode *&h, passengerList *&PList)  
  744. {  
  745.     flightnode *p=h->next;  
  746.     char flight_num[10],start_time[10],end_time[10];  
  747.     printf(“\t\t请输入要修改航班的航班号:”);  
  748.     scanf(“%s”,flight_num);  
  749.     if(flight_num_check(p,flight_num)==1)  
  750.     {  
  751.         printf(“\t\t请输入修改后的起飞时间:”);  
  752.         scanf(“%s”,start_time);  
  753.         printf(“\t\t请输入修改后的抵达时间:”);  
  754.         scanf(“%s”,end_time);  
  755.         for(;p!=NULL;p=p->next)  
  756.         {  
  757.             if(strcmp(flight_num,p->flight_num)==0)  
  758.             {  
  759.                 strcpy(p->start_time,start_time);  
  760.                 strcpy(p->end_time,end_time);  
  761.                 printf(“\t\t航班%s时间修改成功!\n”,flight_num);  
  762.             }  
  763.         }  
  764.     }  
  765. }  
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include "plane.h"
//建立以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表
void init_flight(flightnode *&h)
{
h=(flightnode *)malloc(sizeof(flightnode));//申请头结点空间
if(h==NULL)
exit(0);
h->next=NULL;//将头结点h的指针域置为空
}
//建立一个带有头尾指针的空链表,存储带有客户信息的节点
void init_passengerList(passengerList *&pList)
{
pList=(passengerList *)malloc(sizeof(passengerList));
pList->head=(passengernode *)malloc(sizeof(passengernode));//创建头结点
pList->rear=pList->head;
pList->rear->order_num=0;//订单号从0开始计数
pList->head->next=NULL;
}
//建立一个带有头尾指针的空队,存储带有预约客户信息的节点
void init_waitList(waitList *&wList)
{
wList=(waitList *)malloc(sizeof(waitList));
wList->front=(waitnode *)malloc(sizeof(waitnode));//创建头结点
wList->rear=wList->front;
wList->rear->order_num=0;//预约排队号从0开始计数
wList->front->next=NULL;
}
//保存航班信息到指定的数据文件中
void save_flight(flightnode *h)
{
FILE *fp=fopen("flightList.dat","wb");//以只写('wb')的方式打开名为'flightList.dat'的文件
if(fp==NULL)
return;
flightnode *temp=h->next;
while(temp!=NULL)
{
fwrite(temp,sizeof(flightnode),1,fp);//向其中写入temp(temp是指针)地址的l个flightnode类型的数据
temp=temp->next;
}
fclose(fp);//关闭fp指向的文件
}
//从存储航班信息的文件导入航班信息到航班链表中
void load_flight(flightnode *&h)
{
flightnode *pt=h;
FILE *fp=fopen("flight.dat","rb");
if(fp==NULL)
return;
flightnode *q;
int n;
while(!feof(fp))//文件指针没有到达文件末尾(最后一个字符的下一个位置,即读失败时的位置)
{
q=(flightnode *)malloc(sizeof(flightnode));
n=fread(q,sizeof(flightnode),1,fp);//将写入的数据读取出来
if(n!=1)
break;
pt->next=q;
pt=q;
}
pt->next=NULL;
fclose(fp);
}
//保存已订票客户信息到指定数据文件中
void save_passenger(passengerList *PList)
{
FILE *fp=fopen("passenger.dat","wb");
if(fp==NULL)
return;
passengernode *temp=PList->head->next;
while(temp!=NULL)
{
fwrite(temp,sizeof(passengernode),1,fp);//向其中写入temp(temp是指针)地址的l个passengernode类型的数据
temp=temp->next;
}
fclose(fp);//关闭fp指向的文件
}
//从存储客户信息的文件导入客户信息到客户链表中
void load_passenger(passengerList *&PList)
{
FILE *fp=fopen("passenger.dat","rb");
if(fp==NULL)
return;
passengernode *q;
int n;
while(!feof(fp))//文件指针没有到达文件末尾(最后一个字符的下一个位置,即读失败时的位置)
{
q=(passengernode *)malloc(sizeof(passengernode));
n=fread(q,sizeof(passengernode),1,fp);//将写入的数据读取出来
if(n!=1)
break;
PList->rear->next=q;
PList->rear=q;
}
PList->rear->next=NULL;
fclose(fp);
}
//保存预约客户信息到指定数据文件中
void save_wait(waitList *WList)
{
FILE *fp=fopen("waitpassenger.dat","wb");
if(fp==NULL)
return;
waitnode *temp=WList->front->next;
while(temp!=NULL)
{
fwrite(temp,sizeof(waitnode),1,fp);//向其中写入temp(temp是指针)地址的l个waitnode类型的数据
temp=temp->next;
}
fclose(fp);//关闭fp指向的文件
}
//从存储预约客户信息的文件导入预约客户信息到预约客户链表中
void load_wait(waitList *&WList)
{
FILE *fp=fopen("waitpassenger.dat","rb");
if(fp==NULL)
return;
waitnode *w;
int n;
while(!feof(fp))//文件指针没有到达文件末尾(最后一个字符的下一个位置,即读失败时的位置)
{
w=(waitnode *)malloc(sizeof(waitnode));
n=fread(w,sizeof(waitnode),1,fp);//将写入的数据读取出来
if(n!=1)
break;
WList->rear->next=w;
WList->rear=w;
}
WList->rear->next=NULL;
fclose(fp);
}
/*********************************************************
* 功能描述: 新航班结点插入航线链表
* 输入参数: 航班各项信息
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
*********************************************************/
void insert_flight(flightnode *&h, char *flight_num, char *start_place, char *end_place, char *start_time, char *end_time, int left, float price, int ifull)
{
flightnode *q;//定义q为新增加的航班节点的指针的形参
flightnode *p=h;
q=(flightnode *)malloc(sizeof(flightnode));//为节点q申请空间
strcpy(q->flight_num,flight_num);
strcpy(q->start_place,start_place);
strcpy(q->end_place,end_place);
strcpy(q->start_time,start_time);
strcpy(q->end_time,end_time);
q->left=left;
q->price=price;
q->ifull=ifull;
//用strcpy函数将新增加航班的各种信息复制到q节点中
q->next=p->next;//将q节点的指针域置为空
p->next=q;
p=p->next;//将指针后移
}
/*********************************************************
* 功能描述: 录入航班信息
* 输入参数: 航班各项信息
* 输出参数: 匹配的航班各项信息
* 返回值  : 无
* 其它说明: 无
*********************************************************/
void add_flight(flightnode *&h)
{
flightnode *p=h;
char flight_num[10],start_time[10],end_time[10],start_place[10],end_place[10];
int left,ifull,mark=1;
float price;
for(;p->next!=NULL;p=p->next)
{}//移动指针,找到最后一个节点
while(mark==1)
{
printf("\t\t请输入你要增加的航班号:");
scanf("%s",flight_num);
printf("\t\t请输入出发地:");
scanf("%s",start_place);
printf("\t\t请输入目的地:");
scanf("%s",end_place);
printf("\t\t请输入起飞时间:");
scanf("%s",start_time);
printf("\t\t请输入抵达时间:");
scanf("%s",end_time);
printf("\t\t请输入票价:");
scanf("%f",&price);
printf("\t\t请输入剩余座位数:");
scanf("%d",&left);
printf("\t\t请输入是否满仓(0表示没有满仓,1表示已满仓):");
scanf("%d",&ifull);
insert_flight(h, flight_num, start_place, end_place, start_time, end_time, left, price, ifull);
printf("\t\t增加航班号%s成功!\n",flight_num);
printf("\t\t是否继续录入航班信息(1表示继续录入,0表示停止录入)\n");
printf("\t\t请输入:");
scanf("%d",&mark);
}
}
/*********************************************************
* 功能描述: 订票
* 输入参数: start_place,end_place,客户各项信息
* 输出参数: 匹配的航班信息
* 返回值  : 无
* 其它说明: 1—订票或预约  0—失败
*********************************************************/
//完成客户订票,将客户结点插入客户链表,并修改相应的航班信息
int book(flightnode *&h,passengerList *&PList,waitList *WList)
{
char name[20];
char ID_num[20];
char flight_num[10];
char start_place[20];
char end_place[20];
char phone[20];
int ticket_num;
int order_num=0;
int k;
flightnode *p=h->next;
printf("\t\t请输入信息:\n");
printf("\t\t请输入起飞城市:");
scanf("%s",start_place);
printf("\t\t请输入抵达城市:");
scanf("%s",end_place);
if(place_check(h,start_place,end_place)==1)
{
printf("\t\t航班号:");
scanf("%s",flight_num);
while(flight_num==NULL)
{
printf("航班号不能为空!\n");
printf("\t\t航班号:");
scanf("%s",flight_num);
}
while(p!=NULL)
{
if(strcmp(p->flight_num,flight_num)==0)
{
printf("\t\t姓名:");
scanf("%s",name);
printf("\t\t证件号码:");
scanf("%s",ID_num);
printf("\t\t订票数量:");
scanf("%d",&ticket_num);
while(name==NULL)
{
printf("客户姓名不能为空!\n");
printf("\t\t姓名:");
scanf("%s",name);
}
while(ID_num==NULL)
{
printf("客户证件号码不能为空!\n");
printf("\t\t证件号码:");
scanf("%s",ID_num);
}
while(ticket_num==0)
{
printf("客户订票数量不能为空!\n");
printf("\t\t订票数量:");
scanf("%d",&ticket_num);
}
if(p->left>0 && p->left>=ticket_num)
{
insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);
printf("\t\t你应付金额¥%8.2f。\n",p->price*ticket_num);
getch();
printf("\t\t恭喜您,订票成功!\n");
return 1;
}
else
{
printf("\t\t***很遗憾,该航班已满!***\n");
printf("\t\t***如选择其他航班请输入——1\n\t\t***预约请输入——2\n\t\t***不选则输入——0***\n");
printf("\t\t输入数字进行选择:");
scanf("%d",&k);
if(k==1)
{
printf("\t\t请输入您选的航班:");
scanf("%s",flight_num);
insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);
printf("\t\t恭喜您,订票成功!\n");
return 1;
}
else if(k==2)
{
printf("\t\t请输入您的手机号:");
scanf("%s",phone);
printf("\t\t请输入您需要预约的航班号:");
scanf("%s",flight_num);
insert_waitList(WList, name,phone,flight_num, ticket_num,order_num);
printf("\t\t如有退票,会尽快联系您!\n");
return 1;
}
}
}
else
p=p->next;
}
if(p==NULL)
printf("\t\t对不起,您输入的航班不存在!\n");
}
return 0;
}
/*********************************************************
* 功能描述: 客户结点插入客户链表,修改航班信息
* 输入参数: 无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
*********************************************************/
void insert_passengerList(flightnode *&h, passengerList *&PList, char *name, char *ID_num, char *flight_num, int ticket_num)
{
flightnode *p=h->next;
for(;p!=NULL;p=p->next)
if(strcmp(p->flight_num,flight_num)==0)
{
p->left=p->left-ticket_num;
if(p->left==0)
p->ifull=1;
}
passengernode *q=(passengernode *)malloc(sizeof(passengernode));//新建结点,存放新的客户订单信息
strcpy(q->name,name);
strcpy(q->ID_num,ID_num);
strcpy(q->flight_num,flight_num);
q->ticket_num=ticket_num;
q->next=NULL;
//将新订单连接到链表中
PList->rear->next=q;
q->order_num=PList->rear->order_num+1;//生成订单号
PList->rear=q;
}
/*********************************************************
* 功能描述: 预约客户结点插入预约客户队列
* 输入参数: 无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
*********************************************************/
void insert_waitList(waitList *&WList, char *name, char *phone, char *flight_num, int ticket_num,int order_num)
{
waitnode *p=(waitnode *)malloc(sizeof(waitnode));
strcpy(p->name,name);
strcpy(p->phone,phone);
strcpy(p->flight_num,flight_num);
p->ticket_num=ticket_num;
p->next=NULL;
if(WList->rear==NULL)
{
WList->front=WList->rear=p;
}
else
{
WList->rear->next=p;
p->order_num=WList->rear->order_num+1;//生成预约排队号
WList->rear=p;
}
}
/*********************************************************
* 功能描述: 提供其他可选航班
* 输入参数: 无
* 输出参数: 对应航班信息
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
int find_same_flight(flightnode *h,char *flight_num)
{
flightnode *t=h->next,*p=h->next;
int mark=0;
printf("%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s\n","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","是否满仓","空座数");
while(p!=NULL)
{
if((strcmp(t->start_place,p->start_place)==0) && (strcmp(t->end_place,p->end_place)==0) && (strcmp(t->flight_num,p->flight_num)!=0))
{
printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n",p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->ifull,p->left);
mark=1;
}
p=p->next;
}
if(mark=0)
{
printf("\t\t抱歉,无可选航班!\n");
return 0;
}
return 1;
}
/*********************************************************
* 功能描述: 退票
* 输入参数: name,ID_num
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
*********************************************************/
void cancel(passengerList *&PList, flightnode *&h)
{
char name[20],ID_num[20];
printf("\t\t请输入你的姓名:");
scanf("%s",name);
printf("\t\t请输入你的证件号:");
scanf("%s",ID_num);
delete_passenger(PList,h,name,ID_num);
}
/*********************************************************
* 功能描述: 查找客户结点,进行删除
* 输入参数: 无
* 输出参数: name,ID_num
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
int delete_passenger(passengerList *&PList,flightnode *&h, char *name, char *ID_num)
{
passengernode *p,*pr=PList->head;//pr指向客户链表的头结点
p=pr->next;
while(p!=NULL)
{
if(strcmp(name,p->name)==0 && strcmp(ID_num,p->ID_num)==0)
{
for(flightnode *f=h->next;f!=NULL;f=f->next)
{
if(strcmp(p->flight_num,f->flight_num)==0)
{
f->left=f->left+p->ticket_num;
f->ifull=0;
break;
}
}
pr->next=p->next;
free(p);
printf("\t\t客户%s,%s退票成功!\n",name,ID_num);
return 1;
}
pr=pr->next;
p=pr->next;
}
printf("\t\t无此客户,无法退票!\n");
return 0;
}
/*********************************************************
* 功能描述: 选择使用何种方式对航班信息进行查询
* 输入参数: flight_num,start_place,end_place
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
*********************************************************/
void flight_check(flightnode *h)
{
flightnode *p=h->next;
char flight_num[10],start_place[20],end_place[20];
char a;
printf("\t\t请选择航班查询方式:\n");
printf("\t\t1、按航班号进行查询:\n");
printf("\t\t2、按起飞抵达城市进行查询:\n");
printf("\t\t3、浏览全部航班信息.\n\t\t请输入:\n");
a=getch();
printf("%c\n",a);
if(a=='1')
{
printf("\t\t请输入航班号:");
scanf("%s",flight_num);
flight_num_check(p,flight_num);
}
else if(a=='2')
{
printf("\t\t请输入起飞城市:");
scanf("%s",start_place);
printf("\t\t请输入抵达城市:");
scanf("%s",end_place);
place_check(p,start_place,end_place);
}
else if(a=='3')
check_all_flight(p);
else
return;
}
/*********************************************************
* 功能描述: 按照航班号查询航班信息
* 输入参数: 无
* 输出参数: 对应航班信息
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
int flight_num_check(flightnode *h, char *flight_num)
{
flightnode *p=h;
printf("%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s\n","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","是否满仓","空座数");
for(;p!=NULL;p=p->next)
{
if(strcmp(p->flight_num,flight_num)==0)
{
printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n",p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->ifull,p->left);
return 1;
}
}
printf("\t\t抱歉,没有航班号为%s的航班信息!\n",flight_num);
return 0;
}
/*********************************************************
* 功能描述: 按照起飞抵达城市查询航班信息
* 输入参数: 无
* 输出参数: 对应航班信息
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
int place_check(flightnode *h, char *start_place, char *end_place)
{
flightnode *p=h;
int mark=0;
printf("%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s\n","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","是否满仓","空座数");
for(;p!=NULL;p=p->next)
{
if(strcmp(p->start_place,start_place)==0 && strcmp(p->end_place,end_place)==0)
{
printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n",p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->ifull,p->left);
mark=1;
}
}
if(mark==0)
{
printf("\t\t抱歉,没有从%s到%s的航班信息!\n",start_place,end_place);
return 0;
}
return 1;
}
/*********************************************************
* 功能描述: 浏览所有航班信息
* 输入参数: 无
* 输出参数: 对应航班信息
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
void check_all_flight(flightnode *h)
{
flightnode *p=h;
int mark=0;
printf("%-8s%-12s%-12s%-10s%-10s%-8s%-10s%-8s\n","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","是否满仓","空座数");
for(;p!=NULL;p=p->next)
{
printf("%-8s%-12s%-12s%-10s%-10s%-8.2f%-10d%-8d\n",p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->ifull,p->left);
mark=1;
}
if(mark==0)
printf("\t\t航班信息为空!\n");
}
/*********************************************************
* 功能描述: 选择使用何种方式查询订单信息
* 输入参数: name,ID_num
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
*********************************************************/
void passenger_check(passengerList *PList)
{
char name[20],ID_num[15];
char a;
printf("\t\t请选择订单查询方式:\n");
printf("\t\t1、按客户姓名和证件号进行查询\n");
printf("\t\t2、查看全部订单信息\n\t\t请选择输入:");
a=getch();
printf("%c\n",a);
if(a=='1')
{
printf("\t\t请输入客户姓名:");
scanf("%s",name);
printf("\t\t请输入证件号:");
scanf("%s",ID_num);
ID_name_check(PList,name,ID_num);
}
else if(a=='2')
{
check_all_passenger(PList);
}	
}
/*********************************************************
* 功能描述: 按客户姓名和证件号查询订单信息
* 输入参数: 无
* 输出参数: 对应订单信息
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
int ID_name_check(passengerList *PList, char *name, char *ID_num)
{
passengernode *p=PList->head->next;
int mark=0;
printf("%-8s%-20s%-20s%-10s%-8s%\n","订单号","姓名","证件号","航班号","订票数量");
for(;p!=NULL;p=p->next)
{
if(strcmp(p->ID_num,ID_num)==0 && strcmp(p->name,name)==0)
{
printf("%-8d%-20s%-20s%-10s%-8d%\n",p->order_num,p->name,p->ID_num,p->flight_num,p->ticket_num);
mark=1;
}
}
if(mark==0)
{
printf("\t\t抱歉,没有%s,%s的订单信息!\n",name,ID_num);
return 0;
}
return 1;
}
/*********************************************************
* 功能描述: 浏览所有订单信息
* 输入参数: 无
* 输出参数: 对应订单信息
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
void check_all_passenger(passengerList *PList)
{
passengernode *p=PList->head->next;
int m=0;
printf("%-8s%-20s%-20s%-10s%-8s%\n","订单号","姓名","证件号","航班号","订票数量");
for(;p!=NULL;p=p->next)
{
printf("%-8d%-20s%-20s%-10s%-8d%\n",p->order_num,p->name,p->ID_num,p->flight_num,p->ticket_num);
m=1;
}
if(m==0)
printf("\t\t订单信息为空!\n");
}
/*********************************************************
* 功能描述: 浏览所有预约客户信息
* 输入参数: 无
* 输出参数: 对应预约订单信息
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
void check_all_wait(waitList *WList)
{
waitnode *a=WList->front->next;
int m=0;
printf("%-20s%-20s%-10s%-8s%\n","姓名","手机号","航班号","订票数量","预约排队号");
for(;a!=NULL;a=a->next)
{
printf("%-20s%-20s%-10s%-8d%\n",a->name,a->phone,a->flight_num,a->ticket_num,a->order_num);
m=1;
}
if(m==0)
printf("\t\t预约客户信息为空!\n");
}
/*********************************************************
* 功能描述: 修改航班信息
* 输入参数: 无
* 输出参数: 无
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
void modify_flight(flightnode *&h, passengerList *&PList)
{
flightnode *p=h->next;
char a;
printf("\t\t****************************\n");
printf("\t\t********航线信息修改********\n");
printf("\t\t****************************\n");
printf("\t\t*       增加航班——1      *\n");
printf("\t\t*       删除航班——2      *\n");
printf("\t\t*       修改航班时间——3  *\n");
printf("\t\t****************************\n");
printf("\t\t请选择:");
a=getch();
printf("%c\n",a);
if(a=='1')
add_flight(h);
else if(a=='2')
delete_flight(h,PList);
else if(a=='3')
{
modify_flight_time(h,PList); 
}
else
return;
}
/*********************************************************
* 功能描述: 按照某个航班号删除航班结点
* 输入参数: flight_num
* 输出参数: flight_num
* 返回值  : 1—成功  0—失败
* 其它说明: 无
*********************************************************/
void delete_flight(flightnode *&h, passengerList *&PList)
{
flightnode *p,*pr;
passengernode *q,*qr;
char flight_num[10];
int mark=1;
qr=PList->head;//pr为客户链表的头结点
q=qr->next;//用p作为中间指针对客户链表中要删除的客户节点进行查找
pr=h;//pr为航线链表的头结点
p=pr->next;//用p作为指针对航班链表中要删除的航班节点进行查找
printf("\t\t请输入您要删除的航班号:");
scanf("%s",flight_num);
while(p!=NULL)//要删除的航班不存在,下面进行删除操作
{
if(strcmp(flight_num,p->flight_num)==0)
{
pr->next=p->next;//移动指针找要删除的航班节点
free(p);
printf("\t\t删除%s航班成功!\n",flight_num);
mark=0;
p=NULL;
}
if(pr->next!=NULL)
{
pr=pr->next;
p=pr->next;
}
}
if(mark==1)
printf("\t\t无此航班,无法删除!\n");
else
{
while(q!=NULL)//要删除的客户不存在,下面进行删除操作
{
if(strcmp(flight_num,q->flight_num)==0)
{
qr->next=q->next;//移动指针找要删除的客户节点
free(q);
q=NULL;
}
if(qr->next!=NULL)
{
qr=qr->next;
q=qr->next;
}
}
}
}
/*********************************************************
* 功能描述: 修改航班时间
* 输入参数: flight_num,start_time,end_time
* 输出参数: flight_num
* 返回值  : 无
* 其它说明: 无
*********************************************************/
void modify_flight_time(flightnode *&h, passengerList *&PList)
{
flightnode *p=h->next;
char flight_num[10],start_time[10],end_time[10];
printf("\t\t请输入要修改航班的航班号:");
scanf("%s",flight_num);
if(flight_num_check(p,flight_num)==1)
{
printf("\t\t请输入修改后的起飞时间:");
scanf("%s",start_time);
printf("\t\t请输入修改后的抵达时间:");
scanf("%s",end_time);
for(;p!=NULL;p=p->next)
{
if(strcmp(flight_num,p->flight_num)==0)
{
strcpy(p->start_time,start_time);
strcpy(p->end_time,end_time);
printf("\t\t航班%s时间修改成功!\n",flight_num);
}
}
}
}

3、main.cpp的代码

  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. #include <conio.h>  
  5. #include “plane.h”  
  6.   
  7. int main()  
  8. {  
  9.     char choice;  
  10.     int t=1;  
  11.     flightnode *flight;  
  12.     passengerList *PList;  
  13.     waitList *WList;  
  14.     init_flight(flight);  
  15.     init_passengerList(PList);  
  16.     init_waitList(WList);  
  17.     load_flight(flight);  
  18.     load_passenger(PList);  
  19.     load_wait(WList);  
  20.     while(t==1)  
  21.     {  
  22.         printf(“\t\t****************************\n”);  
  23.         printf(“\t\t******飞机订票系统菜单******\n”);  
  24.         printf(“\t\t****************************\n”);  
  25.         printf(“\t\t*       录入信息——1      *\n”);  
  26.         printf(“\t\t*       订    票——2      *\n”);  
  27.         printf(“\t\t*       退    票——3      *\n”);  
  28.         printf(“\t\t*       查询航班——4      *\n”);  
  29.         printf(“\t\t*       查询订单——5      *\n”);  
  30.         printf(“\t\t*       查看预约——6      *\n”);  
  31.         printf(“\t\t*       修改航线——7      *\n”);  
  32.         printf(“\t\t*       保存退出——0      *\n”);  
  33.         printf(“\t\t****************************\n”);  
  34.         printf(“\t\t请选择服务:”);  
  35.         choice=getch();  
  36.         printf(“%c\n”,choice);  
  37.         system(“cls”);  
  38.         if(choice==‘1’)  
  39.         {  
  40.             add_flight(flight);  
  41.             getch();  
  42.             system(“cls”);  
  43.         }  
  44.         else if(choice==‘2’)  
  45.         {  
  46.             book(flight,PList,WList);  
  47.             getch();  
  48.             system(“cls”);  
  49.         }  
  50.         else if(choice==‘3’)  
  51.         {  
  52.             cancel(PList,flight);  
  53.             getch();  
  54.             system(“cls”);  
  55.         }  
  56.         else if(choice==‘4’)  
  57.         {  
  58.             flight_check(flight);  
  59.             getch();  
  60.             system(“cls”);  
  61.         }  
  62.         else if(choice==‘5’)  
  63.         {  
  64.             passenger_check(PList);  
  65.             getch();  
  66.             system(“cls”);  
  67.         }  
  68.         else if(choice==‘6’)  
  69.         {  
  70.             check_all_wait(WList);  
  71.             getch();  
  72.             system(“cls”);  
  73.         }  
  74.         else if(choice==‘7’)  
  75.         {  
  76.             modify_flight(flight,PList);  
  77.             getch();  
  78.             system(“cls”);  
  79.         }  
  80.         else if(choice==‘0’)  
  81.         {  
  82.             printf(“\t\t再见!\n”);  
  83.             t=0;  
  84.         }  
  85.     }  
  86.     save_flight(flight);  
  87.     save_passenger(PList);  
  88.     save_wait(WList);  
  89.     return 0;  
  90. }  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149424.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 基岩版服务器开启坐标显示,mc基岩版怎么看坐标 mc基岩版如何看坐标[通俗易懂]

    基岩版服务器开启坐标显示,mc基岩版怎么看坐标 mc基岩版如何看坐标[通俗易懂]mc基岩版如何看坐标我的世界地图有XYZ3个坐标,通过XYZ来显示你所处地图的区域。X-显示你在地图上的东/西位置,正数表示东,负数表示西。Y-显示你在地图上的海拔高度,整数表示位于地面上,负数表示位于地面下。Z-显示你在地图上的南/北位置,正数表示南,负数表示北。坐标可以显示为*位置和相对位置。02当坐标用数字显示时,则是*坐标,显示为地图上的特定地点。比如,1256163是一…

  • 软件设计和开发准备

    软件设计和开发准备1.团队序号:1撰写人:施贤开发软件名称飞机大战产品代码仓库: https://gitee.com/tanglibo/plane_wars软件测试工程师商守义:https://git

  • Android listview中使用checkbox「建议收藏」

    Android listview中使用checkbox「建议收藏」最近比较忙碌,我也不知道忙的什么东西,打算写的博客写了一半,还没写完,今天先扯一扯项目中遇到的一个问题,一方面防止以后遇到这个问题忘记如何解决,另一方面希望可以提供给遇到同样问题的朋友一个思路.下面开始正题,在listview的item中使用checkbox,当你按照普通的listview的用法使用时,你会遇到下面这样的问题:1.checkbox可以点击,但是listview的item无法

  • 手机修改ntp服务器地址,修改手机ntp服务器ip地址[通俗易懂]

    手机修改ntp服务器地址,修改手机ntp服务器ip地址[通俗易懂]修改手机ntp服务器ip地址内容精选换一换本文介绍使用云手机服务时需要了解的基本概念。云手机是一台包含原生安卓操作系统,具有虚拟手机功能的云服务器,简单来说,云手机=云服务器+AndroidOS。您可以远程实时控制云手机,实现安卓APP的云端运行;也可以基于云手机的基础算力,高效搭建应用,如云游戏、移动办公、直播互娱等场景。服务器是用来提供云手机的物理服务器。云手机目前以服务器您可以直接修改虚…

  • 变量定义规范_类型转换运算符

    变量定义规范_类型转换运算符变量定义规则定义方式驼峰体下划线你觉得哪种更清晰,哪种就是官方推荐的,我想你肯定会先第2种,第一种AgeOfOldboy咋一看以为是AngelaBaby定义变量不好的方式举例变量名为中文、

  • U8转U16_u8 u16

    U8转U16_u8 u16两个U8快速转U16,在8位单片机中基本就是两个MOV

    2022年10月15日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号