航空订票系统

问题及代码:

   /*

    *2015,烟台大学计算机与控制工程学院
    *作者:杨宁
    *完成日期:2015年12月28日

    */


feijipiao.h

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
/************************************
* 功能描述:定义链表
* 输入参数:无
* 输出参数:无
************************************/
typedef struct flightnode
{
    char flight_num[20];
    char start_time[20];
    char end_time[20];
    char start_place[20];
    char end_place[20];
    int left;
    float price;
    float price_discount;
    int isfull;
    struct flightnode *next;
}flightnode;

typedef struct passengernode
{
    char name[20];
    char ID_num[20];
    char flight_num[20];
    int order_num;
    int ticket_num;
    struct passengernode *next;
}passengernode;
/************************************
* 功能描述:双链表
* 输入参数:无
* 输出参数:无
************************************/
typedef struct passengerList
{
    passengernode *head;
    passengernode *rear;
}passengerList;

void init_flight(flightnode *&h);
void init_passengerList(passengerList *&PList);
void save_passenger(passengerList *PList);
void load_passenger(passengerList *PList);
void save_flight(flightnode *h);
void load_flight(flightnode *h);
int find_same_flight(flightnode *h,char *flight_num);
void insert_flight(flightnode *&h,char *flight_num,char *start_place,char *end_place,char *start_time,char *end_time,int left,float price,float price_discount,int isfull);
void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num);
void delete_flight(flightnode *&h,passengerList *&PList);
int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num);
void add_flight(flightnode *&h);
int flight_num_check(flightnode *h,char *flight_num);
int place_check(flightnode *h,char *start_place,char *end_place);
void check_all_flight(flightnode *h);
void flight_check(flightnode *h);
int ID_num_check(passengerList *PList,char *name,char *ID_num);
int order_num_check(passengerList *PList,int order_num);
void check_all_passenger(passengerList *PList);
void passenger_check(passengerList *PList);
void modify_flight(flightnode *&h,passengerList *&PList);
int book(flightnode *&h,passengerList *&PList);
void cancel(passengerList *&PList,flightnode *&h);

