Python编写车票订购系统 Python实现快递收费系统


Posted in Python onAugust 14, 2022

本文实例为大家分享了Python编写车票订购系统,Python实现快递收费系统的具体代码,供大家参考,具体内容如下

要求:

1.上网查询郑州到北京,西安,石家庄,济南,太原,武汉的距离及票价,用数据库保存车次信息
2.要求输入目的地,能够查询到里程和票价
3.用数据库存储每一次售票记录,包括售票流水号,起点站,终点站,里程,金额等数据,并统计所有存储记录的总售票金额及各站的旅客流量(进站流量+出站流量)
4.能够打印票据信息,包括订票人信息,票价,票据号,车次等信息

import sqlite3
import os
import time
def createDB():
   """
      创建并初始化数据库
   """
   # 原始数据
   info = [("G1564", "郑州", "北京", "309", "693"), ("G802", "郑州", "北京", "315", "693"), ("G564", "郑州", "北京", "326.5", "693"),
         ("G2025", "郑州", "西安", "239", "479.3"), ("D311", "郑州", "西安", "159", "479.3"), ("G857", "郑州", "西安", "229", "479.3"),
         ("G1286", "郑州", "石家庄", "189.5", "417.9"), ("G2070", "郑州", "石家庄", "196", "417.9"), ("G430", "郑州", "石家庄", "208", "417.9"),
         ("G2074", "郑州", "济南", "303", "446"), ("G258", "郑州", "济南", "312.5", "446"), ("G1844", "郑州", "济南", "298.5", "446"),
         ("D290", "郑州", "太原", "189", "432.7"), ("D3348", "郑州", "太原", "153", "432.7"), ("D2782", "郑州", "太原", "171", "432.7"),
         ("G1991", "郑州", "武汉", "244", "509.8"), ("G3203", "郑州", "武汉", "314", "509.8"), ("G8171", "郑州", "武汉", "248", "509.8")]
   con = sqlite3.connect("DB.db")#连接到数据库
   cur = con.cursor()     # 创建游标对象
   # 创建字段,num是车次,station是始发站,destination是目的地,price票价,distance是距离
   cur.execute("create table test(num primary key, station, destination, price, distance)")
   for i in info:
      cur.execute("insert into test values(?,?,?,?,?)", i)
   con.commit()
   cur.close()
   con.close()
def CreateSaleDB():
   """
   创建销售数据库
   """
   con = sqlite3.connect("sale.db")
   cur = con.cursor()
   # 字段依次为流水号,起点站,终点站,金额,里程
   cur.execute("create table sheet(num,station,destination,price,distance)")
   con.commit()
   cur.close()
   con.close()

# 根据目的地查询车票信息
def Query(dest):
   con = sqlite3.connect("DB.db")
   cur = con.cursor()
   item = cur.execute("select * from test where destination=?", (dest,))
   print("--------------------------查询到的信息--------------------------")
   for i in item.fetchall():
      print("车次:%s      %s==>%s       票价:%s元    距离:%skm" % (i[0], i[1], i[2], i[3], i[4]))
   print("--------------------------------------------------------------")
   cur.close()
   con.close()
def SaveSaleRecord(num, SerialNumber):
   con = sqlite3.connect("DB.db")
   cur = con.cursor()
   item = cur.execute("select * from test where num=?", (num,))
   data = []
   data.append(SerialNumber)
   for i in item.fetchall():
      data.append(i[1])
      data.append(i[2])
      data.append(i[3])
      data.append(i[4])
   cur.close()
   con.close()

   data = tuple(data)
   con = sqlite3.connect("sale.db")
   cur = con.cursor()
   cur.execute("insert into sheet values(?,?,?,?,?)", data)
   con.commit()
   cur.close()
   con.close()
   return data

