通讯录APP功能说明:
APP需要实现如下功能:
a.普通用户:
(1)用户管理。包括用户注册,用户登录、用户信息管理。
(2)显示联系人。用户登录成功后,可以显示所有该用户的联系人。
(3)添加联系人。用户登录成功后,可增加和用户联系人。
(4)查找联系人。用户登录成功后,可以精确查找指定联系人或按类别查找联系人。
(5)删除指定条件联系人。用户登录成功后,可以删除用户个人相关的联系人。
(6)修改联系人信息。用户登录成功后,可以修改用户相关的联系人信息。
b.管理员用户:
对系统的用户进行管理。包括重置密码、注销用户等功能。
效果展示
MySQLiteOpenHelper.java
源码在资源处可下载
https://download.csdn.net/download/2302_79553009/89665188
登录与注册
JAVA
Mainactivity.java
package com.example.addressbook;
import androidx.appcompat.app.AppCompatActivity;
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 com.example.addressbook.Util.ToastUtil;
public class MainActivity extends AppCompatActivity {
private Button login,reset;
private TextView register;
private EditText edName,edPassword;
private MySQLiteOpenHelper mySQLiteOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySQLiteOpenHelper = new MySQLiteOpenHelper(this);
init();
}
public void init(){
login = findViewById(R.id.login);
register = findViewById(R.id.register);
edName = findViewById(R.id.edName);
edPassword = findViewById(R.id.edPassword);
reset = findViewById(R.id.reset);
}
public void login(View view) {
String name = edName.getText().toString().trim();
String password = edPassword.getText().toString().trim();
int login = mySQLiteOpenHelper.U_login(name,password);
if(login == 1){
ToastUtil.toastShort(this,"登录成功!欢迎管理员!");
Intent intent = new Intent(this,ManagerAbActivity.class);
startActivity(intent);
}else if(login == 2){
ToastUtil.toastShort(this,"登录成功!欢迎会员!");
Intent intent = new Intent(this,UserAbActivity.class);
startActivity(intent);
}else{
ToastUtil.toastShort(this,"登录失败");
}
}
public void register(View view) {
Intent intent = new Intent(this, RegisterActivity.class);
startActivity(intent);
}
public void reset(View view) {
edName.setText("");
edPassword.setText("");
}
}
Register.java
package com.example.addressbook;
import androidx.appcompat.app.AppCompatActivity;
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 com.example.addressbook.Util.ToastUtil;
import com.example.addressbook.bean.User;
public class RegisterActivity extends AppCompatActivity {
private EditText name1,password1;
private TextView l;
private TextView register;
private Button reset;
private MySQLiteOpenHelper mySQLiteOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mySQLiteOpenHelper = new MySQLiteOpenHelper(this);
init();
}
public void init(){
name1 = findViewById(R.id.edName);
password1 = findViewById(R.id.edPassword);
register = findViewById(R.id.register);
l = findViewById(R.id.L);
reset = findViewById(R.id.reset);
}
public void register(View view) {
String name = name1.getText().toString().trim();
String password = password1.getText().toString().trim();
User u = new User(name,password);
long r = mySQLiteOpenHelper.U_register(u);
if(r!=-1){
ToastUtil.toastShort(this,"注册成功");
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
}else{
ToastUtil.toastShort(this,"注册失败");
}
}
public void Log(View view) {
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
}
public void reset(View view) {
name1.setText("");
password1.setText("");
}
}
XML
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:background="@drawable/bg">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_marginTop="30dp"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
android:layout_gravity="center"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/title"
android:layout_marginTop="10dp"
android:layout_gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="50dp"
android:text="用户登录"
android:textSize="32sp"
android:textColor="@color/pink"
android:textStyle="bold"/>
<TextView
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户注册"
android:textSize="32sp"
android:textColor="@color/lblue"
android:textStyle="bold"
android:onClick="register"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginTop="20dp">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="账号:"
android:textSize="30sp"
android:textStyle="bold"
android:textColor="@color/grey"/>
<EditText
android:id="@+id/edName"
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:gravity="center"
android:background="@drawable/edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginTop="30dp">
<TextView
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textStyle="bold"
android:text="密码:"
android:textSize="30sp"
android:textColor="@color/grey"/>
<EditText
android:id="@+id/edPassword"
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:gravity="center"
android:background="@drawable/edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="50dp"
android:gravity="center">
<Button
android:id="@+id/login"
android:layout_width="160dp"
android:layout_height="60dp"
android:text="登录"
android:textColor="@color/white"
android:textSize="28sp"
android:background="@drawable/round_button"
android:textStyle="bold"
android:onClick="login"/>
<Button
android:id="@+id/reset"
android:layout_width="160dp"
android:layout_height="60dp"
android:textColor="@color/white"
android:text="重置"
android:textSize="28sp"
android:background="@drawable/round_button"
android:textStyle="bold"
android:layout_marginLeft="20dp"
android:onClick="reset"/>
</LinearLayout>
</LinearLayout>
activity_register.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RegisterActivity"
android:orientation="vertical"
android:background="@drawable/bg">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_marginTop="30dp"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
android:layout_gravity="center"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/title"
android:layout_marginTop="10dp"
android:layout_gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:gravity="center">
<TextView
android:id="@+id/L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="50dp"
android:text="用户登录"
android:textSize="32sp"
android:textColor="@color/lblue"
android:textStyle="bold"
android:onClick="Log"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户注册"
android:textSize="32sp"
android:textColor="@color/pink"
android:textStyle="bold"
android:onClick="register"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginTop="20dp">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="账号:"
android:textSize="30sp"
android:textStyle="bold"
android:textColor="@color/grey"/>
<EditText
android:id="@+id/edName"
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:gravity="center"
android:background="@drawable/edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginTop="30dp">
<TextView
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textStyle="bold"
android:text="密码:"
android:textSize="30sp"
android:textColor="@color/grey"/>
<EditText
android:id="@+id/edPassword"
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:gravity="center"
android:background="@drawable/edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="50dp"
android:gravity="center">
<Button
android:id="@+id/register"
android:layout_width="160dp"
android:layout_height="60dp"
android:text="确定注册"
android:textSize="28sp"
android:textColor="@color/white"
android:background="@drawable/round_button"
android:textStyle="bold"
android:onClick="register"/>
<Button
android:id="@+id/reset"
android:layout_width="160dp"
android:layout_height="60dp"
android:textColor="@color/white"
android:text="重置"
android:textSize="28sp"
android:background="@drawable/round_button"
android:textStyle="bold"
android:layout_marginLeft="20dp"
android:onClick="reset"/>
</LinearLayout>
</LinearLayout>
用户端
联系人展示
java
UserAbActivity.java
package com.example.addressbook;
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.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import com.example.addressbook.adapter.PeopleAdapter;
import com.example.addressbook.bean.People;
import com.example.addressbook.dao.PeopleDao;
import java.util.Comparator;
import java.util.List;
public class UserAbActivity extends AppCompatActivity {
private MySQLiteOpenHelper mySQLiteOpenHelper;
private EditText search;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_ab);
Toolbar toolbar = this.findViewById(R.id.toolbar);
mySQLiteOpenHelper = new MySQLiteOpenHelper(this);
//加载列表
List<People> result = mySQLiteOpenHelper.getAllPeople();
ListView listView = findViewById(R.id.book);
if(result.size()==0){
listView.setAdapter(null);//无显示
}else{
//需要对list按字母进行排序
result.sort(new Comparator<People>() {
@Override
public int compare(People people, People t1) {
return people.getBeginLetter().compareTo(t1.getBeginLetter());
}
});
PeopleAdapter peopleAdapter = new PeopleAdapter(UserAbActivity.this,result);
listView.setAdapter(peopleAdapter);
}
init();
//搜索功能
search.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
listView.setAdapter(null);
String title = search.getText().toString();
List<People> temp = null;
if(title.isEmpty()){
temp = mySQLiteOpenHelper.getAllPeople();
}else{
temp = mySQLiteOpenHelper.getAllPeople(title);
}
temp.sort(new Comparator<People>() {
@Override
public int compare(People people, People t1) {
return people.getBeginLetter().compareTo(t1.getBeginLetter());
}
});
PeopleAdapter peopleAdapter = new PeopleAdapter(UserAbActivity.this,temp);
listView.setAdapter(peopleAdapter);
return false;
}
});
search.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) {
listView.setAdapter(null);
String title = search.getText().toString();
List<People> temp = null;
if(title.isEmpty()){
temp = mySQLiteOpenHelper.getAllPeople();
}else{
temp = mySQLiteOpenHelper.getAllPeople(title);
}
temp.sort(new Comparator<People>() {
@Override
public int compare(People people, People t1) {
return people.getBeginLetter().compareTo(t1.getBeginLetter());
}
});
PeopleAdapter peopleAdapter = new PeopleAdapter(UserAbActivity.this,temp);
listView.setAdapter(peopleAdapter);
}
});
}
public void init(){
search = findViewById(R.id.search);
}
public void details(View view) {
// Intent intent = new Intent(UserAbActivity.this,DetailsActivity.class);
// intent.putExtra("id",people.getId());
// startActivity(intent);
}
public void addData(View view) {
Intent intent = new Intent(UserAbActivity.this,AddActivity.class);
startActivity(intent);
}
}
xml
activity_user_ab.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".UserAbActivity"
android:orientation="vertical"
android:background="@color/white">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:title="通讯录"
app:titleTextColor="@color/dark"/>
<EditText
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="搜索联系人"
android:background="@drawable/search_border"
android:padding="9dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:drawableLeft="@drawable/search"/>
<ListView
android:id="@+id/book"
android:layout_width="match_parent"
android:layout_height="550dp"
android:divider="#000000" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:backgroundTint="#dd0288D1"
app:elevation="6dp"
app:srcCompat="@drawable/add"
android:layout_gravity="center"
android:layout_marginLeft="150dp"
android:clickable="true"
android:focusable="true"
android:layout_marginTop="15dp"
android:onClick="addData"
/>
</LinearLayout>
book_style.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/letter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/grey"
android:paddingLeft="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp">
<ImageView
android:id="@+id/picture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/man"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="10dp">
<TextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="12345678912"
android:textSize="16sp"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="张三"/>
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow"
android:layout_gravity="center"
android:layout_marginLeft="200dp"
android:onClick="details"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
联系人详情
java
DetailsActivity.java
package com.example.addressbook;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.addressbook.Util.ToastUtil;
import com.example.addressbook.bean.People;
public class DetailsActivity extends AppCompatActivity {
private ImageView head;
private TextView detail_name;
private TextView detail_number;
private TextView detail_remark;
private TextView detail_sex;
private MySQLiteOpenHelper mySQLiteOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
mySQLiteOpenHelper = new MySQLiteOpenHelper(this);
init();
//详情信息同步
String id = getIntent().getStringExtra("id");
People people = mySQLiteOpenHelper.getOnePeople(id);
//根据性别设置头像
if(people.getSex().equals("男")){
head.setImageResource(R.drawable.details_man);
}else{
head.setImageResource(R.drawable.details_woman);
}
//设置名字
detail_name.setText(people.getName());
detail_number.setText(people.getPhoneNumber());
detail_sex.setText(people.getSex());
detail_remark.setText(people.getRemark());
}
private void init(){
head = findViewById(R.id.head);
detail_name = findViewById(R.id.detail_name);
detail_number = findViewById(R.id.detail_number);
detail_remark = findViewById(R.id.detail_remark);
detail_sex = findViewById(R.id.detail_sex);
}
public void details_delete(View view) {
String id = getIntent().getStringExtra("id");
mySQLiteOpenHelper.dl_delete(id);
ToastUtil.toastShort(DetailsActivity.this,"联系人删除成功!");
Intent intent = new Intent(DetailsActivity.this,UserAbActivity.class);
startActivity(intent);
}
public void details_update(View view) {
String id = getIntent().getStringExtra("id");
Intent intent = new Intent(DetailsActivity.this,UpdateActivity.class);
intent.putExtra("id",id);
startActivity(intent);
}
}
xml
activity_details.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DetailsActivity"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:orientation="vertical"
android:background="@drawable/details_bg">
<ImageView
android:id="@+id/head"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/details_man"
android:padding="20dp"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/detail_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="32sp"
android:text="张三"
android:layout_marginLeft="55dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="430dp"
android:orientation="vertical"
android:background="#ccf5e4">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电话:"
android:textColor="@color/lblue"
android:textStyle="bold"
android:textSize="30sp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/detail_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="12345678912"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="30sp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"/>
<Button
android:id="@+id/detail_phone"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@drawable/details_phone"
android:layout_marginTop="15dp"
android:layout_marginLeft="20dp"
android:foreground="?selectableItemBackground"/>
<Button
android:id="@+id/detail_sms"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@drawable/details_sms"
android:layout_marginTop="15dp"
android:layout_marginLeft="10dp"
android:foreground="?selectableItemBackground"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别:"
android:textColor="@color/lblue"
android:textStyle="bold"
android:textSize="30sp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/detail_sex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="30sp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="备注:"
android:textColor="@color/lblue"
android:textStyle="bold"
android:textSize="30sp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/detail_remark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Android开发工程师"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="30sp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="horizontal"
android:gravity="center">
<Button
android:id="@+id/detail_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/round_button"
android:text="删除"
android:textSize="24sp"
android:textStyle="bold"
android:layout_gravity="center"
android:layout_marginRight="50dp"
android:onClick="details_delete"
android:foreground="?selectableItemBackground"/>
<Button
android:id="@+id/detail_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/round_button"
android:text="编辑"
android:textSize="24sp"
android:textStyle="bold"
android:layout_gravity="center"
android:onClick="details_update"
android:foreground="?selectableItemBackground"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
联系人信息修改
java
AddActivity.java
package com.example.addressbook;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import com.example.addressbook.Util.ToastUtil;
public class AddActivity extends AppCompatActivity {
private EditText add_name,add_number,add_remark;
private RadioButton rb_man,rb_woman;
private MySQLiteOpenHelper mySQLiteOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
mySQLiteOpenHelper = new MySQLiteOpenHelper(this);
init();
}
private void init(){
add_name=findViewById(R.id.add_name);
add_number=findViewById(R.id.add_number);
add_remark=findViewById(R.id.add_remark);
rb_man=findViewById(R.id.rb_man);
rb_woman=findViewById(R.id.rb_woman);
}
public void im_add(View view) {
Intent intent = getIntent();
String id = intent.getStringExtra("id");
String name=add_name.getText().toString().trim();
String number=add_number.getText().toString().trim();
String remark=add_remark.getText().toString().trim();
if(name.isEmpty()){
ToastUtil.toastShort(AddActivity.this,"请输入姓名!");
}else if(number.isEmpty()){
ToastUtil.toastShort(AddActivity.this,"请输入手机号!");
}else if(remark.isEmpty()){
ToastUtil.toastShort(AddActivity.this,"请输入备注!");
}
String sex="女";
if(rb_man.isChecked()){
sex="男";
}
mySQLiteOpenHelper.add_data(name,number,sex,remark);
ToastUtil.toastShort(AddActivity.this,"添加成功");
}
}
updateActivity.java
package com.example.addressbook;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import com.example.addressbook.Util.ToastUtil;
import com.example.addressbook.bean.People;
public class UpdateActivity extends AppCompatActivity {
private EditText up_name,up_number,up_remark;
private RadioButton rb_man,rb_woman;
private MySQLiteOpenHelper mySQLiteOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_updateactivity);
mySQLiteOpenHelper = new MySQLiteOpenHelper(this);
init();
Intent intent = getIntent();
String id = intent.getStringExtra("id");
People people=mySQLiteOpenHelper.getOnePeople(id);
up_name.setText(people.getName());
up_number.setText(people.getPhoneNumber());
if(people.getSex().equals("男")){
rb_man.setChecked(true);
}else{
rb_woman.setChecked(true);
}
up_remark.setText(people.getRemark());
}
private void init(){
up_name=findViewById(R.id.up_name);
up_number=findViewById(R.id.up_number);
up_remark=findViewById(R.id.up_remark);
rb_man=findViewById(R.id.rb_man);
rb_woman=findViewById(R.id.rb_woman);
}
public void im_update(View view) {
Intent intent = getIntent();
String id = intent.getStringExtra("id");
String name=up_name.getText().toString().trim();
String number=up_number.getText().toString().trim();
String sex="女";
if(rb_man.isChecked()){
sex="男";
}
String remark=up_remark.getText().toString().trim();
if(name.isEmpty()){
ToastUtil.toastShort(UpdateActivity.this,"请输入姓名!");
}else if(number.isEmpty()){
ToastUtil.toastShort(UpdateActivity.this,"请输入手机号!");
}else if(remark.isEmpty()){
ToastUtil.toastShort(UpdateActivity.this,"请输入备注!");
}
Intent intent1 = new Intent(UpdateActivity.this,UserAbActivity.class);
startActivity(intent1);
mySQLiteOpenHelper.updateData(name,number,sex,remark,id);
ToastUtil.toastShort(UpdateActivity.this,"更改成功");
// People people = new People();
// people.setName(name);
// people.setPhoneNumber(number);
// people.setRemark(remark);
// people.setSex(sex);
//
// long rowId = mySQLiteOpenHelper.updateData(people);
// if(rowId>0){
// //工具类ToastUtil的使用
// Intent intent = new Intent(UpdateActivity.this,DetailsActivity.class);
// startActivity(intent);
// ToastUtil.toastShort(this,"更新成功!");
// }else{
// ToastUtil.toastShort(this,"没有数据被更新!");
// }
}
}
xml
activity_add.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AddActivity"
android:orientation="vertical"
android:background="@drawable/update_bg">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_marginTop="30dp"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
android:layout_gravity="center"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/title"
android:layout_marginTop="10dp"
android:layout_gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp"
android:layout_marginTop="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
style="@style/MyTextStyle"
android:text="姓名"
android:textStyle="bold"/>
<EditText
android:id="@+id/add_name"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="18sp"
android:layout_marginLeft="10dp"
android:gravity="center"
android:inputType="text"
android:background="@drawable/up_edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:inputType="number"
style="@style/MyTextStyle"
android:text="电话"
android:textStyle="bold"/>
<EditText
android:id="@+id/add_number"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="18sp"
android:layout_marginLeft="10dp"
android:gravity="center"
android:inputType="text"
android:background="@drawable/up_edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
style="@style/MyTextStyle"
android:text="性别"
android:textStyle="bold"/>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginTop="10dp">
<RadioButton
android:id="@+id/rb_man"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"/>
<RadioButton
android:id="@+id/rb_woman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:layout_marginLeft="30dp"/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
style="@style/MyTextStyle"
android:text="备注"
android:textStyle="bold"/>
<EditText
android:id="@+id/add_remark"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="18sp"
android:layout_marginLeft="10dp"
android:gravity="center"
android:inputType="text"
android:background="@drawable/up_edittext_border"/>
</LinearLayout>
<Button
android:text="添加"
android:onClick="im_add"
style="@style/MyButton"
android:background="@drawable/round_button"
android:layout_marginTop="30dp"
/>
</LinearLayout>
activity_update.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".UpdateActivity"
android:orientation="vertical"
android:background="@drawable/update_bg">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_marginTop="30dp"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
android:layout_gravity="center"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/title"
android:layout_marginTop="10dp"
android:layout_gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp"
android:layout_marginTop="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
style="@style/MyTextStyle"
android:text="姓名"
android:textStyle="bold"/>
<EditText
android:id="@+id/up_name"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="18sp"
android:layout_marginLeft="10dp"
android:gravity="center"
android:inputType="text"
android:background="@drawable/up_edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:inputType="number"
style="@style/MyTextStyle"
android:text="电话"
android:textStyle="bold"/>
<EditText
android:id="@+id/up_number"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="18sp"
android:layout_marginLeft="10dp"
android:gravity="center"
android:inputType="text"
android:background="@drawable/up_edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
style="@style/MyTextStyle"
android:text="性别"
android:textStyle="bold"/>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginTop="10dp">
<RadioButton
android:id="@+id/rb_man"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"/>
<RadioButton
android:id="@+id/rb_woman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:layout_marginLeft="30dp"/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
style="@style/MyTextStyle"
android:text="备注"
android:textStyle="bold"/>
<EditText
android:id="@+id/up_remark"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="18sp"
android:layout_marginLeft="10dp"
android:gravity="center"
android:inputType="text"
android:background="@drawable/up_edittext_border"/>
</LinearLayout>
<Button
android:text="修改"
android:onClick="im_update"
style="@style/MyButton"
android:background="@drawable/round_button"
android:layout_marginTop="30dp"
/>
</LinearLayout>
管理员端
用户展示及注销用户与重置密码
java
ManagerAbActivity.java
package com.example.addressbook;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.os.Bundle;
import android.widget.ListView;
import com.example.addressbook.adapter.PeopleAdapter;
import com.example.addressbook.adapter.UserAdapter;
import com.example.addressbook.bean.People;
import com.example.addressbook.bean.User;
import java.util.Comparator;
import java.util.List;
public class ManagerAbActivity extends AppCompatActivity {
private MySQLiteOpenHelper mySQLiteOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_manager_ab);
mySQLiteOpenHelper = new MySQLiteOpenHelper(this);
//加载列表
List<User> result = mySQLiteOpenHelper.getAllUser();
ListView listView = findViewById(R.id.book);
if(result.size()==0){
listView.setAdapter(null);//无显示
}else{
UserAdapter userAdapter = new UserAdapter(ManagerAbActivity.this,result);
listView.setAdapter(userAdapter);
}
}
}
ManagerImActivity.java
package com.example.addressbook;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.addressbook.Util.ToastUtil;
import com.example.addressbook.bean.People;
import com.example.addressbook.bean.User;
public class ManagerImActivity extends AppCompatActivity {
private EditText user_name;
private EditText user_password;
private MySQLiteOpenHelper mySQLiteOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_manager_im);
mySQLiteOpenHelper = new MySQLiteOpenHelper(this);
init();
//信息同步
Intent intent = getIntent();
String id = intent.getStringExtra("id");
User user=mySQLiteOpenHelper.getOneUser(id);
user_name.setText(user.getName());
user_password.setText(user.getPassword());
}
private void init(){
user_name = findViewById(R.id.user_name);
user_password = findViewById(R.id.user_passowrd);
}
public void user_reset(View view) {
Intent intent = getIntent();
String id = intent.getStringExtra("id");
String name=user_name.getText().toString().trim();
String password=user_password.getText().toString().trim();
if(name.isEmpty()){
ToastUtil.toastShort(ManagerImActivity.this,"请输入姓名!");
}else if(password.isEmpty()){
ToastUtil.toastShort(ManagerImActivity.this,"请输入密码!");
}
Intent intent1 = new Intent(ManagerImActivity.this,ManagerAbActivity.class);
startActivity(intent1);
mySQLiteOpenHelper.updateUser(name,password,id);
ToastUtil.toastShort(ManagerImActivity.this,"更改成功");
}
public void user_delete(View view) {
String id = getIntent().getStringExtra("id");
mySQLiteOpenHelper.user_delete(id);
ToastUtil.toastShort(ManagerImActivity.this,"联系人删除成功!");
Intent intent = new Intent(ManagerImActivity.this,ManagerAbActivity.class);
startActivity(intent);
}
}
xml
activity_manager_ab.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ManagerAbActivity"
android:orientation="vertical"
android:background="@color/white">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户信息"
android:textColor="@color/black"
android:textSize="32sp"
android:textStyle="bold"
android:layout_gravity="center"/>
<ListView
android:id="@+id/book"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#000000" />
</LinearLayout>
activity_manager_im.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ManagerImActivity"
android:orientation="vertical"
android:background="@drawable/update_bg">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal"
android:layout_marginTop="30dp"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
android:layout_gravity="center"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/title"
android:layout_marginTop="10dp"
android:layout_gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp"
android:layout_marginTop="50dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
style="@style/MyTextStyle"
android:text="姓名"
android:textStyle="bold"/>
<EditText
android:id="@+id/user_name"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="18sp"
android:layout_marginLeft="10dp"
android:gravity="center"
android:inputType="text"
android:background="@drawable/up_edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp"
android:layout_marginTop="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:inputType="number"
style="@style/MyTextStyle"
android:text="密码"
android:textStyle="bold"/>
<EditText
android:id="@+id/user_passowrd"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="18sp"
android:layout_marginLeft="10dp"
android:gravity="center"
android:inputType="text"
android:background="@drawable/up_edittext_border"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="horizontal"
android:gravity="center">
<Button
android:text="注销用户"
android:onClick="user_delete"
android:layout_width="150dp"
style="@style/MyButton"
android:background="@drawable/round_button"
android:layout_marginRight="20dp"
/>
<Button
android:text="重置密码"
android:onClick="user_reset"
style="@style/MyButton"
android:layout_width="150dp"
android:background="@drawable/round_button"
/>
</LinearLayout>
</LinearLayout>