feijipiao.cpp


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include"feijipiao.h"
/************************************
* 功能描述:建立一个空链表,增加的航
            班信息将航班节点插入该链表
* 输入参数:无
* 输出参数:无
************************************/
void init_flight(flightnode *&h)
{
    h=(flightnode *)malloc(sizeof(flightnode));
    if(h==NULL)
        exit(0);
    h->next=NULL;
}
/************************************
* 功能描述:建立一个带有头指针和尾指针
            的空双链表
* 输入参数:无
* 输出参数:无
************************************/
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;
    PList->head->next=NULL;
}
/************************************
* 功能描述:保存客户信息到指定的数据文件
* 输入参数:无
* 输出参数:无
************************************/
void save_passenger(passengerList *PList)
{
    FILE *fp=fopen("passenger.txt","wb");
    if(fp==NULL)
        return;
    passengernode *temp=PList->head->next;
    while(temp!=NULL)
    {
        fwrite(temp,sizeof(passengernode),1,fp);
        temp=temp->next;
    };
    fclose(fp);
}
/************************************
* 功能描述:从存储客户信息的文件导入
            客户信息到客户链表中
* 输入参数:无
* 输出参数:无
************************************/
void load_passenger(passengerList *PList)
{
    FILE *fp=fopen("passenger.txt","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_flight(flightnode *h)
{
    FILE *fp=fopen("flightList.txt","wb");
    if(fp==NULL)
        return;
    flightnode *temp=h->next;
    while(temp!=NULL)
    {
        fwrite(temp,sizeof(flightnode),1,fp);
        temp=temp->next;
    };
    fclose(fp);
}
/************************************
* 功能描述:从存储航班信息的文件导入
            航班信息到航班链表中
* 输入参数:无
* 输出参数:无
************************************/
void load_flight(flightnode *h)
{
    flightnode *pt=h;
    FILE *fp=fopen("flightList.txt","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);
}
/************************************
* 功能描述:在客户订票时,当客户所选航
            班座已满时提供其他可选航班
* 输入参数:无
* 输出参数:航班信息
************************************/
int find_same_flight(flightnode *h,char *flight_num)
{
    flightnode *t=h->next,*p=h->next;
    int mark=0;
    printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s\n","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","折扣","是否满仓","空座数");
    while(t!=NULL&&strcmp(t->flight_num,flight_num)!=0)
    {
        t=t->next;
    }
    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 %-8s %-8s %-8s %-8s %-8.2f %-8.2f %-8s %-8s\n",p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->price_discount,p->isfull,p->left);
            mark=1;
        }
        p=p->next;
    }
    if(mark==0)
    {
        printf("\t\t抱歉,没有可选的航班!\n");
        return 0;
    }
    return 1;
}
/************************************
* 功能描述:将新的航班情况插入到航线链表中
* 输入参数:无
* 输出参数:无
************************************/
void insert_flight(flightnode *&h,char *flight_num,char *start_place,char *end_place,char *start_time,char *end_time,int left,float price,float price_discount,int isfull)
{
    flightnode *q;
    flightnode *p=h;
    q=(flightnode *)malloc(sizeof(flightnode));
    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->price_discount=price_discount;
    q->isfull=isfull;
    q->next=p->next;
    p->next=q;
    p=p->next;
}
/************************************
* 功能描述:将客户订票信息插入到客户链表
* 输入参数:无
* 输出参数:无
************************************/
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->isfull=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 delete_flight(flightnode *&h,passengerList *&PList)
{
    flightnode *p,*pr;
    passengernode *q,*qr;
    char flight_num[10];
    int mark=1;
    qr=PList->head;
    q=qr->next;
    pr=h;
    p=pr->next;
    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删除%航班成功!\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;
            }
        }
    }
}
/************************************
* 功能描述:删除客户信息和客户节点
* 输入参数:无
* 输出参数:无
************************************/
int delete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num)
{
	passengernode *p,*pr=PList->head;
	flightnode *f;
	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->isfull=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;
}
/************************************
* 功能描述:录入航班信息并调用insert
            函数插入
* 输入参数:航班信息
* 输出参数:无
************************************/
void add_flight(flightnode *&h)
{
	flightnode *p=h;
	char flight_num[20],start_time[20],end_time[20],start_place[20],end_place[20];
	int left,isfull,mark=1;
	float price,price_discount;
	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("%f",&price_discount);
		printf("\t\t请输入剩余座位数:");
		scanf("%d",&left);
		printf("\t\t请输入是否满仓(0表示没有满仓1表示满仓):");
		scanf("%d",&isfull);
        insert_flight(p,flight_num,start_place,end_place,start_time,end_time,left,price,price_discount,isfull);
		printf("\t\t增加航班%s成功\n",flight_num);
		printf("\t\t是否继续录入航班信息(1表示继续0表示停止)\n");
		printf("\t\t请输入:");
		scanf("%d",&mark);
	}
}
/************************************
* 功能描述:按航班号查询航班信息
* 输入参数:无
* 输出参数:航班信息
************************************/
int flight_num_check(flightnode *h,char *flight_num)
{
	flightnode *p=h;
	printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s\n","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","折扣","是否满仓","空座数");
	for(;p!=NULL;p->next)
	{
		if(strcmp(p->flight_num,flight_num)==0)
		{
			printf("%-8s %-8s %-8s %-8s %-8s %-8.2f %-8.2f %-8s %-8s\n",p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->price_discount,p->isfull,p->left);
            return 1;
		}
	}
	printf("\t\t抱歉,没有航班号为%s的航班信息!\n",flight_num);
	return 0;
}
/************************************
* 功能描述:按照起飞抵达城市查询航班信息
* 输入参数:无
* 输出参数:航班信息
************************************/
int place_check(flightnode *h,char *start_place,char *end_place)
{
	flightnode *p=h;
	int mark=0;
    printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s %-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 %-8s %-8s %-8s %-8s %-8.2f %-8.2f %-8s %-8s\n",p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->price_discount,p->isfull,p->left);
            mark=1;
		}
	}
	if(mark==0)
	{
		printf("\t\t抱歉,没有从%s到%s的航班信息!\n",start_place,end_place);
		return 0;
	}
	return 1;
}
/************************************
* 功能描述:浏览所有航班信息
* 输入参数:无
* 输出参数:航班信息
************************************/
void check_all_flight(flightnode *h)
{
	flightnode *p=h;
	int m=0;
	printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s\n","航班号","起飞城市","抵达城市","起飞时间","抵达时间","价格","折扣","是否满仓","空座数");
	for(;p!=NULL;p->next)
	{
		printf("%-8s %-8s %-8s %-8s %-8s %-8.2f %-8.2f %-8s %-8s\n",p->flight_num,p->start_place,p->end_place,p->start_time,p->end_time,p->price,p->price_discount,p->isfull,p->left);
        m=1;
	}
	if(m==0)
		printf("\t\t航班信息为空!\n");
}
/************************************
* 功能描述:选择使用何种方式对航班信息
            进行查询
* 输入参数:航班号或起飞抵达城市
* 输出参数:无
************************************/
void flight_check(flightnode *h)
{
	flightnode *p=h->next;
	char flight_num[20],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请选择输入:");
	a=getch();
	printf("%c\n",a);
	if(a=='1')
	{
		printf("\t\t请输入航班号:");
		scanf("%s",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;
}
/************************************
* 功能描述:按客户姓名和证件号查询订单信息
* 输入参数:无
* 输出参数:客户订单信息
************************************/
int ID_num_check(passengerList *PList,char *name,char *ID_num)
{
	passengernode *p=PList->head->next;
	int mark=0;
	printf("%-8s %-10s %-10s %-10s %-8s%\n","订单号","姓名","证件号","航班号","订票数量");
	for(;p!=NULL;p=p->next)
	{
		if(strcmp(p->ID_num,ID_num)==0&&strcmp(p->name,name)==0)
		{
			printf("%-8d %-20d %-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;
}
/************************************
* 功能描述:按订单号查询订单信息
* 输入参数:无
* 输出参数:订单信息
************************************/
int order_num_check(passengerList *PList,int order_num)
{
    passengernode *p=PList->head->next;
	printf("%-8s %-10s %-10s %-10s %-8s%\n","订单号","姓名","证件号","航班号","订票数量");
	for(;p!=NULL;p=p->next)
	{
		if(p->order_num=order_num)
		{
			printf("%-8d %-10d %-10s %-10s %-8d%\n",p->order_num,p->name,p->ID_num,p->flight_num,p->ticket_num);
            return 1;
		}
	}
	printf("\t\t抱歉,没有订单号%d的订单信息!\n",order_num);
	return 0;
}
/************************************
* 功能描述:浏览所有订单信息
* 输入参数:无
* 输出参数:订单信息
************************************/
void check_all_passenger(passengerList *PList)
{
	passengernode *p=PList->head->next;
	int m=0;
	printf("%-8s %-10s %-10s %-10s %-8s%\n","订单号","姓名","证件号","航班号","订票数量");
	for(;p!=NULL;p=p->next)
	{
		printf("%-8d %-10d %-10s %-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");
}
/************************************
* 功能描述:选择用何种方式对订单信息
            进行查询
* 输入参数:客户信息或订单号
* 输出参数:无
************************************/
void passenger_check(passengerList *PList)
{
	char name[20],ID_num[15];
	int order_num;
	char a;
    printf("\t\t请选择订单查询方式:\n");
	printf("\t\t1表示按客户姓名和证件号进行查询:\n");
	printf("\t\t2表示按订单号进行查询:\n");
	printf("\t\t3表示浏览全部订单信息.\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_num_check(PList,name,ID_num);
	}
	else if(a=='2')
	{
		printf("\t\t请输入订单号:");
		scanf("%s",order_num);
        order_num_check(PList,order_num);
	}
	else if(a=='3')
		check_all_passenger(PList);
	else
		return;
}
/************************************
* 功能描述:修改航班信息
* 输入参数:无
* 输出参数:无
************************************/
void modify_flight(flightnode *&h,passengerList *&PList)
{
	flightnode *p=h->next;
	char flight_num[20],start_time[20],end_time[20];
	char a;
	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();
	if(a=='1')
		add_flight(h);
	else if(a=='2')
		delete_flight(h,PList);
	else if(a=='3')
	{
		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);
			    }
            }
		}
	}
	else
		return;
}
/************************************
* 功能描述:订票
* 输入参数:航班信息
* 输出参数:无
************************************/
int book(flightnode *&h,passengerList *&PList)
{
	char name[20];
	char ID_num[20];
	char flight_num[20];
	char start_place[20];
	char end_place[20];
    int ticket_num;
	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\证件号码:");
				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);
				}
				if((p->left>0)&&(p->left=ticket_num))
				{
					insert_passengerList(h,PList,name,ID_num,flight_num,ticket_num);
                    printf("\t\t你应付金额¥%6.2f\n",p->price*p->price_discount*ticket_num);
					getch();
					printf("\t\t恭喜您,订票成功!\n");
					return 1;
				}
				else
				{
					printf("\t\t很遗憾,该航班已满!\n");
					printf("\t\t如果选择其他航班请输入--1!\n\t\t不选择则输入--0\n");
					printf("\t\t输入数字进行选择:\n");
					scanf("%d",&k);
					if(k==1)
					{
					    printf("\t\t此航线上的其他航班有:");
					    if(find_same_flight(h,flight_num)==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
                p=p->next;
        }
        if(p==NULL)
            printf("\t\t对不起,您输入的航班不存在!\n");
	}
   return 0;
}
/************************************
* 功能描述:完成客户退票
* 输入参数:姓名和证件号
* 输出参数:无
************************************/
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);

}

