代码:火车票预订系统的设计与实现

合集下载

论文:火车票预定系统的设计与实现

论文:火车票预定系统的设计与实现

火车票预定系统的设计与实现学生姓名:学院:专业:班级:学号:指导教师:完成日期:摘要针对火车站的订票实际情况,按照软件工程的结构化设计思想,本次课程设计经过项目的可行性研究和需求分析、总体设计、详细设计,以及编码实现和调试等步骤设计开发了火车票预定系统。

并运用数据流图和数据字典、E-R图和数据库逻辑结构、层次图、系统流程图、以及程序流程图,对该系统的数据需求、数据库、系统软件结构、系统流程、以及处理过程等进行了分析和设计。

本次课程设计利用MyEclipse 开发工具和MySQL数据库来开发这个火车票预定系统。

该系统要解决的是火车站网上订票工作所要解决的问题,可以满足火车站网上订票的基本要求,包括查询、订票、退票等三个方面的功能。

该系统能运用到火车站订票的工作中,根据用户的需求,设置其权限,并快捷方便的为用户提供服务。

关键词:软件工程需求设计服务ABSTRACTAccording to the actual situation, the train tickets according to the structural design of software engineering, the curriculum design of project feasibility study and through the requirement analysis, system design, detailed design and coding and commissioning procedures designed and developed station tickets online system. And by using the data flow chart and the data dictionary, e-r chart and logical structure, database, system flowcharts, level and program flow chart of the system, the data needs, database, software system structure, system, and flow process are analyzed and the design.This course design using the MyEclipse development tools and MySQL database to develop this train tickets online system. This system to solve the train tickets online work is to solve the problem, can meet the basic requirements of train tickets online, including tracing, booking tickets, refund from three aspects of the function. This system can be applied to train tickets work, according to the needs of users, set permissions and convenient for users to provide services.Keywords: Software Engineering Demand Design Service目录摘要 (I)ABSTRACT (II)第一章项目概述 .................................................................................................................................... - 1 -1.1现系统概述 (1)1.2系统组织机构 (2)1.3系统业务流程 (2)第二章系统的可行性研究与需求分析 .................................................................................................. - 4 -2.1可行性研究 (4)2.1.1经济可行性 ...................................................................................................................................... - 4 -2.1.2技术可行性 ...................................................................................................................................... - 4 -2.1.3操作可行性 ...................................................................................................................................... - 4 -2.2需求分析 (4)2.2.1功能需求 .......................................................................................................................................... - 5 -2.2.2数据需求 .......................................................................................................................................... - 5 -2.2.3性能需求 .......................................................................................................................................... - 6 -2.2.4数据流图 .......................................................................................................................................... - 6 -2.2.5数据字典 .......................................................................................................................................... - 8 -2.2.6系统数据模型 ................................................................................................................................ - 11 -2.2.7数据库逻辑结构 ............................................................................................................................ - 12 -第三章系统的总体设计 ....................................................................................................................... - 15 -3.1系统软件结构设计 (15)3.1.1 软件结构 ....................................................................................................................................... - 15 -3.1.2 模块算法 ....................................................................................................................................... - 15 -3.2系统流程图 (17)第四章详细设计 .................................................................................................................................. - 19 -4.1模块算法 (19)4.2接口设计 (20)4.2.1 用户接口 ....................................................................................................................................... - 20 -4.2.2 外部接口 ....................................................................................................................................... - 20 -4.2.3内部接口 ........................................................................................................................................ - 20 -4.2.4 软件接口 ....................................................................................................................................... - 21 -4.2.5 模块内部 ....................................................................................................................................... - 21 -4.3过程设计 (21)4.3.1 程序流程图 ................................................................................................................................... - 21 -第五章系统的实现与调试 ................................................................................................................... - 27 -5.1应用系统的开发及测试 (27)5.1.1 系统首页 ....................................................................................................................................... - 27 -5.1.2 产品说明 ....................................................................................................................................... - 27 -5.1.3 用户登录及访问权限 ................................................................................................................... - 28 -5.1.4 车次信息查询 ............................................................................................................................... - 29 -5.1.5 订票信息查询 ............................................................................................................................... - 29 -5.1.6 订票............................................................................................................................................... - 29 -5.1.7 退票............................................................................................................................................... - 30 -5.2部分代码 (30)5.2.1 登陆窗 ........................................................................................................................................... - 30 -5.2.2 主界面 ........................................................................................................................................... - 33 -5.2.3 车次查询条件选择窗口 ............................................................................................................... - 34 -5.2.4 搜索车次信息 ............................................................................................................................... - 35 -第六章测试 .................................................................................................................................. - 36 -6.1测试原则及测试方法概述 (36)6.1.1 测试原则 ....................................................................................................................................... - 36 -6.1.2 测试方法 ....................................................................................................................................... - 36 -6.2测试项目测试用例 (36)6.3软件测试结论 (38)6.3.1 软件能力 ....................................................................................................................................... - 38 -6.3.2 缺陷和限制 ................................................................................................................................... - 38 -6.3.3 建议............................................................................................................................................... - 38 -结束语 ....................................................................................................................................................... - 39 -致谢 ................................................................................................................................................... - 40 -参考文献 ................................................................................................................................................... - 41 -第一章项目概述1.1现系统概述目前火车站售票的状况是仅靠手工操作,以现有的工作人员很难应付车票订购高峰时刻的大量数据处理问题。

火车票网上订票系统的设计与实现

火车票网上订票系统的设计与实现

火车票网上订票系统的设计与实现火车票网上订票系统的设计与实现需要考虑以下方面:1. 用户登录和注册:为了保障系统的安全性和用户信息的准确性,需要设计登录和注册模块,用户需要输入用户名和密码进行登录,如果是新用户则需要进行注册。

2. 车次查询与选择:用户可以通过输入出发地、目的地、日期等信息来查询符合条件的车次信息,然后根据需求选择适合自己的车次。

3. 座位选择与预订:用户在选择了符合要求的车次后,需要根据需要选择座位,并进行预订。

系统需要支持多种座位类型,如硬座、软座、硬卧、软卧等。

4. 支付系统:用户需完成支付流程后才能成功订票,系统需要支持多种支付方式,包括在线支付和线下支付(比如银行转账)。

5. 订单管理:用户订票成功后需要生成订单,系统需要管理每个订单的状态、座位信息、支付状态等。

6. 确认票务信息:在出行前,用户需要确认票务信息,如车次、座位、车票价格、发车时间等。

7. 退票、改签:如果用户需要退票或改签,系统需要提供对应功能,用户在退票或改签时需要支付相应的手续费。

8. 后台管理系统:系统管理员需要通过后台管理系统管理车次信息、座位信息、价格信息等,还需要处理异常订单。

根据上述要求,可以采用以下技术方案来实现:1. 系统架构:采用分布式架构,包括前端界面、应用服务器和数据库服务器,前端和应用服务器使用RESTful API进行通信,应用服务器和数据库服务器采用分布式部署。

2. 开发框架和语言:前端采用React和Vue框架开发,应用服务器采用Spring Boot框架,并使用Java语言开发;数据库采用MySQL数据库。

3. 安全性和可靠性:采用HTTPS协议进行通讯,以保证数据传输的安全;使用ZooKeeper作为服务注册和发现中心,保证系统的可靠性和稳定性。

4. 可扩展性:系统采用微服务架构,可以方便地添加或删除服务,以实现系统的可扩展性。

5. 数据库设计:采用关系型数据库,设计合理的数据表结构,保证数据的一致性和完整性。

火车票系统的设计与实现

火车票系统的设计与实现

火车票系统的设计与实现一.实验内容:按给定需求,通过查找相关资料,完成火车售票系统设计及实现二.实验目的:在设计过程中充分运用数据结构与算法课程中所学知识,从而熟练地掌握和应用线性表、单链表等重要数据结构和常用算法。

提前熟悉软件需求分析,软件测试等环节,运用相应程序设计语言实现该系统,从而进一步提高程序设计能力。

三:问题描述:(1)此系统可以实现售票、退票、车票剩余情况查询等功能。

(2)每张车票包含车次、座位信息。

在售票、退票、查询剩余票等环节中,都必须显示出车票的信息,即车次、座位情况。

(3)退票时,必须是车站售出的车票才能退,否则视为无效票,不能退票。

(4)演示程序以用户和计算机的对话方式进行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入程序中规定的运算命令;相应的输入数据(滤去输入中的非法字符)和运算结果显示在后。

(5)由订票系统的主要功能使程序的命令包括:1)查询;2)订票;3)退票 4)退出订票系统四、基本思路(1)所涉及的信息有:终点站信息(终点站名、车次号、乘车日期、乘客定额、余票量、票价、折扣信息等),已订票的客户名单(包括姓名、车次、证件编号、订票量)(2 )全部数据可放在内存中;(3 )系统能实现的操作和功能如下:a. 查询:根据旅客提出的终点站名输出下列信息:车次、日期、乘员定额、余票额、票价和折扣信息;b . 订票:根据客户提出的要求(车次号、订票数)查询该车次票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。

c. 退票:根据客户提供的情况(日期、车次),为客户办理退票手续;五:源程序(见附件)六:总结本次课程设计有诸多不熟悉的地方,在别人的帮助下完成了本次实验,对自身有一定的提升和熟悉。

火车票售票系统C语言大作业,基于C语言实现简单的12306火车售票系统

火车票售票系统C语言大作业,基于C语言实现简单的12306火车售票系统

⽕车票售票系统C语⾔⼤作业,基于C语⾔实现简单的12306⽕车售票系统程序设计要求⽤C语⾔写⼀个简单的⽕车售票系统,主要实现的功能为:录⼊班次信息浏览班次信息按班次号查询按终点站查询按余票数量排序保存售票退票更新班次信息退出系统所有的班次信息保存在number.dat⽂件中,排序过后的保存在sort.dat中(.dat是⼀种⼆进制⽂件)。

在编写的过程中我觉得在判断⽕车的状态⽐较值得深究。

这⾥假设⽕车主要有四种状态:1.未发车2.已发车3.停⽌检票4.停⽌退票在程序中,思路是将代表发车时间的字符串转化为整型,再和系统现在的时间进⾏⼤⼩⽐较,主要采⽤if判断各种情况。

