简易火车票订购系统(入门)Python


import random
import datetime
print("----------------------------欢迎来到火车票订购系统------------------------------------")
nt=datetime.datetime.now()
print('\t\t\t\t\t\t\t\t\t\t\t\t\t\t'+str(nt))
allinfo={'西安-北京':{'G658':['西安北','北京西','08:11','13:27','5时16分',{'商务':['12张',1627.5],'一等':['有',824.5],'二等':['无(可候补)',515.5]}],
                  'D432':['西安北','北京西','12:53','18:46','5时53分',{'商务':['10张',1627.5],'一等':['有',824.5],'二等':['无(可候补)',515.5]}],
                  'G2690':['西安北','北京西','14:55','20:38','5时43分',{'商务':['5张',1627.5],'一等':['无',824.5],'二等':['有',515.5]}],
                  'Z400':['西安站','北京西','20:22','08:22','12时整',{'硬座':['有',156.5],'硬卧':['无(可候补)',268.5],'软卧':['有',422.5]}],
                  'T350':['西安站','北京西','01:47','14:32','12时45分',{'硬座':['有',156.5],'硬卧':['无(可候补)',268.5],'软卧':['无(可候补)',422.5]}],
                  'K1345':['西安站','北京西','4:35','16:47','12时12分',{'硬座':['无(可候补)',156.5],'硬卧':['有',268.5],'软卧':['有',422.5]}]},
       '保定-天津':{'D590':['保定东','天津西','10:41','11:51','1时10分',{'商务':['9张',105],'一等':['有',92],'二等':['无',57.5]}],
                'G3748':['保定东','天津西','10:41','11:51','1时10分',{'商务':['3张',105],'一等':['有',92],'二等':['有',57.5]}],
                'G510':['保定东','滨海北','13:29','14:36','1时7分',{'商务':['15张',269],'一等':['有',142.5],'二等':['无(可候补)',87.5]}],
                'T203':['保定站','天津站','13:21','16:27','3时6分',{'硬座':['无(可候补)',28.5],'硬卧':['有',74.5],'软卧':['有',113.5]}]},
       '成都-长沙':{'D268':['成都东','长沙南','07:33','14:54','7时21分',{'商务':['12张',1831.5],'一等':['有',977],'二等':['无',594.5]}],
                'Z341':['成都东','长沙站','12:17','05:28','17时11分',{'硬座':['有',163.5],'硬卧':['无',280.5],'软卧':['无(可侯补)',438.5]}],
                'G2190':['成都东','长沙南','16:02','23:29','7时27分',{'商务':['17张',1831.5],'一等':['无(可侯补)',977],'二等':['有',594.5]}],
                'T1478':['成都站','长沙站','16:12','10:54','18时42分',{'硬座':['有',163.5],'硬卧':['无(可候补)',280.5],'软卧':['有',438.5]}],
                'G630':['成都东','长沙南','07:49','15:25','7时36分',{'商务':['20张',1831.5],'一等':['无',977],'二等':['无',594.5]}]}
}
allad=[k for k,v in allinfo.items()]
print('全部车站:'+str(allad))
while True:
 chu=input("请输入你的所在地:")
 mu=input("请输入你的目的地:")
 tim=input("请以(4-9)形式输入你的出发日期(只能购买今日起十五日内的车票):")
 mon,day=tim.split('-')
 bt=input("请输入查询or重置信息:")
 cm = chu + '-' + mu
 if bt=='查询':
     if (cm in allad)==True and (int(mon)>=nt.month and int(day)>=nt.day and int(day)<=nt.day+15):
      break;
     else:
         print("查不到列车信息,请重新输入")
 elif bt=='重置信息':print("请重新输入你的购票信息")
 else:
     print("输入有误,请重置信息")

info=allinfo[cm]
print("------------------------全部车次信息-------------------------")
print("车次\t\t出发站-------到达站\t出发时间\t到达时间\t历时")
for k,v in info.items():
    print(k +"\t"+ v[0] +'\t\t' + v[1] + '\t' + v[2] + '\t' + v[3] + '\t' + v[4])
