From 17de406a58e8e5836f611ab8d6b1fe0bb5b58d63 Mon Sep 17 00:00:00 2001 From: fzh <755713581@qq.com> Date: Sun, 23 Oct 2022 22:24:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=85=A5=E6=A0=A11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application_Enter.py | 258 +++++++++++++++++++++++++++++++++++++++++++ Form.xlsx | Bin 0 -> 8859 bytes Student.xlsx | Bin 0 -> 9699 bytes 3 files changed, 258 insertions(+) create mode 100644 Application_Enter.py create mode 100644 Form.xlsx create mode 100644 Student.xlsx diff --git a/Application_Enter.py b/Application_Enter.py new file mode 100644 index 0000000..637230b --- /dev/null +++ b/Application_Enter.py @@ -0,0 +1,258 @@ +from openpyxl import load_workbook +from openpyxl.styles import * +import time +import warnings +warnings.filterwarnings('ignore') + +#判断是否在校 +#此处为入校申请 +def inschool (u,a): + wb = load_workbook('Student.xlsx') + ws = wb.active + u_inschool = u+1 + state = ws.cell(row=u_inschool, column=3).value + + if state == 'y' and a == 1: + print("您已在学校,不能提交入校申请") + #在校状态不能申请入校 + elif state == 'n' and a == 1: + print("您可以正常申请入校") + #离校状态可以正常申请入校 + return 1 + +#填写表格 +def write_form (a,c,p): + print("=============================================") + print("开始填表") + #申请类型 + application = int(a) + + #姓名 + name = input("请输入姓名:") + + #学号 + id = input("请输入学号:") + + #联系电话 + phone = input("请输入联系电话:") + + #时间 + Time = '' + while Time == '': + t1 = input("请输入入校时间(格式样例:2022-07-22 23:00:00)(要求为当日且不能早于6点晚于22点):") + # t1 = str('2022-10-23 21:00:00') + Time = str(time_judge(t1)) + + #校门 + door = '' + while door == '': + d = int(input("请选择校门(1.东门 2.南门 3.西门 4.北门):")) + door = door_choice(d) + + #以下为前端数据,此处用输入代替 + #地址 + province = input("请输入省市:") + district = input("请输入区:") + place = input("请输入详细地址:") + + #健康码 + health_code = '' + while health_code == '': + h = str(input("请输入健康码状态(绿/黄/红):")) + health_code = health_code_judge(h) + + #行程码 + Tour_code = input("请输入行程码状态:") + + #核酸 + NAT = '' + while NAT == '': + n = str(input("请输入核酸状态(阴/阳):")) + NAT = NAT_judge(n) + + #申请状态 + application_count = int(c + 1) + + #通过状态 + Pass = int(p) + + #提交确认 + submit = Submit(name,id,phone,Time,door,province,district,place,health_code,Tour_code,NAT) + if submit == 'n': + print("填写取消,返回上级菜单") + return 0 + + #封装 + data = data_set(application,name,id,phone,Time,door,province,district,place,health_code,Tour_code,NAT,application_count,Pass) + #print(data) + + #写入excel + write(data) + + #调整excel格式 + style('Form.xlsx') + +#判断时间合理性 +def time_judge(t11): + t1 = time.strptime(t11, "%Y-%m-%d %H:%M:%S") + t = time.localtime() + year = str(t.tm_year) + mon = str(t.tm_mon) + day2 = str(t.tm_mday) + hour = str(t.tm_hour) + minute = str(t.tm_min) + sec = str(t.tm_sec) + t22 = str(year + '-' + mon + '-' + day2 + ' ' + hour + ':' + minute + ':' + sec) + t2 = time.strptime(t22, "%Y-%m-%d %H:%M:%S") + + #判断填写时间是否比当前时间早 + tl = (time.mktime(t1)-time.mktime(t2)) + if tl <= 0: + print("请输入比当前时间晚的时间") + return '' + + #判断日期是否为当日 + day1 = str(t1.tm_mday) + if day1 != day2: + print("申请只能为当日") + return '' + + hour1 = t1.tm_hour + minute1 = t1.tm_min + sec1 = t1.tm_sec + + #判断申请时间是否晚于6点 + if hour1 < 6: + print("入校必须晚于6点!") + return '' + + #判断申请时间是否早于10点 + if hour1 > 22: + print("入校必须早于22点!") + return '' + elif hour1 == 22 and minute1 != 0 and sec1 != 0: + print("入校必须早于22点!") + return '' + + return t11 + +#选择校门 +def door_choice(d): + if d == 1: + return 'East' + elif d == 2: + return 'South' + elif d == 3: + return 'West' + elif d == 4: + return 'North' + else: + print("请选择正确的校门!") + return '' + +#判断健康码信息填写正确性 +def health_code_judge(h): + if h != "绿" and h != "黄" and h != "红": + print("请输入正确的健康码信息") + return '' + else: + return h + +#判断核酸信息填写正确性 +def NAT_judge(n): + if n != "阴" and n != "阳": + print("请输入正确的核酸信息") + return '' + else: + return n + +#提交确认 +def Submit(name,id,phone,Time,door,province,district,place,health_code,Tour_code,NAT): + print("=============================================") + print("申请类型为:入校申请") + print("姓名:" + name) + print("学号:" + id) + print("联系电话:" + phone) + print("时间:" + Time) + print("校门:" + door) + print("省市:" + province) + print("区:" + district) + print("详细地址:" + place) + print("健康码信息:" + health_code) + print("行程码信息:" + Tour_code) + print("核酸:" + NAT) + print("申请状态:待审核") + print("通过状态:待审核") + submit = input("以上为填写信息,是否提交(y/n)") + return submit + +#数据封装 +def data_set(application,name,id,phone,time,door,province,district,place,health_code,Tour_code,NAT,application_count,Pass): + data_form = { + "application": application, + "name": name, + "id": id, + "phone": phone, + "time": time, + "door": door, + "province": province, + "district": district, + "place": place, + "health_code": health_code, + "Tour_code": Tour_code, + "NAT": NAT, + "application_count": application_count, + "Pass": Pass + } + return data_form + +#数据写入excel +def write(data): + wb = load_workbook('Form.xlsx') + ws = wb.active + d = ( + data["application"], + data["name"], + data["id"], + data["phone"], + data["time"], + data["door"], + data["province"], + data["district"], + data["place"], + data["health_code"], + data["Tour_code"], + data["NAT"], + data["application_count"], + data["Pass"] + ) + ws.append(d) + wb.save('Form.xlsx') + print("提交成功!") + +#调整excel格式 +def style(file): + wb = load_workbook(file) + ws = wb.active + for row in ws.iter_rows(): + for cell in row: + if cell is not None: + cell.alignment = Alignment(horizontal='center',vertical='center') + wb.save(file) + +#代码运行主体 +x = 1 +while x: + user = int(input("请选择用户(1.张三 2.李四 3.王五):")) + print("您选择的是入校申请") + #申请类型:1为入校申请 2为出校申请 此处默认为1 + application = 1 + #申请状态(0无1有) + application_count = 0 + #通过状态默认为0 + Pass = 0 + if inschool(user,application): + write_form(application,application_count,Pass) + x = 0 + else: + print("请返回上级菜单,提交申请请选择出校申请") \ No newline at end of file diff --git a/Form.xlsx b/Form.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b7b04a3bcf897952324c8a6ea4282ec1afa0a6bc GIT binary patch literal 8859 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 literal 0 HcmV?d00001 diff --git a/Student.xlsx b/Student.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e70bf945e1bb8b5fd4280c2066160a2c201bfb9f GIT binary patch literal 9699 zcmeHNg;yL|vmZ2rO9pp$*Wj+f-QC?GxNGnrfuMm9+=H{YLvRux1b26TlkD!xF1zpj z1K-zkPIuokU3G5PtzX?=Rkfll6f_6`3jhKD01|*OSJ0R}1ONaH0{}b+03mfm9qe7r z>|G61y&TP4^cX$uY>D%rA*pi!kl^S4d;AAmpj36hzLOcXRbxj`tW7;KH@vtQh~I>- zL%#Ja%`;JxynY>r`p%ciTuH48*g>IWJElW<%7z=)A_-f2(P5MYmfyq$|&$iidBEKzC5+Nu`(Mr2f z40%1b%RkVm1u0A8hHcF48LZ5JEAvgGrA3LAO`W_V!-YVNG5PW}4X8@7vG#^YdS`F~ zl%rQ=iNhmGBxF?zQDnzTgvb^Khg!t~Iw7_QfMp_EY#MA}h41?6>0`JniQV*WwY=WV z;Ep$FJU&J(M`60!qtSXT4&gN2<#dm|zo0CVVNly_PyQ0_!4uoe=iGt*{V7)9*cNdX zOZ>4{YY5OK4Ap88@U3Yd?F`?g3~~$Z_)MJ(>j>*M898=}n>#M^Ddh82LHNb9(nOyo-on(lw)MP2QbbaAE5w>e}ieA8Z+4$*!Nz7|3v`9)WF%y z)`f}j$N9hT{13+DUtYa5QBI+Y88Pfo>Mp$ha(XcyRYcZ9SgM&s)h|GL0j2JBJ~`fE zI~6{vDsC{8q<^d5-QfHp-|L-zl8Y7g(r9!LFIl}uSy<|gliM>|O6L>_r_$waH23NA z>5Ftp882%0);QXdhN4{Afh97D$z!o9)G4Dn4a$4VvugW2&MO607 z!YV&;M4z?a%Lh800hil}XvruUN+<`zUhG{k3b^kB8oQb#uXWmGmDC1Vs}SeFN`U{{%@m zq~i1<7$7aM000WuGM=_f9uCen#tsfPKlZUwH6@3y%&30ZwU4OR{Brmr0Y$mif!0#{ zAu_XV#A>}P-DHt$^E5fdkG`8BLNrWz&D2$^nfKSt&10#j(Q+x;V=rkLPk_s8SX%TS zNH?xoMcNN4_8F^_DZO4QC)5D#(nYZD50^$~ManlsO6dXpY9Z)l(Vv|_a+(rT>C~FY zDWUN=^wY33kRuhNLPwgp<^G(UI!1(1AyY5d;Ip@Z?4s9y&pj` z^k+Ciyd2xlAFFl^eLz7YR)_*&YrKj4E=gVdbT~eVYL$KP$cA(GthlgNYT9rlp4nnH zhmBrE{%zlByo(BK67sI3S(843v}lxGfm}vbfNqA=GkZr6Es17MYA2vlecq#2{o9A@ zdRD2PZ@|UYV-76n6`F9pCwUlHm(G=3W>@916Ss!lGHmgWlwv{_CznKYqu0_3*ol z+&Zr{FZvm@>Z)h*c5&gmgIE0~@5G9xk$lpW{ck(2SRr}|%Vz>dk!pYhEVwf<<;&G_ zF5UfJq92Qsh01oyT9hxRR22{@zMQGW3yM(T>6P906KM?ovZ27UsQSk_QjQnbWd#;1vpSkGfzpv=6AM)N86;Q zIU~yik>9auG8&}j6IN|w)q+(}{6JhMuqs(rs)-In32EoyDsCF&jCPZbgEU5O= zC*rp>=If7*qVpH9*+E`Jfbp#<61uAn@eANd%bmHL*QiZL{teelhECK# z(@+iT+ytTEAeoBQ^~TM`00KG)deuccRM8^FODS+epqc|alcsEv?|VfCivjO<@n&hd zlwPN7D@LS6bXE`Ku9O1MkztQWFq}>VR1eg~A)VGOfn2nUrWJiS?jTf;JjI4c>J3J27e5<?%(J$zbnRwEiqa~=t4J!cq_tp zD9ln8|9&~!9ry0uz;GclW78cs&59yk41-5R_F z&)usf;^H(|>R(op^6jIpOnx-)(V^az|Dh$|eb?j5wZUma?ozsMb5e{cWYRPHbr+QLB?B{D8EtLV8?P+mEC z%p5EMjod+4u$N|q`}gGD22+#kIvqy~&edBHG|@PoN!aR0yTC{L@C#HbVMX2>(`!O} zI-_bstwUi=IVi0Q0_yguLZ(fXp6GKPaj}y2pHq8E!Q})4=tIEZ2*CZ3DgOkBtEHKp z8Pm`6Pi*XIjXBJ7g4$5#9*MUOwCgFpAn$Ma+L`6oE-s&d6d-zVXU2kLp? zFz4X8<5bQgcLhMsTczG}G1MQ#&5=>)n7-t?Pk>zfj145;@s1-}^1iteops=oFLDWE zlh^#}WHZY*+p!%YC(U!%a4Fd(GvwAFv<*^9S&41#TxhL&ytbGf&x&vgBB)fjCfsSL zLXB>x+AbqG9mbax~}O(CxtoZ(He|r;qey$omQ&bshA!Ln>Ci#$$iBOuTTV0$@-7P0EF_ zX)I^<;5-APk;5OuZZm+8 zc2q_=(6^ivLoe3X3a77!bmF*;&y1ENJznB$tcjoJTCUS_b3N}5X42QUpR)D&Zy68I zNV9gYQrrFRPvQg(HVJ#RVV8R@#|$1G?s`y`?#_qUqA%^kdU<@r(1+j6UoABDp<}-d z6(qE9uwaQoW1&|>Y-1>YhRRLg=^a{xG}~nkBr?rm;{4umlF)HZKAIAw`Kk?r3ic?C z<*P|L2jG*bfp&=GkgNS6pUzH$H}Kt;n^;9_a?eWLfJ*d?A?jY(k!DZ<6om1+z|ALGukf(nAsy>c#Yf zXV7@tZMwjN;L@GsLC6G!lyr*JXKCq&t5Kt<>ae^4x8rHa`PS_CC_HkIZ}tkS%ch#&!Z&eGA#wlVkivVm+2>qD&zh~@y-`4; zt}bK2_8TUPE~X9?6xUdMwG%648#$>!?X-aH^qcV5Ip|v!*Q-13*%FFylPe<}Wcc!`8t_P8|txBzf zX3m3YdH3>*J{!o13p**xcj@G~nCK&JWTwk*#9$c@&EkDs`hPlprCyBn(Z~ z7nPrP8UnKq?~U+6sj~+8*82dvdxLAbR)rogNjn&T-EcRU+TAbb^4(W9~4$@EyLMElKa z4w`}I0P*6+F`Yigy+L<}lqVdjCbIto>p?HsEWv49l5Z5MT#QO1I0TsaBAJ{(1KD2% ziCqmhuVH$J7)Zp>$k{*GCxM)3Pl+>T?n!!9Ys0`gam_&OQ;sq7VeoFTVgstvu6A zg6H5l)7Fg=e*~>Q9k%LS*rA%X@F%5hSmAt5ptXLxhClrC=!hikcz;WrPBf4nMz)UX z?F?0_sqdh>U1uV#O15foRKv}ha>?Pt+6pS_J1QgJIr~~~qk_dPWIDh0+2Y##N{#Js zr5eFKN#PQHpB)|x_&pE21R`YZH2gLlgQpHf=t#YdPg;->K}4 zO*oXdguK}PGsiOVaaD#``icx0R6+1C2f8%09m7GJZ{zJlmo|nNbDK>;AO?HS!7z02 zluoXVRjnzqy}9}+_C`@|HAz!Yz4e#Zy>Zu83u@ovoCJVv802WKk-6H1IpT}g&Ke@g z=(tS<2*r|Rvv2qAi1GOx@xrBRm3hJ;b|&rF7NQa(COd`Z-j;D)*r>v_)0rW%YoV{l zl)fQfC@l3KCm_y@arQF`-}7}sX=aRHh*C{E(rW@+H7=N$y?_Z#4wvJmQO-;5Li z_DL?an2+T}mRu$hHhEX!(s?Eas9h&MqogDquh75jg19`2lpS~RZP%+v@!{rrsW@tC zP|_wMN&|u`_lN7;r&}g`xJmr?1gLAjgBJ#z2N!{pAkZIBu{3fvGgWbQwz9YQ9WjX= zGF?L8Zq^x`Sa+Y*#H?e1 zK%n>C^|io5pi=%&F$k-kWRoRyQ5dq*c*7-p5;Q6w=N?8JfwWP0W~q{<6_oJpo3a=^ zWOTAfhc1zfw3ZQ_D3pN?;z&2wn`P9DkMEnRC_i*+m&-J!lHXRdA`6?giOVko#G(&c z>Q?0lgVfh*jTc+_-BB)Os@2`lFe``TaaoT0`@H55f-Kz9LjCrR4-w#2 z`Z8%`b18*wUiw`(wcT%3l$-F?U^n=udqj)JK$v_#zq3C-KNAc_%r5i?8|9yQBd;B+ zYzO!s5wPjVemC2XBEuhfNc+e zeDOw;jBRhB)X7+g^ow{yfjp@f{o?y40mj0+9v4|QzR1vp zcEdxb7jXY(fpUcV$Y$`{(_;VtRKHum5$rLpX3i>RuC6~^hv~_fh0)l`elK}MW>pc? z_h@xjG-^x_v^Qq~X&B?kuJ*~xPV&6z4JpLns-fl-$)Ti>OTfVq-eBl{mcCA}cLS(# zrw|ChyI-0k9R<;>NN{sydJ7yhZf-m@;3EhiqmqclIY(e;FMqy7BX=Jzib^Xoocc_8 z_Oab@9(GOB{O}5T z^o_Im>HNU9><2l@=p^Yft~)iF^H?C_(lmFw&j9(X^xkcK>WPRItQCBW4=bMoMs6rE$;z*K*xK=^|P1**8Jc?Cn*c{)E=s zJubrAm|)B@!q`T_+>teZHoI~dlZ_P3RoihsM8p0B#zl8HO$6Zlw^Q z?I#3z^gEYT!xD3cAv(uPn5>}Pt#afz-&=_0pJjSk*B2~W5q%oNY{B5Yl=$$js+hI{ zJ_DOmumh!Lcivo$>&Q7>*v2vpGd(YMdT3X&JD4}1OZrza05{(X|CA#1u6Yf??-n%u`#~+42 z$|6FhUfBz6kiUPxA&7a^4Ml9_O!OGBhWBqi$)k6M_7?1us9^4g`d6Pca&-K!OM-pz zk0Ud&!+!op(+uVYIqcwdrag6-kh;=)x>s|R0O?m6W;~d*vO(Rr16gLN1h9KZ?qBC! zehO^1IwWbL`FQ3*e}6yzyZhtEO@|I?B5Pl6dxE}={LBj^5I(0nEYvf&@DRFS%!yCd zxuk6nd<0OJh)@RsHKh=ao-V_)3NM*jkFstlsXvh!5&5zlFqU-<8qkJ(up`9msa8jm z;rY#P{x+zgP+Vd@eb{E5Q&Hf&1+!^>36V%wevI-uJad$%81CWj&H4`x@jJ_afMfs@ zv48(i<0MV1-Y3 z+tcw+9`{t~-|4_Fl>mS!0RZq1a`06A?~(hj;