课程设计I《飞机订票系统 》

计算机与信息工程学院

  《程序设计基础I课程设计》报告

  (2017/2018学年 第一学期)

 

   课程设计名称      飞机订票系统    

 

            专    业    计算机科学与技术  

 

班    级        计科二班      

 

学    号       1706915081    

 

姓    名         黄才龙       

 

成绩类别

成    绩

个人考勤(20)

 

实践成绩(40)

 

总结报告(40)

 

总成绩(100)

 

等级制成绩

 

 

2017年1月12日


1.  需求 分 析

1.1  编写目的

通过对用户需求进行调查分析,写出需求分析文档。需求分析文档可作为项目设计的 基本准则要求,也可作为系统分析员进行系统分析和测试人员进行测试时的手册。

1.2  需求概述

一、       设计一个飞机订票系统,使之能提供以下功能:

1)   管理员登录信息功能

2)   机票信息浏览功能

3)   机票信息查询功能

4)   机票订购功能

5)   机票退单功能

需求说明

所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的 选择来进行各种处理,并要求在此过程中能够尽可能地兼容用户使用过程中的异常情 况选题意义

2  总 体 设 计

设计本系统模拟机场的订票系统内容,包括班机信息录入、班机信息查询、班机信息订购、班机信息退票、查看班机信息。

课题的功能模块的划分

功能模块图如下

 

 


 

 

 

 

 

 

 

 

 


 

 


功能模块说明:

模块一就是必须先验证身份,以管理员身份登陆(管理员初始信息账号555密码555)。其次,录入班机对于另外各个模块有不同的目的,通过输入不同的信息进行不同的下一步的操作。总共可分为八个小的模块,即添加信息、查看单个信息、修改信息、查询班机信息和登录信息。最后一个大的模块是在操作过模块后可以安全退出系统。

主要功能的实现

总流程图

 

功能流程一进入管理系统输入账号密码从键盘输入密码,判断输入的账号密码是否与系统内设定的相同,若相同则进入主菜单,不相同则继续输入或返回。

该模块的部分源代码:

void vip(int a)

{

    int i,j;

    charch='0',m;system("color fc");

  if(a==0)

    {

        FILE*fp;

        structvipid n;

        structvipid nn;

       system("cls");

       if((fp=fopen("F:\\vip.txt","a+"))==NULL)

        {

           printf("\请饶恕帅气的我无法帮你!");

           getch();

           exit(1);

        }

       printf("请输入管理员账号:");

       scanf("%s",n.id);

       printf("请输入管理员password:");

       scanf("%s",n.password);

       rewind(fp);

       while(!(feof(fp)))

        {

           fread(&nn,sizeof(nn),1,fp);

           i=strcmp(n.id,nn.id);

           if(i==0)

            {

               j=strcmp(n.password,nn.password);

                break;

            }

        }

        if(i!=0)

        {

           puts("没有此用户!\n 1.返回首页\n 2.从新输入");

            ch =getche();

           switch (ch)

            {

           case'1':

               mmp();

               break;

           case'2':

               vip(0);

               break;

            }

        }

        elseif(j!=0)

        {

           puts("密码错误!\n 1.返回首页\n 2.从新输入");

            ch =getche();

           switch (ch)

            {

           case'1':

               mmp();

               break;

           case'2':

               vip(0);

               break;

            }

        }

        else

        {

           system("cls");

           puts("登陆成功!");

           fclose(fp);

           system("cls");

           puts("            ***********严肃的管理员页面***********");

           puts("             ****                              ****");

           puts("             ****     1.录入新班机             ****");

           puts("             ****     2.注册新的管理员         ****");

           puts("             ****     3.返回龙龙订票系统页面   ****");

           puts("             ****     0.退出系统               ****");

           puts("             ****                              ****");

           puts("             ****                              ****");

           puts("            **************************************");

           ch=getche();

           switch (ch)

            {

            case'1':

                add();

               break;

            case'2':

               newvip();

               break;

            case'3':

               mmp();

               break;

            case'4':

              return ;

            }

        }

    }

    else

    {

       system("cls");

       system("color 50");

       puts("            ***********严肃的管理员页面***********");

       puts("             ****                              ****");

       puts("             ****     1.录入新班机             ****");

       puts("             ****     2.注册新的管理员         ****");

       puts("             ****     3.返回龙龙订票系统页面   ****");

       puts("             ****     0.退出系统               ****");

        puts("             ****                              ****");

       puts("             ****                              ****");

       puts("            **************************************");

       m=getche();

        switch(m)

        {

        case '1':

           add();

           break;

        case'2':

           newvip();

           break;

        case'3':

           mmp();

           break;

        case'4':

           return ;

        }

    }

}

