From 6b1447fb1794e08f8e5f580b83ae5eabe4e617d8 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期三, 24 十二月 2025 16:28:46 +0800
Subject: [PATCH] 登录页面启用

---
 src/zhuye/celiangmoshi.java           |    2 
 src/user/Usr.java                     |  171 +++++++++++++
 dikuai.properties                     |    8 
 src/homein/Homein.java                |   71 -----
 src/bianjie/shudongdraw.java          |    2 
 set.properties                        |   10 
 src/udpdell/UDPServer.java            |    5 
 src/zhuye/Shouye.java                 |   13 -
 user.properties                       |    5 
 Obstacledge.properties                |    2 
 src/user/Usrdell.java                 |  314 ++++++++++++++++++++++++
 src/set/Sets.java                     |   43 +++
 src/lujing/ObstaclePathPlanner.java   |    2 
 src/bianjie/BoundaryLengthDrawer.java |    2 
 src/denglu/Denglu.java                |  106 ++++++-
 15 files changed, 642 insertions(+), 114 deletions(-)

diff --git a/Obstacledge.properties b/Obstacledge.properties
index 8588d73..2820614 100644
--- a/Obstacledge.properties
+++ b/Obstacledge.properties
@@ -1,5 +1,5 @@
 # 鍓茶崏鏈哄湴鍧楅殰纰嶇墿閰嶇疆鏂囦欢
-# 鐢熸垚鏃堕棿锛�2025-12-23T18:40:37.614553600
+# 鐢熸垚鏃堕棿锛�2025-12-23T19:10:14.326740700
 # 鍧愭爣绯伙細WGS84锛堝害鍒嗘牸寮忥級
 
 # ============ 鍦板潡鍩哄噯绔欓厤缃� ============
diff --git a/dikuai.properties b/dikuai.properties
index ddb639d..d7a2ce5 100644
--- a/dikuai.properties
+++ b/dikuai.properties
@@ -1,8 +1,8 @@
 #Dikuai Properties
-#Tue Dec 23 18:41:03 CST 2025
+#Tue Dec 23 19:10:14 CST 2025
 LAND1.angleThreshold=-1
 LAND1.baseStationCoordinates=3949.89151752,N,11616.79267501,E
-LAND1.boundaryCoordinates=-99.64,193.56;185.77,182.30;61.84,424.89;237.59,415.88;235.34,539.80;-26.03,544.31
+LAND1.boundaryCoordinates=-58.32,-476.37;85.99,-289.22;354.31,-329.80;293.43,-559.79
 LAND1.boundaryOriginalCoordinates=39.831522,116.279873,49.25;39.831524,116.279878,49.25;39.831525,116.279878,49.24;39.831524,116.279912,49.30;39.831524,116.279911,49.29;39.831523,116.279911,49.23;39.831521,116.279915,49.31;39.831517,116.279925,49.34;39.831514,116.279940,49.30;39.831514,116.279957,49.28;39.831516,116.279974,49.28;39.831518,116.279991,49.29;39.831521,116.280008,49.24;39.831524,116.280025,49.30;39.831526,116.280042,49.24;39.831529,116.280059,49.29;39.831529,116.280076,49.26;39.831530,116.280093,49.32;39.831531,116.280110,49.28;39.831533,116.280127,49.28;39.831535,116.280144,49.26;39.831539,116.280161,49.27;39.831544,116.280175,49.25;39.831551,116.280190,49.24;39.831558,116.280204,49.26;39.831566,116.280219,49.26;39.831574,116.280234,49.22;39.831583,116.280248,49.24;39.831591,116.280260,49.24;39.831600,116.280272,49.23;39.831608,116.280285,49.18;39.831615,116.280298,49.12;39.831618,116.280312,49.11;39.831618,116.280328,49.12;39.831615,116.280342,49.15;39.831610,116.280356,49.21;39.831602,116.280369,49.23;39.831592,116.280379,49.25;39.831581,116.280388,49.25;39.831569,116.280394,49.19;39.831559,116.280395,49.23;39.831552,116.280387,49.28;39.831547,116.280373,49.32;39.831544,116.280357,49.33;39.831541,116.280340,49.29;39.831539,116.280324,49.27;39.831536,116.280307,49.24;39.831534,116.280290,49.25;39.831531,116.280273,49.26;39.831527,116.280257,49.28;39.831522,116.280242,49.21;39.831514,116.280232,49.28;39.831504,116.280229,49.24;39.831491,116.280230,49.33;39.831478,116.280233,49.34;39.831466,116.280236,49.31;39.831454,116.280239,49.31;39.831441,116.280242,49.26;39.831429,116.280244,49.23;39.831416,116.280247,49.25;39.831402,116.280250,49.22;39.831389,116.280253,49.25;39.831376,116.280256,49.26;39.831364,116.280258,49.24;39.831351,116.280261,49.25;39.831338,116.280265,49.26;39.831324,116.280268,49.20;39.831311,116.280271,49.16;39.831298,116.280274,49.17;39.831285,116.280277,49.22;39.831271,116.280278,49.16;39.831261,116.280273,49.23
 LAND1.boundaryOriginalXY=-1
 LAND1.boundaryPointInterval=-1
@@ -17,9 +17,9 @@
 LAND1.mowingSafetyDistance=0.53
 LAND1.mowingTrack=-1
 LAND1.mowingWidth=200
