火车票订票全攻略

2022-07-03

第一篇:火车票订票全攻略

火车票订票攻略

1网络订票

铁路部门首次推行互联网购票,网址为:,预售期为12天(含当天),12月28日起开始预订春运票。目前可订以“C”、“D”、“G”、“Z”、“T”“K”开头的以及1000至5000的列车车票。

准备工作

备一台能上网的电脑,有身份证(一二代均可);纸和笔;开通网银的银行卡等。 记者体验

记者首次网络订票时,由于是“新手”,不熟悉流程,注册就用了3分钟,需要填的信息太多了,比如真实姓名、身份证号码、手机信息等,注册成功后还要通过用户名及邮箱激活,然后重新登录才能网上订票。首次订票总耗时超过7分钟。昨日,记者再以旧用户身份网上预订车票,3分钟就可以搞定了。 注意事项

中国铁路客服中心网站才是唯一购票网站(网址为)。需网络预订春运期间火车票的乘客,应当事先完成12306网站的注册,并在常用联系人中添加好需要购票的旅客姓名、身份证等信息。这样预售期一到就可登录直接订票,避免临时注册、临时输入信息浪费时间。

须在规定的支付时间内完成网上支付并需换取纸质票进站。可使用的有效身份证件包括中华人民共和国居民身份证、港澳居民来往内地通行证、台湾居民来往大陆通行证和护照四种。

2电话订票 最好提前演练

取票注意时间

订票号码为9510510

5、96020088。12月28日起,市民可拨打上述电话预订2012年春运火车票。电话订票的预订期为4-12天。 准备工作

备好手机或座机,手机要充够电;身份证等证件;笔和纸;最好在安静的环境中拨打电话。

在正式订票前,一定要熟悉操作流程,提前试拨并记录每个步骤需输入的电话按键。做好这样的准备,正式订票时不必听提示便可直接按键,节省时间。提前确定好行程及乘车日期,查询所要乘坐的车次,并准备好允许订票的有效身份证件号码(使用二代居民身份证可以提高订票效率)、乘车站和到达站所在城市电话区号,供订票时使用。

记者体验

昨日,记者拨打95105105,按提示音一步步操作,最终成功订到一张1月6日东莞东至武昌的硬座车票。粗略算了一下,订票时间约4分钟。不过,春运期间订票电话较难打通,市民可连续多次拨打,或多台电话同时拨打。 注意事项

12月28日起,电话订票的预订期为4-12天。例如:今天可预订12月31日至明年元月8日,即春运首日的火车票。电话订票时间为每日6时至23时。春运期间,一张有效证件,一天只能订票一次,一次最多可订同日期、同车次、同席别的车票不超过3张。电话订票有规定的取票时间,当日00:00至12:00时段内电话订票的,须在当日24:00前取票;12:00至24:00时段内电话订票的,须在次日12:00前取票。超过时间未取票的,所订车票将不予保留。 代售点 窗口买票

3注意预售期

提前去排队

节前,东莞东等车站集中售取票点、代售点(含临时代售窗口)预售期为8天。12月28日起,武广高铁、广珠城际铁路、海南东环高铁、广深线动车组车票的窗口预售期调整为8天(含当天)。

准备工作

搜一下自己附近有哪些代售点,安排足够的时间去排队购票,这个没什么技术性。携带足够的现金,拿身份证或身份证复印件;如要通宵排队,可随身携带一小板凳。

注意事项

节前,广东省的广州、广州东、广州北、佛山、深圳、深圳西、东莞东、惠州、汕头车站(9个)实行区域联网售票,各站售票窗口和代售点均可相互预售车票。

春运期间,火车站售票窗口及代售点窗口预售期比电话订票、网络订票短。28日起,窗口只售8天内车票。而互联网售票、电话订票的预售期则为12天,也就是说,网上、电话订票比窗口售票提前4天,这样一来,窗口的车票留下来的就较少了。

第二篇:火车票订票系统

#include//预处理函数 #include//标准库函数 #include//字符串函数

#include//通过键盘来控制程序调试 int o=0; typedefstructzuowei { int a;//车座 int b;//车厢 }seat;

typedefstructTmess{//定义一个结构体存储火车订票的信息 chartnum[8];//火车车次

char time1[8];//发车时间

char station1[8];//出发站

char station2[8];//终点站

chartujingstation[8];//途经站

char time2[8];//到站时间

char money[5];//票价

}tmess; typedefstruct in{//定义一个结构体存储火车座位信息

tmess data;//调用火车的信息 int reseat;//剩余票 seatseatnum; struct in *next;//定义next指针 }in; typedefstructpmess{//定义一个结构体存储乘客信息

char name[10];//姓名

chartel[15];//电话

char id[20];//身份证

charbooknum[3];//订票数目

charcheci[8];//车次 }pmess; typedefstruct people{//乘客信息

pmess m;//调用pmess结构体

struct people *next;//定义next指针 }people; structdingdan{ intdanhao; chartnum[8];//火车车次

char time1[8];//发车时间

char station1[8];//出发站

char station2[8];//终点站

chartujingstation[8];//途经站

char time2[8];//到站时间

char money[5]; char name[10];//姓名

chartel[15];//电话

char id[20];//身份证

charbooknum[3];//订票数目

char seat[10]; charseatnum[10]; }dingdan[100];

void end(); void admin(); void book(in *h,people *k); void cancel(); voidchaxuntrain(in *h); in *fangshi(in *h,charfindmess[],charnumorcity[]); void print(); void passenger(); voidputoutticket(in *p); voidputticket(in *h); void widows();

int main() { for(inti=0;i<100;i++) {dingdan[i].danhao=i+1000; } in *h,*p; people *k,*v; intwp; h=(in*)malloc(sizeof(in)); h->next=NULL; k=(people*)malloc(sizeof(people)); k->next=NULL; p=h; v=k; while(1) {

system("cls");

widows();

scanf("%d",&wp);

fflush(stdin);

system("cls");

switch(wp)

{

case 1:

putticket(h);break;

case 2:

chaxuntrain(p);break;

case 3:

book(p,v);break;

case 4: print();break;

case 5:

cancel();break;

default:break;

}

printf(" 请按任何键结束 "); getch(); } return 0; }

void end() {//结束页面函数

puts("********************************************"); printf(" 谢谢使用 "); }

