数据结构课程设计《火车售票管理系统》

题目:火车售票管理系统

需求分析:要求能够实现售票、退票、余票查询等功能

方法设计:可以用结构体和栈模拟买票退票的过程。

车票打印效果如下:

+-------------------------------------------------------+
| K13010030       候车地点:1楼第1候车室 |
|        南阳        K1301              北京                 |
| 2016年12月30日08:00开          01车30      |
|       限乘当日当次车                  新空调硬卧  |
|                    中国铁路祝您旅途愉快               |
+-------------------------------------------------------+

  要求每个功能模块都要打印出车票信息。

 耗时一下午+半中午终于写出了雏形,注意!这里的所有代码只是雏形,不代表最终结果。不过,,应付一下课程设计答辩应该可以了。弱半天的心血,虽然很多地方很丑并没有真正的实现功能,而且整个就是C和C+的代码,弱能写出来已经是破天荒了,要是还有什么需求自行修改吧!

#include <stack>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include<functional>
#include<fstream>
#include<iomanip>
#include<windows.h>
using  namespace std;
const int N=30;
struct ticket_infor//车票信息,每种票默认30张
{
    stack<int>q1;//卧铺
    stack<int>q2;//坐铺
    stack<int>q3;//站票
    double x1=539.5,x2=265.5,x3=186.5;
    string train;//车次;
    string go_time;//出发时间;
    int floor,room;
} End_site[6]; //只去往:北1、上2、广3、深4、杭5
void init()//初始化票务信息
{
    for(int i=1; i<=5; i++)
    {
        for(int j=1; j<=N; j++)
        {
            End_site[i].q1.push(j);//票的编号
            End_site[i].q2.push(j);
            End_site[i].q3.push(j);
        }
    }
    End_site[1].train="K1301", End_site[1].go_time="08:00";
    End_site[1].floor=1,End_site[1].room=1;//南阳->北京
    End_site[2].train="T1303",End_site[2].go_time="10:05";
    End_site[2].floor=1,End_site[2].room=2;//南阳->上海
    End_site[3].train="K1305",End_site[3].go_time="12:30";
    End_site[3].floor=2,End_site[3].room=1;//南阳->广州
    End_site[4].train="D1307",End_site[4].go_time="15:04";
    End_site[4].floor=2,End_site[4].room=2;//南阳->深圳
    End_site[5].train="K1309",End_site[5].go_time="17:00";
    End_site[5].floor=1,End_site[5].room=3;//南阳->杭州
}
void print_ticket(int x,int y)//打印车票信息;
{
    system("color 0c");
    int site;
    string s;
    if(y==1)
        site=End_site[x].q1.top(),s="硬卧";
    else if(y==2)
        site=End_site[x].q2.top(),s="硬座";
    else if(y==3)
        site=End_site[x].q3.top(),s="硬座";
    cout<<"+----------------------------------------+"<<endl;
    cout<<"| "<<End_site[x].train<<setw(4)<<setfill('0')<<site<<" ";
    cout<<setw(16)<<setfill(' ')<<"候车地点:"<<End_site[x].floor<<"楼第"<<End_site[x].room<<"候车室 |"<<endl;
    cout<<"|    南阳"<<setw(9)<<setfill(' ')<<"----->"<<"  ";
    if(x==1) cout<<"北京                 |"<<endl;
    else if(x==2) cout<<"上海                 |"<<endl;
    else if(x==3) cout<<"广州                 |"<<endl;
    else if(x==4) cout<<"深圳                 |"<<endl;
    else if(x==5) cout<<"杭州                 |"<<endl;
    cout<<"| 2016年12月30日"<<End_site[x].go_time<<"开";
    cout<<setw(10)<<setfill(' ')<<"0"<<y<<"车"<<setw(2)<<setfill('0')<<site<<"   |"<<endl;
    cout<<"| 限乘当日当次车"<<setw(21)<<setfill(' ')<<"  新空调"<<s<<"|"<<endl;
    cout<<"|"<<setw(30)<<setfill(' ')<<"中国铁路祝您旅途愉快"<<setw(11)<<setfill(' ')<<'|'<<endl;
    cout<<"+----------------------------------------+"<<endl;
}
int buy_ticket(int x)//买票
{
    while(1)
    {
        printf("请输入您想买的票:卧铺[1]:硬座[2]:站票[3]\n");
        int xx;
        scanf("%d",&xx);
        if(xx==1)
        {
            if(!End_site[x].q1.empty())
            {
                printf("卧铺购买成功!\n");
                printf("您的车票信息如下:\n");
                print_ticket(x,1);//打印车票
                End_site[x].q1.pop();
                return 0;
            }
            else
            {
                printf("卧铺已售完!\n");
                int op;
                printf("是否继续:是[1]:否[0]\n");
                scanf("%d",&op);
                if(!op) return -1;
            }
        }
        else if(xx==2)
        {
            if(!End_site[x].q2.empty())
            {
                printf("坐票购买成功!\n");
                printf("您的车票信息如下:\n");
                print_ticket(x,2);//打印车票
                End_site[x].q2.pop();
                return 0;
            }
            else
            {
                printf("坐票已售完!\n");
                int op;
                printf("是否继续:是[1]:否[0]\n");
                scanf("%d",&op);
                if(!op) return -1;
            }
        }
        else if(xx==3)
        {
            if(!End_site[x].q3.empty())
            {
                printf("站票购买成功!\n");
                printf("您的车票信息如下:\n");
                print_ticket(x,3);//打印车票
                End_site[x].q3.pop();
                return 0;
            }
            else
            {
                printf("站票已售完!\n");
                int op;
                printf("是否继续:是[1]:否[0]\n");
                scanf("%d",&op);
                if(!op) return -1;
            }
        }
        else
        {
            printf("请求错误!\n");
            int op;
            printf("是否继续:是[1]:否[0]\n");
            scanf("%d",&op);
            if(!op) return -1;
        }
    }
    return 0;
}
int print_rest_ticket(int x)//显示余票信息
{
    int num=End_site[x].q1.top()+End_site[x].q2.top()+End_site[x].q3.top();
    cout<<" |"<<"车次 | 出发时间 |   硬卧     |   硬座     |   站票    |"<<endl;
    cout<<" |------------------------------------------------------|"<<endl;
    cout<<" |"<<End_site[x].train<<"|   "<<End_site[x].go_time<<"  | "<<End_site[x].q1.top()<<"("<<
        End_site[x].x1<<")"<<"  | "<<End_site[x].q2.top()<<"("<<End_site[x].x2<<")"<<
        "  | "<<End_site[x].q3.top()<<"("<<End_site[x].x3<<") |"<<endl;
    cout<<" |------------------------------------------------------|"<<endl;
    return num;
}
void sold_ticket()//售票
{
    while(1)
    {
        system("cls");
        printf("\n\n\n\t\t\t    欢迎来到售票大厅\n\n");
        printf("\t\t\t|      本站只开往:  |\n");
        printf("\t\t\t|      北京[1]       |\n");
        printf("\t\t\t|      上海[2]       |\n");
        printf("\t\t\t|      广州[3]       |\n");
        printf("\t\t\t|      深圳[4]       |\n");
        printf("\t\t\t|      杭州[5]       |\n");
        printf("请问您想去哪? ");
        int x;
        scanf("%d",&x);
        if(x<1||x>5)
        {
            printf("错误请求\n");
            printf("是否继续:是[1]:否[0]\n");
            scanf("%d",&x);
            if(x) continue;
            else return ;
        }
        printf(" +--------------------- 车次信息如下 -------------------+\n");
        int num=print_rest_ticket(x);
        if(!num)
        {
            printf("对不起,当天车票已售完!");
            return ;
        }
        else
        {
            if(x==1)//去北京而且有票;
            {
                int solve=buy_ticket(x);
                if(solve==-1) return ;
                else
                {
                    int op;
                    printf("是否继续买票:是[1]:否[0]\n");
                    scanf("%d",&op);
                    if(!op) return ;
                }
            }
            else if(x==2)
            {
                int solve=buy_ticket(x);
                if(solve==-1) return ;
                else
                {
                    int op;
                    printf("是否继续买票:是[1]:否[0]\n");
                    scanf("%d",&op);
                    if(!op) return ;
                }
            }
            else if(x==3)
            {
                int solve=buy_ticket(x);
                if(solve==-1) return ;
                else
                {
                    int op;
                    printf("是否继续买票:是[1]:否[0]\n");
                    scanf("%d",&op);
                    if(!op) return ;
                }
            }
            else if(x==4)
            {
                int solve=buy_ticket(x);
                if(solve==-1) return ;
                else
                {
                    int op;
                    printf("是否继续买票:是[1]:否[0]\n");
                    scanf("%d",&op);
                    if(!op) return ;
                }
            }
            else if(x==5)
            {
                int solve=buy_ticket(x);
                if(solve==-1) return ;
                else
                {
                    int op;
                    printf("是否继续买票:是[1]:否[0]\n");
                    scanf("%d",&op);
                    if(!op) return ;
                }
            }
        }
    }
}
void refund_ticket()//退票
{
    printf("请输入您订票地点:");
    string s,time;
    cin>>s;
    if(s!="南阳")
    {
        printf("对不起,本站只接受本站售出的票!\n");
        return ;
    }
    printf("请输入您的终点站:");
    cin>>s;
    if(s=="北京"||s=="上海")
    {
        printf("对不起,列车已开出,无法退票!\n");
        return ;
    }
    int t;
    if(s=="广州") t=3;
    else if(s=="深圳") t=4;
    if(s=="杭州") t=5;
    printf("卧铺[1]:坐票[2]:站票[3]:");
    while(1)
    {
        int x;
        cin>>x;
        if(x==1)
        {
            int top=End_site[t].q1.top();
            End_site[t].q1.push(top+1);
            printf("退票成功!中国铁路祝您生活愉快!\n");
            break;
        }
        else if(x==2)
        {
            int top=End_site[t].q2.top();
            End_site[t].q2.push(top+1);
            printf("退票成功!中国铁路祝您生活愉快!\n");
            break;
        }
        else if(x==3)
        {
            int top=End_site[t].q1.top();
            End_site[t].q1.push(top+1);
            printf("退票成功!中国铁路祝您生活愉快!\n");
            break;
        }
        else
        {
            printf("非法信息!\n");
            int op;
            printf("是否继续:是[1]:否[2]\n");
            cin>>op;
            if(!op) break;
        }
    }
}
void welcome()
{
    while(1)
    {
        system("cls");
        int x;
        printf("\n\n\n\t\t   欢迎来到南阳火车站网上售票服务中心   \n\n");
        printf("\t\t\t|  请问有什么可以帮您  |\t\t\t\n");
        printf("\t\t\t|  [1]: 买票           |\t\t\t\n");
        printf("\t\t\t|  [2]: 退票           |\t\t\t\n");
        printf("\t\t\t|  [3]: 余票查询       |\t\t\t\n");
        printf("\t\t\t|  [0]: 退出售票系统   |\t\t\t\n");
        printf("请输入您的请求:");
        scanf("%d",&x);
        if(x==1) sold_ticket();
        else if(x==2) refund_ticket();
        else if(x==3)
        {
            printf("请输入终点站:");
            string str;
            cin>>str;
            if(str=="北京"||str=="上海"||str=="广州"||str=="深圳"||str=="杭州")
            {
                if(str=="北京")
                {
                    int num=print_rest_ticket(1);
                    if(!num) printf("对不起!南阳开往北京的车票已售完!\n");
                    else
                    {
                        int op;
                        printf("是否买票:是[1]:否[0] :");
                        cin>>op;
                        if(op) sold_ticket();
                    }
                }
                if(str=="上海")
                {
                    int num=print_rest_ticket(2);
                    if(!num) printf("对不起!南阳开往上海的车票已售完!\n");
                    else
                    {
                        int op;
                        printf("是否买票:是[1]:否[0] :");
                        cin>>op;
                        if(op) sold_ticket();
                    }
                }
                if(str=="广州")
                {
                    int num=print_rest_ticket(3);
                    if(!num) printf("对不起!南阳开往广州的车票已售完!\n");
                    else
                    {
                        int op;
                        printf("是否买票:是[1]:否[0] :");
                        cin>>op;
                        if(op) sold_ticket();
                    }
                }
                if(str=="深圳")
                {
                    int num=print_rest_ticket(4);
                    if(!num) printf("对不起!南阳开往深圳的车票已售完!\n");
                    else
                    {
                        int op;
                        printf("是否买票:是[1]:否[0] :");
                        cin>>op;
                        if(op) sold_ticket();
                    }
                }
                if(str=="杭州")
                {
                    int num=print_rest_ticket(5);
                    if(!num) printf("对不起!南阳开往杭州的车票已售完!\n");
                    else
                    {
                        int op;
                        printf("是否买票:是[1]:否[0] :");
                        cin>>op;
                        if(op) sold_ticket();
                    }
                }
            }
            else
                printf("对不起!本站只开往:北京、上海、广州、深圳、杭州!\n");
        }
        else return ;
        printf("退出:是[1]:否[0]\n");
        scanf("%d",&x);
        if(x) return ;
        else Sleep(500);
    }
}
int main()
{
    init();
    system("color 3e");
    welcome();
    return 0;
}