-LAND1.plannedPath=-25.601252,543.772523;-98.992501,194.064867;184.886062,182.865285;60.950435,425.466300;237.049774,416.438391;234.819374,539.278905;-25.601252,543.772523;-24.583154,543.754955;-97.979107,194.024887;-95.952319,193.944926;-22.546959,543.719820;-20.510764,543.684685;-93.925532,193.864965;-91.898744,193.785004;-18.474569,543.649550;-16.438374,543.614415;-89.871956,193.705043;-87.845169,193.625082;-14.402179,543.579280;-12.365984,543.544145;-85.818381,193.545122;-83.791593,193.465161;-10.329789,543.509010;-8.293594,543.473875;-81.764806,193.385200;-79.738018,193.305239;-6.257399,543.438740;-4.221204,543.403605;-77.711230,193.225278;-75.684443,193.145317;-2.185009,543.368470;-0.148814,543.333335;-73.657655,193.065356;-71.630868,192.985396;1.887381,543.298200;3.923576,543.263065;-69.604080,192.905435;-67.577292,192.825474;5.959771,543.227930;7.995966,543.192795;-65.550505,192.745513;-63.523717,192.665552;10.032161,543.157660;12.068356,543.122525;-61.496929,192.585591;-59.470142,192.505630;14.104551,543.087390;16.140746,543.052255;-57.443354,192.425670;-55.416566,192.345709;18.176941,543.017120;20.213136,542.981985;-53.389779,192.265748;-51.362991,192.185787;22.249331,542.946850;24.285526,542.911715;-49.336204,192.105826;-47.309416,192.025865;26.321721,542.876580;28.357916,542.841445;-45.282628,191.945904;-43.255841,191.865944;30.394110,542.806310;32.430305,542.771175;-41.229053,191.785983;-39.202265,191.706022;34.466500,542.736040;36.502695,542.700905;-37.175478,191.626061;-35.148690,191.546100;38.538890,542.665770;40.575085,542.630635;-33.121903,191.466139;-31.095115,191.386178;42.611280,542.595500;44.647475,542.560365;-29.068327,191.306218;-27.041540,191.226257;46.683670,542.525230;48.719865,542.490095;-25.014752,191.146296;-22.987964,191.066335;50.756060,542.454960;52.792255,542.419825;-20.961177,190.986374;-18.934389,190.906413;54.828450,542.384690;56.864645,542.349555;-16.907601,190.826452;-14.880814,190.746491;58.900840,542.314420;60.937035,542.279285;-12.854026,190.666531;-10.827239,190.586570;62.973230,542.244150;65.009425,542.209015;-8.800451,190.506609;-6.773663,190.426648;67.045620,542.173880;69.081815,542.138745;-4.746876,190.346687;-2.720088,190.266726;71.118010,542.103610;73.154205,542.068475;-0.693300,190.186765;1.333487,190.106805;75.190400,542.033340;77.226595,541.998205;3.360275,190.026844;5.387063,189.946883;79.262790,541.963070;81.298985,541.927935;7.413850,189.866922;9.440638,189.786961;83.335180,541.892800;85.371375,541.857665;11.467425,189.707000;13.494213,189.627039;62.395060,422.638481;62.966825,425.362928;87.407570,541.822530;89.443765,541.787394;64.988641,425.259278;63.843573,419.803053;15.521001,189.547079;17.547788,189.467118;65.292086,416.967624;67.010457,425.155627;91.479960,541.752259;93.516155,541.717124;69.032273,425.051977;66.740598,414.132195;19.574576,189.387157;21.601364,189.307196;68.189111,411.296767;71.054089,424.948326;95.552350,541.681989;97.588545,541.646854;73.075906,424.844676;69.637623,408.461338;23.628151,189.227235;25.654939,189.147274;71.086136,405.625910;75.097722,424.741026;99.624740,541.611719;101.660935,541.576584;77.119538,424.637375;72.534648,402.790481;27.681726,189.067313;29.708514,188.987353;73.983161,399.955053;79.141354,424.533725;103.697130,541.541449;105.733325,541.506314;81.163170,424.430074;75.431674,397.119624;31.735302,188.907392;33.762089,188.827431;76.880186,394.284195;83.184986,424.326424;107.769520,541.471179;109.805715,541.436044;85.206802,424.222773;78.328699,391.448767;35.788877,188.747470;37.815665,188.667509;79.777211,388.613338;87.228618,424.119123;111.841910,541.400909;113.878105,541.365774;89.250434,424.015473;81.225724,385.777910;39.842452,188.587548;41.869240,188.507587;82.674236,382.942481;91.272250,423.911822;115.914300,541.330639;117.950495,541.295504;93.294066,423.808172;84.122749,380.107053;43.896028,188.427627;45.922815,188.347666;85.571262,377.271624;95.315882,423.704521;119.986690,541.260369;122.022885,541.225234;97.337698,423.600871;87.019774,374.436195;47.949603,188.267705;49.976390,188.187744;88.468287,371.600767;99.359514,423.497221;124.059080,541.190099;126.095275,541.154964;101.381330,423.393570;89.916799,368.765338;52.003178,188.107783;54.029966,188.027822;91.365312,365.929910;103.403146,423.289920;128.131470,541.119829;130.167665,541.084694;105.424962,423.186269;92.813824,363.094481;56.056753,187.947861;58.083541,187.867901;94.262337,360.259052;107.446778,423.082619;132.203860,541.049559;134.240055,541.014424;109.468594,422.978968;95.710850,357.423624;60.110329,187.787940;62.137116,187.707979;97.159362,354.588195;111.490410,422.875318;136.276250,540.979289;138.312445,540.944154;113.512226,422.771668;98.607875,351.752767;64.163904,187.628018;66.190691,187.548057;100.056387,348.917338;115.534042,422.668017;140.348640,540.909019;142.384835,540.873884;117.555858,422.564367;101.504900,346.081910;68.217479,187.468096;70.244267,187.388135;102.953412,343.246481;119.577674,422.460716;144.421030,540.838749;146.457225,540.803614;121.599490,422.357066;104.401925,340.411052;72.271054,187.308175;74.297842,187.228214;105.850437,337.575624;123.621306,422.253415;148.493420,540.768479;150.529615,540.733344;125.643122,422.149765;107.298950,334.740195;76.324630,187.148253;78.351417,187.068292;108.747463,331.904767;127.664938,422.046115;152.565810,540.698209;154.602005,540.663074;129.686754,421.942464;110.195975,329.069338;80.378205,186.988331;82.404993,186.908370;111.644488,326.233909;131.708570,421.838814;156.638200,540.627939;158.674395,540.592804;133.730386,421.735163;113.093000,323.398481;84.431780,186.828409;86.458568,186.748449;114.541513,320.563052;135.752203,421.631513;160.710590,540.557669;162.746785,540.522534;137.774019,421.527862;115.990025,317.727624;88.485355,186.668488;90.512143,186.588527;117.438538,314.892195;139.795835,421.424212;164.782980,540.487399;166.819175,540.452264;141.817651,421.320562;118.887051,312.056767;92.538931,186.508566;94.565718,186.428605;120.335563,309.221338;143.839467,421.216911;168.855370,540.417129;170.891565,540.381994;145.861283,421.113261;121.784076,306.385909;96.592506,186.348644;98.619294,186.268683;123.232588,303.550481;147.883099,421.009610;172.927760,540.346859;174.963955,540.311724;149.904915,420.905960;124.681101,300.715052;100.646081,186.188723;102.672869,186.108762;126.129613,297.879624;151.926731,420.802309;177.000150,540.276589;179.036345,540.241454;153.948547,420.698659;127.578126,295.044195;104.699657,186.028801;106.726444,185.948840;129.026639,292.208767;155.970363,420.595009;181.072540,540.206319;183.108735,540.171184;157.992179,420.491358;130.475151,289.373338;108.753232,185.868879;110.780019,185.788918;131.923664,286.537909;160.013995,420.387708;185.144930,540.136049;187.181125,540.100914;162.035811,420.284057;133.372176,283.702481;112.806807,185.708957;114.833595,185.628997;134.820689,280.867052;164.057627,420.180407;189.217320,540.065779;191.253515,540.030644;166.079443,420.076756;136.269201,278.031624;116.860382,185.549036;118.887170,185.469075;137.717714,275.196195;168.101259,419.973106;193.289710,539.995509;195.325905,539.960374;170.123075,419.869456;139.166227,272.360766;120.913958,185.389114;122.940745,185.309153;140.614739,269.525338;172.144891,419.765805;197.362100,539.925239;199.398295,539.890104;174.166707,419.662155;142.063252,266.689909;124.967533,185.229192;126.994320,185.149231;143.511764,263.854481;176.188523,419.558504;201.434490,539.854969;203.470685,539.819834;178.210339,419.454854;144.960277,261.019052;129.021108,185.069271;131.047896,184.989310;146.408789,258.183624;180.232155,419.351203;205.506880,539.784699;207.543075,539.749564;182.253971,419.247553;147.857302,255.348195;133.074683,184.909349;135.101471,184.829388;149.305815,252.512766;184.275787,419.143903;209.579270,539.714428;211.615465,539.679293;186.297603,419.040252;150.754327,249.677338;137.128259,184.749427;139.155046,184.669466;152.202840,246.841909;188.319419,418.936602;213.651660,539.644158;215.687855,539.609023;190.341235,418.832951;153.651352,244.006481;141.181834,184.589505;143.208622,184.509545;155.099865,241.171052;192.363051,418.729301;217.724050,539.573888;219.760245,539.538753;194.384867,418.625650;156.548377,238.335624;145.235409,184.429584;147.262197,184.349623;157.996890,235.500195;196.406683,418.522000;221.796439,539.503618;223.832634,539.468483;198.428499,418.418350;159.445403,232.664766;149.288984,184.269662;151.315772,184.189701;160.893915,229.829338;200.450316,418.314699;225.868829,539.433348;227.905024,539.398213;202.472132,418.211049;162.342428,226.993909;153.342560,184.109740;155.369347,184.029779;163.790940,224.158481;204.493948,418.107398;229.941219,539.363078;231.977414,539.327943;206.515764,418.003748;165.239453,221.323052;157.396135,183.949818;159.422923,183.869858;166.687965,218.487623;208.537580,417.900097;234.013609,539.292808;234.917706,533.863247;210.559396,417.796447;168.136478,215.652195;161.449710,183.789897;163.476498,183.709936;169.584991,212.816766;212.581212,417.692797;235.080431,524.901070;235.243156,515.938894;214.603028,417.589146;171.033503,209.981338;165.503286,183.629975;167.530073,183.550014;172.482016,207.145909;216.624844,417.485496;235.405881,506.976717;235.568606,498.014540;218.646660,417.381845;173.930528,204.310481;169.556861,183.470053;171.583648,183.390092;175.379041,201.475052;220.668476,417.278195;235.731331,489.052363;235.894056,480.090186;222.690292,417.174544;176.827553,198.639623;173.610436,183.310132;175.637224,183.230171;178.276066,195.804195;224.712108,417.070894;236.056781,471.128009;236.219507,462.165832;226.733924,416.967244;179.724578,192.968766;177.664011,183.150210;179.690799,183.070249;181.173091,190.133338;228.755740,416.863593;236.382232,453.203655;236.544957,444.241478;230.777556,416.759943;182.621604,187.297909;181.717587,182.990288;183.744374,182.910327;184.070116,184.462480;232.799372,416.656292;236.707682,435.279301;236.870407,426.317125;234.821188,416.552642
+LAND1.plannedPath=353.646421,-330.235669;86.219211,-289.790692;-57.399120,-476.043693;293.049800,-559.155132;353.646421,-330.235669;353.131597,-332.180552;84.822383,-291.602183;83.425556,-293.413674;352.616772,-334.125435;352.101948,-336.070317;82.028728,-295.225165;80.631901,-297.036656;351.587124,-338.015200;351.072299,-339.960083;79.235073,-298.848147;77.838246,-300.659638;350.557475,-341.904966;350.042650,-343.849848;76.441418,-302.471129;75.044591,-304.282620;349.527826,-345.794731;349.013002,-347.739614;73.647763,-306.094111;72.250936,-307.905602;348.498177,-349.684497;347.983353,-351.629379;70.854109,-309.717093;69.457281,-311.528584;347.468528,-353.574262;346.953704,-355.519145;68.060454,-313.340075;66.663626,-315.151566;346.438880,-357.464028;345.924055,-359.408910;65.266799,-316.963057;63.869971,-318.774548;345.409231,-361.353793;344.894406,-363.298676;62.473144,-320.586039;61.076316,-322.397529;344.379582,-365.243559;343.864758,-367.188441;59.679489,-324.209020;58.282661,-326.020511;343.349933,-369.133324;342.835109,-371.078207;56.885834,-327.832002;55.489006,-329.643493;342.320284,-373.023090;341.805460,-374.967972;54.092179,-331.454984;52.695351,-333.266475;341.290636,-376.912855;340.775811,-378.857738;51.298524,-335.077966;49.901697,-336.889457;340.260987,-380.802621;339.746163,-382.747503;48.504869,-338.700948;47.108042,-340.512439;339.231338,-384.692386;338.716514,-386.637269;45.711214,-342.323930;44.314387,-344.135421;338.201689,-388.582152;337.686865,-390.527034;42.917559,-345.946912;41.520732,-347.758403;337.172041,-392.471917;336.657216,-394.416800;40.123904,-349.569894;38.727077,-351.381385;336.142392,-396.361683;335.627567,-398.306565;37.330249,-353.192876;35.933422,-355.004367;335.112743,-400.251448;334.597919,-402.196331;34.536594,-356.815858;33.139767,-358.627349;334.083094,-404.141214;333.568270,-406.086096;31.742939,-360.438840;30.346112,-362.250331;333.053445,-408.030979;332.538621,-409.975862;28.949285,-364.061822;27.552457,-365.873313;332.023797,-411.920745;331.508972,-413.865627;26.155630,-367.684803;24.758802,-369.496294;330.994148,-415.810510;330.479324,-417.755393;23.361975,-371.307785;21.965147,-373.119276;329.964499,-419.700276;329.449675,-421.645158;20.568320,-374.930767;19.171492,-376.742258;328.934850,-423.590041;328.420026,-425.534924;17.774665,-378.553749;16.377837,-380.365240;327.905202,-427.479807;327.390377,-429.424689;14.981010,-382.176731;13.584182,-383.988222;326.875553,-431.369572;326.360728,-433.314455;12.187355,-385.799713;10.790527,-387.611204;325.845904,-435.259338;325.331080,-437.204220;9.393700,-389.422695;7.996873,-391.234186;324.816255,-439.149103;324.301431,-441.093986;6.600045,-393.045677;5.203218,-394.857168;323.786606,-443.038869;323.271782,-444.983751;3.806390,-396.668659;2.409563,-398.480150;322.756958,-446.928634;322.242133,-448.873517;1.012735,-400.291641;-0.384092,-402.103132;321.727309,-450.818399;321.212484,-452.763282;-1.780920,-403.914623;-3.177747,-405.726114;320.697660,-454.708165;320.182836,-456.653048;-4.574575,-407.537605;-5.971402,-409.349096;319.668011,-458.597930;319.153187,-460.542813;-7.368230,-411.160586;-8.765057,-412.972077;318.638363,-462.487696;318.123538,-464.432579;-10.161885,-414.783568;-11.558712,-416.595059;317.608714,-466.377461;317.093889,-468.322344;-12.955539,-418.406550;-14.352367,-420.218041;316.579065,-470.267227;316.064241,-472.212110;-15.749194,-422.029532;-17.146022,-423.841023;315.549416,-474.156992;315.034592,-476.101875;-18.542849,-425.652514;-19.939677,-427.464005;314.519767,-478.046758;314.004943,-479.991641;-21.336504,-429.275496;-22.733332,-431.086987;313.490119,-481.936523;312.975294,-483.881406;-24.130159,-432.898478;-25.526987,-434.709969;312.460470,-485.826289;311.945645,-487.771172;-26.923814,-436.521460;-28.320642,-438.332951;311.430821,-489.716054;310.915997,-491.660937;-29.717469,-440.144442;-31.114297,-441.955933;310.401172,-493.605820;309.886348,-495.550703;-32.511124,-443.767424;-33.907951,-445.578915;309.371523,-497.495585;308.856699,-499.440468;-35.304779,-447.390406;-36.701606,-449.201897;308.341875,-501.385351;307.827050,-503.330234;-38.098434,-451.013388;-39.495261,-452.824879;307.312226,-505.275116;306.797402,-507.219999;-40.892089,-454.636370;-42.288916,-456.447860;306.282577,-509.164882;305.767753,-511.109765;-43.685744,-458.259351;-45.082571,-460.070842;305.252928,-513.054647;304.738104,-514.999530;-46.479399,-461.882333;-47.876226,-463.693824;304.223280,-516.944413;303.708455,-518.889296;-49.273054,-465.505315;-50.669881,-467.316806;303.193631,-520.834178;302.678806,-522.779061;-52.066709,-469.128297;-53.463536,-470.939788;302.163982,-524.723944;301.649158,-526.668827;-54.860363,-472.751279;-56.257191,-474.562770;301.134333,-528.613709;300.619509,-530.558592;-53.103034,-477.062540;-29.560792,-482.645749;300.104684,-532.503475;299.589860,-534.448358;-6.018549,-488.228958;17.523693,-493.812168;299.075036,-536.393240;298.560211,-538.338123;41.065935,-499.395377;64.608178,-504.978586;298.045387,-540.283006;297.530562,-542.227889;88.150420,-510.561795;111.692662,-516.145005;297.015738,-544.172771;296.500914,-546.117654;135.234905,-521.728214;158.777147,-527.311423;295.986089,-548.062537;295.471265,-550.007420;182.319389,-532.894632;205.861631,-538.477841;294.956441,-551.952302;294.441616,-553.897185;229.403874,-544.061051;252.946116,-549.644260;293.926792,-555.842068;293.411967,-557.786951;276.488358,-555.227469
 LAND1.returnPathCoordinates=-1
 LAND1.returnPathRawCoordinates=-1
 LAND1.returnPointCoordinates=-1
