diff --git a/MemoSystem/.gitignore b/MemoSystem/.gitignore
new file mode 100644
index 0000000..aa724b7
--- /dev/null
+++ b/MemoSystem/.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/MemoSystem/.idea/.gitignore b/MemoSystem/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/MemoSystem/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/MemoSystem/.idea/compiler.xml b/MemoSystem/.idea/compiler.xml
new file mode 100644
index 0000000..b589d56
--- /dev/null
+++ b/MemoSystem/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/.idea/deploymentTargetDropDown.xml b/MemoSystem/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..0c0c338
--- /dev/null
+++ b/MemoSystem/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/.idea/gradle.xml b/MemoSystem/.idea/gradle.xml
new file mode 100644
index 0000000..32522c1
--- /dev/null
+++ b/MemoSystem/.idea/gradle.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/.idea/migrations.xml b/MemoSystem/.idea/migrations.xml
new file mode 100644
index 0000000..f8051a6
--- /dev/null
+++ b/MemoSystem/.idea/migrations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/.idea/misc.xml b/MemoSystem/.idea/misc.xml
new file mode 100644
index 0000000..0ad17cb
--- /dev/null
+++ b/MemoSystem/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/.gitignore b/MemoSystem/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/MemoSystem/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/MemoSystem/app/build.gradle.kts b/MemoSystem/app/build.gradle.kts
new file mode 100644
index 0000000..2f149d9
--- /dev/null
+++ b/MemoSystem/app/build.gradle.kts
@@ -0,0 +1,39 @@
+plugins {
+ id("com.android.application")
+}
+
+android {
+ namespace = "com.example.memosystem"
+ compileSdk = 33
+
+ defaultConfig {
+ applicationId = "com.example.memosystem"
+ minSdk = 31
+ 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 {
+
+ 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")
+}
\ No newline at end of file
diff --git a/MemoSystem/app/proguard-rules.pro b/MemoSystem/app/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/MemoSystem/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/MemoSystem/app/src/androidTest/java/com/example/memosystem/ExampleInstrumentedTest.java b/MemoSystem/app/src/androidTest/java/com/example/memosystem/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..a6566c6
--- /dev/null
+++ b/MemoSystem/app/src/androidTest/java/com/example/memosystem/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.memosystem;
+
+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.memosystem", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/AndroidManifest.xml b/MemoSystem/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..c6c7b9c
--- /dev/null
+++ b/MemoSystem/app/src/main/AndroidManifest.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/ic_launcher-playstore.png b/MemoSystem/app/src/main/ic_launcher-playstore.png
new file mode 100644
index 0000000..cf6ab88
Binary files /dev/null and b/MemoSystem/app/src/main/ic_launcher-playstore.png differ
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/MainActivity.java b/MemoSystem/app/src/main/java/com/example/memosystem/MainActivity.java
new file mode 100644
index 0000000..9b2821f
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/MainActivity.java
@@ -0,0 +1,88 @@
+package com.example.memosystem;
+
+import android.content.Intent;
+import android.database.sqlite.SQLiteDatabase;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.memosystem.activity.AddActivity;
+import com.example.memosystem.activity.ChangePwdActivity;
+import com.example.memosystem.activity.ManageActivity;
+import com.example.memosystem.activity.MesActivity;
+import com.example.memosystem.activity.RegisterActivity;
+import com.example.memosystem.dao.AdminDao;
+import com.example.memosystem.util.DBUtil;
+
+public class MainActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+
+ //这段代码是连接数据库的
+ DBUtil dbUtil=new DBUtil(MainActivity.this);
+ SQLiteDatabase db=dbUtil.getWritableDatabase();
+ DBUtil.db=db;
+ //------------------------
+
+
+ //去注册界面
+ Button to_reg=findViewById(R.id.register_button);
+ to_reg.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Toast.makeText(MainActivity.this, "注册界面", Toast.LENGTH_SHORT).show();
+ Intent intent=new Intent(MainActivity.this, RegisterActivity.class);
+ startActivity(intent);
+ }
+ });
+ //登录按钮
+ EditText ac=findViewById(R.id.login_account);
+ EditText pwd=findViewById(R.id.login_pwd);
+
+
+ Button bu=findViewById(R.id.login_button);
+ bu.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ String acT=ac.getText().toString().trim();
+ String pwdT=pwd.getText().toString().trim();
+ if(acT.isEmpty()){
+ Toast.makeText(MainActivity.this, "请输入账号!", Toast.LENGTH_SHORT).show();
+ }else if(pwdT.isEmpty()) {
+ Toast.makeText(MainActivity.this, "请输入密码!", Toast.LENGTH_SHORT).show();
+ }else{
+
+ AdminDao adminDao=new AdminDao();
+ int a=adminDao.loginAdmin(acT,pwdT);
+ if(a==0){
+ Toast.makeText(MainActivity.this, "账号不存在或者密码错误!", Toast.LENGTH_SHORT).show();
+
+ }else{
+ Intent intent=new Intent(MainActivity.this, ManageActivity.class);
+ intent.putExtra("account",acT);
+ startActivity(intent);
+ Toast.makeText(MainActivity.this, "登录成功!", Toast.LENGTH_SHORT).show();
+ }
+
+
+ }
+
+
+ }
+ });
+
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/activity/AddActivity.java b/MemoSystem/app/src/main/java/com/example/memosystem/activity/AddActivity.java
new file mode 100644
index 0000000..80da90b
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/activity/AddActivity.java
@@ -0,0 +1,168 @@
+package com.example.memosystem.activity;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.example.memosystem.MainActivity;
+import com.example.memosystem.R;
+import com.example.memosystem.activity.listen.ChangeListen;
+import com.example.memosystem.dao.AdminDao;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.UUID;
+
+public class AddActivity extends AppCompatActivity {
+ String uuid=null;
+ String account=null;
+
+ EditText res=null;
+ EditText title=null;
+
+ TextView textView=null;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_add);
+
+ //加载菜单条
+ Toolbar toolbar = findViewById(R.id.toolbar_add);
+ setSupportActionBar(toolbar);
+
+ //获取账号
+ Intent intent=getIntent();
+
+
+
+ textView= findViewById(R.id.add_time);
+ //获取当前月份和时间
+ Calendar calendar=Calendar.getInstance();
+ SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy年MM月dd日 a HH:mm");
+ String curTime=dateFormat.format(calendar.getTime());
+
+ curTime=curTime+" | ";
+
+
+
+ curTime=curTime+"0字";
+ textView.setText(curTime);
+
+
+ //是根据下面输入下面文本框的操作时间来定的
+ res=findViewById(R.id.add_con);//输入内容的
+ title=findViewById(R.id.add_title);//输入内容的
+
+
+ //判断是添加界面还是更改界面
+ account=intent.getStringExtra("account");//获取当前账号
+ String a=intent.getStringExtra("sta");
+ if(a==null){//是添加界面
+ uuid = UUID.randomUUID().toString();//随机产生的一个UUID
+ }else{
+ intent.putExtra("sta","1");
+
+ uuid=intent.getStringExtra("id");
+ res.setText( intent.getStringExtra("con"));
+ title.setText( intent.getStringExtra("title"));
+ textView.setText(intent.getStringExtra("time"));
+
+ }
+
+ toolbar.setNavigationOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent1=new Intent(AddActivity.this,ManageActivity.class);
+ intent1.putExtra("account",account);
+ startActivity(intent1);
+ }
+ });
+
+
+
+
+ res.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ //获取当前月份和时间
+ Calendar calendar=Calendar.getInstance();
+ SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy年MM月dd日 a HH:mm");
+ String curTime=dateFormat.format(calendar.getTime());
+
+ curTime=curTime+" | ";
+
+ String text= String.valueOf(res.getText());
+ String zi=String.valueOf(text.length());
+ curTime=curTime+zi+"字";
+ textView.setText(curTime);
+ //每次输入一个字符,他都自动保存一下
+ String titles=title.getText().toString().trim();
+ String rest=res.getText().toString().trim();
+ int a=new AdminDao().saveRecord(uuid, titles,rest,account,curTime);
+
+ }
+ });
+
+
+
+
+
+ }
+
+ //构造菜单
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.add_menu,menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+
+ int itemID=item.getItemId();
+ if(itemID==R.id.add_men_save){//保存
+
+ String curTime=textView.getText().toString().trim();
+ String titles=title.getText().toString().trim();
+ String rest=res.getText().toString().trim();
+ int a=new AdminDao().saveRecord(uuid, titles,rest,account,curTime);
+ if(a==1){
+ Toast.makeText(AddActivity.this, "保存成功!", Toast.LENGTH_SHORT).show();
+ }else{
+ Toast.makeText(AddActivity.this, "保存失败!", Toast.LENGTH_SHORT).show();
+ }
+
+ }else
+ if(itemID==R.id.add_men_del){//删除
+
+ int a=new AdminDao().delRecord(uuid,account);
+ Intent intent=new Intent(AddActivity.this,ManageActivity.class);
+ intent.putExtra("account",account);
+ startActivity(intent);
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/activity/ChangePwdActivity.java b/MemoSystem/app/src/main/java/com/example/memosystem/activity/ChangePwdActivity.java
new file mode 100644
index 0000000..6e133d1
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/activity/ChangePwdActivity.java
@@ -0,0 +1,106 @@
+package com.example.memosystem.activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AbsListView;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+
+
+import com.example.memosystem.MainActivity;
+import com.example.memosystem.R;
+import com.example.memosystem.activity.listen.ChangeListen;
+import com.example.memosystem.activity.listen.TouchListen;
+import com.example.memosystem.dao.AdminDao;
+
+
+public class ChangePwdActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_change_pwd);
+
+ Intent intent=getIntent();
+ String account=intent.getStringExtra("account");
+
+ Toolbar toolbar= findViewById(R.id.toolbar_pwd);
+ this.setSupportActionBar(toolbar);
+ //返回功能
+ toolbar.setNavigationOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent1=new Intent(ChangePwdActivity.this,ManageActivity.class);
+ intent1.putExtra("account",account);
+ startActivity(intent1);
+ }
+ });
+
+
+
+
+
+ EditText one=findViewById(R.id.change_pwd_one);
+ one.addTextChangedListener(new ChangeListen(one));
+ EditText two=findViewById(R.id.change_pwd_two);
+ two.addTextChangedListener(new ChangeListen(two));
+
+
+ one.setOnTouchListener(new TouchListen(one));
+ two.setOnTouchListener(new TouchListen(two));
+
+ //初始X的状态
+ one.setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,0,0);
+ two.setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,0,0);
+
+
+
+ Button but=findViewById(R.id.change_pwd_button);
+ but.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ String ontT=one.getText().toString().trim();
+ String twoT=two.getText().toString().trim();
+ if(ontT.isEmpty()){
+ Toast.makeText(ChangePwdActivity.this, "请输入密码!", Toast.LENGTH_SHORT).show();
+ }else if(twoT.isEmpty()){
+ Toast.makeText(ChangePwdActivity.this, "请输入确认密码!", Toast.LENGTH_SHORT).show();
+ }else if(!ontT.equals(twoT)){
+ Toast.makeText(ChangePwdActivity.this, "两次密码输入不一致!", Toast.LENGTH_SHORT).show();
+ }else{
+
+ AdminDao adminDao=new AdminDao();
+ int a=adminDao.changePassword(account,ontT);
+ if(a==0){
+ Toast.makeText(ChangePwdActivity.this, "更改失败!", Toast.LENGTH_SHORT).show();
+ }else
+ if(a>=1){
+ Toast.makeText(ChangePwdActivity.this, "修改密码成功", Toast.LENGTH_SHORT).show();
+ }else{
+ Toast.makeText(ChangePwdActivity.this, "未知错误", Toast.LENGTH_SHORT).show();
+ }
+
+ }
+ }
+ });
+
+
+
+ //写返回功能
+
+
+
+ }
+
+
+
+
+}
+
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/activity/ManageActivity.java b/MemoSystem/app/src/main/java/com/example/memosystem/activity/ManageActivity.java
new file mode 100644
index 0000000..c6a7cc9
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/activity/ManageActivity.java
@@ -0,0 +1,133 @@
+package com.example.memosystem.activity;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.core.view.GravityCompat;
+import androidx.drawerlayout.widget.DrawerLayout;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.ListView;
+
+import com.example.memosystem.MainActivity;
+import com.example.memosystem.R;
+import com.example.memosystem.adapter.RecordAdapter;
+import com.example.memosystem.bean.Record;
+import com.example.memosystem.dao.AdminDao;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import com.google.android.material.navigation.NavigationView;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+public class ManageActivity extends AppCompatActivity {
+
+
+ //侧边栏的内容部分
+
+ private ListView listView;
+
+ List originalItems;
+
+ RecordAdapter adapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_manage);
+
+ Intent intent=getIntent();
+ String account=intent.getStringExtra("account");
+
+
+ //退出的功能
+ NavigationView navigationView=findViewById(R.id.navigation_view);//引入侧边栏
+ navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
+ @Override
+ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
+ int id=item.getItemId();
+ if(id==R.id.menu_to_exit){
+ finishAffinity();//退出功能
+ }
+ if(id==R.id.menu_to_login){
+ Intent intent=new Intent(ManageActivity.this, MainActivity.class);
+ startActivity(intent);
+
+ }
+
+ if(id==R.id.menu_up_pwd){
+ Intent intent=new Intent(ManageActivity.this, ChangePwdActivity.class);
+ intent.putExtra("account",account);
+ startActivity(intent);
+ }
+
+ if(id==R.id.menu_mes){
+ Intent intent=new Intent(ManageActivity.this, MesActivity.class);
+ intent.putExtra("account",account);
+ startActivity(intent);
+ }
+
+ return true;
+ }
+ });
+
+
+
+ //添加事件的点击按钮
+
+
+
+ FloatingActionButton floatingActionButton=findViewById(R.id.fab);
+ floatingActionButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent=new Intent(ManageActivity.this, AddActivity.class);
+ intent.putExtra("account",account);
+ startActivity(intent);
+ }
+ });
+
+
+ //现在开发加载列表
+ listView= findViewById(R.id.manage_list);
+ //这个列表要从哪里读取数据
+ originalItems=new ArrayList<>();
+ //读取数据
+ originalItems= new AdminDao().showRecord(account);
+ if(originalItems.size()==0){
+ listView.setAdapter(null);//让界面啥都不显示
+ }else{
+
+ adapter = new RecordAdapter(this, originalItems);
+ listView.setAdapter(adapter);
+ }
+
+ Toolbar toolbar= findViewById(R.id.toolbar_man);
+ this.setSupportActionBar(toolbar);
+ //返回功能
+ DrawerLayout drawerLayout =findViewById(R.id.drawer);
+ toolbar.setNavigationOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ drawerLayout.openDrawer(GravityCompat.START);
+ }
+ });
+
+
+
+
+
+
+
+ //originalItems=new ArrayList<>();
+
+ }
+}
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/activity/MesActivity.java b/MemoSystem/app/src/main/java/com/example/memosystem/activity/MesActivity.java
new file mode 100644
index 0000000..e536b40
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/activity/MesActivity.java
@@ -0,0 +1,134 @@
+package com.example.memosystem.activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.RadioButton;
+import android.widget.Toast;
+
+import com.example.memosystem.MainActivity;
+import com.example.memosystem.R;
+import com.example.memosystem.activity.listen.ChangeListen;
+import com.example.memosystem.activity.listen.TouchListen;
+import com.example.memosystem.dao.AdminDao;
+
+import java.util.Map;
+
+public class MesActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_mes);
+
+
+ Intent intent=getIntent();
+ String account=intent.getStringExtra("account");
+ //需要查看个人信息
+
+ Map result = new AdminDao().showAccountMes(account);
+
+
+
+
+
+
+
+ Toolbar toolbar= findViewById(R.id.toolbar_mes);
+ this.setSupportActionBar(toolbar);
+ //返回功能
+ toolbar.setNavigationOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent1=new Intent(MesActivity.this,ManageActivity.class);
+ intent1.putExtra("account",account);
+ startActivity(intent1);
+ }
+ });
+
+
+
+
+ //姓名
+ EditText name=findViewById(R.id.change_name);//姓名
+ name.setText(result.get("name"));
+
+
+
+ RadioButton man=findViewById(R.id.change_man);//男
+ RadioButton woman=findViewById(R.id.change_woman);//女
+ if(result.get("sex").equals("男")){
+ man.setChecked(true);
+ }else{
+ woman.setChecked(true);
+ }
+
+
+ EditText age=findViewById(R.id.change_age);//男
+ age.setText(result.get("age"));
+
+ EditText phone=findViewById(R.id.change_phone);//男
+ phone.setText(result.get("phone"));
+
+
+ clearText(name);
+ clearText(age);
+ clearText(phone);
+
+
+
+ Button change_pwd_button = findViewById(R.id.change_pwd_button);
+ change_pwd_button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ String nameT=name.getText().toString().trim();
+ String ageT=age.getText().toString().trim();
+ String phoneT=phone.getText().toString().trim();
+
+ if(nameT.isEmpty()){
+ Toast.makeText(MesActivity.this, "请输入姓名!", Toast.LENGTH_SHORT).show();
+ }else if(phoneT.isEmpty()){
+ Toast.makeText(MesActivity.this, "请输入联系方式!", Toast.LENGTH_SHORT).show();
+ }else if(ageT.isEmpty()){
+ Toast.makeText(MesActivity.this, "请输入年纪!", Toast.LENGTH_SHORT).show();
+ }else{
+
+ String sex="女";
+ if(man.isChecked()){
+ sex="男";
+ }
+
+ int a=new AdminDao().changeMes(account,nameT,sex,phoneT,ageT);
+ if(a>=1){
+ Toast.makeText(MesActivity.this, "更改个人信息成功!", Toast.LENGTH_SHORT).show();
+ }
+ if(a==0){
+ Toast.makeText(MesActivity.this, "更改失败!", Toast.LENGTH_SHORT).show();
+ }
+ if(a==-1){
+ Toast.makeText(MesActivity.this, "未知错误!", Toast.LENGTH_SHORT).show();
+ }
+
+ }
+
+ }
+ });
+ }
+
+ private void clearText(EditText text){
+
+
+
+ text.addTextChangedListener(new ChangeListen(text));
+ text.setOnTouchListener(new TouchListen( text));
+ //初始X的状态
+ text.setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,0,0);
+
+ }
+}
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/activity/RegisterActivity.java b/MemoSystem/app/src/main/java/com/example/memosystem/activity/RegisterActivity.java
new file mode 100644
index 0000000..663d591
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/activity/RegisterActivity.java
@@ -0,0 +1,98 @@
+package com.example.memosystem.activity;
+/**
+ *
+ * 这是一个注册界面
+ */
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.RadioButton;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.memosystem.MainActivity;
+import com.example.memosystem.R;
+import com.example.memosystem.dao.AdminDao;
+
+public class RegisterActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_register);
+
+
+ EditText account = findViewById(R.id.register_account);//账号
+ EditText pwd = findViewById(R.id.register_pwd);//密码
+ EditText name = findViewById(R.id.register_name);//姓名
+ RadioButton woman = findViewById(R.id.register_woman);//女
+ RadioButton man = findViewById(R.id.register_man);//男
+ man.setChecked(true);
+
+ EditText phone = findViewById(R.id.register_phone);//手机号
+ EditText age = findViewById(R.id.register_age);
+
+ Button button = findViewById(R.id.register_button);//点击注册按钮
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ String accountT=account.getText().toString().trim();
+ String pwdT=pwd.getText().toString().trim();
+ String nameT=name.getText().toString().trim();
+ String phoneT=phone.getText().toString().trim();
+ String ageT=age.getText().toString().trim();
+
+
+ if(accountT.isEmpty()){
+ Toast.makeText(RegisterActivity.this, "请输入账号!", Toast.LENGTH_SHORT).show();
+ }else if(pwdT.isEmpty()){
+ Toast.makeText(RegisterActivity.this, "请输入密码!", Toast.LENGTH_SHORT).show();
+ }else if(nameT.isEmpty()){
+ Toast.makeText(RegisterActivity.this, "请输入姓名!", Toast.LENGTH_SHORT).show();
+ }else if(phoneT.isEmpty()){
+ Toast.makeText(RegisterActivity.this, "请输入联系方式!", Toast.LENGTH_SHORT).show();
+ }else if(ageT.isEmpty()){
+ Toast.makeText(RegisterActivity.this, "请输入年纪!", Toast.LENGTH_SHORT).show();
+ }else{
+
+ String sex="女";
+ if(man.isChecked()){
+ sex="男";
+ }
+ AdminDao adminDao=new AdminDao();
+ int a= adminDao.registerAdmin(accountT,pwdT,nameT,sex,phoneT,ageT);
+ if(a==1){
+ Toast.makeText(RegisterActivity.this, "注册成功!", Toast.LENGTH_SHORT).show();
+ }else{
+ Toast.makeText(RegisterActivity.this, "注册失败,账号冲突!", Toast.LENGTH_SHORT).show();
+ }
+
+
+ }
+
+
+
+
+
+ }
+ });
+
+
+ Button Login = findViewById(R.id.register_to_login_button);//点击注册按钮 实现返回按钮
+ Login.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Toast.makeText(RegisterActivity.this, "登录界面", Toast.LENGTH_SHORT).show();
+ Intent intent=new Intent(RegisterActivity.this, MainActivity.class);
+ startActivity(intent);
+ }
+ });
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/activity/listen/ChangeListen.java b/MemoSystem/app/src/main/java/com/example/memosystem/activity/listen/ChangeListen.java
new file mode 100644
index 0000000..7db167b
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/activity/listen/ChangeListen.java
@@ -0,0 +1,38 @@
+package com.example.memosystem.activity.listen;
+
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.widget.EditText;
+
+import com.example.memosystem.R;
+
+public class ChangeListen implements TextWatcher {
+
+ private EditText ed=null;
+
+ public ChangeListen(EditText ed){
+ this.ed=ed;
+ }
+
+
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+
+ if(editable.length()>0){
+
+ ed.setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,R.drawable.x,0);
+ }else{
+ ed.setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,0,0);
+ }
+ }
+}
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/activity/listen/TouchListen.java b/MemoSystem/app/src/main/java/com/example/memosystem/activity/listen/TouchListen.java
new file mode 100644
index 0000000..ae7fd3a
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/activity/listen/TouchListen.java
@@ -0,0 +1,39 @@
+package com.example.memosystem.activity.listen;
+
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.EditText;
+
+public class TouchListen implements View.OnTouchListener{
+
+
+ private EditText ed=null;
+
+ public TouchListen(EditText ed){
+ this.ed=ed;
+ }
+
+ @Override
+ public boolean onTouch(View view, MotionEvent motionEvent) {
+
+
+ //
+ int start=ed.getWidth()-ed.getPaddingEnd()-ed.getPaddingRight();
+ int end=ed.getWidth();//整个文本的宽带
+
+ float x = motionEvent.getX();
+
+
+ boolean isButtonClicked=x>start&&x {
+
+
+ private List items;
+ public RecordAdapter( Context context, List items) {
+ super(context, R.layout.manage_list,items);
+ this.items=items;
+ }
+
+
+
+ @Override
+ public View getView(int position,View convertView,ViewGroup parent) {
+
+ if( convertView==null){
+
+ LayoutInflater inflater=LayoutInflater.from(getContext());
+ convertView=inflater.inflate(R.layout.manage_list,parent,false);
+ }
+
+
+ TextView title=convertView.findViewById(R.id.title);
+ TextView con=convertView.findViewById(R.id.con);
+ TextView time=convertView.findViewById(R.id.time);
+
+
+
+
+
+
+ Record res = items.get(position);
+ title.setText(res.getTitle());
+ con.setText(res.getCon());
+ time.setText(res.getTim());
+
+ convertView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent =new Intent(getContext(), AddActivity.class);//目标i界面
+ intent.putExtra("sta","1");
+ intent.putExtra("account",res.getUid());//账号
+ intent.putExtra("id",res.getId());
+ intent.putExtra("title",res.getTitle());
+ intent.putExtra("con",res.getCon());
+ intent.putExtra("time",res.getTim());
+ getContext().startActivity(intent);//打开目标界面
+ }
+ });
+ return convertView;
+ }
+}
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/bean/Record.java b/MemoSystem/app/src/main/java/com/example/memosystem/bean/Record.java
new file mode 100644
index 0000000..9f1e762
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/bean/Record.java
@@ -0,0 +1,73 @@
+package com.example.memosystem.bean;
+
+public class Record {
+
+ private String id;
+ private String title;
+ private String con;
+ private String uid;
+ private String tim;
+ //alt install
+
+ @Override
+ public String toString() {
+ return "Record{" +
+ "id='" + id + '\'' +
+ ", title='" + title + '\'' +
+ ", con='" + con + '\'' +
+ ", uid='" + uid + '\'' +
+ ", tim='" + tim + '\'' +
+ '}';
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getCon() {
+ return con;
+ }
+
+ public void setCon(String con) {
+ this.con = con;
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid;
+ }
+
+ public String getTim() {
+ return tim;
+ }
+
+ public void setTim(String tim) {
+ this.tim = tim;
+ }
+
+ public Record() {
+ }
+
+ public Record(String id, String title, String con, String uid, String tim) {
+ this.id = id;
+ this.title = title;
+ this.con = con;
+ this.uid = uid;
+ this.tim = tim;
+ }
+}
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/dao/AdminDao.java b/MemoSystem/app/src/main/java/com/example/memosystem/dao/AdminDao.java
new file mode 100644
index 0000000..50c6cb2
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/dao/AdminDao.java
@@ -0,0 +1,154 @@
+package com.example.memosystem.dao;
+
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+
+import com.example.memosystem.bean.Record;
+import com.example.memosystem.dao.impl.AdminDaoImpl;
+import com.example.memosystem.util.DBUtil;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class AdminDao implements AdminDaoImpl {
+
+ SQLiteDatabase db= DBUtil.db;
+ @Override
+ public int registerAdmin(String ...da) {
+ try {
+ db.execSQL("INSERT INTO d_admin VALUES(?,?,?,?,?,?)",da);
+ return 1;
+ }catch (Exception e){
+ return -1;
+ }
+
+ }
+
+ @Override
+ public int loginAdmin(String... da) {
+
+ int a=0;
+ Cursor res = db.rawQuery("select * from d_admin where s_id=? and s_pwd=?", da);
+ if(res.moveToNext()){
+ a++;
+ }
+ return a;
+
+
+
+
+ }
+
+ /**
+ * 修改密码 账号 密码
+ * @param da
+ * @return
+ */
+ @Override
+ public int changePassword(String... da) {
+
+ ContentValues values=new ContentValues();
+ values.put("s_pwd", da[1]);
+
+ String das[]={da[0]};
+ try{
+ return db.update("d_admin",values,"s_id=?",das);
+ }catch (Exception e){
+ return -1;
+ }
+
+
+ }
+
+ public int changeMes(String ...da){
+ ContentValues values=new ContentValues();
+ values.put("s_name", da[1]);
+ values.put("s_sex", da[2]);
+ values.put("s_phone", da[3]);
+ values.put("s_age", da[4]);
+ String das[]={da[0]};
+ try{
+ return db.update("d_admin",values,"s_id=?",das);
+ }catch (Exception e){
+ return -1;
+ }
+ }
+
+
+ public Map showAccountMes(String account){
+
+ Map map=new HashMap<>();
+ String da[]={account};
+ Cursor result = db.rawQuery("select s_name,s_sex,s_phone,s_age from d_admin where s_id=?", da);
+ while(result.moveToNext()){
+ //姓名
+
+ //姓名
+ //手机号
+ //年纪
+ String name = result.getString(0);
+ String sex= result.getString(1);
+ String phone= result.getString(2);
+ String age= result.getString(3);
+
+
+ map.put("name",name);
+ map.put("sex",sex);
+ map.put("phone",phone);
+ map.put("age",age);
+ }
+ return map;
+ }
+
+ /**
+ * 删除信息
+ * @param da
+ * @return
+ */
+ @Override
+ public int delRecord(String... da) {
+ try {
+ db.execSQL("delete from d_record where s_id=? and s_uid=?",da);
+ return 1;
+ }catch (Exception e){
+ return -1;
+ }
+
+
+ }
+
+
+ public int saveRecord(String ...da){//id 标题 内容 用户ID 时间
+ try {
+ db.execSQL("INSERT INTO d_record VALUES(?,?,?,?,?)",da);
+ return 1;
+ }catch (Exception e){
+
+ String daa[]={da[1],da[2],da[4],da[0],da[3]};
+ try {
+ db.execSQL("update d_record set s_title=? ,s_con=?,s_time=? where s_id=? and s_uid=?",daa);
+ return 1;
+ }catch (Exception ee){
+ e.printStackTrace();
+ ee.printStackTrace();
+ return -1;
+ }
+ }
+ }
+
+ public List showRecord(String id){
+ String da[]={id};
+ List re=new ArrayList<>();//存储所有备忘录的
+ Cursor res = db.rawQuery("select * from d_record where s_uid=?",da);
+ while(res.moveToNext()){
+ Record record=new Record(res.getString(0),res.getString(1),res.getString(2),res.getString(3),res.getString(4));
+ re.add(record);
+ }
+
+ return re;
+
+ }
+}
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/dao/impl/AdminDaoImpl.java b/MemoSystem/app/src/main/java/com/example/memosystem/dao/impl/AdminDaoImpl.java
new file mode 100644
index 0000000..499dd60
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/dao/impl/AdminDaoImpl.java
@@ -0,0 +1,39 @@
+package com.example.memosystem.dao.impl;
+
+import com.example.memosystem.bean.Record;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 这个是接口用于限制操作
+ */
+public interface AdminDaoImpl {
+
+ /**
+ * 登录的方法
+ */
+ public int registerAdmin(String ...da);
+
+ /**
+ * 登录的方法
+ * @param da
+ * @return
+ */
+
+ public int loginAdmin(String ...da);
+
+
+ public int changePassword(String ...da);
+
+
+ public int changeMes(String ...da);
+
+ public Map showAccountMes(String account);
+
+
+ public int delRecord(String ...da);
+ public int saveRecord(String ...da);
+
+ public List showRecord(String id);
+}
diff --git a/MemoSystem/app/src/main/java/com/example/memosystem/util/DBUtil.java b/MemoSystem/app/src/main/java/com/example/memosystem/util/DBUtil.java
new file mode 100644
index 0000000..adceba9
--- /dev/null
+++ b/MemoSystem/app/src/main/java/com/example/memosystem/util/DBUtil.java
@@ -0,0 +1,56 @@
+package com.example.memosystem.util;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+//alt +回车
+public class DBUtil extends SQLiteOpenHelper {
+
+
+ private static final String DATABASE_NAME="db_memo.db";//数据库名字
+
+ public static SQLiteDatabase db=null;//用他来操作数据库
+
+
+ private static final int DATABASE_VERSION=3;//每一次对数据库脚本的更新都需要将这个数字进行加1
+
+
+
+ public DBUtil(Context context) {
+ super(context, DATABASE_NAME, null, DATABASE_VERSION,null);
+ }
+
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {//数据库初始化加载的代码
+
+ db.execSQL("PRAGMA foreign_keys = false");
+ db.execSQL("drop table if exists d_admin");//如果这个表存在则删除
+ db.execSQL("CREATE TABLE d_admin (s_id varchar(20) primary key," +
+ " s_pwd varchar(20)," +
+ " s_name varchar(20)," +
+ " s_sex varchar(20)," +
+ " s_phone varchar(20)," +
+ " s_age varchar(20) )");
+ db.execSQL("INSERT INTO d_admin VALUES('root','123456','小铭','男','5696331','18')");
+ //-------------管理员 表
+ //编号 标题 内容 时间
+ db.execSQL("drop table if exists d_record");//如果这个表存在则删除
+ db.execSQL("CREATE TABLE d_record (s_id varchar(50) primary key," +
+ " s_title varchar(20)," +
+ " s_con text," +
+ " s_uid varchar(20)," +//用户ID
+ " s_time varchar(20) )");
+ db.execSQL("INSERT INTO d_record VALUES('1','记录一下今天的生活','今天吃了好多零食,看了很多电视剧.','root','2023年9月10日 上午 12:56')");
+ // db.execSQL("PRAGMA foreign_keys = true");
+
+
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {//数据库变动则执行
+ onCreate(sqLiteDatabase);
+
+ }
+}
diff --git a/MemoSystem/app/src/main/res/drawable/add.png b/MemoSystem/app/src/main/res/drawable/add.png
new file mode 100644
index 0000000..f3029c3
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/add.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/back.png b/MemoSystem/app/src/main/res/drawable/back.png
new file mode 100644
index 0000000..c75e6a7
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/back.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/bg.jpg b/MemoSystem/app/src/main/res/drawable/bg.jpg
new file mode 100644
index 0000000..7670ce5
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/bg.jpg differ
diff --git a/MemoSystem/app/src/main/res/drawable/bgfa.jpg b/MemoSystem/app/src/main/res/drawable/bgfa.jpg
new file mode 100644
index 0000000..1f98634
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/bgfa.jpg differ
diff --git a/MemoSystem/app/src/main/res/drawable/bghua.png b/MemoSystem/app/src/main/res/drawable/bghua.png
new file mode 100644
index 0000000..fe51109
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/bghua.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/bglv.jpg b/MemoSystem/app/src/main/res/drawable/bglv.jpg
new file mode 100644
index 0000000..9649a56
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/bglv.jpg differ
diff --git a/MemoSystem/app/src/main/res/drawable/button_style.xml b/MemoSystem/app/src/main/res/drawable/button_style.xml
new file mode 100644
index 0000000..6cea55f
--- /dev/null
+++ b/MemoSystem/app/src/main/res/drawable/button_style.xml
@@ -0,0 +1,22 @@
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/drawable/change_mes_edit_style.xml b/MemoSystem/app/src/main/res/drawable/change_mes_edit_style.xml
new file mode 100644
index 0000000..3b25c60
--- /dev/null
+++ b/MemoSystem/app/src/main/res/drawable/change_mes_edit_style.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/drawable/change_mes_manage_style.xml b/MemoSystem/app/src/main/res/drawable/change_mes_manage_style.xml
new file mode 100644
index 0000000..e8e4da3
--- /dev/null
+++ b/MemoSystem/app/src/main/res/drawable/change_mes_manage_style.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/drawable/change_pwd.png b/MemoSystem/app/src/main/res/drawable/change_pwd.png
new file mode 100644
index 0000000..56b579b
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/change_pwd.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/change_pwd_button_style.xml b/MemoSystem/app/src/main/res/drawable/change_pwd_button_style.xml
new file mode 100644
index 0000000..68cb1d9
--- /dev/null
+++ b/MemoSystem/app/src/main/res/drawable/change_pwd_button_style.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/drawable/change_pwd_edit_style.xml b/MemoSystem/app/src/main/res/drawable/change_pwd_edit_style.xml
new file mode 100644
index 0000000..a9c1f8f
--- /dev/null
+++ b/MemoSystem/app/src/main/res/drawable/change_pwd_edit_style.xml
@@ -0,0 +1,27 @@
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/drawable/change_style.xml b/MemoSystem/app/src/main/res/drawable/change_style.xml
new file mode 100644
index 0000000..3444057
--- /dev/null
+++ b/MemoSystem/app/src/main/res/drawable/change_style.xml
@@ -0,0 +1,10 @@
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/drawable/dui.png b/MemoSystem/app/src/main/res/drawable/dui.png
new file mode 100644
index 0000000..f427fe0
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/dui.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/exit.png b/MemoSystem/app/src/main/res/drawable/exit.png
new file mode 100644
index 0000000..4ea3fe1
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/exit.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/grzy.png b/MemoSystem/app/src/main/res/drawable/grzy.png
new file mode 100644
index 0000000..33f789b
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/grzy.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/ic_launcher_background.xml b/MemoSystem/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/MemoSystem/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MemoSystem/app/src/main/res/drawable/ic_launcher_foreground.xml b/MemoSystem/app/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/MemoSystem/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/drawable/icon.png b/MemoSystem/app/src/main/res/drawable/icon.png
new file mode 100644
index 0000000..3409681
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/icon.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/key.png b/MemoSystem/app/src/main/res/drawable/key.png
new file mode 100644
index 0000000..50d0e16
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/key.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/line.png b/MemoSystem/app/src/main/res/drawable/line.png
new file mode 100644
index 0000000..189f5f6
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/line.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/ljt.png b/MemoSystem/app/src/main/res/drawable/ljt.png
new file mode 100644
index 0000000..d3cc12c
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/ljt.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/mbg.jpg b/MemoSystem/app/src/main/res/drawable/mbg.jpg
new file mode 100644
index 0000000..29963cc
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/mbg.jpg differ
diff --git a/MemoSystem/app/src/main/res/drawable/mbgfa.png b/MemoSystem/app/src/main/res/drawable/mbgfa.png
new file mode 100644
index 0000000..2da1e75
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/mbgfa.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/mbghua.png b/MemoSystem/app/src/main/res/drawable/mbghua.png
new file mode 100644
index 0000000..c3932c9
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/mbghua.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/mbglv.png b/MemoSystem/app/src/main/res/drawable/mbglv.png
new file mode 100644
index 0000000..42d0b62
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/mbglv.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/mes.png b/MemoSystem/app/src/main/res/drawable/mes.png
new file mode 100644
index 0000000..e83b044
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/mes.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/radio_style.xml b/MemoSystem/app/src/main/res/drawable/radio_style.xml
new file mode 100644
index 0000000..480a67d
--- /dev/null
+++ b/MemoSystem/app/src/main/res/drawable/radio_style.xml
@@ -0,0 +1,15 @@
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/drawable/to.png b/MemoSystem/app/src/main/res/drawable/to.png
new file mode 100644
index 0000000..65798d7
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/to.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/tx.png b/MemoSystem/app/src/main/res/drawable/tx.png
new file mode 100644
index 0000000..842fefa
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/tx.png differ
diff --git a/MemoSystem/app/src/main/res/drawable/x.png b/MemoSystem/app/src/main/res/drawable/x.png
new file mode 100644
index 0000000..51f4742
Binary files /dev/null and b/MemoSystem/app/src/main/res/drawable/x.png differ
diff --git a/MemoSystem/app/src/main/res/layout/activity_add.xml b/MemoSystem/app/src/main/res/layout/activity_add.xml
new file mode 100644
index 0000000..79c4b0a
--- /dev/null
+++ b/MemoSystem/app/src/main/res/layout/activity_add.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MemoSystem/app/src/main/res/layout/activity_change_pwd.xml b/MemoSystem/app/src/main/res/layout/activity_change_pwd.xml
new file mode 100644
index 0000000..c2e6d5b
--- /dev/null
+++ b/MemoSystem/app/src/main/res/layout/activity_change_pwd.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MemoSystem/app/src/main/res/layout/activity_main.xml b/MemoSystem/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..9c70f2b
--- /dev/null
+++ b/MemoSystem/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MemoSystem/app/src/main/res/layout/activity_manage.xml b/MemoSystem/app/src/main/res/layout/activity_manage.xml
new file mode 100644
index 0000000..ccadb51
--- /dev/null
+++ b/MemoSystem/app/src/main/res/layout/activity_manage.xml
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MemoSystem/app/src/main/res/layout/activity_mes.xml b/MemoSystem/app/src/main/res/layout/activity_mes.xml
new file mode 100644
index 0000000..d3ea357
--- /dev/null
+++ b/MemoSystem/app/src/main/res/layout/activity_mes.xml
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MemoSystem/app/src/main/res/layout/activity_register.xml b/MemoSystem/app/src/main/res/layout/activity_register.xml
new file mode 100644
index 0000000..bbf783f
--- /dev/null
+++ b/MemoSystem/app/src/main/res/layout/activity_register.xml
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MemoSystem/app/src/main/res/layout/head_layout.xml b/MemoSystem/app/src/main/res/layout/head_layout.xml
new file mode 100644
index 0000000..3cc75ba
--- /dev/null
+++ b/MemoSystem/app/src/main/res/layout/head_layout.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/MemoSystem/app/src/main/res/layout/manage_list.xml b/MemoSystem/app/src/main/res/layout/manage_list.xml
new file mode 100644
index 0000000..7c8bcfa
--- /dev/null
+++ b/MemoSystem/app/src/main/res/layout/manage_list.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/menu/add_menu.xml b/MemoSystem/app/src/main/res/menu/add_menu.xml
new file mode 100644
index 0000000..7f5ff52
--- /dev/null
+++ b/MemoSystem/app/src/main/res/menu/add_menu.xml
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/menu/manage_menu.xml b/MemoSystem/app/src/main/res/menu/manage_menu.xml
new file mode 100644
index 0000000..48ce3b2
--- /dev/null
+++ b/MemoSystem/app/src/main/res/menu/manage_menu.xml
@@ -0,0 +1,25 @@
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/MemoSystem/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..036d09b
--- /dev/null
+++ b/MemoSystem/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/MemoSystem/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..036d09b
--- /dev/null
+++ b/MemoSystem/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/MemoSystem/app/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 0000000..5a251c0
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/MemoSystem/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..f9c7689
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/MemoSystem/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..78dec18
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/MemoSystem/app/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 0000000..4e47623
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/MemoSystem/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..60b7ad1
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/MemoSystem/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..88e2e91
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/MemoSystem/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 0000000..2af137e
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/MemoSystem/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..e89b866
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/MemoSystem/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..296ef24
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/MemoSystem/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..d7d5a27
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/MemoSystem/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..83cc3a5
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/MemoSystem/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..bce3c60
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/MemoSystem/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..6589b6d
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/MemoSystem/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
new file mode 100644
index 0000000..6747d1d
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ
diff --git a/MemoSystem/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/MemoSystem/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..6e1f97e
Binary files /dev/null and b/MemoSystem/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/MemoSystem/app/src/main/res/values-night/themes.xml b/MemoSystem/app/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..451b6f7
--- /dev/null
+++ b/MemoSystem/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/values/colors.xml b/MemoSystem/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..c8524cd
--- /dev/null
+++ b/MemoSystem/app/src/main/res/values/colors.xml
@@ -0,0 +1,5 @@
+
+
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/values/ic_launcher_background.xml b/MemoSystem/app/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000..c5d5899
--- /dev/null
+++ b/MemoSystem/app/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/values/strings.xml b/MemoSystem/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..1bddd0f
--- /dev/null
+++ b/MemoSystem/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ 备忘录
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/values/themes.xml b/MemoSystem/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..6e65d1e
--- /dev/null
+++ b/MemoSystem/app/src/main/res/values/themes.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/xml/backup_rules.xml b/MemoSystem/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 0000000..fa0f996
--- /dev/null
+++ b/MemoSystem/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/main/res/xml/data_extraction_rules.xml b/MemoSystem/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 0000000..9ee9997
--- /dev/null
+++ b/MemoSystem/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MemoSystem/app/src/test/java/com/example/memosystem/ExampleUnitTest.java b/MemoSystem/app/src/test/java/com/example/memosystem/ExampleUnitTest.java
new file mode 100644
index 0000000..e9c1617
--- /dev/null
+++ b/MemoSystem/app/src/test/java/com/example/memosystem/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.memosystem;
+
+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/MemoSystem/build.gradle.kts b/MemoSystem/build.gradle.kts
new file mode 100644
index 0000000..b772b05
--- /dev/null
+++ b/MemoSystem/build.gradle.kts
@@ -0,0 +1,7 @@
+buildscript {
+ val agp_version by extra("8.0.1")
+}
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.0.1" apply false
+}
\ No newline at end of file
diff --git a/MemoSystem/gradle.properties b/MemoSystem/gradle.properties
new file mode 100644
index 0000000..3e927b1
--- /dev/null
+++ b/MemoSystem/gradle.properties
@@ -0,0 +1,21 @@
+# 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
\ No newline at end of file
diff --git a/MemoSystem/gradle/wrapper/gradle-wrapper.jar b/MemoSystem/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..e708b1c
Binary files /dev/null and b/MemoSystem/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/MemoSystem/gradle/wrapper/gradle-wrapper.properties b/MemoSystem/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..d05f628
--- /dev/null
+++ b/MemoSystem/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Aug 22 17:59:58 CST 2023
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/MemoSystem/gradlew b/MemoSystem/gradlew
new file mode 100644
index 0000000..4f906e0
--- /dev/null
+++ b/MemoSystem/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/MemoSystem/gradlew.bat b/MemoSystem/gradlew.bat
new file mode 100644
index 0000000..107acd3
--- /dev/null
+++ b/MemoSystem/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/MemoSystem/settings.gradle.kts b/MemoSystem/settings.gradle.kts
new file mode 100644
index 0000000..b16c261
--- /dev/null
+++ b/MemoSystem/settings.gradle.kts
@@ -0,0 +1,18 @@
+pluginManagement {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.name = "MemoSystem"
+include(":app")
+
\ No newline at end of file