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进行开发,这些技术简单易用,适合快速开发和部署。
用户体验:通过简洁的界面设计和直观的操作流程,提升了用户体验。
扩展性:系统设计考虑了未来可能的功能扩展,如增加更多政策类别、用户评论等。

posted @ 2025-03-24 23:47  阿伟·  阅读(9)  评论(0)    收藏  举报