其中atime代表的是发车时间的整型数,btime代表的是系统时间的整型数,具体实现如下:if(atime<=btime) //已经发车return 1;if(((atime-btime<=30)&&(atime-btime>5)&&(atime/100==btime/100))||(((atime%100+(60-btime%100))<=30)&&(atime%100+(60-btime%100))>5&&(atime/100-btime/100==1))) //距发车半⼩时以内,停⽌退票,%表⽰取余return 2;if(((atime-btime<=5)&&(atime/100==btime/100))||((atime%100+(60-btime%100)&&(atime/100-btime/100==1))<=5)) //距发车前五分钟内停⽌检票return 3;return 0; //可以办理购退票在判断退票时如果两个时间的⼩时数是⼀样的,则它们的分钟数如果相差在30之内即半⼩时之内或者发车时间的⼩时和系统时间的⼩时相差⼀个1,并且发车时间的分钟数⼩于30,系统时间的分钟⼤于30,则它们之间也就相差在30之内,此时代表停⽌退票。

C语言编程---火车订票系统源代码

C语言编程---火车订票系统源代码

火车订票系统源码(一)#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>intshoudsave=0 ;int count1=0,count2=0,mark=0,mark1=0 ;/*定义存储火车信息的结构体*/struct train{char num[10];/*列车号*/char city[10];/*目的城市*/char takeoffTime[10];/*发车时间*/char receiveTime[10];/*到达时间*/int price;/*票价*/intbookNum ;/*票数*/};/*订票人的信息*/struct man{charnum[10];/*ID*/char name[10];/*姓名*/intbookNum ;/*需求的票数*/};/*定义火车信息链表的结点结构*/typedefstruct node{struct train data ;struct node * next ;}Node,*Link ;/*定义订票人链表的结点结构*/typedefstruct people{struct man data ;struct people*next ;}bookMan,*bookManLink ;/* 初始界面*/voidprintInterface(){puts("********************************************************"); puts("* Welcome to use the system of booking tickets *");puts("********************************************************"); puts("* You can choose the operation: *");puts("* 1:Insert a train information *");puts("* 2:Inquire a train information *");puts("* 3:Book a train ticket *");puts("* 4:Update the train information *");puts("* 5:Advice to you about the train *");puts("* 6:save information to file *");puts("* 7:quit the system *");puts("********************************************************"); }/*添加一个火车信息*/voidInsertTraininfo(Link linkhead){struct node *p,*r,*s ;charnum[10];r = linkhead ;s = linkhead->next ;while(r->next!=NULL)r=r->next ;while(1){printf("please input the number of the train(0-return)");scanf("%s",num);if(strcmp(num,"0")==0)break ;/*判断是否已经存在*/while(s){if(strcmp(s->data.num,num)==0){printf("the train '%s'has been born!\n",num);return ;}s = s->next ;}p = (struct node*)malloc(sizeof(struct node));strcpy(p->data.num,num);printf("Input the city where the train will reach:");scanf("%s",p->data.city);printf("Input the time which the train take off:");scanf("%s",p->data.takeoffTime);printf("Input the time which the train receive:");scanf("%s",&p->data.receiveTime);printf("Input the price of ticket:");scanf("%d",&p->data.price);printf("Input the number of booked tickets:");scanf("%d",&p->data.bookNum);p->next=NULL ;r->next=p ;r=p ;shoudsave = 1 ;}}/*打印火车票信息*/voidprintTrainInfo(struct node*p){puts("\nThe following is the record you want:");printf(">>number of train: %s\n",p->data.num);printf(">>city the train will reach: %s\n",p->data.city);printf(">>the time the train take off: %s\nthe time the train reach: %s\n",p->data.takeoffTime,p->data.receiveTime);printf(">>the price of the ticket: %d\n",p->data.price);printf(">>the number of booked tickets: %d\n",p->data.bookNum);}struct node * Locate1(Link l,charfindmess[],char numorcity[]){Node*r ;if(strcmp(numorcity,"num")==0){r=l->next ;while(r){if(strcmp(r->data.num,findmess)==0)return r ;r=r->next ;}}else if(strcmp(numorcity,"city")==0){r=l->next ;while(r){if(strcmp(r->data.city,findmess)==0)return r ;r=r->next ;}}return 0 ;}/*查询火车信息*/voidQueryTrain(Link l){Node *p ;intsel ;char str1[5],str2[10];if(!l->next){printf("There is not any record !");return ;}printf("Choose the way:\n>>1:according to the number of train;\n>>2:according to the city:\n");scanf("%d",&sel);if(sel==1){printf("Input the the number of train:");scanf("%s",str1);p=Locate1(l,str1,"num");if(p){printTrainInfo(p);}else{mark1=1 ;printf("\nthe file can't be found!");}}else if(sel==2){printf("Input the city:");scanf("%s",str2);p=Locate1(l,str2,"city");if(p){printTrainInfo(p);}else{mark1=1 ;printf("\nthe file can't be found!");}}}/*订票子模块*/voidBookTicket(Link l,bookManLink k){Node*r[10],*p ;charch,dem ;bookMan*v,*h ;int i=0,t=0 ;charstr[10],str1[10],str2[10];v=k ;while(v->next!=NULL)v=v->next ;printf("Input the city you want to go: ");scanf("%s",&str);p=l->next ;while(p!=NULL){if(strcmp(p->data.city,str)==0){r[i]=p ;i++;}p=p->next ;}printf("\n\nthe number of record have %d\n",i);for(t=0;t<i;t++)printTrainInfo(r[t]);if(i==0)printf("\n\t\t\tSorry!Can't find the train for you!\n"); else{printf("\ndo you want to book it?<1/0>\n");scanf("%d",&ch);if(ch == 1){h=(bookMan*)malloc(sizeof(bookMan)); printf("Input your name: ");scanf("%s",&str1);strcpy(h->,str1);printf("Input your id: ");scanf("%s",&str2);strcpy(h->data.num,str2);printf("Input your bookNum: ");scanf("%d",&dem);h->data.bookNum=dem ;h->next=NULL ;v->next=h ;v=h ;printf("\nLucky!you have booked a ticket!"); getch();shoudsave=1 ;}}}bookMan*Locate2(bookManLinkk,charfindmess[]) {bookMan*r ;r=k->next ;while(r){if(strcmp(r->data.num,findmess)==0){mark=1 ;return r ;}r=r->next ;}return 0 ;}/*修改火车信息*/voidUpdateInfo(Link l){Node*p ;charfindmess[20],ch ;if(!l->next){printf("\nthere isn't record for you to modify!\n"); return ;}else{QueryTrain(l);if(mark1==0){printf("\nDo you want to modify it?\n"); getchar();scanf("%c",&ch);if(ch=='y');{printf("\nInput the number of the train:");scanf("%s",findmess);p=Locate1(l,findmess,"num");if(p){printf("Input new number of train:");scanf("%s",&p->data.num);printf("Input new city the train will reach:");scanf("%s",&p->data.city);printf("Input new time the train take off");scanf("%s",&p->data.takeoffTime);printf("Input new time the train reach:");scanf("%s",&p->data.receiveTime);printf("Input new price of the ticket::");scanf("%d",&p->data.price);printf("Input new number of people who have booked ticket:"); scanf("%d",&p->data.bookNum);printf("\nmodifying record is sucessful!\n");shoudsave=1 ;}elseprintf("\t\t\tcan't find the record!");}}elsemark1=0 ;}}/*系统给用户的提示信息*/voidAdvicedTrains(Link l){Node*r ;charstr[10];int mar=0 ;r=l->next ;printf("Iuput the city you want to go: ");scanf("%s",str);while(r){if(strcmp(r->data.city,str)==0&&r->data.bookNum<200){mar=1 ;printf("\nyou can select the following train!\n");printf("\n\nplease select the fourth operation to book the ticket!\n"); printTrainInfo(r);}r=r->next ;}if(mar==0)printf("\n\t\t\tyou can't book any ticket now!\n");}/*保存火车信息*/voidSaveTrainInfo(Link l){FILE*fp ;Node*p ;int count=0,flag=1 ;fp=fopen("c:\\train.txt","wb");if(fp==NULL){printf("the file can't be opened!");return ;}p=l->next ;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next ;count++;}else{flag=0 ;break ;}}if(flag){printf("the number of the record which have been saved is %d\n",count); shoudsave=0 ;}fclose(fp);}/*保存订票人的信息*/voidSaveBookmanInfo(bookManLink k){FILE*fp ;bookMan*p ;int count=0,flag=1 ;fp=fopen("c:\\man.txt","wb");if(fp==NULL){printf("the file can't be opened!");return ;}p=k->next ;while(p){if(fwrite(p,sizeof(bookMan),1,fp)==1){p=p->next ;count++;}else{flag=0 ;break ;}}if(flag){printf("the number of the record which have been saved is %d\n",count); shoudsave=0 ;}fclose(fp);}int main(){FILE*fp1,*fp2 ;Node*p,*r ;char ch1,ch2 ;Link l ;bookManLink k ;bookMan*t,*h ;intsel ;l=(Node*)malloc(sizeof(Node));l->next=NULL ;r=l ;k=(bookMan*)malloc(sizeof(bookMan));k->next=NULL ;h=k ;fp1=fopen("c:\\train.txt","ab+");if((fp1==NULL)){printf("can't open the file!");return 0 ;}while(!feof(fp1)){p=(Node*)malloc(sizeof(Node));if(fread(p,sizeof(Node),1,fp1)==1){p->next=NULL ;r->next=p ;r=p ;count1++;}}fclose(fp1);fp2=fopen("c:\\man.txt","ab+");if((fp2==NULL)){printf("can't open the file!");return 0 ;}while(!feof(fp2)){t=(bookMan*)malloc(sizeof(bookMan)); if(fread(t,sizeof(bookMan),1,fp2)==1){t->next=NULL ;h->next=t ;h=t ;count2++;}}fclose(fp2);while(1){system("cls");printInterface();printf("please choose the operation: "); scanf("%d",&sel);system("cls");if(sel==8){if(shoudsave==1){getchar();printf("\nthe file have been changed!do you want to save it(y/n)?\n"); scanf("%c",&ch1);if(ch1=='y'||ch1=='Y'){SaveBookmanInfo(k);SaveTrainInfo(l);}}printf("\nThank you!!You are welcome too\n");break ;}switch(sel){case 1 :InsertTraininfo(l);break ;case 2 :QueryTrain(l);break ;case 3 :BookTicket(l,k);break ;case 4 :UpdateInfo(l);break ;case 5 :AdvicedTrains(l);break ;case 6 :SaveTrainInfo(l);SaveBookmanInfo(k);break ;case 7 :return 0;}printf("\nplease press any key to continue.......");getch();}return 0;}11/11。