while True:
 checi=input("请输入购买的车次:")
 print("-------------------------------------------------------------------该车次信息------------------------------------------------------------")
 print("车次\t\t出发站-------到达站\t出发时间\t到达时间\t历时\t\t--------------------------------------票的信息(余票,价格)---------------------------------")
 print(checi+'\t'+info[checi][0]+'\t\t'+info[checi][1]+'\t'+info[checi][2]+'\t'+\
      info[checi][3]+'\t'+info[checi][4]+'\t'+str([{k:v} for k,v in info[checi][5].items()]))
 type=input("输入您要买的车票类型(如一等、硬座等):")
 if info[checi][5][type][0]=='无':
    print('已无票!请选择其它车票。')
 elif info[checi][5][type][0]=='无(可候补)':
    k=input("请输入'确定'确认候补,选择其它车票请输入取消:")
    if k=='确定':
      print('[铁路客服温馨提示您]已为您进行候补,候补成功后将以短信的方式提醒您');break;
    elif k=='取消':
        print("请重新选择车票座位类型")
    else:
        print('输入有误请重新输入')

 else:
  print("请录入您的身份信息:")
  name=input("姓名:")
  input("身份号:")
  a=random.randint(1,19)
  b=random.randint(1,25)
  c=random.choice("ABCD")
  print('该票的票价为:'+str(info[checi][5][type][1])+'元,请输入’确认‘确认支付:')
  zhifu=input()
  if zhifu=='确认':
   print('[铁路客服温馨提示您]'+'您已购'+checi+'次列车\t'+str(a)+'车|'+str(b)+str(c)+'\t'+\
                            cm+'\t'+str(nt.year)+'-'+tim+'-'+info[checi][2]+'开,请凭借身份证核验提前进站,祝您旅途愉快!')
   break;
  else:
    print('支付失败,请重新选择购买')
print('\t\t\t\t\t\t\t\t\t\t\t\t\t\t'+str(nt))
print("-------------------------------------------------------------------------[铁路客服]")

 

 以上为情况尽可能全面的结果展示。

  • 6
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
#这只是一个半成品,只是实现了,一个完整的订票过程,对于,如果刷票,自己研究 #简单过程 # 第一、getRandAndCookie() 获得cook 和一个随机数用于登录 # 第二、getEnterRandCode() 得到登录时的识别码 # 第三、setuseandpassword(randcode,use,password) 发送随机数、识别码和用户及密码。由于随机数只在内部使用,所以定义成了全局变量, # 第四、GetTrainList() 得到所有车站列表,'@bjb|北京北|VAP|beijingbei|bjb|0' 其中有中文、拼音、拼音缩写、所一个ID(唯一),其主要是可以,通过上面的列表,找到它的唯一ID,TranCityToId('南昌') # 第五、GetTrainNumList(date,fromstationid,tostationid,starttime) 得到哪到哪的所在车次,消息格式如下,其中所以,一下车次的的ID:"id":"650000K1060I" # {"end_station_name":"北京西","end_time":"16:18","id":"650000K1060I","start_station_name":"深圳","start_time":"10:54","value":"K106"} # 通过ChangeToTrainNumId('K106')得到车次ID # 第六、QueryTrain(fromstationid,tostationid,date,stationNum,starttime) 就是点击查询按键,得到是否有能预订,格式如下 #       南昌         20:12,    北京西        07:38,11:26,--,--,--,--,10,有,有,--,有,有,--,<a name='btn130_2' class='btn130_2' # 通过choiceSubmitNum(stationNum,trainsubmitinfo)提取出getSelected()消息 # 第七、submitRequest(choiceSubmitNum(stationNum,trainsubmitinfo),date,starttime) 就是点击预订按钮 # 第八、getrandCheckCode()得到提交订单的识别码 # 第十、CheckInMyTicket(info,randcode,peoples)点击提交,如果成功的话,就会返回{"errMsg":"Y"} # 出于,网络是UTF8格式,所以,必须# -*- coding: utf-8 -*-,(当然,自己转换也是可以的) # 出于这一个控制台信息,所以,识别码的图片在脚本同一目录 #得到头信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值