Python课设实验 之 车票订购系统.(sqlite数据库 储存.) 您所在的位置:网站首页 票价信息 Python课设实验 之 车票订购系统.(sqlite数据库 储存.)

Python课设实验 之 车票订购系统.(sqlite数据库 储存.)

2023-09-02 06:44| 来源: 网络整理| 查看: 265

要求: 

第2题 编写车票订购系统

(1)上网查询郑州到北京、西安、石家庄、济南、太原、武汉的距离以及票价,用数据库保存车次信息。

(2)要求输入目的地,能够查询到里程和票价信息。

(3)用数据库存储每一次售票记录,包括:售票流水号,起点站,终点站,里程,金额等数据,并统计所有存储记录的总售票金额及各站的旅客流量(进站流量+出站流量)。

(4)能够打印票据信息,包括订票人信息、票价、票据号、车次等信息。

程序应采用模块化设计,主函数是程序入口,各模块独立,可分块调试,各模块由主函数控制调用。编写主菜单函数,返回相应的功能选项数字,主函数根据此数字调用相应的功能函数。编写各功能模块函数。最后进行综合调试。

 代码: import random import sqlite3 import time con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 '''con.execute("create table date_piao (piao_id text primary key ,"#票据号 "name text not null,"#订票人姓名 "name_id text not null,"#订票人身份证号 "number text not null,"#订票人电话号码 "start_place text not null,"#起点 "finish_place text not null,"#终点 "che_id text not null,"#车次号 "distance real not null,"#两站之间距离 "money real not null)")#票价 con.execute("create table date_zong (place text primary key ,"#站点名称 "zhan_in integer not null,"#入站流量 "zhan_out integer not null,"#出站流量 "getmoney real not null)")#该站点收的钱 con.execute("create table piao_new(id text primary key ,"#车次号,同时也是主键 "start_place text not null,"#起始地点列表 "finish_place text not null ,"#终止地点列表 "distance real not null,"#两站点之间的距离 "num integer not null,"#剩余票数 "money real not null)")#票价''' Cur.close() con.close() def find_key(key):#查找这个站点的行是否已经插入在表中. con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 # print("select * from "+"date_zong"+ " where place = " +key ) Cur.execute("select * from "+"date_zong"+ " where place = " +key ) for row in Cur: return True #有该站点 return False #没该站点 def pay(): flag=input('您是否想要买票(是请输入1,否请输入0):') if flag == '1': piao_id=input('请输入您想要购买的序列号:') pao_id1=piao_id piao_id='\''+piao_id+'\''#sql语言里的序列号格式 con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 Cur.execute("update piao_new set num = num-1 where id = "+piao_id ) information_id=time.strftime("%d%m%y%H%M%S",time.localtime())+pao_id1#生成票据号 格式为 买票时间加火车的序列号 Cur.execute("select * from piao_new where id = "+piao_id) information=[] for row in Cur: str1 = str(row) information.append(str1[1:len(str1) - 1].split(', ')) information_money=information[0][5]#票价 information_start_place=information[0][1]#起点 information_finish_place=information[0][2]#终点 information_che=pao_id1#车次序列号 information_distance=information[0][3]#距离 Cur.execute("insert into date_piao values ('"+information_id+"',"#票据号 "'"+name+"',"#姓名 "'"+name_id+"',"#身份证号 "'"+number+"',"#电话号 +information_start_place+","#起点 +information_finish_place+","#终点 "'"+information_che+"',"#车次号 +information_distance+","#两站点之间距离 +information_money+")")#票价 if find_key(information_start_place) : #当进站点存在时修改信息. Cur.execute("update date_zong set zhan_in = zhan_in+1 ,"#加入站流量加钱 " getmoney = getmoney + "+information_money+ " where place = " + information_start_place) else: #当进站点不存在时插入该行 Cur.execute("insert into date_zong values ("+information_start_place+",1,0,"+information_money+")") if find_key(information_finish_place) :#出站点存在时修改信息 Cur.execute("update date_zong set zhan_out = zhan_out+1 ," # 加出站流量加钱 " getmoney=getmoney +" + information_money + " where place = " + information_finish_place) else:#当出站点不存在时插入该行 Cur.execute("insert into date_zong values (" + information_finish_place + ",0,1,0 )") con.commit() print('买票成功') Cur.close() con.close() else: print('谢谢您的使用.') def find_piao(start_place1,finish_place1): con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 '''Cur.execute("insert into piao_new values ('g589','郑州东','北京西',213.323,31,250.0)") con.commit() Cur.execute("select * from piao_new")#查询所有行 for row in Cur: print(row)''' # print("select * from piao_new where start_place="+start_place1+' and finish_place='+finish_place1) Cur.execute("select * from piao_new where start_place="+start_place1+' and finish_place='+finish_place1) flag=0 for row in Cur: print(row) flag=1 Cur.close() con.close() if flag : pay() else: print("想要查询的车次不存在.") def find_date_piao(): piao_id=input("请输入想要查询的票据号(如果想查询所有数据输入-1):") if piao_id == '-1': con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 Cur.execute("select * from date_piao") # 查询所有行 for row in Cur: print(row) Cur.close() con.close() else: con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 Cur.execute("select * from date_zong where piao_id = "+"'"+piao_id+"'") # 查询所有行 for row in Cur: print(row) Cur.close() con.close() def find_date_zong(): place=input("请输入想要查询的站点名(如果想查询所有站点输入-1):") if place == '-1': con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 Cur.execute("select * from date_zong") # 查询所有行 for row in Cur: print(row) Cur.close() con.close() else: con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 Cur.execute("select * from date_piao where piao_id = " + "'" + place+ "'") # 查询所有行 for row in Cur: print(row) Cur.close() con.close() def insert():#Cur.execute("insert into piao_new values ('h87563459','石家庄','北京',213.323,50,309)") start_place=input('请输入出发站:') finish_place=input("请输入终点站:") distance=input("请输入两站点之间所格距离(km):") piao_sum=input("请输入该车次有多少票:") id_che=input("请输入车次号:") money=input("请输入该车票价格:") start_place="'"+start_place+"'" finish_place="'"+finish_place+"'" id_che="'"+id_che+"'" try : con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 Cur.execute("insert into piao_new values ("+id_che+","+start_place+","+finish_place+","+distance+','+piao_sum+","+money+")") Cur.close() con.close() print("添加成功.") except : print("添加失败,可能是车次号已存在.") def delete(): id=input("请输入你想要删除车次的车次号:") id="'"+id+"'" try : con = sqlite3.connect("车票.db") # 打开/建立数据库 Cur = con.cursor() # 创建游标对象 Cur.execute("delete from piao_new where id = "+id) Cur.close() con.close() print("删除成功.") except : print("删除失败,可能是因为要删除的车次号不存在.") while True : print('1.乘客权限') print('2.管理员权限') power=int(input('请输入你权限的序列号:')) if power == 1 : name=input('请输入您的真实姓名:') name_id=input('请输入您的身份证号:') number=input('请输入您的电话号码:') if name!='' and name_id!='' and number!='': print('登录成功') start_place=input('请输入你要查询的出发地:') finish_place=input('请输入你要查询的终点站:') find_piao('\''+start_place+'\'','\''+finish_place+'\'') else : print('请输入合法字符:') elif power == 2 : print('管理员登陆成功.') print("1.查询票据购买信息.") print("2.查询站点统计信息") print("3.管理站点信息") h=input("请输入序列号:") if h == '1' : find_date_piao() elif h == '2' : find_date_zong() elif h == '3': x=input("插入(1) or 删除 (2) :") if x== "1": insert() elif x== "2": delete() else: print('请输入正确的序列号.') else: print('请输入正确的序列号.')

 重要语句后边有注释以便理解.

本实验具体内容于:Python课设实验报告.docx-讲义文档类资源-CSDN文库https://download.csdn.net/download/kilig_CSM/68857848

(本报告包含课设目的,开发环境,课设内容,需求分析,设计过程,存储方式,过程及代码,调试过程,小结,参考文献.) 

 感想: 

该题需要用到基础的sql语句,以及对sqlist 函数的基本应用.

 需要注意的是当sql语句报错时可以将该语句以字符串的形式打印出来,以方便查找具体错误.

 更多内容请关注:

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有