AndroidStudio员工管理系统(源代码)
·
一个由androidstudio开发的简单的员工管理系统,使用SQLite数据库操作、HTTP网络连接操作、调用系统服务。
一、部分页面效果
二、代码结构
三、各种样式
四、部分代码(后附源码免费下载)
(1)注册界面:
1)activity代码:
package edu.cn.bookadminister;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class RegisterActivity extends AppCompatActivity {
private EditText et_username,et_pwd,et_pwd_sure;
private Button register;
private String userName,passWord,passWord_sure;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
init();
}
public void init(){
//获取对应控件
et_username = (EditText)findViewById(R.id.username);
et_pwd = (EditText)findViewById(R.id.pwd);
et_pwd_sure = (EditText)findViewById(R.id.pwd2);
register = (Button)findViewById(R.id.registerBtn);
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getEditString();
//当输入框为空时弹出以下内容,即用户名、密码不能为空
if(TextUtils.isEmpty(userName)){
Toast.makeText(RegisterActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
return;
}else if(TextUtils.isEmpty(passWord)){
Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
return;
}else if(TextUtils.isEmpty(passWord_sure)){
Toast.makeText(RegisterActivity.this, "请再次输入密码", Toast.LENGTH_SHORT).show();
return;
}else if(!passWord.equals(passWord_sure)){ //检验两次密码是否一样
Toast.makeText(RegisterActivity.this, "输入两次的密码不一样", Toast.LENGTH_SHORT).show();
return;
/**
*从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
*/
}else if(isExistUserName(userName)){
Toast.makeText(RegisterActivity.this, "此账户名已经存在", Toast.LENGTH_SHORT).show();
return;
}else{
Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
//把账号、密码和账号标识保存到sp里面
/**
* 保存账号和密码到SharedPreferences中
*/
saveRegisterInfo(userName, passWord);
//注册成功后把账号传递到LoginActivity.java中(MainActivity.java)
// 返回值到loginActivity显示
Intent data = new Intent();
data.putExtra("userName", userName);
setResult(RESULT_OK, data);
//RESULT_OK为Activity系统常量,状态码为-1,
// 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
Intent intent = new Intent(RegisterActivity.this,LoginActivity.class);
startActivity(intent);
RegisterActivity.this.finish();
}
}
});
}
private void getEditString(){
userName = et_username.getText().toString().trim();
passWord = et_pwd.getText().toString().trim();
passWord_sure = et_pwd_sure.getText().toString().trim();
}
/**
* 从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
*/
private boolean isExistUserName(String userName){
boolean has_userName = false;
//mode_private SharedPreferences sp = getSharedPreferences( );
// "loginInfo", MODE_PRIVATE
SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
//获取密码
String spPsw = sp.getString(userName, "");//传入用户名获取密码
//如果密码不为空则确实保存过这个用户名
if(!TextUtils.isEmpty(spPsw)) {
has_userName=true;
}
return has_userName;
}
/**
* 保存账号和密码到SharedPreferences中SharedPreferences
*/
private void saveRegisterInfo(String userName,String psw){
String md5Psw = MD5Utils.md5(psw);//把密码用MD5加密
//loginInfo表示文件名, mode_private SharedPreferences sp = getSharedPreferences( );
SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
//获取编辑器, SharedPreferences.Editor editor -> sp.edit();
SharedPreferences.Editor editor = sp.edit();
//以用户名为key,密码为value保存在SharedPreferences中
//key,value,如键值对,editor.putString(用户名,密码);
editor.putString(userName, md5Psw);
//提交修改 editor.commit();
editor.commit();
}
public void onBackPressed() {
Intent intent = new Intent();
intent.setClass(RegisterActivity.this,LoginActivity.class);
startActivity(intent);
//关闭原来activity
RegisterActivity.this.finish();
}
}
2)布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/bg2"
android:padding="10dp"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="120dp"
android:gravity="center"
android:text="注册管理员"
android:textSize="30sp"
android:textColor="#516D2C"/>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/register"
android:layout_gravity="center"
android:layout_marginBottom="20dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:layout_marginTop="10dp">
<ImageView
android:layout_width="30dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:src="@drawable/manager"
android:layout_marginRight="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="用户:"
android:textSize="20sp"
android:gravity="center"
android:textColor="#000000"/>
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="请输入用户名"
android:background="@drawable/editext_selector"
android:textSize="20sp"
android:textColor="#000000"
android:inputType="text"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:gravity="left|center"
android:maxLength="20"
android:paddingLeft="10dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:layout_marginTop="10dp">
<ImageView
android:layout_width="30dp"
android:layout_height="50dp"
android:src="@drawable/password"
android:layout_marginRight="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="密码:"
android:textSize="20sp"
android:gravity="center"
android:textColor="#000000"/>
<EditText
android:id="@+id/pwd"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="请输入密码"
android:background="@drawable/editext_selector"
android:textSize="20sp"
android:textColor="#000000"
android:inputType="textPassword"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:gravity="left|center"
android:maxLength="20"
android:paddingLeft="10dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:layout_marginTop="10dp">
<ImageView
android:layout_width="30dp"
android:layout_height="50dp"
android:src="@drawable/key"
android:layout_marginRight="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="确认密码:"
android:textSize="20sp"
android:gravity="center"
android:textColor="#000000"/>
<EditText
android:id="@+id/pwd2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="请确认密码"
android:background="@drawable/editext_selector"
android:textSize="20sp"
android:textColor="#000000"
android:inputType="textPassword"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:gravity="left|center"
android:maxLength="20"
android:paddingLeft="10dp"/>
</LinearLayout>
<Button
android:id="@+id/registerBtn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="注册"
android:gravity="center"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:background="@drawable/btn_selector"
android:layout_marginTop="15dp"/>
</LinearLayout>
(2)登录界面:
package edu.cn.bookadminister;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class LoginActivity extends AppCompatActivity {
private Button login;
private TextView tv_register;
private EditText et_username,et_pwd;
private CheckBox save_pwd;
private String userName,passWord,spPsw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
init();
}
private void init() {
et_username = (EditText) findViewById(R.id.username);
et_pwd = (EditText) findViewById(R.id.pwd);
save_pwd = (CheckBox) findViewById(R.id.save_pwd);
login = (Button)findViewById(R.id.loginBtn);
tv_register = (TextView) findViewById(R.id.register);
//获取记住的账号密码
getUserInfo();
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//开始登录
getEditString();
//对当前用户输入的密码进行MD5加密再进行比对判断, MD5Utils.md5( ); psw 进行加密判断是否一致
String md5Psw= MD5Utils.md5(passWord);
// md5Psw ; spPsw 为 根据从SharedPreferences中用户名读取密码
// 定义方法 readPsw为了读取用户名,得到密码
spPsw = readPsw(userName);
// TextUtils.isEmpty
if(TextUtils.isEmpty(userName)){
Toast.makeText( LoginActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
return;
}else if(TextUtils.isEmpty(passWord)){
Toast.makeText( LoginActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
return;
// md5Psw.equals(); 判断,输入的密码加密后,是否与保存在SharedPreferences中一致
}else if(md5Psw.equals(spPsw)){
//一致登录成功
Toast.makeText( LoginActivity.this, "welcome!"+ userName, Toast.LENGTH_SHORT).show();
//保存登录状态,在界面保存登录的用户名 定义个方法 saveLoginStatus boolean 状态 , userName 用户名
saveLoginInfo(userName,passWord);
//getUserInfo();
saveLoginStatus(true, userName);
//登录成功后关闭此页面进入主页
Intent data = new Intent();
//data.putExtra( ); name , value ;
data.putExtra("isLogin",true);
//RESULT_OK为Activity系统常量,状态码为-1
// 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
setResult(RESULT_OK,data);
//销毁登录界面
LoginActivity.this.finish();
//跳转到主界面,登录成功的状态传递到 MainActivity 中
startActivity(new Intent( LoginActivity.this, MainActivity.class));
return;
}else if((spPsw!=null&&!TextUtils.isEmpty(spPsw)&&!md5Psw.equals(spPsw))){
Toast.makeText( LoginActivity.this, "密码错误", Toast.LENGTH_SHORT).show();
return;
}else{
Toast.makeText( LoginActivity.this, "此用户名不存在", Toast.LENGTH_SHORT).show();
}
}
});
tv_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//为了跳转到注册界面,并实现注册功能
Intent intent=new Intent( LoginActivity.this,RegisterActivity.class);
startActivity(intent);
LoginActivity.this.finish();
}
});
}
private void getEditString(){
userName = et_username.getText().toString().trim();
passWord = et_pwd.getText().toString().trim();
}
public void saveLoginInfo(String userName, String passWord){
//获取SharedPreferences对象
boolean CheckBoxLogin = save_pwd.isChecked();
SharedPreferences sp = getSharedPreferences("userInfo", MODE_PRIVATE);
//获取Editor对象
SharedPreferences.Editor editor = sp.edit();
if (CheckBoxLogin){
//设置参数
editor.putString("username", userName);
editor.putString("password", passWord);
editor.putBoolean("checkboxBoolean",true);
//提交
editor.commit();
}else {
editor.putString("username", null);
editor.putString("password", null);
editor.putBoolean("checkboxBoolean", false);
editor.commit();
}
}
private String readPsw(String userName){
//getSharedPreferences("loginInfo",MODE_PRIVATE);
//"loginInfo",mode_private; MODE_PRIVATE表示可以继续写入
SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
//sp.getString() userName, "";
return sp.getString(userName , "");
}
/**
*保存登录状态和登录用户名到SharedPreferences中
*/
private void saveLoginStatus(boolean status,String userName){
//saveLoginStatus(true, userName);
//loginInfo表示文件名 SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
//获取编辑器
SharedPreferences.Editor editor = sp.edit();
//存入boolean类型的登录状态
editor.putBoolean("isLogin", status);
//存入登录状态时的用户名
editor.putString("loginUserName", userName);
//提交修改
editor.commit();
}
/**
* 注册成功的数据返回至此
* @param requestCode 请求码
* @param resultCode 结果码
* @param data 数据
*/
@Override
//显示数据, onActivityResult
//startActivityForResult(intent, 1); 从注册界面中获取数据
//int requestCode , int resultCode , Intent data
// LoginActivity -> startActivityForResult -> onActivityResult();
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
if(data!=null){
//是获取注册界面回传过来的用户名
// getExtra().getString("***");
String userName=data.getStringExtra("userName");
if(!TextUtils.isEmpty(userName)){
//设置用户名到 et_user_name 控件
et_username.setText(userName);
//et_user_name控件的setSelection()方法来设置光标位置
et_username.setSelection(userName.length());
}
}
}
public void getUserInfo(){
SharedPreferences sp = null;
sp = this.getSharedPreferences("userInfo", Context.MODE_PRIVATE);
if (sp.getBoolean("checkboxBoolean", false))
{
et_username.setText(sp.getString("username", null));
et_pwd.setText(sp.getString("password", null));
save_pwd.setChecked(true);
}else{
et_username.setText(sp.getString("username", userName));
et_pwd.setText(sp.getString("password", passWord));
save_pwd.setChecked(false);
}
}
public void onBackPressed() {
LoginActivity.this.finish();
}
}
(3)登录之后显示登录成功的提示语:
package edu.cn.bookadminister;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;
public class WelcomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_welcome);
Handler handler = new Handler();
//当计时结束,跳转至主界面
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(WelcomeActivity.this, LoginActivity.class);
startActivity(intent);
WelcomeActivity.this.finish();
}
}, 3000);
}
}
(4)主界面:
package edu.cn.bookadminister;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import java.io.Serializable;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button bt_createe;
private Button bt_updatee;
private Button bt_deletee;
private Button bt_read;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_createe = findViewById(R.id.bt_createe);
bt_createe.setOnClickListener(this);
bt_updatee = findViewById(R.id.bt_updatee);
bt_updatee.setOnClickListener(this);
bt_deletee = findViewById(R.id.bt_deletee);
bt_deletee.setOnClickListener(this);
bt_read = findViewById(R.id.bt_read);
bt_read.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.bt_createe){
// 准备跳到下一个活动页面,studentList
Intent intent = new Intent(MainActivity.this, AddbooksActivity.class);
startActivityForResult(intent, 0);
}else if (v.getId() == R.id.bt_updatee){
// 准备跳到下一个活动页面,studentList
Intent intent = new Intent(MainActivity.this, UpdateBooksActivity.class);
startActivityForResult(intent, 1);
}else if (v.getId() == R.id.bt_deletee){
// 准备跳到下一个活动页面,studentList
Intent intent = new Intent(MainActivity.this, DeleteBooksActivity.class);
startActivityForResult(intent, 2);
}else if (v.getId() == R.id.bt_read){
// 准备跳到下一个活动页面,studentList
Intent intent = new Intent(MainActivity.this, QueryBooksActivity.class);
startActivityForResult(intent, 3);
}
}
}
(5)添加记录界面:
package edu.cn.bookadminister;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class AddbooksActivity extends AppCompatActivity implements View.OnClickListener {
//组件定义
private EditText etStudentid;
private EditText etStudentname;
private EditText etMajoy;
private EditText etBooknum;
private Button btnAdd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addbooks);
//初始化界面
initView();
}
//初始化界面
private void initView() {
etStudentid=(EditText)findViewById(R.id.et_studentid);
etStudentname = (EditText) findViewById(R.id.et_studentname);
etMajoy = (EditText) findViewById(R.id.et_majoy);
etBooknum = (EditText) findViewById(R.id.et_booknum);
btnAdd = (Button) findViewById(R.id.btn_add);
//设置按钮的点击事件
btnAdd.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//当单击“添加”按钮时,获取添加信息
String studentid=etStudentid.getText().toString().trim();
String studentname = etStudentname.getText().toString().trim();
String majoy = etMajoy.getText().toString().trim();
String booknum = etBooknum.getText().toString();
//检验信息是否正确
if (TextUtils.isEmpty(studentid)) {
Toast.makeText(this, "请输入员工工号", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(studentname)) {
Toast.makeText(this, "请输入员工姓名", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(majoy)) {
Toast.makeText(this, "请输入入职时间", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(booknum)) {
Toast.makeText(this, "请输入所属部门", Toast.LENGTH_SHORT).show();
return;
}
//添加借书信息
Book o =new Book();
o.studentid= studentid;
o.studentname = studentname;
o.majoy = majoy;
o.booknum= booknum;
//创建数据库访问对象
BooksDAO dao = new BooksDAO(getApplicationContext());
//打开数据库
dao.open();
//执行数据库访问方法
long result = dao.addBooks(o);
if (result > 0) {
Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "添加失败", Toast.LENGTH_SHORT).show();
}
//关闭数据库
dao.close();
//关闭活动
finish();
}
}
(6)每次添加、修改、删除数据时打开数据库的功能的代码:
package edu.cn.bookadminister;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class BooksDAO {
private Context context;
private MyDBHelper dbHelper;
private SQLiteDatabase db;
//构造函数
public BooksDAO(Context context) {
this.context = context;
}
//打开数据库
public void open() throws SQLiteException {
dbHelper = new MyDBHelper(context);
try {
db = dbHelper.getWritableDatabase();
} catch (SQLiteException ex) {
db = dbHelper.getReadableDatabase();
}
}
//关闭数据库
public void close() {
if (db != null) {
db.close();
db = null;
}
}
//添加借书信息
public long addBooks(Book o) {
// 创建ContentValues对象
ContentValues values = new ContentValues();
// 向该对象中插入键值对
values.put("studentid", o.studentid);
values.put("studentname", o.studentname);
values.put("majoy", o.majoy);
values.put("booknum", o.booknum);
// 调用insert()方法将数据插入到数据库当中
return db.insert("tb_Books", null, values);
}
//删除指定借书信息
public int deletBooks(Book o) {
return db.delete("tb_Books", "studentid=?", new String[]{String.valueOf(o.studentid)});
}
//修改指定借书信息
public int updateBooks(Book o) {
ContentValues value = new ContentValues();
value.put("studentname", o.studentname);
value.put("majoy", o.majoy);
value.put("booknum", o.booknum);
return db.update("tb_Books", value, "studentid=?", new String[]{String.valueOf(o.studentid)});
}
//根据学生学号查找订单
public Book getBooks(String studentid) {
//查询学生
Cursor cursor = db.query("tb_Books", null, "studentid=?", new String[]{studentid}, null, null, null);
Book o = new Book();
while (cursor.moveToNext()) {
o.studentid = cursor.getString(cursor.getColumnIndex("studentid"));
o.studentname = cursor.getString(cursor.getColumnIndex("studentname"));
o.majoy = cursor.getString(cursor.getColumnIndex("majoy"));
o.booknum = cursor.getString(cursor.getColumnIndex("booknum"));
}
return o;
}
//查找所有借书信息
public ArrayList<Map<String, Object>> getAllbooks() {
ArrayList<Map<String, Object>> listBooks = new ArrayList<Map<String, Object>>();
Cursor cursor = db.query("tb_Books", null, null, null, null, null,null);
int resultCounts = cursor.getCount(); //记录数
if (resultCounts == 0 ) {
return null;
} else {
while (cursor.moveToNext()) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("studentid", cursor.getString(cursor.getColumnIndex("studentid")));
map.put("studentname", cursor.getString(cursor.getColumnIndex("studentname")));
map.put("majoy", cursor.getString(cursor.getColumnIndex("majoy")));
map.put("booknum", cursor.getString(cursor.getColumnIndex("booknum")));
listBooks.add(map);
}
return listBooks;
}
}
}
(7)添加、删除、修改之后查看记录的代码:
package edu.cn.bookadminister;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.List;
import java.util.Map;
public class QueryBooksActivity extends AppCompatActivity {
//定义组件
ListView listView=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_query_books);
setTitle("查看记录");
//初始化界面
initView();
}
private void initView() {
//建立数据库访问对象
BooksDAO dao=new BooksDAO(getApplicationContext());
//打开数据库
dao.open();
//调用数据库访问方法
List<Map<String,Object>> mOrderData=dao.getAllbooks();
//获取组件
listView=(ListView)findViewById(R.id.lst_orders);
//定义数据源
String[] from={"studentid","studentname","majoy","booknum"};
//定义布局控件ID
int[] to={R.id.tv_lst_studentid,R.id.tv_lst_studentname,R.id.tv_lst_majoy,R.id.tv_lst_booknum};
SimpleAdapter listItemAdapter=new SimpleAdapter(QueryBooksActivity.this,mOrderData,R.layout.item_list,from,to);
//添加并显示
listView.setAdapter(listItemAdapter);
//关闭数据库
dao.close();
}
}
(8)修改记录界面:
package edu.cn.bookadminister;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class UpdateBooksActivity extends AppCompatActivity implements View.OnClickListener{
//组件定义
private EditText etStudentid;
private Button btnSearch;
private EditText etStudentname;
private EditText etMajoy;
private EditText etBooknum;
private Button btnEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_books);
initView();
}
private void initView() {
etStudentid=(EditText) findViewById(R.id.et_studentid);
btnSearch=(Button) findViewById(R.id.btn_search);
etStudentname=(EditText)findViewById(R.id.et_studentname);
etMajoy=(EditText)findViewById(R.id.et_majoy);
etBooknum=(EditText)findViewById(R.id.et_booknum);
btnEdit= (Button) findViewById(R.id.btn_edit);
//设置按钮的点击事件
btnSearch.setOnClickListener((View.OnClickListener) this);
btnEdit.setOnClickListener((View.OnClickListener) this);
}
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.btn_search: //查询操作
searchOrder();
break;
case R.id.btn_edit: //更新操作
updateOrder();
break;
}
}
//查询操作
private void searchOrder() {
String studentid=etStudentid.getText().toString().trim(); //获取用户输入
//建立数据库访问对象
BooksDAO dao=new BooksDAO(getApplicationContext());
//打开数据库
dao.open();
//调用数据库访问方法
Book o=dao.getBooks(studentid);
//将数据填入控件
etStudentname.setText(o.studentname);
etMajoy.setText(o.majoy);
etBooknum.setText(o.booknum);
//关闭数据库
dao.close();
}
//修改操作
private void updateOrder() {
Book o=new Book();
o.studentid=etStudentid.getText().toString().trim();
o.studentname=etStudentname.getText().toString().trim();
o.majoy=etMajoy.getText().toString().trim();
o.booknum=etBooknum.getText().toString().trim();
//创建数据库访问对象
BooksDAO dao=new BooksDAO(getApplicationContext());
//打开数据库
dao.open();
//执行数据库访问方法
long result= dao.updateBooks(o);
if(result>0) {
Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "修改失败", Toast.LENGTH_SHORT).show();
}
//关闭数据库
dao.close();
}
}
(9)删除记录界面:
package edu.cn.bookadminister;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class DeleteBooksActivity extends AppCompatActivity implements View.OnClickListener{
private EditText etStudentid;
private Button btnSearch;
private EditText etStudentname;
private EditText etMajoy;
private EditText etBooknum;
private Button btnDelete;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_delete_books);
initView();
}
private void initView() {
etStudentid=(EditText) findViewById(R.id.et_studentid);
btnSearch=(Button) findViewById(R.id.btn_search);
etStudentname=(EditText)findViewById(R.id.et_studentname);
etMajoy=(EditText)findViewById(R.id.et_majoy);
etBooknum=(EditText)findViewById(R.id.et_booknum);
btnDelete= (Button) findViewById(R.id.btn_delete);
//设置按钮的点击事件
btnSearch.setOnClickListener((View.OnClickListener) this);
btnDelete.setOnClickListener((View.OnClickListener) this);
}
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.btn_search: //查询操作
searchOrder();
break;
case R.id.btn_delete: //删除操作
deleteOrder();
break;
}
}
//查找借书信息
private void searchOrder() {
String studentid=etStudentid.getText().toString().trim(); //获取用户输入
//建立数据库访问对象
BooksDAO dao=new BooksDAO(getApplicationContext());
//打开数据库
dao.open();
//调用数据库访问方法
Book o=dao.getBooks(studentid);
//将数据填入控件
etStudentname.setText(o.studentname);
etMajoy.setText(o.majoy);
etBooknum.setText(o.booknum);
//关闭数据库
dao.close();
}
//删除借书信息
private void deleteOrder() {
Book o=new Book();
o.studentid=etStudentid.getText().toString().trim();
//创建数据库访问对象
BooksDAO dao=new BooksDAO(getApplicationContext());
//打开数据库
dao.open();
//执行数据库访问方法
int result= dao.deletBooks(o);
if(result>0) {
Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT).show();
}
//关闭数据库
dao.close();
}
}
(10)一些控件的样式或效果改变的xml文件:
1)按钮按下和弹起之后的颜色和形状变化(效果在之前视频中查看;这里只选取部分的来说明,其他的与这些大同小异):
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<!--按钮按下时-->
<item android:state_pressed="true">
<shape>
<!--设置圆角-->
<corners android:radius="20dp"/>
<!--设置背景颜色-->
<solid android:color="#A103A9F4"/>
</shape>
</item>
<!--按钮弹起时-->
<item>
<shape>
<!--设置圆角-->
<corners android:radius="100dp"/>
<!--设置背景颜色-->
<solid android:color="#A94CAF50"/>
</shape>
</item>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#009688"/>
<corners android:radius="30dp"/>
<stroke android:width="1dp" android:color="#ffaaaaaa"/>
<padding android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp" />
</shape>
布局文件中使用selector.Xml文件进行调用:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/shape_btn_pressed"/>
<item android:drawable="@drawable/shape_btn_normal"/>
</selector>
2)编辑文本框时文本框的变化:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--设置圆角-->
<corners android:radius="18dp"/>
<!--设置背景颜色-->
<solid android:color="#704CAF50"/>
</shape>
与Button的类似,布局文件中使用selector.Xml文件进行调用:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/shape_edit_focus"/>
<item android:drawable="@drawable/shape_edit_normal"/>
</selector>
更多推荐
已为社区贡献1条内容
所有评论(0)