void widows() {//初始页面函数;

printf("***************************************************************************** "); printf(" *

# * "); printf(" * @@

# * "); printf(" * @@@@

# * "); printf(" * @@@@@@

# * "); printf(" *

* "); printf(" *

### * "); printf(" *

###### * "); printf(" *

#### * "); printf(" *

* "); printf(" *

### * "); printf(" *

# ☆1,输入车次信息 * "); printf(" *

# ☆2,查询车次 * "); printf(" *

# ☆3,订票 * "); printf(" *

# ☆4,订单查询 * "); printf(" *

# ☆5,退票 * "); printf(" *

# ☆6,退出系统 * "); printf(" *

##### * "); printf("***************************************************************************** "); printf(" 请输入选择:");

}

voidputticket(in *h) {//输入车次信息

in *p,*l,*s;//定义了三个指针变量

charnum[8];//定义了数组

p=h;//p指向尾节点

l=h->next;//l指针遍历火车信息

while(p->next) {

p=p->next; } while(1) {

printf("请输入要添加的火车车次(按0退出) ");

scanf("%s",&num); fflush(stdin);

if(strcmp(num,"0")==0)

break;

while(l)

{

if(strcmp(l->data.tnum,num)==0)

{//比较的输入车次与之前存在车次

printf("该车次已经存在 ");

return ;

}

l=l->next;//l++

}

s=(in *)malloc(sizeof(in));

strcpy(s->data.tnum,num);//复制函数,加入新的车次

printf("请输入出发时间: ");

scanf("%s",&s->data.time1); fflush(stdin);

printf("请输入出发城市: ");

scanf("%s",&s->data.station1); fflush(stdin);

printf("请输入到达时间: ");

scanf("%s",&s->data.time2); fflush(stdin);

printf("请输入到达城市: ");

scanf("%s",&s->data.station2); fflush(stdin);

printf("请输入途径大站: "); scanf("%s",&s->data.tujingstation); fflush(stdin);

printf("请输入票价: ");

scanf("%s",&s->data.money); fflush(stdin); s->seatnum.a=1; s->seatnum.b=1;

s->reseat=-1;

s->next=NULL;

p->next=s;

p=s; } }

voidputoutticket(in *p) {//打印火车信息

printf(" 下面是火车信息 "); printf("@车次:%s ",p->data.tnum); printf("@出发时间:%s ",p->data.time1); printf("@始发站:%s ",p->data.station1); printf("@到达时间:%s ",p->data.time2); printf("@终点站:%s ",p->data.station2); printf("@途经站:%s ",p->data.tujingstation); printf("@票价:%s ",p->data.money); printf("@剩余票数:%d",1000-p->reseat); }

in *fangshi(in *h,charfindmess[],charnumorcity[]) {//查询方式

in *p; if(strcmp(numorcity,"num")==0) {//按车次查询

p=h->next;

while(p)

{

if(strcmp(p->data.tnum,findmess)==0){//查到与车次信息相符的

return p;//返回所查到的信息

}

p=p->next;

} }

if(strcmp(numorcity ,"city")==0){//按城市查询

p=h->next;

while(p){

if(strcmp(p->data.station2,findmess)==0){//查到与城市信息相符的

return p;//返回所查到的信息

}

p=p->next;

}

}

return 0; }

voidchaxuntrain(in *h){//信息查询

in *p; char str1[10]; intsel; if(h->next==NULL){

printf("没有任何火车信息 ");

return ; } printf(" 请选择查询方式 1.车次查询 2.城市查询 "); scanf("%d",&sel); fflush(stdin); if(sel==1){

printf("请输入车次 ");

scanf("%s",str1);

fflush(stdin);

p=fangshi(h,str1,"num");

if(p){

putoutticket(p);

}

else {

printf(" 没有找到 ");

} } elseif(sel==2){

printf("请输入到达城市 ");

scanf("%s",str1);

fflush(stdin);

p=fangshi(h,str1,"city");

if(p){

putoutticket(p);

}

else {

printf(" 没有找到 ");

} } }

void book(in *h,people *k){//订票输入乘客信息,订票数

in *p,*l;//定义两个in结构体下的指针变量

people *v,*s;//定义两个people结构体下的指针变量

inti=0,t=0,wp,i2=1; char str1[10],str2[10];//定义两个数组分别用来存储到达城市和车次信息

l=h; v=k; externint o; while(v->next) v=v->next;//v指针遍历火车信息

printf("请输入想要达到的城市 "); scanf("%s",&str1); fflush(stdin); p=fangshi(l,str1,"city");//按城市搜索的查询方式

printf("请输入想要的车次 "); scanf("%s",&str2); fflush(stdin); p=fangshi(l,str2,"num");//按车次搜索的查询方式

if(!p){

printf(" 没有找到到达该城市的车次 ");

return ; }

else {

putoutticket(p);//调用outoutticket函数

printf("是否要订这个车次?<0/1> ");

scanf("%d",&wp); fflush(stdin); if(wp){

s=(people*)malloc(sizeof(people));

printf("请输入姓名:"); scanf("%s",&s->m.name); fflush(stdin); printf("请输入电话:"); scanf("%s",&s->m.tel); fflush(stdin); printf("请输入身份证号:"); scanf("%s",&s->m.id); fflush(stdin); printf("请输入要订的票数:"); scanf("%s",&s->m.booknum);

fflush(stdin);

s->next=NULL; v->next=s; v=s; strcpy(s->m.checi,p->data.tnum); p->reseat=p->reseat+(int)(atof(s->m.booknum));

if(p->seatnum.a<8)

{

sprintf(dingdan[o].seatnum,"%d/%d",p->seatnum.a,p->seatnum.b);

p->seatnum.a=p->seatnum.a+1;

}

else

if(p->seatnum.b<8)

{

sprintf(dingdan[o].seatnum,"%d/%d",p->seatnum.a,p->seatnum.b);

p->seatnum.b=p->seatnum.b+1;

p->seatnum.a=1;

} printf(" OK!订票成功 "); strcpy(dingdan[o].tnum,p->data.tnum); strcpy(dingdan[o].time1,p->data.time1); strcpy(dingdan[o].station1,p->data.station1);

strcpy(dingdan[o].station2,p->data.station2); strcpy(dingdan[o].tujingstation,p->data.tujingstation);

strcpy(dingdan[o].time2,p->data.time2);

strcpy(dingdan[o].money,p->data.money); strcpy(dingdan[o].name,s->m.name); strcpy(dingdan[o].tel,s->m.tel); strcpy(dingdan[o].id,s->m.id); strcpy(dingdan[o].booknum,s->m.booknum);

printf("订单号为:%d ",dingdan[o].danhao);

printf("座位号为:%s(座位号/车厢号) ",dingdan[o].seatnum); o++; getch(); } } }

void cancel() { int count=0; externint o; char q[5]="失效"; int p; int s=0; charpassname[20]; printf("请输入乘客姓名:"); scanf("%s/n",passname); for(inti=0;i

{

printf("********************************************************* ");

printf("***** 这是订单号为%d的订单信息 ***** ",dingdan[i].danhao); printf("********************************************************* ");

printf("***** 火车车次:%s ***** ",dingdan[i].tnum);

printf("**** 发车时间:%s **** ",dingdan[i].time1); printf("*** 出发站:%s *** ",dingdan[i].station1); printf("** 终点站:%s ** ",dingdan[i].station2); printf("* 途径站:%s * ",dingdan[i].tujingstation);

printf("* 到站时间:%s * ",dingdan[i].time2); printf("* 票价:%s * ",dingdan[i].money);

printf("** 姓名:%s ** ",dingdan[i].name);

printf("*** 电话:%s *** ",dingdan[i].tel);

printf("**** 身份证:%s **** ",dingdan[i].id);

printf("***** 订票数目:%s ***** ",dingdan[i].booknum);

printf("****** 座位号:%s<座位号/车厢号> ****** ",dingdan[i].seatnum); printf("********************************************************* ");

printf("-------------- "); count++; } } if(count==0) { printf("未找到该乘客的订票信息 "); goto low; } printf("请输入要删除的订单编号:"); scanf("%d ",&p); for(s=0;s

strcpy(dingdan[s].time1,q);

strcpy(dingdan[s].station1,q);

strcpy(dingdan[s].station2,q);

strcpy(dingdan[s].tujingstation,q);

strcpy(dingdan[s].time2,q);

strcpy(dingdan[s].money,q);

strcpy(dingdan[s].name,q);

strcpy(dingdan[s].tel,q);

strcpy(dingdan[s].id,q);

strcpy(dingdan[s].booknum,q); printf("********************************************************* ");

printf("***** 这是订单号为%d的订单信息 ***** ",dingdan[s].danhao); printf("********************************************************* ");

printf("***** 火车车次:%s ***** ",dingdan[s].tnum);

printf("**** 发车时间:%s **** ",dingdan[s].time1); printf("*** 出发站:%s *** ",dingdan[s].station1); printf("** 终点站:%s ** ",dingdan[s].station2); printf("* 途径站:%s * ",dingdan[s].tujingstation);

printf("* 到站时间:%s * ",dingdan[s].time2); printf("* 票价:%s * ",dingdan[s].money);

printf("** 姓名:%s ** ",dingdan[s].name);

printf("*** 电话:%s *** ",dingdan[s].tel);

printf("**** 身份证:%s **** ",dingdan[s].id);

printf("***** 订票数目:%s ***** ",dingdan[s].booknum);

printf("****** 座位号:%s<座位号/车厢号> ****** ",dingdan[i].seatnum); printf("********************************************************* ");

printf("-------------- "); } } low:; } void admin() { int password=1; externint o; int n; printf("请输入管理员密码:"); scanf("%d ",&n); fflush(stdin); if(password==n) { for(inti=0;i

{

printf("********************************************************* ");

printf("***** 这是订单号为%d的订单信息 ***** ",dingdan[i].danhao); printf("********************************************************* ");

printf("***** 火车车次:%s ***** ",dingdan[i].tnum);

printf("**** 发车时间:%s **** ",dingdan[i].time1); printf("*** 出发站:%s *** ",dingdan[i].station1); printf("** 终点站:%s ** ",dingdan[i].station2); printf("* 途径站:%s * ",dingdan[i].tujingstation);

printf("* 到站时间:%s * ",dingdan[i].time2); printf("* 票价:%s * ",dingdan[i].money);

printf("** 姓名:%s ** ",dingdan[i].name);

printf("*** 电话:%s *** ",dingdan[i].tel);

printf("**** 身份证:%s **** ",dingdan[i].id);

printf("***** 订票数目:%s ***** ",dingdan[i].booknum);

printf("****** 座位号:%s<座位号/车厢号> ****** ",dingdan[i].seatnum); printf("********************************************************* ");

printf("-------------- ");

} } }

void passenger() { charpassname[20]; printf("请输入乘客姓名:"); scanf("%s/n",passname); fflush(stdin); for(inti=0;i

{

printf("********************************************************* ");

printf("***** 这是订单号为%d的订单信息 ***** ",dingdan[i].danhao); printf("********************************************************* ");

printf("***** 火车车次:%s ***** ",dingdan[i].tnum);

printf("**** 发车时间:%s **** ",dingdan[i].time1); printf("*** 出发站:%s *** ",dingdan[i].station1); printf("** 终点站:%s ** ",dingdan[i].station2); printf("* 途径站:%s * ",dingdan[i].tujingstation);

printf("* 到站时间:%s * ",dingdan[i].time2); printf("* 票价:%s * ",dingdan[i].money);

printf("** 姓名:%s ** ",dingdan[i].name);

printf("*** 电话:%s *** ",dingdan[i].tel);

printf("**** 身份证:%s **** ",dingdan[i].id);

printf("***** 订票数目:%s ***** ",dingdan[i].booknum);

printf("****** 座位号:%s<座位号/车厢号> ****** ",dingdan[i].seatnum); printf("********************************************************* ");

printf("-------------- ");

} } }

void print() { printf("************************************************* "); printf("*** 1:管理员登陆(需管理员密码) *** "); printf("*** 2:乘客登陆 *** "); printf("************************************************* "); printf("请选择登录方式:"); int m; scanf("%d ",&m); fflush(stdin); switch(m) {case 1:admin();break; case 2:passenger();break; default:break; } }

第三篇:12306火车票网上订票须知

1. 用户注册

1.1 中国铁路客户服务中心12306.cn网站(,以下简称“12306.cn网站”)只对注册用户提供网上购买火车票服务(以下简称“购票”)。互联网用户在12306.cn网站购票前,须先注册为12306.cn网站用户(以下简称“用户”)。

1.2 用户注册时,须准确提供真实信息,以保证顺利购票乘车及享受12306.cn网站提供的各项服务。

1.3 一张有效身份证件只能注册一个用户。

1.4 购票时,凭用户自行设定的用户名和密码登录。

2. 有效身份证件

2.1 在12306.cn网站,用户可以为自己购票,也可以为他人购票,但均须准确填写乘车人的真实有效身份证件信息。

2.2 12306.cn网站接受的有效身份证件是指:

2.2.1 中华人民共和国居民身份证。

2.2.2 中华人民共和国港澳居民来往内地通行证。

2.2.3 台湾居民来往大陆通行证。

2.2.4 护照。

2.3 购买儿童票的乘车儿童没有办理有效身份证件的,须使用同行成年人的有效身份证件信息,并于开车前换取纸质车票后乘车。

2.4 用户使用虚假身份证件购买车票或进站乘车的,后果自负。因此造成铁路运输企业或第三方损失的,将追究其法律责任。

3. 网站服务时间

3.1 12306.cn网站每日早上6:00~次日1:00提供服务。

3.2 在12306.cn网站购票、改签和退票须不晚于开车前2小时。

3.3 12306.cn网站车票预售期与车站公告一致。

4. 购票范围

已开通“C”、“D”、“G”、“Z”、“T”、“K”、“L”、“A”、“Y”开头的以及1000至7598次 列车订票。

5. 购票数量

5.1 一张有效身份证件同一乘车日期同一车次限购一张车票,但2.3除外。

5.2 同一笔订单可购买的车票数量不超过5张。

6. 网站购票及支付

6.1 12306.cn网站可以购买全价票、儿童票、学生票、伤残军人(警察)优待票。

6.1.1 儿童票:按照《铁路旅客运输规程》规定,随同成人旅行身高1.2~1.5米的儿童,享受半价客票、加快票和空调票(以下简称儿童票)。超过1.5米时应买全价票。每一成人旅客可免费携带一名身高不足1.2米的儿童,超过一名时,超过的人数应买儿童票。儿童票的座别应与成人车票相同,其到站不得远于成人车票的到站。免费乘车的儿童单独使用卧铺时,应购买全价卧铺票,有空调时还应购买半价空调票。

6.1.2 学生票:按照《铁路旅客运输规程》等有关规定,在普通大专院校(含国家教育主管部门批准有学历教育资格的民办大学)或军事院校、中等专业学校、技工学校就读,没有工资收入的学生、研究生,家庭居住地和学校不在同一城市时,凭附有加盖院校公章的减价优待证的学生证,每年可享受家庭至院校(实习地点)之间四次单程优惠价格票(以下简称学生票)。学生票乘车时间限定为每年的暑假6月1日至9月30日、寒假12月1日至3月31日。如果学校所在地有学生父或母其中一方时,学生因休学、复学、转学、退学时,学生往返于学校与实习地点时,学生证未按时办理学校注册的,学生证优惠乘车区间更改但未加盖学校公章的,或者没有“学生火车票优惠卡”、“学生火车票优惠卡”不能识别或者与学生证记载不一致的,不能发售学生票。目前12306.cn网站只受理持有“学生火车票优惠卡”的学生票。如果在12306.cn网站购买学生票,但不符合规定减价优惠(待)条件或没有“学生火车票优惠卡”的,不予换票,所购车票可按规定办理退票手续。

6.1.3 伤残军人(警察)优待票:按照《铁路旅客运输规程》规定,中国人民解放军和中国人民武装警察部队因伤致残的军人(以下简称伤残军人)凭“中华人民共和国残疾军人证”、因公致残的人民警察凭“中华人民共和国伤残人民警察证”享受半价的软座、硬座客票和附加票。“中华人民共和国残疾军人证”和“中华人民共和国伤残人民警察证”由国家有关部门颁发,铁路运输企业有权进行核对。

6.2 购票时,须在申请车票成功后45分钟内完成网上票款支付。

6.2.1 网上支付时,须使用具备网上银行功能的银行卡,并由12306.cn网站跳转(链接)至购票人选择的银行网站进行。目前只受理:使用中国工商银行、中国农业银行、中国银行、招商银行和带有银联标志的银行卡,并开通了网上银行的用户。

6.2.2 同一笔订单只能使用一张银行卡一次性支付票款。

6.2.3 开始网上支付后、未完成支付前,不能再次购买车票。

6.2.4 12306.cn网站收到银行网站支付成功的信息后,方确认购票交易;收到银行网站支付失败的信息或超过45分钟未收到银行网站支付成功信息的,取消购票交易,车票席位不予保留;继续购票时,须重新申请车票。

6.3 12306.cn网站确认购票交易成功后,根据购票人提供的手机、电子邮箱将所购车票信息以短信、电子邮件的方式通知购票人。购票人应及时通知乘车人,并妥善保管有关信息。

7. 换票

7.1在12306.cn网站购票后,遇以下情形,应当在购票后、开车前换取纸质车票后进站乘车:

7.1.1 使用二代居民身份证以外的其他有效身份证件购票的。

7.1.2 使用同行成年人有效身份证件信息购买儿童票的。

7.1.3 购买学生票、伤残军人(警察)优待票的。

7.1.4 乘车站或下车站不具备二代居民身份证检票条件的(目前,仅京津城际、京沪高铁、沪宁高铁、沪杭高铁本线车站具备二代居民身份证检票条件,其他各线均须提前换票)。

7.1.5 二代居民身份证无法在自动检票机上识读的。

7.1.6 需车票报销凭证的。

7.1.7 乘车人按所购车票的乘车日期、车次在中途站进站乘车的。

7.2 换取纸质车票时,按如下规定办理:

7.2.1 使用二代居民身份证购买的铁路电子客票,可凭购票时所使用的乘车人有效二代居民身份证原件到办理互联网售票业务的车站售票窗口、铁路客票代售点或车站自动售票机上办理换票手续。

7.2.2 学生票凭购票时所使用的有效身份证件和附有学生火车票优惠卡的学生证(均为原件)到办理互联网售票业务、安装有学生火车票优惠卡识别器的车站售票窗口或铁路客票代售点办理。换票时同时核对减价优惠凭证,并核减优惠乘车次数;不符合减价优惠条件的,不予换票,所购车票可按规定办理退票手续。

7.2.3 伤残军人(警察)优待票凭购票时所使用的有效身份证件和“中华人民共和国残疾军人证”、“中华人民共和国伤残人民警察证”(均为原件)到办理互联网售票业务的车站售票窗口办理。换票时同时核对减价优待凭证,不符合减价优待条件的,不予换票,所购车票可按规定办理退票手续。

7.2.4 二代居民身份证无法自动识读或者使用二代居民身份证以外的其他有效身份证件购买的铁路电子客票,需出示购票时所使用的乘车人有效身份证件原件和订单号码,到办理互联网售票业务的车站售票窗口或铁路运输企业授权的铁路客票代售点,由售票员录入证件号码和订单号码并核实后办理换票手续。有效身份证件信息、订单号码等经核实一致的,予以换票;不一致的,不予换票。学生票、伤残军人(警察)优待票同时核对减价优惠(待)凭证,不符合减价优惠(待)条件的,不予换票,所购车票可按规定办理退票手续。换学生票时,将核减优惠乘车次数。

7.2.5 购票后、换票前,有效身份证件丢失的,需到乘车站铁路公安制证口,凭载明原购票时使用的乘车人有效身份证件信息的其他有效身份证件或原发证机关出具的证明信办理临时身份证明,并按7.2.2办理。为他人代购车票并代为换票的,需提供本人居民身份证原件和乘车人有效身份证件信息,方可办理临时身份证明。

7.3 纸质车票票面载明旅客姓名和购票时所使用的乘车人有效身份证件号码,并标记“网”字。旅客应当妥善保管车票,保持票面信息清晰、可识读,并妥善保护票面身份信息。

7.4 换取纸质车票后,铁路电子客票失效,凭纸质车票按现行规定办理检验票、改签、退票等手续,不能再在12306.cn网站办理改签、退票手续。

注:

(1)办理互联网售票业务的车站和铁路客票代售点是指动车组列车的始发站、经停站、终到站(含同城车站)及所在地的铁路客票代售点,铁路运输企业另有规定的除外。

(2)换票窗口可能排队人数较多,请出门前做好出行计划,预留足够的换票时间。

8. 改签、退票

8.1 用户在12306.cn网站购票后,尚未换取纸质车票的,可以在12306.cn网站办理改签、退票手续:

8.1.1 不晚于开车前2小时。

8.1.2 同一订单中相同日期、车次、发站、到站、席别的车票方可批量改签。

8.1.3 在12306.cn网站退票后,需退票费报销凭证的,凭在12306.cn网站购票所使用的乘车人有效身份证件原件在办理退票之日起10日内到车站售票窗口索取。

8.2 用户在12306.cn网站购票后,无论是否换取纸质车票,均可在车站售票窗口办理改签、退票手续:

8.2.1 在开车前到车站安装有银行POS机的售票窗口办理。

8.2.2 以下情形如下办理:

8.2.2.1 已经换取纸质车票的,只能在换票地车站或票面发站办理。

8.2.2.2 在具备二代居民身份证检票条件的车站,已经使用二代居民身份证原件办理进站检票手续但未乘车的,在乘车站经车站确认后办理。

8.2.2.3 在具备二代居民身份证检票条件的车站,已经使用二代居民身份证原件办理进站检票手续,但在乘车途中因伤、病或者承运人责任中途下车的,凭列车长出具的客运记录在下车站办理未乘区间退票手续。

8.2.3 改签后,出具纸质车票。

8.3 改签后新票票价高于原票、需补收票价差额时,应当使用购票时所使用的银行卡或具备网上银行功能的其他银行卡支付新票全额票款,原票款按发卡银行规定退回原银行卡。退票或改签后新票票价低于原票的,应退票款按发卡银行规定退回购票时所使用的银行卡。改签后的新票票价等于原票的,无需办理支付手续。

8.4 无论在12306.cn网站还是车站售票窗口,只能办理一次改签手续。

9. 进出站检票和列车验票

9.1 用户按本须知规定的任一方式取得纸质车票后,铁路电子客票失效,凭纸质车票办理进出站检票和列车验票手续。

9.2 在12306.cn网站使用二代居民身份证购票的乘车人,其乘车站和下车站均具备二代居民身份证检票条件的,可以将二代居民身份证作为乘车凭证,直接通过车站自动检票机(闸机)办理进出站检票手续;在列车上由工作人员通过核对二代居民身份证、铁路电子客票信息和乘车人办理验票手续。

9.2.1 进站检票时,发现乘车人二代居民身份证不能识读,自动检票机(闸机)不予通过,旅客须到车站窗口换取纸质车票。

9.2.2 列车验票时,确认乘车人没有铁路电子客票信息的,须按规定补票。

9.2.3 出站检票时,自动检票机(闸机)不予通过的,旅客须至到站补票处确认铁路电子客票信息。经确认没有旅客铁路电子客票信息的,须按规定补票。

9.2.4 乘车途中,旅客二代居民身份证原件丢失的,须按规定先行补票。补票后、到站前又找到其二代居民身份证的,列车长确认后开具客运记录交旅客,旅客持客运记录和二代居民身份证到车站退票窗口,车站通过售票系统核实旅客电子客票信息后,退还后补车票,不收退票费。客运记录要填写旅客二代居民身份证号码、旅客姓名、席位信息等有关内容。

10. 合同事项

10.1 在12306.cn网站购买的铁路电子客票,是以电子数据形式体现的铁路旅客运输合同,与纸质车票具有同等法律效力。购票时以12306.cn网站确认交易成功的时间作为铁路旅客运输合同生效的时间,退票时以12306.cn网站确认交易成功的时间作为铁路旅客运输合同终止的时间,改签所涉及的原车票退票、换(购)新票分别按照退票、购票处理。

10.2 铁路电子客票不办理挂失,不允许转让。

10.3 用户在12306.cn网站注册时自行设定的用户名、密码是在12306.cn网站办理车票购买、改签、退票以及查询订单、取消订单等业务的初步凭证。

10.4 用户在12306.cn网站购买车票时所使用的乘车人有效身份证件以及12306.cn网站确认用户购票成功后给予的订单号码,是用户凭以在铁路售票窗口办理换票、改签、退票或者检验票等相关手续的有效凭证。请牢记并妥善保管,否则后果自负。

10.5 12306.cn网站确认用户在12306.cn网站购票交易成功后,根据购票人提供的手机、电子邮箱将所购车票信息以短信、电子邮件的方式通知购票人。购票人应及时通知乘车人,并妥善保管有关信息。请用户妥善保管有关信息及所使用的有效身份证件,因保管不当致铁路电子客票信息被盗用的,责任自负。

10.6 使用网上、银行卡支付有关收、退款等事项按照付款人与银行之间签订的合同处理。

10.7 对以下行为,12306.cn网站将对用户进行诚信评价,并视情况单方面拒绝为用户提供12306.cn网站购票服务:

10.7.1 一天内3次申请车票成功后但未完成网上支付的。

10.7.2 其他损害铁路运输企业合法权益的行为。

11. 提示

11.1 本须知中的部分条款,可能因具体情况调整,请关注12306.cn网站及车站公告。

11.2 本须知“车站”和“铁路客票代售点”指哈尔滨、沈阳、北京、太原、郑州、武汉、西安、济南、上海、南昌、成都铁路局和广州铁路集团公司管内开通铁路互联网售票业务的铁路客运营业办理站(含同城车站)和铁路客票代售点(铁路运输企业另有规定的除外);“开车前”为车票载明的发站开车时间前。

11.3 本须知中的未尽事宜,按《铁路旅客运输规程》办理,请参阅有关规定。

一、呼和浩特铁路局管辖铁路及主要车站

主要管辖内蒙古中西部地区铁路。

主要车站:呼和浩特站、包头站、锡林浩特站、二连站、集宁南站、乌海站等。

二、呼和浩特铁路局火车票预售期

电话订票/网上订票预售期:

电话订票预售期4-12天(含当天,下同),网上订票自2011年12月28日起预售期1-12天。

最新日期车票起订时间:15:00 (非常重要)

窗口售票预售期:

预售期为1-10天,最新日期车票起订时间:9:00

三、呼和浩特铁路局电话订票使用说明

1)订票电话:95105105

