diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..15a15b2 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/render.experimental.xml b/.idea/render.experimental.xml new file mode 100644 index 0000000..8ec256a --- /dev/null +++ b/.idea/render.experimental.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index caa2f61..75f3c15 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,6 +27,10 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + api 'com.hankcs:hanlp:portable-1.7.2' + implementation 'com.google.android.material:material:1.0.0' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) diff --git a/app/src/main/java/Schema/InitSchema.java b/app/src/main/java/Schema/InitSchema.java new file mode 100644 index 0000000..4880e71 --- /dev/null +++ b/app/src/main/java/Schema/InitSchema.java @@ -0,0 +1,13 @@ +package Schema; + +import java.sql.Connection; + +public class InitSchema { + + /** + * 连接到数据库 + */ + public static Connection getConnect(){ + return null; + } +} diff --git a/app/src/main/java/Schema/OperaSchema.java b/app/src/main/java/Schema/OperaSchema.java new file mode 100644 index 0000000..4895cde --- /dev/null +++ b/app/src/main/java/Schema/OperaSchema.java @@ -0,0 +1,70 @@ +package Schema; + +import android.content.DialogInterface; +import android.gesture.Prediction; + +import androidx.appcompat.app.AlertDialog; + +import com.example.cmknowledgegraph.LoginActivity; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +public class OperaSchema { + + /** + * 连接数据库,进行登录,参数是手机号(string),密码(string) + * 用户表(UserInfo),手机号,用户名,密码 + * 登陆成功返回true,登陆失败返回false + */ + public static boolean longin(String tel,String password){ + Connection conn=InitSchema.getConnect(); + ResultSet rst; + PreparedStatement pstmt; + try { + pstmt=conn.prepareStatement("select paw\n" + + "from UserInfo\n" + + "where tel='"+tel+"'"); + rst=pstmt.executeQuery(); + String paw=rst.getString("paw"); + if(password.equals(paw)){ + return true; + } + else return false; + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } + + /** + * 注册方法,参数是手机号,昵称,密码 + * @return 注册成功返回true,失败返回false + */ + public static boolean register(String tel,String nickname,String password){ + + Connection conn=InitSchema.getConnect(); + PreparedStatement pstmt; + ResultSet rst; + try { + pstmt=conn.prepareStatement("select paw\n" + + "from UserInfo\n" + + "where tel='"+tel+"'"); + rst=pstmt.executeQuery(); + if(rst==null){//注册成功 + //把用户信息填入表中 + pstmt=conn.prepareStatement("insert into UserInfo(tel,nickname,paw) values(?,?,?)"); + pstmt.setString(1,tel); + pstmt.setString(2,nickname); + pstmt.setString(3,password); + pstmt.executeUpdate(); + return true; + }else return false; + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/LoginActivity.java b/app/src/main/java/com/example/cmknowledgegraph/LoginActivity.java new file mode 100644 index 0000000..a36970f --- /dev/null +++ b/app/src/main/java/com/example/cmknowledgegraph/LoginActivity.java @@ -0,0 +1,69 @@ +package com.example.cmknowledgegraph; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; + +import Schema.OperaSchema; + +public class LoginActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + + final EditText tel_edit=findViewById(R.id.id_edit); + final EditText password_edit=findViewById(R.id.password_edit); + + /** + * 登录按钮,传递参数:手机号(int)、密码(string) + */ + Button login_btn=findViewById(R.id.login_btn); + login_btn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + //获取手机号和密码 + String tel=tel_edit.getText().toString().trim(); + String password=password_edit.getText().toString(); + //调用数据库类中的方法进行登录 + boolean isLogin= OperaSchema.longin(tel,password); + /** + * 登陆成功,返回上一个界面,即个人中心界面,刷新个人中心界面 + * 即,改变登录按钮为欢迎按钮 + */ + if(isLogin) { + finish();//返回个人中心Activity + //刷新个人中心Activity + + }else{//登陆失败提醒 + AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); + builder.setTitle("登陆提醒");// 设置标题 + builder.setMessage("登陆失败");// 为对话框设置内容 + builder.create().show();// 使用show()方法显示对话框 + } + } + }); + + //TextView注册跳转 + TextView register_text=findViewById(R.id.register_text); + register_text.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //跳转到注册页面 + Intent intent=new Intent(); + intent.setClass(LoginActivity.this,RegisterActivity.class); + startActivity(intent); + } + }); + } + + +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/MainContent.java b/app/src/main/java/com/example/cmknowledgegraph/MainContent.java new file mode 100644 index 0000000..b9182bd --- /dev/null +++ b/app/src/main/java/com/example/cmknowledgegraph/MainContent.java @@ -0,0 +1,19 @@ +package com.example.cmknowledgegraph; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.fragment.app.Fragment; + +public class MainContent extends Fragment { + + //创建视图 + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate( R.layout.activity_main, container, false ); //要加载的layout文件 + } +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/PersonContent.java b/app/src/main/java/com/example/cmknowledgegraph/PersonContent.java new file mode 100644 index 0000000..cfc4df8 --- /dev/null +++ b/app/src/main/java/com/example/cmknowledgegraph/PersonContent.java @@ -0,0 +1,17 @@ +package com.example.cmknowledgegraph; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.fragment.app.Fragment; + +public class PersonContent extends Fragment { + + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate( R.layout.activity_personality_center, container, false ); //要加载的layout文件 + } +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/PersonalityCenterActivity.java b/app/src/main/java/com/example/cmknowledgegraph/PersonalityCenterActivity.java new file mode 100644 index 0000000..d4c64da --- /dev/null +++ b/app/src/main/java/com/example/cmknowledgegraph/PersonalityCenterActivity.java @@ -0,0 +1,28 @@ +package com.example.cmknowledgegraph; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; + +public class PersonalityCenterActivity extends AppCompatActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_personality_center); + + Button longin_pc_btn=(Button) findViewById(R.id.login_pc_button); + longin_pc_btn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //跳转到LoginActivity + Intent intent=new Intent(); + intent.setClass(PersonalityCenterActivity.this,LoginActivity.class); + startActivity(intent); + System.out.println("点击个人中心的登录按钮"); + } + }); + } +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/RegisterActivity.java b/app/src/main/java/com/example/cmknowledgegraph/RegisterActivity.java new file mode 100644 index 0000000..b28defd --- /dev/null +++ b/app/src/main/java/com/example/cmknowledgegraph/RegisterActivity.java @@ -0,0 +1,65 @@ +package com.example.cmknowledgegraph; + +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; + +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; + +import Schema.OperaSchema; + +public class RegisterActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_register); + + final EditText tel_edit=findViewById(R.id.tel_register_edit); + final EditText password_edit=findViewById(R.id.password_edit); + final EditText nickname_edit=findViewById(R.id.nickname_register_edit); + + /** + * 注册按钮,传递参数:手机号(int),密码(string),昵称(string) + */ + Button register =findViewById(R.id.register_btn); + register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //获取手机号,密码,昵称 + String tel=tel_edit.getText().toString().trim(); + String password=password_edit.getText().toString(); + String NickName=nickname_edit.getText().toString(); + //调用数据库类方法进行注册 + boolean isRegister= OperaSchema.register(tel,NickName,password); + if(isRegister){ + //注册成功,对话框提醒 + AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this); + builder.setTitle("注册提醒");// 设置标题 + // builder.setIcon(R.drawable.ic_launcher);//设置图标 + builder.setMessage("注册成功");// 为对话框设置内容 + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface arg0, int arg1) { + // TODO Auto-generated method stub + //返回登录页面 + finish(); + } + }); + builder.create().show();// 使用show()方法显示对话框 + }else{//注册失败 + //注册失败提醒 + AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this); + builder.setTitle("注册提醒");// 设置标题 + // builder.setIcon(R.drawable.ic_launcher);//设置图标 + builder.setMessage("注册失败");// 为对话框设置内容 + } + + } + }); + } +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/SearchActivity.java b/app/src/main/java/com/example/cmknowledgegraph/SearchActivity.java new file mode 100644 index 0000000..ebc88a3 --- /dev/null +++ b/app/src/main/java/com/example/cmknowledgegraph/SearchActivity.java @@ -0,0 +1,14 @@ +package com.example.cmknowledgegraph; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +public class SearchActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_search); + } +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/SearchContent.java b/app/src/main/java/com/example/cmknowledgegraph/SearchContent.java new file mode 100644 index 0000000..9b0614b --- /dev/null +++ b/app/src/main/java/com/example/cmknowledgegraph/SearchContent.java @@ -0,0 +1,19 @@ +package com.example.cmknowledgegraph; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.fragment.app.Fragment; + +public class SearchContent extends Fragment { + + + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate( R.layout.activity_search, container, false ); //要加载的layout文件 + } + +} diff --git a/app/src/main/res/drawable/ic_dashboard_black_24dp.xml b/app/src/main/res/drawable/ic_dashboard_black_24dp.xml new file mode 100644 index 0000000..46fc8de --- /dev/null +++ b/app/src/main/res/drawable/ic_dashboard_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_black_24dp.xml b/app/src/main/res/drawable/ic_home_black_24dp.xml new file mode 100644 index 0000000..f8bb0b5 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_notifications_black_24dp.xml b/app/src/main/res/drawable/ic_notifications_black_24dp.xml new file mode 100644 index 0000000..78b75c3 --- /dev/null +++ b/app/src/main/res/drawable/ic_notifications_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/person.png b/app/src/main/res/drawable/person.png new file mode 100644 index 0000000..186112f Binary files /dev/null and b/app/src/main/res/drawable/person.png differ diff --git a/app/src/main/res/drawable/search.png b/app/src/main/res/drawable/search.png new file mode 100644 index 0000000..91f18a8 Binary files /dev/null and b/app/src/main/res/drawable/search.png differ diff --git a/app/src/main/res/drawable/search_back.jpg b/app/src/main/res/drawable/search_back.jpg new file mode 100644 index 0000000..c9440f1 Binary files /dev/null and b/app/src/main/res/drawable/search_back.jpg differ diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml new file mode 100644 index 0000000..4030adf --- /dev/null +++ b/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + +