• C语言程序设计--火车订票系统


    任务要求:

    创建一个火车票管理系统,功能包括:

    (1)录入班次信息(信息用文件保存),可不定时地增加班次数据
    (2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班         次的发车时间,则显示“此班已发出”的提示信息)。
    (3)查询路线(起点、终点):可按班次号查询 ,可按终点站查询

    (4)增加及修改班次和删除班次信息
    (5)售票和退票功能

    系统设计:

     

    一.车票管理系统的功能为:1.录入班次2. 显示所有班次3.查询班次4.增加班次   5.售票6.退票7.修改班次8.删除班次9.退出

    车票管理系统软件的功能模块有:

    (1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter键进入该功能。

    (2)接受用户输入的功能项,按enter键结束输入并将进入该系统,其需要的结果显示出来,方便用户查看。

    (3)完成每次功能可保存用户的修改的信息,及时更新文件信息。下次查询时内容为最新信息。实时的信息更新对比等。

    一个名TICKET的结构体进行定义,包括num[10] hour[3]; min[3] from[10]; to[10]; hours max; now;等结构体成员。

    然后对调用函数进行定义。int system_time()系统时间,void NewMessage()             新纪录录入函数,void ShowTable1() void ShowTable2(int i) 线框调用1和2不用每次输,void Display()显示所有函数,void add()增加记录,void save()          保存函数,void save()保存函数,void load() 按班次查询函数,void search()       查询函数,void change()修改函数,void quit()退出函数,void Ticketorder()        售票函数,void Ticketdelete()删除函数,int menu_select()菜单函数, int whether(int)判断时间是否超出函数,void  find(char s1[],char s2[])         查询函数★//s1为班次//s2为终点站,void deletemessage()删除函数,int findnum(char s1[])班次查询函数,void get(int,int)修改及增加班次,char *menu[]菜单函数。

    该系统将这些信息均放在文件d:车票管理系统0中。

    最后定义main()函数,利用函数调用,实现程序的各种功能。将其放在系统文件d:车票管理系统0中。

    程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。

    程序把每种功能分开实现,更简单,实用程序更易理解。

    程序测试:

    3.0  菜单界面

     

    图3-1菜单界面

    如上图所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。选择1-9并按enter键进行操作。如选择出错,系统将提出警告,并提醒用户重新进行选择。

      1.  录入班次功能

    图3-1- 1第一次输入时的界面

     

    图3-1- 2第二次输入时的界面

     

    如上图所示,该功能实现录入班次信息。选择1按enter键进入该功能,程序提醒用户输入车次.发车时间.起始站.终点站.行车时间.额定载量.已售票数,输入完毕后按enter键将完成录入班次结果,同时程序将再次提醒用户进行新的选择。而第二次输入时提醒已经输过,不能在加。

    3.2查询所有班次功能

    图  3-2-1查询班次界面

     

     

    图3-2-2选择查询方式的界面

    该功能将实现程序运行班次的查询。选择3并按enter键将实现该功能。分班次和终点站两种方式查询。

    3.3增加班次功能

     

    图3-2-3增加班次功能界面

     

    图3-2-4增加班次后界面

     

    该功能将增加班次信息,帮助用户更新班次信息。选择4并按enter键将实现该功能,再按提示输入就行。按任意键返回主菜单。

    3.3售票功能

     

    图3-3-1选择售票功能界面

     

    图3-3-2选择售票后的界面

     

    图3-3-3订票的界面

    选择5按enter键实现该功能,按任意键关闭程序。买票程序可提示买票成功否,且自动判断是否可卖。

    3.4退票功能

     

    图3-4-1退票界面

    选择6按enter键实现该功能,按任意键关闭程序。退票程序可提示退票成功否,且自动判断是否可退。

    3.5修改班次功能

     

    图3-5-1修改界面

    选择7按enter键实现该功能,按任意键关闭程序。按提示操作修改班次。

    3.6  删除班次功能

     

    图3-6-1删除界面

    3.7  退出功能

     

    图3-7-1退出界面

    该功能可退出系统,选择9按enter键实现该功能

    部分程序:

    #include               ///宏定义函数

    #include            //串操作及内存操作函数

    #include             /调用系统函数

    #include               ///时间库函数   

    #include                 ///输入输出函数

    #define N 1000                    //宏定义多条记录

    typedef struct TICKET            定义新结构体TICKET

    {

       char num[10];                  //车次编号

       char hour[3];               //时间,,小时

       char min[3];               //分钟

       char from[10];        //起始站

       char to[10];         //终点站

       float hours;          //车程实际时间

       int max;            //最大车载容量

       int now;           //已售票数

    }CLASS;

    int class_num=0;              ///初始班次总数为0     

    CLASS records[N];            // 多条记录

    int system_time();   //系统时间

    void NewMessage();             //新纪录*录入函数******

    void ShowTable1();         //线框调用1,,,不用每次输 

    void ShowTable2(int i);     //线框调用2,,,不用每次输   

    void Display();           //显示所有函数

    void add();             //增加记录

    void save();          //   保存函数

    void load();              // 按班次查询函数

    void search();        //查询函数

    void change();     //修改函数**

    void quit();          // //退出函数******

    void Ticketorder();        //    //*售票函数***

    void Ticketdelete();         //删除函数*

    int menu_select();         //菜单函数*

    int whether(int);           判断时间是否超出函数***

    void  find(char s1[],char s2[]);         //查询函数★//s1为班次//s2为终点站

    void deletemessage();           //删除函数

    int findnum(char s1[]);           //班次查询函数

    void get(int,int);         //修改及增加班次*

    char *menu[]={"*****************欢迎使用火车票查询系统*****************",

    "\n*******************MENU功能菜单***********************",

    "\n                  1. 录入班次                        ",

    "\n                  2. 显示所有班次                    ",

    "\n                  3. 查询班次                        ",

    "\n                  4. 增加班次                        ",

    "\n                  5. 售票                            ",

    "\n                  6. 退票                            ",

    "\n                  7. 修改班次                        ",

    "\n                  8. 删除班次                        ",

    "\n                  9. 退出                            "};                              

    /**************************主函数*************************/

    void main()

       system("cls");            //刷屏

       while(1)                    //菜单函数循环

       {

          switch(menu_select())                  //菜单函数*

          {

          case 1: NewMessage();break;     新纪录*录入函数******

          case 2: Display();break;               // //显示

          case 3: search();break;           //查找函数**

          case 4: add();break;               // //增加记录

          case 5: Ticketorder();break;           *售票函数***

          case 6: Ticketdelete();break;        //删除函数*

          case 7: change();break;              //修改函数**

          case 8: deletemessage();break;     //选择调用删除函数

          case 9: quit();break;      //退出函数******

          }

       }

    }

    /***********************菜单函数**************************/

    int menu_select()         /菜单函数*

    {

       char s[5];           ///定义要输入的数字功能

       int c,i;        

       system("cls");           //刷屏

       system("color 07");//改变颜色

       for(i=0;i<11;i++)

       {

          printf("%s",menu[i]);   //输出菜单各项

       }

       i=0;

        while(c<0||c>9)             //判断是否是19的命令

       { 

          printf("\n");               ///输出换行

         

            printf("******************************************************");

            printf("\n请选择(1-9):");

          scanf("%s",s);

          c=atoi(s);                    //atoi将字符串转换成一个整数值

       }            ///输出菜单面

       return c;           返回请求           

    }

    /*******************************录入函数************************************/

    void NewMessage()            //*录入函数******

    {      

       int i=0,j=5,h;                 

       char s[5];

       FILE *fp;               定义文件型指针变量

       system("cls");      //刷屏

       if((fp=fopen("d:车票管理系统0.dat","rb"))!=NULL)    //fopen打开文件

       { 

            printf("车票信息已经存在请选择增加功能!\n");

          printf("任意输入则返回菜单\n");

          scanf("%s",s);

          i=1;         //通过是1

       } 

       if(i==0)

       {              

          system("cls");    //刷屏

          printf("请输入要录入班次总数:\n");

          scanf("%d",&class_num);        //指向班次指针

          system("cls");    //刷屏

          for(i=0;i

          { 

              system("cls");    //刷屏

              printf("请输入第%d个班次信息:\n",i+1);

              h=-1;

              for(;h!=i;)             ///循环输出

              {

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

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

                 for(h=0;h

                    if(strcmp(records[h].num,records[i].num)==0)  

                       //判断字符串比较是否相等,, 待比较的字符串               

                    {

                       printf("输入错误!该班次已存在!\n");

                       break;          ///返回

                    }              

              }

              get(i,j);           修改及增加班次*

              j=5;        

          }

          save();           //调用保存函数

       } 

    }

    /*******************************显示所有函数********************************/

    资料包括:

     

     

     需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

    纷传点击用微信打开即可,过程有点繁琐请见谅。

                 

  • 相关阅读:
    外汇天眼:经济衰退无阻加息,欧美货币政策齐收紧
    web:[护网杯 2018]easy_tornado
    从一次性销售到持续收益:低代码服务商的转型之路
    华为实验基础(1):交换机基础
    上海亚商投顾:沪指缩量震荡 龙字辈个股掀跌停潮
    java中转义字符的源码数据格式,内存存储数据格式和转换json后的数据格式
    RS485协议和Modbus协议有什么区别?工业网关能用吗?
    在Vue3中使用Element-Plus分页(Pagination )组件
    Python将PDF按页转换为图片
    【CV】第 4 章:图像深度学习
  • 原文地址:https://blog.csdn.net/qq_63964231/article/details/127589125