-LAND1.updateTime=2025-12-23 18\:41\:03
+LAND1.updateTime=2025-12-23 19\:10\:14
 LAND1.userId=-1
diff --git a/set.properties b/set.properties
index a603295..b4f0f82 100644
--- a/set.properties
+++ b/set.properties
@@ -1,5 +1,5 @@
-#Mower Configuration Properties - Updated
-#Tue Dec 23 19:08:18 CST 2025
+#Current work land selection updated
+#Wed Dec 24 16:28:00 CST 2025
 appVersion=-1
 boundaryLengthVisible=false
 currentWorkLandNumber=LAND1
@@ -8,12 +8,12 @@
 handheldMarkerId=1872
 idleTrailDurationSeconds=60
 manualBoundaryDrawingMode=false
-mapScale=4.08
+mapScale=0.78
 measurementModeEnabled=false
 mowerId=860
 serialAutoConnect=true
 serialBaudRate=115200
 serialPortName=COM15
 simCardNumber=-1
-viewCenterX=-14.44
-viewCenterY=-332.04
+viewCenterX=-148.00
+viewCenterY=424.51
diff --git a/src/bianjie/BoundaryLengthDrawer.java b/src/bianjie/BoundaryLengthDrawer.java
index eca19e4..0d70d42 100644
--- a/src/bianjie/BoundaryLengthDrawer.java
+++ b/src/bianjie/BoundaryLengthDrawer.java
@@ -143,3 +143,5 @@
 
 
 