main.cpp


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include"feijipiao.h"

int main()
{
    char choice;
    int t=1;
    flightnode *flight;
    passengerList *PList;
    init_flight(flight);
    init_passengerList(PList);
    load_flight(flight);
    load_passenger(PList);
    while(t==1)
    {
        printf("\t**********************飞机订票系统菜单*************************\n");
        printf("\t***************************************************************\n");
        printf("\t***********************录入信息------1*************************\n");
        printf("\t***********************订    票------2*************************\n");
        printf("\t***********************退    票------3*************************\n");
        printf("\t***********************查询航班------4*************************\n");
        printf("\t***********************查询订单------5*************************\n");
        printf("\t***********************修改航线------6*************************\n");
        printf("\t***********************保存退出------0*************************\n");
        printf("\t***************************************************************\n");
        printf("\t请选择服务:");
        choice=getch();
        printf("%c\n",choice);
        system("cls");
        if(choice=='1')
        {
            add_flight(flight);
            getch();
            system("cls");
        }
        else if(choice=='2')
        {
            book(flight,PList);
            getch();
            system("cls");
        }
        else if(choice=='3')
        {
            cancel(PList,flight);
            getch();
            system("cls");
        }
        else if(choice=='4')
        {
            flight_check(flight);
            getch();
            system("cls");
        }
        else if(choice=='5')
        {
            passenger_check(PList);
            getch();
            system("cls");
        }
        else if(choice=='6')
        {
            modify_flight(flight,PList);
            getch();
            system("cls");
        }
        else if(choice=='0')
        {
            printf("\t\t再见!\n");
            t=0;
        }
    }
    save_flight(flight);
    save_passenger(PList);
}



