2024.3.28(周四)进度
继续完善个人作业1learning的教师端查询功能
package com.example.learningrecords; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.example.learningrecords.R; import com.example.learningrecords.dao.RecordDao; import com.example.learningrecords.dao.StudentDao; import com.example.learningrecords.entity.Record; import com.example.learningrecords.entity.StuRecData; import com.example.learningrecords.entity.Student; import java.util.ArrayList; import java.util.List; public class teacher extends AppCompatActivity { private static final String TAG = "teacher"; private EditText editTextStudentId; private EditText editTextWeekNumber; private TextView textViewDisplay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_teacher); // 初始化视图组件 editTextStudentId = findViewById(R.id.editTextStudentId); editTextWeekNumber = findViewById(R.id.editTextWeekNumber); textViewDisplay = findViewById(R.id.textViewDisplay); // 获取查询按钮 Button buttonQuery = findViewById(R.id.buttonQuery); // 设置查询按钮点击事件 buttonQuery.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { queryData(); } }); } // 查询数据的方法 private void queryData() { new Thread(new Runnable() { @Override public void run() { if (TextUtils.isEmpty(editTextStudentId.getText()) && TextUtils.isEmpty(editTextWeekNumber.getText())) { List<StuRecData> resultDataAll = queryAllData(); displayData("所有数据", resultDataAll); } else if (!TextUtils.isEmpty(editTextStudentId.getText()) && TextUtils.isEmpty(editTextWeekNumber.getText())) { String studentId = editTextStudentId.getText().toString(); List<StuRecData> resultDataById = queryByStudentId(studentId); displayData("Data by ID", resultDataById); } else if (TextUtils.isEmpty(editTextStudentId.getText()) && !TextUtils.isEmpty(editTextWeekNumber.getText())) { int weekNum = Integer.parseInt(editTextWeekNumber.getText().toString()); List<StuRecData> resultDataByWeekNum = queryByWeekNum(weekNum); displayData("Data by Week", resultDataByWeekNum); } else { String studentId = editTextStudentId.getText().toString(); int weekNum = Integer.parseInt(editTextWeekNumber.getText().toString()); List<StuRecData> resultDataCombined = queryByStudentIdAndWeekNum(studentId, weekNum); displayData("Data by ID&Week", resultDataCombined); } } }).start(); } // 无参数查询,将所有数据查询出来 private List<StuRecData> queryAllData() { List<StuRecData> resultData = new ArrayList<>(); List<Record> allRecords = new RecordDao().findAllRecords(); for (Record record : allRecords) { String studentId = record.getStudentId(); Student student = new StudentDao().findStudent(studentId); if (student != null) { StuRecData stuRecData = createStuRecData(student, record); resultData.add(stuRecData); } } return resultData; } // 根据StudentId查询,将Record表中的对应id的打卡记录查询出来 private List<StuRecData> queryByStudentId(String studentId) { List<StuRecData> resultData = new ArrayList<>(); List<Record> records = new RecordDao().findRecordsByStudentId(studentId); for (Record record : records) { Student student = new StudentDao().findStudent(studentId); if (student != null) { StuRecData stuRecData = createStuRecData(student, record); resultData.add(stuRecData); } } return resultData; } // 根据weekNum查询,将record表中,对应weekNum的信息查询出来 private List<StuRecData> queryByWeekNum(int weekNum) { List<StuRecData> resultData = new ArrayList<>(); List<Record> records = new RecordDao().findRecordsByWeekNum(weekNum); for (Record record : records) { String studentId = record.getStudentId(); Student student = new StudentDao().findStudent(studentId); if (student != null) { StuRecData stuRecData = createStuRecData(student, record); resultData.add(stuRecData); } } return resultData; } // 根据两种条件同时查询 private List<StuRecData> queryByStudentIdAndWeekNum(String studentId, int weekNum) { List<StuRecData> resultData = new ArrayList<>(); Record record = new RecordDao().findRecord(studentId, weekNum); if (record != null) { Student student = new StudentDao().findStudent(studentId); if (student != null) { StuRecData stuRecData = createStuRecData(student, record); resultData.add(stuRecData); } } return resultData; } // 创建 StuRecData 对象 private StuRecData createStuRecData(Student student, Record record) { return new StuRecData( student.getId(), student.getName(), student.getClassName(), student.getSetRecord(), record.getWeekNum(), record.getStartTime(), record.getEndTime(), record.getRecording() ); } // 显示查询结果 // 显示查询结果 private void displayData(final String title, final List<StuRecData> resultData) { runOnUiThread(new Runnable() { @Override public void run() { StringBuilder displayText = new StringBuilder(); displayText.append(title).append(":\n"); if (!resultData.isEmpty()) { for (StuRecData data : resultData) { displayText.append("学生ID:").append(data.getId()) .append("\n姓名:").append(data.getName()) .append("\n班级:").append(data.getClassName()) .append("\n打卡次数:").append(data.getSetRecord()) .append("\n周数:").append(data.getWeekNum()) .append("\n开始时间:").append(data.getStartTime()) .append("\n结束时间:").append(data.getEndTime()) .append("\n学习记录:").append(data.getRecording()) .append("\n\n"); } } else { displayText.append("未找到相关数据\n\n"); } textViewDisplay.setText(displayText.toString()); } }); } }