飞机订票系统的课程设计

1.课程论文题目

飞机订票管理系统

内容:

要求:

输入订票信息,提供订票、退票、修改和显示等功能。

系统功能模块如下:

(1)

建立飞机订票信息库;

(2)

菜单实现以下功能:

①定票功能;

②已定票信息查询功能;

③退票功能;

④显示功能。

⑤修改订票信息。


2.程序设计思路

(1)需求分析

系统要以菜单方式工作,因而根据题目要求,提供菜单实现功能选择,飞机订票信息采用文件保存,所以应提供文件的输入、输出等操作。在程序中需要浏览飞机订票的信息,应提供显示、查找、等操作;要实现订票的查询,就要提供查找功能(按订票编号查询和按始发站、终点站两种查询方式);要求实现飞机订票信息的删除、修改,则要提供文件记录的删除、修改功能。

(2)总体设计

有上面的需求分析,可以将这个系统的设计分为以下模块:输入航班信息,浏览航班信息,修改航班信息,查找航班信息,删除航班信息,订票信息,退票信息。

(3)数据信息

建立飞机订票的结构体,结构体成员包括:航班号,起始站,终点站,时间,机票数,机票单价。

int num;

 char start[20];

 char over[20];

 char time[10];

 int count;

 char prince[20];

[if !supportLists](4) [endif]算法设计

[if !supportLists]1. [endif]输入模块:int input()来实现

[if !supportLists]2. [endif]打印模块:int print()来实现

[if !supportLists]3. [endif]保存模块:int save()来实现

[if !supportLists]4. [endif]读取模块:int read()来实现    

[if !supportLists]5. [endif]查询模块:int search()来实现 

[if !supportLists]6. [endif]删除模块:int shanchu()来实现 

[if !supportLists]7. [endif]订票模块:int dingpiao()来实现

[if !supportLists]8. [endif]退票模块:int tuipiao()来实现

[if !supportLists]9. [endif]修改模块:int xiugai()来实现



程序代码:

#include  

#include   //包含字符串处理函数的头文件

#include     

#define N 10000  

struct air        

{

 int num;

 char start[20];

 char over[20];

 char time[10];

 int count;

 char prince[20];

}s[N];

int i;

int m=0;

#define PRINT "%d %12s %12s %12s %12d %12s\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].prince    

int input();    

int print();    

int save();     

int read();     

int search();   

int shanchu();  

int dingpiao();

int tuipiao();  

int xiugai();   

int main()

{


 int  j;



printf("                    ★---您好,欢迎进入飞机订票管理系统!---★\n");

    printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");



    do

 {

printf("           -------- ☆        1.输入航班信息            ☆-------- \n\n"

"           -------- ☆        2.浏览航班信息            ☆-------- \n\n"

"           -------- ☆        3.修改航班信息            ☆-------- \n\n"

"           -------- ☆        4.查找航班信息            ☆-------- \n\n"

"           -------- ☆        5.删除航班信息            ☆-------- \n\n"

"           -------- ☆        6.订票信息                ☆-------- \n\n"

"           -------- ☆        7.退票信息                ☆-------- \n\n"

"           -------- ☆        0.退出                    ☆-------- \n\n");

     printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");



printf("请在0-7中选择以回车键结束:\n\n");

  scanf("%d",&j);

  switch(j)

  {

  case 1: input();

    break;

  case 2:print();

    break;

  case 3:xiugai();

    break;

  case 4:search();

    break;

  case 5:shanchu();

    break;

  case 6:dingpiao();

    break;

  case 7:tuipiao();

    break;

  case 0:;

   break;

  }

 }

while(j!=0); //当j不等于0时继续执行循环体   

printf("谢谢使用,再见!\n");

}



int input()

