diff --git a/Final_Project_app/.gitignore b/Final_Project_app/.gitignore
new file mode 100644
index 0000000..aa724b7
--- /dev/null
+++ b/Final_Project_app/.gitignore
@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+local.properties
diff --git a/Final_Project_app/.idea/.gitignore b/Final_Project_app/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/Final_Project_app/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Final_Project_app/.idea/compiler.xml b/Final_Project_app/.idea/compiler.xml
new file mode 100644
index 0000000..b589d56
--- /dev/null
+++ b/Final_Project_app/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/.idea/encodings.xml b/Final_Project_app/.idea/encodings.xml
new file mode 100644
index 0000000..c2bae49
--- /dev/null
+++ b/Final_Project_app/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/.idea/gradle.xml b/Final_Project_app/.idea/gradle.xml
new file mode 100644
index 0000000..ae388c2
--- /dev/null
+++ b/Final_Project_app/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/.idea/inspectionProfiles/Project_Default.xml b/Final_Project_app/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..8d66637
--- /dev/null
+++ b/Final_Project_app/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/.idea/misc.xml b/Final_Project_app/.idea/misc.xml
new file mode 100644
index 0000000..31a6708
--- /dev/null
+++ b/Final_Project_app/.idea/misc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/.gitignore b/Final_Project_app/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/Final_Project_app/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Final_Project_app/app/build.gradle.kts b/Final_Project_app/app/build.gradle.kts
new file mode 100644
index 0000000..7f8c6ca
--- /dev/null
+++ b/Final_Project_app/app/build.gradle.kts
@@ -0,0 +1,48 @@
+plugins {
+ id("com.android.application")
+}
+
+android {
+ namespace = "com.example.final_project_app"
+ compileSdk = 33
+
+ defaultConfig {
+ applicationId = "com.example.final_project_app"
+ minSdk = 24
+ targetSdk = 33
+ versionCode = 1
+ versionName = "1.0"
+
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ isMinifyEnabled = false
+ proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
+ }
+ }
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ //noinspection GradleCompatible,GradleCompatible
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.8.0")
+ implementation("androidx.constraintlayout:constraintlayout:2.1.4")
+ testImplementation("junit:junit:4.13.2")
+ androidTestImplementation("androidx.test.ext:junit:1.1.5")
+ androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
+ implementation(files("libs\\mysql-connector-java-5.1.49.jar"))
+//轮播图依赖,使用三方开源库youth5201314
+ implementation("io.github.youth5201314:banner:2.2.2")
+//视频播放器依赖
+ implementation("com.android.support:recyclerview-v7:33.0.0")
+ //implementation("com.github.bumptech.glide:glide:4.8.0")
+
+
+}
\ No newline at end of file
diff --git a/Final_Project_app/app/libs/mysql-connector-java-5.1.49.jar b/Final_Project_app/app/libs/mysql-connector-java-5.1.49.jar
new file mode 100644
index 0000000..d3c8b41
Binary files /dev/null and b/Final_Project_app/app/libs/mysql-connector-java-5.1.49.jar differ
diff --git a/Final_Project_app/app/proguard-rules.pro b/Final_Project_app/app/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/Final_Project_app/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/Final_Project_app/app/src/androidTest/java/com/example/final_project_app/ExampleInstrumentedTest.java b/Final_Project_app/app/src/androidTest/java/com/example/final_project_app/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..b957427
--- /dev/null
+++ b/Final_Project_app/app/src/androidTest/java/com/example/final_project_app/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.final_project_app;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.example.final_project_app", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/AndroidManifest.xml b/Final_Project_app/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..2ae1732
--- /dev/null
+++ b/Final_Project_app/app/src/main/AndroidManifest.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/AboutUsActivity.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/AboutUsActivity.java
new file mode 100644
index 0000000..57b6729
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/AboutUsActivity.java
@@ -0,0 +1,37 @@
+package com.example.final_project_app;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Button;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+public class AboutUsActivity extends AppCompatActivity {
+ private Button btn_back;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_about_us);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ /* btn_back = findViewById(R.id.btn_back);
+ btn_back.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ FragmentManager fm = getSupportFragmentManager();
+ FragmentTransaction ft = fm.beginTransaction();
+ ft.replace(R.id.fg_main,new FourFragment());
+ ft.addToBackStack(null);
+
+ ft.commit();
+ Intent intent = new Intent(AboutUsActivity.this, FourFragment.class);
+ startActivity(intent);
+ }
+ });*/
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/ChexBoxFragment.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/ChexBoxFragment.java
new file mode 100644
index 0000000..80b87aa
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/ChexBoxFragment.java
@@ -0,0 +1,155 @@
+package com.example.final_project_app;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link ChexBoxFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class ChexBoxFragment extends Fragment {
+ //成员变量
+ private TextView question_stem;//题干文本框控件,就是选中的控件显示
+ private CheckBox[] cb =new CheckBox[5];
+ private Question question;//题目对象就是标题,单选多选,正确下标
+ private int result;//正确为1 错误为0 未答题为-1
+ private View view;
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ Log.e("复选onCreateView","复选onCreateView执行了");
+ view=inflater.inflate(R.layout.fragment_chex_box, container, false);
+ return view;
+ }
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ Log.e("复选onViewCreated","复选onViewCreated执行了");
+ //初始化控件
+ initView(view);
+ //更新题目
+ nextQuestion(question);
+ }
+ //获取题目
+ public void setQuestion(Question question){
+ this.question=question;
+ }
+
+ public void clearChoice(){
+ //清除选择
+ for (int i = 0; i < cb.length; i++) {
+ cb[i].setChecked(false);
+ }
+ }
+ //初始化控件
+ public void initView(final View view){
+ Log.e("复选initView","复选initView执行了");
+ //获取题干
+ question_stem=view.findViewById(R.id.question_item2);
+ //单选控件
+ cb[0]=view.findViewById(R.id.boxs1);
+ cb[1]=view.findViewById(R.id.boxs2);
+ cb[2]=view.findViewById(R.id.boxs3);
+ cb[3]=view.findViewById(R.id.boxs4);
+ cb[4]=view.findViewById(R.id.boxs5);
+ }
+ //更新题目
+ public void nextQuestion(Question question){
+ Log.e("复选nextQuestion","nextQuestion执行了");
+ //设置题干
+ Log.e("a",question.getQuestionStem());
+ question_stem.setText(question.getQuestionStem());
+ //设置选项
+ for (int i=0;i goodsList = new ArrayList<>();
+
+ //定义轮播图片
+ private final ArrayList banners;
+
+ //定义文物列表
+ private List CuList = new ArrayList();
+ //定义布局
+ private RecyclerView recyclerView;
+ //定义文物适配器
+ CultrualAdapter adapter;
+ //轮播
+ public FirstFragment() {
+ //本地图片
+ banners = new ArrayList<>();
+ banners.add(new bannerBean(R.drawable.banner1));
+ banners.add(new bannerBean(R.drawable.banner2));
+ banners.add(new bannerBean(R.drawable.banner3));
+ banners.add(new bannerBean(R.drawable.banner4));
+ banners.add(new bannerBean(R.drawable.banner5));
+ banners.add(new bannerBean(R.drawable.banner6));
+ }
+ //
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View inflate = inflater.inflate(R.layout.fg_first, container, false); // 通过inflater获取页面
+
+// initCrlists();
+ //获取recyclerview水平可滑动列表
+ recyclerView = inflate.findViewById(R.id.recycler_view);
+ adapter = new CultrualAdapter();
+ recyclerView.setAdapter(adapter);
+ goodsData = new GoodsData(inflate.getContext());
+ goodsList = goodsData.getGoodsList();
+
+ LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
+ //设置间隔线
+ DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL);
+ recyclerView.addItemDecoration(dividerItemDecoration);
+ layoutManager.setOrientation(recyclerView.VERTICAL);//水平/垂直显示
+ recyclerView.setLayoutManager(layoutManager);
+
+
+ GoodsAdapter adapter = new GoodsAdapter(goodsList);
+ recyclerView.setAdapter(adapter);
+ //获取banner
+ Banner banner = inflate.findViewById(R.id.banner);
+ //设置banner
+ //添加生命周期,回调这个方法
+ banner.addBannerLifecycleObserver(this)
+ //为banner设置适配器,并将数据传递进去
+ .setAdapter(new BannerViewAdapter(banners, this))
+ //添加指示器
+ .setIndicator(new CircleIndicator(getContext()));
+ return inflate;
+ //返回inflate对象
+ }
+ //菜单按钮点击事件
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ // //菜单栏点击跳转事件
+ /* menu_bnt1 = getActivity().findViewById(R.id.btn1);
+ menu_bnt1.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(getActivity(), waitActivity.class);
+ startActivity(intent);
+ }
+ });
+ menu_btn2= getActivity().findViewById(R.id.btn2);
+ menu_btn2.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(getActivity(), waitActivity2.class);
+ startActivity(intent);
+ }
+ });
+ menu_btn3=getActivity().findViewById(R.id.btn3);
+ menu_btn3.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(getActivity(), waitActivity3.class);
+ startActivity(intent);
+ }
+ });
+ menu_btn4 = getActivity().findViewById(R.id.btn4);
+ menu_btn4.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(getActivity(), waitActivity5.class);
+ startActivity(intent);
+ }
+ });*/
+ }
+//文物列表通过add将数据加入列表中
+// private void initCrlists() {
+// CultrualData list1 = new CultrualData("商.铜神树枝头花蕾及立鸟", R.drawable.cr_list1);
+// CuList.add(list1);
+// CultrualData list2 = new CultrualData("商晚.青铜器妇好鹄尊", R.drawable.cr_list2);
+// CuList.add(list2);
+// CultrualData list3 = new CultrualData("商晚.青铜器牛方鼎", R.drawable.cr_list3);
+// CuList.add(list3);
+// CultrualData list4 = new CultrualData("西周.青铜器凤纹尊", R.drawable.cr_list4);
+// CuList.add(list4);
+// CultrualData list5 = new CultrualData("五代.青瓷提梁倒灌壶", R.drawable.cr_list5);
+// CuList.add(list5);
+// CultrualData list6 = new CultrualData("西周.鸟纹觥", R.drawable.cr_list6);
+// CuList.add(list6);
+// CultrualData list7 = new CultrualData("三星堆", R.drawable.cr_list7);
+// CuList.add(list7);
+// CultrualData list8 = new CultrualData("商代.鹄卣", R.drawable.cr_list8);
+// CuList.add(list8);
+// CultrualData list9 = new CultrualData("兽面纹铜钺", R.drawable.cr_list9);
+// CuList.add(list9);
+// }
+
+ class CultrualAdapter extends RecyclerView.Adapter {
+ @NonNull
+ @Override
+ public MyViewHoder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = View.inflate(getContext(), R.layout.cltrua_list, null);
+ MyViewHoder myViewHoder = new MyViewHoder(view);
+ // 将View对象传入ViewHolder构造函数创建ViewHolder对象并返回
+ return myViewHoder;
+ }
+
+ // onBindViewHolder方法,用于绑定数据到ViewHolder对象
+ // 参数holder表示要绑定的ViewHolder对象,position表示当前项的位置
+ @Override
+ public void onBindViewHolder(@NonNull MyViewHoder holder, @SuppressLint("RecyclerView") int position) {
+ // 从数据列表中获取当前位置的数据
+ CultrualData Cul = CuList.get(position);
+ //第二步
+ // 将数据设置到ViewHolder对象的textView中
+ // holder.textView.setText(fruit.getName());//fruit.getImageId()
+ holder.imageview.setBackgroundResource(Cul.getImageId());
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Toast.makeText(getContext(),
+ ""+CuList.get(position),
+ Toast.LENGTH_LONG).show();
+ }
+ });
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return CuList.size();
+ }
+ }
+ class MyViewHoder extends RecyclerView.ViewHolder {
+ TextView textView;
+ ImageView imageview;
+ public MyViewHoder(@NonNull View itemView) {
+ super(itemView);
+ textView = itemView.findViewById(R.id.fruit_name);
+ imageview = itemView.findViewById(R.id.fruit_image);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/FourFragment.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/FourFragment.java
new file mode 100644
index 0000000..b7385a3
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/FourFragment.java
@@ -0,0 +1,92 @@
+package com.example.final_project_app.Fragment;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.example.final_project_app.AboutUsActivity;
+import com.example.final_project_app.Helpctivity;
+import com.example.final_project_app.R;
+import com.example.final_project_app.login;
+
+public class FourFragment extends FirstFragment {
+ private RelativeLayout quite,aboutus,help;
+ private TextView username,userpwd;
+ SharedPreferences sp1;
+
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fg_four,container,false);
+ return view;
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ //获取用户名和密码控件
+ username = getActivity().findViewById(R.id.username);
+ userpwd = getActivity().findViewById(R.id.userpwd);
+
+ //获取退出控件
+ quite = getActivity().findViewById(R.id.re_quite);
+ //退出点击事件
+ quite.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ builder.setTitle("提示");
+ builder.setMessage("是否确定退出");
+ builder.setIcon(R.drawable.back_home0);
+ //确定
+ builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ Intent intent = new Intent(getActivity(), login.class);
+ startActivity(intent);
+ }
+ });
+ //取消
+ builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ dialogInterface.dismiss(); //关闭提示框
+ }
+ });
+ //生成提示框并显示
+ AlertDialog alertDialog = builder.create();
+ alertDialog.show();
+ }
+ });
+ //关于我们点击事件
+ aboutus = getActivity().findViewById(R.id.re_aboutus);
+ aboutus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(getActivity(), AboutUsActivity.class);
+ startActivity(intent);
+ }
+ });
+ //帮助与反馈
+ help = getActivity().findViewById(R.id.re_help);
+ help.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(getActivity(), Helpctivity.class);
+ startActivity(intent);
+ }
+ });
+
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/ThreeFragment.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/ThreeFragment.java
new file mode 100644
index 0000000..308ccd6
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/ThreeFragment.java
@@ -0,0 +1,99 @@
+package com.example.final_project_app.Fragment;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.example.final_project_app.R;
+import com.example.final_project_app.adpter.NoteRecyAdapter;
+import com.example.final_project_app.QuestionActivity;
+import com.example.final_project_app.db.NoteBook;
+import com.example.final_project_app.db.NoteData;
+import com.example.final_project_app.sql.AddNoteActivity;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+
+public class ThreeFragment extends FirstFragment {
+ private Button btn_add,btn_awser;
+
+ private NoteBook nb;
+ private RecyclerView recy;
+ private List datas;
+
+ private NoteRecyAdapter mAdapter;
+ @SuppressLint("MissingInflatedId")
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fg_three, container, false);
+ return view;
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ //初始化数据
+ initdata();
+ //获取控件
+ recy = getActivity().findViewById(R.id.recy);
+ mAdapter = new com.example.final_project_app.adpter.NoteRecyAdapter(datas,getContext());
+ LinearLayoutManager lm = new LinearLayoutManager(getContext());
+ recy.setAdapter(mAdapter);
+ recy.setLayoutManager(lm);
+ //添加按钮
+ btn_add = getActivity().findViewById(R.id.btn_add);
+ btn_add.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(getActivity(), AddNoteActivity.class);
+ startActivity(intent);
+ }
+ });
+ btn_awser = getActivity().findViewById(R.id.btn_awser);
+ btn_awser.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(getActivity(), QuestionActivity.class);
+ startActivity(intent);
+ }
+ });
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ refreshData();
+ mAdapter.refresh(datas);
+ }
+ private void refreshData() {
+ datas = getDataFromSQL();
+
+ }
+
+ private void initdata() {
+ datas = new ArrayList();
+ nb = new NoteBook(getContext());
+ datas = getDataFromSQL();
+ }
+ private List getDataFromSQL() {
+ return nb.query();
+ }
+ private String getSystemCurrentTime() {
+ SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd HH:mm:ss");
+ Date datetime = new Date();
+ return sdf.format(datetime);
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/TwoFragment.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/TwoFragment.java
new file mode 100644
index 0000000..82eb3f3
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/TwoFragment.java
@@ -0,0 +1,62 @@
+package com.example.final_project_app.Fragment;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.StaggeredGridLayoutManager;
+
+import com.example.final_project_app.R;
+import com.example.final_project_app.adpter.MovieAdapter;
+import com.example.final_project_app.db.Movie;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TwoFragment extends FirstFragment{
+ RecyclerView recyclerView;
+ List movieList;
+ MovieAdapter movieAdapter;
+ private static final String TAG="MovieActivity";
+
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fg_two,container,false);
+ return view;
+ }
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ recyclerView = getActivity().findViewById(R.id.fg_tworecyclerview);
+ initData();
+ }
+ private void initData() {
+ //建立动态数组存放数据
+ movieList = new ArrayList<>();
+ //获取网络视频
+ /* Movie firstmovie = new Movie("kkkkk1", "http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4");
+ movieList.add(firstmovie);
+ /* //获取本工程中的视频*/
+ Movie one=new Movie("形式如何?适合自己才是王道","android.resource://"+getActivity().getPackageName()+"/"+R.raw.one);
+ movieList.add(one);
+ Movie two=new Movie("考研or考公?如何抉择","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.two);
+ movieList.add(two);
+ Movie three=new Movie("考研流程一览","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.three);
+ movieList.add(three);
+ Movie four=new Movie("NEW1","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.kaogongone);
+ movieList.add(four);
+ Movie five=new Movie("NEW2","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.one);
+ movieList.add(five);
+ Movie six=new Movie("NEW3","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.two);
+ movieList.add(six);
+ //将视频显示在控件上
+ movieAdapter = new MovieAdapter(movieList);
+ StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
+ recyclerView.setLayoutManager(layoutManager);
+ recyclerView.setAdapter(movieAdapter);
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/Goods.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/Goods.java
new file mode 100644
index 0000000..eb3a7c1
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/Goods.java
@@ -0,0 +1,60 @@
+package com.example.final_project_app.Goods;
+
+public class Goods {
+ private int goodsId;
+ private String goodsName;
+ private String goodsNotice;
+// private int goodsPrice;
+ private int goodsImg;
+
+ public Goods() {
+
+ }
+
+ public Goods(String goodsName, String goodsNotice, int goodPrice, int goodsImg) {
+ this.goodsName = goodsName;
+ this.goodsNotice = goodsNotice;
+ // this.goodsPrice = goodPrice;
+ this.goodsImg = goodsImg;
+ }
+
+ public int getGoodsId() {
+ return goodsId;
+ }
+
+ public void setGoodsId(int goodsId) {
+ this.goodsId = goodsId;
+ }
+
+ public String getGoodsName() {
+ return goodsName;
+ }
+
+ public void setGoodsName(String goodsName) {
+ this.goodsName = goodsName;
+ }
+
+ public String getGoodsNotice() {
+ return goodsNotice;
+ }
+
+ public void setGoodsNotice(String goodsNotice) {
+ this.goodsNotice = goodsNotice;
+ }
+
+// public int getGoodPrice() {
+// return goodsPrice;
+// }
+
+// public void setGoodPrice(int goodPrice) {
+// this.goodsPrice = goodPrice;
+// }
+
+ public int getGoodsImg() {
+ return goodsImg;
+ }
+
+ public void setGoodsImg(int goodsImg) {
+ this.goodsImg = goodsImg;
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsActivity.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsActivity.java
new file mode 100644
index 0000000..6ee1d69
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsActivity.java
@@ -0,0 +1,55 @@
+package com.example.final_project_app.Goods;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.final_project_app.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class GoodsActivity extends AppCompatActivity {
+ private ImageView imageView;
+ private TextView goodsPrice,goodsName,goodsNotice;
+
+ private List goodsList = new ArrayList<>();
+ private Goods goods;
+ private Button gom;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_goods);
+
+ imageView = findViewById(R.id.img);
+ goodsName = findViewById(R.id.name);
+ // goodsPrice = findViewById(R.id.price);
+ goodsNotice = findViewById(R.id.notice);
+
+ Intent intent = getIntent();
+ int goodsId = intent.getIntExtra("goodsId",0);
+
+ GoodsData goodsData = new GoodsData(GoodsActivity.this);
+ goodsList = goodsData.getGoodsList();
+ goods = goodsList.get(goodsId);
+
+ imageView.setImageResource(goods.getGoodsImg());
+ goodsName.setText(goods.getGoodsName());
+ // goodsPrice.setText("¥"+String.valueOf(goods.getGoodPrice())+"元");
+ goodsNotice.setText(goods.getGoodsNotice());
+
+// gom = (Button) findViewById(R.id.gm);
+// gom.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View view) {
+// Intent intent = new Intent(GoodsActivity.this, plActivity.class);
+// startActivity(intent);
+// }
+// });
+ }
+}
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsAdapter.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsAdapter.java
new file mode 100644
index 0000000..cc59efa
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsAdapter.java
@@ -0,0 +1,72 @@
+package com.example.final_project_app.Goods;
+
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.example.final_project_app.R;
+
+import java.util.List;
+
+public class GoodsAdapter extends RecyclerView.Adapter{
+ private List mGoodsList;
+
+ public GoodsAdapter(List mGoodsList) {
+ this.mGoodsList = mGoodsList;
+ }
+
+ @NonNull
+ @Override
+ public ViewHolderR onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.goods_item,parent,false);
+
+ final ViewHolderR holderR = new ViewHolderR(view);
+
+ /*RecyclerView子项点击事件:携带商品id跳转至商品详情页*/
+ holderR.goodsView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(view.getContext(),GoodsActivity.class);
+ intent.putExtra("goodsId",holderR.getAdapterPosition());
+ view.getContext().startActivity(intent);
+ }
+ });
+ return holderR;
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolderR holder, int position) {
+ Goods goods = mGoodsList.get(position);
+ holder.goodsImage.setImageResource(goods.getGoodsImg());
+ holder.goodsNotice.setText("热门");
+ holder.goodsName.setText(goods.getGoodsName());
+ holder.goodsNotice.setText(goods.getGoodsNotice());
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return mGoodsList.size();
+ }
+
+ static class ViewHolderR extends RecyclerView.ViewHolder{
+ View goodsView;
+ ImageView goodsImage;
+ TextView goodsPrice,goodsName,goodsNotice;
+
+ public ViewHolderR(@NonNull View itemView) {
+ super(itemView);
+ goodsView = itemView;
+ goodsImage = itemView.findViewById(R.id.goods_img);
+ // goodsPrice = itemView.findViewById(R.id.goods_price);
+ goodsName = itemView.findViewById(R.id.goods_name);
+ goodsNotice = itemView.findViewById(R.id.goods_notice);
+ }
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsData.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsData.java
new file mode 100644
index 0000000..1f92477
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsData.java
@@ -0,0 +1,101 @@
+package com.example.final_project_app.Goods;
+
+import android.content.Context;
+
+import com.example.final_project_app.R;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+public class GoodsData {
+ private List goodsList= new ArrayList<>();
+// private String[] data_name= {"惊悚:我只卖凶宅","霸道总裁爱上我",
+// "心理罪:十宗罪","阴间神探","六年后,大小姐带着系统杀回来了"
+// ,"13路末班车","恐怖酒馆:我只养大凶之物","向盛夏"
+// ,"许你年年岁岁好","揉碎温柔"};
+
+ private Context context;
+
+ public GoodsData(Context context) {
+ this.context = context;
+ }
+
+ public List getGoodsList(){
+ initGoodsList();
+ return goodsList;
+ }
+
+ /*初始化商品数据列表*/
+ private void initGoodsList() {
+ Goods top1 = new Goods("2023年全国教育事业发展基本情况",getNotice
+ ("2023年是全面贯彻党的二十大精神开局之年,是实施“十四五”规划承上启下习贯彻习近平总书记关于教育的重要论述," +
+ "贯彻落实党的二十大精神,牢牢把握教育的政治属性、战略属性和民生属性,锚定教育强国建设目标,扎实推动教育事业高质量发展取得新突破。")
+ ,getPrice(), R.drawable.sy1);
+ goodsList.add(top1);
+ Goods top2 = new Goods("2024年国家助学贷款免息及本金延期偿还如何操作?",getNotice
+ ("官方解读:为贯彻落实国务院常务会议决策部署,财政部、教育部、中国人民银行、金融监管总局认真研究," +
+ "报经国务院同意,决定2024年延续实施国家助学贷款免息及本金延期偿还政策。本次措施的出台,预计减免利息24.4亿元," +
+ "惠及约550万名高校毕业生,有助于缓解贷款学生经济压力和就业压力,帮助学生维护个人信用记录,促进其顺利就业。")
+ ,getPrice(),R.drawable.sy2);
+ goodsList.add(top2);
+ Goods top3 = new Goods("快讯!2024年研考国家线发布",getNotice
+ ("近日,教育部部署2024年全国硕士研究生招生复试录取工作,要求各地各招生单位以习近平新时代中国特色社会主义思想为指导," +
+ "深入贯彻党的二十大精神,全面贯彻党的教育方针,落实立德树人根本任务,坚持综合评价、择优录取,严格执行政策,严守工作纪律," +
+ "规范录取行为,优化考生服务,确保2024年硕士研究生复试录取工作公平、公正、科学。教育部要求招生单位加强招生信息公开," +
+ "提前在本单位招生网站和“中国研究生招生信息网”上发布本单位复试、调剂、录取工作办法,及时、准确做好政策宣传解读、咨询答复。")
+ ,getPrice(),R.drawable.sy3);
+ goodsList.add(top3);
+ Goods top4 = new Goods("2024年(第三届)研究生招生与培养高峰论坛在成都举办",getNotice
+ ("5月16日,2024年(第三届)研究生招生与培养高峰论坛在成都举行。本次论坛以“乘势而上攀高向强”为主题,旨在为各地区高校、科研院所提供优质交流平台," +
+ "共话新时代背景下研究生招生与培养新课题,探讨研究生教育高质量发展之路以及高层次人才选拔培养之道。")
+ ,getPrice(),R.drawable.sy4);
+ goodsList.add(top4);
+ Goods top5 = new Goods("2024国考公告已出!中央机关及其直属机构2024年度考试录用公务员公告",getNotice
+ ("提交报考申请。报考者可于2023年10月15日8:00至10月24日18:00期间登录专题网站进行报名并提交报考申请," +
+ "每次只能选报1个职位。报名时,应当仔细阅读诚信承诺书,提交的报考申请材料应当真实、准确、完整。招录机关于2023年10月15日8:00至10月26日18:00期间" +
+ "对报考申请进行审查,确认报考者是否具有报考资格。报考者可登录专题网站查询资格审查结果。" +
+ "通过资格审查的,不能再报考其他职位。2023年10月15日8:00至10月24日18:00期间,报考申请未审查或者未通过资格审查的,可以改报其他职位。")
+ ,getPrice(),R.drawable.sy5);
+ goodsList.add(top5);
+ Goods top6 = new Goods("国家公务员考试政审流程是怎样的?需要哪些材料?",getNotice
+ ("1、审核资料阶段2、查阅人事档案阶段3、座谈阶段4、组织部终审 等到以上三个阶段的考察完毕后,考察组根据考生的回答及表现书写考察报告," +
+ "然后会把这份考察报告会跟考生提交的资料,共同上交给组织部来做最后的审核,审核结果公布时间以考察组的公示为准。")
+ ,getPrice(),R.drawable.sy6);
+ goodsList.add(top6);
+ Goods top7 = new Goods("2024国家公务员笔试时间定于11月25日至26日!",getNotice
+ ("公共科目包括行政职业能力测验和申论两科。其中,行政职业能力测验为客观性试题,申论为主观性试题,满分均为100分," +
+ "详见《中央机关及其直属机构2024年度考试录用公务员公共科目笔试考试大纲》。公共科目笔试试卷分为3类,分别适用于中央机" +
+ "关及其省级直属机构综合管理类职位、市(地)级及以下直属机构综合管理类职位和行政执法类职位。所有报考者均需参加公共科目笔试。")
+ ,getPrice(),R.drawable.sy7);
+ goodsList.add(top7);
+ Goods top8 = new Goods("公务员考试是什么时候,公务员考试国考和省考的区别",getNotice
+ ("时间在每年11月的第四个中央、国家机关公务员招考每年一次,省、直辖市、自治区由各地自行决定并组织实施," +
+ "部分地区每年在上、下半年各组织一次考试,全国大部分地区每年只考一次,省级以下公务员主管部门不组织开展公务员考试。" +
+ "国考题目难度要相对大于省考,编制和福利待遇不同:通过省考和国考录用的公务员均属于“国家公务员”,均按照《公务员法》和同一套制" +
+ "度管理录用后也有统一的薪酬体系但因地域范围、部门(行业)类别及单位层级不同薪酬及晋升空间会有所差异。")
+ ,getPrice(),R.drawable.sy8);
+ goodsList.add(top8);
+
+ }
+
+ /*商品描述模拟数据*/
+ private String getNotice(String name) {
+ Random random = new Random();//创建Random对象,生成随机数
+ int length = random.nextInt(5)+1;
+ //使用nextInt方法生成一个0到4的随机整数,加1,最终结果是一个1到5的随机整数。存储在变量length中。
+ StringBuilder builder = new StringBuilder();
+ //创建StringBuilder对象,构建和修改字符串
+ for (int i = 0;i questions=new ArrayList<>();//题目集合
+ private int i=0;//当前题号
+ private int previousType;//上一题题目类型,单选为1,多选为2
+ private int result;//答题结果,正确为1,错误为0,未答题为2
+ private Button button;//提交按钮
+ private RadioButtonFragment radioButtonFragment;//单选按钮对象
+ private ChexBoxFragment chexBoxFragment;
+ private TextView time;
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_question);
+ //初始化题目
+ initQuestions();
+ //初始化控件
+ initView();
+ //根据题形加载第一题
+ Question question=questions.get(0);
+ Log.e("question", "可以获取题目");
+ if (question.getQuestionTypes()==1){
+ //给出题目的类型
+ radioButtonFragment.setQuestion(question);
+ replaceFragment(radioButtonFragment);
+ previousType=1;//当前题型为1,为单选题
+ }else {
+ chexBoxFragment.setQuestion(question);
+ replaceFragment(chexBoxFragment);
+ previousType=2;//当前题型为2,为多选题
+ }
+ }
+ CountDownTimer countDownTimer=new CountDownTimer(120000, 1000) {
+ public void onTick(long millisUntilFinished) {
+ time.setText("剩余时间 " + millisUntilFinished / 1000+"s");
+ }
+ public void onFinish() {
+ time.setText("时间到!");
+ }
+ }.start();
+
+ //替换fragment方法
+ private void replaceFragment(Fragment Fragment) {
+ FragmentManager manager=getSupportFragmentManager();
+ FragmentTransaction transaction=manager.beginTransaction();
+ transaction.replace(R.id.fragment1,Fragment);
+ transaction.commit();
+ }
+
+ public void initQuestions(){
+ Log.e("信息更新", "执行了");
+ Question question=new Question();
+ //题干
+ question.setQuestionStem("1、下列描写思念的成语与其所适用的思念对象对应不正确的是:");
+ //选项
+ question.setOptions(new String[]{"A莼鲈之思——故乡","B蒹葭之思——恋人","C霜露之思——兄弟","D云树之思——朋友"});
+ //正确的答案
+ question.setCorrectOptions("2");
+ //题目类型
+ question.setQuestionTypes(1);
+ //把题目添加到集合中
+ questions.add(question);
+
+ Question question2=new Question();
+ //题干
+ question2.setQuestionStem("2、“二十四节气”鲜明地体现了中国人尊重自然、顺应自然规律和可持续发展的理念。下列关于“二十四节气”的说法正确的是:");
+ //选项
+ question2.setOptions(new String[]{"A起源于长江流域,是我国农历的重要组成部分","B立夏时北半球的白昼时间最长,且越往北越长","C是通过观察地球周年运动形成的时间知识体系","D春分日太阳直射地球赤道,南北半球昼夜平分"});
+ //正确的答案
+ question2.setCorrectOptions("3");
+ //题目类型
+ question2.setQuestionTypes(1);
+ //把题目添加到集合中
+ questions.add(question2);
+
+ Question question3=new Question();
+ //题干
+ question3.setQuestionStem("3、根据我国法律,敏感个人信息是一旦泄露或者非法使用,容易导致自然人的人格尊严受到侵害或者人身、财产安全受到危害的个人信息。以下不属于敏感个人信息的是:");
+ //选项css
+ question3.setOptions(new String[]{"A人脸特征","B从业经历","C医疗健康","D行踪轨迹"});
+ //正确的答案
+ question3.setCorrectOptions("1");
+ //题目类型
+ question3.setQuestionTypes(1);
+ //把题目添加到集合中
+ questions.add(question3);
+
+ Question question4=new Question();
+ //题干
+ question4.setQuestionStem("4、在马克思主义哲学中,关于社会存在和社会意识的关系,以下哪些描述是正确的?");
+ //选项
+ question4.setOptions(new String[]{"A. 社会存在决定社会意识。","B. 社会意识具有相对独立性,可以反作用于社会存在。","C. 社会意识总是与社会存在完全同步。","D. 社会意识的发展具有历史继承性。","E. 社会意识的发展不具有历史继承性。\n"});
+ //正确的答案
+ question4.setCorrectOptions("0,1,3");
+ //题目类型
+ question4.setQuestionTypes(2);
+ //把题目添加到集合中
+ questions.add(question4);
+
+ Question question5=new Question();
+ //题干
+ question5.setQuestionStem("5、马克思在《资本论》中指出,资本主义经济的直接目的是追求什么?");
+ //选项
+ question5.setOptions(new String[]{"A. 提高生产效率","B. 增加就业机会","C. 实现社会公平","D. 获得剩余价值"});
+ //正确的答案
+ question5.setCorrectOptions("3");
+ //题目类型
+ question5.setQuestionTypes(1);
+ //把题目添加到集合中
+ questions.add(question5);
+ }
+ public void initView(){
+ //找到对应控件
+ button=findViewById(R.id.submit);
+ radioButtonFragment=new RadioButtonFragment();
+ chexBoxFragment=new ChexBoxFragment();
+ time=findViewById(R.id.time);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //如果是提交按钮,根据当前题目类型,调用getResult()
+ if(button.getText().equals("提交")){
+ if(questions.get(i).getQuestionTypes()==1){
+ result=radioButtonFragment.getResult(questions.get(i));
+ }else {
+ result=chexBoxFragment.getResult(questions.get(i));
+ }
+ //如果答对了就+1分
+ if(result==1){
+ score++;
+ }
+ //如果不是第五题,就改文本为下一题,如果是第五题,就修改文本为结束
+ if(i==4){
+ button.setText("结束");
+ }else if(result!=-1){
+ button.setText("下一题");
+ }
+ }else {
+
+ //如果是下一题按钮,题号增加,判断你是否已经答题完成
+ i++;
+ if(i{
+ private Fragment fragment;
+
+ public BannerViewAdapter(List datas,Fragment fragment) {
+ super(datas);
+ this.fragment = fragment;
+ }
+
+ @Override
+ public BannerViewAdapter.BannerViewHodler onCreateHolder(ViewGroup parent, int viewType) {
+ ImageView imageView = new ImageView(parent.getContext());
+ imageView.setLayoutParams(new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT
+ ));
+ //setScaleType对图片进行大小处理 CENTER_CROP对原图居中显示后进行等比放缩处理,使最小边等于ImageView的相应边
+ imageView.setScaleType(ImageView.ScaleType.CENTER);
+ return new BannerViewHodler(imageView);
+ }
+ //绑定图片资源文件
+ @Override
+ public void onBindView(BannerViewAdapter.BannerViewHodler holder, bannerBean data, int position, int size) {
+ holder.imageView.setImageResource(data.picture);
+ }
+ //ViewHolder主要用于容纳view视图
+ public class BannerViewHodler extends RecyclerView.ViewHolder {
+ ImageView imageView;
+
+ public BannerViewHodler(@NonNull ImageView itemView) {
+ super(itemView);
+ this.imageView = itemView;
+ }
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MovieAdapter.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MovieAdapter.java
new file mode 100644
index 0000000..15bc8ac
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MovieAdapter.java
@@ -0,0 +1,69 @@
+package com.example.final_project_app.adpter;
+
+import android.content.Intent;
+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 com.example.final_project_app.PlayActivity;
+import com.example.final_project_app.R;
+import com.example.final_project_app.db.Movie;
+
+import java.util.List;
+
+
+public class MovieAdapter extends RecyclerView.Adapter {
+ List mymovieList;
+ public class ViewHolder extends RecyclerView.ViewHolder {
+ View movieview;
+ TextView moviename;
+
+ public ViewHolder(@NonNull View view) {
+ super(view);
+ moviename = itemView.findViewById(R.id.moviename);
+ movieview = view;
+ }
+ }
+ //利用适配器的构造函数传入要展示的数据
+ public MovieAdapter(List mymovieList){
+ this.mymovieList=mymovieList;
+ }
+ //创建实例,把每一行的布局加载进来,创建一个ViewHolder实例,将布局传入到构造函数中,最后将实例返回
+ public MovieAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
+ View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.movie_item,parent,false);
+ final ViewHolder holder=new ViewHolder(view);
+ //单击任意视频跳转到播放界面
+ holder.movieview.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ //获取位置
+ int position=holder.getAdapterPosition();
+ Movie movie=mymovieList.get(position);
+ //获取movie中的名字
+ String mymoviename=movie.getMoviename();
+ //获取视频播放地址
+ String mymovievideo=movie.getMovieuri();
+
+ //获取播放视频的位置后跳转到播放页
+ Intent intent=new Intent(view.getContext(),PlayActivity.class);
+ //然后根据位置传递信息
+ intent.putExtra("my",mymoviename);
+ intent.putExtra("movieurl",mymovievideo);
+ view.getContext().startActivity(intent);
+ }
+ });
+ return holder;
+ }
+ //对recyclerview中子项目进行赋值,通过位置得到当前的实例,然后电影名和视频显示在控件上
+ public void onBindViewHolder(@NonNull MovieAdapter.ViewHolder holder,int position){
+ Movie movie=mymovieList.get(position);
+ holder.moviename.setText(movie.getMoviename());
+ }
+ public int getItemCount(){
+ return mymovieList.size();
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MyFragmentPaperAdapter.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MyFragmentPaperAdapter.java
new file mode 100644
index 0000000..1a134a4
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MyFragmentPaperAdapter.java
@@ -0,0 +1,59 @@
+package com.example.final_project_app.adpter;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
+
+import com.example.final_project_app.Fragment.FirstFragment;
+import com.example.final_project_app.Fragment.FourFragment;
+import com.example.final_project_app.Fragment.ThreeFragment;
+import com.example.final_project_app.Fragment.TwoFragment;
+import com.example.final_project_app.MainActivity;
+
+
+public class MyFragmentPaperAdapter extends FragmentPagerAdapter {
+ private final FirstFragment b1;
+ private final TwoFragment b2;
+ private final ThreeFragment b3;
+ private final FourFragment b4;
+ private int PAGE = 4;
+
+ public MyFragmentPaperAdapter(@NonNull FragmentManager fm) {
+ super(fm);
+
+ b1 = new FirstFragment();
+ b2 = new TwoFragment();
+ b3 = new ThreeFragment();
+ b4 = new FourFragment();
+ }
+
+ @NonNull
+ @Override
+ public Fragment getItem(int position) {
+ Fragment fragment = null;
+ switch (position){
+ case MainActivity.PAGE_ONE:
+ fragment = b1;
+ break;
+
+ case MainActivity.PAGE_TWO:
+ fragment = b2;
+ break;
+
+ case MainActivity.PAGE_THREE:
+ fragment = b3;
+ break;
+
+ case MainActivity.PAGE_FOUR:
+ fragment = b4;
+ break;
+ }
+ return fragment;
+ }
+
+ @Override
+ public int getCount() {
+ return PAGE;
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/NoteRecyAdapter.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/NoteRecyAdapter.java
new file mode 100644
index 0000000..76ade87
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/NoteRecyAdapter.java
@@ -0,0 +1,121 @@
+package com.example.final_project_app.adpter;
+
+import android.annotation.SuppressLint;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.example.final_project_app.R;
+import com.example.final_project_app.db.NoteBook;
+import com.example.final_project_app.db.NoteData;
+import com.example.final_project_app.sql.UpdateNoteActivity;
+
+import java.util.List;
+
+
+public class NoteRecyAdapter extends RecyclerView.Adapter {
+ private List dataList;
+ private Context context;
+ private TextView tv_edit,tv_deledt;
+
+ public NoteRecyAdapter(List dataList, Context context) {
+ this.dataList = dataList;
+ this.context = context;
+ }
+
+ @NonNull
+ @Override
+ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ //加载布局
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.note_item_recy,parent,false);
+ MyViewHolder myViewHolder = new MyViewHolder(view);
+
+
+ return myViewHolder;
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull MyViewHolder holder, @SuppressLint("RecyclerView") int position) {
+ NoteData data = dataList.get(position);
+ holder.tv_title.setText(data.getTitle());
+ holder.tv_time.setText(data.getTimee());
+ holder.tv_content.setText(data.getContent());
+
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Dialog dg = new Dialog(context, android.R.style.ThemeOverlay_Material_Dialog_Alert);
+ View view = LayoutInflater.from(context).inflate(R.layout.note_dialog,null);
+
+ TextView tv_edit= view.findViewById(R.id.tv_edit);
+ TextView tv_delete = view.findViewById(R.id.tv_delete);
+ tv_edit.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(context, UpdateNoteActivity.class);//跳转到更新编辑页面
+ intent.putExtra("data_sql",data);
+ context.startActivity(intent);
+ }
+ });
+ tv_delete.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ //删除
+ NoteBook noteBook = new NoteBook(context);
+ int row = noteBook.deleteById(data);
+ if (row>0){
+ removeData(position);
+ Toast.makeText(context, "删除成功", Toast.LENGTH_SHORT).show();
+ }else {
+ Toast.makeText(context, "删除失败", Toast.LENGTH_SHORT).show();
+ }
+
+ }
+ });
+ dg.setContentView(view);
+ dg.show();
+ }
+ });
+ }
+//删除
+ private void removeData(int position) {
+ //从列表删除数据
+ dataList.remove(position);
+ notifyItemRemoved(position);
+ }
+
+
+ @Override
+ public int getItemCount() {
+ return dataList.size();
+ }
+
+ public void refresh(List datas) {
+ this.dataList = datas;
+ notifyDataSetChanged();
+ }
+
+ class MyViewHolder extends RecyclerView.ViewHolder{
+ private TextView tv_title;
+ private TextView tv_time;
+ private TextView tv_content;
+
+ public MyViewHolder(@NonNull View itemView) {
+ super(itemView);
+
+ tv_title = (TextView) itemView.findViewById(R.id.tv_title);
+ tv_time = (TextView) itemView.findViewById(R.id.tv_time);
+ tv_content = (TextView) itemView.findViewById(R.id.tv_content);
+
+
+ }
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/dao/UserDao.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/dao/UserDao.java
new file mode 100644
index 0000000..28be72b
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/dao/UserDao.java
@@ -0,0 +1,163 @@
+package com.example.final_project_app.dao;
+
+import android.util.Log;
+
+import com.example.final_project_app.entity.User;
+import com.example.final_project_app.utils.JDBCUtils;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.HashMap;
+
+/**
+
+ * **/
+public class UserDao {
+
+ private static final String TAG = "mysql-myapplication-UserDao";
+
+ /**
+ * function: 登录
+ * */
+ public int login(String userAccount, String userPassword){
+
+ HashMap map = new HashMap<>();
+ // 根据数据库名称,建立连接
+ Connection connection = JDBCUtils.getConn();
+ int msg = 0;
+ try {
+ // mysql简单的查询语句。这里是根据user表的userAccount字段来查询某条记录
+ String sql = "select * from user where userAccount = ?";
+ if (connection != null){// connection不为null表示与数据库建立了连接
+ PreparedStatement ps = connection.prepareStatement(sql);
+ if (ps != null){
+ Log.e(TAG,"账号:" + userAccount);
+ //根据账号进行查询
+ ps.setString(1, userAccount);
+ // 执行sql查询语句并返回结果集
+ ResultSet rs = ps.executeQuery();
+ int count = rs.getMetaData().getColumnCount();
+ //将查到的内容储存在map里
+ while (rs.next()){
+ // 注意:下标是从1开始的
+ for (int i = 1;i <= count;i++){
+ String field = rs.getMetaData().getColumnName(i);
+ map.put(field, rs.getString(field));
+ }
+ }
+ connection.close();
+ ps.close();
+
+ if (map.size()!=0){
+ StringBuilder s = new StringBuilder();
+ //寻找密码是否匹配
+ for (String key : map.keySet()){
+ if(key.equals("userPassword")){
+ if(userPassword.equals(map.get(key))){
+ msg = 1; //密码正确
+ }
+ else
+ msg = 2; //密码错误
+ break;
+ }
+ }
+ }else {
+ Log.e(TAG, "查询结果为空");
+ msg = 3;
+ }
+ }else {
+ msg = 0;
+ }
+ }else {
+ msg = 0;
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ Log.d(TAG, "异常login:" + e.getMessage());
+ msg = 0;
+ }
+ return msg;
+ }
+
+
+ /**
+ * function: 注册
+ * */
+ public boolean register(User user){
+ HashMap map = new HashMap<>();
+ // 根据数据库名称,建立连接
+ Connection connection = JDBCUtils.getConn();
+
+ try {
+ String sql = "insert into user(userAccount,userPassword,userName,userType,userState,userDel) values (?,?,?,?,?,?)";
+ if (connection != null){// connection不为null表示与数据库建立了连接
+ PreparedStatement ps = connection.prepareStatement(sql);
+ if (ps != null){
+
+ //将数据插入数据库
+ ps.setString(1,user.getUserAccount());
+ ps.setString(2,user.getUserPassword());
+ ps.setString(3,user.getUserName());
+ ps.setInt(4,user.getUserType());
+ ps.setInt(5, user.getUserState());
+ ps.setInt(6,user.getUserDel());
+
+ // 执行sql查询语句并返回结果集
+ int rs = ps.executeUpdate();
+ if(rs>0)
+ return true;
+ else
+ return false;
+ }else {
+ return false;
+ }
+ }else {
+ return false;
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ Log.e(TAG, "异常register:" + e.getMessage());
+ return false;
+ }
+
+ }
+
+ /**
+ * function: 根据账号进行查找该用户是否存在
+ * */
+ public User findUser(String userAccount) {
+
+ // 根据数据库名称,建立连接
+ Connection connection = JDBCUtils.getConn();
+ User user = null;
+ try {
+ String sql = "select * from user where userAccount = ?";
+ if (connection != null){// connection不为null表示与数据库建立了连接
+ PreparedStatement ps = connection.prepareStatement(sql);
+ if (ps != null) {
+ ps.setString(1, userAccount);
+ ResultSet rs = ps.executeQuery();
+
+ while (rs.next()) {
+ //注意:下标是从1开始
+ int id = rs.getInt(1);
+ String userAccount1 = rs.getString(2);
+ String userPassword = rs.getString(3);
+ String userName = rs.getString(4);
+ int userType = rs.getInt(5);
+ int userState = rs.getInt(6);
+ int userDel = rs.getInt(7);
+ user = new User(id, userAccount1, userPassword, userName, userType, userState, userDel);
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ Log.d(TAG, "异常findUser:" + e.getMessage());
+ return null;
+ }
+ return user;
+ }
+
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/CultrualData.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/CultrualData.java
new file mode 100644
index 0000000..ac31b57
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/CultrualData.java
@@ -0,0 +1,30 @@
+package com.example.final_project_app.db;
+
+public class CultrualData {
+ private String name;
+ private int image;
+ public CultrualData() {
+
+ }
+ public CultrualData(String name, int imageId) {
+ this.name = name;
+ this.image = imageId;
+ }
+
+ @Override
+ public String toString() {
+ return "简介:" + name ;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getImageId() {
+ return image;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/Movie.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/Movie.java
new file mode 100644
index 0000000..d860931
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/Movie.java
@@ -0,0 +1,16 @@
+package com.example.final_project_app.db;
+
+public class Movie {
+ private String moviename;
+ private String movieuri;
+ public Movie(String moviename,String movieuri){
+ this.moviename=moviename;
+ this.movieuri=movieuri;
+ }
+ public String getMoviename(){
+ return moviename;
+ }
+ public String getMovieuri(){
+ return movieuri;
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteBook.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteBook.java
new file mode 100644
index 0000000..115d3e0
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteBook.java
@@ -0,0 +1,77 @@
+package com.example.final_project_app.db;
+
+import android.annotation.SuppressLint;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class NoteBook extends SQLiteOpenHelper {
+ private List dataList;
+ private static final String DB_NAME = "note.db";
+ private static final String TABLE_NAME = "notebook";
+ private static final String CREATE_TABLE = "create table "+
+ TABLE_NAME +" (id integer primary key autoincrement," +
+ "title text,timee text,content text)";
+ public NoteBook(Context context) {
+ super(context, DB_NAME, null, 1);
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ db.execSQL(CREATE_TABLE);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int i, int i1) {
+
+
+ }
+
+ public long insert(NoteData dt){
+ SQLiteDatabase sd = getWritableDatabase();
+ ContentValues values = new ContentValues();
+ values.put("title",dt.getTitle());
+ values.put("content",dt.getContent());
+ values.put("timee",dt.getTimee());
+ return sd.insert(TABLE_NAME,null,values);
+ }
+
+ public List query() {
+ List dtlist = new ArrayList<>();
+ SQLiteDatabase sd = getWritableDatabase();
+ Cursor cursor = sd.query(TABLE_NAME,null,null,null,null,null,null);
+ if (cursor!=null) {
+ while (cursor.moveToNext()){
+ @SuppressLint("Range") String title = cursor.getString(cursor.getColumnIndex("title"));
+ @SuppressLint("Range") String content = cursor.getString(cursor.getColumnIndex("content"));
+ @SuppressLint("Range") String timee = cursor.getString(cursor.getColumnIndex("timee"));
+
+ NoteData dt_sql = new NoteData();
+ dt_sql.setTitle(title);
+ dt_sql.setContent(content);
+ dt_sql.setTimee(timee);
+ dtlist.add(dt_sql);
+ }
+ cursor.close();
+ }
+ return dtlist;
+ }
+ //更新
+ public int updateByTitle(NoteData dt) {
+ SQLiteDatabase sd = getWritableDatabase();
+ ContentValues values = new ContentValues();
+ values.put("content", dt.getContent());
+ return sd.update(TABLE_NAME, values, "title like ?", new String[]{dt.getTitle()});
+ }
+ //删除 //调用delete语句
+ public int deleteById(NoteData dt){
+ SQLiteDatabase sd = getWritableDatabase();
+ return sd.delete(TABLE_NAME,"title like ?",new String[]{dt.getTitle()});
+ }
+}
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteData.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteData.java
new file mode 100644
index 0000000..9762130
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteData.java
@@ -0,0 +1,57 @@
+package com.example.final_project_app.db;
+
+import java.io.Serializable;
+
+public class NoteData implements Serializable {
+ private String title;
+ private String content;
+ private String timee;
+ private String id;
+
+ public NoteData(String title, String content) {
+ this.title = title;
+ this.content = content;
+ }
+
+ public NoteData() {
+ }
+
+ public NoteData(String title, String content, String time, String id) {
+ this.title = title;
+ this.content = content;
+ this.timee = time;
+ this.id = id;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getTimee() {
+ return timee;
+ }
+
+ public void setTimee(String timee) {
+ this.timee = timee;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/PermissionUtiils.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/PermissionUtiils.java
new file mode 100644
index 0000000..ea6a7ec
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/PermissionUtiils.java
@@ -0,0 +1,27 @@
+package com.example.final_project_app.db;
+
+import android.Manifest;
+import android.app.Activity;
+import android.content.pm.PackageManager;
+
+import androidx.core.app.ActivityCompat;
+
+public class PermissionUtiils {
+//请求权限类
+ // Storage Permissions
+ private static final int REQUEST_EXTERNAL_STORAGE = 1;
+ private static String[] PERMISSIONS_STORAGE = {
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE};
+ public static void verifyStoragePermissions(Activity activity) {
+ // Check if we have write permission
+ int permission = ActivityCompat.checkSelfPermission(activity,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE);
+
+ if (permission != PackageManager.PERMISSION_GRANTED) {
+ // We don't have permission so prompt the user
+ ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
+ REQUEST_EXTERNAL_STORAGE);
+ }
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/bannerBean.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/bannerBean.java
new file mode 100644
index 0000000..0083fc0
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/bannerBean.java
@@ -0,0 +1,17 @@
+package com.example.final_project_app.db;
+
+public class bannerBean {
+ public int picture;
+
+ public bannerBean(int picture) {
+ this.picture = picture;
+ }
+
+ public int getPicture() {
+ return picture;
+ }
+
+ public void setPicture(int picture) {
+ this.picture = picture;
+ }
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/entity/User.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/entity/User.java
new file mode 100644
index 0000000..746cc18
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/entity/User.java
@@ -0,0 +1,84 @@
+package com.example.final_project_app.entity;
+public class User {
+
+ private int id;
+ private String userAccount;
+ private String userPassword;
+ private String userName;
+ private int userType;
+ private int userState;
+ private int userDel;
+
+
+ public User() {
+ }
+
+ public User(int id, String userAccount, String userPassword, String userName, int userType, int userState, int userDel) {
+ this.id = id;
+ this.userAccount = userAccount;
+ this.userPassword = userPassword;
+ this.userName = userName;
+ this.userType = userType;
+ this.userState = userState;
+ this.userDel = userDel;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getUserAccount() {
+ return userAccount;
+ }
+
+ public void setUserAccount(String userAccount) {
+ this.userAccount = userAccount;
+ }
+
+ public String getUserPassword() {
+ return userPassword;
+ }
+
+ public void setUserPassword(String userPassword) {
+ this.userPassword = userPassword;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public int getUserType() {
+ return userType;
+ }
+
+ public void setUserType(int userType) {
+ this.userType = userType;
+ }
+
+ public int getUserState() {
+ return userState;
+ }
+
+ public void setUserState(int userState) {
+ this.userState = userState;
+ }
+
+ public int getUserDel() {
+ return userDel;
+ }
+
+ public void setUserDel(int userDel) {
+ this.userDel = userDel;
+ }
+}
+
+
+
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/login.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/login.java
new file mode 100644
index 0000000..91487a9
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/login.java
@@ -0,0 +1,69 @@
+package com.example.final_project_app;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.final_project_app.dao.UserDao;
+
+/**
+ * function:连接页面加载首页
+ */
+public class login extends AppCompatActivity {
+ private static final String TAG = "mysql-myapplication-MainActivity";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_login);
+ }
+
+ public void reg(View view){
+ startActivity(new Intent(getApplicationContext(), register.class));
+ }
+
+
+ /**
+ * function: 登录
+ * */
+ public void login(View view){
+
+ EditText EditTextAccount = findViewById(R.id.uesrAccount);
+ EditText EditTextPassword = findViewById(R.id.userPassword);
+
+ new Thread(){
+ @Override
+ public void run() {
+ UserDao userDao = new UserDao();
+ int msg = userDao.login(EditTextAccount.getText().toString(),EditTextPassword.getText().toString());
+ hand1.sendEmptyMessage(msg);
+ }
+ }.start();
+
+ }
+
+ @SuppressLint("HandlerLeak")
+ final Handler hand1 = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ if (msg.what == 0){
+ Toast.makeText(getApplicationContext(), "登录失败", Toast.LENGTH_LONG).show();
+ } else if (msg.what == 1) {
+ Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_LONG).show();
+ startActivity(new Intent(login.this, MainActivity.class));
+ login.this.finish();
+ } else if (msg.what == 2){
+ Toast.makeText(getApplicationContext(), "密码错误", Toast.LENGTH_LONG).show();
+ } else if (msg.what == 3){
+ Toast.makeText(getApplicationContext(), "账号不存在", Toast.LENGTH_LONG).show();
+ }
+ }
+ };
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/register.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/register.java
new file mode 100644
index 0000000..ca80497
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/register.java
@@ -0,0 +1,93 @@
+package com.example.final_project_app;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.final_project_app.dao.UserDao;
+import com.example.final_project_app.entity.User;
+
+/**
+ * function:连接注册页面
+ */
+public class register extends AppCompatActivity {
+ private static final String TAG = "mysql-myapplication-register";
+ EditText userAccount = null;
+ EditText userPassword = null;
+ EditText userName = null;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_regist);
+
+ userAccount = findViewById(R.id.userAccount);
+ userPassword = findViewById(R.id.userPassword);
+ }
+
+
+ public void register(View view){
+
+ String userAccount1 = userAccount.getText().toString();
+ String userPassword1 = userPassword.getText().toString();
+ String userName1 = userName.getText().toString();
+ User user = new User();
+
+ user.setUserAccount(userAccount1);
+ user.setUserPassword(userPassword1);
+ user.setUserName(userName1);
+ user.setUserType(1);
+ user.setUserState(0);
+ user.setUserDel(0);
+
+ new Thread(){
+ @Override
+ public void run() {
+
+ int msg = 0;
+
+ UserDao userDao = new UserDao();
+
+ User uu = userDao.findUser(user.getUserAccount());
+ if(uu != null){
+ msg = 1;
+ }
+ else{
+ boolean flag = userDao.register(user);
+ if(flag){
+ msg = 2;
+ }
+ }
+ hand.sendEmptyMessage(msg);
+ }
+ }.start();
+
+ }
+ @SuppressLint("HandlerLeak")
+ final Handler hand = new Handler()
+ {
+ public void handleMessage(Message msg) {
+ if(msg.what == 0) {
+ Toast.makeText(getApplicationContext(),"注册失败",Toast.LENGTH_SHORT).show();
+ } else if(msg.what == 1) {
+ Toast.makeText(getApplicationContext(),"该账号已经存在,请换一个账号",Toast.LENGTH_SHORT).show();
+ } else if(msg.what == 2) {
+ Toast.makeText(getApplicationContext(), "注册成功", Toast.LENGTH_SHORT).show();
+ startActivity(new Intent(register.this, login.class));
+ register.this.finish();
+ Intent intent = new Intent();
+ //将想要传递的数据用putExtra封装在intent中
+ intent.putExtra("a","注册");
+ setResult(RESULT_CANCELED,intent);
+ finish();
+ }
+ }
+ };
+}
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/AddNoteActivity.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/AddNoteActivity.java
new file mode 100644
index 0000000..f7303f7
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/AddNoteActivity.java
@@ -0,0 +1,53 @@
+package com.example.final_project_app.sql;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.final_project_app.R;
+import com.example.final_project_app.db.NoteBook;
+import com.example.final_project_app.db.NoteData;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class AddNoteActivity extends AppCompatActivity {
+
+ private NoteBook nb;
+
+ private EditText et_content,et_title;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_add_note);
+ et_title= (EditText) findViewById(R.id.et_title);
+ et_content = (EditText) findViewById(R.id.et_content);
+ }
+
+ public void BtnAdd(View view) {
+ String title = et_title.getText().toString().trim();
+ String content = et_content.getText().toString().trim();
+
+ NoteData dt = new NoteData(title,content);
+ dt.setTimee(getSystemCurrentTime());
+
+ nb = new NoteBook(this);
+ long rowId = nb.insert(dt);
+ if (rowId!=-1) {
+ Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();
+ this.finish();
+ }else {
+ Toast.makeText(this, "添加失败", Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ private String getSystemCurrentTime() {
+ SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd HH:mm:ss");
+ Date datetime = new Date();
+ return sdf.format(datetime);
+ }
+}
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/UpdateNoteActivity.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/UpdateNoteActivity.java
new file mode 100644
index 0000000..22dbb2a
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/UpdateNoteActivity.java
@@ -0,0 +1,63 @@
+package com.example.final_project_app.sql;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.final_project_app.R;
+import com.example.final_project_app.db.NoteBook;
+import com.example.final_project_app.db.NoteData;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class UpdateNoteActivity extends AppCompatActivity {
+
+ private EditText et_content,et_title;
+ private NoteData dt_up;
+ private NoteBook nb;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_update_note);
+ //获取控件
+ et_title= (EditText) findViewById(R.id.et_title);
+ et_content = (EditText) findViewById(R.id.et_content);
+ //数据接收
+ Intent intent = getIntent();
+ dt_up = (NoteData) intent.getSerializableExtra("data_sql");
+ if (dt_up!=null){
+ et_title.setText(dt_up.getTitle());
+ et_content.setText(dt_up.getContent());
+ }
+ }
+
+ public void BtnUpdate(View view) {
+ String title = et_title.getText().toString().trim();
+ String content = et_content.getText().toString().trim();
+
+ NoteData dt = new NoteData(title,content);
+ dt.setTimee(getSystemCurrentTime());
+
+ nb = new NoteBook(this);
+ nb.updateByTitle(dt);
+ int row = nb.updateByTitle(dt);
+ if (row>0){
+ Toast.makeText(this, "更新成功", Toast.LENGTH_SHORT).show();
+ this.finish();
+ }else {
+ Toast.makeText(this, "更新失败", Toast.LENGTH_SHORT).show();
+ }
+ }
+ private String getSystemCurrentTime() {
+ SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd HH:mm:ss");
+ Date datetime = new Date();
+ return sdf.format(datetime);
+ }
+
+}
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/utils/JDBCUtils.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/utils/JDBCUtils.java
new file mode 100644
index 0000000..f7633ae
--- /dev/null
+++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/utils/JDBCUtils.java
@@ -0,0 +1,35 @@
+package com.example.final_project_app.utils;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+/**
+ * function: 数据库工具类,连接数据库用
+ */
+public class JDBCUtils {
+ private static final String TAG = "mysql-myapplication-JDBCUtils";
+
+ private static String driver = "com.mysql.jdbc.Driver";// MySql驱动
+
+ private static String dbName = "android_ruanjian";// 数据库名称
+
+ private static String user = "root";// 用户名
+
+ private static String password = "root";// 密码
+
+ public static Connection getConn(){
+
+ Connection connection = null;
+ try{
+ Class.forName(driver);// 动态加载类
+ String ip = "192.168.16.81";// 写成本机地址,不能写成localhost,同时手机和电脑连接的网络必须是同一个
+
+ // 尝试建立到给定数据库URL的连接
+ connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName,
+ user, password);
+
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return connection;
+ }
+}
diff --git a/Final_Project_app/app/src/main/res/drawable/back_home.jpg b/Final_Project_app/app/src/main/res/drawable/back_home.jpg
new file mode 100644
index 0000000..f9a00e7
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/back_home0.png b/Final_Project_app/app/src/main/res/drawable/back_home0.png
new file mode 100644
index 0000000..fbbb334
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home0.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/back_home01.png b/Final_Project_app/app/src/main/res/drawable/back_home01.png
new file mode 100644
index 0000000..0ef692a
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home01.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/back_home2.jpg b/Final_Project_app/app/src/main/res/drawable/back_home2.jpg
new file mode 100644
index 0000000..5a7d890
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home2.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/back_home3.png b/Final_Project_app/app/src/main/res/drawable/back_home3.png
new file mode 100644
index 0000000..65c08bd
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home3.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/back_home5.png b/Final_Project_app/app/src/main/res/drawable/back_home5.png
new file mode 100644
index 0000000..cd1cba3
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home5.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/back_home_bottom1.png b/Final_Project_app/app/src/main/res/drawable/back_home_bottom1.png
new file mode 100644
index 0000000..d268cbc
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home_bottom1.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/back_home_bottom2.png b/Final_Project_app/app/src/main/res/drawable/back_home_bottom2.png
new file mode 100644
index 0000000..2e4976e
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home_bottom2.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/back_login.png b/Final_Project_app/app/src/main/res/drawable/back_login.png
new file mode 100644
index 0000000..b67560e
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_login.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/back_regist.jpg b/Final_Project_app/app/src/main/res/drawable/back_regist.jpg
new file mode 100644
index 0000000..c37661a
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_regist.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/banner1.png b/Final_Project_app/app/src/main/res/drawable/banner1.png
new file mode 100644
index 0000000..3279cd8
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner1.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/banner2.png b/Final_Project_app/app/src/main/res/drawable/banner2.png
new file mode 100644
index 0000000..d8c02e2
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner2.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/banner3.png b/Final_Project_app/app/src/main/res/drawable/banner3.png
new file mode 100644
index 0000000..0beeb38
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner3.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/banner4.png b/Final_Project_app/app/src/main/res/drawable/banner4.png
new file mode 100644
index 0000000..17c180c
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner4.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/banner5.png b/Final_Project_app/app/src/main/res/drawable/banner5.png
new file mode 100644
index 0000000..e502a6c
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner5.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/banner6.png b/Final_Project_app/app/src/main/res/drawable/banner6.png
new file mode 100644
index 0000000..52eda13
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner6.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list1.png b/Final_Project_app/app/src/main/res/drawable/cr_list1.png
new file mode 100644
index 0000000..d0c737b
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list1.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list2.png b/Final_Project_app/app/src/main/res/drawable/cr_list2.png
new file mode 100644
index 0000000..b5f1d11
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list2.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list3.png b/Final_Project_app/app/src/main/res/drawable/cr_list3.png
new file mode 100644
index 0000000..881cfe5
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list3.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list4.png b/Final_Project_app/app/src/main/res/drawable/cr_list4.png
new file mode 100644
index 0000000..305814f
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list4.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list5.png b/Final_Project_app/app/src/main/res/drawable/cr_list5.png
new file mode 100644
index 0000000..20d88f3
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list5.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list6.png b/Final_Project_app/app/src/main/res/drawable/cr_list6.png
new file mode 100644
index 0000000..e36e5c4
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list6.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list7.png b/Final_Project_app/app/src/main/res/drawable/cr_list7.png
new file mode 100644
index 0000000..f5d3c8e
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list7.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list8.png b/Final_Project_app/app/src/main/res/drawable/cr_list8.png
new file mode 100644
index 0000000..618d12c
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list8.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list9.png b/Final_Project_app/app/src/main/res/drawable/cr_list9.png
new file mode 100644
index 0000000..6e0fe40
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list9.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/dot_dark.png b/Final_Project_app/app/src/main/res/drawable/dot_dark.png
new file mode 100644
index 0000000..2b55a03
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/dot_dark.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/dot_green.png b/Final_Project_app/app/src/main/res/drawable/dot_green.png
new file mode 100644
index 0000000..7036420
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/dot_green.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/dot_white.png b/Final_Project_app/app/src/main/res/drawable/dot_white.png
new file mode 100644
index 0000000..a7ead6a
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/dot_white.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/guide.png b/Final_Project_app/app/src/main/res/drawable/guide.png
new file mode 100644
index 0000000..6b793d4
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/guide.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/home_wait.png b/Final_Project_app/app/src/main/res/drawable/home_wait.png
new file mode 100644
index 0000000..f44f1f4
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/home_wait.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/ic_launcher_background.xml b/Final_Project_app/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Final_Project_app/app/src/main/res/drawable/ic_launcher_foreground.xml b/Final_Project_app/app/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/drawable/icon_movebofang.png b/Final_Project_app/app/src/main/res/drawable/icon_movebofang.png
new file mode 100644
index 0000000..eaedadc
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/icon_movebofang.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/icon_quit.png b/Final_Project_app/app/src/main/res/drawable/icon_quit.png
new file mode 100644
index 0000000..7a367eb
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/icon_quit.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/icon_write.png b/Final_Project_app/app/src/main/res/drawable/icon_write.png
new file mode 100644
index 0000000..5b009d7
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/icon_write.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/img.png b/Final_Project_app/app/src/main/res/drawable/img.png
new file mode 100644
index 0000000..9fb8344
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/img.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/img_1.png b/Final_Project_app/app/src/main/res/drawable/img_1.png
new file mode 100644
index 0000000..9fb8344
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/img_1.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/img_2.png b/Final_Project_app/app/src/main/res/drawable/img_2.png
new file mode 100644
index 0000000..9fb8344
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/img_2.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/intro_four.jpg b/Final_Project_app/app/src/main/res/drawable/intro_four.jpg
new file mode 100644
index 0000000..fc0a0e6
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/intro_four.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/intro_one.jpg b/Final_Project_app/app/src/main/res/drawable/intro_one.jpg
new file mode 100644
index 0000000..0e480c8
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/intro_one.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/intro_test.jpg b/Final_Project_app/app/src/main/res/drawable/intro_test.jpg
new file mode 100644
index 0000000..f634d53
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/intro_test.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/intro_three.jpg b/Final_Project_app/app/src/main/res/drawable/intro_three.jpg
new file mode 100644
index 0000000..5a1020c
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/intro_three.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/left.png b/Final_Project_app/app/src/main/res/drawable/left.png
new file mode 100644
index 0000000..0e5171c
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/left.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/page_back1.png b/Final_Project_app/app/src/main/res/drawable/page_back1.png
new file mode 100644
index 0000000..f21c33d
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/page_back1.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/page_back2.png b/Final_Project_app/app/src/main/res/drawable/page_back2.png
new file mode 100644
index 0000000..44ec2da
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/page_back2.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/page_back3.png b/Final_Project_app/app/src/main/res/drawable/page_back3.png
new file mode 100644
index 0000000..d25a375
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/page_back3.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/page_back4.jpg b/Final_Project_app/app/src/main/res/drawable/page_back4.jpg
new file mode 100644
index 0000000..1164738
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/page_back4.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/person_aboutus.png b/Final_Project_app/app/src/main/res/drawable/person_aboutus.png
new file mode 100644
index 0000000..43d95b7
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_aboutus.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/person_head.png b/Final_Project_app/app/src/main/res/drawable/person_head.png
new file mode 100644
index 0000000..d723432
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_head.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/person_help.png b/Final_Project_app/app/src/main/res/drawable/person_help.png
new file mode 100644
index 0000000..58fd71c
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_help.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/person_quite.png b/Final_Project_app/app/src/main/res/drawable/person_quite.png
new file mode 100644
index 0000000..02e156b
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_quite.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/person_upimg.png b/Final_Project_app/app/src/main/res/drawable/person_upimg.png
new file mode 100644
index 0000000..1fc4334
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_upimg.png differ
diff --git a/Final_Project_app/app/src/main/res/drawable/select_button_text.xml b/Final_Project_app/app/src/main/res/drawable/select_button_text.xml
new file mode 100644
index 0000000..a942391
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/drawable/select_button_text.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/drawable/shape_error_answer.xml b/Final_Project_app/app/src/main/res/drawable/shape_error_answer.xml
new file mode 100644
index 0000000..dfa1f9b
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/drawable/shape_error_answer.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/drawable/shape_radiobutton.xml b/Final_Project_app/app/src/main/res/drawable/shape_radiobutton.xml
new file mode 100644
index 0000000..a7e9044
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/drawable/shape_radiobutton.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/drawable/shape_radiobutton2.xml b/Final_Project_app/app/src/main/res/drawable/shape_radiobutton2.xml
new file mode 100644
index 0000000..e79e1f4
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/drawable/shape_radiobutton2.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/drawable/shape_success_answer.xml b/Final_Project_app/app/src/main/res/drawable/shape_success_answer.xml
new file mode 100644
index 0000000..a91b570
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/drawable/shape_success_answer.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/drawable/sy1.jpg b/Final_Project_app/app/src/main/res/drawable/sy1.jpg
new file mode 100644
index 0000000..573f8ba
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy1.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/sy2.jpg b/Final_Project_app/app/src/main/res/drawable/sy2.jpg
new file mode 100644
index 0000000..7caf012
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy2.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/sy3.jpg b/Final_Project_app/app/src/main/res/drawable/sy3.jpg
new file mode 100644
index 0000000..d0772a0
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy3.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/sy4.jpg b/Final_Project_app/app/src/main/res/drawable/sy4.jpg
new file mode 100644
index 0000000..69fbbd9
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy4.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/sy5.jpg b/Final_Project_app/app/src/main/res/drawable/sy5.jpg
new file mode 100644
index 0000000..8334271
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy5.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/sy6.jpg b/Final_Project_app/app/src/main/res/drawable/sy6.jpg
new file mode 100644
index 0000000..5738b82
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy6.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/sy7.jpg b/Final_Project_app/app/src/main/res/drawable/sy7.jpg
new file mode 100644
index 0000000..c059fa6
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy7.jpg differ
diff --git a/Final_Project_app/app/src/main/res/drawable/sy8.jpg b/Final_Project_app/app/src/main/res/drawable/sy8.jpg
new file mode 100644
index 0000000..3182909
Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy8.jpg differ
diff --git a/Final_Project_app/app/src/main/res/layout/activity_about_us.xml b/Final_Project_app/app/src/main/res/layout/activity_about_us.xml
new file mode 100644
index 0000000..695dab3
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_about_us.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_add_note.xml b/Final_Project_app/app/src/main/res/layout/activity_add_note.xml
new file mode 100644
index 0000000..1656a90
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_add_note.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_goods.xml b/Final_Project_app/app/src/main/res/layout/activity_goods.xml
new file mode 100644
index 0000000..b1353a2
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_goods.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_hello_gudie.xml b/Final_Project_app/app/src/main/res/layout/activity_hello_gudie.xml
new file mode 100644
index 0000000..dfb3132
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_hello_gudie.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_helpctivity.xml b/Final_Project_app/app/src/main/res/layout/activity_helpctivity.xml
new file mode 100644
index 0000000..3c73aad
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_helpctivity.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_introducttory.xml b/Final_Project_app/app/src/main/res/layout/activity_introducttory.xml
new file mode 100644
index 0000000..5b7a97d
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_introducttory.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_login.xml b/Final_Project_app/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000..89741be
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_main.xml b/Final_Project_app/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..d2169f3
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_play.xml b/Final_Project_app/app/src/main/res/layout/activity_play.xml
new file mode 100644
index 0000000..9f6460a
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_play.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_question.xml b/Final_Project_app/app/src/main/res/layout/activity_question.xml
new file mode 100644
index 0000000..953d453
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_question.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_regist.xml b/Final_Project_app/app/src/main/res/layout/activity_regist.xml
new file mode 100644
index 0000000..26e0123
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_regist.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_start.xml b/Final_Project_app/app/src/main/res/layout/activity_start.xml
new file mode 100644
index 0000000..023b883
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_start.xml
@@ -0,0 +1,9 @@
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/activity_update_note.xml b/Final_Project_app/app/src/main/res/layout/activity_update_note.xml
new file mode 100644
index 0000000..bf1216f
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/activity_update_note.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/cltrua_list.xml b/Final_Project_app/app/src/main/res/layout/cltrua_list.xml
new file mode 100644
index 0000000..0821909
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/cltrua_list.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/fg_first.xml b/Final_Project_app/app/src/main/res/layout/fg_first.xml
new file mode 100644
index 0000000..3fd118a
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/fg_first.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Final_Project_app/app/src/main/res/layout/fg_four.xml b/Final_Project_app/app/src/main/res/layout/fg_four.xml
new file mode 100644
index 0000000..c153fae
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/fg_four.xml
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/fg_three.xml b/Final_Project_app/app/src/main/res/layout/fg_three.xml
new file mode 100644
index 0000000..76ae43d
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/fg_three.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/fg_two.xml b/Final_Project_app/app/src/main/res/layout/fg_two.xml
new file mode 100644
index 0000000..6f5530d
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/fg_two.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/fragment_chex_box.xml b/Final_Project_app/app/src/main/res/layout/fragment_chex_box.xml
new file mode 100644
index 0000000..200b99c
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/fragment_chex_box.xml
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/fragment_radio_button.xml b/Final_Project_app/app/src/main/res/layout/fragment_radio_button.xml
new file mode 100644
index 0000000..a709759
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/fragment_radio_button.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/goods_item.xml b/Final_Project_app/app/src/main/res/layout/goods_item.xml
new file mode 100644
index 0000000..35f64ee
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/goods_item.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/movie_item.xml b/Final_Project_app/app/src/main/res/layout/movie_item.xml
new file mode 100644
index 0000000..0ca7d6b
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/movie_item.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/note_dialog.xml b/Final_Project_app/app/src/main/res/layout/note_dialog.xml
new file mode 100644
index 0000000..b65c50c
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/note_dialog.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/layout/note_item_recy.xml b/Final_Project_app/app/src/main/res/layout/note_item_recy.xml
new file mode 100644
index 0000000..1b2e4b4
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/layout/note_item_recy.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Final_Project_app/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..6f3b755
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Final_Project_app/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..6f3b755
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/Final_Project_app/app/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 0000000..c209e78
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/Final_Project_app/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/Final_Project_app/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..b2dfe3d
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/Final_Project_app/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/Final_Project_app/app/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 0000000..4f0f1d6
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/Final_Project_app/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/Final_Project_app/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..62b611d
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/Final_Project_app/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/Final_Project_app/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 0000000..948a307
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/Final_Project_app/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/Final_Project_app/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..1b9a695
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/Final_Project_app/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/Final_Project_app/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..28d4b77
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/Final_Project_app/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/Final_Project_app/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9287f50
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/Final_Project_app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/Final_Project_app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..aa7d642
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/Final_Project_app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/Final_Project_app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9126ae3
Binary files /dev/null and b/Final_Project_app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/Final_Project_app/app/src/main/res/raw/kaogongone.mp4 b/Final_Project_app/app/src/main/res/raw/kaogongone.mp4
new file mode 100644
index 0000000..6f268b5
Binary files /dev/null and b/Final_Project_app/app/src/main/res/raw/kaogongone.mp4 differ
diff --git a/Final_Project_app/app/src/main/res/raw/one.mp4 b/Final_Project_app/app/src/main/res/raw/one.mp4
new file mode 100644
index 0000000..16ba4b6
Binary files /dev/null and b/Final_Project_app/app/src/main/res/raw/one.mp4 differ
diff --git a/Final_Project_app/app/src/main/res/raw/three.mp4 b/Final_Project_app/app/src/main/res/raw/three.mp4
new file mode 100644
index 0000000..c2e07b4
Binary files /dev/null and b/Final_Project_app/app/src/main/res/raw/three.mp4 differ
diff --git a/Final_Project_app/app/src/main/res/raw/two.mp4 b/Final_Project_app/app/src/main/res/raw/two.mp4
new file mode 100644
index 0000000..6f268b5
Binary files /dev/null and b/Final_Project_app/app/src/main/res/raw/two.mp4 differ
diff --git a/Final_Project_app/app/src/main/res/values-night/themes.xml b/Final_Project_app/app/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..a9b51d3
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/values/colors.xml b/Final_Project_app/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..6cd4e0b
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #FF000000
+ #FFFFFFFF
+ #F40606
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/values/strings.xml b/Final_Project_app/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..91ad65a
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/values/strings.xml
@@ -0,0 +1,5 @@
+
+ Final_Project_app
+
+ Hello blank fragment
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/values/themes.xml b/Final_Project_app/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..c709fa7
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/values/themes.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/xml/backup_rules.xml b/Final_Project_app/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 0000000..fa0f996
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/main/res/xml/data_extraction_rules.xml b/Final_Project_app/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 0000000..9ee9997
--- /dev/null
+++ b/Final_Project_app/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Final_Project_app/app/src/test/java/com/example/final_project_app/ExampleUnitTest.java b/Final_Project_app/app/src/test/java/com/example/final_project_app/ExampleUnitTest.java
new file mode 100644
index 0000000..a4ae231
--- /dev/null
+++ b/Final_Project_app/app/src/test/java/com/example/final_project_app/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.final_project_app;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/Final_Project_app/build.gradle.kts b/Final_Project_app/build.gradle.kts
new file mode 100644
index 0000000..38f547d
--- /dev/null
+++ b/Final_Project_app/build.gradle.kts
@@ -0,0 +1,4 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.1.1" apply false
+}
\ No newline at end of file
diff --git a/Final_Project_app/gradle.properties b/Final_Project_app/gradle.properties
new file mode 100644
index 0000000..6802845
--- /dev/null
+++ b/Final_Project_app/gradle.properties
@@ -0,0 +1,24 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Enables namespacing of each library's R class so that its R class includes only the
+# resources declared in the library itself and none from the library's dependencies,
+# thereby reducing the size of the R class for that library
+android.nonTransitiveRClass=true
+
+#因为引用了三方库,所以添加该项来作支撑
+android.enableJetifier=true
\ No newline at end of file
diff --git a/Final_Project_app/gradle/wrapper/gradle-wrapper.jar b/Final_Project_app/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..e708b1c
Binary files /dev/null and b/Final_Project_app/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Final_Project_app/gradle/wrapper/gradle-wrapper.properties b/Final_Project_app/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..daddb37
--- /dev/null
+++ b/Final_Project_app/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon Dec 11 16:14:53 CST 2023
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/Final_Project_app/gradlew b/Final_Project_app/gradlew
new file mode 100644
index 0000000..4f906e0
--- /dev/null
+++ b/Final_Project_app/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/Final_Project_app/gradlew.bat b/Final_Project_app/gradlew.bat
new file mode 100644
index 0000000..107acd3
--- /dev/null
+++ b/Final_Project_app/gradlew.bat
@@ -0,0 +1,89 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/Final_Project_app/settings.gradle.kts b/Final_Project_app/settings.gradle.kts
new file mode 100644
index 0000000..2214ec3
--- /dev/null
+++ b/Final_Project_app/settings.gradle.kts
@@ -0,0 +1,19 @@
+pluginManagement {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+
+ }
+}
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.name = "Final_Project_app"
+include(":app")
+
\ No newline at end of file