3月24日总结
今天web课程学习了解了Maven,构建Maven项目。
假期完成科技政策查询。
学习进度表
| 第16天 | 第17天 | 第18天 | 第19天 | 第20天 | |
|---|---|---|---|---|---|
| 所花时间(包括上课) | 4 | ||||
| 代码量(行) | 300+ | ||||
| 博客量(篇) | 1 | ||||
| 了解到的知识点 | 构建Maven项目 |
设计思想
本次课堂练习的目标是设计一个科技政策查询手机端系统,该系统能够通过政策关键字进行模糊匹配查询,并在点击政策名称后打开新窗口显示政策全文。设计思想如下:
用户友好性:界面简洁,操作直观,用户可以轻松输入查询关键字并获取结果。
响应式设计:系统应适应不同尺寸的移动设备屏幕,确保良好的用户体验。
源代码
package com.example.kejichaxun;
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;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private EditText searchEditText;
private Button searchButton;
private RecyclerView recyclerView;
private PolicyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
searchEditText = findViewById(R.id.searchEditText);
searchButton = findViewById(R.id.searchButton);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
searchButton.setOnClickListener(v -> {
String keyword = searchEditText.getText().toString().trim();
new Thread(() -> {
PolicyDBHelper dbHelper = new PolicyDBHelper();
List<Policy> policies = dbHelper.searchPolicies(keyword);
runOnUiThread(() -> {
adapter = new PolicyAdapter(policies, this);
recyclerView.setAdapter(adapter);
});
}).start();
});
}
}
package com.example.kejichaxun;
public class Policy {
private long id;
private String name;
private String text;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
@Override
public String toString() {
return "Policy{" +
"id=" + id +
", name='" + name + '\'' +
", text='" + text + '\'' +
'}';
}
}
package com.example.kejichaxun;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class PolicyAdapter extends RecyclerView.Adapter<PolicyAdapter.ViewHolder> {
private List<Policy> policies;
private Context context;
public PolicyAdapter(List<Policy> policies, Context context) {
this.policies = policies;
this.context = context;
Log.d("PolicyAdapter", "接收到的政策数量: " + policies.size()); // 添加日志输出
}
@NonNull // 导入正确的注解
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_policy, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { // 导入正确的注解
Policy policy = policies.get(position);
holder.nameTextView.setText(policy.getName());
holder.itemView.setOnClickListener(v -> {
Intent intent = new Intent(context, PolicyDetailActivity.class);
intent.putExtra("policy_text", policy.getText());
context.startActivity(intent);
});
}
@Override
public int getItemCount() {
return policies.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView nameTextView;
public ViewHolder(@NonNull View itemView) { // 导入正确的注解
super(itemView);
nameTextView = itemView.findViewById(R.id.nameTextView);
}
}
}
package com.example.kejichaxun;
import android.util.Log;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection; // 添加此行
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class PolicyDBHelper {
private static final String DB_URL = "jdbc:mysql://10.0.2.2:3306/db01";
private static final String USER = "root";
private static final String PASS = "123456";
public List<Policy> searchPolicies(String keyword) {
List<Policy> policies = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement()) {
String query = "SELECT id, name, text FROM policy " +
"WHERE name LIKE '%" + keyword + "%' " +
"OR keyword LIKE '%" + keyword + "%'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
Policy policy = new Policy();
policy.setId(rs.getLong("id"));
policy.setName(rs.getString("name"));
policy.setText(rs.getString("text"));
policies.add(policy);
}
Log.d("PolicyDBHelper", "查询到的政策数量: " + policies.size()); // 添加日志输出
} catch (SQLException e) {
e.printStackTrace();
}
return policies;
}
}
package com.example.kejichaxun;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
public class PolicyDetailActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_policy_detail);
webView = findViewById(R.id.webView);
String policyText = getIntent().getStringExtra("policy_text");
webView.loadData(policyText, "text/html; charset=utf-8", null);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/searchEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="搜索政策关键词"/>
<Button
android:id="@+id/searchButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="搜索"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/nameTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold"/>
</LinearLayout>
运行结果
编程总结分析
在本次项目中,我们实现了一个简单的科技政策查询系统。以下是一些总结和分析:
技术选择:选择了Android studio进行开发,这些技术简单易用,适合快速开发和部署。
用户体验:通过简洁的界面设计和直观的操作流程,提升了用户体验。
扩展性:系统设计考虑了未来可能的功能扩展,如增加更多政策类别、用户评论等。
浙公网安备 33010602011771号