C语言设计火车票订票系统

C语言设计火车票订票系统

软件课程设计--C 语言设计火车票订票系统之源代码模拟数据库功能需求分析可行性分析设计题目:火车订票系统小组成员:指导教师:完成时间:一.需求设计:1.每条线路所涉及的信息有:起点、终点、站名、车次、、票价、时间、座位号。

2.作为示意系统,全部数据可以只放在内存中。

3.系统能实现的功能和操作如下:①.查询路线:根据旅客提出的终点站名输入下列信息:车次、车站名。

②.承办订票业务:根据客户提出的要求查询该车次票额的情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新查询客户要求,若需要可登记排队候补。

③.承办退票业务:根据客户提供的情况(车次、时间、座位号)为客户办理退票手续,然后查询该车次是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

④登记旅客情况:包括旅客姓名,性别,年龄,家庭住址,联系方式等。

⑤统计功能:将每次车的订票,退票结果统计出来。

⑥管理功能:列车管理员可以通过调用函数来查看车票极其用户情况.⑦.查询功能:用户可以查询自己需要的车辆信息.二.总体设计1.程序流程图:按1键按2键按3键按4键进入in 函数进入book 函数进入inquire 函数进入cancel 函数按5键进入you 函数2.总体设计说明:①.数据结构设计:程序数据结构算法一个好的程序必定有一个好的数据结构.本设计主要考虑车票信息和用户信息的数据结构.车票信息采用半十字链表.横向链表中的每一个结点包含以下内容:车次起始站发车时间指向下一个结点的指针指向中途站的指针.纵向链表中每一个结点包含以下内容:从始发站开始的依次到站票价到达时间是否已被购买标识才用mark 标识当mark 为1 时车票已售出当mark 为0时车票还未售出.以及指向下一个结点的指针.纵向链表采用循环链表尾指针指向首指针.未购票用户信息使用队列来保存因为考虑到用户会预订票所以把用户以来订票的时间早晚排在队中.先来先买后来后买.队列中的每个元素包含以下内容:用户姓名身份证号码想要购票的车次起始站要到的站时间.已经购票用户信息使用一个单链表来保存链表中的没个结点包含以下内容:用户姓名身份证号码已购车票的车次出发时间到达时间.车票信息链表示意图:车次起始站发车时间downnnext下一站名到站时间票价marknext座位号未购票用户信息队列:用户姓名购票的车次起始站要到的站达到时间用户姓名购票的车次起始站要到的站达到时间注:座位号包含在车次号中已购票用户信息链表示意图:用户姓名身份证号码已购车票的车次号出发时间到达时间注:座位号包含在车次号中②算法的设计:主函数:利用case 语句实现用户界面,用户输入需要的服务的数字代码,程序就会转到相应的函数,实现相应的功能。

火车票预订管理信息系统的开发与设计

火车票预订管理信息系统的开发与设计

火车票预订管理信息系统的开发与设计一、系统开发的目的与意义(一)开发目的目前火车站售票的状况是仅靠手工操作,以现有的工作人员很难应付车票订购高峰时刻的大量数据处理问题。

同时还会出现由此带来的大量记录存放和管理所带来的问题。

本次设计拟开发一个火车站网上订票系统,可以降低工作人员的工作量,提高工作人员的工作效率,同时方便顾客订票。

(二)开发意义火车站市场的管理和规范问题,是困扰我们多年的一个老问题,也是政府管理中的一个难点,订票是客运业务中的一个最基本的业务,表面上看,它只是火车站业务的一个简单的部分,但是它涉及到管理与客户服务等多方面,因此,过去传统的售票方式已经不能满足现代客运业务流量剧增的客观要求,这就要求一种全新的订票方式——网上订票,来缓解订票高峰时期的客运压力,并为用户提供方便快捷的订票服务。

本次设计便是利用开发工具JAVA 和SQL Server 2000数据库共同开发的一个火车站网上订票系统,它能方便快捷地运用在火车站订票业务的营运之中。

二、需求分析与详细调查(一)可行性分析该阶段通过对系统目标的初步调研和分析,提出可行性方案并进行论证。

我们在这里主要从技术可行性、经济可行性和操作可行性三方面进行分析:1、经济上的可行性开发该系统所需的相关资料可以通过已存在的网上订票系统进行调查采集,所需的其他应用软件、硬件系统也易于获得.因此,开发成本较低。

而引进使用本系统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物力及财力。

所以,从经济的角度来看,该系统可行。

2、操作上的可行性系统采用菜单式,实现用户与数据库的交互,界面简洁友好,操作方便。

用户只需对订票流程和业务调查了解即可,不需掌握数据库等相关知识。

3、技术上的可行性开发工具:Java数据库环境:SQL Server 2000系统环境:Microsoft Windows 2000或以上版本。

系统实现依靠相对熟悉的Java语言和SQL Server2000数据库系统,其基本操作实质还是对数据库进行添加、删除、查找等操作,暂不存在技术问题。

火车票管理系统—课程设计(附源代码)

火车票管理系统—课程设计(附源代码)

计算机科学与技术系信息管理与信息系统专业《程序设计综合课程设计》报告(2013/2014学年第一学期)学生姓名:学生班级:学生学号:指导教师:2013年1月8日目录第一章课程设计的目的和要求 (1)1.1课程设计的目的 (1)1.2 课程设计的基本要求 (1)第二章课程设计任务内容 (2)2.1 简介 (2)2.2 功能说明 (2)第三章详细设计说明 (3)3.1 模板设计图 (3)3.2 主函数流程图 (4)3.3 子函数流程图 (5)第四章编码与调试 (7)4.1 软件使用说明 (7)4.2 运行结果及截图 (7)第五章课程设计心得与体会 (11)附录一参考文献 (12)附录二程序清单 (13)附录三录入文件 (27)火车票管理系统第一章课程设计的目的和要求高级语言课程设计的主要目的是培养学生能够提高综合应用语言的能力,通过课程设计的训练,使学生能及时巩固已学的知识,补充未学的但有必要的内容,掌握应用计算机解决实际问题的基本方法,熟悉程序开发的全过程,提高综合应用语言的能力。

高级语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构程序设计的方法按照课程设计的题目要求,分析,编写,调试和测试高级语言程序及编写设计报告。

1.1课程设计的目的1.巩固和掌握高级语言程序设计基本概念;2.掌握基本的程序设计方法;3.掌握开发软件所需的需求定义能力;4.提高书写程序设计说明文档的能力;5.提高综合运用高级语言的能力,强化编程和调试能力。

1.2 课程设计的基本要求1.根据所给的课程设计题目,分析课程设计题目的要求;2.对系统功能模块进行分析,写出详细的设计说明文档;3.编写程序代码,调试所编写程序使其能正确运行;4.设计完成的软件便于操作和使用;5.设计完成后提交课程设计报告。

第二章课程设计任务内容2.1 简介火车票管理系统:是为广大群众开发的,帮助人们查询车次信息,订票和退票,大大节约了人们的时间,是铁路营运公司所需要的全部功能的一个综合的管理系统。

C语言课程设计--火车票管理系统

C语言课程设计--火车票管理系统

C语言课程设计--火车票管理系统————————————————————————————————作者:————————————————————————————————日期:二、设计内容设计一个火车票务管理系统,用C语言实现。

对该系统的要求如下:需求描述:1.系统功能(1)火车时刻信息录入。

包括车次、日期、起点、终点、开车时间、到达时间、票价。

数据存入数据文件hchsk.dat或hchsk.txt中。

(2)火车时刻信息查询。