2)电话订票系统开放时间: 6:00-23:00 (其它时间可以进行信息查询,不提供订票)

3)订票电话拨打方法:局管内省市可以直接拨打95105105,局管外省市拨打0471-95105105

4)订票电话通话费:按普通市话收费,无其它任何增值费用。

5)电话订票可订票种:可以预订呼和浩特铁路局属下车站发往全国各地车站的全价票、儿童票、学生票、伤残军人(**)票。(仅直达车票,不办理通票。)

6)订票有效证件:居民身份证(推荐使用二代身份证)、港澳居民来往内地通行证、台湾居民来往大陆通行证、护照。(证件号码遇字母时,请按“*”键代替)

7)订票张数限制:每次电话可预订同日期同车次同席别同一发站和到站座位票5张或卧铺票2张,实名制车票一证一票。

8)取票期限:订票成功后,系统自动生成订票单。当日12:00前预订的车票必须在当日24:00前取票;当日12:00后预订的车票必须在次日12:00前取票。否则系统自动取消订单。(具体以订票成功时系统播报的语音提示为准)

9)取票点:实行通订通取,呼和浩特铁路局属下火车站或代售点均可取票,但不可以跨铁路局取票。(伤残军人/**车票仅限在车站办理;办理学生票的代售点需要有学生票优惠卡读卡器。)

10)取票流程:凭订单号及订票时所使用的证件原件取票。(学生票需另外出示学生证和电子优惠卡、伤残军人/**票需另外出示伤残军人/**证)

11)取票费:火车站取本地车票不收手续费,火车站取异地车票收取每张票5元异地取票费。火车票代售点取票收取每张票5元服务费。没有其它任何附加费用。

温馨提示:订票前请准备好纸笔,查询好到站的电话区号,准备好身份证号码,以便顺利订票和记录订单号码。以上信息仅供参考,可能系统流程发生细微变化,请根据语音提示操作。

第四篇:火车票订票管理系统++设计报告

摘要

随着时代的发展,计算系软件和系统的成熟,火车票的正当管理成为一个影响铁路部门正常运营的因素之一,而建立火车票订票管理系统是一个很好的解决办法。 作为计算机应用的一部分,使用计算机对火车票信息进行管理,具有手工管理所无法比拟的优点,例如检索迅速、查找方便、可靠性高、存储量大、保密性好等,这些优点能够极大的提高火车票信息管理的效率,也正体现了火车票的科学化正规化管理 现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。本论文就是通过MFC的整体设计把数据库与应用程序相连接,做成一个火车票的订票管理系统,使得火车票管理员能够有效的管理车次信息、旅客信息、退票信息等。同时用户可以通过查询到相关的火车票信息,选择是否适合自己,也可以在网上直接订票、退票,省时省力。

关键字: SQL2000,MFC,数据库设计,火车票订票系统 目录

第一章概述

1.1项目开发背景 1.2系统开发目的 1.3技术可行性研究 第二章开发平台介绍 2.1 系统的架构

2.2系统运行环境操作系统 2.3系统开发环境 2.4开发工具

第三章数据库设计 3.1系统详细调查 3.2数据流图 3.3数据库设计

第四章系统的界面设计

4.1主窗口界面

4.2旅客信息窗口

4.3车次信息窗口

4.4取票及退票窗口 第五章系统的实现

总结与展望 致谢 参考文献 需求分析

需求分析的任务

调查机票预定系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析,形成需求分析说明书。最重要的是调查、收集信息、分析购票人信息和火车预定流程。处理要求、数据的安全性与完整性要求。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。 需求分析的过程

火车站为方便旅客,需开发一个火车票预定系统。为便于旅客由网上定票,把预定火车票的旅客信息,包括姓名、性别、工作单位、身份证号码、出发时间、目的地,输入火车票订票系统的客户端程序,系统经过查询火车站内的列车车次数据服务器后,为旅客安排列车,印出取票通知。旅客在火车出发前一天凭取票通知和帐单交款后取票,系统校对无误后即印出火车票给旅客。如果某方面出现问题,旅客可以持有效证件去火车站退票。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序便于维护。 数据字典与流程图

经过可行性分析和初步需求调查,抽象出该系统业务流程图,结合该实例具体情况,给出旅客信息、订票信息和取票通知的具体需求。

图2.1 旅客购票流程图 ⑴调查用户需求 ①售票处需求 功能:旅客持个人证件去火车站购买火车票。希望能通过旅客姓名查到该旅客的列车车次并记录旅客基本信息。 统计功能:

按火车票统计买票人数 按姓名统计火车票数 ②旅客购票需求 交费功能: 交费 退费

③取票需求 通知功能: 通知旅客取票 统计功能:

统计通过验证的人数 统计可以取票的人 统计未通过验证的人数 查询功能: 购票旅客查询 购票旅客姓名 购票旅客身份证号 购票旅客订单号 ④列车车次信息需求 查询功能: 车次 始发站 终点站 始发时间 系统框架 在调查完了用户需求之后,就要开始分析用户需求。在此,我们们采用自顶向下的结构化分析方法(SA方法)。首先,定义全局概念结构的框架,如图2.2所示。

图2.2火车票预定系统总框架图

各子系统需要进一步细化。旅客信息系统为例进一步细化,如图2.3所示。

图2.3旅客信息系统细化

以其中的查询旅客信息功能为例进一步细化,如图2.4所示。

图2.4查询旅客信息功能

图2.5列车车次信息系统细化

图2.6取票通知系统细化

图2.7旅客信息系统能查询到的内容

图2.8火车票信息系统能查询到的内容

图2.9退票信息系统细化

将所有子系统全部细化。将所有用户需求分析完毕之后,就要开始构造数据字典了。经分析之后,本系统要用到五个基本表:退票信息表,旅客信息表,列车车次信息表,取票通知信息系统,列车座位信息表。数据结构定义如表2.1所示。 表2.1 数据结构定义 数据结构名

含义说明

组成

退票信息

定义了退票旅客的有关信息

旅客姓名,身份证号,订单号,电话号

旅客

定义了旅客有关信息

旅客姓名,身份证号,性别, 工作单位,电话号

列车车次信息表

定义了车次 的有关信息

车次号,始发地,目的地,始发时间

取票通知单

定义了取票通知相关有关信息

旅客姓名,取票时间,列车车次,座位号,火车票类型

列车座位信息表

定义了列车座位有关信息

列车号,座位号,座位信息,火车票类型

概念结构设计

概念结构设计的方法与步骤 概念结构设计的方法

概念设计阶段我们采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。

概念结构设计的步骤

第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。因此我们们先逐一的设计分E-R图。

第二步是进行视图的集成:各子系统的E-R图设计好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。我们想采用一次集成两个分E-R图的方式。 数据抽象与局部视图设计

按照图2.2机票预定系统总框架图,设计实体属性图以及局部E-R图。

图3.1退票信息系统

图3.2旅客信息系统 ……图3.3列车车次信息

图3.4取票通知信息

图3.5列车座位信息表

图3.6旅客购票局部E-R 视图的集成

经过逐步细化再进行每两个一集成初步形成一个E-R图,最后得到图3.4总体概念结构E-R图

图3.4系统总体结构E-R图

逻辑结构设计

E-R图向关系模型的转换

将图3.4总体概念结构E-R图转化成关系模型。 退票信息(订单号,旅客姓名,电话号,身份证号)

旅客(旅客姓名,身份证号,电话号,性别,工作单位) 车次信息表(车次号,始发站,终点站,始发时间)

取票通知单(旅客姓名,取票时间,车次号,座位号,车票类型) 列车座位信息表(座位号,车次号,座位信息,车票类型) 数据模型的优化

将转化的关系模式进行优化,最终达到第三范式。

1、确定数据依赖

退票信息(订单号,旅客姓名,电话号,身份证号)根据这个关系写出数据依赖 订单号→旅客姓名,订单号→电话号,订单号→身份证号 旅客(旅客姓名,身份证号,电话号,性别,工作单位) 旅客姓名→身份证号,旅客姓名→电话号,旅客姓名→性别,旅客姓名→工作单位 车次信息表(车次号,始发地,目的地,始发时间) 列车车次→始发站,列车车次→终点站,车次→始发时间

取票通知单(旅客姓名,取票时间,车次号,座位号,机票类型) 旅客姓名→取票时间,旅客姓名→车次号,旅客姓名→座位号, 旅客姓名→车票类型

火车座位信息表(座位号,车次号,座位信息,车票类型) (座位号,车次号)→座位信息,(座位号,车次号,座位信息)→车票类型 对各关系模式间数据依赖进行极小化处理,消除冗余

订单号→旅客姓名,订单号→电话号,订单号→身份证号,旅客姓名→性别 旅客姓名→工作单位,旅客姓名→取票时间,旅客姓名→车次号

旅客姓名→座位号,旅客姓名→车票类型,车次号→始发站,列车号→终点站 车次号→始发时间,(座位号,车次号)→座位信息

看这些模式是否符合要求,确定是否要对某些模式进行合并或者分解 最终分解成第三范式:

(订单号,电话号,身份证号)(订单号,旅客姓名)(旅客姓名,取票时间,性别,工作单位,车票类型)(旅客姓名,车次号)(旅客姓名,座位号)(车次号,座位号,车票类型)(车次号,始发站,终点站,始发时间)

第五篇:网站架构设计技术方案(火车票订票系统)

xxx市xxxxx网管理中心

火 车 票 网 络 订 票 系 统 方 案

二零一二年二月

1 总体设计说明 ............................................................................................................................... 2

1.1 项目概述 ........................................................................................................................... 2 1.2 建设目标 ........................................................................................................................... 2 1.3 建设原则 ........................................................................................................................... 2 2 系统需求分析 ............................................................................................................................... 3

2.1 服务器集群 ....................................................................................................................... 3 2.2 负载均衡 ........................................................................................................................... 3 2.3 数据库集群与库表散列 ................................................................................................... 3 2.4 划分服务器 .................................................................................................................... 4 2.5 不同网络用户的访问问题 ........................................................................................... 4 3 系统架构设计 ............................................................................................................................... 4

3.1 网站物理架构 ................................................................................................................ 4 3.2 Web应用开发架构 ......................................................................................................... 5 3.3 网络拓扑结构 ................................................................................................................ 6 4 架构方案所涉及的技术 ............................................................................................................... 7

4.1 负载均衡 ......................................................................................................................... 7 4.2 页面静态化 ....................................................................................................................... 8 4.3 MVC架构 .......................................................................................................................... 9 4.4 CDN和镜像网站技术 .................................................................................................. 10 5 网站的硬件扩容和升级 ............................................................................................................. 11 5.1 增加服务器 ..................................................................................................................... 11 5.2 升级服务器 .................................................................................................................. 11 5.3 增加存储 ....................................................................................................................... 11 5.4 网络扩容 ....................................................................................................................... 12

实习生:杨茂饶

火车票网络订票系统设计方案

1 总体设计说明

1.1 项目概述

本次火车票网络订票系统项目是因为当前铁路局网上订票系统设计不合理造成用户订票难等原因而要求重新设计的。我们先前的火车票网络订票系统最主要的问题是在遭受高负载的情况下系统不能正常的运行,所以此问题也是该方案所要重点解决的。当此项目建成后,我们的火车票网络订票系统将大大减轻实地售票系统、电话订票系统的压力,使用户足不出户就能享受快速、高效的订票服务。

1.2 建设目标

该订票系统的设计要能解决当前网络订票系统订票难的问题,在高负载情况下要保证系统的正常工作。系统的建设要符合国家标准,必须要能满足当前大量用户的订票需求,能承受或杜绝同一个用户频繁对页面的点击所产生的流量。充分发挥订票系统的作用和效益。该系统采用先进成熟的技术进行建设并能根据需要为以后系统的升级做好准备。

1.3 建设原则

1.3.1 实用性

本次火车票订票系统要根据当前用户订票需求情况和系统未来的规划进行设计。结合实际使系统的性价比达到最高。 1.3.2 可靠性

系统的设计要使之能长期稳定的运行,当遇到问题的时候还要能够快速有效的恢复。 1.3.3 安全性

确保系统的线路设计和设备是否能安全正常工作,保证用户信息不向外泄漏。

1.3.4 兼容性与扩展性

本次网络订票系统的设计上采用先进成熟的技术设备,以保障系统的高效运行,也是为系统的扩充和升级做好准备。 1.3.5 专业性

系统的设计遵照国家标准,符合国家要求。 1.3.6 易管理性

系统的设计要便于管理,方便日常维护中的操作。

2 系统需求分析

由于火车票网络订票系统建成后是为我们中国13亿人提供订票服务的,将不可避免的遭受由大量网页点击造成的网络高流量、高负载的情况。所以要求此系统要能克服这种严重的状况,保证整个系统正常、安全、可靠的运行。最终方便用户订票。

为了满足以上要求,该方案需要采取服务器集群、负载均衡、数据库划分、图片服务器分离等,不仅如此,还要考虑不同网络用户的访问问题。

2.1 服务器集群

服务器集群就是指把很多的服务器统一集中起来进行同一种服务,在客户端看起来就像是只有一个服务器在提供服务。集群可以利用多个计算机进行并行计算从而获得更高的计算速度,也可以使用多个计算机做备份,并且能使其中一台计算机坏了后整个系统依然能正常运行。此系统采用服务器集群技术,集群内的服务器能并发的处理来自网络的访问请求,当访问量过大时,各服务器共同承担访问处理的任务,这将大幅的提高系统的工作效率。除此之外,还可以根据需求添加集群中服务器的数量以增大集群的处理能力。

2.2 负载均衡

负载均衡就是把从网络中传输进系统的流量根据系统的实际工作情况进行分流和划分,然后再传输到各服务器进行处理。在此方案中将采用负载均衡器和Squid/Nginx反向代理服务器实现此功能,负载均衡器需要被放置在临近服务器集群的位置。由于采用的是服务器集群技术,但当网站系统访问量很大时,Web服务器集群里的各个服务器压力都会很大,所以我们使用负载均衡器来管理这些访问请求,把这些访问请求传输给集群中有空闲资源的服务器进行处理。这样就能充分的利用服务器集群的优势,不至于因为集群内一台服务器资源耗尽或出现故障而中断服务。

2.3 数据库集群与库表散列

数据库服务器在整个系统的地位非常的重要,因为网站的瓶颈问题大都出现在数据库身上。大型网站都有复杂的应用,这些应用必须使用数据库,在面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列。

1. 数据库集群

在数据库集群方面,不同类型的数据库都有自己不同的解决方案,使用了什么样的数据库,就参考相应的解决方案。

2. 库表散列

在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的 3

模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。

2.4 划分服务器

按服务器种类来划分,我们一般把服务器划分为:图片服务器、页面服务器、数据库服务器、应用服务器、日志服务器等。对于访问量大的网站而言,分离单独的服务器是非常必要的。分离服务器后各个服务器只需要完成各自的功能和处理任务,这样把工作细化后系统的整体运行效率也会提升很多。

2.5 不同网络用户的访问问题

由于处于不同网络服务商的计算机想要相互通讯会比在同一网络服务商的计算机慢。为了解决此问题,本系统将通过引入CDN和镜像网站技术来解决不同网络服务商的接入速度问题。

3 系统架构设计

3.1 网站物理架构

用户浏览页面负载均衡器1...服务器1服务器2服务器3服务器2代理服务器集群(Nginx)服务器n服务器2...服务器1服务器2服务器1服务器2服务器1服务器2服务器1服务器n图片服务器集群Web服务器集群AWeb服务器集群BSquid服务器集群

整个系统架构组成如图所示,该架构有负载均衡器、Nginx代理服务器集群

或Squid代理服务器集群以及其他种类的服务器集群。这样的架构设计能够使该系统在高负载的情况下依然能正常工作,同时系统的安全性因为有代理服务器集群的存在也会得到相当大的提高。 3.1.1架构中的代理服务器

代理服务器是介于客户端和Web服务器之间的另一种服务器的存在,有了它之后,浏览器不能直接到Web服务器去取回网页,而是向代理服务器发出请求,信号会先传送到代理服务器,由代理服务器来取回浏览器所需要的信息并传回浏览器。

很多代理服务器都有很大的存储空间,它能不断的将新取得的数据存储到它本机的存储器上,如果浏览器所请求的数据在它本机存储器上有而且是最新的,那么它就不再从Web服务器上读取数据,而是直接将存储器上的数据直接传送给用户的浏览器,起到系统缓存的作用。这样就能显著的提高浏览器的速度和效率。

除了缓存功能之外,代理服务器还能连接内网与Internet充当防火墙。这是因为所有内部的主机通过代理服务器访问外界时,只映射为一个IP地址,所以外界不能直接访问到内部网络;同时还可以设置IP地址过滤,限制内外网络之间的相互访问。所以本系统中采用代理服务器集群技术是对整个系统的安全是大有裨益的。

3.1.2 架构中的Web服务器

Web服务器是指驻留于因特网上某类计算机的的程序。当客户端的Web浏览器连接到服务器上并请求文件时,服务器将处理该请求并将文件发送到浏览器上,文件附带的信息(文件类型)会告诉浏览器如何查看该文件。服务器使用Http超文本传输协议进行信息交流。Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息基础上运行程序。 3.1.3 图片服务器分离

对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃。

3.2 Web应用开发架构

Web应用开发采用MVC架构。把各种应用程序划分为视图、模型和控制三部分。大部分Web应用程序都是用像ASP,PHP,或者CFML这样的语言来创建的。它们将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。要想使用多种方式来访问我们的应用程序,就必须要把数据从表示层中分离开来,如此就要运用到MVC架构。

如图:

现在科技的发展和用户需求不断的提升要求我们提供越来越多的方式来访问应用程序。MVC模式允许用户使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。

3.3 网络拓扑结构

主防火墙备防火墙主交换机VRRP备交换机负载均衡器1负载均衡器2...服务器2服务器1服务器n服务器1服务器n服务器2服务器2服务器2...服务器2服务器1服务器n服务器1服务器n服务器1服务器n服务器1服务器2代理服务器集群(Nginx)网站服务器集群图片服务器集群应用服务器集群光纤交换机生产DB服务器集群查询DB服务器组管理终端光纤交换机磁盘阵列柜磁盘阵列柜

3.3.1 采用双防火墙双交换机,保障平台服务

本系统采用双防火墙接通互联网,在任何一个防火墙或者互联网发生故障后都可以自动的将流量切换到另一端,保证网站的正运行,设备或网络的故障恢复后,自动恢复先前的运行状况。不但如此,系统所采用的双千兆交换机分别接在2台防火墙上,当其中某台设备或者网络链路发生故障后,好的设备自动接管已坏设备的工作,不影响网站的整体运行,根据真实服务器的数量,交换机还可以随时增加。

3.3.2 采用硬件设备负载均衡器,实现网络流量的负载均衡

使用硬件设备负载均衡器,将网络流量均衡的分担到WEB服务器集群的各节点服务器,保障平台服务器资源均衡的使用。 3.3.3 采用数据库集群和库表散列

本系统采用了数据库集群和库表散列技术,将大幅提高数据库的存取和查询的处理能力,不仅如此,在本方案中还为集群配置了磁盘阵列,可以在极大程度上增加数据库的存储空间。

4 架构方案所涉及的技术

4.1 负载均衡

4.1.1 基于DNS的负载均衡

DNS负载均衡技术是最早的解决负载均衡的技术。主要是这样实现的,由于在DNS服务器中可以为不同的网络地址配置同一个域名,在DNS服务器进行解析时,它随即的得到其中一个地址。所以对于同一个域名它所解析出的地址是会不同的,用户也就访问不了同地址的Web服务器,从而在一定程度上能起到均衡负载的作用。但基于DNS的负载均衡不是真正意义上的负载均衡,由于DNS服务器在进行地址解析时不会考虑到当前Web服务器的负载情况,如果其中一台Web服务器出现了故障,DNS服务器仍然回把地址解析到此台出现故障的服务器上,导致不能响应客户端。所以在这种情况下必然会导致很大一部分用户不能享受服务器所提供的服务。

4.1.2 基于硬件四层交换的负载均衡

本网站架构就使用了基于硬件四层交换的硬件设备,在硬件四层交换产品中有很多的产品可以选择,大多数的这些产品都是比较昂贵的,但都能提供与之相符合的功能,都是物有所值的。 4.1.3 基于软件四层交换的负载均衡

软件四层交换的均衡负载可以使用Linux操作系统中的LVS来解决。 4.1.4 通过反向代理服务器来实现负载均衡

反向代理服务器又称为Web加速服务器,它位于Web服务器的前端,充当WEB 7

服务器的内容缓存器,反向代理服务器是专门针对Web服务器设置的,在后台运行的Web服务器对互联网用户是透明的、不可见的,用户只能看到反向代理服务器的网络地址,但却不清楚后台的Web服务器是如何组织架构的。当互联网用户请求Web服务时,DNS服务器将所请求的域名解析为反向代理服务器的IP地址,这样 URL请求将会被发送到反向代理服务器,由反向代理服务器负责处理用户的请求与应答并与后台Web服务器进行交互。如此就利用反向代理服务器减轻了后台Web服务器的负载,提高了访问速度,同时也避免了因用户直接与Web服务器通信带来的安全隐患。 如图所示:

目前有许多反向代理软件,比较有名的有Nginx和 Squid。

4.2 页面静态化

4.2.1 什么是静态页面

静态页面是网页的代码都在页面中,不需要执行asp,php,jsp,.net等程序生成客户端网页代码的网页。静态页面不能自主管理发布更新页面。常见的静态页面有以.html扩展名结尾的、.htm扩展名结尾的页面。还有一点是必须注意的,静态页面并非是网页上没有动画就是静态页面。 4.2.2 什么是动态页面

动态页面是通过执行asp,php,jsp,.net等程序生成客户端网页代码的网页。动态页面通常可以通过网站后台管理系统对网站内容进行更新管理。发布新闻,发布公司产品,交流互动,博客,网上调查等,这都是动态网站的一些功能,

也是我们经常使用的。动态页面常见的扩展命有asp,php,jsp,cgi,.aspx等。当中需要我们注意的是动态页面的动态是指网站与客户端用户互动的意思,而并非网页上有动画就是动态页面。 4.2.3 页面静态化

静态的HTML页面严格地由标准的HTML标示语言构成,并不需要服务器端即时运算生成。这意味着对一个静态HTML文档发出访问请求后,服务器端只是简单地将该文档传输到客户端。从服务器运行的那个时间片来看,这个传输过程仅仅占用了很小的CPU资源。

页面静态化就是采用效率最高、消耗最小的纯静态化的html页面来替换动态页面。我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。

4.3 MVC架构

MVC是一个设计模式,它强制性的把应用程序的输入、处理和输出分开。使用MVC将应用程序分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。 4.3.1 视图

视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,要求要以不同的界面呈现。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。 4.3.2 模型

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如对数据库的处理。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 4.3.3 控制器

控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。 4.3.4 MVC应用优势

1.适用性

MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码。满足了用户不同方式的访问需求。

2. 快速部署

使用MVC模式使开发时间得到相当大的缩减,它使程序员集中精力于业务逻辑,界面程序员集中精力于表现形式上。

3.可维护性

分离视图和业务逻辑也使得WEB应用更易于维护和修改。在维护过程中可以细化和减少工作量。

4.4 CDN和镜像网站技术

由于网站的用户可能在不同的网络运营商的网络中,不同网络中信息的交互会比在同一网络中慢。为了解决这个问题,本方案就采用了CDN技术和镜像网站技术。

用户动态内容(社区、投票、调查、搜索、点评、视频)静态内容(静态网页、图片)DNS解析电信用户网通用户CDN其他用户服务器1服务器n服务器1服务器n服务器1服务器n电信机房多线机房网通机房

4.4.1 镜像网站

镜像网站是指将一个完全相同的站点放到几个服务器上,分别都可以有自己的网址,这些服务器上的网站就称为镜像网站。镜像网站和主站并没有什么太大的差别,或者可以说是主站的拷贝。镜像网站的主要优点是,用户如果不能对主站进行正常的访问(如服务器故障,网络故障或者是网速太慢),仍然能通过访

问镜像服务器获得服务。

所以在本次方案中,我们可以在不同的网络运营商部署web服务器,通过软件工具自动同步到不同网络接入商的web服务器上,以作为主站的镜像。然后通过配置智能DNS解析来引导不同网络的访问用户到对应的网络运营商的web服务器。

4.4.2 CDN技术

CDN的全称是Content Delivery Network,即内容分发网络。其基本思想是尽可能的避开互联网上有可能影响数据传输速度和稳定性的环节,使内容的传输速度更快、更稳定。通过在网络各处放置节点服务器所构成的在现有互联网基础之上的一层智能虚拟网络,CDN系统能够实时的根据网络流量和各节点的连接、负载状况以及到各用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务器节点上。其根本目的是使用户可以就近的获取所需内容,避开Internet网络拥挤的状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。

5 网站的硬件扩容和升级

根据当今时代的发展,中国将会有越来越多的人群加入网民的行列,当然也就会有更多的人愿意通过互联网来购票。所以随着用户的不断增多,为了满足用户的需求,网站对今后的发展和升级也是要必须考虑的。

5.1 增加服务器

当集群不能满足用户的访问要求时,可以考虑在集群中增加服务器,增大整个集群的访问处理能力。

当Web对的并发处理有瓶颈时,增加新的web服务器,把新增的web服务器填加到Web服务器集群中,以增加Web的并发处理能力。

当数据库有处理压力时,可以增加数据库服务器,增加数据库服务器加入数据库的集群中。

5.2 升级服务器

当集群中服务器的各项处理能力不能达到要求时,这时就可以考虑对服务器进行升级。对服务器的升级其实和增加服务器的作用相差无几。但是升级服务器会比增加服务器更加繁琐而且更加昂贵。所以我们一般都采用增加服务器的方法来解决问题。

5.3 增加存储

随着网站的用户访问量的扩大和网站的升级,当然所要存储的信息和数据也就会越来越多,以前的服务器磁盘不再能满足要求。所以此时应当考虑增加磁盘 11

容器或者设立一个新的存储服务器。

5.4 网络扩容

由不断增多的大量的用户访问造成了巨大的网络流量,很可能造成网络的阻塞。原来的网络带宽设计就会无法承受。所以在系统扩容中还要考虑重新申请更大的网络带宽。不仅如此,当带宽增大后,为了适应更大的网络流量,内网交换机的升级也是必须的。

上一篇:化工安全管理制度下一篇:活动安保服务方案

本站热搜