该模块具体流程图

 

     

        

 

      错误

或                 正

 

主菜单:显示系统的各项功能与相对应的数字选项,根据这些数字选项来进行下一步操作;

该模块的部分源代码:

void mmp()

{

   system("cls");

   system("color 03");

    int i=7,j;

    char r,m,ch;

   puts("\n\n\n\t                        @##########&&&&&&&&&&&&&&&&###########@");

   puts("\t                        @####                            ####@");

   puts("\t                        @####       龙飞机订票系统        ####@");

   puts("\t                         @#### 请以输入序号的方式进行操作  ####@");

   puts("\t                        @####                            ####@");

   puts("\t                        @####                            ####@");

   puts("\t                        @####  1.订票                    ####@");

   puts("\t                        @####  2.查询机票                 ####@");

   puts("\t                        @####  3.退票                    ####@");

   puts("\t                     @###@####  4.浏览航班信息             ####@###@");

   puts("\t                    @###@####  5.以管理员登陆             ####@###@");

   puts("\t                    @###@####  0.退出系统                ####@###@");

   puts("\t                    ***********************************************");

   puts("#%#¥%#%#¥%#¥%¥%#¥%¥¥%¥……%¥%¥%¥%……¥%¥……%¥%¥%¥%#%#¥%#%#¥%#¥%¥%#¥#%#¥%¥#¥");

   puts("\t                  ***************** ****************** *****************");

   printf("\t                    请做出你的答案:");

    do

    {

       ch=getche();

    }

   while(ch>'5'||ch<'0');

    switch(ch)

    {

    case '0':

        break;

    case '1':

        order();

        break;

    case '2':

        dfs();

        break;

    case '3':

        out();

        break;

    case '4':

        llan();

        break;

    case '5':

        vip(0);

        break;

    }

}

管理员菜单:显示系统的各项功能与相对应的数字选项,根据这些数字选项来进行下一步操作;

该模块的部分源代码:

       system("cls");

       system("color 50");

       puts("            ***********严肃的管理员页面***********");

       puts("             ****                              ****");

       puts("             ****     1.录入新班机             ****");

       puts("             ****     2.注册新的管理员         ****");

       puts("             ****     3.返回龙龙订票系统页面   ****");

       puts("             ****     0.退出系统               ****");

       puts("             ****                              ****");

       puts("             ****                              ****");

       puts("            **************************************");

       m=getche();

        switch(m)

        {

        case'1':

           add();

           break;

        case'2':

           newvip();

           break;

        case'3':

           mmp();

           break;

        case'4':

           return ;

        }

功能流程二录入信息从键盘上输入信息,并将信息存入内部文件,用功能模块函数

add

该模块的部分源代码void add()

{

    FILE *fp;

    int m;

    char ch;

    structair_ticket n;

    structair_ticket nn;

   if((fp=fopen("F:\\航班信息.txt","a+"))==NULL)

    {

       printf("\请饶恕帅气的我无法打开此文件!");

        getch();

        exit(1);

    }

    int l=0;

    do

    {

        do

        {

            l=0;

           system("CLS");

           system("color 52");

           printf("\n\n\t班号 : ");

           scanf("%s",n.num);

           printf("\t起始站: ");

           scanf("%s",n.origin);

           printf("\t中转 : ");

           scanf("%s",n.mid);

           printf("\t终点站 : ");

           scanf("%s",n.terminus);

           printf("\t飞行时间(0号.h时.m分.d秒-xx.xx.xx.xx): ");

           scanf("%s",n.time);

           printf("\t剩余人次 : ");

           scanf("%d",&n.people);

           rewind(fp);

           while(!(feof(fp)))

            {

               fread(&nn,sizeof(nn),1,fp);

               m=strcmp(n.num,nn.num);

               if(m==0)

               {

                   l=1;

                   printf("\n\t此班号已存在!");

                   printf("\t是否继续输入(Y/N) :[ ]\b\b");

                   ch=getche();

                   if(ch=='y'||ch=='Y')

                       break;

                   else

                   {

                       fclose(fp);

                       vip(1);

                   }

               }

            }

        }

       while(l);

       fwrite(&n,sizeof(n),1,fp);

        ch='0';

       printf("\t录入成功!\n是否继续输入(Y/N):[ ]\b\b");

       ch=getche();

    }

   while(ch=='y'||ch=='Y');

    fclose(fp);

    vip(1);

}