def Statistics():
   con = sqlite3.connect("sale.db")
   cur = con.cursor()
   item = cur.execute("select * from sheet")

   total_sale = 0
   # 进出站客流量统计列表,进站/出站
   zhengzhou = [0, 0]
   beijing = [0, 0]
   xian = [0, 0]
   shijiazhuang = [0, 0]
   jinan = [0, 0]
   taiyuan = [0, 0]
   wuhan = [0, 0]
   for i in item.fetchall():
      temp = float(i[3])
      total_sale = temp + total_sale
      # 流水号,起点站,终点站,金额,里程

      # 进站统计
      if i[1] == '郑州':
         zhengzhou[0] += 1
      elif i[1] == '北京':
         beijing[0] += 1
      elif i[1] == '西安':
         xian[0] += 1
      elif i[1] == '济南':
         jinan[0] += 1
      elif i[1] == '石家庄':
         shijiazhuang[0] += 1
      elif i[1] == '武汉':
         wuhan[0] += 1
      elif i[1] == '太原':
         taiyuan[0] += 1

      # 出站统计
      if i[2] == '郑州':
         zhengzhou[1] += 1
      elif i[2] == '北京':
         beijing[1] += 1
      elif i[2] == '西安':
         xian[1] += 1
      elif i[2] == '济南':
         jinan[1] += 1
      elif i[2] == '石家庄':
         shijiazhuang[1] += 1
      elif i[2] == '武汉':
         wuhan[1] += 1
      elif i[2] == '太原':
         taiyuan[1] += 1

   print("--------进出站统计--------")
   print("       进站       出站")
   print("郑州      %d           %d" % (zhengzhou[0], zhengzhou[1]))
   print("北京      %d           %d" % (beijing[0], beijing[1]))
   print("石家庄  %d           %d" % (shijiazhuang[0], shijiazhuang[1]))
   print("西安      %d           %d" % (xian[0], xian[1]))
   print("太原      %d           %d" % (taiyuan[0], taiyuan[1]))
   print("济南      %d           %d" % (jinan[0], jinan[1]))
   print("武汉      %d           %d" % (wuhan[0], wuhan[1]))
   print("------------------------")
   print("总销售额:%.2f元" % total_sale)
   cur.close()
   con.close()

def PrintData(data, num):
   """
   打印票据信息
   """
   print("--------票据信息--------")
   print("车次:%s" %num)
   print("票据号:%s" %data[0])
   print("票价:%s元" %data[3])
   print("----------------------")

if __name__ == '__main__':
   # 创建数据库DB.db
   if os.path.exists("DB.db"):
      pass
   else:
      # 创建数据库并初始化
      createDB()

   # 创建销售数据库,存储销售记录
   if os.path.exists("sale.db"):
      pass
   else:
      CreateSaleDB()
   flag = 1
   while(flag):
      print("********欢迎使用车票订购系统*******")
      print('请选择您的进一步操作')
      print('1.查询车次信息')
      print('2.售票记录和票据信息')
      print('3.各站旅客流量统计')
      print('4.退出系统')
      a = int(input("请输入选项:"))
      if a == 1:
         dest = input("请输入目的地:")
         Query(dest)
         # num, SerialNumber = Query(dest)  # num是购买的车次,SerialNumber是流水号
      elif a == 2:
         num = input("请输入要购买的车次:")
         SerialNumber = time.strftime("%Y%m%d%H%M%S", time.localtime())  # 作为流水号
         data = SaveSaleRecord(num, SerialNumber)  # 保存售票记录,返回购票信息以供打印票据用
         PrintData(data, num)  # 打印票据信息
      elif a == 3:
         Statistics()  # 统计
      elif a == 4:
         break
      else:
         print('输入错误,请重新输入!!!')

程序运行结果如图所示:

Python编写车票订购系统 Python实现快递收费系统

Python编写车票订购系统 Python实现快递收费系统

Python编写车票订购系统 Python实现快递收费系统

还有一个是快递收费系统,要求啥的找不到了,只剩代码

import sqlite3
#定义区域快递费
q=[10,10,15,15,15]
x=[3,4,5,6.5,10]
#打开数据库
def opendb():
    #创建全局变量方便其他函数调用
    global conn
    global cur
    conn=sqlite3.connect('customer.db')
    cur=conn.cursor()
    cur.execute('''create table if not exists customers(num,name,distance)''')
    #添加数据
    p0 = [('0', "上海", "同城"), ('1', "江苏", "临近两省"), ('1', "浙江", "临近两省"), ('2', "北京", "1500公里(含)以内"), ('2', "天津", "1500公里(含)以内"), ('2', "河北", "1500公里(含)以内")]
    p1 = [('2', "河南", "1500公里(含)以内"), ('2', "安徽", "1500公里(含)以内"), ('2', "陕西", "1500公里(含)以内"), ('2', "湖北", "1500公里(含)以内"), ('2', "江西", "1500公里(含)以内"), ('2', "湖南", "1500公里(含)以内")]
    p2 = [('2', "福建", "1500公里(含)以内"), ('2', "广东", "1500公里(含)以内"), ('2', "山西", "1500公里(含)以内"), ('3', "吉林", "1500-2500公里"), ('3', "甘肃", "1500-2500公里"), ('3', "四川", "1500-2500公里")]
    p3 = [('3', "重庆", "1500-2500公里"), ('3', "青海", "1500-2500公里"), ('3', "广西", "1500-2500公里"), ('3', "云南", "1500-2500公里"), ('3', "海南", "1500-2500公里"), ('3', "内蒙古", "1500-2500公里")]
    p4 = [('3', "黑龙江", "1500-2500公里"), ('3', "贵州", "1500-2500公里"), ('3', "辽宁", "1500-2500公里"), ('4', "新疆", "2500公里以上"), ('4', "西藏", "2500公里以上")]
    cur.executemany('''insert into customers values(?,?,?)''',p0)
    cur.executemany('''insert into customers values(?,?,?)''',p1)
    cur.executemany('''insert into customers values(?,?,?)''',p2)
    cur.executemany('''insert into customers values(?,?,?)''',p3)
    cur.executemany('''insert into customers values(?,?,?)''',p4)
