本文实例为大家分享了Python编写车票订购系统,Python实现快递收费系统的具体代码,供大家参考,具体内容如下
要求:
1.上网查询郑州到北京,西安,石家庄,济南,太原,武汉的距离及票价,用数据库保存车次信息
2.要求输入目的地,能够查询到里程和票价
3.用数据库存储每一次售票记录,包括售票流水号,起点站,终点站,里程,金额等数据,并统计所有存储记录的总售票金额及各站的旅客流量(进站流量+出站流量)
4.能够打印票据信息,包括订票人信息,票价,票据号,车次等信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
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 ( '输入错误,请重新输入!!!' ) |
程序运行结果如图所示:
还有一个是快递收费系统,要求啥的找不到了,只剩代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
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() |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/m0_47531010/article/details/118583589