该模块具体流程图:

 

 

 

 

 

 

 

 

 

 


功能流程三查看单个信息对储存的多个班机的信息进行查看并且显示查询结果;用功能模块dfs函数来实现。

该功能可以分为两个小的模块:

按照班号进行查询,对储存的班机的信息按照班号进行查看并显示。;

按照终点查询。对储存的机票的信息按照终点站进行查看并显示。

1按照班号进行查询

该功能部分源代码:fread(&n,sizeof(n),1,fp);

           l=strcmp(nn.num,n.num);

2按照终点站进行查询

该功能部分源代码:

fread(&n,sizeof(n),1,fp);

m=strcmp(nn.num,n.terminus);

}

该功能模块流程图:

 

   

 

                                                 


                                      

       y                                     n                                         

 

 

 

 


功能流程四订购和退票单个信息对储存的多个班机的信息进行查看并且显示查询结果;在对其进行修改单个小部分,用户只需点确定,机票就自动吧信息记录好,当人数为零时也会告诉用户无法订购,用功能模块order,out函数来实现。

附录A(总体的源代码)

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

struct air_ticket

{

    charnum[20];

    charorigin[20];

    charmid[20];

    charterminus[20];

    chartime[20];

    int people;

};

struct vipid

{

    char id[20];

    charpassword[20];

};

void bug();

void add();

void llan();

void dfs();

void order();

void vip(int a);

void newvip();

void out();

void mmp();

int main()

{

    mmp();

}

//退票

void out()

{

    FILE*fp,*fp1;

    structair_ticket n;

    structair_ticket nn;

    int i,j,g=1;

    charl,m[20],ch;

    do

    {

       system("cls");

       printf("\n\t你想退哪一个班机(如果不知道可以先查询一下哟)\n请输入班号;");

       scanf("%s",m);

        g=1;

       if((fp1=fopen("bug.txt","w+"))==NULL||(fp=fopen("航班信息.txt","r+"))==NULL)

        {

           printf("\t请饶恕帅气的我无法打开此文件!");

           getch();

           exit(1);

        }

       rewind(fp);

       fread(&nn,sizeof(nn),1,fp);

        while(!(feof(fp)))

        {

            i=1;

           i=strcmp(m,nn.num);

           if(i!=0)

            {

               fwrite(&nn,sizeof(nn),1,fp1);

            }

           fread(&nn,sizeof(nn),1,fp);

        }

       fclose(fp1);

       rewind(fp);

       fread(&n,sizeof(n),1,fp);

       while(!(feof(fp)))

        {

            i=1;

            ch='0';

           l='0';

           i=strcmp(m,n.num);

           if(i==0)

            {

               printf("\n\n\t班号 : ");

               puts(n.num);

               printf("\n\t起始站: ");

               printf("%s",n.origin);

               printf("\n\t中转 : ");

               printf("%s",n.mid);

               printf("\n\t终点站 : ");

               printf("%s",n.terminus);

               printf("\n\t飞行时间(0号.h时.m分.d秒-xx.xx.xx.xx): ");

               printf("%s",n.time);

                printf("\n\t剩余人次 : ");

               printf("%d\n",n.people);

               printf("这是不是你想退的?(y/n)[ ]\b\b");

               do

               {

                   ch=getche();

               }

               while(ch!='y'&&ch!='n'&&ch!='Y'&&ch!='N');

               if(ch=='y'||ch=='Y')

               {

                   system("cls");

                   fp1=fopen("bug.txt","a+");

                   n.people++;

                   fclose(fp);

                   fp=fopen("航班信息.txt","w+");

                   fwrite(&n,sizeof(n),1,fp1);

                   rewind(fp1);

                   fread(&nn,sizeof(nn),1,fp1);

                   while (!(feof(fp1)))

                   {

                        fwrite(&nn,sizeof(nn),1,fp);

                       fread(&nn,sizeof(nn),1,fp1);

                   }

                   fclose(fp1);

                   fclose(fp);

                   printf("\n\退票成功!\n是否继续退票!(y/n)[ ]\b\b");

                    l=getche();

               }

               break;

            }

           fread(&n,sizeof(n),1,fp);

        }

        if(i!=0)

        {

           printf("\n龙龙没找到此班机你可以再找或退出(y/n)");

           ch=getche();

           fclose(fp);

        }

       if(l=='n')

           break;

    }

   while(l=='y'||l=='Y'||ch=='y'||ch=='Y');

   system("cls");

    mmp();

}