//******************************************
//*****************   LYQ    ***************
//*****************   YES    ***************
//*UserID: secrecy                         *
//*RunOJ:                                  *
//*RunID:                                  *
//*Submit time:                            *
//*Language: G++                           *
//*Result: Accepted                        *
//*time:                                   *
//*Memory:                                 *
//*Length:                                 *
//*School: NYIST                           *
//*Blog: http://blog.csdn.net/nyist_tc_lyq *
//*QQ:                                     *
//*Tel:                                    *
//*****************************************/

写的很丑,大神请略过,多谢轻虐之恩!

 

 

  • 12
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
火车售票管理系统是一个基于MySQL数据库的课程设计项目。该系统旨在实现一个简单而高效的火车售票管理系统,方便乘客购票和管理火车票信息。 首先,我们将使用MySQL数据库来存储和管理系统中所需的各种数据,如乘客信息、火车车次、座位信息和订单等。通过使用MySQL,我们可以轻松地创建和管理这些数据表,使数据的存储和检索更加方便和高效。系统管理员可以使用MySQL提供的功能来对数据库进行备份和恢复,确保数据的安全性和可靠性。 火车售票管理系统将包括以下主要功能: 1. 注册和登录:乘客可以通过注册账号并登录系统。 2. 车次查询:乘客可以查询指定日期和出发/到达地点的火车车次信息。 3. 车次订票:乘客可以选择指定日期和座位类型的火车车次进行订票。 4. 订单管理:乘客可以查看和管理自己的订单,包括取消订单和退票等操作。 5. 座位选择:乘客可以根据座位类型和剩余座位数选择座位。 6. 支付功能:乘客可以使用支付宝或银行卡等方式进行支付。 7. 票价管理:管理员可以管理不同车次和座位类型的票价信息。 使用MySQL数据库,我们可以通过建立合理的表结构和使用合适的索引来提高数据的查询和插入效率。通过设计好的数据库结构,我们可以实现各项功能的高效实现和数据的准确存储。 总之,通过使用MySQL数据库,我们可以有效地管理火车售票管理系统中的各种数据,提高系统的性能和稳定性,并提供便捷的购票流程和订单管理功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值