今天的任务:完成了个人作业中web端和android端的连接
代码如下package com.example.mywork;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

import com.example.mywork.pojo.User;
import com.example.mywork.service.UserService;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class LoginActivity extends AppCompatActivity {
private EditText etUserId, etPassword;
private Button btnLogin, btnGoToRegister;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    etUserId = findViewById(R.id.etUserId);
    etPassword = findViewById(R.id.etPassword);
    btnLogin = findViewById(R.id.btnLogin);
    btnGoToRegister = findViewById(R.id.btnGoToRegister);

    btnLogin.setOnClickListener(v -> loginUser());
    btnGoToRegister.setOnClickListener(v -> {
        Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
        startActivity(intent);
    });
}

private void loginUser() {
    String userId = etUserId.getText().toString();
    String password = etPassword.getText().toString();

    UserService apiService = RetrofitClient.getUserService();
    Call<User> call = apiService.loginUser(userId, password);
    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {
            if (response.isSuccessful()) {
                User user = response.body();
                if (user != null) {
                    String role = user.getUserRole();
                    Toast.makeText(LoginActivity.this, "登录成功,角色: " + role, Toast.LENGTH_SHORT).show();
                    // 根据角色跳转到不同页面
                    Intent intent;
                    switch (role) {
                        case "学生":
                            intent = new Intent(LoginActivity.this, StudentActivity.class);
                            break;
                        case "老师":
                            intent = new Intent(LoginActivity.this, TeacherActivity.class);
                            break;
                        default:
                            intent = new Intent(LoginActivity.this, LoginActivity.class);
                            break;
                    }
                    startActivity(intent);
                } else {
                    Toast.makeText(LoginActivity.this, "用户信息为空", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(LoginActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<User> call, Throwable t) {
            Toast.makeText(LoginActivity.this, "网络错误: " + t.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });
}

}package com.example.mywork;

import android.os.Bundle;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EdgeToEdge.enable(this);
    setContentView(R.layout.activity_main);
    ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
        Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
        v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
        return insets;
    });
}

}package com.example.mywork;

import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.example.mywork.pojo.DailyRecord;
import com.google.gson.Gson;

public class RecordDetailActivity extends AppCompatActivity {
private TextView tvPlanName, tvUserId, tvEstimatedTime, tvRequirementAnalysis, tvDesign, tvCoding, tvWorkload, tvSummary;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_record_detail);

    tvPlanName = findViewById(R.id.tvPlanName);
    tvUserId = findViewById(R.id.tvUserId);
    tvEstimatedTime = findViewById(R.id.tvEstimatedTime);
    tvRequirementAnalysis = findViewById(R.id.tvRequirementAnalysis);
    tvDesign = findViewById(R.id.tvDesign);
    tvCoding = findViewById(R.id.tvCoding);
    tvWorkload = findViewById(R.id.tvWorkload);
    tvSummary = findViewById(R.id.tvSummary);

    // 获取传递的记录数据
    String recordJson = getIntent().getStringExtra("record");
    DailyRecord record = new Gson().fromJson(recordJson, DailyRecord.class);

    // 显示记录详情
    tvPlanName.setText(record.getPlanName());
    tvUserId.setText(record.getUserId());
    tvEstimatedTime.setText(record.getEstimatedTime());
    tvRequirementAnalysis.setText(record.getRequirementAnalysis());
    tvDesign.setText(record.getDesign());
    tvCoding.setText(record.getCoding());
    tvWorkload.setText(record.getWorkload());
    tvSummary.setText(record.getSummary());
}

}package com.example.mywork;

import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

import com.example.mywork.pojo.User;
import com.example.mywork.service.UserService;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class RegisterActivity extends AppCompatActivity {
private EditText etUserId, etUsername, etPhoneNumber, etUserUnit, etPassword;
private Spinner spUserRole;
private Button btnRegister;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);

    etUserId = findViewById(R.id.etUserId);
    etUsername = findViewById(R.id.etUsername);
    etPhoneNumber = findViewById(R.id.etPhoneNumber);
    etUserUnit = findViewById(R.id.etUserUnit);
    spUserRole = findViewById(R.id.spUserRole);
    etPassword = findViewById(R.id.etPassword);
    btnRegister = findViewById(R.id.btnRegister);

    btnRegister.setOnClickListener(v -> registerUser());
}

private void registerUser() {
    String userId = etUserId.getText().toString();
    String username = etUsername.getText().toString();
    String phoneNumber = etPhoneNumber.getText().toString();
    String userUnit = etUserUnit.getText().toString();
    String userRole = spUserRole.getSelectedItem().toString();
    String password = etPassword.getText().toString();

    User user = new User(userId, username, phoneNumber, userUnit, userRole, password);

    UserService apiService = RetrofitClient.getUserService();
    Call<User> call = apiService.registerUser(user);
    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {
            if (response.isSuccessful()) {
                Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
                finish(); // 返回登录界面
            } else {
                Toast.makeText(RegisterActivity.this, "注册失败", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<User> call, Throwable t) {
            Toast.makeText(RegisterActivity.this, "网络错误: " + t.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });
}

}
以上为部分android端代码
遇到的困难:web端没遇到什么问题,android端连接到手机上时因为部分图片分辨率不支持导致手机上无法显示,更改分辨率后可以完成