视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
C语言课程设计报告(附程序代码--飞机订票系统)
2025-09-26 16:49:28 责编:小OO
文档
xxxx大学xx学院

C

题目:飞机订票系统              

      专业: 计算机科学与技术             

      班级:                     

      姓名:                

完成时间:          

目录

第一部分:源程序(3-12页)

第二部分:函数流程图(13-25页)

(1)menu函数流程图(第13页)

(2)enter函数流程图(第14页)

(3)Order函数流程图(第15页)

(4)input函数流程图(第16页)

(5)browse函数流程图(第17页)

(6)Search_time函数流程图(第18页)

(7)Search_end函数流程图(第19页)

(8)search函数流程图(第20页)

(9)void menu1函数流程图(第21页)

(10)book函数流程图(第22页)

(11)back函数流程图(第23页)

(12)save函数流程图(第24页)

(13)load 函数流程图(第25页)  

第三部分:心得体会(第26-27页)

第一部分:源程序

#include

#include

#include

#define N 1000

typedef struct plane

{

    char ID[10];  /*航班代号*/

    char BePlace[10];/*飞机起飞地点*/

    char EnPlace[10];/*飞机降落终点*/

    char data[15];/*飞机起飞时间*/

    int max;/*飞机最大乘客人数*/

    int price;/*飞机票价*/

    int num;/*飞机已售票数*/

}PLANE;

PLANE ti[N];

int n;/*当前的航班数目*/

void menu();

void menu1();

void input(int i)

{

    printf("请输入航班代号:\n");

    

    scanf("%s",ti[i].ID);

    printf("请输入起飞地点:\n");

    

    scanf("%s",ti[i].BePlace);

    printf("请输入降落地点:\n");

    

    scanf("%s",ti[i].EnPlace);

    printf("请输入起飞时间:\n");

    

    scanf("%s",ti[i].data);

    printf("请输入航班的最大载客人数:\n");

    scanf("%d",&ti[i].max);

    printf("请输入航班的票价:\n");

    scanf("%d",&ti[i].price);

    ti[i].num=0;

}

void enter()