//首页

void mmp()

{

   system("cls");

   system("color 03");

    int i=7,j;

    char r,m,ch;

   puts("\n\n\n\t                        @##########&&&&&&&&&&&&&&&&###########@");

   puts("\t                        @####                            ####@");

   puts("\t                        @####       龙飞机订票系统        ####@");

   puts("\t                        @#### 请以输入序号的方式进行操作 ####@");

   puts("\t                        @####                            ####@");

   puts("\t                        @####                            ####@");

   puts("\t                         @#### 1.订票                    ####@");

   puts("\t                        @####  2.查询机票                 ####@");

   puts("\t                        @####  3.退票                    ####@");

   puts("\t                    @###@####  4.浏览航班信息             ####@###@");

   puts("\t                    @###@####  5.以管理员登陆             ####@###@");

   puts("\t                    @###@####  0.退出系统                ####@###@");

   puts("\t                    ***********************************************");

   puts("#%#¥%#%#¥%#¥%¥%#¥%¥¥%¥……%¥%¥%¥%……¥%¥……%¥%¥%¥%#%#¥%#%#¥%#¥%¥%#¥#%#¥%¥#¥");

   puts("\t                  ***************** ****************** *****************");

   printf("\t                    请做出你的答案:");

    do

    {

        ch=getche();

    }

   while(ch>'5'||ch<'0');

    switch(ch)

    {

    case '0':

        break;

    case '1':

        order();

        break;

    case '2':

        dfs();

        break;

    case '3':

        out();

        break;

    case '4':

        llan();

        break;

    case '5':

        vip(0);

        break;

    }

}

//管理员

void vip(int a)

{

    int i,j;

    charch='0',m;

   system("color fc");

    if(a==0)

    {

        FILE*fp;

        structvipid n;

        structvipid nn;

       system("cls");

       if((fp=fopen("vip.txt","a+"))==NULL)

        {

           printf("\请饶恕帅气的我无法帮你!");

           getch();

           exit(1);

        }

       printf("请输入管理员账号:");

       scanf("%s",n.id);

       printf("请输入管理员password:");

       scanf("%s",n.password);

       rewind(fp);

       while(!(feof(fp)))

        {

           fread(&nn,sizeof(nn),1,fp);

           i=strcmp(n.id,nn.id);

           if(i==0)

            {

               j=strcmp(n.password,nn.password);

               break;

            }

        }

        if(i!=0)

        {

           puts("没有此用户!\n 1.返回首页\n 2.从新输入");

            ch =getche();

           switch (ch)

            {

           case'1':

               mmp();

               break;

            case'2':

               vip(0);

               break;

            }

        }

        elseif(j!=0)

        {

           puts("密码错误!\n 1.返回首页\n 2.从新输入");

            ch =getche();

           switch (ch)

            {

           case'1':

               mmp();

               break;

           case'2':

               vip(0);

               break;

            }

        }

        else

        {

           system("cls");

           puts("登陆成功!");

           fclose(fp);

           system("cls");

           puts("            ***********严肃的管理员页面***********");

           puts("             ****                              ****");

           puts("             ****     1.录入新班机             ****");

           puts("             ****     2.注册新的管理员         ****");

           puts("             ****     3.返回龙龙订票系统页面   ****");

           puts("             ****     0.退出系统               ****");

           puts("             ****                              ****");

           puts("             ****                              ****");

           puts("            **************************************");

           ch=getche();

           switch (ch)

            {

            case'1':

               add();

               break;

            case'2':

               newvip();

               break;

            case'3':

               mmp();

               break;

            case'4':

               return ;

            }

        }

    }

    else

    {

       system("cls");

        system("color 50");

       puts("            ***********严肃的管理员页面***********");

       puts("             ****                              ****");

       puts("             ****     1.录入新班机             ****");

       puts("             ****     2.注册新的管理员         ****");

       puts("             ****     3.返回龙龙订票系统页面   ****");

       puts("             ****     0.退出系统               ****");

       puts("             ****                              ****");

       puts("             ****                              ****");

       puts("            **************************************");

       m=getche();

        switch(m)

        {

        case'1':

           add();

           break;

        case '2':

           newvip();

           break;

        case'3':

           mmp();

           break;

        case'4':

           return ;

        }

    }

}

