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中使用Inotify监控文件实例
Feb 14 Python
python监控文件或目录变化
Jun 07 Python
用Python设计一个经典小游戏
May 15 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
TensorFlow实现Softmax回归模型
Mar 09 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
Jun 27 Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
python cv2图像质量压缩的算法示例
Jun 04 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
基于mysql的bbs设计(四)
2006/10/09 PHP
深入解析php模板技术原理【一】
2008/01/10 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
jQuery利用sort对DOM元素进行排序操作
2016/11/07 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
Python 如何测试文件是否存在
2020/07/31 Python
计算s=f(f(-1.4))的值
2014/05/06 面试题
Python中如何定义一个函数
2016/09/06 面试题
骨干教师考核方案
2014/05/09 职场文书
材料化学专业求职信
2014/07/15 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
教师党员个人总结
2015/02/10 职场文书
预备党员考察意见范文
2015/06/01 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js