From 035125dbfb80dc6a469fc3170749f84f151b820a Mon Sep 17 00:00:00 2001 From: Teptao <1650163832@qq.com> Date: Thu, 25 Sep 2025 18:01:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Application.class | Bin 7114 -> 6798 bytes .../SessionManager.class | Bin 2793 -> 2762 bytes src/Application.java | 31 ++++++++---------- src/AuthService.java | 2 +- src/SessionManager.java | 13 +++----- 5 files changed, 20 insertions(+), 26 deletions(-) diff --git a/out/production/TestPaperGenerationSystem/Application.class b/out/production/TestPaperGenerationSystem/Application.class index 017762958393bbda9b8c532d6cf8c25474fdc102..e24d313dc02355eb1926b742c275b31a4bdc8daf 100644 GIT binary patch delta 2598 zcmZ8j4Rn*$8GhdUeP5E>v`L#nS_&zYQktY`Em$Z}ph&S8Q0NefRR|@ggte)r37c|Q zj?6QiN8I2}v<`4OT(=3^_*tO!XRtY#Y;$gI?nn3Meq}$5&HZVWz4!Y<4`-)6_ulW` z`@KKU^Stku3oQ@NbzOLW>;(YrwE39pfWzL@7-?>l&p6ukHtZ327@v^ywUs4%36@Bc z3*C?cpTZ+jYBT3QD)1N_1hFli+S;Fp4fYLYGcNe?xWK2enNXY@>iSSJ)4Ofi;J^Ui zQD+AQ4#~?}Me}C_o>Z5d$)VNRfkZml>%wPoSi{o-pTh{jyFI=m9_^2(`l6kwOrkH5 zmb3I(H+@0ii+G0M-x2RmZjEOWD-x+hn&)MM*;IyLtLvP-QF%Hl@FgS&~WsQw=}#Ya6z7R*6HW*9f9xSWqH{-U2niE0^diw zywg>#`(VLt9Y2(ZU19fY__2nc2>cX3ldrp$x!=IgHT**0m-v;O?XLE}DezIe?1K$& zsyKcp@O%70ZgMxe-@-)=e-ijJ{vscDcT`_eZ~l$oF_6nAzem?3~^NBshJwz+y z#gZE8l*Qg4-6R{mwX{mE_qNf^a=$m~Uc)k=h9K$GC13Hjd)B$=R$8yo2F{AQWzhGk zt%opE#(Xoa8r>nMl{S-Ic9qWXGP7I_f=Rc-0iwxrq%_tU;JvBPc$~~M1W<-5OyQkb z2%;I&(TW*V!KdZSE3kknX$sF%Fpa8cD%&E304!{6VOi4(Wlhlu%!ZB-ufuG!!LXn_ z13}XQP2;r<7QKXm#)_z#J#-c#J6ZNnPT6WhF^?^5YaU8CmMK_(8Z1N|79)x!n9KAn zLOb7Eju<-7g%yb7Mx?P4_aJ8YtvBM?S%|y@AEX&n!?8s9d?wYh*BGKSi|Syd+3Zcl z$vZjTs^={gs2{d*)M@A*hhL-6IGQyKX~vsI?tJB4j$Gxvz5XPc^SD2D94)>FZO_Bf zZ4Gth@z8ocD9dAQ9vfEqJ{itq-!NSDdF&s-yn22d9)?@Z2S!k*=G+s*m>fQhr`qbP z^7#BPbTuCtfm>PravqD0u{$d%m|EfCaV^8t#cD(}?!?rxWy*hFZlazx<9^YetB4hXgJI!5-k}2~6 zPAbK+8f3S3GFo?`n&lEfb^-}MCR3D?R!B4y0#PedHacqYA~kXfN*Ow691#uYIXG^~ zst^ErjNjGy^k~k^`PeGO*{dc7!SE=4WWj0`C z`lA)CcI)*HzawBD#a{_ep~>&CZ4TJ|j!|5;;0)f*<6mR=FN;BALjjGQ9Y?MukMa8) zG;-x76~X&gBVa4swZMDfJlV#G>z|JlGd6>ncCI$y!<@w3yt)UK*vXZ=i>vS>TyZ%T z)4eRK-Nd8K8g51_UB?=8C~PK>J!YU5$o7^D6=3m%J}g}?h0d19eF75{%RA7mB}v7;wU2RVKR+*p=y zpH;=?2PxtCW1Fsq6%vQ|8IY!Gx-ufm_CV7P^6!^Bjgo lAK)7u#(1MKt~AD&F;=ZMrdy10Ep6miTzvgDx}7#5@IPmw)L#Gq delta 2922 zcmZWr3sh9s72Ri;nfGSq0mHz61EQ#ad_|&wqGA9Mu>)A~M>K&E21H>-hZ$Xs?V6^h zD@~&L-K3RhjixrVO|%h{5lCawHZ_&BY18zR{?lLjv%h?rYKivT_ofu>TC?7}@4kD_ z-e;eE?wk86CaUZcSI5r-sG~h+>_@GZyzbJxZt5o` zLw#L#9Kshhd~ z^;r!uoD+|#Ip#49IA-{;k$TEykeVM_By_=;0GFhh#wJ>8oDE0 zzA(r2`uF<#35h+S;DA1E@eMHjTtP}|YoYi0b*$zB{8+|EaF*5sht!JwXmvW6PFw} zsc(`)<1L9IUn^UjtdUdhP3rZB+rq(+uh+lM7vAB5mGh%if~9ojw(erK7rD6z=u{~~ z+^v--XKIus3z`s$1XRiv7qxu#C7P{K4$TqoYs*)=nwwfW8XH;~*4J)m=%{bq*s_5@ zO^2ATkO=3LpTw^7Z>5`TsIJ=B0O)Iah zUzXh{wM8HEvKtFW@OZ^>TgKU^lWK{!h_{n-=@yaU%%N>!i8G&W6CKVP>J-PEWsdCx zGcCv=mAb_n&bp)?JN42Ih5DqhJ4Hdt>og!HQ;N(%Vw%@dW{EW}7b#+^YhF2fn#pI< zT$%@>TppV!kDv3WJ*&WMF3DiHU(yiJ8NVJLDZdnF5Ln2njp!Ft&NQx8UEtQsWqbt%WHh7-#fcLj5*K>>TK40WhLJ@({mnx`|QN1XmDq4aBTFPjWC(lHAs+y-HQ8&z! zC{WNo3AaMaCb3AtprY^8a|bAynajNQ6+MGRG2G=HL6z$s>+>+RClt4}o1OMi9Bga1 zIA_Uw3=eJQg=sOYk6}x*>(eDM93FzbD2AiMs3_vc=wm~0$id^o$dmWa55ZkBiZ9d@ zWykQ8ynJ~W4hb_7!-_MEoj_8vI#vqUz?yAj?KdNj?}gZc#khsF+RAEe^L72PIA&l^bwA3;a!y@c%e9kuQ#)B7l%+-Vvga}meNstuiES}U%(6rrSYQ z(_=Dm$En;6FHjUZYTBkP@38oqXsCsRrNF9i-m_5|=`NsN-lDP>AJ^ECh6&ROhd zCw`PQ`4~#LoJ;U=?%F%pdk5HscOrsM@|(N(=>YD=J$MNB^8bf}IE6!o|JHMe2$HCd zrB&EB)l^UO*hehRl(eUHck*WlPtYoAU@5a8Xf-vmjI|h`HPpn#@M1fyr4R8JN;bGW z%8XTBUS+&%=6A9v*)UyWC`CckO$zoacuT=M3NEu{uVCqQo<6~iW4LZ5N0i4Sccbn) z_S{qaXc(A{&*KMlw-~3WV~V~b?hKRsI}{JrW(12Ot@r{`ic`rIqqHF?=3$rWZ z7=s+229Ow~5A)$H+r&ca`J+SAv{$KZ>O7gN%gf*MRGK+Tv(DlL8J=`28XBduVjFbG qjkJmHB~VC8v01;i>({ON^;Z4bp8 z@809Pe*hT4$KU#X>xsrYCzrA-*;FoDm`|Oy%8P~hJ|8@23ZNM+0+EVooiGb#IcpWm zBde3@nAVcfT};?V_uFVhD;C z$1tkncmO9bwv+8@#WM4xSX{P9q1xzTF*QR0Ey`$S^L=5;JRZOVChdqanwZ8Z9Ww#E z>d5LezB52TFUjy+!Tw5F66frHl|Ox6mMJ-U+JC8g?MLc!(T0&?(W+SGY-!507K(Ef z5Ayb~))p%IP{Ji0Wm&Xh=e57ZiaqQ$#7B0{-7Qr6M|aa1mmC$D`QU;EHw0cI>gFkU zYQ_e{FEm^@U2_6LP|<)h#DS_4&e8(BcpY!Z1h%G+4@m!JCIt5K-UL6_es%cnfbkDZbX**JO$i6yD?HW+2Fc%d(B6Bi~fZO6wh_mWcMy`d)~!CONe?k;7aQ;1){DQERNy^m?>kJ=p0+N@L}~+MwmAoD&axE^ zF8`3Eki~f?>{CzU+*VlcwlJ+;;{xWSFT+zjtAgJ~>rFnW3SO-_uxqeMDW%vCJqH}6 z!qgAkOci5PWE>GreM_xqU9BiCa^k`nfC3R>DgL!(DnJZSZjEU+joav$G7@*tk(hR6 z)Z{vh>wG@JOM!1tQcT1D*%6-mu@(uPr7@Tcr`OT-J)T!G>NT__!x;z0R0;Pa!#xgk zYZ*1B{>%V=j#m$7qOG(IUOmR|=$+lbD;(N2q>1{81|9S)(GbyygQB-^G;tSeCxLZL z83##MPFZobwaeMcY4&r9Q=Y*m?C^8G`I1t6$6dWb34X#Xu5#&aaqTv^K2oq}oR!tKRv=l^LUBCo2G>gmbVfV^%FWtS1Kl;)% zeW(wOU;3a%924ya1SZ1GY>S<{U1PwFi=w?z9DpC5eE5x+{1yCDC9bOWsPUdY}n$F3bT3VS< zBfaX;pkY}U%dtYB-1}IYmd-&rrsuOxLQcu7K(w_j(VNOAb%*=A@7xUyBl2Un*T&-@0(A7ulLH)?yv0`@{+W0`-abaoZZr%8A0uE)6dWG|wv*&t_#> z&mOST`3Z*Adod{|6}uod2&{f_{n6~qjk(*O&duC>{@}COD|enhn3?-#=C=<&3Sm7q zstjxrSk{`DM;vr)!%TN6cCBdB5DTLnuaID=v@P2N8e0Z07)~LO5fHXgzj zbZFQb#x`tc;ugASmYp(8ox(EBaSg9g!d^zpICT5c!q7wLR8{l3KvSQQN@e9>GGkfU z#cn&5+a6*aG18g;a@wt&_6e+;58Rh>(9s=P&@qHJv0uZ1FblV*q*gth1hgqVo0kJ) z0-K6u^h&v_ZLzXZc0q3#hj3V6#e_aCdn}VBb=q(;oT*ZFatpxz&BWX9xKIusZAKB?9We(N_$9W zp|QjhR#MNN(rrW8{>ySFV~|oc8zNrlHPsBICDA1ip?b-2)`PoJ!!WCOUg4pPZC&v8 z2{TUH@z)DfwR)Y{c8c8cZf}O9nJRp*F>j((osJdS`D^oXxJMv)WsIDtsR1kQJRwqZnu_AUK;(OQagzp4IP>xy* z(hhr07;+)2a1y6{fXjqa8@Anr_6*I@;PA1Z-D%_@g2VR_`2kw&=}iO^v8U~i`DL2! z)mX#x8hkdmV;R(@tH=si!QYkiXe4XiLukTAUMZ*fr51s|uv$aeK@D&JNp1pXaMtH> z)aOwXYyS!SxrgXItelUihLQlA8G0Mzin&oOcbV7tQ2{l0hnp%v&J_gOM;|3nbxbH+ z{xmHF-Ad4H)OCB2RMkGHz`JG}Lg7tw;>qaY>@LEoD3BRNa*4%F3m5NOa&d~;@OC~&$|~s% z?a#nGuOE&!-$%=1rMfG*7f_Tb0^7G7hbe8G|CJndaXr}^3bHpqVvNWt%m73Up;h9& zt)BQ>joig%!oRxZ7QOg)h>r?hWwnVnEed6%5XwkV zC>knSB9TZPX{M3!!@0mw(T*`^O;51<8Y-jlY0ucHjAOphsf@nq=zz+NM{F%L&XcUP z6iZmLQ^qJ%nnW`!?DIuAiYY|(ISX=T@tHuLR+JvC98nj< K6fWX28vg-aQH4YR diff --git a/src/Application.java b/src/Application.java index fa307fb..8a36ada 100644 --- a/src/Application.java +++ b/src/Application.java @@ -79,10 +79,10 @@ public class Application { * 处理用户已登录状态下的逻辑。 */ private void handleLoggedInState() throws IOException { - String currentLevelName = sessionManager.getCurrentLevelName(); + String currentLevel = sessionManager.getCurrentLevelName(); System.out.printf( "当前选择为%s出题。请输入生成题目数量(10-30),或输入 '切换为XX',或输入 '-1' 退出登录:%n", - currentLevelName); + currentLevel); String input = scanner.nextLine().trim(); if ("-1".equals(input)) { @@ -90,10 +90,7 @@ public class Application { } else if (isSwitchCommand(input)) { handleSwitchLevel(input); } else if (isNumeric(input)) { - int count = Integer.parseInt(input); - if(validateGenerateCount(count)) { - handleGenerateProblems(count); - } + handleGenerateProblems(input); } else { System.out.println("无效的选项,请重新输入"); } @@ -116,7 +113,8 @@ public class Application { } } - private void handleGenerateProblems(int count) throws IOException { + private void handleGenerateProblems(String input) throws IOException { + int count = Integer.parseInt(input); User currentUser = sessionManager.getCurrentUser(); System.out.println("正在加载历史题目,请稍候..."); Set history = fileService.loadAllProblemHistory(currentUser); @@ -125,11 +123,10 @@ public class Application { System.out.println("正在生成 " + count + " 道不重复的新题目..."); IProblemGenerator generator = sessionManager.getCurrentGenerator(); List newProblems = generator.generate(count, history); - //命令行显示生成题目 + // 命令行显示生成题目 for (int i = 0; i < newProblems.size(); i++) { String problemLine = (i + 1) + ". " + newProblems.get(i).toString(); System.out.println(problemLine); - // 满足题目之间空一行的格式要求 System.out.println(); } @@ -143,15 +140,15 @@ public class Application { } private boolean isNumeric(String str) { - return str != null && str.matches("-?\\d+"); - } - - private boolean validateGenerateCount(int count) { - if (count < 10 || count > 30) { - System.out.println("生成数量必须在10到30之间。"); - return false; + if (str != null && str.matches("\\d+")){ + int count = Integer.parseInt(str); + if (count < 10 || count > 30) { + System.out.println("生成数量必须在10到30之间。"); + return false; + } + return true; } - return true; + return false; } public static void main(String[] args) throws IOException { diff --git a/src/AuthService.java b/src/AuthService.java index 9e358a2..7058d98 100644 --- a/src/AuthService.java +++ b/src/AuthService.java @@ -17,7 +17,7 @@ public class AuthService { * * @param username 用户名 * @param password 密码 - * @return 如果认证成功,返回对应的 User 对象;否则返回一个空的 Optional + * @return 如果认证成功,返回ture,否则返回false */ public Optional login(String username, String password) { Optional userOptional = userRepository.findByUsername(username); diff --git a/src/SessionManager.java b/src/SessionManager.java index cf490c7..25c25e5 100644 --- a/src/SessionManager.java +++ b/src/SessionManager.java @@ -9,6 +9,7 @@ public final class SessionManager { private User currentUser; private IProblemGenerator currentGenerator; + private String currentLevel; private SessionManager() { // 私有构造函数,防止外部实例化 @@ -74,6 +75,8 @@ public final class SessionManager { } private void setGeneratorByLevel(String level) { + String tempLevel = this.currentLevel; + this.currentLevel = level; switch (level) { case "小学": this.currentGenerator = new ElementaryProblemGenerator(); @@ -86,6 +89,7 @@ public final class SessionManager { break; default: System.out.println("错误的难度等级: " + level); + this.currentLevel = tempLevel; } } @@ -95,13 +99,6 @@ public final class SessionManager { * @return 中文级别名称,如 "小学" */ public String getCurrentLevelName() { - if (currentGenerator instanceof HighSchoolProblemGenerator) { - return "高中"; - } else if (currentGenerator instanceof MiddleSchoolProblemGenerator) { - return "初中"; - }else if (currentGenerator instanceof ElementaryProblemGenerator) { - return "小学"; - } - return "未知"; + return currentLevel; } } \ No newline at end of file