//录入

void add()

{

    FILE *fp;

    int m;

    char ch;

    structair_ticket n;

    structair_ticket nn;

   if((fp=fopen("航班信息.txt","a+"))==NULL)

    {

       printf("\请饶恕帅气的我无法打开此文件!");

        getch();

        exit(1);

    }

    int l=0;

    do

    {

        do

        {

            l=0;

           system("CLS");

           system("color 52");

           printf("\n\n\t班号 : ");

           scanf("%s",n.num);

           printf("\t起始站: ");

           scanf("%s",n.origin);

           printf("\t中转 : ");

           scanf("%s",n.mid);

           printf("\t终点站 : ");

           scanf("%s",n.terminus);

           printf("\t飞行时间(0号.h时.m分.d秒-xx.xx.xx.xx): ");

           scanf("%s",n.time);

           printf("\t剩余人次 : ");

           scanf("%d",&n.people);

           rewind(fp);

           while(!(feof(fp)))

            {

               fread(&nn,sizeof(nn),1,fp);

               m=strcmp(n.num,nn.num);

               if(m==0)

               {

                   l=1;

                   printf("\n\t此班号已存在!");

                   printf("\t是否继续输入(Y/N) :[ ]\b\b");

                   ch=getche();

                   if(ch=='y'||ch=='Y')

                       break;

                   else

                   {

                       fclose(fp);

                       vip(1);

                   }

                }

            }

        }

       while(l);

       fwrite(&n,sizeof(n),1,fp);

        ch='0';

       printf("\t录入成功!\n是否继续输入(Y/N):[ ]\b\b");

       ch=getche();

    }

   while(ch=='y'||ch=='Y');

    fclose(fp);

    vip(1);

}

//浏览

void llan()

{

    structair_ticket n;

    int i=0;

    FILE *fp;

   if((fp=fopen("航班信息.txt","r+"))==NULL)

    {

       printf("\请饶恕帅气的我无法打开此文件!");

        getch();

        exit(1);

    }

    rewind(fp);

   system("CLS");

    while (1)

    {

       fread(&n,sizeof(n),1,fp);

        i++;

       if(feof(fp))break;

            else

        {

           printf("\n\n\t班号 : ");

           puts(n.num);

           printf("\n\t起始站: ");

           printf("%s",n.origin);

           printf("\n\t中转 : ");

           printf("%s",n.mid);

           printf("\n\t终点站 : ");

           printf("%s",n.terminus);

           printf("\n\t飞行时间(0号.h时.m分.d秒-xx.xx.xx.xx): ");

           printf("%s",n.time);

           printf("\n\t剩余人次 : ");

           printf("%d\n",n.people);

        }

    }

    puts("请按回车回到主菜单!");

    char ch;

    do

    {

       ch=getche();

    }

   while(ch!='\r');

    if(ch=='\r')

    {

       fclose(fp);

       system("cls");

        mmp();

    }

}

//订票

void order()

