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的单元测试
Apr 28 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
Jun 26 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
Jan 05 Python
TensorFlow实现Logistic回归
Sep 07 Python
Python实现注册、登录小程序功能
Sep 21 Python
python opencv 二值化 计算白色像素点的实例
Jul 03 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
python with语句的原理与用法详解
Mar 30 Python
python脚本和网页有何区别
Jul 02 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
Jul 18 Python
Django创建一个后台的基本步骤记录
Oct 02 Python
用pip给python安装matplotlib库的详细教程
Feb 24 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
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
vue resource发送请求的几种方式
2019/09/30 Javascript
Python实例之wxpython中Frame使用方法
2014/06/09 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
Python切片操作实例分析
2018/03/16 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
python并发和异步编程实例
2018/11/15 Python
python使用zip将list转为json的方法
2018/12/31 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
深入浅析Python代码规范性检测
2020/07/31 Python
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
毕业大学生自荐信
2014/06/17 职场文书
霸气队列口号
2014/06/18 职场文书
离职信范本
2015/06/23 职场文书
篮球比赛通讯稿
2015/07/18 职场文书