Python实现车票订购系统与数据库管理

需积分: 50 15 下载量 115 浏览量 更新于2024-07-09 8 收藏 274KB DOCX 举报
"Python编写车票订购系统,包含查询车次信息、售票记录存储、旅客流量统计和票据打印等功能,采用模块化设计,使用数据库管理数据。" 在本实验报告中,学生被要求使用Python语言设计一个车票订购系统,以巩固Python基础知识并提升程序设计能力。这个系统的主要目标是实现以下功能: 1. **查询车次信息**:系统需能查询郑州到北京、西安、石家庄、济南、太原、武汉的车次,包括距离和票价。这部分涉及网络请求和数据处理,可能需要用到如requests库获取网络数据,pandas库处理数据,并将数据存储到数据库中。 2. **售票与记录**:用户输入目的地后,系统应能显示相应里程和票价。每次售票记录需要保存在数据库中,包括售票流水号、起点站、终点站、里程和金额。为了实现这个功能,可能需要使用数据库管理系统如SQLite或MySQL,以及相应的Python库如sqlite3或pymysql来操作数据库。 3. **流量统计**:系统需统计所有售票记录的总售票金额,并计算各站点的旅客流量(进站加出站)。这需要对售票记录数据进行聚合和计算,可能需要用到SQL查询或者在Python中使用数据处理库来实现。 4. **票据打印**:系统应能打印出详细的票据信息,包括订票人信息、票价、票据号和车次等。这部分涉及到字符串格式化和输出,可能需要使用print函数和其他文本处理技巧。 在实现过程中,程序设计应遵循模块化原则,主函数作为程序入口,调用各个独立的模块功能。例如,可以有如下模块: - `menu_function`:主菜单函数,提供用户交互界面,返回用户选择的功能选项。 - `ticket_query`:查询车次信息的函数,从数据库中检索并显示相关数据。 - `booking_system`:售票功能,处理用户的购票请求并更新数据库。 - `statistics`:统计模块,计算总售票金额和各站流量。 - `ticket_print`:打印票据信息,格式化输出。 在关键功能模块中,首先需要创建数据库并初始化,例如`createDB`函数,用于创建保存车次信息和售票记录的两个数据库表,并将预设数据插入其中。这一步骤可以通过执行SQL语句完成。 此外,还需要考虑错误处理和测试,确保程序的稳定性和准确性。通过编写单元测试和集成测试,确保各个模块和整体系统的功能正常运行。 这个车票订购系统项目不仅涵盖了Python的基础语法,还涉及到了数据库操作、网络请求、数据处理、用户交互等多个方面,是一个综合性的编程实践任务。
2013-02-16 上传
#这只是一个半成品,只是实现了,一个完整的订票过程,对于,如果刷票,自己研究 #简单过程 # 第一、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 -*-,(当然,自己转换也是可以的) # 出于这一个控制台信息,所以,识别码的图片在脚本同一目录 #得到头信息