{

    FILE*fp,*fp1;

    structair_ticket n;

    structair_ticket nn;

    int i,j,g=1;

    charl,m[20],ch;

    do

    {

       system("cls");

       system("color 3A");

       printf("\n\t你想上哪一个班机(如果不知道可以先查询一下哟)\n请输入班号;");

       scanf("%s",m);

        g=1;

       if((fp1=fopen("bug.txt","w+"))==NULL||(fp=fopen("航班信息.txt","r+"))==NULL)

        {

           printf("\t请饶恕帅气的我无法打开此文件!");

           getch();

           exit(1);

        }

       rewind(fp);

       fread(&nn,sizeof(nn),1,fp);

        while(!(feof(fp)))

        {

            i=1;

           i=strcmp(m,nn.num);

           if(i!=0)

            {

fwrite(&nn,sizeof(nn),1,fp1);

            }

           fread(&nn,sizeof(nn),1,fp);

        }

       fclose(fp1);

       rewind(fp);

       fread(&n,sizeof(n),1,fp);

       while(!(feof(fp)))

        {

            i=1;

           ch='0';

           l='0';

           i=strcmp(m,n.num);

           if(i==0)

            {

               printf("\n\n\t班号 : ");

                puts(n.num);

               printf("\n\t起始站: ");

               printf("%s",n.origin);

               printf("\n\t中转 : ");

               printf("%s",n.mid);

               printf("\n\t终点站 : ");

               printf("%s",n.terminus);

                printf("\n\t飞行时间(0号.h时.m分.d秒-xx.xx.xx.xx) : ");

               printf("%s",n.time);

               printf("\n\t剩余人次 : ");

               printf("%d\n",n.people);

               printf("这是不是你想要的?(y/n)[ ]\b\b");

               do

                {

                   ch=getche();

               }

               while(ch!='y'&&ch!='n'&&ch!='Y'&&ch!='N');

               if(ch=='y'||ch=='Y')

               {

                   system("cls");

                   fp1=fopen("bug.txt","a+");

                   if(n.people>0)

                       n.people--;

                   else

                   {

                       puts("本班次已没有位置=-=!");

                       printf("是否继续订票?(y/n)[ ]\b\b");

                       g=0;

                        fclose(fp);

                       fclose(fp1);

                       do

                       {

                            ch=getche();

                       }

                       while(ch!='y'&&ch!='n'&&ch!='Y'&&ch!='N');

                        if(ch=='y'||ch=='Y')

                            order();

                       break;

                   }

                   fclose(fp);

                   fp=fopen("航班信息.txt","w+");

                   fwrite(&n,sizeof(n),1,fp1);

                   rewind(fp1);

                   fread(&nn,sizeof(nn),1,fp1);

                   while (!(feof(fp1)))

                   {

                       fwrite(&nn,sizeof(nn),1,fp);

                       fread(&nn,sizeof(nn),1,fp1);

                   }

                   fclose(fp1);

                   fclose(fp);

                   printf("\n\t订票成功!\n是否继续订票!(y/n)[ ]\b\b");

                   l=getche();

               }

               break;

            }

           fread(&n,sizeof(n),1,fp);

        }

        if(i!=0)

        {

           printf("\n龙龙没找到此班机你可以再找或退出(y/n)");

           ch=getche();

           fclose(fp);

        }

       if(l=='n')

           break;

    }

   while(l=='y'||l=='Y'||ch=='y'||ch=='Y');

   system("cls");

    mmp();

}

//管理员录入

void newvip()

{

    FILE *fp;

    int m;

    char ch;

    struct vipidn;

    struct vipidnn;

   if((fp=fopen("vip.txt","a+"))==NULL)

    {

       printf("\请饶恕帅气的我无法打开此文件!");

        getch();

        exit(1);

    }

    int l=0;

    do

    {

        do

        {

            l=0;

           system("CLS");

           printf("\n\n\t账号 : ");

           scanf("%s",n.id);

           printf("\tpassword: ");

           scanf("%s",n.password);

           rewind(fp);

           while(!(feof(fp)))

            {

               fread(&nn,sizeof(nn),1,fp);

               m=strcmp(n.id,nn.id);

               if(m==0)

               {

                   l=1;

                   printf("\n\t此账号已存在!");

                   printf("\t是否继续输入(Y/N) :[ ]\b\b");

                   ch=getche();

                   if(ch=='y'||ch=='Y')

                       break;

                   else

                   {

                       fclose(fp);

                        vip(1);

                   }

               }

            }

        }

       while(l);

       fwrite(&n,sizeof(n),1,fp);

        ch='0';

       printf("\t恭喜你录入成功/n/t是否继续输入(Y/N) :[ ]\b\b");

       ch=getche();

    }

   while(ch=='y'||ch=='Y');

    fclose(fp);

    vip(1);

}

