From e435ae4035b5e5bf381b0c8a10ee4330b25547e3 Mon Sep 17 00:00:00 2001 From: kejingfan Date: Fri, 14 Jun 2024 18:57:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=BA=A7=E4=BD=8D?= =?UTF-8?q?=E7=AD=89=E7=BA=A7=E4=B8=AD=E6=96=87=E9=97=AE=E9=A2=98=E3=80=81?= =?UTF-8?q?=E7=A9=BA=E8=AE=A2=E5=8D=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../func/__pycache__/config.cpython-311.pyc | Bin 357 -> 434 bytes .../func/__pycache__/index.cpython-311.pyc | Bin 9467 -> 9501 bytes .../func/__pycache__/login.cpython-311.pyc | Bin 2814 -> 2822 bytes Project/Manager/func/config.py | 9 +++++++- Project/Manager/func/index.py | 20 ++++++++++-------- Project/Manager/func/login.py | 4 ++-- .../func/__pycache__/book.cpython-311.pyc | Bin 5525 -> 5703 bytes .../func/__pycache__/modify.cpython-311.pyc | Bin 7224 -> 7238 bytes .../func/__pycache__/order.cpython-311.pyc | Bin 2553 -> 2809 bytes .../func/__pycache__/search.cpython-311.pyc | Bin 3023 -> 3309 bytes Project/Service/func/book.py | 6 +++++- Project/Service/func/modify.py | 2 +- Project/Service/func/order.py | 8 +++++++ Project/Service/func/search.py | 6 +++++- Project/Service/templates/index.html | 13 ++++++++++++ Project/Service/templates/search.html | 13 ++++++++++++ 16 files changed, 66 insertions(+), 15 deletions(-) diff --git a/Project/Manager/func/__pycache__/config.cpython-311.pyc b/Project/Manager/func/__pycache__/config.cpython-311.pyc index d7c779a737734d6f61064f0a24ff3777aa2516d7..f4742875a7bdc6864f31d7f139b8f8b410a1d507 100644 GIT binary patch delta 221 zcmaFLw27H-IWI340}xym%Skg}oX97kqXy(nXGmd4VN794VNPM0!x9DKv4VMwDQr

@OA?b3i&Jk2diwZ>xw<%pI6657yN0+rd-!QG-{MM1 ziZ4zrD$7hx1+#M@x+ZQf2@wL?$Oy#6PC()VGb1D818%V!+>$r=Wp3~*eBfl|WBR}V aBpSFr2r%%7W0&D$;8Sei0>L5ypfLc0fZ7>>xL5;7d|+l|WPHFa mc7t2;2EWV=euWR5tZYml7=T0r(+55VKE(zu5G>*YDh2>?QXvEY diff --git a/Project/Manager/func/__pycache__/index.cpython-311.pyc b/Project/Manager/func/__pycache__/index.cpython-311.pyc index acbb2fb690b3c4704c931f732bf7821d3b61f41c..8904051aed42a676c46bb97d4c12157bf7f40dc8 100644 GIT binary patch delta 1127 zcmaKqUrbY17{JeIdwbh*?d>h}k1g~c1=6m@HshZXH^9uMDsE91LLWwuRv^K$o!i15 zU@v>HF`Bu3`xBUCJcu(}CYl?g(LL>mj`WR$fcI5!}=!B?R8J$g1 zP=x{RHogo#eLemNzSr-8pRuTXtIuh$LwRP{joVIUYgo|@Nm)|T6%9gv(q}_3%6d0# zgtGoEJ7op4yIMDHoRMHn6V#0xHVimx`UG34s}7D;2p?3XY;RZ0bk(A4{Z^$QBJC4m zHU!2BFSc!Fw%EtTU(vK?=R`dyg(k#r#EfC%9K&PiYi$o2!#juBEAV*xe1Xm2_g>7S zPoWbi9UCS-(=08)m{dobJ+BMl{9&h_`FWjSZ1*ID`L`pSiC%XeV) z$H~WYb5H)BBFr7K!wWHCE^()a`{Y5Qr!K-n+_GlspeEa{99BA|3fvG;#mKCSf@)s3 zDA|5-|KOhPzSLW+X(>ppMX5EfFYCOJwNBPqY^wd^e;fr%qG(B|mc)|7JIi0?3%+R4 z7cDqqMMtb0goQx0rtF7f}~p8Zub;~cu|O}>-uy_be56U*t7+h2-HNvGheCJ zFx9K^g3wqL8r2>8luDVWsc=7#Z0p0w;8S_8+)A%=-_>b6ETM-&hmIce7JQUP^OEU^ zTRZP=K4RA{NF4Pn*g5K1a4XlUVp^PoDX}hkD5NRzXXrlr2GS%(OAY;x5n5mF@@P#=axj&G0Ej z$=ENC_6}vf%w`+ zn#v?K=|YffrYvhQ#*464yBA*8>aB~&qi$EY9&|%juu6>Ka2dVEAjrX_Wk>K*(DMp+ CLoHkY delta 1077 zcmZvbO-vI(6vtCvSf9_RZ}3&%DgM=>6$8 zywdBnfVPk+5r1pR7%Y%wqBrDYu(e3%C1&sPFayH_M_{3^n!gZ1Fq; ztuo|n(AS=4YjAHO4b$Kr z8wP2}frE=Q)AjB{LHtnQY6}lren?x0Gm1bE_-t}kHwU?#dMYMK<2Pe?z);6dK8EtV zp&r5?_^aSiZGWd_!Wq6!x4lY_j7${1GF)WzGl;{Z#&6oQG~%FLYLZ7vOQ239ytr(l zpoXVRc36oQOwX)B)e=W)L&R}0D~xOkBjoZZ5k~VaoOe|)c?XV~`-O%6osYaV4_Iy( z?jycst8gv)Nlh;~(w8*{HqC+62r&;4U4h{ho2VOxJ3Bjh7U=DH9ZlUCE??w`J3xf~ zEI+Wx50DE%!Uu^an7;;rrkbc7QU~4q2YXke-wRe-j#IAHz3D|=()z>@!C%>z#M!f~fXh@OgBGTQl$?4mvWR68M zX}X0$r&ATCQwf}Mh6}fmbAEx2kdkFkf$~t0awE`r1w9JF__Mpxe3iP&i<3$z^DKmL p3pa^nxKXswt}|_ca#CpclGtEsfFXJn_A!c|idT$>*8UQ!egnq)5%2&2 diff --git a/Project/Manager/func/__pycache__/login.cpython-311.pyc b/Project/Manager/func/__pycache__/login.cpython-311.pyc index 0487ae47b08ba700e3dae4408fec7c42bba6130b..a5542eb4f75a0f2f7ea63b749cf3eef9b7b50ea4 100644 GIT binary patch delta 76 zcmew-+9t-koR^o20SI1;<)ryfK)vV>H;YbmXgh?>e@&NgQNPJ!(UkHiM2jmMQ@%d}` z7f4TbWEB+_NfBMf1auV;L%;%=$ro9bL}oLjh|OiH6-W`U5dg9!<}%j`f}A;d2dj;s zB$81=DN?nP|!DOPDh26F%nlOd#t1*k}N@?AD#M!Cs??DmYZlLOgpx#erP*C;?7 z3l75d?4hDIFlRF`s4x^Y){50IE|3SRR-GKf!9CfNLzo{qA{4Pi#72(OjLMs9IV%_q zOQnIPy;#5fMf>Kb8zw&6zWZs{f+sr~p6u;?vUA4Mb&GDXrWO_D7u{mb%u7kFs4C=| ztjH^|S%CW})8r?-OISF7x+k~uc}~8{m&zzV*_wYQW6m8cCyG9Xe1AmwM~M82Sp+Uky2FlR8Wu*yD4J9=%%8=F5*Qz zS{@#>1bPrX*o!O(9(w4h;Gs#N7jqIk=&e=o?xaD9AoMZs@&C2(VkM%}fQt}U4Wd|=(nfT(GB`er z+vC_1QhGP2YkxW|* ztiyX2rHQG3>}$G3P6rHtx&!;2hRz0`mA?m=u7lUchx~<14BNZr&~6 zSz#I`@CW?{li}ycLkJ%$UpS*LHaxHC^`%y$?k(NIn*JK8F)w-Bh?Qz{2Uhztupu*$jlUaqv4EA`x2CFd9HA3kxzIYz40rfTnX3}nm7-3J-!%|7fi z7`YWdY()^EJo!C`5~K8HAxB;-Jtiej0 z<%%qTLYhoP20#j|w8#=!VKlcLnnFYD3V(BZp(!-Nu5dYzA5h^p9#d^IkOC_ZVFM!U zK!gL3SjkW%3t~%y2zf9uIgGc14J;_X`3dhrc6m{ta48Rvc)Gsr`GUrmQ)a$czy20m zZhlH;T4j;u0KwKO? znT6SfJF%s5g2yFxnG5VPn?sntF$<^x<%-lnga(Mv+#JO|gOOVv#8v5%ZCawdv5EN!bVjw~XM2Le3 zxJz%bCFkenW|kD$PW~XK$^mk+CP$INWLa?!Zm^quLCSqM7l_Yfb_fKrK^pSXGSiEA nK@!d&0uC%@_cRQi;j&D-qg0I zT?=8n=ezr#ZS4c{G?}Zo-7<@cOB9@Q5{rwg_?$|MGxJi5i=lj8*W~=X{Mi9{76VNI+h^pQk(pPVT3jRy6fXh=Niir`72u#q1SBC2BS3yF?wfpr z{kPKxHUvmH5|)W85mXrF$4rNXmV|4WVy>Y*@-QQ(R=bzHoM8M z*^C%aZ|c@<(r>2^HK_+F z>>*gchYE~lloc8x_78$yLh!8_1~C};ki#B=K@WjX{ciJIR@9gKetzHo_x=3tKG?rG z#U~bv2@naomBBGKEjnOty0N}9&W2bBWJ)$DT$~T_C7V`EaUmoS8_0}e4w*}*C1jC} z6CfnYOb_t0U$tp|HhtqTn_~u*{^W4_T?>_<7mCBMBL$E#1reR15S20{gQ``lE{n{{ z+zbW4EYY$+pw{R%05Y%I@D%MhF$B~~6vPDGnKRAMq@8G4dH@ephwcFoGwXK7f;;IN z8%R;Iu=AA}QOn@xRIUBjPI0?a+R97a7fUf@RlRzW>}ZxPbK=gC5G1_yK;2uZY5=H~ zaNF4@&58J=!F|A2sf%s1m#tBt?yF=T!CP>gNii9lwvH314V7GMmu|=GxP!9uM!9O7 zO&K$e(&|49b-Fi` z_3QTvlh+DUlZ6M5H|8G}?oWSt`zpso5E?=FINP-7Wjqx94ES9*&NkT)Pdbr71MQ3D z=tO@!g72_hP{4Wi2yWy8(2CD-9-qcKXG%u;(ZFyxc}YRFB#_kF>vY*XjWb+3+Y>=! z(SZoga}J@EQC_pU)Ho2qm5qVUJw4+1B kg+!A#2^0+w!q4DT_Ww`S??w2E(6(nkG#0_1fC6OrPv3;)h5!Hn delta 772 zcma)3Jxmlq6rS1N+1>kP@3_0=KnPyU5~C7`pa_Wx#>U1-<2FiIkXv>k%q|_o<~pm( z6voQ4Ib)GEjU;wh=$k#3Gt%&~@7p)ueDCeIGe0WtOPS~Cw2mNV zs%tAdN;6Z&3(a$*vlzL8EBb0c91_=(uLZiJLycV7Hyk5=r<|0lG?0^a>`1NMbn#yQrn4b?_Cr-#dnbZPZoxam_9h>#B)PU7$uyQ|Hyr&`J2Zu#Yf zuQ7Y0HTE9sS8(y|?lhc>nrsKlwVv&-iqpe7`vcn zfS~+tC?83S0KXs+y#R1Xt_2(JmcKklCt-;p!v?^Ch%x?zZhkoBBgZ=SBsE>Nv2uV; J0-b=de*v<^l=uJu diff --git a/Project/Service/func/book.py b/Project/Service/func/book.py index ca0adca..6252349 100644 --- a/Project/Service/func/book.py +++ b/Project/Service/func/book.py @@ -35,6 +35,10 @@ def book(): passenger[key] = request.form.get(f'passengers[{i}][{key}]') passengers.append(passenger) + if not passengers: + flash("请至少添加一位乘客", "error") + return redirect(url_for('index')) + conn = pymysql.connect(**db) cursor = conn.cursor() @@ -85,7 +89,7 @@ def book(): conn.rollback() print(e) flash("订票失败", "error") - return redirect(url_for('search')) + return redirect(url_for('index')) finally: cursor.close() diff --git a/Project/Service/func/modify.py b/Project/Service/func/modify.py index 51771b0..078e16f 100644 --- a/Project/Service/func/modify.py +++ b/Project/Service/func/modify.py @@ -12,7 +12,7 @@ def verify_user(cursor: Cursor, phone_number: str, password: str) -> str: record = cursor.fetchone() if not record: return "NO_USER" - if record[0] != password: + if record['Password'] != password: return "WRONG_PASSWORD" return "USER_VERIFIED" diff --git a/Project/Service/func/order.py b/Project/Service/func/order.py index 25bdd2d..7c6aeae 100644 --- a/Project/Service/func/order.py +++ b/Project/Service/func/order.py @@ -38,6 +38,14 @@ def order(): """ cursor.execute(tickets_sql, (order_id,)) tickets = cursor.fetchall() + + seatClass2Chinses = { + 'First Class': '头等舱', + 'Business Class': '商务舱', + 'Economy Class': '经济舱' + } + for ticket in tickets: + ticket['Seat_class'] = seatClass2Chinses[ticket['Seat_class']] cursor.close() conn.close() diff --git a/Project/Service/func/search.py b/Project/Service/func/search.py index ab35941..ff95d33 100644 --- a/Project/Service/func/search.py +++ b/Project/Service/func/search.py @@ -1,4 +1,4 @@ -from flask import render_template, request, g, abort, redirect, url_for +from flask import render_template, request, g, abort, redirect, url_for, flash from .config import db from .utils import get_cities import pymysql @@ -13,6 +13,10 @@ def search(): departure_date = request.args.get('departure-date') passengers = int(request.args.get('passengers', 1)) + if not departure_city or not destination_city or not departure_date or not passengers: + flash("请填写所有查询条件", "error") + return render_template('search.html', cities=get_cities(), flights=[], username=g.name) + # Date validation try: departure_date_obj = datetime.datetime.strptime(departure_date, '%Y-%m-%d').date() diff --git a/Project/Service/templates/index.html b/Project/Service/templates/index.html index e82183d..366080f 100644 --- a/Project/Service/templates/index.html +++ b/Project/Service/templates/index.html @@ -7,6 +7,19 @@ +

diff --git a/Project/Service/templates/search.html b/Project/Service/templates/search.html index d847f69..37a134d 100644 --- a/Project/Service/templates/search.html +++ b/Project/Service/templates/search.html @@ -5,6 +5,19 @@ 航班搜索结果 +