火车订票系统的设计与实现开题报告
- 格式:pdf
- 大小:5.74 MB
- 文档页数:7
毕业论文开题报告
申请课题火车订票管理系统的设计与实现
学号
班级
申请者有全套开题报告、论文、程序、英文翻译联系电话可联系本人
Email : qq:1113121143 参加者 RMB:200 联系电话
Email :
指导教师
申请日期 2015年1月16日
计算机科学与技术学院
填写说明
1. 毕业论文的选题应以专业课的内容为主,可以针对某些基础理论和学术问题进行探讨,也可以结合科技生产和社会生活的实际问题进行研究、开发与设计。
2. 毕业论文一般为一人一题。
如果选题确需多人合作完成一个课题,须由指导老师提出,课题需要多人合作的最多2人,经学院教学委员会审批同意,每个学生必须独立完成其中的一部分工作,并独立撰写各自的毕业论文,在课题名称后面注明其相应的子课题。
多人合作的须在封面上填写参加者的姓名和联系方式。
3. 所有学生的选题经研究确定后,一般不允许中途更改课题。
特殊情况需要更改课题者,须由指导教师调整或更改选题,且填写《毕业设计(论文)课题变动申请表》,经主管领导批准后方可调整或更改。
4. 成果形式一栏填写:论文。
5. 本开题报告最迟应在开始毕业论文开始前六周确定,并上报给指导老师,必须经指导老师和学院批准方才有效,否则无效。
6. 本开题报告使用A4纸张,上、下、左、右页边距均为2.5cm,请不要改变本开题报告页面设置。
所有自己书写的内容请使用楷体。
铁路客票系统的设计及实现的开题报告1.选题背景铁路作为我国主要的交通运输方式之一,其客运量一直位于前列。
在现代化发展的进程中,数字化、信息化、网络化已成为时代的主流。
随着人们通讯、信息获取和处理需求的日益增长,传统的售票方式已经不能满足广大旅客的需求。
因此,一个更高效、更便捷、更智能的铁路客票系统亟待建立。
2.研究目的本项目旨在为铁路客票管理部门建立一个更加高效、便捷、智能的铁路客票系统,以方便广大用户购票和管理客票。
3.研究内容本项目的研究内容主要包括:(1)系统需求分析:通过对传统的客票管理方式进行分析,找出瓶颈和需要改进的地方,明确系统的功能需求和性能需求。
(2)系统架构设计:根据需求分析的结果,设计系统的整体架构,包括前端、后台、数据库等。
(3)关键技术研究:研究实现系统所需要的关键技术,如用户认证、支付方式、数据存储等。
(4)系统实现:根据需求分析和系统架构设计,实现系统的各个功能模块。
(5)系统测试与优化:对系统进行全面测试,发现并修复程序错误,提高系统的鲁棒性和可用性。
4.研究方法(1)文献调研:对国内外相关研究和实践进行调查和研究,获得铁路客票管理的背景资料和经验。
(2)实地调研:通过实地考察铁路客票管理部门,深入了解其管理方式和存在的问题,从而为系统需求分析提供数据支持。
(3)面向对象分析和设计:采用面向对象的分析和设计方法,对系统进行模块化设计。
(4)Web开发:采用Web技术实现系统的前后台交互设计和实现。
(5)数据库开发:采用关系型数据库设计,完成数据表的建立和管理,实现有效的数据存储与检索。
5.预期成果本项目的预期成果是一个高效、便捷、智能的铁路客票管理系统,能够实现以下功能:(1)实现在线购票、改签、退票等功能。
(2)提供付款方式选择。
(3)实现电子票和纸质票选择。
(4)提供选座和选舱等功能。
(5)提供用户语音、短信、邮件等多种提醒方式。
(6)提供查询订单、历史订单等功能。
火车票网上订票系统的设计与实现火车票网上订票系统的设计与实现需要考虑以下方面:1. 用户登录和注册:为了保障系统的安全性和用户信息的准确性,需要设计登录和注册模块,用户需要输入用户名和密码进行登录,如果是新用户则需要进行注册。
2. 车次查询与选择:用户可以通过输入出发地、目的地、日期等信息来查询符合条件的车次信息,然后根据需求选择适合自己的车次。
3. 座位选择与预订:用户在选择了符合要求的车次后,需要根据需要选择座位,并进行预订。
系统需要支持多种座位类型,如硬座、软座、硬卧、软卧等。
4. 支付系统:用户需完成支付流程后才能成功订票,系统需要支持多种支付方式,包括在线支付和线下支付(比如银行转账)。
5. 订单管理:用户订票成功后需要生成订单,系统需要管理每个订单的状态、座位信息、支付状态等。
6. 确认票务信息:在出行前,用户需要确认票务信息,如车次、座位、车票价格、发车时间等。
7. 退票、改签:如果用户需要退票或改签,系统需要提供对应功能,用户在退票或改签时需要支付相应的手续费。
8. 后台管理系统:系统管理员需要通过后台管理系统管理车次信息、座位信息、价格信息等,还需要处理异常订单。
根据上述要求,可以采用以下技术方案来实现:1. 系统架构:采用分布式架构,包括前端界面、应用服务器和数据库服务器,前端和应用服务器使用RESTful API进行通信,应用服务器和数据库服务器采用分布式部署。
2. 开发框架和语言:前端采用React和Vue框架开发,应用服务器采用Spring Boot框架,并使用Java语言开发;数据库采用MySQL数据库。
3. 安全性和可靠性:采用HTTPS协议进行通讯,以保证数据传输的安全;使用ZooKeeper作为服务注册和发现中心,保证系统的可靠性和稳定性。
4. 可扩展性:系统采用微服务架构,可以方便地添加或删除服务,以实现系统的可扩展性。
5. 数据库设计:采用关系型数据库,设计合理的数据表结构,保证数据的一致性和完整性。
河北工业大学2015届本科毕业设计(论文)前期报告毕业设计(论文)题目:火车订票系统的设计与开发专业(方向):网络工程学生信息:学号:122523 姓名:李宇轩班级:网络121指导教师信息:教师号:04081、姓名:马梁、职称:讲师报告提交日期:2015/4/6。
一、选题的背景介绍及意义火车站市场的管理和规范问题,是困扰我们多年的一个老问题,也是政府管理中的一个难点,订票是客运业务中的一个最基本的业务,表面上看,它只是火车站业务的一个简单的部分,但是它涉及到管理与客户服务等多方面,因此,过去传统的售票方式已经不能满足现代客运业务流量剧增的客观要求,这就要求一种全新的订票方式——网上订票,来缓解订票高峰时期的客运压力,并为用户提供方便快捷的订票服务。
本次设计便是开发一个火车站网上订票系统,它能方便快捷地运用在火车站订票业务的营运之中,可以降低工作人员的工作量,提高工作人员的工作效率,同时方便顾客订票。
二、国内外研究现状及发展趋势因特网技术的飞速发展为铁路带来了全新的售票方式。
1994年10月,美国联合铁路公司率先推出了网上售票系统,乘客只须在网上输入自己的信用卡号和有效期,就可以直接购买车票。
出票方式有电子车票、车站取票、送票上门等多种方式。
网上订票给旅客带来了方便。
购票者足不出户就可在电脑上查询火车动态、票价和车票的可售情况,并直接订购车票,免去了奔波之苦。
网上订票还扩充了铁路公司的销售网点。
截至1997年9月底,世界上排名前20位的铁路公司都有了自己的网上售票系统。
网上订票的优越性使国内越来越多的铁路公司着手研制自己的网上订票系统。
1999年9月,中国羊城铁路公司的网上订票系统正式启动,只要进入羊城铁路公司的网上订座页面就可以自己订购车票了,票款的支付方式为网上支付和现金支付。
三、本课题研究内容及方案目前火车站售票的状况是仅靠手工操作,以现有的工作人员很难应付车票订购高峰时刻的大量数据处理问题。
火车票系统程序设计报告1. 引言本报告旨在介绍一个火车票系统的程序设计,该系统旨在提供用户购买火车票、查询车次信息等功能。
通过该系统,用户可以方便地预订、查询以及管理火车票信息,提高购票交通效率。
2. 功能需求火车票系统的主要功能需求如下:1. 用户注册和登录:用户可以通过注册账号和密码进行登录,以使用系统的各项功能。
2. 车次查询:用户可以根据出发地、目的地、时间等条件查询所有符合要求的车次信息。
3. 车票预订:用户可以预订特定车次的车票,并提供相应的座位选择。
4. 车票退订:用户可以取消已预订的车票。
5. 车票管理:管理员可查看所有车次信息及相应座位的预订情况,并进行车次和座位管理。
3. 系统设计3.1 数据库设计为了支持所需的功能,我们需要设计一个数据库来存储用户、车次和车票信息。
数据库的设计如下:- 用户表(User):存储用户的账号、密码、邮箱等信息。
- 车次表(Train):存储车次的出发地、目的地、时间、座位数量等信息。
- 车票表(Ticket):存储用户预订的车票信息,包括车次、座位等。
3.2 系统架构火车票系统的主要架构如下:- 用户界面:提供用户注册、登录、车次查询、车票预订和退订等功能的界面。
- 功能模块:实现用户管理、车次管理、车票管理等功能的模块。
- 数据库模块:实现与数据库的连接和数据存取的功能模块。
3.3 系统流程以下是火车票系统的主要流程:1. 用户注册:用户通过输入注册信息和密码进行账号注册。
2. 用户登录:用户输入账号和密码进行登录。
3. 车次查询:用户选择出发地、目的地、时间等条件进行车次查询。
4. 车票预订:用户选择特定车次和座位,并确认预订。
5. 车票退订:用户选择已预订的车票进行退订。
6. 管理员功能:管理员可以查看车次信息和座位情况,并进行相应管理操作。
4. 技术实现4.1 前端技术前端部分可以使用HTML、CSS和JavaScript来实现用户界面的设计和交互操作,使用AJAX技术与后端进行数据交互。
1.1 需求分析调查学生火车票预定系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析。
最重要的是调查、采集信息、分析购票人信息和火车票预定流程。
处理要求、数据的安全性与完整性要求。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户端的界面要简单明了,易于操作。
火车站为方便旅客返程,需要开辟一个火车票订票系统,这个火车订票系统可以满足旅客的主要需求。
首先是要有旅客的登陆界面,包括旅客的用户名和密码。
然后登陆到主操作界面,旅客可以进行车票的查询,显示起始车站和终点车站,乘车的日期,发车时间,座号和票价,并且在查询到自己的所要车坐的车次后可以预订车票;旅客还可更改自己的用户名和密码,以保证个人信息的安全。
如是管理员登陆的话,还可以添加车次,包括起始站,终点站,发车时间,车次类型,还可以删除某个车次;并且在需要的时候,管理员也可添加和删除用户。
1.2 流程图经过可行性分析和初步需求调查,抽象出该系统业务流程图,结合该实例具体情况,给出旅客订票的具体需求。
图1.2 旅客购票流程图1.3 系统框架在调查完了系统需求之后,就要开始分析用户需求。
在此,采用自顶向下的结构化分析方法。
首先,定义全局概念结构的框架,如图 1.3 所示:图 1.3 火车定票系统总框架图每一个子系统需要进一步细化。
车次信息系统的细化如图 1.4 所示:车票信息系统的细化如图 1.5 所示:旅客信息系统的细化如图 1.6 所示:1.3 软件模块划分1.普通用户模块在普通用户模块中可以实现登陆,用户名修改,车次查询,订票。
2.管理员模块管理员模块包含三个板块的内容:①管理员可以实现登陆,用户名修改,车次查询,订票。
②车次基本信息管理:包括添加,查询,删除车次。
③用户信息管理:包括添加,删除用户。
1.4 功能结构2 详细设计(更功能模块的实现)2.1 登陆界面①用户名两个静态文本输入框②密码①用户名编辑框登陆界面两个编辑框②密码编辑框①登录两个按钮②取销登陆界面如图 2.1 所示:图2.1 登陆界面功能的实现:①首先建立一个对话框,命名为“欢迎使用火车票预订系统”,添加两个静态文本输入框“请输入用户名”和“请输入密码”,再添加两个编辑框“用户名编辑框”和“密码编辑框”然后建立类向导。
设计题目:火车订票管理系统班级:姓名:学号:2015年1月4日1.课程设计目的和要求火车订票管理系统的主要功能包括:1. 火车线路查询功能,乘客输入终点站名称或输入车次,输出相应的火车线路信息。
2. 订票功能。
乘客输入车次和订票数,先查询该车次的余票数,若余票数大于等于订票数,则为乘客办理订票手续,要求乘客输入姓名、身份证号码,计算出总票价,产生一个新结点,将该结点添加到对应车次的链表中,然后修改该车次的余票数。
若余票数小于订票数,则输出提示信息“余票数不足,订票失败!”。
3. 退票功能。
乘客输入车次和身份证号码,在该车次对应的链表中查找该乘客,若找到,询问乘客退票数量,若退票数小订票数,则只需修改结点的订票数;若退票数等于订票数,则将该乘客对应的结点删除,然后修改该车次的余票数;若没找到,则应提示“未找到相应信息”,要求乘客重新输入车次和身份证号码,再进行查找,如果仍未找到,则输出提示信息“输入信息错误,退票失败!”。
4. 其他查询功能。
(1) 输入车次,输出该车次的全部订票信息。
(2) 输入车次,输出该车次的订票数和余票数。
(3) 输入终点站名称,输出相关火车线路的信息。
(4) 输入日期(年.月.日),输出发车时间为该天的火车线路的信息。
(5) 输出余票数为0的火车线路的信息。
2.系统总体设计2.1 系统功能模块图2.2 数据结构设计假设有5条火车线路(起点均为济南),每条线路所涉及的信息有:终点站、车次、发车时间(年.月.日.时.分)、票价、余票数(假设火车总票数为300)。
乘客订票信息包括:乘客姓名、乘客身份证号码、订票数,总票价。
本系统要求用结构体数组和链表实现,将火车线路信息存放在结构体数组中,每条线路对应一个链表,乘客订票就是在链表中插入结点,乘客退票就是在链表中删除结点。
链表的结点类型和结构体类型定义如下:typedef struct node{char name[10]; //乘客姓名char IDcard[20]; //乘客身份证号码int TicketNum; //订票数float FareSum; //总票价struct node *next; //指针成员}SN;typedef struct Dtime{short year;short month;short day;short hour;short minute;}SD;typedef struct train{char terminal[10]; //终点站char sequence[10]; //车次struct Dtime StartTime; //发车时间float fare; //票价int SpareTicketNum; //余票数struct node *head; //指针成员,指向该线路第一个订票乘客}ST;系统整体结构见图9.3所示图9.3 系统结构示意图全局变量如下:#define N1 5 //火车线路数ST b[N1]; //火车信息结构体数组#define LEN1 sizeof(ST)//火车信息结构体数据块大小#define LEN2 sizeof(SN)//乘客信息结构体数据块大小3.系统详细设计3.1 函数说明#include<stdio.h>#include<stdlib.h>#include<string.h>#define N1 5 //*************************火车线路数//**************************************************结构体类型的定义typedef struct node{char name[20];char IDcard[20];int TicketNum;float FareSum;struct node *next;}SN;typedef struct Dtime{short year;short month;short day;short hour;short minute;}SD;typedef struct train{char terminal[20];char sequence[20];struct Dtime StartTime;float fare;int SpareTicketNum;struct node *head;}ST;ST b[N1];#define LEN1 sizeof(ST)#define LEN2 sizeof(SN)//***********************************************函数声明int Menu1(void); //*************************火车订票管理系统界面int Menu2(void); //*************************其他查询功能界面int Menu3(void); //*************************第一界面void creat1(void); //*************************管理员录入信息SN* creat2(float k); //**************************录入乘客信息void find0(void); //*************************查询void dingpiao(void); //*************************订票void tuipiao(void); //**************************退票void find1(void); //*************************查找功能1void find2(void); //*************************查找功能2void find3(void); //*************************查找功能3void find4(void); //*************************查找功能4void shuchu(void); //**************************输出0票数线路功能void LIST(SN *head); //**************************输出链表void READ(void); //**************************将数据读出生成文件void WRITE(void); //**************************将链表写入文件//************************************************************主函数int main(){int a,b,c;char m[20];b=Menu3();switch(b){case 0:printf("\n\t谢谢使用,再见!\n");exit(0);case 1:printf("\n请输入密码:");scanf("%s",m);if(strcmp(m,"666")==0) creat1();else printf("\n密码输入错误!\n\n");break;case 2:while(1){c=Menu1();switch(c){case 1:find0();break;case 2:dingpiao();break;case 3:tuipiao();break;case 4:a=Menu2();switch(a){case 1:find1();break;case 2:find2();break;case 3:find3();break;case 4:find4();break;case 5:shuchu();break;case 6:break;case 0:printf("\n\t谢谢使用,再见!\n");exit(0);default:printf("\n\t您的按键有误,请重新选择!\n");}break;case 0:printf("\n\t谢谢使用,再见!\n");exit(0);default:printf("\n\t您的按键有误,请重新选择!\n");}}}}//*********************************************************各函数定义int Menu1(void){int sel;printf("\n");printf("\t--------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎进入火车订票管理系统*\n");printf("\t* *\n");printf("\t--------------------------------------------\n");printf("\n");printf("\t请选择您要使用的功能:\n\n");printf("\t 1.火车路线查询\n");printf("\t 2.订票\n");printf("\t 3.退票\n");printf("\t 4.其他查询\n");printf("\t 0.退出系统\n\n");printf("\t 请选择按键0~4\n");scanf("%d",&sel);return(sel);}int Menu2(void){int sel;printf("\n");printf("\t--------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎进入火车订票管理系统*\n");printf("\t* *\n");printf("\t--------------------------------------------\n");printf("\n");printf("\t请选择您要使用的功能:\n\n");printf("\t 1.输入车次,查询该车次的全部订票信息\n");printf("\t 2.输入车次,查询该车次的订票数和余票数\n");printf("\t 3.输入终点站名称,查询相关火车线路的信息\n");printf("\t 4.输入日期(年·月·日),查询发车时间为该天的火车线路的信息\n");printf("\t 5.查询余票数为0的火车线路信息\n");printf("\t 6.返回上一界面\n");printf("\t 0.退出系统\n\n");printf("\t 请选择按键0~6\n");scanf("%d",&sel);return(sel);}int Menu3(void){int sel;printf("\n");printf("\t--------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎进入火车订票管理系统*\n");printf("\t* *\n");printf("\t--------------------------------------------\n");printf("\n");printf("\t 1.管理员入口\n");printf("\t 2.乘客入口\n");printf("\t 0.退出系统\n\n");printf("\t 请选择按键0~2\n");scanf("%d",&sel);return(sel);}void creat1(){SN *p1;int i,j;for(i=0;i<N1;i++){printf("\n\n");printf("请输入火车终点站:");scanf("%s",b[i].terminal);printf("请输入火车车次:");scanf("%s",b[i].sequence);printf("请输入火车发车时间(年_月_日_时_分_):");scanf("%hd%hd%hd%hd%hd",&b[i].StartTime.year,&b[i].StartTime.month, &b[i].StartTime.day,&b[i].StartTime.hour,&b[i].StartTime.minute);printf("请输入火车票价:");scanf("%f",&b[i].fare);printf("请输入火车余票数:");scanf("%d",&b[i].SpareTicketNum);b[i].head=creat2(b[i].fare);}WRITE();}SN *creat2(float k){SN *p1,*p2,*head;head=NULL;int n=0,i,m;printf("请输入您要录入的乘客人数:");scanf("%d",&m);for(i=0;i<m;i++){n++;if(n==1){p1=(SN*)malloc(LEN2);if(p1==NULL) { printf("\n No enough memory!\n"); exit(0); }printf("请输入乘客姓名:");scanf("%s",p1->name);printf("请输入乘客身份证号码:");scanf("%s",p1->IDcard);printf("请输入乘客订票数:");scanf("%d",&p1->TicketNum);p1->FareSum=p1->TicketNum*k;head=p1;}else{p1=(SN*)malloc(LEN2);if(p1==NULL) { printf("\n No enough memory!\n"); exit(0); }printf("请输入乘客姓名:");scanf("%s",p1->name);printf("请输入乘客身份证号码:");scanf("%s",p1->IDcard);printf("请输入乘客订票数:");scanf("%d",&p1->TicketNum);p1->FareSum=p1->TicketNum*k;p2->next=p1;}p2=p1;}p2->next=NULL;printf("\n输入成功!\n\n");return(head);}void find0(void){int x=0;SN *p1,*p2;int i=0,n=0,m=0,j;char ch[20];FILE *fp;READ();while(!x){printf("\n请输入您要查找的火车终点站或者车次:");scanf("%s",ch);for(i=0;i<N1;i++){if(strcmp(ch,b[i].terminal)==0||strcmp(b[i].sequence,ch)==0){printf("终点站:%s 车次:%s 发车时间:%hd年%hd月%hd日%hd 时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0){printf("\n对不起,您查找的火车信息不存在!\n\n");}printf("\n继续查找请选0,退出查询请选1\n\n");printf("请选择:");scanf("%d",&x);}}void dingpiao(void){SN *p1,*p2,*p0;char ch[20];int s,i,n=0;FILE *fp;READ( );printf("\n请输入您要订购的火车车次:");scanf("%s",ch);printf("请输入您要订购的车票数:");scanf("%d",&s);for(i=0;i<N1;i++){if(strcmp(b[i].sequence,ch)==0){n++;if(s>b[i].SpareTicketNum){printf("\n余票数不足,订票失败!\n\n");break;}else{p0=(SN*)malloc(LEN2);if(p0==NULL) { printf("\n No enough memory!\n"); exit(0); }printf("\n请输入乘客姓名:");scanf("%s",p0->name);printf("请输入乘客身份证号码:");scanf("%s",p0->IDcard);p0->TicketNum=s;p0->FareSum=p0->TicketNum*b[i].fare;p0->next=b[i].head;b[i].head=p0;b[i].SpareTicketNum=b[i].SpareTicketNum-p0->TicketNum;printf("\n订票成功!\n\n");}}}if(n==0) printf("\n对不起,您的输入有误!\n\n");WRITE();}void tuipiao(void){SN *p1,*p2,*p0;char ch[20],sh[20];int t,s=0,i,j,n=0;READ();for(j=0;j<2;j++){printf("\n请输入您要退票的车次:");scanf("%s",ch);printf("请输入身份证号码:");scanf("%s",sh);for(i=0;i<N1;i++){if(strcmp(ch,b[i].sequence)==0){s++;p0=b[i].head;while(p0!=NULL){n++;if(strcmp(sh,p0->IDcard)==0){printf("请输入您要退票的数量:");scanf("%d",&t);if(t<(p0->TicketNum)){p0->TicketNum=p0->TicketNum-t;b[i].SpareTicketNum=b[i].SpareTicketNum+t;printf("\n退票成功!\n\n");goto end;}elseif(t==(p0->TicketNum)){b[i].SpareTicketNum=b[i].SpareTicketNum+p0->TicketNum;if(n==1)b[i].head=p0->next;elsep1->next=p0->next;printf("\n退票成功!\n\n");goto end;}else{printf("\n输入退票数有误!\n\n");goto end;}}p1=p0;p0=p0->next;}}}if(j==1) printf("\n未找到相应信息,请重新查找\n\n");if(s==0) {printf("\n输入信息错误,退票失败!\n\n");} }end:WRITE();}void find1(void){char ch[20];int i,n;READ();printf("\n请输入您要查询订票信息的车次:");scanf("%s",ch);for(i=0;i<N1;i++){if(strcmp(ch,b[i].sequence)==0){LIST(b[i].head);}}if(n==0) printf("\n您查找的信息不存在,请重新查找\n\n");printf("\n谢谢您的使用\n\n");}void find2(void){char ch[20];SN *p1;int i,n=0,sum=0;READ();printf("\n请输入您要查询订票信息的车次:");scanf("%s",ch);for(i=0;i<N1;i++){if(strcmp(ch,b[i].sequence)==0){p1=b[i].head;while(p1!=NULL){sum=sum+p1->TicketNum;p1=p1->next;}printf("\n该车次的订票数为:%d 该车次的余票数为:%d\n\n",sum,b[i].SpareTicketNum);n++;}if(n==0) printf("\n未找到相应信息!\n\n");}}void find3(void){char ch[20];int i,n=0;READ();printf("\n请输入您要查询订票信息的终点站:");scanf("%s",ch);printf("\n");for(i=0;i<N1;i++){if(strcmp(ch,b[i].terminal)==0){printf("终点站:%s 车次:%s 发车时间:%hd年%hd月%hd日%hd 时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0){printf("\n您查找的信息不存在,请重新查找\n\n");}}void find4(void){char ch[20];short a,d,c;int i,n=0;READ();printf("\n请输入您要查询的日期:");scanf("%hd%hd%hd",&a,&d,&c);printf("\n");for(i=0;i<N1;i++){if(a==b[i].StartTime.year)if(d==b[i].StartTime.month)if(c==b[i].StartTime.day){printf("终点站:%s 车次:%s 发车时间:%hd年%hd月%hd 日%hd时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0) printf("\n未找到相应信息!\n\n");}void shuchu(void){int i,n=0;READ();for(i=0;i<N1;i++){if(b[i].SpareTicketNum==0){printf("\n终点站:%s 车次:%s 发车时间:%hd年%hd月%hd日%hd 时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0) printf("\n未找相应信息!\n\n");}void WRITE(void){SN *p1;//***************写入文件a[N1]*****************管理员存入数据***** FILE *fp;if((fp=fopen("file0.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }fwrite(b,LEN1,N1,fp);fclose(fp);//***********************************************第1个文件*******if((fp=fopen("file1.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[0].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//************************************************第2个文件******if((fp=fopen("file2.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[1].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//***********************************************第3个文件********if((fp=fopen("file3.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[2].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//********************************************第4个文件*********if((fp=fopen("file4.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[3].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//*********************************************第5个文件*******if((fp=fopen("file5.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[4].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);}void READ(void){SN *p1,*p2;int i=0,j;FILE *fp;//*******读出第0个文件*********************查找数据***************** if((fp=fopen("file0.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}fread(b,LEN1,N1,fp);fclose(fp);//***********************************************读出第1个文件******if((fp=fopen("file1.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[0].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//*********************************************读出第2个文件****** if((fp=fopen("file2.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[1].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//**************************************************读出第3个文件**** if((fp=fopen("file3.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[2].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//**********************************************读出第4个文件***** if((fp=fopen("file4.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[3].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//************************************************读出第5个文件***** if((fp=fopen("file5.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[4].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);}void LIST(SN *head){ SN *p ;p=head ;while ( p!=NULL ){printf("\n乘客姓名:%s 乘客身份证号码:%s 订票数%d 总票价%.2f\n\n",p->name,p->IDcard,p->TicketNum,p->FareSum);p=p->next;}}3.2 函数调用关系4.系统存在的问题与不足管理员输入密码时是有可能被别人看见,安全性没有做好。
设计题目:火车订票管理系统班级:姓名:学号:2015年1月4日1.课程设计目的和要求火车订票管理系统的主要功能包括:1. 火车线路查询功能,乘客输入终点站名称或输入车次,输出相应的火车线路信息。
2. 订票功能。
乘客输入车次和订票数,先查询该车次的余票数,若余票数大于等于订票数,则为乘客办理订票手续,要求乘客输入姓名、身份证号码,计算出总票价,产生一个新结点,将该结点添加到对应车次的链表中,然后修改该车次的余票数。
若余票数小于订票数,则输出提示信息“余票数不足,订票失败!”3. 退票功能。
乘客输入车次和身份证号码,在该车次对应的链表中查找该乘客,若找到,询问乘客退票数量,若退票数小订票数,则只需修改结点的订票数;若退票数等于订票数,则将该乘客对应的结点删除,然后修改该车次的余票数;若没找到,则应提示“未找到相应信息”,要求乘客重新输入车次和身份证号码,再进行查找,如果仍未找到,则输出提示信息“输入信息错误,退票失败!”4. 其他查询功能。
(1) 输入车次,输出该车次的全部订票信息。
(2) 输入车次,输出该车次的订票数和余票数。
(3) 输入终点站名称,输出相关火车线路的信息。
(4) 输入日期(年.月.日),输出发车时间为该天的火车线路的信息。
(5) 输出余票数为0的火车线路的信息。
管理员入口输入系统信息火车订票管理系其他查询2.系统总体设计2.1系统功能模块图乘客入口 火车线路查询查询票数为零的火车线路信息查询发车时间为某天的火车线路信息查询终点站为某地的火车线路信息查询某车次的订票数和余票数查询某车次的全部订票信息2.2数据结构设计假设有5条火车线路(起点均为济南),每条线路所涉及的信息有:终点站、 车次、发车时间(年•月•日.时.分)、票价、余票数(假设火车总票数为 300)。
乘客订票信息包括:乘客姓名、乘客身份证号码、订票数,总票价。
本系统要求用结构体数组和链表实现,将火车线路信息存放在结构体数组 中,每条线路对应一个链表,乘客订票就是在链表中插入结点, 乘客退票就是在 链表中删除结点。
铁路旅客运输管理信息系统的研究与开发的开题报告一、选题背景随着我国经济的快速发展,铁路旅客运输的重要性日益突显。
但是,在铁路运输中存在一些问题,如票务管理不便、客流量难以预测、车站设备陈旧等。
这些问题直接影响着旅客的出行体验,进而影响着铁路运输的经济效益。
因此,如何实现铁路旅客运输管理的信息化,成为了当前亟待解决的问题。
针对上述问题,本文提出了“铁路旅客运输管理信息系统”的研究与开发。
本系统主要包括票务管理、客流量预测、车站设备管理等多个模块,旨在为运输企业提供更加智能、高效的管理方案,提高旅客的出行体验和企业的经济效益。
二、研究内容(一)系统需求分析:分析铁路旅客运输管理中的主要问题,以及相关的需求与功能,确定系统的需求和优化方向。
(二)架构设计:依据系统需求,进行系统架构、数据库、接口设计,实现系统的基本框架和功能。
(三)票务管理模块:包括售票、改签、退票等操作,通过智能算法和实时数据分析,为旅客提供最佳出行方案。
(四)客流量预测模块:通过历史数据、天气等因素,预测客流量,及时调整运力、判断运输路线,提高运输效率。
(五)车站设备管理模块:对车站设备进行智能化监控与管理,实时检测设备状况,提前预警设备故障,提高车站运作效率。
三、研究意义本文研究的“铁路旅客运输管理信息系统”,通过智能算法和实时数据分析,提高旅客的出行体验和铁路运输的经济效益。
本系统的研究和开发,具有以下几个方面的意义:(一)促进铁路旅客运输管理的信息化进程,提高运输效率和服务水平。
(二)提高运输企业的综合管理能力,减轻人工管理的负担。
(三)为国家的铁路建设、城市交通出行等方面提供可借鉴的参考。
四、研究方法本文采用文献调研、面谈法、实地调研、系统分析等多种研究方法。
结合实际情况,开展需求分析、系统设计、系统开发、系统测试与维护等工作,最终实现全面智能化的铁路旅客运输管理信息系统。
五、预期成果本文预计完成的成果包括:(一)铁路旅客运输管理的信息化进程和现状的分析。
学士学位论文THESIS OF BACHELOR(2011-2015 年)题目:火车票订票系统的设计与实现------后台模块Topic: Design and Implementation of Train Ticket Booking System——Background Module 指导老师:姓名:学号:学院:软件学院专业:软件工程完成时间: 2015年4月摘要随着国家发展水平的提高和科学技术的发展,人们出行也越来越频繁,传统人工售票的工作效率已不能适应新的发展需要,无法给人们出行买票提供方便便捷的服务,耽误顾客的时间。
火车票网上订票系统的应用提高了售票的效率的同时方便了顾客购票。
本火车票网上订票系统是基于JSP实现的系统,后台数据库采用的是SQL Server 2005。
系统有两个用户即管理员、会员。
管理员的功能有会员管理模块、订票管理模块和车次管理模块,这些模块中,除了基本的删除、添加、修改外,还具有更加详细的查询功能;会员的功能有查看车次信息和订票。
本文首先简单介绍了系统的开发背景、使用的相关技术然后详细阐述了系统的设计与实现过程,对个人模块后台模块进行了重点介绍。
关键词:火车票订票;JSP;SQL Server 2005;后台模块AbstractWith the improvement of the country and the development of science and technology, traveling is becoming more and more frequent, the traditional manual ticketing work efficiency has not already adapted to the demand of the new development, not provided convenient service for people to buy tickets, just wasting the time of the customer. The application of online ticketing system to improve the efficiency of the online train ticketing service and provide convenience for tourists at the same time.The online booking system is based on JSP implementation system, background database using SQL Server 2005. The system has two users or administrators, member. The administrator function with tickets member management module, management module and trains management module, these modules, in addition to the basic deletes, add, modify, but also has more detailed query function; membership function is to check the train number information and booking. This paper introduces the development background of the system, the use of related technologies and in detail elaborated the system design and implementation process first, has carried on the key to personal background module is introduced.Key words:Train Ticket Booking;JSP;SQL Server 2005;Background Module目录第1章绪论 (1)1.1系统的开发背景 (1)1.2系统的开发目标 (1)1.3本文的主要内容 (1)第2章系统开发相关技术介绍 (2)2.1 JSP技术简介 (2)2.2 Servlet介绍 (4)2.3 SQL Server 2005简介 (5)第3章系统的分析和设计 (7)3.1可行性研究 (7)3.2系统业务流程图 (7)3.3数据流图 (8)3.4系统功能模块图 (10)3.4.1会员管理 (10)3.4.2车次管理 (11)3.4.3订单管理 (11)3.5数据库设计 (11)3.5.1数据库概念结构设计 (11)3.5.2数据库逻辑结构设计 (12)第4章个人模块的实现 (15)4.1管理员后台登陆的实现 (15)4.2管理首页的实现 (17)4.3管理员设置的实现 (18)4.4修改密码 (20)4.5车次管理的实现 (21)4.6增加车次信息 (23)4.7订票管理的实现 (24)4.8会员管理 (27)第5章结束语 (30)参考文献 (31)致谢 (32)第1章绪论第1章绪论1.1 系统的开发背景随着科学技术的发展,在网上订购火车票的人越来越多,特别是节假日的时候顾客扎堆进入火车票售票系统,火车票售票系统随时面临瘫痪的危险,对普通购票顾客来说,目前的网上火车票售票系统面向的是全国顾客,不同地方的顾客需要选择不同的出发地和目的地,浪费了时间,也许因此错过购票机会,无法到达预定地点,徒留遗憾。
火车票售票系统的设计与实现目录引言 (1)第1章绪论 (2)1.1学术背景与现实意义 (2)1.2主要研究内容 (2)1.3本课题在国内外的发展状况 (3)第2章相关知识介绍和项目的可行性研究 (4)2.1可行性分析 (4)2.2相关知识介绍 (4)2.3系统运行环境 (7)第3章系统需求分析 (8)3.1系统功能需求分析 (8)3.2系统数据需求分析 (8)3.3 E-R图 (11)第4章系统设计 (13)4.1系统概要设计 (13)4.2系统详细设计 (15)第5章系统实现 (22)5.1系统主要模块编码及相关界面的实现 (22)5.2系统测试与维护 (30)结论与展望 (32)致谢 (33)参考文献 (34)附录 (35)附录A 英文文献及译文 (35)附录B 主要参考文献的题录及摘要 (39)插图清单图3-1 火车售票系统数据流图 (09)图3-2 乘客的E-R图 (11)图3-3 车票的E-R图 (12)图3-4 会员的E-R图 (12)图4-1 系统总体结构设计图 (13)图4-2 登陆模块流程图 (16)图4-3 列车排班流程图 (17)图4-4 列车查询流程图 (18)图4-5 退票流程图 (19)图4-6 会员注册流程图 (20)图4-7 口令修改流程图 (21)图5-1 用户登陆界面 (22)图5-2 主界面 (23)图5-3 列车排班界面 (24)图5-4 订票模块界面 (26)图5-5 退票模块界面 (27)图5-6 会员注册模块界面 (28)图5-7 口令修改模块界面 (29)图5-8 关于系统模块界面 (30)表格清单表4-1 车票信息表 (14)表4-2 登陆用户信息表 (14)表4-3 列车班次计划表 (14)表4-4 旅客基本信息表 (15)表4-5 会员信息表 (15)表4-6 车票帐目信息表 (15)摘要随着信息技术和社会的发展,以前使用手工处理的事情,现在已逐步被计算机管理方式所代替。
课程设计(论文)任务书软件学院交通运输专业 1 班一、课程设计(论文)题目火车售票系统的设计与实现二、课程设计(论文)工作自 2014 年 1 月6 日起至 2014 年 1 月 10 日止。
三、课程设计(论文) 地点:创新大楼机房四、课程设计(论文)内容要求:1.课程设计的目的为了配合《数据结构》课程的教学,使学生能更深刻的领会《数据结构》课程的重要性,特开设此课程设计;编写一些在特定数据结构上的算法,通过上机调试,更好的掌握各种数据结构及其特点,培养学生综合运用所学理论知识解决复杂实际问题的实践能力、研究性学习能力和团队合作能力。
2.课程设计的任务及要求1)基本要求(1)课程设计前必须选定课程设计题目,并认真进行需求分析与系统设计;(2)上机调试之前要认真准备实验程序及调试时所需的测试数据;(3)独立思考,独立完成,严禁抄袭,调试过程要规范,认真记录调试结果;(4)上机结束后认真规范撰写课设报告,对设计进行总结和讨论。
2)课程设计论文编写要求(1)要按照书稿的规格撰写打印课设论文(2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等(3)正文中要有问题描述、抽象数据类型的定义、数据的存储结构、设计的求解算法、算法的实现、调试分析与测试结果(4)课设论文装订按学校的统一要求完成3)课设考核从以下几方面来考查:(1)考勤和态度;(2)任务的难易程度及设计思路;(3)动手调试能力;(4)论文撰写的水平、格式的规范性。
4)参考文献[1] 严蔚敏, 吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社, 2007年.[2] 严蔚敏, 吴伟民. 数据结构题集(C语言版)[M]. 北京:清华大学出版社, 2007年.[3] 谭浩强. C语言程序设计[M].北京:清华大学出版社,2006年.5)课程设计进度安排内容天数地点构思及收集资料1图书馆程序设计与调试3计算机房撰写论文1图书馆6)任务及具体要求通过此系统可以实现不同地点间车次的查询(按照票价从低到高的顺序显示不同的车次)、售票、退票、车票剩余情况查询等功能。
火车票订票系统课程设计报告
本科生课程设计是在计算机技术应用系丛中的一门重要课程,本文将以设计一个订火
车票的订票系统为例,来阐述本课程的重要性和必要性。
本设计的火车票订票系统将分为两个主要模块:一是买票的用户模块,另一是负责订
票维护的管理员模块。
买票的客户只需要登录订票系统,然后选择所要购买的火车票,输
入相关个人信息和付款信息,就可以完成订票操作。
负责维护和管理的管理员模块将分为
一般管理员模块和超级管理员模块。
一般管理员只能查看用户的订票信息,而超级管理员
可以添加,修改和删除火车票信息,还可以实现用户和管理员之间的消息传递、用户登录
和日志记录功能。
此外,还将采用SQL语句来存储订票系统中的所有信息,支持对表的修改、查看和分析。
通过这种方式,我们可以更清楚地了解有关火车票订票的信息,针对不同的业务类型
展开全面的统计和分析活动。
本设计的火车票订票系统将采用C++语言编程实现,利用模块化的编程思想进行编程。
每个模块都将有自己的相关函数,有助于编程的可读性和可维护性。
综上所述,本次课程设计将依赖数据库存储和处理数据,并利用面向对象和模块化的
编程思想,实现一个火车票订票系统,以为乘客提供一个高效、便捷的订票服务,而且还
可以与现有的其他模块相集成,完善整个火车票预定系统。
本次设计旨在让学生掌握计算
机技术在实际应用中的重要作用,并培养学生们主动利用计算机技术解决实际问题的能力。