#输出分隔线
def interval():
    print('**************************************')
#计算快递费
def Calculation():
    num=int(input('请输入区域编码(0-4):'))
    if num<=4:
        weight = float(input('请输入快递重量(公斤):'))
        #不足1公斤按1公斤计算
        if weight!=int(weight):
            weight=int(weight)+1
        s=q[num]+(weight-1)*x[num]
        print('所需快递费为:%.2f'%s)
        interval()
    else:
        print('区域编号错误!请重新输入!')
        Calculation()
#修改区域快递费
def modify():
    #输出目前区域快递费方便修改
    print("目前区域快递费为:")
    Inquire2()
    num=int(input('请输入要修改的区域编码(0-4):'))
    if num<=4:
        q[num]=float(input('请输入修改后的起重费:'))
        x[num]=float(input('请输入修改后的续重费:'))
        print('修改成功!')
        #修改完成后输出修改后的区域快递费
        print('修改后的地区快递费为:')
        Inquire2()
        interval()
    else:
        print('区域编号错误!请重新输入!')
        modify()
#查询地区编码
def Inquire1():
    global cur
    cur.execute('''select * from customers order by num asc''')
    print('地区编码\t\t地区名称\t\t地区距离')
    for i in cur:
        print('%-5s\t\t%-5s\t\t%-5s'%(i[0],i[1],i[2]))
    interval()
#查询地区快递费
def Inquire2():
    print('地区编码\t\t起重费(元)\t\t续费(元/公斤)')
    for i in range(5):
        print(i,"\t\t\t%.2f\t\t\t%.2f"%(q[i],x[i]))
#删除数据
def delete():
    a=input('请输入要删除的地区名称:')
    global cur
    cur.execute('''select * from customers where name="%s"'''%a)
    print('地区编码\t\t地区名称\t\t地区距离')
    for i in cur:
        print('%-5s\t\t%-5s\t\t%-5s'%(i[0],i[1],i[2]))
    print('1.确认删除')
    print('2.取消')
    b=int(input())
    if b==1:
        cur.execute('''delete from customers where name="%s"'''%a)
        print('删除成功!')
    else:
        print('取消删除!')
#添加数据
def add():
    global cur
    a = input('请输入要添加的地区编号:')
    b = input('请输入要添加的地区名称:')
    c = input('请输入要添加的地区距离:')
    s=[(a,b,c)]
    cur.executemany('''insert into customers values(?,?,?)''',s)
    print('添加成功!')
opendb()
print('**********欢迎使用快递费计算系统**********')
while 1>0:
    print('请选择您的进一步操作')
    print('1:添加数据')
    print('2:计算快递费')
    print('3:查询地区编码')
    print('4:查询区域快递费')
    print('5:修改区域快递费')
    print('6:删除数据')
    print('7:退出系统')
    a=int(input())
    if a==1:
        add()
    elif a==2:
        Calculation()
    elif a==3:
        Inquire1()
    elif a==4:
        Inquire2()
        interval()
    elif a==5:
        modify()
    elif a==6:
        delete()
    elif a==7:
        break
    else:
        print('输入错误!请重新输入!')
        interval()
conn.commit()
cur.close()
conn.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之永远强大的函数
Sep 14 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
Jul 27 Python
pandas的object对象转时间对象的方法
Apr 11 Python
浅谈pandas用groupby后对层级索引levels的处理方法
Nov 06 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
Golang Web 框架Iris安装部署
Aug 14 #Python
python manim实现排序算法动画示例
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 #Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 #Python
基于Python实现nc批量转tif格式
Aug 14 #Python
LyScript实现绕过反调试保护的示例详解
Aug 14 #Python
LeetCode189轮转数组python示例
Aug 05 #Python
You might like
php mysql数据库操作分页类
2008/06/04 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
详解前端路由实现与react-router使用姿势
2017/08/07 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
python对html过滤处理的方法
2018/10/21 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
python 动态绘制爱心的示例
2020/09/27 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
车队司机自我鉴定
2014/03/02 职场文书
客户答谢会活动方案
2014/08/31 职场文书
护士实习自荐信
2015/03/06 职场文书
检讨书格式
2015/05/07 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书