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

本文实例为大家分享了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()

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容