按照车次查询按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数2. 系统主界面应有以下功能选项录入火车时刻信息查询火车时刻信息统计火车车次退出三、详细设计说明#include<stdio.h>#include<string.h>#include<stdlib.h>int MENU(); //菜单模块void INPUT(); //输入模块void SEARCH(); //查询模块void SELECT(); //统计模块void WRITE(); //文件记录模块void PRINT(); //打印模块void READ(); //文件读取模块void WRONG(); //纠错模块#define N 1000 //最大列车组数#define Print " %s%13s%10s%10s%12s%15s%11s\n",T[i].code,T[i].data,T[i].lp,T[i].ap,T[i].lt,T[i].at,T[i].pr ice //输出记录格式#define Wrong "\n ! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输入! ! ! ! ! ! ! ! ! ! ! \n"#define GeShi " 车次日期起点终点开车时间到达时间票价\n"struct Train{char code[10]; //车次char data[10]; //日期char lp[10]; //left place 起点char ap[10]; //arrive place 终点char lt[10]; //left time 开车时间char at[10]; //arrive time 到达时间char price[10]; // 票价}T[N];/* 全局变量*/int i=0; //输入计数器int n=0; //合计计数器char l[20]; //纠错空间///////////////////////////////////////////////////////////////////////////////////////主函数int main(){int x;do{x=MENU();switch(x){case 1:INPUT(); break;case 2:SEARCH(); break;case 3:SELECT(); break;case 4:printf("\n ---------------------------------------");printf("\n 正在退出,请按任意键退出");printf("\n\n ");printf("\n ---------------------------------------\n ");break;default:WRONG(); break;}}while(x!=4);return 0;}///////////////////////////////////////////////////////////////////////////////////////菜单模块int MENU(){int choice;system("cls");printf("\n ----------------------------------------------\n");printf(" ----------------------------------------------\n");printf(" --- ---\n");printf(" --- 欢迎进入火车票务管理系统---\n");printf(" --- ---\n");printf(" ----------------------------------------------\n");printf(" ----------------------------------------------\n\n");printf(" \n -------------- 请输入选项-------------\n");printf(" 1.录入火车时刻信息\n");printf(" 2.查询火车时刻信息\n");printf(" 3.统计火车车次\n");printf(" 4.退出\n");printf(" -----------------------------------------\n");printf(" 请选择:");scanf("%d",&choice);gets(l);return choice;}///////////////////////////////////////////////////////////////////////////////////////输入模块void INPUT(){char ch;do{system("cls");printf("\n\n ====================欢迎进入录入火车时刻信息界面====================\n");do{printf("\n 新建列车信息?(y/n) ");scanf("%c",&ch);gets(l);if(ch!='y'&&ch!='n')WRONG ();}while(ch!='y'&&ch!='n');if(ch=='n')break;printf(" ---------------------");printf("\n 录入第%d趟列车信息\n",n+1);printf(" 车次");gets(T[i].code);printf(" 日期");gets(T[i].data);printf(" 起点");gets(T[i].lp);printf(" 终点");gets(T[i].ap);printf(" 开车时间");gets(T[i].lt);printf(" 到达时间");gets(T[i].at);printf(" 票价");gets(T[i].price);n++;i++;}while(i<N);WRITE();system("cls");printf("\n");printf(" --------------------------------\n");printf(" 系统记载的列车信息如下\n");printf(" --------------------------------\n\n");PRINT();}///////////////////////////////////////////////////////////////////////////////////////文件记录模块void WRITE(){FILE *fp,*fp1;if((fp=fopen("hchsk.txt","w"))==NULL){printf("无法创建文件!\n\n");getchar();return;}if((fp1=fopen("N.txt","w"))==NULL)//用于记录共几趟车{printf("无法创建文件!\n");getchar();return;}for(i=0;i<n;i++)if(fwrite(&T[i],sizeof(struct Train),1,fp)==0)printf("写入数据失败!\n\n");fprintf(fp1,"%d",n);fclose(fp);fclose(fp1);}///////////////////////////////////////////////////////////////////////////////////////文件读取模块void READ(){FILE *fp,*fp1;if((fp=fopen("hchsk.txt","r"))==NULL){printf("无法打开文件\n");getchar();return;}if((fp1=fopen("N.txt","r"))==NULL){printf("无法打开文件!\n\n");getchar();return;}fscanf(fp1,"%d",&n);fclose(fp1);for(i=0;i<n;i++){fread(&T[i],sizeof(struct Train),1,fp);}fclose(fp);}///////////////////////////////////////////////////////////////////////////////////////打印模块void PRINT(){char ch[10];READ();printf("\n====================================================================== =====\n");printf(GeShi);for(i=0;i<n;i++)printf(Print);printf("====================================================================== =====\n");printf("\n 按任意键返回上级菜单: ");gets(ch);}///////////////////////////////////////////////////////////////////////////////////////查询模块void SEARCH(){char name1[10];//车次char name2[10];//终点char name3[10];//起点char name41[10];//终点char name42[10];//日期char choice;int j;int k;do{system("cls");printf("\n\n ====================欢迎进入查询火车时刻信息界面====================\n");printf("\n ++++++++++++++++++请选择查找方式++++++++++++++++++\n\n");printf(" ----1.显示所有列车信息 2.按车次查询 3.按终点查询----\n");printf(" -----4.按起点查询 5.按终点和日期查询 6.返回上级菜单----\n");printf("\n 请选择:");scanf("%d",&j);gets(l);switch(j){case 1:PRINT();break;case 2:printf("\n --- 请输入车次---:");gets(name1);break;case 3:printf("\n --- 请输入终点---:");gets(name2);break;case 4:printf("\n --- 请输入起点---:");gets(name3);break;case 5:printf("\n --- 请输入终点---:");gets(name41);printf("\n --- 请输入日期---:");gets(name42);break;case 6:break;default:WRONG ();break;}READ();k=0;if(j==2){for(i=0;i<n;i++){if(strcmp(T[i].code,name1)==0){printf("\n 按车次查找列车信息成功!\n");printf("\n====================================================================== =====\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].code,name1)==0){k++;}}printf("====================================================================== =====\n");printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}if(j==3){for(i=0;i<n;i++){if(strcmp(T[i].ap,name2)==0){printf("\n 按终点查找列车信息成功!\n");printf("\n====================================================================== =====\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].ap,name2)==0){k++;}}printf("====================================================================== =====\n");printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}if(j==4){for(i=0;i<n;i++){if(strcmp(T[i].lp,name3)==0){printf("\n 按起点查找列车信息成功!\n");printf("\n====================================================================== =====\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].lp,name3)==0){k++;}}printf("====================================================================== =====\n");printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}if(j==5){for(i=0;i<n;i++){if(strcmp(T[i].ap,name41)==0&&strcmp(T[i].data,name42)==0){printf("\n 按终点和日期查找列车信息成功!\n");printf("\n====================================================================== =====\n");printf(GeShi);break;}}for(i=0;i<n;i++){if(strcmp(T[i].ap,name41)==0&&strcmp(T[i].data,name42)==0){k++;}}printf("====================================================================== =====\n");printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}do{system("cls");printf("\n\n -->继续查找(1),返回主菜单(2)<-- ");choice=getchar();gets(l);if(choice!='1'&&choice!='2')WRONG ();}while(choice!='1'&&choice!='2');}while(choice!='2');}///////////////////////////////////////////////////////////////////////////////////////统计模块void SELECT(){char name1[10];//终点char name2[10];//起点int t,k;char choice;do{system("cls");printf("\n\n ====================欢迎进入统计火车车次界面====================\n");printf("\n -|- -|- -|- -|- 请选择统计方式-|- -|- -|- -|- \n\n");printf(" 1.按终点统计每日的车次数\n");printf(" 2.按起点统计每日的车次数\n");printf("\n 请选择:");scanf("%d",&t);gets(l);switch(t){case 1:printf(" 请输入终点:");gets(name1);break;case 2:printf(" 请输入起点:");gets(name2);break;default:WRONG();break;}READ();if(t==1){k=0;for(i=0;i<n;i++)if(strcmp(T[i].lp,name1)==0){printf("\n 按终点统计列车信息成功!\n");break;}}for(i=0;i<n;i++){if(strcmp(T[i].lp,name1)==0)k++;}printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}if(t==2){k=0;for(i=0;i<n;i++){if(strcmp(T[i].lp,name2)==0){printf("\n 按起点统计列车信息成功!\n");break;}}for(i=0;i<n;i++)if(strcmp(T[i].lp,name2)==0)k++;}printf("\n --> 共查询到%d 趟列车信息,请按任意键返回<-- ",k);gets(l);}do{system("cls");printf("\n\n -->继续统计(1),返回主菜单(2)<-- ");choice=getchar();gets(l);if(choice!='1'&&choice!='2')WRONG ();}while(choice!='1'&&choice!='2');}while(choice!='2');}///////////////////////////////////////////////////////////////////////////////////////纠错模块void WRONG(){system("cls");printf("\n\n ---> ! ! ! 输入错误,请按任意键返回! ! ! <--- ");gets(l);}。

c语言火车售票系统课程设计

c语言火车售票系统课程设计

c语言火车售票系统课程设计一、课程目标知识目标:1. 理解C语言中数组、函数、指针、结构体等基本概念,并能运用到火车售票系统的设计与实现中;2. 掌握C语言文件操作,实现火车票信息的存储与读取;3. 理解并掌握C语言中模块化编程思想,将火车售票系统划分为多个功能模块。

技能目标:1. 能够运用C语言编写出具有良好结构和可读性的代码;2. 培养学生分析问题、解决问题的能力,通过设计火车售票系统,学会使用C 语言进行实际项目开发;3. 学会使用调试工具,对火车售票系统进行测试和优化。

情感态度价值观目标:1. 培养学生合作意识,学会在团队中共同解决问题,提高沟通与协作能力;2. 激发学生对计算机编程的兴趣,培养勇于探索、积极创新的精神;3. 培养学生关注社会实际问题的责任感,了解信息技术在实际应用中的作用和价值。

课程性质:本课程为C语言程序设计课程的实践环节,通过设计火车售票系统,让学生将所学理论知识运用到实际项目中。

学生特点:学生已具备C语言基础知识和一定的编程能力,但对实际项目的开发流程和模块化编程思想尚不熟悉。

教学要求:注重理论与实践相结合,引导学生自主探究,培养学生实际编程能力和团队协作能力。

在教学过程中,关注学生的个体差异,提供个性化指导,确保每位学生都能达到课程目标。

通过课程学习,使学生具备独立开发小型项目的能力。

二、教学内容1. 火车售票系统需求分析:介绍项目背景,分析系统功能需求,明确学生需要实现的功能模块,如用户登录、车次查询、购票、退票、余票显示等。

2. C语言基础知识回顾:- 数组:回顾一维数组、二维数组的概念和应用;- 函数:介绍函数定义、调用、参数传递等基本概念;- 指针:讲解指针的定义、使用和指针操作;- 结构体:回顾结构体的定义和使用。

3. 火车售票系统设计:- 系统架构设计:引导学生采用模块化设计思想,将系统划分为多个功能模块;- 数据结构设计:介绍如何使用结构体和数组来存储和管理车次、座位、用户等信息。

火车票订票系统毕业设计报告

火车票订票系统毕业设计报告

学士学位论文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 系统的开发背景随着科学技术的发展,在网上订购火车票的人越来越多,特别是节假日的时候顾客扎堆进入火车票售票系统,火车票售票系统随时面临瘫痪的危险,对普通购票顾客来说,目前的网上火车票售票系统面向的是全国顾客,不同地方的顾客需要选择不同的出发地和目的地,浪费了时间,也许因此错过购票机会,无法到达预定地点,徒留遗憾。

火车票售票系统的设计与实现毕业论文金彬彬

火车票售票系统的设计与实现毕业论文金彬彬