{

    int i;

    system( "cls" ); 

    printf("请输入航班的数目(0-%d)?:",N);

    scanf("%d",&n);                  /*要输入的记录个数*/

    printf("\\n请输入数据\n\\n");

    for(i=0;i    {

         printf("\\n请输入第 %d 航班记录.\n",i+1);

         input(i);                        /*调用输入函数*/

     }

    getchar();  

    menu();

}

void printf_one(int i)                              /*显示一个记录的函数*/

{

    printf("%11s  %6s  %10s   %6s   %6d  %6d  %6d",ti[i].ID,ti[i].BePlace,ti[i].EnPlace,ti[i].data,ti[i].price,ti[i].max,ti[i].num);

}

void browse()

{

    int i;

    system( "cls" ); 

    puts("\\n--------------------------------------------------------------------");

    printf("\\n\航班代号 起飞地点 降落地点 起飞时间   票价  最大乘客 已售票数\n");

    for(i=0;i    {

        printf_one(i);

        printf("\\n");

    }

    getchar();

    getchar();    

    menu();

}

void order()                           /*排序模块(按平均成绩)*/

{

    int i,j;

    struct plane s;

    system( "cls" ); 

    for(i=0;i    {

        

        for(j=i+1;j     if(strcmp(ti[i].data,ti[j].data)>0)

        {

        s=ti[i];

        ti[i]=ti[j];

        ti[j]=s;}

     }

    browse();

}

void search_time()

{

    int i,m=0;

    struct plane s;

    system( "cls" ); 

    printf("\\n\\nEnter the time:");

    scanf("%s",s.data);                /*输入出发的时间*/

    puts("\\n--------------------------------------------------------------------");

    printf("\\n\航班代号 起飞地点 降落地点 起飞时间   票价  最大乘客 已售票数\n");

    for(i=0;i    {

        if(strcmp(s.data,ti[i].data)==0)

        {

            m++;

               if((m!=0)&&(m%10==0))               /*目的是分屏显示*/

               {

                    printf("\\n\\nPress any key to contiune  . . .");

                    getchar();

                    puts("\\n\\n");

               }

                printf_one(i);  

                printf("\\n");

                /*调用显示一个记录的函数*/

        }

    }

    puts("\\n--------------------------------------------------------------------");

    getchar();                          /*按任意健*/

    getchar();    

    menu1();

}

void serch_end()

{

    int i,m=0;

    struct plane s;

    system( "cls" ); 

    printf("\\n\\nEnter the end Place:");

    scanf("%s",s.EnPlace);                /*输入要到达的地方*/

    puts("\\n--------------------------------------------------------------------");

    printf("\\n\航班代号 起飞地点 降落地点 起飞时间   票价  最大乘客 已售票数\n");

    for(i=0;i    {

        if(strcmp(ti[i].EnPlace,s.EnPlace)==0)

        {

            m++;

               if((m!=0)&&(m%10==0))               /*目的是分屏显示*/

               {

                    printf("\\n\\nPress any key to contiune  . . .");

                    getchar();

                    puts("\\n\\n");

               }

                printf_one(i);  

                printf("\\n");

                /*调用显示一个记录的函数*/

        }

    }

    puts("\\n--------------------------------------------------------------------");

    getchar();                          /*按任意健*/

    getchar(); 

    menu1();

}

void menu1()

{

    int n,w1;

    do

    {

        system( "cls" );                   /*清屏*/

        puts("\\\\  飞机售票操作!\\n\\n");

        puts("\\*********************MENU*********************\\n\\n");

        puts("\\\\1.按照时间排序");

        puts("\\\\2.按照时间查找航班");

        puts("\\\\3.按照地点查找航班");

        puts("\\\\4.返回主菜单");

        puts("\\n\\n\\**********************************************\\n");

        printf("Choice your number(1-4): [ ]\\b\\b");

        scanf("%d",&n);

if(n<1||n>4) /*对选择的数字作判断*/

       {

          w1=1;

          printf("your choice is not between 1 and 4,Please input again:");

          getchar();

          getchar();

        }

       else  w1=0;

    } while(w1==1);

 /*选择功能*/

 switch(n)

 {

     case 1:order();break;      

     case 2:search_time();break;   

     case 3:serch_end();break;     

     case 4:menu();break;     

  }

}

int search()                          /*查找模块*/

{

    int i,k;

    struct plane s;

    k=-1;

    system( "cls" ); 

    printf("\\n\\n请输入要订票的起飞地点:");

    scanf("%s",s.BePlace);                /*输入要到达的地方*/

    printf("\\n\\n请输入要订票的降落地点:");

    scanf("%s",s.EnPlace); 

    printf("\\n\\n请输入要订票的起飞时间:");

    scanf("%s",s.data);                /*输入出发的时间*/

    for(i=0;i    {

        if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0)

        {

            k=i;                      /*找到要修改的记录*/

            printf_one(k);

            break;                  /*调用显示一个记录的函数*/

        }

    }

    if(k==-1)

    {

         printf("\\n\\nNO exist!");

         return -1;

    }

    else

    return k;

}

void book()

{

    int i;

    system( "cls" ); 

    printf("欢迎进入售票窗口!\\n");

    i=search();

    if(i!=-1)

    {

     if(ti[i].num>=ti[i].max)

        {

        printf("\\n该趟航班票已售完!");

        }

        else

        {

            ti[i].num++;

            printf("\\n订票成功!\\n");

        }

    }

    else

    printf("该航班不存在!\\n");

    getchar(); 

    getchar();                         /*按任意健*/

    menu();

}

void back()

{

    int i,k=-1;

    struct plane s;

    system( "cls" ); 

    printf("欢迎进入退票窗口!\\n");

    printf("\\n\\n输入航班代号:");

    scanf("%s",s.ID);                /*输入要到达的地方*/

    

    for(i=0;i    {

        if(strcmp(s.ID,ti[i].ID)==0)

        {

            k=i;                      /*找到要修改的记录*/

            printf_one(k);

            break;                  /*调用显示一个记录的函数*/

        }

    }

    if(k==-1)

    {

         printf("\\n\\nNO exist!");

    }

    else

    {

       ti[i].num--;

       printf("\\n退票成功!\\n");

    }

    getchar();                          /*按任意健*/

    getchar();                          /*按任意健*/

    menu();

}

void save()

{

    int w=1;

    FILE *fp;

    int i;

    system( "cls" ); 

    if((fp=fopen("\\\icket.txt以输出打开方式,在此前的记录被覆盖*/

    {

        printf("\\nCannot open file\\n");

        return ;

    }

for(i=0;i    if(fwrite(&ti[i],sizeof(struct plane),1,fp)!=1)

    {       

        printf("file write error\\n");

        w=0;

    }

    if(w==1)

    {

       printf("file save ok!\\n");

    }

    fclose(fp);

    getchar();

    getchar();    

    menu();

}

void load()

{

    FILE*fp;

    

    int i,w;

    w=1;

    

    system( "cls" ); 

    if((fp=fopen("\\\icket.txt

    {

        printf("\\nCannotopen file\\n");

        w=0;

        return ;

    }

    n=0;

    for(i=0;!feof(fp);i++)

    {

        fread(&ti[i],sizeof( struct plane),1,fp);

        n++;

    }

    n=n-1;

    fclose(fp);

    if(w==1)

        printf("Load file ok!");

    getchar();

    getchar();    

    menu();

}

void menu()

{

    int n,w1;

    do

    {

        system( "cls" ); /*清屏*/                  /*清屏*/

        puts("\\\\  飞机售票管理系统!\\n\\n");

        puts("\\*********************MENU*********************\\n\\n");

        puts("\\\\1.输入新航班");

        puts("\\\\2.浏览 ");

        puts("\\\\3.航班操作");

        puts("\\\\4.订票");

        puts("\\\\5.退票");

        puts("\\\\6.保存");

        puts("\\\\7.载入");

        puts("\\\\8.退出");

        puts("\\n\\n\\**********************************************\\n");

        printf("Choice your number(1-8): [ ]\\b\\b");

        scanf("%d",&n);

if(n<1||n>8) /*对选择的数字作判断*/

       {

          w1=1;

          printf("your choice is not between 1 and 8,Please input enter to choice again:");

          getchar(); 

          getchar();

        }

       else  w1=0;

    } while(w1==1);

 /*选择功能*/

 switch(n)

 {

     case 1:enter();break;      /*输入模块*/

     case 2:browse();break;    /*浏览模块*/

     case 3:menu1();break;     /*查找模块*/

     case 4:book();break;     /*订票模块*/

     case 5:back();break;     /*退票模块*/

     case 6:save();break;     /*保存模块*/

     case 7:load();break;     /*加载模块*/

     case 8:exit(0);

  }

}

void main()

{

   menu();

}

第二部分:函数流程图

    结束

(1)menu()函数

N    Y

Y    Y

退出

n=8

N    Y

w1=1

w1=0

输入新航班

浏览

航班操作

订票

退票

保存

载入

清屏(cls)

int n,w1

N    Y

n=3

n=7

n=5

n=6

n=4

n=2

n=1

输出n(1-8)

N    Y

Y    Y

While(w==1)

Y    Y

Y    Y

Y    Y

Y    Y

Y    Y

Y    Y

Y    Y

N    Y

N    Y

N    Y

N    Y

N    Y

N    Y

Y    Y

if n<1||n>8

输出n

输出目录

开始

(2)enterY

i开始

函数

int i

清屏(cls)

请输入航班的数目n

请输入数据m

i=0

N

请输入第n次航班记录

调用input()函数

i++

返回menu()

结束

开始

                                      (3)Order函数

int i,j

清屏(cls)

i=0

N    Y

i调用browse()

Y    Y

j=i+1

结束

N    Y

ji++

Y    Y

strcmp(ti[i].data,ti[j].data)>0

N    Y

Y    Y

s=ti[i];

ti[i]=ti[j] 

ti[j]=s

j++

开始

返回menu()

结束

请输入航班的票价

请输入航班的最大载客人数

请输入起飞时间

请输入降落地点

请输入起飞地点

请输入航班代号

(4)input函数

                               (5)browse函数   

开始

int i

清屏(cls)

i=0

i++

Y

N

i调用printf_one(i)

返回menu()

输出

结束

int i,m

开始

                           Y

             (6)Search_timeY

函数   

清屏(cls)

输入时间

i=0

返回menu1()

N

iY

N

S==ti[i]

i++

Y

结束

m++

(m!=0)&&(m%10==0)

按任意键继续进行

回车换行

调用函数printf_one()

int i,m

开始

                                  Y

       (7) Search_end函数  

清屏(cls)

输入要到达的地方

i=0

返回menu ()

iY

N

S==ti[i]

  

i++

结束

 

Y

m++

(m!=0)&&(m%10==0)

按任意键继续进行

回车换行

调用函数printf_one(i)

开始

                                 (8)search函数         

int i,k

k=-1

i输入起飞,降落地点和时间

清屏(cls)

i=0

Y

k==-1

N

i++

Y

Y

输出“NO exist!”

strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0

N

返回search()=-1

返回search()=k

跳出(break)

调用printf_one(k)

k=i

结束

Y

                         (9)void menu1函数  

    结束

menu()

serch_end()

search_time()

order()

w1=0

w1=1

清屏(cls)

int n,w1

N    Y

N    Y

N    Y

Y    Y

Y    Y

Y    Y

Y    Y

n=4

n=3

n=2

n=1

输出n

N    Y

Y    Y

while(w1==1)

N    Y

Y    Y

输出n(1-4)

输出目录2

if n<1||n>4

开始

(10)book函数 

开始

返回menu()

i=search()

清屏(cls)

int i

N

Y

N

Y

结束

ti[i].num>=ti[i].max

i!=-1

输出“欢迎进入售票窗口”

ti[i].num++

输出“该航班不存在!”

输出“该趟航班票已售完”

输出

“订票成功”

开始

                                    (11)back函数   

int i,k=-1

输出

“NOexist!”

输出

“退票成功!”

清屏(cls)

ti[i].num--

结束

menu()

k=i

i=0

N

Y

N

Y

N

Y

strcmp(s.ID,ti[i].ID)==0

输入

“输入航班代号”

输入

“欢迎进入退票窗口”

k==-1

ii++

调用printf_one(k)

开始

                            (12)save函数 

结束

int w=1, FILE*fp,i

输出“Cannot open file”

清屏(cls)

返回menu()

(fp=fopen("\\\icket.txt

Y

N

输出“file write error”

输出“file save ok!”

N

Y

Y

N

调用fclose(fp)

Y

w==1

N

i++

w=0

fwrite(&ti[i],sizeof(struct plane),1,fp)!=1plane),1,fp)!=1

ii=0

loadn++

开始

函数

                                       

  (13)

FILE*fp int i,w=1

i++

fread(&ti[i],sizeof( struct plane),1,fp)

Y

N

!feof(fp)

清屏(cls)

N

n=n-1

fclose(fp)

Y

w==1

输出“Load file ok!”

输出“Cannotopen file”

N

i=0

n=0

Y

结束

返回

w=0

(fp=fopen("\\\icket.txt

(fp=fopen("\\\icket.txt

FILE*fp  int i,w

返回menu()

第三部分:心得体会

    通过对C语言课程设计的学习,自己有很大的收获,将<>应用得到了实践,将所学的各种语句紧密的联系起来,得到了融汇和贯通,使我对C语言有了更深一步的学习和认识。

    C语言课程设计更能明显的体现出我们对C语言学习掌握的熟练程度。因为我们只有在读懂程序的情况下才能更好的做出流程图。经过一个多星期的上机实践学习,我觉得要想学好它则重在实践,要通过不断地上机操作才能更好的掌握理解。在学习的同时,也发现了自己学习的许多不足之处,比如,对读程序还不够熟练,对有些语句还没有掌握,再者,自己在指法上还不行,打字过慢而直接影响阅读速度,特别是在运行程序时所出现的错误很难顺利的去找出来并加以纠正,等等。这些通过学习也有所改进。

    通过实践的学习,我认识到学好计算机要重视实践操作,不仅是学习C语言,还是其他语言,以及其他的计算机方面的知识都要重在实践。所以以后在学习过程中,我会更加注重实践操作,以更好的学习好专业课。

通过对《飞机订票系统》的学习设计,全面系统的理解了编译原理程序构造的一般原理和基本实现方法,把死板的课本知识变得生动有趣,激发了我们学习的积极性。经过自己设计的流程图将知识表示出来,再加上老师精心的讲解和辅导,加深了我们对理论知识的理解。课程设计中程序比较复杂,在调试时必须仔细认真,这是最深的感受!对我们更是一种锻炼!

课程设计的学习,在找出各自不懂和不足积累经验的同时,为我们以后的学习提出了更明确目的和要求:不仅要读懂程序,而且更重要的是能会熟练地编写程序进而去设计程序。

                    下载本文

显示全文
专题