运行结果:

界面:



1.录入信息



2.订票3.退票



4.查询航班



5.查询订单



6.修改航班信息



学习心得:

学期末做了这样一个课程设计是对所学知识的回顾与运用也是对知识的整合和更深刻地理解。希望最后可以画上完美的句号。

目 录 前 言 1 第1章 需求分析 2 §1.1 开发必要性 2 §1.2 可行性分析 2 §1.2.1 经济可行性分析 2 §1.2.2 技术可行性分析 3 §1.2.3 现有系统的分析 3 第2章 系统分析 4 §2.1 系统逻辑模型的提出 4 §2.2 系统的功能介绍 4 §2.3 系统开发工具和开发语言 5 §2.3.1 开发工具 5 §2.3.2 开发语言 6 第3章 总体设计 7 §3.1 系统功能设计 7 §3.2 系统功能模块简介 7 第4章 数据库设计 10 §4.1 概念结构设计 10 §4.2 逻辑结构设计 11 §4.3 物理结构设计 12 第5章 详细设计 14 §5.1 关键业务流程描述 14 §5.1.1 航空售票管理 14 §5.1.2 管理员管理流程 14 §5.2 系统界面设计 15 §5.2.1 主功能界面 15 §5.2.2 其他功能界面 16 §5.3 模块代码实现 18 §5.3.1 航空订票查询模块 18 §5.3.2 航空售票管理模块 19 第6章 系统测试 21 §6.1 软件测试的目标 21 §6.2 具体测试 21 结 论 24 参考文献 25 致 谢 27 §5.3.1 航空订票查询模块 航空订票查询主要实现对票据信息种类的添加、修改和删除功能。票据信息种类是系统内容的最高级别,所以在添加、修改或删除票据信息时,也必须选择该票据信息所属的票据信息种类。下面是票据信息种类的添加、修改和删除功能的主要实现代码。 public void actionPerformed(ActionEvent e) { this.flightNumber = flightField.getText().trim(); if (flightNumber.length() == 0) //未输入信息 { JOptionPane.showMessageDialog(null,"请输入航班号或者从列表中选择", "错误信息",JOptionPane.ERROR_MESSAGE); return; } executeFlightQuery(); } public void executeFlightQuery() { String sqlString = "SELECT DISTINCT * FROM " +"flight " + "WHERE flight=" + "\'" + flightNumber + "\'"; ResultSet rs = sqlBean.executeQuery(sqlString); if (rs != null) showResult(rs); else JOptionPane.showMessageDialog(null,"没有连接上数据库!", "错误信息",JOptionPane.ERROR_MESSAGE); } 以上是对数据添加的程序代码,该段代码实现了获得用户数据输入,并把数据插入到数据库当中的功能。 。。。。。。。。。。。。。。。。。。。。。。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值