精华内容
下载资源
问答
  • 火车售票系统设计
    2021-06-25 00:38:44

    内容介绍

    原文档由会员 915 发布

    3.2万字 44页 有程序

    摘 要

    本文采用了软件工程的思想对火车售票系统进行了:需求分析、总体设计、和详细设计给出了系统总体结构。并将系统划分为:用户登陆模块、列车排班模块、车次查询模块、订票模块、退票模块、会员注册模块、口令修改模块一共六个模块。系统的定位是以售票员为中心的,操作均由售票员来完成,主要是模拟现在我国火车站售票点正在运行的售票系统,还有一部分是根据自己的想法并参照了别的运输行业的模式,在此系统中加了一个会员优惠制度,这个制度的加入当然会使系统变得更加复杂,但是假如应用到了实际售票系统中,还是具有很大的市场前景的。特别是现在,随着高速公路的增多,客车运输正在逐渐的扩大着市场份额;再加上现在经济的发展,飞机也成了一部分人首选的运输工具;要想让铁路运输继续扩大市场,无疑就需要提高服务质量,降低运输价格了。会员制度对吸引乘客还是有着比较大的作用的。

    本系统运用PB和SQL等工具,开发实现的模块有登陆模块、列车排班模块、列车查询模块、订票模块、退票模块、会员注册模块、口令修改模块等。其中列车排班模块主要是用来添加、修改列车的发车和到达等相关信息,删除已经不用的列车信息。会员注册模块提供了给经常购票的会员购买火车票的一个信息平台,可根据会员的级别不同而享受不同的打折待遇。同时本文还分析了软件工程、数据库技术的相关理论。

    本系统具有良好的可移植性和可修改性。系统简单,易于操作,对相关的具有售票业务的企业具有一定的使用价值。

    关键字:信息管理;火车售票;PB;SQL Server2000

    Abstract

    The ordering module is used for adding,modifing the information of departing and arriving,deleting the train information which is useless.The member registing module has provided information platform to members who often buy railway tickets,and give different promotions according to member's rank.Meanwhile this system mainly analyse relevant theories of software engineering and data base technology.

    This system is simple and can be transplanted and modified well.It has high value for the corperations who has relevant business of selling tickets.

    Key words: Information management ;Ticket selling system;PB;SQL Server2000

    目 录

    引言

    第1章绪论

    第2章相关知识介绍和项目的可行性研究

    第3章系统需求分析

    3.1系统功能需求分析

    3.2系统数据需求分析

    3.3 E-R图

    第4章系统设计

    4.1系统概要设计

    4.2系统详细设计

    第5章系统实现

    5.1系统主要模块编码及相关界面的实现

    5.2系统测试与维护

    结论与展望

    致谢

    参考文献

    附录

    更多相关内容
  • 程序设计要求用C语言写一个简单的火车售票系统,主要实现的功能为: 录入班次信息 浏览班次信息 按班次号查询 按终点站查询 按余票数量排序保存 售票 退票 更新班次信息 退出系统 所有的班次信息保存在number.dat...
  • 基于数据结构和Java的火车售票系统.pdf
  • 数据库火车售票管理系统,SQL SEVER ,课设报告+源码
  • 主要为大家详细介绍了纯C语言实现火车售票系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了Java多线程之火车售票系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java通过并发进程实现火车自动售票程序,假如火车站有100张火车票要卖出去,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况。
  • JAVA火车售票系统

    2019-01-10 14:48:30
    JAVA编写的火车售票系统,本系统对票可进行管理和操作,与此同时,后台管理起来较为简单方便
  • 数据库课程设计报告,参考使用,欢迎下载
  • 火车售票系统 :smiling_face_with_smiling_eyes:本系统使用了Vue作为前端框架,Vant组件和element ui作为前端前端UI,后端使用了springboot和Mybatis,数据库使用了Mysql关系型数据库,具有用户移动端和web管理端两...
  • C语言火车售票系统

    2021-05-23 04:04:35
    } if(y) { printf("/n错误,该火车号已经开始售票!/n/n");goto loop;} //检验是否存在 y=1; r *pj=rhead; while(pj) { if(strcmp(pj->num,p->num)==0){y=0;break;} pj=pj->next; } if(y) { printf("/n错误,无该...

    #include

    #include

    #include//getch

    #include//动态分配

    typedef  struct  route//路线

    {

    char  num[30];//车次

    char  start[40];//起点

    char  end[40];//终点

    char  time[10];//时间

    struct  route   *next;

    }r;

    typedef  struct  ticket//车票

    {

    char  num[30];//车次

    int   n;//总数量

    int   n1;//剩余数

    float  price;//票价

    struct  ticket  *next;

    }t;

    r  *  rhead=NULL,*ri=NULL;//全局指针

    t  *  thead=NULL,*ti=NULL;//全局指针

    void initialr()

    {

    FILE   *fp;

    fp=fopen("route.txt","r");

    if(!fp){ printf("/n/n火车路线文件不存在!/n/n");    return ;    }

    fseek(fp,0,SEEK_END);

    int n=ftell(fp)/sizeof(r);

    rewind(fp);

    int i=0;

    for(;i

    {

    r  *p;

    p=(r*)malloc(sizeof(r));

    p->next=NULL;

    fread(p,sizeof(r),1,fp);

    if(rhead==NULL)rhead=ri=p;

    else{  ri->next=p;ri=p; }

    }

    fclose(fp);

    printf("/n/n初始化%d个火车路线信息成功!/n/n",n);

    }

    void initialt()

    {

    FILE   *fp;

    fp=fopen("ticket.txt","r");

    if(!fp){ printf("/n/n车票文件不存在!/n/n");    return;    }

    fseek(fp,0,SEEK_END);

    int n=ftell(fp)/sizeof(t);

    rewind(fp);

    int i=0;

    for(;i

    {

    t *p;

    p=(t*)malloc(sizeof(t));

    p->next=NULL;

    fread(p,sizeof(t),1,fp);

    if(thead==NULL)thead=ti=p;

    else{  ti->next=p;ti=p; }

    }

    fclose(fp);

    printf("/n/n初始化%d个车票信息成功!/n/n",n);

    }

    void newr()

    {

    printf("/n/n/n█新建火车路线█/n/n");

    loop:

    r *p;

    p=(r *)malloc(sizeof(r));

    p->next=NULL;

    loop1:

    printf("/n请输入火车号/n/n");

    scanf("%s",p->num);

    //检验

    r  *pj=rhead;

    while(pj)

    {

    if(strcmp(pj->num,p->num)==0){  printf("/n/n错误,该火车号已经存在,请重新输入!/n");   goto  loop1;    }

    pj=pj->next;

    }

    //检验

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

    scanf("%s",p->start);

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

    scanf("%s",&p->end);

    printf("/n请输入发车时间(时:分)/n/n");

    scanf("%s",&p->time);

    if(rhead==NULL)rhead=ri=p;

    else{  ri->next=p;  ri=p;   }

    printf("/n/n创建新火车路线成功!/n/n");

    char c;

    printf("/n/n您想---继续新建(A)--退出新建(E)---/n");

    c=getch();

    if(c=='A'||c=='a')goto loop;  else  return;

    }

    void newt()

    {

    printf("/n/n/n█新建车票█/n/n");

    loop:

    t *p;

    p=(t *)malloc(sizeof(t));

    p->next=NULL;

    printf("/n请输入要新建车票的火车号/n/n");

    scanf("%s",p->num);

    //检验是否已经售票

    int y=0;

    t  *pt=thead;

    while(pt)

    {

    if(strcmp(pt->num,p->num)==0){y=1;break;}

    pt=pt->next;

    }

    if(y) { printf("/n错误,该火车号已经开始售票!/n/n");goto loop;}

    //检验是否存在

    y=1;

    r  *pj=rhead;

    while(pj)

    {

    if(strcmp(pj->num,p->num)==0){y=0;break;}

    pj=pj->next;

    }

    if(y) { printf("/n错误,无该火车号!/n/n");goto loop;}

    //-----------------------------------------------------------

    printf("/n请输入总票数:/n/n");

    scanf("%d",&p->n);

    p->n1=p->n;

    printf("/n请输入票价:(元)/n/n");

    scanf("%f",&p->price);

    if(thead==NULL)thead=ti=p;

    else{  ti->next=p;  ti=p;   }

    printf("/n/n创建火车票成功!/n/n");

    char c;

    printf("/n/n您想---继续新建(A)--退出新建(E)---/n");

    c=getch();

    if(c=='A'||c=='a')goto loop;  else  return;

    }

    void showr()

    {

    r *p;

    p=rhead;

    printf("/n/n/n                        █火车信息数据库█          ");

    printf("/n|--------------------------------------------------------------------------|");

    int i=0;

    while(p)

    {

    i++;

    printf("/n|车号:%s  路线:  %s---------->%s  发车时间:%s",p->num ,p->start ,p->end ,p->time);

    //-----------------------

    int jy=1;

    t*p1=thead;

    while(p1)

    {          if(strcmp(p1->num,p->num)==0) {printf("/t[已售票]");  jy=0; }     p1=p1->next; }

    if(jy) printf("/t[未售票]");

    //-----------------------

    printf("/n|--------------------------------------------------------------------------|");

    p=p->next;

    }

    printf("/n█火车总数:   %d    ",i);

    printf("/n|--------------------------------------------------------------------------|/n/n/n/n/n/n");

    }

    void showt()

    {

    printf("/n/n/n                        █火车票信息数据库█          ");

    printf("/n|--------------------------------------------------------------------------|");

    int i=0;

    t*p=thead;

    while(p)

    {  i++;

    printf("/n|车号:%s    票价:%f    剩余:%d   总数:%d   已卖:%d",p->num ,p->price ,p->n1 ,p->n,p->n-p->n1);

    printf("/n|--------------------------------------------------------------------------|");

    p=p->next;

    }

    }

    void modifyr()

    {

    printf("/n/n/n       █修改路线█          ");

    loop:

    printf("/n/n/n请输入要修改的火车号:");

    char n[20];

    scanf("%s",n);

    r *p=rhead;

    int y=1;

    while(p)

    {

    if(strcmp(n,p->num)==0)

    {y=0;

    printf("/n请输入新起始点/n/n");

    scanf("%s",p->start);

    printf("/n请输入新终点站/n/n");

    scanf("%s",p->end);

    printf("/n请输入新发车时间/n/n");

    scanf("%s",p->time); }

    p=p->next;

    }

    if(y)printf("/n/n错误,要修改的车号不存在!/n/n");

    else   printf("/n/n修改成功!/n/n");

    char c;

    printf("/n/n您想---继续修改(A)--退出修改(E)---/n");

    c=getch();

    if(c=='A'||c=='a')goto loop;else  return;

    }

    void delr()

    {

    printf("/n/n/n       █删除路线█          ");

    loop:

    printf("/n/n/n请输入要删除的火车号:");

    char n[20];

    scanf("%s",n);

    r *p=rhead,*p1=rhead;

    int y=0;

    int  jy=1;

    while(p)

    {

    if(strcmp(n,p->num)==0)

    {

    //检验-----------------------------------------------------------

    t *p2=thead;

    while(p2)

    {

    if(strcmp(p->num,p2->num)==0&&p2->n!=p2->n1)

    printf("/n/n错误,已售票,无法删除!!/n/n");

    p2=p2->next;

    }

    //检验---------------------------------------------------------

    jy=0;

    if(p==rhead)rhead=rhead->next;

    else  p1->next=p->next;

    break;

    }

    y++;

    if(y>1)p1=p1->next;

    p=p->next;

    }

    if(jy)printf("/n/n错误,要删除的车号不存在!/n/n");

    else   printf("/n/n删除成功!/n/n");

    char c;

    printf("/n/n您想---继续删除(A)--退出删除(E)---/n");

    c=getch();

    if(c=='A'||c=='a')goto loop;else  return;

    }

    void lookr()

    {

    char  c,m[20];

    do

    {//do的开始。

    printf("/n/n/n              [火车查询菜单]");

    printf("/n|----------------------------------|");

    printf("/n|           请选择查询方式:        |");

    printf("/n|----------------------------------|");

    printf("/n|           A[ 火车号查询  ]       |");

    printf("/n|----------------------------------|");

    printf("/n|           B[ 起始地查询  ]       |");

    printf("/n|----------------------------------|");

    printf("/n|           C[ 目的地查询  ]       |");

    printf("/n|----------------------------------|");

    printf("/n|           D[ 退      出  ]       |");

    printf("/n|----------------------------------|");

    r *p=rhead;

    c=getch();

    int y;

    switch (c)

    {

    //switch的开始

    case 'A':

    case'a':

    y=1;

    printf("/n/n请输入要查找的火车号/n/n");

    scanf("%s",m);

    while(p)

    {

    if(strcmp(p->num,m)==0)

    {y=0;

    printf("/n|--------------------------------------------------------------------------|");

    printf("/n|车号:%s  路线:  %s---------->%s  发车时间:%s",p->num ,p->start ,p->end ,p->time);

    //检验

    int jy=1;

    t*p1=thead;

    while(p1)

    {

    if(strcmp(p1->num,p->num)==0) { printf("/n  总票数:  %d      剩余票数   %d      已卖票数:%d  ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0; }

    p1=p1->next;        }

    if(jy) printf("/t[未售票]");

    //检验

    printf("/n|--------------------------------------------------------------------------|");

    }

    p=p->next;

    }

    if(y)  printf("失败,您查询的火车不存在!/n/n");

    break;

    case'B':

    case'b':

    y=0;

    printf("/n/n请输入要查找的起始地/n/n");

    scanf("%s",m);

    while(p)

    {

    if(strcmp(p->start,m)==0)

    {y=0;

    printf("/n|--------------------------------------------------------------------------|");

    printf("/n|车号:%s  路线:  %s---------->%s  发车时间:%s",p->num ,p->start ,p->end ,p->time);

    //检验

    int jy=1;

    t*p1=thead;

    while(p1)

    {

    if(strcmp(p1->num,p->num)==0) { printf("/n  总票数:  %d      剩余票数   %d      已卖票数:%d  ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0; }

    p1=p1->next;        }

    if(jy) printf("/t[未售票]");

    //检验

    printf("/n|--------------------------------------------------------------------------|");

    }

    p=p->next;

    }

    if(y)  printf("失败,您查询的火车不存在!/n/n");

    break;

    case'C':

    case'c':

    y=0;

    printf("/n/n请输入要查找的终点站/n/n");

    scanf("%s",m);

    while(p)

    {

    if(strcmp(p->end,m)==0)

    {y=0;

    printf("/n|--------------------------------------------------------------------------|");

    printf("/n|车号:%s  路线:  %s---------->%s  发车时间:%s",p->num ,p->start ,p->end ,p->time);

    //检验

    int jy=1;

    t*p1=thead;

    while(p1)

    {

    if(strcmp(p1->num,p->num)==0) { printf("/n  总票数:  %d      剩余票数   %d      已卖票数:%d  ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0; }

    p1=p1->next;        }

    if(jy) printf("/t[未售票]");

    //检验

    printf("/n|--------------------------------------------------------------------------|");

    }

    p=p->next;

    }

    if(y)  printf("失败,您查询的火车不存在!/n/n");

    break;

    }//switch的结束

    }while(c!='D'&&c!='d');

    }

    void sell()

    {

    printf("/n/n/n              [火车售票]");

    char m[20];

    int y=1;

    printf("/n/n请输入要购买的火车号/n/n");

    scanf("%s",m);

    r *p=rhead;

    while(p)

    {

    if(strcmp(p->num,m)==0)

    {y=0;

    printf("/n|--------------------------------------------------------------------------|");

    printf("/n|车号:%s  路线:  %s---------->%s  发车时间:%s",p->num ,p->start ,p->end ,p->time);

    int jy=1;

    t*p1=thead;

    while(p1)

    {

    if(strcmp(p1->num,p->num)==0)

    {

    printf("/n  总票数:  %d      剩余票数   %d      已卖票数:%d  ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0;

    if(p1->n1==0){printf("/n/n错误,您要购买的火车号已经售完!/n/n");goto  loop;}

    loop1:

    printf("/n/n请输入要购买的数量:/n/n");

    int nn;

    scanf("%d",&nn);

    if(nn>p1->n1){printf("/n/n错误,您要购买的数量不足!/n/n");goto  loop1;}

    else{p1->n1-=nn;printf("/n/n请付%f元!",p1->price*nn);printf("/n/n买票操作成功!/n/n");goto  loop;}

    }

    p1=p1->next;        }

    if(jy) printf("/t[未售票]");

    //检验

    printf("/n|--------------------------------------------------------------------------|");

    }

    p=p->next;

    }

    if(y)  printf("失败,您查询的火车不存在!/n/n");

    loop:;

    }

    void back()

    {

    printf("/n/n/n              [火车退票]");

    char m[20];

    int y=1;

    printf("/n/n请输入要退票的火车号/n/n");

    scanf("%s",m);

    r *p=rhead;

    while(p)

    {

    if(strcmp(p->num,m)==0)

    {y=0;

    printf("/n|--------------------------------------------------------------------------|");

    printf("/n|车号:%s  路线:  %s---------->%s  发车时间:%s",p->num ,p->start ,p->end ,p->time);

    int jy=1;

    t*p1=thead;

    while(p1)

    {

    if(strcmp(p1->num,p->num)==0)

    {

    printf("/n  总票数:  %d      剩余票数   %d      已卖票数:%d  ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0;

    if(p1->n1==p1->n){printf("/n/n错误,您要退的火车号未起售!/n/n");goto  loop;}

    loop1:

    printf("/n/n请输入要退票的数量:/n/n");

    int nn;

    scanf("%d",&nn);

    if(nn+p1->n1>p1->n){printf("/n/n错误,您要退的数量有误!/n/n");goto  loop1;}

    else{p1->n1+=nn;printf("/n/n请收%f元!",p1->price*nn);printf("/n/n退票操作成功!/n/n");goto  loop;}

    }

    p1=p1->next;        }

    if(jy) printf("/t[未售票]");

    //检验

    printf("/n|--------------------------------------------------------------------------|");

    }

    p=p->next;

    }

    if(y)  printf("失败,您查询的火车不存在!/n/n");

    loop:;

    }

    void  add()

    {

    printf("/n/n/n                  [添加车票]          ");

    char m[20];

    printf("/n/n请输入要增加的火车号/n/n");

    scanf("%s",m);

    int y=1;

    t*p=thead;

    while(p)

    {

    if(strcmp(m,p->num)==0)

    { y=0;

    printf("/n  总票数:  %d      剩余票数   %d      已卖票数:%d  ",p->n ,p->n1 ,p->n-p->n1 );

    loop1:

    printf("/n/n请输入要增加的数量:/n/n");

    int nn;

    scanf("%d",&nn);

    if(nn<0){printf("/n/n错误,您的输入为负!/n/n");goto  loop1;}

    else{p->n1+=nn;p->n+=nn;printf("/n/n增加后总票数为%d,剩余票数为%d!/n/n",p->n,p->n1);printf("/n/n增加车票操作成功!/n/n");break;}

    }

    p=p->next;

    }

    }

    void  stop()

    {

    printf("/n/n/n                  [停止售票]          ");

    char m[20];

    printf("/n/n请输入要停止售票的火车号/n/n");

    scanf("%s",m);

    int y=1;

    t*p=thead,*q;

    if(p==NULL) {printf("/n/n无该文件!/n/n");goto loop;}

    if(strcmp(m,p->num)==0){thead=thead->next;free(p);goto loop;}//为首结点时

    while(p)

    {

    if(strcmp(m,p->next->num)==0)

    { q=p->next;break;}

    p=p->next;

    }

    p->next=q->next;

    free(q);

    loop:;

    printf("/n/n%s停止售票成功/n/n",m);

    }

    void saver()

    {

    FILE  * fp;

    fp=fopen("route.txt","w");

    r *p=rhead;

    int i=0;

    while(p)

    {

    i++;

    fwrite(p,sizeof(r),1,fp);

    p=p->next;

    }

    fclose(fp);

    printf("/n/n保存%d个火车信息成功!/n",i);

    }

    void savet()

    {

    FILE  * fp;

    fp=fopen("ticket.txt","w");

    t *p=thead;

    int i=0;

    while(p)

    {

    i++;

    fwrite(p,sizeof(t),1,fp);

    p=p->next;

    }

    fclose(fp);

    printf("/n/n保存%d个火车票信息成功!/n",i);

    }

    void  clear()

    {

    r *p=rhead;

    while(p)

    {

    r *temp=p->next;

    free(p);

    p=temp;

    }

    rhead=NULL;

    printf("/n/n清空火车票路线信息成功!/n");

    r *p1=rhead;

    while(p1)

    {

    r *temp=p1->next;

    free(p1);

    p1=temp;

    }

    rhead=NULL;

    printf("/n/n清空火车票信息成功!/n");

    }

    void show1()

    {

    printf("/n |----------------------------------------|");

    printf("/n |          █主      菜      单 █       |");

    printf("/n |----------------------------------------|");

    printf("/n |          A  火   车   查   询          |");

    printf("/n |----------------------------------------|");

    printf("/n |          B  购   买   车   票          |");

    printf("/n |----------------------------------------|");

    printf("/n |          C  退   回   车   票          |");

    printf("/n |----------------------------------------|");

    printf("/n |          D  系   统   管   理          |");

    printf("/n |----------------------------------------|");

    printf("/n |          E  清   空   数   据          |");

    printf("/n |----------------------------------------|");

    printf("/n |          F  退   出   程   序          |");

    printf("/n |----------------------------------------|");

    printf("/n |             请您选择一个任务           |");

    printf("/n |----------------------------------------|/n/n/n");

    }

    void show2()

    {

    printf("/n |--------------------------- -|");

    printf("/n |    █管  理  菜   单█      |");

    printf("/n |-----------------------------|");

    printf("/n |  A   增  加  路  线         |");

    printf("/n |-----------------------------|");

    printf("/n |  B   修  改  路  线         |");

    printf("/n |-----------------------------|");

    printf("/n |  C   新  建  车  票         |");

    printf("/n |-----------------------------|");

    printf("/n |  D   增  加  车  票         |");

    printf("/n |-----------------------------|");

    printf("/n |  E   取  消  路  线         |");

    printf("/n |--------------------------- -|");

    printf("/n |  F   退  出  程  序         |");

    printf("/n |----------------------------|");

    printf("/n |     请您选择一个任务        |");

    printf("/n |----------------------------|/n/n/n");

    }

    void show()

    {

    printf("/n |--------------------------- -|");

    printf("/n |    █查  询  菜   单█      |");

    printf("/n |-----------------------------|");

    printf("/n |  A   查  询  火  车         |");

    printf("/n |-----------------------------|");

    printf("/n |  B   查  询  车  票         |");

    printf("/n |-----------------------------|");

    printf("/n |  C   具  体  查  询         |");

    printf("/n |-----------------------------|");

    printf("/n |  D   退  出  程  序         |");

    printf("/n |-----------------------------|/n/n");

    }

    void  main()

    {

    initialr();

    initialt();

    char c1;

    do {//do 1

    show1();

    c1=getch();

    switch ( c1 )

    {//switch

    case 'a':

    case 'A':

    char c;

    do{

    show();

    c=getch();

    switch(c)

    {

    case 'a':

    case 'A':showr();break;

    case 'b':

    case 'B':showt();break;

    case 'c':

    case 'C':lookr();break;

    case 'd':

    case 'D':break;

    }

    }while(c!='D'&&c!='d');

    break;

    case 'b':

    case 'B':sell();break;

    case 'c':

    case 'C':back();break;

    case 'd':

    case 'D':

    char c2;

    do{

    show2();

    c2=getch();

    switch ( c2)

    {

    case 'a':

    case 'A':newr();break;

    case 'b':

    case 'B':modifyr();break;

    case 'c':

    case 'C':newt();break;

    case 'd':

    case 'D':add();break;

    case 'e':

    case 'E': stop();break;

    case 'f':

    case 'F': break;

    }

    }while(c2!='f'&&c2!='F');

    break;

    case 'e':

    case 'E':clear();break;

    case 'f':

    case 'F': break;

    }//switch

    }//do1

    while(c1!='f'&&c1!='F');

    saver();

    savet();

    printf("/n/n  ★ 谢谢您的使用!★");

    }

    展开全文
  • VB+SQL火车售票系统设计(源代码+系统).rar VB+SQL火车售票系统设计(源代码+系统).rar VB+SQL火车售票系统设计(源代码+系统).rar VB+SQL火车售票系统设计(源代码+系统).rar VB+SQL火车售票系统设计(源代码+系统).rar ...
  • 基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的火车售票系统, 该项目可用各类java课程设计大作业中, 火车售票系统的系统架构分为前后台两部分, 最终实现在线上进行火车售票系统各项功能,实现了诸如用户管理, ...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的火车售票系统, 该项目可用各类java课程设计大作业中, 火车售票系统的系统架构分为前后台两部分, 最终实现在线上进行火车售票系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类火车售票系统相关的实体进行管理。

    该火车售票系统为一个采用mvc设计模式进行开发B/S架构项目,并采用分层架构对项目进行架构, 分为pojo+action+service, 其中pojo表明该系统的各类数据库表对应的实体, 在对火车售票系统进行详细的需求分析后与数据库设计后, 设计实现了如下模块, 即登录模块,权限管理模块, 用户管理模块,火车售票系统信息管理模块等。并通过java抽象类对其实现

    开发环境

    java环境: Jdk1.8

    Ide: Eclipse EE或者jetbrains Idea

    数据库: mysql5.6以上

    依赖框架:javascript, css, jsp, servlet, filter

    系统需求分析与流程图

    一般而言, 此类的javaweb课程设计大作业都比较简单, 主要目的在于掌握基础的web开发知识, 所以在实现该火车售票系统的课程设计的时候, 需要首先收集其他的火车售票系统产品分析, 主要精力用于完成数据库表的设计, 以及基于mvc模式进行代码编写, 页面可以简单的利用bootstrap进行搭建, 进而完成火车售票系统各个模块的开发

    数据库课程设计

    数据库设计是整个火车售票系统系统能否正常运转的核心, 合理的数据库设计直接影响到火车售票系统是否能够正常运行, 本系统采用mysql数据库作为数据存储, 引擎采用innoddb

    系统演示视频

    运行截图

    d01198a72ae1fbc0b17d99c5eb17e7cb.png

    基于jsp的火车售票系统-登陆功能界面

    1.jpg

    基于jsp的火车售票系统-前台首页

    2d5c039b80a44527b44f1a65e1f4248b.png

    基于jsp的火车售票系统-后台信息管理页面

    1.jpg

    火车售票系统系统架构图

    c8369ccc02ac98d0d3aa7cf957119e2d.png

    注意事项

    该基于jsp的火车售票系统项目自带源码, 论文, sql数据库, 答辩ppt, 中期检查报告

    项目首页登陆地址 https://localhost:8080/login.jsp

    项目后台陆地址 https://localhost:8080/admin/login.jsp

    测试用户 cswork 密码 123456

    测试管理员 admin 密码 admin

    功能列表

    火车售票系统系统登陆模块, 实现火车售票系统系统的登陆注册权限角色用户的增删改查

    火车售票系统用户管理模块, 实现火车售票系统系统的信息管理与增删改查

    前台信息管理模块, 面向普通用户, 实现普通用户对火车售票系统的录入 修改 删除 自定义查询

    超级管理员管理, 实现后台管理员对火车售票系统系统的各个模块管理功能, 各个子模块高内聚低耦合

    展开全文
  • 售票信息:身份证号,姓名,出发日期,车次,出发站,到达站等; 系统能完成以下功能: (1)录入信息用文件保存; (2)能完成对火车票信息的录入、修改和删除; (3)能进行各种信息的查询。
  • 下面小编就为大家带来一篇java多线程之火车售票系统模拟实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 这个不知道格式对不对,因为传的时候我已经把软件卸载了所以打不开,如果有问题大家可以留言呀,然后做好的用例图,时序图什么的窝用文档再上传一次
  • 火车售票系统(设计模式分析) 我们使用了visual studio开发工具,利用winform平台实现了客户端的功能,其中有管理员账号的注册与登录,管理员进行增加车次与取消车次的操作。 一、设计模式定义 设计模式一套被反复...

    火车售票系统(设计模式分析)

    我们使用了visual studio开发工具,利用winform平台实现了客户端的功能,其中有管理员账号的注册与登录,管理员进行增加车次与取消车次的操作。

    一、设计模式定义

    设计模式一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结,是一种用于对软件系统中不断重现的设计问题的解决方案进行文档化的技术,是一种共享专家设计经验的技术。设计模式的目的是为了可重用代码、让代码更容易被他人理解、提高代码可靠性。

    二、简单工厂模式的运用

    简单工厂模式 :定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

    在本实验中,实现管理员增加车次与取消车次,定义抽象产品类Operation,其中声明公共业务方法和抽象业务方法。定义具体产品类AddTrainMethod(增加车次),继承自Operation类,实现业务方法。定义具体产品类DeleteTrainMethod(取消车次)继承自Operation类,实现业务方法。

    定义工厂类Factory,封装GetOperation方法,根据传入的参数不同创建、返回不同的具体产品类的对象。当参数为“ADD”,创建并返回AddTrainMethod对象,当参数为“DELETE”,创建并返回DeleteTrainMethod对象。

    Operation.cs

    using MySql.Data.MySqlClient;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace TrainTicketSystem
    {
        abstract  class Operation
        {
            
            public void MethodSame()//公共业务方法
            {
    
            }
    
            public abstract void MethodDiff();
        }
    
        class AddTrainMethod : Operation
        {
            public override void MethodDiff()
            {
                AddTrainForm add = new AddTrainForm();
                add.ShowDialog();
            }
        }
        class DeleteTrainMethod : Operation
        {
            MySqlConnection conn = null;
    
            public override void MethodDiff()
            {
                try
                {
                    MySqlConnection myconn = new MySqlConnection(CurrentNeed.Conne);
                    myconn.Open();
                    MySqlCommand mycom = new MySqlCommand("delete from train where ID = '" + CurrentNeed.ID + "'", myconn);
                    mycom.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("查询错误!" + ex.Message);
                }
                finally
                {
                    if (conn != null)
                    {
                        conn.Close();
                    }
                }
            }
        }
    
    
        class Factory
        {
            public static Operation GetOperation(string g)
            {
                Operation operation = null;
                if (g.Equals("ADD"))
                {
                    operation = new AddTrainMethod();
                }
                else if (g.Equals("DELETE"))
                {
                    operation = new DeleteTrainMethod();
                }
                return operation;
            }
        }
    
    
    }
    
    

    三、观察者模式的运用

    观察者模式:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。

    在本实验中,实现了增加车次和删除车次后菜单界面更新操作后的结果。当增加车次或者删除车次后,显示表得到通知并自动更新。

    Refresh.cs

    using MySql.Data.MySqlClient;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace TrainTicketSystem
    {
        class Refersh
        {
            
            public static DataSet newDataSet()//观察者模式的被通知者
            {
                MySqlConnection conn = null;
                DataSet ds;
                try
                {
                    conn = new MySqlConnection(CurrentNeed.Conne);
                    string sql = "select * from train";
                    MySqlDataAdapter sda = new MySqlDataAdapter(sql, conn);
                    conn.Open();
                    ds = new DataSet(); 
                    sda.Fill(ds);
                    return ds;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("查询错误!" + ex.Message);
                    return null;
                }
                finally
                {
                    if (conn != null)
                    {
                        conn.Close();
                        
                    }
                }
                
            }
            
        }
    }
    
    

    四、代码实现

    1. 用户登录界面

    登录界面用户登录界面

    Login.cs

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace TrainTicketSystem
    {
        public partial class Login : Form
        {
            public Login()
            {
                InitializeComponent();
                CurrentNeed.Conne = "Data Source='localhost';Initial Catalog='flight_system';User Id = 'root';Password ='123456';charset=utf8;charset='utf8'; pooling=true;";
    
            }
    
            private void button1_Click(object sender, EventArgs e)//登录
            {
                CurrentNeed.Conne = "Data Source='localhost';Initial Catalog='flight_system';User Id = 'root';Password ='123456';charset=utf8;charset='utf8'; pooling=true;";
                
                Account account = new Account();
                if (PasswordText.Text == string.Empty || AccountText.Text == string.Empty)
                {
                    MessageBox.Show("请输入账号或密码!", "提示");
                }
                else
                {
                    if (account.IsAccountCorrect(int.Parse(AccountText.Text), PasswordText.Text))
                    {
                        CurrentNeed.UserAccount = int.Parse(AccountText.Text);
                        Menu MainMenuForm = new Menu();
                        this.Hide();
                        MainMenuForm.ShowDialog();
                        Application.ExitThread();
                    }
                    else
                    {
                        MessageBox.Show("账号或密码输入错误", "提示");
                        PasswordText.Clear();
                        AccountText.Clear();
                    }
                }
            }
    
            private void button2_Click(object sender, EventArgs e)//注册
            {
                Register RegisterForm = new Register();
                this.Hide();
                RegisterForm.ShowDialog();
                Application.ExitThread();
            }
        }
    }
    

    2. 用户注册界面

    注册界面
    用户注册界面

    已注册账号再次注册提示重复
    已注册账号提示重复

    成功创建新的账号
    成功创建新账号

    Register.cs

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace TrainTicketSystem
    {
        public partial class Register : Form
        {
            public Register()
            {
                InitializeComponent();
            }
    
            private void button2_Click(object sender, EventArgs e)//返回登录
            {
                Login LoginForm = new Login();
                this.Hide();
                LoginForm.ShowDialog();
                Application.ExitThread();
            }
    
            private void button1_Click(object sender, EventArgs e)//确定注册
            {
                if (tbAccount.Text == string.Empty || tbPassword.Text == string.Empty)
                {
                    MessageBox.Show("请输入相应内容!", "提示");
                    tbAccount.Clear();
                    tbPassword.Clear();
                    tbConfirm.Clear();
                }
                else
                {
                    Account account = new Account();
                    if (!account.IsAccountLegal(int.Parse(tbAccount.Text)))
                    {
                        MessageBox.Show("该账号重复!", "提示");
                        tbAccount.Clear();
                        tbPassword.Clear();
                        tbConfirm.Clear();
                    }
                    else
                    {
    
    
                        if (tbPassword.Text == tbConfirm.Text)
                        {
                            account.CreateAccount(int.Parse(tbAccount.Text), tbPassword.Text);
                            MessageBox.Show("您创建了一个新账户!", "创建成功");
                            Login LoginUIForm = new Login();
                            this.Hide();
                            LoginUIForm.ShowDialog();
                            Application.ExitThread();
                        }
                        else
                        {
                            MessageBox.Show("密码输入不一致!", "创建失败");
                            tbAccount.Clear();
                            tbConfirm.Clear();
                            tbPassword.Clear();
                            
                        }
    
                    }
                }
    
            }
        }
    }
    
    

    3. 菜单界面
    初始菜单功能选择界面

    Menu.cs

    using MySql.Data.MySqlClient;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace TrainTicketSystem
    {
        public partial class Menu : Form
        {
            public Menu()
            {
                InitializeComponent();
                RefershView(Refersh.newDataSet());
            }
            
            MySqlConnection conn = null;
            string connStr = CurrentNeed.Conne;
            private void button1_Click(object sender, EventArgs e)//添加
            {
                Operation op = Factory.GetOperation("ADD");
                op.MethodDiff();
                RefershView(Refersh.newDataSet());
            }
            public void RefershView(DataSet ds)//显示表
            {
    
                dataGridView1.DataSource = ds.Tables[0];
                dataGridView1.Columns[0].HeaderText = "序号";
                dataGridView1.Columns[1].HeaderText = "火车号";
                dataGridView1.Columns[2].HeaderText = "始发站";
                dataGridView1.Columns[3].HeaderText = "目的站";
                dataGridView1.Columns[4].HeaderText = "发车时间";
                dataGridView1.Columns[5].HeaderText = "到达时间";
                dataGridView1.Columns[6].HeaderText = "车票数量";
                dataGridView1.Columns[7].HeaderText = "车票价格";
                dataGridView1.Columns[0].Visible = false;
    
            }
            private void button2_Click(object sender, EventArgs e)//删除
            {
                if (dataGridView1.DataSource != null)
                {
                    if (MessageBox.Show("确认删除?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        int ind = dataGridView1.SelectedRows[0].Index;
                        DataGridViewRow row = dataGridView1.Rows[ind];
                        CurrentNeed.ID = Convert.ToInt32(row.Cells[0].Value);
                        Operation op = Factory.GetOperation("DELETE");
                        op.MethodDiff();
                        RefershView(Refersh.newDataSet());
                    }
                }
            }
        }
    
    
    

    4. 增加车次与取消车次

    • 增加车次

    增加车次界面
    增加车次界面
    添加成功
    显示增加成功

    AddTrainForm.cs

    using MySql.Data.MySqlClient;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace TrainTicketSystem
    {
        public partial class AddTrainForm : Form
        {
    
            MySqlConnection connection;
            public AddTrainForm()
            {
                string ConStr = CurrentNeed.Conne;
                connection = new MySqlConnection(ConStr);
                connection.Open();
                Console.WriteLine("Connect!");
                InitializeComponent();
            }
            
    
    
            //生产一个列车
            private Train CreateNewTrain()
            {
                try
                {
                    Train train = new Train();
                    train.TrainID = int.Parse(trainIDBox.Text);
                    train.TicketNum = int.Parse(NumBox.Text);
                    train.StartStation = startStationBox.Text;
                    train.ArriveStation = endStationBox.Text;
                    train.StartTime = startTimePicker.Value;
                    train.ArriveTime = endTimePicker.Value;
                    train.TicketPrice = int.Parse(PriceBox.Text);
                    return train;
                }
                catch(Exception e)
                {
                    Console.WriteLine(e.Message);
                    return null;
                }
                
            }
    
    
            //判断ID合法性
            public bool IsTrainIDLegal(int id)
            {
    
                try
                {
                    string sql = "select TrainID from train;";
                    MySqlCommand command = new MySqlCommand(sql, connection);
                    MySqlDataReader reader = command.ExecuteReader();
    
                    while (reader.Read())
                    {
                        if (id.ToString() == reader.GetString(0))
                        {
                            reader.Close();
                            return false;
                        }
    
                    }
                    reader.Close();
                    return true;
                }
                catch(Exception e)
                {
                    Console.WriteLine(e.Message  );
                    return false;
                }
            }
    
    
            private void okButton_Click(object sender, EventArgs e)
            {
    
                if(startTimePicker.Value > endTimePicker.Value)
                {
                    tiplb.Text = "时间错误!";
                    return;
                }
    
                if(startStationBox.Text == endStationBox.Text)
                {
                    tiplb.Text = "站点错误!";
                    return;
                }
    
                int id = int.Parse(trainIDBox.Text);
                if (!IsTrainIDLegal(id))
                    tiplb.Text = "该id已存在!";                          
    
                try
                {
                    Train train = CreateNewTrain();
                    if (train != null)
                        train.AddNewTrain();
                    tiplb.Text = "添加成功!";
                }
                catch
                {
                    tiplb.Text += " 输入不合法!";
                    Console.WriteLine("添加失败!");
                }
                
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                this.Hide();
                this.Dispose();
            }
        }
    }
    
    1. 取消车次

    选择要删除的车次,点击删除按钮,取消车次
    取消车次
    删除成功后菜单界面更新
    删除成功
    5. Ticket类

    Ticket.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TrainTicketSystem
    {
        class Ticket
        {
            private int trainID;
            private int ticketID;
            
            public int TrainID
            {
                get
                {
                    return trainID;
                }
                set
                {
                    trainID = value;
                }
            }
    
            public int TicketID
            {
                get
                {
                    return ticketID;
                }
                set
                {
                    ticketID = value;
                }
            }
        }
    }
    
    

    6. TicketManager类

    TicketManager.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TrainTicketSystem
    {
        class TicketManager:Account
        {
            public void AddTrain()
            {
                Operation op;
                op = Factory.GetOperation("ADD");
                op.MethodDiff();
                op.MethodSame();
            }
    
    
            public void DeleteTrain()
            {
                Operation op;
                op = Factory.GetOperation("DELETE");
                op.MethodDiff();
                op.MethodSame();
            }
        }
    }
    
    

    7. Train类

    Train.cs

    using MySql.Data.MySqlClient;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TrainTicketSystem
    {
        class Train
        {
            private int trainID;
            private int ticketPrice;
            private string startStation;
            private string arriveStation;
            private DateTime startTime;
            private DateTime arriveTime;
            private int ticketNum;
    
            MySqlConnection Conn;
            public void DatabaseConnection()
            {
                string ConStr = CurrentNeed.Conne;
                Conn = new MySqlConnection(ConStr);
                Conn.Open();
                Console.WriteLine("Connect!");
            }
    
    
            public int TrainID
            {
                get
                {
                    return trainID;
                }
                set
                {
                    trainID = value;
                }
            }
            public string StartStation
            {
                get
                {
                    return startStation;
                }
                set
                {
                    startStation = value;
                }
            }
            public int TicketPrice
            {
                get
                {
                    return ticketPrice;
    
                }
                set
                {
                    ticketPrice = value;
                }
            }
            public string ArriveStation
            {
                get
                {
                    return arriveStation;
    
                }
                set
                {
                    arriveStation = value;
                }
            }
    
    
            public DateTime StartTime
            {
                get
                {
                    return startTime;
    
                }
                set
                {
                    startTime = value;
                }
            }
            public DateTime ArriveTime
            {
                get
                {
                    return arriveTime;
    
                }
                set
                {
                    arriveTime = value;
                }
            }
    
    
            public int TicketNum
            {
                get
                {
                    return ticketNum;
    
                }
                set
                {
                    ticketNum = value;
                }
            }
    
            public void AddNewTrain()//创建新列车
            {
                DatabaseConnection();
                try
                {
                    string sql = "insert into train(TrainID ,StartStation, EndStation, StartTime, EndTime, Num, TicketPrice) values('" + TrainID + "','" + StartStation + "','" + ArriveStation + "','" + StartTime + "','" + ArriveTime + "','" + TicketNum + "','" + TicketPrice + "')";
                    MySqlCommand command = new MySqlCommand(sql, Conn);
                    command.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    Console.WriteLine("添加列车失败: " + e.Message);
                }
    
            }
        }
    }
    
    
    展开全文
  • 火车售票系统

    2013-03-18 13:59:25
    火车售票系统 的论文样本 本文针对火车站的售票实际情况,按照软件工程的结构化设计思想,经过项目的需求分析、总体设计、详细设计、以及编码实现和测试等步骤设计开发了火车票的售票系统。以及运用功能需求描述、...
  • 链表,文件实现火车票信息的添加删除,分为管理员端与客户端两部分
  • 火车售票系统(Web服务开发)一、WebAPI(1)model层(2)repository层(3)controller层二、客户端调用WebAPI(1)注册(2)登录(3)删除账户运行结果截图(1)WebAPI运行(2)注册(3)登录(4)删除 WebAPI完整...
  • javaSE火车售票系统

    2019-04-30 21:34:47
    用java SE写的一个简单的火车售票系统 数据库用的Mysql 文件都在压缩包里
  • 实现火车售票管理系统功能非常可以Java+MySQL
  • jsp+sqlserver做的,功能还是可以的,比较全面。用到了三大框架,主要实现用户购票,管理员的车次及用户管理等。配置时,程序里的红叉不要改,我也弄不好,不影响。myeclipse
  • JavaSE 火车售票系统

    2014-08-14 17:01:50
    Java 工程 ,对Java感兴趣的人有一定帮助
  • 实用标准文案精彩文档...import java.awt.Color;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql....
  • 若立项火车售票系统(包含取票、检票等),请面向实际领域、基于计算机系统工程角度,分析阐述如果要完成实现该系统需要使用哪些技术</p>
  • 程序设计要求用C语言写一个简单的火车售票系统,主要实现的功能为:● 录入班次信息●浏览班次信息●按班次号查询●按终点站查询●按余票数量排序保存●售票●退票●更新班次信息●退出系统所有的班次信息保存在...
  • java火车售票系统(含数据库(免费))

    千次阅读 多人点赞 2021-04-27 16:49:25
    登陆界面 站点查询页面 售票类型增加 售票管理 数据库部分

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,659
精华内容 3,463
关键字:

火车售票

友情链接: mysdi_ctr.rar