+
+
diff --git a/src/bianjie/shudongdraw.java b/src/bianjie/shudongdraw.java
index 0ff0486..cf4105f 100644
--- a/src/bianjie/shudongdraw.java
+++ b/src/bianjie/shudongdraw.java
@@ -205,3 +205,5 @@
 
 
 
+
+
diff --git a/src/denglu/Denglu.java b/src/denglu/Denglu.java
index 9db2124..d1af97c 100644
--- a/src/denglu/Denglu.java
+++ b/src/denglu/Denglu.java
@@ -3,6 +3,11 @@
 import homein.WenJianSuo;
 import ui.UIConfig;
 import zhuye.Shouye;
+import gecaoji.Device;
+import chuankou.SerialPortNativeLoader;
+import set.Setsys;
+import udpdell.UDPServer;
+import user.Usrdell;
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
@@ -151,11 +156,17 @@
         // 涓昏〃鍗曞尯鍩�
         JPanel formPanel = createFormPanel();
         
+        // 鍖呰鍦ㄦ粴鍔ㄧ獥鏍间腑锛屼互闃插唴瀹规樉绀轰笉鍏�
+        JScrollPane scrollPane = new JScrollPane(formPanel);
+        scrollPane.setBorder(null);
+        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+        scrollPane.getVerticalScrollBar().setUnitIncrement(16);
+        
         // 搴曢儴搴旂敤淇℃伅
         JPanel appInfoPanel = createAppInfoPanel();
         
         mainPanel.add(topPanel, BorderLayout.NORTH);
-        mainPanel.add(formPanel, BorderLayout.CENTER);
+        mainPanel.add(scrollPane, BorderLayout.CENTER);
         mainPanel.add(appInfoPanel, BorderLayout.SOUTH);
         
         add(mainPanel);
@@ -430,10 +441,17 @@
             usernameField.setText("");
         }
         
-        // 濡傛灉瀵嗙爜涓�-1锛屾竻绌哄瘑鐮佹
-        String savedPassword = UserChuShiHua.getProperty("password");
-        if (savedPassword != null && savedPassword.equals("-1")) {
-            passwordField.setText("");
+        // 鍔犺浇璁颁綇鎴戠姸鎬�
+        String rememberPwd = UserChuShiHua.getProperty("rememberPassword");
+        boolean isRemember = "1".equals(rememberPwd);
+        rememberMe.setSelected(isRemember);
+
+        // 濡傛灉璁颁綇鎴戣閫変腑锛屽~鍏呭瘑鐮�
+        if (isRemember) {
+             String savedPassword = UserChuShiHua.getProperty("password");
+             if (savedPassword != null && !savedPassword.equals("-1")) {
+                 passwordField.setText(savedPassword);
+             }
         }
     }
 
@@ -473,20 +491,18 @@
         
         // 楠岃瘉鐢ㄦ埛鍚嶅拰瀵嗙爜
         if (validateLogin(username, password)) {
-            JOptionPane.showMessageDialog(this, 
-                "鐧诲綍鎴愬姛锛�", 
-                "鎴愬姛", 
-                JOptionPane.INFORMATION_MESSAGE);
-            
             // 鏇存柊鏈�鍚庣櫥褰曟椂闂�
             UserChuShiHua.updateProperty("lastLoginTime", String.valueOf(System.currentTimeMillis()));
             
-            // 濡傛灉璁颁綇鎴戣閫変腑锛屼繚瀛樼敤鎴峰悕
+            // 淇濆瓨璁颁綇鎴戠姸鎬�
             if (rememberMe.isSelected()) {
+                UserChuShiHua.updateProperty("rememberPassword", "1");
                 UserChuShiHua.updateProperty("userName", username);
+            } else {
+                UserChuShiHua.updateProperty("rememberPassword", "0");
             }
             
-            // 杩欓噷鍙互娣诲姞璺宠浆鍒颁富鐣岄潰鐨勪唬鐮�
+            // 鍏抽棴鐧诲綍绐楀彛骞舵墦寮�棣栭〉
             openMainApplication();
             
         } else {
@@ -522,10 +538,10 @@
             Shouye homePanel = new Shouye();
             mainFrame.setContentPane(homePanel);
 
-            mainFrame.pack();
-            int targetWidth = Math.max(mainFrame.getWidth(), 480);
-            int targetHeight = Math.max(mainFrame.getHeight(), 800);
-            mainFrame.setSize(targetWidth, targetHeight);
+            // 璁剧疆涓庣櫥褰曢〉闈㈢浉鍚岀殑灏哄
+            mainFrame.setSize(UIConfig.DIALOG_WIDTH, UIConfig.DIALOG_HEIGHT);
+            mainFrame.setMinimumSize(new Dimension(UIConfig.DIALOG_WIDTH, UIConfig.DIALOG_HEIGHT));
+            mainFrame.setResizable(false);
             mainFrame.setLocationRelativeTo(null);
             mainFrame.setVisible(true);
 
@@ -540,5 +556,63 @@
         RegistrationFrame registerFrame = new RegistrationFrame(this, currentLanguageCode);
         registerFrame.setVisible(true);
     }