{  

int y;

 {

printf("请依次输入航班信息(机票数位0结束输入):\n\n"

"完成输入信息请键入w以回车键结束\n");      

  printf("--------------------------------------------------------------------------\n");

   for(i=0;i

   {

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

      scanf("%d",&s[i].num);

printf("请输入起始站:\n\n");

      scanf("%s",&s[i].start);

printf("请输入终点站:\n\n");

      scanf("%s",&s[i].over);

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

      scanf("%s",&s[i].time);

printf("请输入机票数(机票数为0结束输入):\n\n",m);

      scanf("%d",&s[i].count);

printf("请输入机票单价:\n\n");

     scanf("%s",&s[i].prince);

  m++;


printf("第%d个信息已经输完是否继续?按任意数字键继续,按 0结束",m);

  scanf("%d",&y);

  if(y==0)

    {

    save();

    print();

       break;

    }  

  }

}


}

int save()

{   

FILE *fp,*fp1;//定义文件指针/FILE *fp; 变量类型声明。声明 fp 是 FILE型指针,用于指向 FILE类型 (文件结构)。

if((fp=fopen("yhp.chat","wb"))==NULL)//打开文件并判断是否出错  

 {

printf("创建文件失败!\n\n");

  getchar();

  return 0;

 }

if((fp1=fopen("yhpzuishuai.chat","wb"))==NULL)//打开文件并判断是否出错  

 {

printf("创建文件失败!\n\n");

  getchar();

  return 0;

 }


 for(i=0;i

if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错

printf("向文件输入数据失败!\n\n");

 fprintf(fp1,"%d",m);

 fclose(fp);

fclose(fp1);//关闭文件

}



int read()

{

 FILE *fp,*fp1;

 if((fp=fopen("yhp.chat","rb"))==NULL)

 {

printf("出错,请检查文件是否存在,按任意键返回住菜单");

  getchar();

 }

 if((fp1=fopen("yhpzuishuai.chat","rb"))==NULL)

 {

printf("创建文件失败!\n\n");

  getchar();

  return 0;

 }

 fscanf(fp1,"%d",&m);

 fclose(fp1);

 for(i=0;i

 {

fread(&s[i],sizeof(air),1,fp);//从文件中读取信息

 }

 fclose(fp);

}

int print()//打印

{

 char w[10];

read();//调用读取文件函数

printf("航班号       起始站      终点站    时间       机票数      单价\n");

 for(i=0;i

 {

printf(PRINT);//将需要的内容打印出来

 }

printf("请按w以回车键结束返回上层菜单:\n\n");

 scanf("%s",w);

}


int search()

{

 char name1[20];

 char name2[20];

 char ii[10];

 int n,no;

do

{

printf("请选择查找方式:\n\n");

printf("1.按航班号查找\n\n"

"2.按终点站查找\n\n"

"3.按航线查找\n\n"

"0.返回\n\n");

printf("请在0-3中选择:\n\n"

"按其他键以回车键结束返回主菜单:\n\n");

scanf("%d",&n);//读取查找方式

 if(n==0)

  break;

 switch(n)

 {

 case 1:

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

  scanf("%d",&no);

  break;

 case 2:

printf("请输入终点站名称:\n");

  scanf("%s",name2);

  break;

 case 3:

printf("请输入起始站名称:\n");

  scanf("%s",name1);

printf("请输入终点站名称:\n");

  scanf("%s",name2);

  break;

 }

 read();

 for(i=0;i

{    

if(strcmp(s[i].start,name1)==0||strcmp(s[i].over,name2)==0)//按终点站起始站判断

//strcmp比较两个字符串

  {

printf("\n查找航班信息成功!\n");

printf("航班号       起始站      终点站    时间       机票数      单价\n");

   printf(PRINT);

   break;

  }

if(s[i].num==no)//按航班号判断

  {  

printf("\n查找航班信息成功!\n");

printf("航班号       起始站      终点站    时间       机票数      单价\n");

   printf(PRINT);

   break;

  }

}

no=0;//将航班号赋值为0

printf("没有您需要的信息或查找完毕:\n\n"

"是否继续查找?请键入yes或no以回车键结束\n");

  scanf("%s",ii);

}

while(strcmp(ii,"yes")==0);

}



int shanchu()//删除模块

{

 char name1[20];

 char name2[20];

 char ii[10];


 int no,n;  

 {

  do

   {

printf("请选择删除方式以回车键结束:\n\n");

printf("1.按航班号删除\n\n"

"2.按航线删除\n\n"

"0.返回\n\n");

printf("请在0-2中选择以回车键结束:\n");

    scanf("%d",&n);

    if(n==0)

     break;    

    switch(n)

    {

    case 1:

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

     scanf("%d",&no);

     read();

     break;

    case 2:

printf("请输入起始站 名称:\n");

     scanf("%s",name1);

printf("请输入终点站名称:\n");

     scanf("%s",name2);

     read();

     break;

    }

    for(i=0;i

    {

     if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)

     {       

      s[i]=s[m-1];

      m--;

     }


    }

printf("查找完毕或没有这个信息\n\n");

printf("是否继续删除\n");     

printf("请键入yes或no以回车键结束\n");

scanf("%s",ii);       //读取是否继续信息

    save();

if(!strcmp(ii,"yes")) //判断是否继续删除    

printf("请按任意键以回车键结束返回上层菜单:\n");

    break;

   }while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0);  

 }


}



int dingpiao()

{

 int n;

 char a[10];

 do

 {

  search();

printf("请输入您要订的机票数以回车键结束:\n");

  scanf("%d",&n);

  if(n<0)

  {

printf("请输入有效的机票数!\n");

   break;

  }

   if(s[i].count!=0&&s[i].count>=n)

  {

   s[i].count=s[i].count-n;

   save();

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

   break;

  }

if(s[i].count

  {

printf("请输入有效的机票数:\n");

      break;

  }

printf("是否继续? 请输入yes或no以回车键结束:\n");//判断是否继续订票

  scanf("%s",a);

 }

 while(!strcmp(a,"yes"));

}



int tuipiao()

{

 int n;

 char a[10];

 do

 {

  search();

printf("请输入您要退的机票数目:\n");

scanf("%d",&n);//所退票数

if(n<0) //判断票数是否有效

printf("请输入有效的机票数!\n");

  s[i].count=s[i].count+n;

  save();

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

printf("是否继续? 请键入yes或no以回车键结束:\n\n");//是否继续退票

  scanf("%s",a);

 }while(!strcmp(a,"yes"));



 getchar();

}

int xiugai()   

{

struct xiu    //定义结构体

 {

  int no;

  char name1[20];

  char name2[20];

  char time[20];

  int count;

  char prince[20];

 }x[0];


 char j[10];

 int n;

 {

  read();

  do

  {

printf( "请选择修改方式:\n\n"

"*1,按航班号修改:\n\n"

"*2,按航线修改: \n\n");

printf("请在1---2中修改以回车键结束:\n\n");

   scanf("%d",&n);

   switch(n)

   {

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

    scanf("%d",&x[0].no);

    break;

case 2:printf("请输入起始站:\n");

    scanf("%s",x[0].name1);

printf("请输入终点站:\n");

    scanf("%s",x[0].name2);

    break;

   }

   for(i=0;i

   {    

    if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)

    {

printf("航班号       起始站      终点站    时间       机票数      单价\n");

     printf(PRINT);

     break;

    }

       if(s[i].num==x[0].no)

    {  

printf("航班号       起始站      终点站    时间       机票数      单价\n");

     printf(PRINT);

     break;

    }

   }

x[0].no=0;            //将结构体中的号为零

printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数、单价:\n");

   scanf("%d %s %s %s %d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count,&x[0].prince);

      s[i].num=x[0].no;

      strcpy(s[i].start,x[0].name1);

            strcpy(s[i].over,x[0].name2);

            strcpy(s[i].time,x[0].time);

//strcpy字符串复制

      s[i].count=x[0].count;

      save();

printf("是否继续?请键入yes或no以回车键结束:\n\n");

      scanf("%s",j);

  }while(strcmp(j,"yes")==0);

 }

}

你可能感兴趣的:(飞机订票系统的课程设计)