郑州轻工业学院本科毕业设计(论文)题目:火车票售票系统的设计与实现.学生姓名:金彬彬 .院(系):计算机与通信工程学院 .专业班级:网络工程(物联网技术13-01) .学号:541313150118 .指导教师:吴庆岗 .完成时间:2017 年 5 月 15 日 .目录摘要 (I)ABSTRACT (II)1概述 (1)1.1开发背景 (1)1.2系统简介 (2)1.3组织架构 (3)1.4开发的目的意义 (3)2开发技术简介 (4)2.1B/S体系结构介绍 (4)2.1.1B/S介绍 (4)2.1.2B/S和C/S区别 (4)2.2JSP简述 (5)2.3Java I/0简介 (5)2.4Hibernate框架 (6)2.5MySQL简介 (6)3系统需求分析 (7)3.1项目开发可行性分析 (7)3.2运行需求 (7)3.2.1硬件环境 (7)3.2.2软件环境 (8)3.3业务流程分析 (8)3.4数据流程 (9)3.5功能需求 (10)4系统概要设计 (11)4.1系统架构 (11)4.2系统功能设计 (11)4.3系统数据库设计 (12)4.3.1概念结构设计 (12)4.3.2数据字典 (15)4.3.3数据库表格设计 (16)5系统实现 (18)5.1管理员模块 (18)5.1.1登录界面 (18)5.1.2订单处理界面 (19)5.1.3车次管理界面 (20)5.1.4友情链接界面 (21)5.1.5管理员信息维护界面 (22)5.1.6注册用户信息管理界面 (23)5.1.7网站公告界面 (24)5.2前台用户模块 (24)5.2.1系统首页 (24)5.2.2用户登录及注册 (25)5.2.3火车订票界面 (26)5.2.4订单支付界面 (27)5.2.5我的订单界面 (29)6系统测试与分析 (29)6.1系统测试的重要性 (29)6.2管理员登录功能测试 (30)6.3用户购票功能测试 (31)6.4系统评估 (31)结论 (32)参考文献 (33)致谢 (34)基于Java的火车售票系统的设计与实现摘要目前,根据各地火车站售票的真实情况,本设计以Java为基本设计语言,采用自上而下的结构化的系统设计思想,阐述了火车购票系统的开发过程、操作流程和涉及到的专业技能。

火车票售票系统c语言设计

火车票售票系统c语言设计

火车票售票系统的设计可以使用C语言来实现。

