日报2025423
今日进行个人作业二阶段编程
新增教师分页和教师查询考勤功能
package com.example.dailyreport.ui.auth;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.dailyreport.R;
import com.example.dailyreport.ui.blog.DailySummaryActivity;
import com.example.dailyreport.ui.dailylog.DailyLogActivity;
import com.example.dailyreport.ui.statistics.StatisticsActivity;
import com.example.dailyreport.ui.weeklyplan.WeeklyPlanActivity;
public class Menu extends AppCompatActivity {
private Button btnWeeklyGoal;
private Button btnDailySummary;
private Button btnDailyLog;
private Button btnStatistics;
private Button btnDailySummaryQuery;
// 角色常量
private static final String ROLE_STUDENT = "STUDENT";
private static final String ROLE_TEACHER = "TEACHER";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
// 获取用户ID和角色
String userId = getIntent().getStringExtra("userId");
String role = getIntent().getStringExtra("role");
if (userId == null) {
Toast.makeText(this, "用户ID获取失败", Toast.LENGTH_SHORT).show();
finish();
return;
}
// 初始化按钮
initButtons();
// 根据角色设置按钮可见性
setupButtonsByRole(role);
// 设置按钮点击事件
setupButtonListeners(userId);
}
private void initButtons() {
btnWeeklyGoal = findViewById(R.id.btnWeeklyGoal);
btnDailySummary = findViewById(R.id.btnDailySummary);
btnDailyLog = findViewById(R.id.btnDailyLog);
btnStatistics = findViewById(R.id.btnStatistics);
btnDailySummaryQuery = findViewById(R.id.btnDailySummaryQuery);
}
private void setupButtonsByRole(String role) {
if (ROLE_STUDENT.equals(role)) {
// 学生角色:显示学生可见按钮,隐藏教师可见按钮
btnWeeklyGoal.setVisibility(View.VISIBLE);
btnDailySummary.setVisibility(View.VISIBLE);
btnDailyLog.setVisibility(View.VISIBLE);
btnStatistics.setVisibility(View.GONE);
btnDailySummaryQuery.setVisibility(View.GONE);
} else if (ROLE_TEACHER.equals(role)) {
// 教师角色:隐藏学生可见按钮,显示教师可见按钮
btnWeeklyGoal.setVisibility(View.GONE);
btnDailySummary.setVisibility(View.GONE);
btnDailyLog.setVisibility(View.GONE);
btnStatistics.setVisibility(View.VISIBLE);
btnDailySummaryQuery.setVisibility(View.VISIBLE);
} else {
// 默认情况:显示所有按钮
Toast.makeText(this, "未知角色,显示所有功能", Toast.LENGTH_SHORT).show();
}
}
private void setupButtonListeners(String userId) {
btnWeeklyGoal.setOnClickListener(v -> {
Intent intent = new Intent(Menu.this, WeeklyPlanActivity.class);
intent.putExtra("userId", userId);
startActivity(intent);
});
btnDailySummary.setOnClickListener(v -> {
Intent intent = new Intent(Menu.this, DailySummaryActivity.class);
intent.putExtra("userId", userId);
startActivity(intent);
});
btnDailyLog.setOnClickListener(v -> {
Intent intent = new Intent(Menu.this, DailyLogActivity.class);
intent.putExtra("userId", userId);
startActivity(intent);
});
// 为教师功能按钮添加点击事件
btnStatistics.setOnClickListener(v -> {
Intent intent = new Intent(Menu.this, StatisticsActivity.class);
intent.putExtra("userId", userId);
startActivity(intent);
});
btnDailySummaryQuery.setOnClickListener(v -> {
Intent intent = new Intent(Menu.this, DailySummaryQueryActivity.class);
startActivity(intent);
});
}
}
package com.example.dailyreport.ui.auth;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.dailyreport.R;
import com.example.dailyreport.adapter.UserListAdapter;
import com.example.dailyreport.model.User;
import com.example.dailyreport.network.ApiResponse;
import com.example.dailyreport.network.RetrofitClient;
import com.example.dailyreport.ui.blog.ViewBlogsActivity;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class DailySummaryQueryActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private UserListAdapter adapter;
private List<User> studentList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daily_summary_query);
initViews();
loadStudents();
}
private void initViews() {
recyclerView = findViewById(R.id.rvStudents);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new UserListAdapter(studentList, this::onStudentClick);
recyclerView.setAdapter(adapter);
}
private void onStudentClick(User user) {
// 跳转到查看博客页面,并传递学生ID
Intent intent = new Intent(this, ViewBlogsActivity.class);
intent.putExtra("userId", user.getId());
intent.putExtra("studentName", user.getName()); // 传递学生姓名,用于显示标题
startActivity(intent);
}
private void loadStudents() {
RetrofitClient.getInstance().getApiService()
.getAllStudents()
.enqueue(new Callback<ApiResponse<List<User>>>() {
@Override
public void onResponse(Call<ApiResponse<List<User>>> call,
Response<ApiResponse<List<User>>> response) {
if (response.isSuccessful() && response.body() != null) {
ApiResponse<List<User>> apiResponse = response.body();
if ("200".equals(apiResponse.getCode())) {
studentList.clear();
if (apiResponse.getData() != null) {
studentList.addAll(apiResponse.getData());
}
adapter.notifyDataSetChanged();
} else {
Toast.makeText(DailySummaryQueryActivity.this,
"获取学生列表失败: " + apiResponse.getMsg(), Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(DailySummaryQueryActivity.this,
"服务器响应错误", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ApiResponse<List<User>>> call, Throwable t) {
Toast.makeText(DailySummaryQueryActivity.this,
"网络错误: " + t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
package com.example.dailyreport.ui.dailylog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.dailyreport.R;
import com.example.dailyreport.model.DailyLog;
import com.example.dailyreport.network.ApiResponse;
import com.example.dailyreport.network.RetrofitClient;
import java.text.SimpleDateFormat;
import java.util.Locale;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class DailyLogDetailActivity extends AppCompatActivity {
private String dailyLogId;
private TextView tvDate, tvPlanningTime, tvAnalysis, tvDesignDoc, tvCodingStandard,
tvDesignDetails, tvCode, tvCodeChanges, tvWorkload, tvPostmortem, tvImprovement, tvTotalHours;
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daily_log_detail);
dailyLogId = getIntent().getStringExtra("dailyLogId");
if (dailyLogId == null) {
Toast.makeText(this, "记录ID获取失败", Toast.LENGTH_SHORT).show();
finish();
return;
}
initViews();
loadDailyLogDetail();
}
private void initViews() {
tvDate = findViewById(R.id.tvDate);
tvPlanningTime = findViewById(R.id.tvPlanningTime);
tvAnalysis = findViewById(R.id.tvAnalysis);
tvDesignDoc = findViewById(R.id.tvDesignDoc);
tvCodingStandard = findViewById(R.id.tvCodingStandard);
tvDesignDetails = findViewById(R.id.tvDesignDetails);
tvCode = findViewById(R.id.tvCode);
tvCodeChanges = findViewById(R.id.tvCodeChanges);
tvWorkload = findViewById(R.id.tvWorkload);
tvPostmortem = findViewById(R.id.tvPostmortem);
tvImprovement = findViewById(R.id.tvImprovement);
tvTotalHours = findViewById(R.id.tvTotalHours);
}
private void loadDailyLogDetail() {
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("正在加载详情...");
progressDialog.show();
RetrofitClient.getInstance().getApiService()
.getDailyLogById(dailyLogId)
.enqueue(new Callback<ApiResponse<DailyLog>>() {
@Override
public void onResponse(Call<ApiResponse<DailyLog>> call, Response<ApiResponse<DailyLog>> response) {
progressDialog.dismiss();
if (response.isSuccessful() && response.body() != null) {
ApiResponse<DailyLog> apiResponse = response.body();
if ("200".equals(apiResponse.getCode()) && apiResponse.getData() != null) {
displayDailyLog(apiResponse.getData());
} else {
Toast.makeText(DailyLogDetailActivity.this,
apiResponse.getMsg(), Toast.LENGTH_SHORT).show();
finish();
}
} else {
Toast.makeText(DailyLogDetailActivity.this,
"加载失败", Toast.LENGTH_SHORT).show();
finish();
}
}
@Override
public void onFailure(Call<ApiResponse<DailyLog>> call, Throwable t) {
progressDialog.dismiss();
Toast.makeText(DailyLogDetailActivity.this,
"网络错误: " + t.getMessage(), Toast.LENGTH_SHORT).show();
finish();
}
});
}
private void displayDailyLog(DailyLog dailyLog) {
tvDate.setText(dailyLog.getDate() != null ? dateFormat.format(dailyLog.getDate()) : "未知日期");
tvPlanningTime.setText(dailyLog.getPlanningTimeEstimate() != null ?
dailyLog.getPlanningTimeEstimate() + "小时" : "未设置");
tvAnalysis.setText(dailyLog.getDevelopmentAnalysis());
tvDesignDoc.setText(dailyLog.getDesignDocCreated() != null && dailyLog.getDesignDocCreated() ?
"是" : "否");
tvCodingStandard.setText(dailyLog.getCodingStandard());
tvDesignDetails.setText(dailyLog.getDesignDetails());
tvCode.setText(dailyLog.getCode());
tvCodeChanges.setText(dailyLog.getCodeChanges());
tvWorkload.setText(dailyLog.getWorkloadMeasurement());
tvPostmortem.setText(dailyLog.getPostmortemAnalysis());
tvImprovement.setText(dailyLog.getImprovementPlan());
tvTotalHours.setText(dailyLog.getTotalHours() != null ?
dailyLog.getTotalHours() + "小时" : "未设置");
}
}

浙公网安备 33010602011771号