+    
+    /**
+     * 绋嬪簭鍏ュ彛鐐�
+     * 闆嗘垚Homein绫荤殑鍒濆鍖栭�昏緫
+     */
+    public static void main(String[] args) {
+        // 妫�鏌ョ▼搴忔槸鍚﹀凡缁忚繍琛�
+        if (WenJianSuo.isAlreadyRunning()) {
+            JOptionPane.showMessageDialog(null, 
+                "绋嬪簭宸茬粡鍦ㄨ繍琛屼腑锛乗n涓嶈兘鍚屾椂鎵撳紑澶氫釜瀹炰緥銆�", 
+                "璀﹀憡", 
+                JOptionPane.WARNING_MESSAGE);
+            System.exit(0);
+            return;
+        }
+        
+        // 娣诲姞鍏抽棴閽╁瓙锛岀‘淇濈▼搴忛��鍑烘椂閲婃斁閿�
+        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+            WenJianSuo.releaseLock();
+        }));
+
+        try {
+            SerialPortNativeLoader.ensureLibraryPresent();
+            // 鍒濆鍖栨暟鎹�
+            UserChuShiHua.initialize();
+            Usrdell.initialize(); // 鍒濆鍖栫敤鎴峰睘鎬�
+
+            Setsys setsys = new Setsys();
+            setsys.initializeFromProperties();
+            Device.initializeActiveDevice(setsys.getMowerId());
+
+            UDPServer.startAsync();//鍚姩鏁版嵁鎺ユ敹绾跨▼
+            
+            // 鏄剧ず鍒濆鏁版嵁
+            System.out.println("鍒濆鐢ㄦ埛鍚�: " + UserChuShiHua.getProperty("userName"));
+            System.out.println("鍒濆瀵嗙爜: " + UserChuShiHua.getProperty("password"));
+            
+            // 鍚姩鐧诲綍鐣岄潰
+            EventQueue.invokeLater(() -> {
+                try {
+                    new Denglu().setVisible(true);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    JOptionPane.showMessageDialog(null, 
+                        "鐧诲綍鐣岄潰鍚姩澶辫触: " + e.getMessage(), 
+                        "閿欒", 
+                        JOptionPane.ERROR_MESSAGE);
+                }
+            });
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            JOptionPane.showMessageDialog(null, 
+                "绋嬪簭鍚姩澶辫触: " + e.getMessage(), 
+                "閿欒", 
+                JOptionPane.ERROR_MESSAGE);
+        }
+    }
    
 }
\ No newline at end of file
diff --git a/src/homein/Homein.java b/src/homein/Homein.java
index acd24f6..c7dd7ef 100644
--- a/src/homein/Homein.java
+++ b/src/homein/Homein.java
@@ -1,72 +1,11 @@
 package homein;
-
-import denglu.UserChuShiHua;
-import gecaoji.Device;
-import chuankou.SerialPortAutoConnector;
-import chuankou.SerialPortNativeLoader;
-import set.Setsys;
-import udpdell.UDPServer;
 import denglu.Denglu;
-import java.awt.EventQueue;
-import javax.swing.JOptionPane;
-
 public class Homein {
+    /**
+     * 绋嬪簭鍏ュ彛鐐� - 宸茶縼绉诲埌Denglu绫�
+     * 淇濈暀姝ゆ柟娉曚互淇濇寔鍚戝悗鍏煎鎬э紝瀹為檯璋冪敤Denglu.main
+     */
     public static void main(String[] args) {
-        // 妫�鏌ョ▼搴忔槸鍚﹀凡缁忚繍琛�
-        if (WenJianSuo.isAlreadyRunning()) {
-            JOptionPane.showMessageDialog(null, 
-                "绋嬪簭宸茬粡鍦ㄨ繍琛屼腑锛乗n涓嶈兘鍚屾椂鎵撳紑澶氫釜瀹炰緥銆�", 
-                "璀﹀憡", 
-                JOptionPane.WARNING_MESSAGE);
-            System.exit(0);
-            return;
-        }
-        
-        // 娣诲姞鍏抽棴閽╁瓙锛岀‘淇濈▼搴忛��鍑烘椂閲婃斁閿�
-        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
-            WenJianSuo.releaseLock();
-        }));
-
-        try {
-            SerialPortNativeLoader.ensureLibraryPresent();
-            // 鍒濆鍖栨暟鎹�
-            UserChuShiHua.initialize();
-
-            Setsys setsys = new Setsys();
-            setsys.initializeFromProperties();
-            Device.initializeActiveDevice(setsys.getMowerId());
-
-            UDPServer.startAsync();//鍚姩鏁版嵁鎺ユ敹绾跨▼
-//            SerialPortAutoConnector.initialize();//鍚姩涓插彛鑷姩杩炴帴
-            
-            // 鏄剧ず鍒濆鏁版嵁
-            System.out.println("鍒濆鐢ㄦ埛鍚�: " + UserChuShiHua.getProperty("userName"));
-            System.out.println("鍒濆瀵嗙爜: " + UserChuShiHua.getProperty("password"));
-            
-            // 鍚姩鐧诲綍鐣岄潰
-            startLoginInterface();
-            
-        } catch (Exception e) {
-            e.printStackTrace();
-            JOptionPane.showMessageDialog(null, 
-                "绋嬪簭鍚姩澶辫触: " + e.getMessage(), 
-                "閿欒", 
-                JOptionPane.ERROR_MESSAGE);
-        }
-    }
-    
-    private static void startLoginInterface() {
-        // 鍦‥DT涓惎鍔ㄧ櫥褰曠晫闈�
-        EventQueue.invokeLater(() -> {
-            try {
-                new Denglu().setVisible(true);
-            } catch (Exception e) {
-                e.printStackTrace();
-                JOptionPane.showMessageDialog(null, 
-                    "鐧诲綍鐣岄潰鍚姩澶辫触: " + e.getMessage(), 
-                    "閿欒", 
-                    JOptionPane.ERROR_MESSAGE);
-            }
-        });
+        Denglu.main(args);
     }
 }
\ No newline at end of file
diff --git a/src/lujing/ObstaclePathPlanner.java b/src/lujing/ObstaclePathPlanner.java
index 7ed61a9..bc93f34 100644
--- a/src/lujing/ObstaclePathPlanner.java
+++ b/src/lujing/ObstaclePathPlanner.java
@@ -542,3 +542,5 @@
 
 
 
