欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    计算机软件技术基础课程设计铁路售票查询系统的设计与实现.doc

    • 资源ID:2386196       资源大小:425.50KB        全文页数:24页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机软件技术基础课程设计铁路售票查询系统的设计与实现.doc

    湖南文理学院课程设计报告课程名称: 计算机软件技术基础课程设计 系 部: 电气与信息工程学院 专业班级: 通信09103班 学生姓名: 指导教师: 完成时间: 2011.12.27 报告成绩: 评阅意见: 评阅教师 日期 目录摘要3关键词3第一章 需求分析41.1 用户功能需求41.2 数据流图6第二章 概念结构设计72.1 火车基本表72.2 火车时刻表72.3 火车站表52.4 省份表6 第三章 物理结构设计8 第四章 系统程序的设计9 课程设计的总结22 参考文献:23 致 谢:23铁路售票查询系统的设计与实现摘要:它是通过系统的方法、原理来售出火车票。本款系统采用人性化的售票管理模式,能很好的解决了乘客购票难,售票工作人员任务重的问题。本款软件采用身份证作为身份验证的初始凭证,乘客按照系统所显示的操作逐一输入票务信息。系统会通过预先存入的程序导出客户所需信息和客户要求。为了防止非法份子使用假身份证购票,在预命令中就事先输入了相关的信息,此类状况会直接导出无效信息,并显示红色警报信息。关键词: 铁路;售票;查询;系统;身份证Abstract:It is through a systematic approach, principle to sell train tickets. This system adopts the humanized management mode, it can be a good solution to the passenger ticket, ticket sales staff arduous tasks of the problem. The software adopts the identity card as the authentication certificate according to the initial, passenger system revealed by operation to enter one by one ticket information. The system will advance through a stored program derived required customer information and customer requirements. In order to prevent unauthorised person using a false identity card purchase, the prefetch commands in advance input the relevant information, this kind of situation will directly export the invalid information, and display the red alert information.Keyword:Railway; ticketing; query; system; identity card一、 需求分析中国地域广大,火车线路错综复杂。另一方面人们生活质量逐渐提高,旅游业发展迅猛,外出乘车旅游的旅客也越发增多,为了能选择一个最佳路线,我们很有需要建立一个查询火车路线,进而选定火车票的系统。全国有大量的人员通过搭乘火车到达目的地。而与火车的特殊性及可能经过多个城市,每个城市的车站可以出售此火车的车票。而且同一车站可能有多辆车经过。许多希望以最快的方式选择自己想来乘坐的那一趟列车。所以以人工的方式是不可能实现这种功能的。一种可行的方案是基于客户端服务器的体系结构。服务器为数据库系统,存储所有必要的信息。客户端通过连接到服务的应用程序快速、准确地完成相应的工作。列车票务管理系统的实施,将会在一定程度上促进铁路客运生产力和生产关系的变革,增强市场竞争能力,提高铁路部门的工作效率,提升管理水平,减少劳动强度,方便广大旅客购票,有一定的社会和经济效益。1.1 用户功能需求 旅客购票需求 l 按车次查询车票信息:旅客可根据始发站名和终到站名查询到全国任意两站之间的所有车次,并且相应查询出两站的距离公里数、票价、经过的时间和车次类型等各 种信息。l 按车站查询车票信息:用户直接输入起始站点和终点站,选择火车车次和车票种类,系统输出满足条件的详细车票信息在详细调查了用户需求之后,就要开始分析用户需求。在此,我们采用自顶向下的结构化分析方法(SA方法)。首先,定义全局概念结构的框架,如下图所示。 查询系统简单总体框架结构图分解总系统为子系统后 系统数据流图分别简化为如下模型l 查询系统模型:l 分类查询功能:l 子车次查询系统: l 子车站查询系统: 依此类推,将所有子系统全部细化。将所有用户需求分析完毕之后,就要开始构造数据字典了。经过分析之后,我们需要五个不同的基本表和关系表来完成该系统的数据储存。分别是火车基本表、火车时刻表、火车站表、省份表、站点火车表。数据结构定义如下表所示。数据结构名含义说明组成火车基本表定义了各列火车的简单信息火车车次号,火车种类,始发站,终点站,始发时间,到站时间,总路程,总时间火车时刻表定义了所有列车的有关信息火车车次号,火车站ID,火车站名,站次,日期,出发时间,到站时间,绝对路程,票种及票价火车站表定义了各列火车及其经过车站信息火车车次号,车站名,火车站ID省份表定义了全国省份基本信息省份名,省份ID,省份拼音缩写站点火车表定义全国各省份所拥有的车站信息火车站ID,火车站名,省份ID,火车编号1.2 数据流图使用结构化分析方法,确定系统的数据主要是身份证号、车次、终点站名、发车时间和车票,对数据的操作主要有身份证证件的辨伪、车次修改、终点站修改、发车时间修改、售票及打印,可以确定系统的处理逻辑和流程,得到如下所示的系统数据流图。二、概念结构设计2.1 火车基本表:2.2 火车时刻表:2.3 火车站表:2.4 省份表:三、物理结构设计系统软件结构图:四、系统程序的设计源程序:#include<stdio.h>#include<malloc.h>#define MAX 100#define N 50 typedef struct time /时间类型 int x,y,z; /分别对应年,月,日TIME; typedef struct cnode /票信息类型 int no; /票号 int id; /购票人证件号 TIME date; /购票日期 struct cnode *next;CNODE; typedef struct tnode /车次信息类型 char data; /车次编号 struct tnode *lchild,*rchild; CNODE *head;TNODE; void create(); /按车次建立二叉排序树void insert(int ); /增加新的车次(二叉排序树的插入)void del(); /取消车次(二叉排序树节点删除)void inorder(TNODE *); /中序遍历车次二叉排序树(仅显示车次信息)void inorder_all(TNODE *); /中序遍历车次二叉排序树(显示车次及售票信息)void preorder(TNODE *); /先序遍历车次二叉排序树(仅显示车次信息)TNODE *search(); /按车次编号搜索CNODE *insert_c(CNODE *); /插入新的售票信息(单张)CNODE *insert_c_more(CNODE *); /插入新的售票信息(批量)CNODE *del_c(CNODE *,CNODE *); /退票处理(删除售票信息)CNODE *search_c(CNODE *,int); /按票号查询void search_c_id(CNODE *,int); /按购票人证件号搜索(限定某车次)void search_c_id_all(TNODE *,int); /按购票人证件号搜索(所有车次)void search_date(CNODE *,TIME); /按购票日期搜索(限定某车次)void search_date_all(TNODE *,TIME); /按购票日期搜索(所有车次)void print_c(CNODE *); /输出售票纪录(单张)void print_c_all(CNODE *); /输出售票纪录(批量) TNODE *root=NULL; void main() int i,func,no,ok; TNODE *t; CNODE *c; TIME d; printf("nnn"); for(i=0;i<15;i+) printf("="); printf("列车售票信息管理系统"); for(i=0;i<15;i+) printf("="); printf("n"); printf("t1.车次信息管理n"); printf("t2.售票记录管理n"); printf("t3.售票记录查询n"); printf("t4.售票记录一览n"); printf("t5.退出系统n"); for(i=0;i<N;i+) printf("="); printf("n请选择您所需要的功能:"); fflush(stdin); scanf("%d",&func); switch(func) case 1: printf("nn车次信息管理>>>>n"); for(i=0;i<N;i+) printf("="); printf("nt1.增加新的车次"); printf("nt2.取消车次"); printf("nt3.返回上级菜单n"); for(i=0;i<N;i+) printf("="); printf("n请选择您所需要的功能:"); fflush(stdin); scanf("%d",&func); switch(func) case 1: create(); printf("n售票信息更新成功!nn"); break; case 2:del();break; case 3:main();break; default:printf("n错误功能号输入有误!请重新输入!"); break; case 2: printf("nn售票记录管理>>>>n"); for(i=0;i<N;i+) printf("="); printf("nt1.增加新的售票记录"); printf("nt2.退票"); printf("nt3.返回上级菜单n"); for(i=0;i<N;i+) printf("="); printf("n请选择您所需要的功能:"); fflush(stdin); scanf("%d",&func); switch(func) case 1: t=search(); if(t!=NULL) t->head=insert_c_more(t->head); break; case 2: t=search(); printf("需要退票的票号:"); scanf("%d",&no); t->head=del_c(t->head,search_c(t->head,no); break; case 3:main();break; default:printf("n错误功能号输入有误!请重新输入!"); break; case 3: printf("nn售票记录查询>>>>n"); for(i=0;i<N;i+) printf("="); printf("nt1.按票号搜索"); printf("nt2.按购票者证件号搜索"); printf("nt3.按购票日期搜索"); printf("nt4.返回上级菜单n"); for(i=0;i<N;i+) printf("="); printf("n请选择您所需要的功能:"); fflush(stdin); scanf("%d",&func); switch(func) case 1: t=search(); if(t!=NULL) printf("n请输入您所要查询的票号:"); scanf("%d",&no); c=search_c(t->head,no); if(c=NULL) printf("错误没有该票号的纪录!该票还未售出或为废票!自动返回上级菜单n."); break; case 2: printf("n请输入您所要查询的购票者证件号:"); scanf("%d",&no); search_c_id_all(root,no); printf("搜索完毕!自动返回上级菜单n."); break; case 3: do printf("n请输入您所要查询的日期(格式: yy-mm-dd):"); scanf("%d-%d-%d",&d.x,&d.y,&d.z); if(d.y<13&&d.y>0) if(d.y=1|d.y=3|d.y=5|d.y=7|d.y=8|d.y=10|d.y=12) if(d.z<32&&d.z>0) ok=1; else if(d.z=2) if(d.z<30&&d.z>0) ok=1; else if(d.z<31&&d.z>0) ok=1; else ok=0; if(!ok) printf("n错误日期输入有误!请重新输入!"); while(!ok); printf("n指定车次吗?(1->是,0->否):"); scanf("%d",&ok); if(ok) search_date(search()->head,d); else search_date_all(root,d); break; case 4:main();break; default:printf("n错误功能号输入有误!自动返回上级菜单n."); break; case 4: printf("nn售票记录一览>>>>n"); for(i=0;i<N;i+) printf("="); printf("nt1.仅浏览车次"); printf("nt2.指定车次已售票记录"); printf("nt3.所有车次已售票记录"); printf("nt4.测试:先序遍历车次"); printf("nt5.返回上级菜单n"); for(i=0;i<N;i+) printf("="); printf("n请选择您所需要的功能:"); fflush(stdin); scanf("%d",&func); switch(func) case 1: printf("n+仅浏览车次n"); if(root=NULL) printf("错误无车次纪录!"); elseinorder(root);printf("n"); break; case 2: printf("n+指定车次已售票记录n"); t=search(); if(t!=NULL) print_c_all(t->head); printf("n"); break; case 3: printf("n+所有车次已售票记录n"); if(root=NULL) printf("错误无车次纪录!"); elseinorder_all(root);printf("n"); break; case 4: printf("n+测试:先序遍历车次n"); if(root=NULL) printf("错误无车次纪录!"); elsepreorder(root);printf("n"); break; case 5:main();break; default:printf("n错误功能号输入有误!自动返回上级菜单n."); break; case 5:exit(0); default:printf("n错误功能号输入有误!请重新输入!"); main(); void inorder_all(TNODE *ptr)if(ptr!=NULL) inorder_all(ptr->lchild); printf("%d:n",ptr->data); print_c_all(ptr->head); printf("n"); inorder_all(ptr->rchild); void inorder(TNODE *ptr)if(ptr!=NULL) inorder(ptr->lchild); printf("%dt",ptr->data); inorder(ptr->rchild); void preorder(TNODE *ptr)if(ptr!=NULL) printf("%dt ",ptr->data); preorder(ptr->lchild); preorder(ptr->rchild); void print_c(CNODE *tkt) if(tkt!=NULL) printf("t%dt%dt%d-%d-%dn",tkt->no,tkt->id,tkt->date.x,tkt->date.y,tkt->date.z); void print_c_all(CNODE *head) int i=0,j=0; if(head=NULL)printf("n记录为空!n");return; for(i=0;i<N;i+) printf("="); printf("nNOt票号t购票者证件号t购票日期(年-月-日)n"); for(i=0;i<N;i+) printf("-"); for(j=0;head!=NULL;j+) printf("n%d",j); print_c(head); head=head->next; printf("n"); for(i=0;i<N;i+) printf("-"); printf("n总计 %d 条记录n",j); for(i=0;i<N;i+) printf("="); printf("n"); void create()int n,i;int kMAX;printf("n您所希望增加车次的数量:");scanf("%d",&n);for(i=0;i<n;i+) printf("新增第%d列车次:",i+1); scanf("%d",&ki);for(i=0;i<n;i+) insert(ki); void insert(int m)TNODE *p1,*p2;if(root=NULL) root=(TNODE *)malloc(sizeof(TNODE); root->data=m; root->lchild=root->rchild=NULL; root->head=NULL; else p1=root; while(m!=p1->data) if(m<p1->data)&&(p1->lchild!=NULL) p1=p1->lchild; else if(m>p1->data)&&(p1->rchild!=NULL) p1=p1->rchild; else if(m<p1->data)&&(p1->lchild=NULL) p2=(TNODE *)malloc(sizeof(TNODE); p2->data=m; p2->lchild=p2->rchild=NULL; p2->head=NULL; p1->lchild=p2; return; else if(m>p1->data)&&(p1->rchild=NULL) p2=(TNODE *)malloc(sizeof(TNODE); p2->data=m; p2->lchild=p2->rchild=NULL; p2->head=NULL; p1->rchild=p2; return; printf("n错误未能成功增加车次%d,车次号 %d 已存在!",m,m); TNODE *search() int key; TNODE *p; p=root; printf("n输入您所要查找的车次编号:"); scanf("%d",&key); while(p!=NULL&&p->data!=key) if(key<p->data)p=p->lchild; else if(key>p->data)p=p->rchild; if(p=NULL) printf("n该车次不存在!"); return(p); void del() int key; TNODE *p1,*p2,*p3,*temp; p1=p2=root; p3=temp=NULL; printf("n请输入您想要取消的车次编号:"); scanf("%d",&key); while(p2!=NULL&&p2->data!=key) if(key<p2->data)p1=p2;p2=p2->lchild; else if(key>p2->data)p1=p2;p2=p1->rchild; if(p2=NULL)printf("n错误该车次不存在!返回上级菜单n.");return; else if(p2->lchild=NULL&&p2->rchild=NULL) if(p1->lchild=p2) p1->lchild=NULL; if(p1->rchild=p2) p1->rchild=NULL; temp=p2; if(root=p2) temp=root;root=NULL; else if(p2->rchild=NULL) temp=p2->lchild; p2->data=temp->data; p2->lchild=temp->lchild; p2->rchild=temp->rchild; else if(p2->lchild=NULL) temp=p2->rchild; p2->data=temp->data; p2->lchild=temp->lchild; p2->rchild=temp->rchild; else p3=p2; temp=p2->lchild; while(temp->rchild!=NULL)p3=temp;temp=temp->rchild; p2->data=temp->data; if(p3=p2) p3->lchild=temp->lchild; else p3->rchild=temp->lchild; free(temp); printf("车次 %d 已取消!nn",key); CNODE *insert_c(CNODE *head) CNODE *k,*p; k=(CNODE *)malloc(sizeof(CNODE); do printf("n车票编号:"); scanf("%d",&k->no); p=search_c(head,k->no); if(p!=NULL) printf("n错误该票已被购买!请重新选择!n"); while(p!=NULL); printf("购票者证件号:"); scanf("%d",&k->id); printf("购票日期(格式:yy-mm-dd):"); scanf("%d-%d-%d",&k->date.x,&k->date.y,&k->date.z); k->next=head; head=k; return(head); CNODE *insert_c_more(CNODE *head) int n,i; printf("n请输入批量新增售票记录数:"); fflush(stdin); scanf("%d",&n); for(i=0;i<n;i+) head=insert_c(head); printf("n售票记录更新成功!n"); return(head); CNODE *search_c(CNODE *head,int id) CNODE *temp,*s; s=temp=head; while(temp!=NULL&&temp->id!=id)s=temp;temp=temp->next; print_c(temp); if(temp!=NULL) return(s); else return NULL; void search_c_id(CNODE *head,int id) CNODE *s,*head_s; s=head_s=NULL; if(head=NULL) printf("无该证件号纪录!n"); while(head!=NULL) if(head->id=id) s=(CNODE *)malloc(sizeof(CNODE); s->no=head->no;s->id=head->id;s->date=head->date; s->next=head_s;head_s=s; head=head->next; print_c_all

    注意事项

    本文(计算机软件技术基础课程设计铁路售票查询系统的设计与实现.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开