下面是一个简单的示例,展示了如何设计一个基本的火车票售票系统:```c#include <stdio.h>#include <stdlib.h>#define MAX_SEATS 100typedef struct {int seat_number;char passenger_name[50];} Ticket;Ticket tickets[MAX_SEATS];int total_tickets = 0;void displayMenu() {printf("\n=== 火车票售票系统 ===\n");printf("1. 购买票\n");printf("2. 查询票\n");printf("3. 取消票\n");printf("4. 退出\n");printf("=====================\n");printf("请输入选项: ");}void buyTicket() {if (total_tickets >= MAX_SEATS) {printf("对不起,票已售完。

\n");return;}Ticket ticket;printf("请输入座位号: ");scanf("%d", &ticket.seat_number);// 检查座位号是否已经被购买for (int i = 0; i < total_tickets; i++) {if (tickets[i].seat_number == ticket.seat_number) {printf("对不起,该座位已被购买。

\n");return;}}printf("请输入乘客姓名: ");scanf("%s", ticket.passenger_name);tickets[total_tickets++] = ticket;printf("购票成功!\n");}void queryTicket() {int seat_number;printf("请输入座位号: ");scanf("%d", &seat_number);for (int i = 0; i < total_tickets; i++) {if (tickets[i].seat_number == seat_number) {printf("座位号: %d\n", tickets[i].seat_number);printf("乘客姓名: %s\n", tickets[i].passenger_name); return;}}printf("对不起,该座位未被购买。

火车票售票系统的设计与实现

火车票售票系统的设计与实现

火车票售票系统的设计与实现目录引言 (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)摘要随着信息技术和社会的发展,以前使用手工处理的事情,现在已逐步被计算机管理方式所代替。

【精编完整版】火车订票系统的设计与实现毕业论文

【精编完整版】火车订票系统的设计与实现毕业论文

课程设计课程名称SQL数据库系统课程设计题目名称火车订票系统的设计与实现专业班级学生姓名学号指导教师目录目录 (1)引言 (1)HYPERLINK \L _TOC31277 1.概述 (3)1.1开发目的和意义 (3)1.2完成情况 (3)2. 开发环境及工具 (4)2.1开发环境和开发工具 (4)3. 系统分析 (5)3.1可行性分析 (5)3.1.1 经济可行性 (5)3.1.2 技术可行性 (5)3.1.3 操作可行性 (5)3.2需求分析 (5)3.2.1 功能需求 (5)3.2.2 数据需求 (6)3.2.3性能需求 (6)4. 系统设计 (8)4.1总体设计 (8)4.2详细设计 (8)4.2.1过程设计 (8)4.3数据库设计 (11)4.3.1 用户信息表 (11)4.3.2 车次详细信息表 (11)4.3.3 订票信息表 (11)4.3.4退票信息表 (12)5. 系统实现 (12)5.1系统登录界面 (12)5.2系统管理员登录界面 (13)5.3票务管理员登录界面 (14)5.4乘客登录界面 (14)6.总结 (16)谢辞 (17)参考文献 (19)附加部分代码实现 (20)引言用信息化推动工业化,用信息技术改造传统产业,这是我国迫切要完成的一项战略性任务。

作为工业文明的产物----铁路,如何借助信息技术的帮助,实现管理方式,运营组织,服务标准的现代化,这是摆在我国铁路工作者面前的重大课题。

铁路信息化是铁路现代化的重要标志,其根本目的是将信息技术应用到铁路生产经营与管理决策等各项活动中,改造传统产业,提高铁路生产率,提高市场竞争力,提高铁路运营经济效益。

国内外已有运作合理完善的火车售票管理系统,其具有售票、查询、管理和维护等功能,系统管理员可以进行对车次的更改、票价的变动及调度功能,票价的修改可以通过修改运价来进行,车次调度可通过对发车时刻表的修改来进行,维护功能即可对表进行修改。

火车票订票系统的开发与设计

火车票订票系统的开发与设计

火车票订票系统的开发与设计一、背景随着交通的发展和人们对旅行需求的增加,火车出行成为人们最常用的交通方式之一、然而,随之而来的问题就是火车票的抢购难以保证公平及高效。

因此,开发一个火车票订票系统成为迫切的需求,以提高购票效率和用户体验。

二、系统需求2.车次查询和显示:用户能够通过输入出发站、到达站和出发日期查询车次信息,并在页面上显示车次、座位情况、票价等信息。

3.座位选择和预定:用户可以从显示的可选择座位中进行选择,并预定乘车座位。

系统需要实时更新座位信息,避免多个用户同时预定同一个座位的情况。

4.订单支付和生成:用户在选择座位后,需要进行支付操作,支付成功后生成订单。

5.订单管理:用户可以查看自己的订单信息,包括出发日期、车次、座位、票价等。

6.订单取消:用户可以在一定时间内对订单进行取消操作,并退还相应的金额。

三、系统架构和技术选型1. 前端技术:使用HTML、CSS和JavaScript进行页面开发,使用Vue.js或React.js进行前端框架开发,提高系统的用户交互性和响应速度。

2. 后端技术:使用Java或Python作为后端开发语言,使用Spring或Django作为后端框架,实现用户注册、登录、车次查询、座位选择和预定、订单支付和管理等功能。

3. 数据库:使用关系型数据库(例如MySQL)存储用户和订单信息,使用Redis作为缓存数据库提高系统的读取速度。

4.服务器:选择云服务器或自建服务器进行部署,确保系统的可用性和稳定性。

5.安全性设计:对用户的信息进行加密存储,并使用HTTPS协议进行数据传输,确保用户信息的安全。

四、系统流程设计1.用户注册和登录流程:a.用户打开系统网页,点击注册按钮。

c.系统验证用户输入信息的合法性,如果合法则将用户信息存储到数据库中,并跳转至登录页面。

d.用户输入已注册的用户名和密码,并点击登录按钮。

e.系统验证用户名和密码是否匹配,如果匹配则跳转至首页,否则提示用户重新输入。

java 铁路售票系统项目源码 毕业设计

java 铁路售票系统项目源码 毕业设计

java 铁路售票系统项目源码毕业设计Java铁路售票系统项目源码是一项在毕业设计中常见的主题。

在这个项目中,学生需要使用Java编程语言,设计一个完整的铁路售票系统,包括用户界面、数据管理、订单处理等多个模块。

在本文中,我将深入探讨这个主题,从系统设计、代码实现、功能特点等多个方面进行全面评估,并据此撰写一篇有价值的文章。

I. 系统设计1.1 系统架构在Java铁路售票系统项目中,良好的系统架构能够有效地促进项目的开发和维护。

我们需要考虑系统的模块划分,如用户管理、车票管理、订单管理等模块,以及各个模块之间的交互关系。

另外,我们还需要考虑系统的性能、可扩展性、安全性等方面的设计。

1.2 数据库设计数据管理是铁路售票系统中至关重要的一部分。

在数据库设计中,我们需要考虑数据表的设计、索引的建立、数据的一致性和完整性等问题。

另外,如何优化数据库查询和提升系统的响应速度也是需要重点考虑的问题。

II. 代码实现2.1 用户界面用户界面是用户和系统进行交互的重要入口。

在Java铁路售票系统中,我们需要设计直观、友好的界面,以便用户能够方便快捷地完成购票、查询车次、查看订单等操作。

2.2 数据处理数据的处理是整个系统的核心。

我们需要使用Java语言实现对数据库的操作,包括数据的增删改查等操作。

另外,数据的加密、解密、数据验证等功能也需要在代码实现中得到充分考虑。

III. 功能特点3.1 实现多种车票查询在铁路售票系统中,用户需要能够根据不同的出发地、目的地、时间等条件查询车票信息。

系统需要实现多种车票查询的功能,并能够快速准确地返回查询结果。

3.2 订单管理用户成功购票后,系统需要生成订单并进行管理。

在订单管理中,我们需要考虑订单的状态更新、退票处理、订单详情展示等功能。

IV. 总结和回顾通过对Java铁路售票系统项目源码的深入探讨,我对这个主题有了更深入的理解。

在系统设计方面,我意识到良好的架构设计对项目的成败至关重要;在代码实现方面,我了解到数据处理和用户界面设计是需要重点关注的部分;在功能特点方面,我认识到多种车票查询和订单管理是系统的核心功能。

Java实战之火车票预订系统的实现

Java实战之火车票预订系统的实现

Java实战之⽕车票预订系统的实现⽬录⼀、项⽬运⾏⼆、效果图三、核⼼代码个⼈中⼼Controller管理员和员⼯登陆控制⽤户管理操作⼀、项⽬运⾏环境配置:Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都⽀持)项⽬技术:JSP + Servlert + html+ css + JavaScript + JQuery + Ajax 等等;⼆、效果图三、核⼼代码个⼈中⼼Controller/*** 个⼈中⼼Controller*/@Controllerpublic class UserInforController {@Autowiredprivate UserInforServiceImpl userInforService = null; /*** 修改密码操作* @param oldPassword* @param newPassword* @param rePassword* @param httpSession* @return*/@RequestMapping("changePassword.do")@ResponseBodypublic Map<String, String> changePassword(String oldPassword, String newPassword,String rePassword, HttpSession httpSession){HashMap<String, String> map = new HashMap<String, String>();if (newPassword.equals(rePassword)){SystemManager admin = (SystemManager) httpSession.getAttribute("admin");String encodeByMD5 = MD5Utils.encodeByMD5(oldPassword);if (encodeByMD5.equals(admin.getSmPassword())){String newPasswords = MD5Utils.encodeByMD5(newPassword);admin.setSmPassword(newPasswords);userInforService.updateSystemManagePassword(admin.getSmId(),admin);map.put("type","success");map.put("msg","密码修改成功");return map;}else{map.put("type","error");map.put("msg","原密码错误");return map;}}else{map.put("type","error");map.put("msg","两次密码不⼀致");return map;}}/*** 员⼯修改个⼈密码* @param oldPassword* @param newPassword* @param rePassword* @param httpSession* @return*/@RequestMapping("changeEmployeePassword.do")@ResponseBodypublic Map<String, String> changeEmployeePassword(String oldPassword, String newPassword, String rePassword, HttpSession httpSession){HashMap<String, String> map = new HashMap<String, String>();if (newPassword.equals(rePassword)){Integer eid = (Integer) httpSession.getAttribute("employeeId");try {userInforService.updateEmployeePassword(eid, oldPassword, newPassword);map.put("type","success");map.put("msg","密码修改成功");return map;} catch (CustomException e) {map.put("type","error");map.put("msg","原密码错误");return map;}}else{map.put("type","error");map.put("msg","两次密码不⼀致");return map;}}/*** 查看个⼈信息* @param httpSession* @return*/@RequestMapping("inforEmployee.do")public @ResponseBody EmployeeCustomVo getInforEmployee(HttpSession httpSession){Integer id = (Integer) httpSession.getAttribute("employeeId");EmployeeCustomVo employeeCustomVo = userInforService.getInforEmployee(id);return employeeCustomVo;}/*** 修改个⼈信息* @param httpSession* @param employee* @return*/@ResponseBody@RequestMapping("updateInforEmployee.do")public Message updateInforEmployee(HttpSession httpSession, Employee employee){Integer id = (Integer) httpSession.getAttribute("employeeId");employee.seteId(id);if(userInforService.updateEmploueeById(id,employee)<=0) {return Message.error("修改信息失败");}return Message.success();}/*** 个⼈⼯资信息* @param pageNum* @param limit* @param year* @param httpSession* @return* @throws Exception*/@RequestMapping("employeeSalaryList.do")@ResponseBodypublic EmployeeSalaryVO findSelective(@RequestParam(value="page", defaultValue="1")int pageNum,@RequestParam(value="limit", defaultValue="10") int limit,@RequestParam(value="year", defaultValue="1") String year,HttpSession httpSession) throws Exception {Integer eId = (Integer) httpSession.getAttribute("employeeId");//pageNum:起始页⾯ pageSize:每页的⼤⼩PageHelper.startPage(pageNum,limit);//查找条件,⼀定要紧跟在startPage后List<Salary> salaryList = userInforService.getEmployeeSalaryList(eId, year);PageInfo pageResult = new PageInfo(salaryList);//设置前台需要的数据EmployeeSalaryVO employeeSalaryVO = new EmployeeSalaryVO();employeeSalaryVO.setCode(0);employeeSalaryVO.setMsg("");employeeSalaryVO.setCount((int) pageResult.getTotal());employeeSalaryVO.setData(pageResult.getList());return employeeSalaryVO;}}管理员和员⼯登陆控制/*** @Author: admin* @Description: 管理员和员⼯登陆控制**/@Controllerpublic class LoginController {@Autowiredprivate LoginServiceImpl loginService = null;/*** @Author: admin* @Description: 验证码变更* @Date: 14:33 2021/10/5* @Param: [request, response]* @Return: void**/@RequestMapping(value = "/changeCode.do")@ResponseBodypublic void getIdentifyingCode(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{// 验证码存储在session的identifyingCode,属性中CaptchaUtil.outputCaptcha(request, response);}// 获取员⼯登陆界⾯@RequestMapping("/")public String getLoginPage(){return "employee/login.html";}// 获取管理员登陆界⾯@RequestMapping("/admin.do")public String getAdminLoginPage(HttpServletRequest request){String realPath = request.getServletContext().getRealPath("/");request.getSession().setAttribute("realPath", realPath);return "admin/adminLogin.html";}/*** 员⼯登录操作* @param model* @param httpSession* @param username* @param password* @param identifyingcode* @return*/@RequestMapping(value = "/employeeLogin.do")@ResponseBodypublic Message employeeLogin(HttpSession httpSession, String username,String password, String identifyingcode){if(StringUtils.isEmpty(username)) {return Message.error("请填写⼯号");}if(StringUtils.isEmpty(password)) {return Message.error("请填写密码");}if(StringUtils.isEmpty(identifyingcode)) {return Message.error("请填写验证码");}String code = (String) httpSession.getAttribute("identifyingCode");if(!identifyingcode.equalsIgnoreCase(code)){return Message.error("验证码错误");}Employee employee = loginService.findEmployeeByIdAndPassword(username, password); if(employee==null) {return Message.error("⼯号或密码错误");}httpSession.setAttribute("employeeId",employee.geteId());return Message.success("员⼯登录成功");}@RequestMapping(value = "/loginSuccess.do")public String loginSucceses(Model model) throws Exception{return "employee/index.html";}/*** 管理员登录操作* @param model* @param httpSession* @param username* @param password* @param identifyingcode* @return*/@RequestMapping(value = "/adminLogin.do")@ResponseBodypublic Message adminLogin(HttpSession httpSession, String username,String password, String identifyingcode){if(StringUtils.isEmpty(username)) {return Message.error("请填写账号");}if(StringUtils.isEmpty(password)) {return Message.error("请填写密码");}if(StringUtils.isEmpty(identifyingcode)) {return Message.error("请填写验证码");}String code = (String) httpSession.getAttribute("identifyingCode");if(identifyingcode.equalsIgnoreCase(code)){SystemManager manager = loginService.findSystemManagerByIdAndPassword(username, password); if(manager==null) {return Message.error("账号或密码错误");}// 保存到sessionhttpSession.setAttribute("admin",manager);return Message.success("登录成功");}else {return Message.error("验证码错误");}}@RequestMapping(value = "/getAdminAccount.do")@ResponseBodypublic String getAdminAccount(HttpSession httpSession){SystemManager systemManager = (SystemManager) httpSession.getAttribute("admin");// SystemManager manager = loginService.findSystemManagerById(id);return systemManager.getSmAccount();}@RequestMapping(value = "/getEmployeeAccount.do")@ResponseBodypublic Map<String,String> getEmployeeAccount(HttpSession httpSession){Integer id = (Integer) httpSession.getAttribute("employeeId");Employee employee = loginService.findEmployeeById(id);HashMap<String, String> map = new HashMap<String, String>();map.put("account",employee.geteAccount());map.put("name",employee.geteName());return map;}@RequestMapping(value = "/logout.do")public String logout(HttpSession httpSession){httpSession.removeAttribute("employeeId");return "redirect:/";}@RequestMapping(value = "/logoutAdmin.do")public String logoutAdmin(HttpSession httpSession){httpSession.removeAttribute("admin");return "redirect:/admin.do";}}⽤户管理操作/*** ⽤户管理操作*/@Controller@RequestMapping("/user")public class UserController {@Autowiredprivate UserService userService;/*** ⽤户添加页⾯* @return*/@GetMapping("/add")public String create() {return "user/add";}/*** ⽤户添加操作* @param user* @return*/@PostMapping("/add")@ResponseBodypublic Map<String, Object> add(@RequestBody User user) {if(StringUtils.isEmpty(user.getUserName())){return MapControl.getInstance().error("请填写⽤户名").getMap();}if(StringUtils.isEmpty(user.getName())){return MapControl.getInstance().error("请填写名称").getMap();}if(StringUtils.isEmpty(user.getUserPwd())){return MapControl.getInstance().error("请填写密码").getMap();}int result = userService.create(user);if (result <= 0) {return MapControl.getInstance().error().getMap();}return MapControl.getInstance().success().getMap();}/*** 根据id删除* @param id* @return*/@PostMapping("/delete/{id}")@ResponseBodypublic Map<String, Object> delete(@PathVariable("id") Integer id) {int result = userService.delete(id);if (result <= 0) {return MapControl.getInstance().error().getMap();}return MapControl.getInstance().success().getMap();}//批量删除@PostMapping("/delete")@ResponseBodypublic Map<String, Object> delete(String ids) {int result = userService.delete(ids);if (result <= 0) {return MapControl.getInstance().error().getMap();}return MapControl.getInstance().success().getMap();}/*** 编辑⽤户信息操作* @param user* @return*/@PostMapping("/edit")@ResponseBodypublic Map<String, Object> edit(@RequestBody User user) {if(StringUtils.isEmpty(user.getUserName())){return MapControl.getInstance().error("请填写⽤户名").getMap();}if(StringUtils.isEmpty(user.getName())){return MapControl.getInstance().error("请填写名称").getMap();}if(StringUtils.isEmpty(user.getUserPwd())){return MapControl.getInstance().error("请填写密码").getMap();}int result = userService.update(user);if (result <= 0) {return MapControl.getInstance().error().getMap();}return MapControl.getInstance().success().getMap();}/*** 根据id查询,跳转修改页⾯* @param id* @param modelMap* @return*/@GetMapping("/edit/{id}")public String edit(@PathVariable("id") Integer id, ModelMap modelMap) {User user = userService.detail(id);modelMap.addAttribute("user", user);return "user/edit";}//查询所有@PostMapping("/query")@ResponseBodypublic Map<String, Object> query(@RequestBody User user) {List<User> list = userService.query(user);Integer count = userService.count(user);return MapControl.getInstance().success().page(list, count).getMap();}//跳转列表页⾯@GetMapping("/list")public String list() {return "user/list";}}以上就是Java实战之⽕车票预订系统的实现的详细内容,更多关于Java⽕车票预订系统的资料请关注其它相关⽂章!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录第一部分功能代码......................................................................................................................... - 1 -1.DBO.JAVA (1)2.L OG.JAVA (4)3.MD5.JAVA (5)4.C OMMON.JAVA (6)5.C HECK C ODE.JAVA (8)6.L OGIN S ERVLET.JAVA (9)7.T RAIN B EAN.JAVA (13)第二部分外部显示代码 ............................................................................................................... - 24 -1.INDEX.JSP (24)2.LOGIN.JSP (27)3.ERROR.JSP (31)4.INDEX.JSP (32)5.INDEX.JSP (35)第一部分内部功能代码1. DBO.javapackage com.util;import java.sql.*;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import javax.activation.DataSource;import java.sql.*;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.naming.Context;import javax.naming.InitialContext;public class DBO {private Connection conn;private Statement stmt;private DataSource ds;public DBO(){}/**打开数据库*/public void open() {try {Class.forName("org.gjt.mm.mysql.Driver");conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/cpyd?user=root&passwor d=siming&useUnicode=true&characterEncoding=GBK");stmt=conn.createStatement();System.out.println("打开数据库连接");}catch (Exception ex) {System.err.println("打开数据库时出错: " + ex.getMessage());}}/**关闭数据库,将连接返还给连接池*/public void close(){try {// connMgr.freeConnection("java", conn);conn.close();System.out.println ("释放连接");}catch (SQLException ex) {System.err.println("返还连接池出错: " + ex.getMessage());}}/**执行查询*/public ResultSet executeQuery(String sql) throws SQLException{ResultSet rs = null;rs = stmt.executeQuery(sql);System.out.println ("执行查询");return rs;}/**执行增删改*/public int executeUpdate(String sql) throws SQLException { int ret = 0;ret = stmt.executeUpdate(sql);System.out.println ("执行增删改");return ret;}/**将SQL语句加入到批处理*/public void addBatch(String sql) throws SQLException { stmt.addBatch(sql);}/**执行批处理*/public int [] executeBatch() throws SQLException{boolean isAuto=conn.getAutoCommit();conn.setAutoCommit(false);int [] updateCounts = stmt.executeBatch();//mit();//conn.setAutoCommit(isAuto);//conn.setAutoCommit(true);return updateCounts;}public boolean getAutoCommit() throws SQLException{ return conn.getAutoCommit();}public void setAutoCommit(boolean auto) throws SQLException { conn.setAutoCommit(auto);}public void commit() throws SQLException {mit();// this.close();}public void rollBack() throws SQLException {conn.rollback();// this.close();}}2. Log.javapackage com.util;/*** 日志*/import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;public class Log {public void addLog(String str){try {File file=new File("c://log.txt");FileWriter fw=new FileWriter(file,true);BufferedWriter bw=new BufferedWriter(fw);PrintWriter pw = new PrintWriter(bw);pw.write(str);bw.newLine();//断行bw.flush();//将数据更新至文件pw.close();fw.close();//关闭文件流} catch (FileNotFoundException e) {System.out.println("警告:日志文件没找到!!!!");e.printStackTrace();} catch (IOException e) {System.out.println("警告:日志文件IO错误!!!!");e.printStackTrace();}}}3. MD5.javapackage com.util;/***MD5密码加密类**/import java.security.*;import java.security.spec.*;public final class MD5 {public final static String MD5(String s){char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd','e', 'f'};try {byte[] strTemp = s.getBytes();MessageDigest mdTemp = MessageDigest.getInstance("MD5");mdTemp.update(strTemp);byte[] md = mdTemp.digest();int j = md.length;char str[] = new char[j * 2];int k = 0;for (int i = 0; i < j; i++) {byte byte0 = md[i];str[k++] = hexDigits[byte0 >>> 4 & 0xf];str[k++] = hexDigits[byte0 & 0xf];}return new String(str);}catch (Exception e){return null;}}}4. Common.javapackage com.util;/*** 常用方法类*/import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public final class Common {////////////字符串HTML 转换public static String turn(String str) {while (str.indexOf("\n") != -1) {str = str.substring(0, str.indexOf("\n")) + "<br>"+ str.substring(str.indexOf("\n") + 1);}while (str.indexOf(" ") != -1) {str = str.substring(0, str.indexOf(" ")) + "&nbsp;"+ str.substring(str.indexOf(" ") + 1);}return str;}/////////////返回日期当前日期传入0 一年之前传入-1 三年后传入3 public static String getDate(int num){SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();c.add(Calendar.YEAR, num);return df.format(c.getTime());}/////////////数据库输出字符串的过滤public static String SQLStr(String str){if(str != null && str.length()>1 && str.substring(0,1).equals("?")){ str = str.substring(1);}if(str == null || str.equals("") || str.equals(" ")){str = "&nbsp;";}return str;}/////////////过滤空格public static String PageStr(String str){if(str==null || str.trim().equals("") || str.equals(" ")||str.equals("null")){ str = "";}str = str.trim();return str;}/////////////格式化日期public static String formatRZ(String oldDate){SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");Date Date = new Date(oldDate);return df.format(Date);}////////////汉化public static String toChineseAndTrim(String str){ if(str==null){str="";}try{byte b[]=str.getBytes("iso-8859-1");str=new String(b);str=str.trim();}catch(Exception e){e.printStackTrace();}return str;}}5. CheckCode.javapackage com.util;/*** 验证码生成类*/import java.util.Random;public class CheckCode {public String getCheckCode(){Random random = new Random();String sRand="";for (int i=0;i<4;i++){String rand=String.valueOf(random.nextInt(10));sRand+=rand;}return sRand;}}6. LoginServlet.javapackage com.action;/*** 前台会员登陆退出*/import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.bean.MemberBean;import com.util.Constant;import com.util.Filter;public class LoginServlet extends HttpServlet { /*** Constructor of the object.*/public LoginServlet() {super();}/*** Destruction of the servlet. <br>*/public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType(Constant.CONTENTTYPE);request.setCharacterEncoding(Constant.CHARACTERENCODING);HttpSession session = request.getSession();MemberBean memberBean = new MemberBean();String method = Filter.escapeHTMLTags(request.getParameter("method").trim());if(method.equals("HEADUSERLOGIN")){//网页头部会员登陆String reg_user = Filter.escapeHTMLTags(request.getParameter("reg_user").trim());String reg_pwd = Filter.escapeHTMLTags(request.getParameter("reg_pwd").trim());String reg_type = Filter.escapeHTMLTags(request.getParameter("reg_type").trim());String lastip = request.getRemoteAddr();int flag = memberBean.memberLogin(reg_user, reg_pwd, reg_type);if(flag == Constant.SUCCESS){//登陆成功String info = memberBean.getLastTimeIP(reg_user);int flag2 = memberBean.upmemberLogin(reg_user, lastip);if(flag2 == Constant.SUCCESS){session.setAttribute("member", reg_user);session.setAttribute("type", reg_type);session.setAttribute("info", info);request.getRequestDispatcher("login1.jsp").forward(request, response);}else{session.setAttribute("member", reg_user);session.setAttribute("type", reg_type);session.setAttribute("info", info);session.setAttribute("message", "登陆成功,登陆信息更新失败!");request.getRequestDispatcher("login1.jsp").forward(request, response);}}else if(flag == _ERROR){//用户名错误request.setAttribute("reg_user", reg_user);request.setAttribute("message", "该用户名不存在或者已被管理员冻结!");request.getRequestDispatcher("login1.jsp").forward(request, response);}else if(flag == Constant.PASSWORD_ERROR){//密码错误request.setAttribute("reg_user", reg_user);request.setAttribute("message", "密码错误!");request.getRequestDispatcher("login1.jsp").forward(request, response);}}else if(method.equals("PAGEUSERLOGIN")){//登陆页面会员登陆String username = Filter.escapeHTMLTags(request.getParameter("username").trim());String password = Filter.escapeHTMLTags(request.getParameter("password").trim());String reg_type = Filter.escapeHTMLTags(request.getParameter("reg_type").trim());String lastip = request.getRemoteAddr();int flag = memberBean.memberLogin(username, password, reg_type);if(flag == Constant.SUCCESS){//登陆成功String info = memberBean.getLastTimeIP(username);int flag2 = memberBean.upmemberLogin(username, lastip);if(flag2 == Constant.SUCCESS){session.setAttribute("member", username);session.setAttribute("type", reg_type);session.setAttribute("info", info);request.getRequestDispatcher("member/index.jsp").forward(request, response);}else{session.setAttribute("member", username);session.setAttribute("type", reg_type);session.setAttribute("info", info);session.setAttribute("message", "登陆成功,登陆信息更新失败!");request.getRequestDispatcher("member/index.jsp").forward(request, response);}}else if(flag == _ERROR){//用户名错误request.setAttribute("reg_user", username);request.setAttribute("message", "该用户名不存在!");request.getRequestDispatcher("login.jsp").forward(request, response);}else if(flag == Constant.PASSWORD_ERROR){//密码错误request.setAttribute("reg_user", username);request.setAttribute("message", "密码错误!");request.getRequestDispatcher("login.jsp").forward(request, response);}}else if(method.equals("logout")){//从iframe页面退出登陆session.removeAttribute("member");session.removeAttribute("type");request.getRequestDispatcher("login1.jsp").forward(request, response);}else if(method.equals("pagelogout")||method.equals("memberexit")){//从网页退出登陆session.removeAttribute("member");session.removeAttribute("type");request.getRequestDispatcher("index.jsp").forward(request, response);}else{request.getRequestDispatcher("error.jsp").forward(request, response);}}public void init() throws ServletException {// Put your code here}}7. TrainBean.javapackage com.bean;import java.sql.ResultSet;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import com.util.Constant;import com.util.DBO;public class TrainBean {private List list;private ResultSet rs;private String date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());//车次//增加车次管理times 例如:沈阳-北京2510次时间:xx点xx分发车xx点xx 分到达软座硬座卧铺票价//增加车次管理train例如:id, train, num,stime, etime,soft,softprice,hard, hardprice, sleep, sleepprice, addtimepublic int addTrain(String train,String num,String stime,String etime,String sitetype,String price){String sql = "insert into train (train,num,stime,etime,sitetype,price,addtime) " + "values('"+train+"','"+num+"','"+stime+"','"+etime+"','"+sitetype+"','"+price+"','"+dat e+"')";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// 修改public int upTrain(int id,String train,String num,String stime,String etime,Stringsitetype,String price){String sql = "update train set train='"+train+"',num='"+num+"',stime='"+stime+"',etime='"+etime+"',sitetype='"+sitety pe+"'," +"price='"+price+"' where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// 删除public int delTrain(int id){String sql = "delete from train where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// 所有public List getAllTrain(){String sql = "select * from train order by id desc ";DBO dbo=new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2=new ArrayList();list2.add(rs.getString(1));list2.add(rs.getString(2));list2.add(rs.getString(3));list2.add(rs.getString(4));list2.add(rs.getString(5));list2.add(rs.getString(6));list2.add(rs.getString(7));list2.add(rs.getString(8));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return null;}finally{dbo.close();}}public List getTrain(String train){String sql = "select * from train where train like '%"+train+"%' order by id desc ";DBO dbo=new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2=new ArrayList();list2.add(rs.getString(1));list2.add(rs.getString(2));list2.add(rs.getString(3));list2.add(rs.getString(4));list2.add(rs.getString(5));list2.add(rs.getString(6));list2.add(rs.getString(7));list2.add(rs.getString(8));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return null;}finally{dbo.close();}}public List getOneTrain(String id){String sql = "select * from train where id='"+id+"' ";DBO dbo=new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){list.add(rs.getString(1));list.add(rs.getString(2));list.add(rs.getString(3));list.add(rs.getString(4));list.add(rs.getString(5));list.add(rs.getString(6));list.add(rs.getString(7));list.add(rs.getString(8));}return list;}catch(Exception e){e.printStackTrace();return null;}finally{dbo.close();}}//订票管理// 增加车次管理times 例如:沈阳-北京2510次时间:xx点xx分发车xx点xx 分到达软座硬座卧铺票价flag:是送票pay:付款方式//增加车次管理train 例如:id,train,num,stime,etime,soft,softprice,hard,hardprice,sleep,sleepprice,addtime public int addPrep(String train,String num,String stime,String etime,String sitetype,String price,int numb,String pay,String member){String sql = "insert into prep (train,num,stime,etime,sitetype,price,numb,pay,member,addtime) " +"values('"+train+"','"+num+"','"+stime+"','"+etime+"','"+sitetype+"','"+price+"','"+nu mb+"','"+pay+"','"+member+"','"+date+"')";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// 修改public int upPrep(int id,int numb,String pay){String sql = "update prep set numb='"+numb+"',pay='"+pay+"' where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}//送票public int sendPrep(int id){String sql ="update prep set flag='已送票'";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// 删除public int delPrep(int id){String sql = "delete from prep where id='"+id+"'";DBO dbo = new DBO();dbo.open();try{int i = dbo.executeUpdate(sql);if(i == 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;}catch(Exception e){e.printStackTrace();return Constant.SYSTEM_ERROR;}finally{dbo.close();}}// 所有订票信息public List getAllPrep(){String sql = "select * from prep order by id desc ";DBO dbo=new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2=new ArrayList();list2.add(rs.getString(1));list2.add(rs.getString(2));list2.add(rs.getString(3));list2.add(rs.getString(4));list2.add(rs.getString(5));list2.add(rs.getString(6));list2.add(rs.getString(7));list2.add(rs.getString(8));list2.add(rs.getString(9));list2.add(rs.getString(10));list2.add(rs.getString(11));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return null;}finally{dbo.close();}}public List getOnePrep(String id){String sql = "select * from prep where id='"+id+"' ";DBO dbo=new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){list.add(rs.getString(1));list.add(rs.getString(2));list.add(rs.getString(3));list.add(rs.getString(4));list.add(rs.getString(5));list.add(rs.getString(6));list.add(rs.getString(7));list.add(rs.getString(8));list.add(rs.getString(9));list.add(rs.getString(10));list.add(rs.getString(11));}return list;}catch(Exception e){e.printStackTrace();return null;}finally{dbo.close();}public List getPrep(String member){String sql = "select * from prep where member='"+member+"' ";DBO dbo=new DBO();list = new ArrayList();dbo.open();try{rs = dbo.executeQuery(sql);while(rs.next()){List list2=new ArrayList();list2.add(rs.getString(1));list2.add(rs.getString(2));list2.add(rs.getString(3));list2.add(rs.getString(4));list2.add(rs.getString(5));list2.add(rs.getString(6));list2.add(rs.getString(7));list2.add(rs.getString(8));list2.add(rs.getString(9));list2.add(rs.getString(10));list2.add(rs.getString(11));list.add(list2);}return list;}catch(Exception e){e.printStackTrace();return null;}finally{dbo.close();}}第二部分外部显示代码1. index.jsp<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312" %><%@ include file="iframe/head.jsp" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/1999/REC-html401-19991224/loose.dtd"><HTML xmlns="/1999/xhtml"><HEAD><LINK href="images/default.css" type=text/css rel=stylesheet><LINK href="images/css.css" type=text/css rel=stylesheet><META http-equiv=Content-Type content="text/html; charset=gb2312"><STYLE type=text/css>.ycbt {BORDER-RIGHT: #fff 1px solid; BORDER-TOP: #fff 1px solid; PADDING-LEFT: 1.8em; BACKGROUND-COLOR: #EAF2EF; BORDER-LEFT: #fff 1px solid; PADDING-TOP: 7px; BORDER-BOTTOM: #fff 1px solid; HEIGHT: 20px}.xsbt {BORDER-RIGHT: #fff 1px solid; BORDER-TOP: #fff 1px solid; PADDING-LEFT: 1.8em; BACKGROUND-IMAGE: url(images/head1.gif); BORDER-LEFT: #fff 1px solid; PADDING-TOP: 7px; BORDER-BOTTOM: #fff 1px solid; HEIGHT: 20px}.xsnr {DISPLAY: block}.ycnr {DISPLAY: none}</STYLE><SCRIPT type=text/javascript>function tb_xs(t,m,n){for(var i=1;i<=m;i++){if (i != n){document.getElementById("tb"+t+ "_bt" + i).className= "ycbt"; document.getElementById("tb"+t+ "_nr" + i).className= "ycnr";}else{document.getElementById("tb"+t+ "_bt" + i).className= "xsbt"; document.getElementById("tb"+t+ "_nr" + i).className= "xsnr";}}}</SCRIPT><SCRIPT language=JavaScript><!--//屏蔽出错代码function killErr(){return true;}window.onerror=killErr;//--></SCRIPT><SCRIPT language=JavaScript><!--//处理大分类一行两个小分类function autoTable(div){fs=document.getElementById(div).getElementsByTagName("TABLE");for(var i=0;i<fs.length;i++){fs[i].style.width='49.5%';if(i%2==1){if (document.all) {fs[i].style.styleFloat="right";}else{fs[i].style.cssFloat="right;";}}else{if (document.all) {fs[i].style.styleFloat="left";}else{fs[i].style.cssFloat="left;";}}}}//--></SCRIPT><SCRIPT language=JavaScript src="images/inc.js"></SCRIPT><SCRIPT language=JavaScript src="images/default.js"></SCRIPT><SCRIPT language=JavaScript src="images/swfobject.js"></SCRIPT><META content="MSHTML 6.00.2900.3268" name=GENERATOR></HEAD><%String message = (String)request.getAttribute("message");if(message == null){message = "";}if (!message.trim().equals("")){out.println("<script language='javascript'>");out.println("alert('"+message+"');");out.println("</script>");}request.removeAttribute("message");%><BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=0><SCRIPT language=JavaScript><!--//目的是为了做风格方便document.write('<div class="wrap">');//--></SCRIPT><TABLE height=300 class=MainTable cellSpacing=0 cellPadding=0 width="100%"align=center border=0><TBODY><TR><TD align=center><br><br><br><br><br><h1>欢迎使用火车票网上预定系统</h1></TD></TR></TBODY></TABLE><SCRIPT language=JavaScript><!--//目的是为了做风格方便document.write('</div>');//--></SCRIPT><SCRIPT language=JavaScript><!--clickEdit.init();//--></SCRIPT></BODY></HTML><%@ include file="iframe/foot.jsp"%>2. login.jsp<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312" %><%@ include file="../../iframe/head.jsp" %><jsp:useBean id="code" scope="page" class="com.util.CheckCode" /><SCRIPT language=javascript>//检验表单的合法性function checklogin() {if (ername.value.replace(/\s+$|^\s+/g,"").length<=0) {alert("\请输入您的用户名!");ername.focus();}else if (document.form1.password.value.replace(/\s+$|^\s+/g,"").length<=0) { alert("\请输入您的密码!");document.form1.password.focus();}else if(document.form1.checkcode.value.replace(/\s+$|^\s+/g,"").length<=0) { alert("\请输入验证码!");document.form1.checkcode.focus();}else if (document.form1.checkcode.value != document.form1.yzm.value) { alert("\验证码错误!");document.form1.checkcode.focus();}else{form1.submit();}}</SCRIPT><%String message = (String)request.getAttribute("message");if(message == null){message = "";}if (!message.trim().equals("")){out.println("<script language='javascript'>");out.println("alert('"+message+"');");out.println("</script>");}request.removeAttribute("message");String yzm=code.getCheckCode();%><FORM id=form1 name = form1 action = <%=basePath %> Login.shtml? method = PAGEUSERLOGIN method=post><TABLE width=600 border=0 align="center" id=Table7><TBODY><TR height=40><TD vAlign=center align=middle colSpan=3><FONT face=宋体></FONT><BR><FONT color=#ff7700><STRONG>欢迎登陆<%=sysList.get(0).toString() %></STRONG></FONT></TD></TR><TR><TD colSpan=3><HR class=hui align=center width="98%" SIZE=1></TD></TR><TR height=60><TD align=right width=84 height=110></TD><TD noWrap align=middle width=171><TABLE width="100%" border=0><TBODY><TR><TD width="35%" height=24>用户名:</TD><TD><INPUT class=input_new id=username style="WIDTH: 110px" size=15 maxLength=10 name =username onbeforepaste= "clipboardData.setData ('text',clipboardData.getData('text').replace(/[^\d]/g,''))"onkeyup="value=value.replace(/[\W]/g,'')"value=<%=request.getAttribute("reg_user")==null?"":request.getAttribute("reg_user") %>></TD></TR><TR>。

相关文档
最新文档