+
+
diff --git a/src/set/Sets.java b/src/set/Sets.java
index ab09098..64377d9 100644
--- a/src/set/Sets.java
+++ b/src/set/Sets.java
@@ -97,15 +97,22 @@
         // 鍒涘缓璁剧疆椤归潰鏉匡紙鍦嗚鐧借壊闈㈡澘锛�
         JPanel settingsPanel = createSettingsPanel();
         
+        // 鍒涘缓婊氬姩闈㈡澘
+        JScrollPane scrollPane = new JScrollPane(settingsPanel);
+        scrollPane.setBorder(null); // 鍘婚櫎杈规
+        scrollPane.getViewport().setBackground(BACKGROUND_COLOR); // 璁剧疆瑙嗗彛鑳屾櫙鑹蹭笌涓昏儗鏅竴鑷�
+        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); // 绂佹姘村钩婊氬姩
+        scrollPane.getVerticalScrollBar().setUnitIncrement(16); // 澧炲姞婊氬姩閫熷害
+        
         // 娣诲姞缁勪欢鍒颁富闈㈡澘
-        mainPanel.add(settingsPanel, BorderLayout.CENTER);
+        mainPanel.add(scrollPane, BorderLayout.CENTER);
         
         add(mainPanel, BorderLayout.CENTER);
     }
     
     private JPanel createSettingsPanel() {
         // 鍒涘缓鍦嗚鐧借壊闈㈡澘瀹瑰櫒
-        JPanel container = new JPanel() {
+        JPanel container = new ScrollablePanel() {
             @Override
             protected void paintComponent(Graphics g) {
                 Graphics2D g2d = (Graphics2D) g.create();
@@ -1756,6 +1763,38 @@
         timer.start();
     }
     
+    /**
+     * 鍙粴鍔ㄧ殑闈㈡澘锛屽己鍒跺搴﹂�傚簲瑙嗗彛
+     */
+    private class ScrollablePanel extends JPanel implements Scrollable {
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        public Dimension getPreferredScrollableViewportSize() {
+            return getPreferredSize();
+        }
+
+        @Override
+        public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
+            return 16;
+        }
+
+        @Override
+        public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
+            return 16;
+        }
+
+        @Override
+        public boolean getScrollableTracksViewportWidth() {
+            return true; // 寮哄埗瀹藉害閫傚簲瑙嗗彛锛岄槻姝㈡按骞虫粴鍔�
+        }
+
+        @Override
+        public boolean getScrollableTracksViewportHeight() {
+            return false;
+        }
+    }
+    
     @Override
     public void setVisible(boolean visible) {
         if (visible) {
diff --git a/src/udpdell/UDPServer.java b/src/udpdell/UDPServer.java
index 65c9ffc..e63131c 100644
--- a/src/udpdell/UDPServer.java
+++ b/src/udpdell/UDPServer.java
@@ -1,5 +1,4 @@
 package udpdell;
-
 import java.io.IOException;
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
@@ -7,11 +6,8 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicInteger;
-
-import Mqttmessage.Client;
 import gecaoji.Device;
 import zhuye.Coordinate;
-
 import publicway.Gpstoxuzuobiao;
 
 public class UDPServer {
@@ -37,7 +33,6 @@
 		thread.setDaemon(false); // 淇濇寔 JVM 鎸佺画瀛樻椿
 		thread.start();
 		serverThread = thread;
-//		Client.test();
 		return thread;
 	}
 
diff --git a/src/user/Usr.java b/src/user/Usr.java
new file mode 100644
index 0000000..b9303e1
--- /dev/null
+++ b/src/user/Usr.java
@@ -0,0 +1,171 @@
+package user;
+
+/**
+ * 鐢ㄦ埛淇℃伅绫�
+ * 鍖呭惈user.properties鏂囦欢涓殑鎵�鏈夊睘鎬�
+ */
+public class Usr {
+    // 鐢ㄦ埛閭
+    private String email;
+    // 璇█璁剧疆
+    private String language;
+    // 鏈�鍚庣櫥褰曟椂闂�
+    private String lastLoginTime;
+    // 瀵嗙爜
+    private String password;
+    // 娉ㄥ唽鏃堕棿
+    private String registrationTime;
+    // 鐢ㄦ埛鐘舵��
+    private String status;
+    // 鐢ㄦ埛ID
+    private String userId;
+    // 鐢ㄦ埛鍚�
+    private String userName;
+    // 鏄惁璁颁綇鐧诲綍瀵嗙爜锛�1琛ㄧず璁颁綇锛�0琛ㄧず涓嶈浣�
+    private String rememberPassword;
+
+    /**
+     * 鑾峰彇鐢ㄦ埛閭
+     * @return 鐢ㄦ埛閭
+     */
+    public String getEmail() {
+        return email;
+    }
+
+    /**
+     * 璁剧疆鐢ㄦ埛閭
+     * @param email 鐢ㄦ埛閭
+     */
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    /**
+     * 鑾峰彇璇█璁剧疆
+     * @return 璇█璁剧疆
+     */
+    public String getLanguage() {
+        return language;
+    }
+
+    /**
+     * 璁剧疆璇█璁剧疆
+     * @param language 璇█璁剧疆
+     */
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    /**
+     * 鑾峰彇鏈�鍚庣櫥褰曟椂闂�
+     * @return 鏈�鍚庣櫥褰曟椂闂�
+     */
+    public String getLastLoginTime() {
+        return lastLoginTime;
+    }
+
+    /**
+     * 璁剧疆鏈�鍚庣櫥褰曟椂闂�
+     * @param lastLoginTime 鏈�鍚庣櫥褰曟椂闂�
+     */
+    public void setLastLoginTime(String lastLoginTime) {
+        this.lastLoginTime = lastLoginTime;
+    }
+
+    /**
+     * 鑾峰彇瀵嗙爜
+     * @return 瀵嗙爜
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    /**
+     * 璁剧疆瀵嗙爜
+     * @param password 瀵嗙爜
+     */
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    /**
+     * 鑾峰彇娉ㄥ唽鏃堕棿
+     * @return 娉ㄥ唽鏃堕棿
+     */
+    public String getRegistrationTime() {
+        return registrationTime;
+    }
+
+    /**
+     * 璁剧疆娉ㄥ唽鏃堕棿
+     * @param registrationTime 娉ㄥ唽鏃堕棿
+     */
+    public void setRegistrationTime(String registrationTime) {
+        this.registrationTime = registrationTime;
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鐘舵��
+     * @return 鐢ㄦ埛鐘舵��
+     */
+    public String getStatus() {
+        return status;
+    }
+
+    /**
+     * 璁剧疆鐢ㄦ埛鐘舵��
+     * @param status 鐢ㄦ埛鐘舵��
+     */
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛ID
+     * @return 鐢ㄦ埛ID
+     */
+    public String getUserId() {
+        return userId;
+    }
+
+    /**
+     * 璁剧疆鐢ㄦ埛ID
+     * @param userId 鐢ㄦ埛ID
+     */
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鍚�
+     * @return 鐢ㄦ埛鍚�
+     */
+    public String getUserName() {
+        return userName;
+    }
+
+    /**
+     * 璁剧疆鐢ㄦ埛鍚�
+     * @param userName 鐢ㄦ埛鍚�
+     */
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    /**
+     * 鑾峰彇鏄惁璁颁綇鐧诲綍瀵嗙爜
+     * @return 鏄惁璁颁綇鐧诲綍瀵嗙爜锛�1琛ㄧず璁颁綇锛�0琛ㄧず涓嶈浣忥級
+     */
+    public String getRememberPassword() {
+        return rememberPassword;
+    }
+
+    /**
+     * 璁剧疆鏄惁璁颁綇鐧诲綍瀵嗙爜
+     * @param rememberPassword 鏄惁璁颁綇鐧诲綍瀵嗙爜锛�1琛ㄧず璁颁綇锛�0琛ㄧず涓嶈浣忥級
+     */
+    public void setRememberPassword(String rememberPassword) {
+        this.rememberPassword = rememberPassword;
+    }
+}
+
diff --git a/src/user/Usrdell.java b/src/user/Usrdell.java
new file mode 100644
index 0000000..7133439
--- /dev/null
+++ b/src/user/Usrdell.java
@@ -0,0 +1,314 @@
+package user;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ * 鐢ㄦ埛灞炴�х鐞嗙被
+ * 璐熻矗鍒濆鍖栧姞杞絬ser.properties涓殑灞炴�у�硷紝骞舵彁渚涜幏鍙栧拰淇敼鍔熻兘
+ */
+public class Usrdell {
+    private static final String PROPERTIES_FILE = "user.properties";
+    private static Properties userProperties;
+    
+    // 灞炴�ч敭鍚嶅父閲�
+    private static final String KEY_EMAIL = "email";
+    private static final String KEY_LANGUAGE = "language";
+    private static final String KEY_LAST_LOGIN_TIME = "lastLoginTime";
+    private static final String KEY_PASSWORD = "password";
+    private static final String KEY_REGISTRATION_TIME = "registrationTime";
+    private static final String KEY_STATUS = "status";
+    private static final String KEY_USER_ID = "userId";
+    private static final String KEY_USER_NAME = "userName";
+    private static final String KEY_REMEMBER_PASSWORD = "rememberPassword";
+
+    /**
+     * 鍒濆鍖栨柟娉曪細浠巙ser.properties鏂囦欢鍔犺浇鎵�鏈夊睘鎬у�煎埌鍐呭瓨
+     */
+    public static void initialize() {
+        synchronized (Usrdell.class) {
+            userProperties = new Properties();
+            try (FileInputStream input = new FileInputStream(PROPERTIES_FILE)) {
+                userProperties.load(input);
+                System.out.println("鐢ㄦ埛灞炴�у垵濮嬪寲鎴愬姛锛�");
+            } catch (IOException e) {
+                System.err.println("鍒濆鍖栧け璐ワ紝鏂囦欢鏈壘鍒版垨璇诲彇閿欒: " + e.getMessage());
+                // 濡傛灉鏂囦欢涓嶅瓨鍦紝鍒涘缓榛樿灞炴��
+                userProperties = new Properties();
+            }
+            
+            // 纭繚rememberPassword灞炴�у瓨鍦紝濡傛灉涓嶅瓨鍦ㄥ垯璁剧疆涓洪粯璁ゅ��"0"
+            if (!userProperties.containsKey(KEY_REMEMBER_PASSWORD)) {
+                userProperties.setProperty(KEY_REMEMBER_PASSWORD, "0");
+                // 淇濆瓨鍒版枃浠�
+                try (FileOutputStream output = new FileOutputStream(PROPERTIES_FILE)) {
+                    userProperties.store(output, "Updated User Properties");
+                } catch (IOException e) {
+                    System.err.println("淇濆瓨榛樿rememberPassword灞炴�уけ璐�: " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    /**
+     * 鍒濆鍖栧苟鑾峰彇鎵�鏈夊睘鎬у�硷紝杩斿洖Usr瀵硅薄
+     * @return 鍖呭惈鎵�鏈夊睘鎬у�肩殑Usr瀵硅薄
+     */
+    public static Usr initializeAndGetAll() {
+        if (userProperties == null) {
+            initialize();
+        }
+        
+        Usr usr = new Usr();
+        usr.setEmail(getProperty(KEY_EMAIL));
+        usr.setLanguage(getProperty(KEY_LANGUAGE));
+        usr.setLastLoginTime(getProperty(KEY_LAST_LOGIN_TIME));
+        usr.setPassword(getProperty(KEY_PASSWORD));
+        usr.setRegistrationTime(getProperty(KEY_REGISTRATION_TIME));
+        usr.setStatus(getProperty(KEY_STATUS));
+        usr.setUserId(getProperty(KEY_USER_ID));
+        usr.setUserName(getProperty(KEY_USER_NAME));
+        usr.setRememberPassword(getProperty(KEY_REMEMBER_PASSWORD));
+        
+        return usr;
+    }
+
+    /**
+     * 鑾峰彇鎸囧畾灞炴�х殑鍊�
+     * @param key 灞炴�ч敭鍚�
+     * @return 灞炴�у�硷紝濡傛灉涓嶅瓨鍦ㄨ繑鍥瀗ull
+     */
+    public static String getProperty(String key) {
+        if (userProperties == null) {
+            initialize();
+        }
+        String value = userProperties.getProperty(key);
+        if (value == null || value.trim().isEmpty() || "-1".equals(value.trim())) {
+            return null;
+        }
+        return value.trim();
+    }
+
+    /**
+     * 鏇存柊灞炴�у�煎苟淇濆瓨鍒版枃浠�
+     * @param key 灞炴�ч敭鍚�
+     * @param value 灞炴�у��
+     */
+    public static void updateProperty(String key, String value) {
+        synchronized (Usrdell.class) {
+            if (userProperties == null) {
+                initialize();
+            }
+            
+            if (value == null || value.trim().isEmpty()) {
+                userProperties.setProperty(key, "-1");
+            } else {
+                userProperties.setProperty(key, value.trim());
+            }
+            
+            try (FileOutputStream output = new FileOutputStream(PROPERTIES_FILE)) {
+                userProperties.store(output, "Updated User Properties");
+            } catch (IOException e) {
+                System.err.println("鏇存柊澶辫触锛屾枃浠跺啓鍏ラ敊璇�: " + e.getMessage());
+            }
+        }
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛閭
+     * @return 鐢ㄦ埛閭
+     */
+    public static String getEmail() {
+        return getProperty(KEY_EMAIL);
+    }
+
+    /**
+     * 璁剧疆鐢ㄦ埛閭
+     * @param email 鐢ㄦ埛閭
+     */
+    public static void setEmail(String email) {
+        updateProperty(KEY_EMAIL, email);
+    }
+
+    /**
+     * 鑾峰彇璇█璁剧疆
+     * @return 璇█璁剧疆
+     */
+    public static String getLanguage() {
+        return getProperty(KEY_LANGUAGE);
+    }
+
+    /**
+     * 璁剧疆璇█璁剧疆
+     * @param language 璇█璁剧疆
+     */
+    public static void setLanguage(String language) {
+        updateProperty(KEY_LANGUAGE, language);
+    }
+
+    /**
+     * 鑾峰彇鏈�鍚庣櫥褰曟椂闂�
+     * @return 鏈�鍚庣櫥褰曟椂闂�
+     */
+    public static String getLastLoginTime() {
+        return getProperty(KEY_LAST_LOGIN_TIME);
+    }
+
+    /**
+     * 璁剧疆鏈�鍚庣櫥褰曟椂闂�
+     * @param lastLoginTime 鏈�鍚庣櫥褰曟椂闂�
+     */
+    public static void setLastLoginTime(String lastLoginTime) {
+        updateProperty(KEY_LAST_LOGIN_TIME, lastLoginTime);
+    }
+
+    /**
+     * 鑾峰彇瀵嗙爜
+     * @return 瀵嗙爜
+     */
+    public static String getPassword() {
+        return getProperty(KEY_PASSWORD);
+    }
+
+    /**
+     * 璁剧疆瀵嗙爜
+     * @param password 瀵嗙爜
+     */
+    public static void setPassword(String password) {
+        updateProperty(KEY_PASSWORD, password);
+    }
+
+    /**
+     * 鑾峰彇娉ㄥ唽鏃堕棿
+     * @return 娉ㄥ唽鏃堕棿
+     */
+    public static String getRegistrationTime() {
+        return getProperty(KEY_REGISTRATION_TIME);
+    }
+
+    /**
+     * 璁剧疆娉ㄥ唽鏃堕棿
+     * @param registrationTime 娉ㄥ唽鏃堕棿
+     */
+    public static void setRegistrationTime(String registrationTime) {
+        updateProperty(KEY_REGISTRATION_TIME, registrationTime);
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鐘舵��
+     * @return 鐢ㄦ埛鐘舵��
+     */
+    public static String getStatus() {
+        return getProperty(KEY_STATUS);
+    }
+
+    /**
+     * 璁剧疆鐢ㄦ埛鐘舵��
+     * @param status 鐢ㄦ埛鐘舵��
+     */
+    public static void setStatus(String status) {
+        updateProperty(KEY_STATUS, status);
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛ID
+     * @return 鐢ㄦ埛ID
+     */
+    public static String getUserId() {
+        return getProperty(KEY_USER_ID);
+    }
+
+    /**
+     * 璁剧疆鐢ㄦ埛ID
+     * @param userId 鐢ㄦ埛ID
+     */
+    public static void setUserId(String userId) {
+        updateProperty(KEY_USER_ID, userId);
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鍚�
+     * @return 鐢ㄦ埛鍚�
+     */
+    public static String getUserName() {
+        return getProperty(KEY_USER_NAME);
+    }
+
+    /**
+     * 璁剧疆鐢ㄦ埛鍚�
+     * @param userName 鐢ㄦ埛鍚�
+     */
+    public static void setUserName(String userName) {
+        updateProperty(KEY_USER_NAME, userName);
+    }
+
+    /**
+     * 鑾峰彇鏄惁璁颁綇鐧诲綍瀵嗙爜
+     * @return 鏄惁璁颁綇鐧诲綍瀵嗙爜锛�1琛ㄧず璁颁綇锛�0琛ㄧず涓嶈浣忥級锛屽鏋滄湭璁剧疆鍒欒繑鍥�"0"
+     */
+    public static String getRememberPassword() {
+        String value = getProperty(KEY_REMEMBER_PASSWORD);
+        return value != null ? value : "0"; // 榛樿杩斿洖"0"琛ㄧず涓嶈浣�
+    }
+
+    /**
+     * 璁剧疆鏄惁璁颁綇鐧诲綍瀵嗙爜
+     * @param rememberPassword 鏄惁璁颁綇鐧诲綍瀵嗙爜锛�1琛ㄧず璁颁綇锛�0琛ㄧず涓嶈浣忥級
+     */
+    public static void setRememberPassword(String rememberPassword) {
+        updateProperty(KEY_REMEMBER_PASSWORD, rememberPassword);
+    }
+
+    /**
+     * 鎵归噺鏇存柊鐢ㄦ埛灞炴��
+     * @param usr 鍖呭惈瑕佹洿鏂板睘鎬у�肩殑Usr瀵硅薄
+     */
+    public static void updateAll(Usr usr) {
+        if (usr == null) {
+            return;
+        }
+        
+        synchronized (Usrdell.class) {
+            if (userProperties == null) {
+                initialize();
+            }
+            
+            if (usr.getEmail() != null) {
+                userProperties.setProperty(KEY_EMAIL, usr.getEmail());
+            }
+            if (usr.getLanguage() != null) {
+                userProperties.setProperty(KEY_LANGUAGE, usr.getLanguage());
+            }
+            if (usr.getLastLoginTime() != null) {
+                userProperties.setProperty(KEY_LAST_LOGIN_TIME, usr.getLastLoginTime());
+            }
+            if (usr.getPassword() != null) {
+                userProperties.setProperty(KEY_PASSWORD, usr.getPassword());
+            }
+            if (usr.getRegistrationTime() != null) {
+                userProperties.setProperty(KEY_REGISTRATION_TIME, usr.getRegistrationTime());
+            }
+            if (usr.getStatus() != null) {
+                userProperties.setProperty(KEY_STATUS, usr.getStatus());
+            }
+            if (usr.getUserId() != null) {
+                userProperties.setProperty(KEY_USER_ID, usr.getUserId());
+            }
+            if (usr.getUserName() != null) {
+                userProperties.setProperty(KEY_USER_NAME, usr.getUserName());
+            }
+            if (usr.getRememberPassword() != null) {
+                userProperties.setProperty(KEY_REMEMBER_PASSWORD, usr.getRememberPassword());
+            }
+            
+            try (FileOutputStream output = new FileOutputStream(PROPERTIES_FILE)) {
+                userProperties.store(output, "Updated User Properties");
+            } catch (IOException e) {
+                System.err.println("鎵归噺鏇存柊澶辫触锛屾枃浠跺啓鍏ラ敊璇�: " + e.getMessage());
+            }
+        }
+    }
+}
+
diff --git a/src/zhuye/Shouye.java b/src/zhuye/Shouye.java
index 8162334..6ec9021 100644
--- a/src/zhuye/Shouye.java
+++ b/src/zhuye/Shouye.java
@@ -4391,17 +4391,4 @@
         visualizationPanel.repaint();
     }
 
-	// 娴嬭瘯鏂规硶
-    public static void main(String[] args) {
-        JFrame frame = new JFrame("AutoMow - 棣栭〉");
-        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-        frame.setSize(400, 800);
-        frame.setLocationRelativeTo(null);
-        
-        Shouye shouye = new Shouye();
-        frame.add(shouye);
-        
-        frame.setVisible(true);
-        UDPServer.startAsync();//鍚姩鏁版嵁鎺ユ敹绾跨▼
-    }
 }
\ No newline at end of file
diff --git a/src/zhuye/celiangmoshi.java b/src/zhuye/celiangmoshi.java
index 892fdd0..92668d8 100644
--- a/src/zhuye/celiangmoshi.java
+++ b/src/zhuye/celiangmoshi.java
@@ -90,3 +90,5 @@
 
 
 
+
+
diff --git a/user.properties b/user.properties
index ca5d233..8750e94 100644
--- a/user.properties
+++ b/user.properties
@@ -1,10 +1,11 @@
 #Updated User Properties
-#Tue Dec 09 17:21:03 CST 2025
+#Wed Dec 24 16:28:00 CST 2025
 email=789
 language=zh
-lastLoginTime=-1
+lastLoginTime=1766564880280
 password=123
 registrationTime=-1
+rememberPassword=1
 status=-1
 userId=-1
 userName=233

--
Gitblit v1.10.0