//查询

void dfs()

{

    int l,m;

    char r,ch;

    structair_ticket n;

    structair_ticket nn;

    FILE *fp;

   if((fp=fopen("航班信息.txt","r+"))==NULL)

    {

       printf("\t请饶恕帅气的我无法打开此文件!");

        getch();

        exit(1);

    }

    do

    {

        r='f';

        l=1;

        m=1;

       system("cls");

       rewind(fp);

       printf("\n\t你想要的,龙龙航班系统会满足你的!\n\t请说吧,你想要的班号或你要去的地方!: ");

       scanf("%s",nn.num);

       system("cls");

       fread(&n,sizeof(n),1,fp);

       while(!(feof(fp)))

        {

           l=strcmp(nn.num,n.num);

           m=strcmp(nn.num,n.terminus);

           if(l==0)

            {

               r='q';

               printf("这是龙龙按班号,给你的回答你想要的班机\n");

               printf("\n\n\t班号 : ");

               puts(n.num);

               printf("\n\t起始站: ");

               printf("%s",n.origin);

               printf("\n\t中转 : ");

               printf("%s",n.mid);

               printf("\n\t终点站 : ");

               printf("%s",n.terminus);

               printf("\n\t飞行时间(0号.h时.m分.d秒-xx.xx.xx.xx): ");

               printf("%s",n.time);

               printf("\n\t剩余人次 : ");

               printf("%d\n",n.people);

            }

            elseif(m==0)

            {

               r='q';

               printf("这是龙龙按你的目的地,给你的回答你想要的班机\n");

               printf("\n\n\t班号 : ");

               puts(n.num);

               printf("\n\t起始站: ");

               printf("%s",n.origin);

               printf("\n\t中转 : ");

               printf("%s",n.mid);

               printf("\n\t终点站 : ");

               printf("%s",n.terminus);

               printf("\n\t飞行时间(0号.h时.m分.d秒-xx.xx.xx.xx): ");

               printf("%s",n.time);

               printf("\n\t剩余人次 : ");

               printf("%d\n",n.people);

            }

           fread(&n,sizeof(n),1,fp);

        }

       if(r!='q')

        {

           printf("龙龙系统没要你想要的!\n");

        }

       printf("是否要继续查询(y/n) [ ]\b\b");

        do

        {

           ch=getche();

        }

       while(ch!='y'&&ch!='n'&&ch!='Y'&&ch!='N');

    }

   while(ch=='y'||ch=='Y');

    mmp();

    fclose(fp);

}

 

总结

在机票订购中能修改人数来保证订票成功不仅是页面有点小创新还加了个管理员系统登录的独特性,只有登录后才能录入信息,更有严谨性,和人性化的创新使页面更完善;

 

 

 

附录B 用户使用说明书

注释:请先把vip.txt文件放入根目录在进行登录管理员系统进行录入信息才能用以下功能;

                                @##########&&&&&&&&&&&&&&&&###@

                                 @####                             ####@

                                 @####       龙飞机订票系统        ####@

                                 @#### 请以输入序号的方式进行操作  ####@

                                 @####                             ####@

                                 @####                             ####@

                                 @####  1.订票                     ####@

                                 @####  2.查询机票                 ####@

                                 @####  3.退票                     ####@

                             @###@####  4.浏览航班信息             ####@###@

                             @###@####  5.以管理员登陆             ####@###@

                             @###@####  0.退出系统                 ####@###@

                            ***********************************************

#%#¥%#%#¥%#¥%¥%#¥%¥¥%¥……%¥%¥%¥%……¥%¥……%¥%¥%¥%#%#¥%#%#¥%#¥%¥%#¥#%#¥%¥#¥

                           *********************************** *****************

                             请做出你的答案:

用键盘输入以数字或y/n两字母操作

输入时以回车为结束

Y表示确定n表示否

1234560是看显示屏是给与操作


猜你喜欢

转载自blog.csdn.net/clonh/article/details/80695329
今日推荐