1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【Android】eclipse 实现登录 注册 修改密码 数据库操作

【Android】eclipse 实现登录 注册 修改密码 数据库操作

时间:2023-06-16 11:28:27

相关推荐

【Android】eclipse 实现登录 注册 修改密码 数据库操作

该项目参考:/midnight_time/article/details/91203973

目录

登录、注册、修改密码功能的实现

一、UI的设计

二、实现功能部分,Java文件

登录、注册、修改密码功能的实现

一、UI的设计

1.主界面的布局文件

main.xml文件代码如下所示:

<LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="15dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="25dp"android:gravity="center_horizontal" ><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/ic_launcher" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="25dp"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><ImageViewandroid:layout_width="20dp"android:layout_height="match_parent"android:src="@drawable/yh" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="账号:" android:textSize="20sp" /><EditTextandroid:id="@+id/et_loginusername"android:layout_width="180dp"android:layout_height="wrap_content"android:hint="请输入账号" ><requestFocus /></EditText></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="25dp" ><ImageViewandroid:layout_width="20dp"android:layout_height="match_parent"android:src="@drawable/suo" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密码:"android:textSize="20sp" /><EditTextandroid:id="@+id/et_loginpassword"android:layout_width="180dp"android:layout_height="wrap_content"android:hint="请输入密码" /><ImageViewandroid:id="@+id/eye"android:layout_width="15dp"android:layout_height="38dp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="33dp"android:orientation="horizontal" ><CheckBoxandroid:id="@+id/checkbox_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="35dp"android:checked="true"android:orientation="horizontal"android:text="记住密码"android:textSize="20dp" /><Buttonandroid:id="@+id/forget_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="15dp"android:background="#00FFFFFF"android:text="修改密码"android:textSize="20sp" /></LinearLayout></LinearLayout><Buttonandroid:id="@+id/login_btn"android:layout_width="match_parent"android:layout_height="35dp"android:background="#00C957"android:text="登录"android:textColor="#ffffff" /><Buttonandroid:id="@+id/loginregister_btn"android:layout_width="match_parent"android:layout_height="35dp"android:background="#33A1C9"android:text="注册"android:textColor="#ffffff" /><Buttonandroid:id="@+id/quit_btn"android:layout_width="match_parent"android:layout_height="35dp"android:background="#E3170D"android:text="退出"android:textColor="#ffffff" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical" ><Buttonandroid:id="@+id/hzc_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#00FFFFFF"android:text="©黄哲超版权所有" android:textSize="12dp"android:textColor="#1E90FF"/></LinearLayout></LinearLayout>

2.修改密码的布局文件

forget.xml文件代码如下所示:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/yun1"android:orientation="vertical" ><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"> <TextView android:layout_width="wrap_content"android:layout_height="40dp"android:textSize="18sp"android:textColor="@android:color/background_dark"android:text=" 账号:"/><EditText android:id="@+id/et_forgetname"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请输入账号"/></LinearLayout><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextView android:layout_width="wrap_content"android:layout_height="40dp"android:textSize="18sp"android:textColor="@android:color/background_dark"android:text="旧密码:"/><EditText android:id="@+id/et_forgetpaswd1"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请输入密码"/></LinearLayout><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextView android:layout_width="wrap_content"android:layout_height="40dp"android:textSize="18sp"android:textColor="@android:color/background_dark"android:text="新密码:"/><EditText android:id="@+id/et_forgetpaswd2"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请再次输入密码"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="40dp"android:text="验证码:"android:textColor="@android:color/background_dark"android:textSize="18sp" /><EditTextandroid:id="@+id/et_vcode"android:layout_width="wrap_content"android:layout_height="50dp"android:hint="请输入4位验证码" /><ImageViewandroid:id="@+id/iv_registercode"android:layout_width="100dp"android:layout_height="match_parent"android:layout_weight="0.99"android:clickable="true" /></LinearLayout><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical" android:gravity="center"><Button android:id="@+id/forget_btn"android:layout_width="261dp"android:layout_height="40dp"android:background="#3FB1B5"android:text="修改"android:textColor="#FFFFFF"android:textSize="18sp" /><Button android:id="@+id/forgetback_btn"android:layout_width="261dp"android:layout_height="40dp"android:background="#33A1C9"android:text="放弃修改"android:textColor="#FFFFFF"android:textSize="18sp" /></LinearLayout></LinearLayout>

3.注册页面布局文件

register.xml文件代码如下所示:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/yun1"android:orientation="vertical" ><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"> <TextView android:layout_width="wrap_content"android:layout_height="40dp"android:textSize="18sp"android:textColor="@android:color/background_dark"android:text="账号:"/><EditText android:id="@+id/et_registername"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请输入账号"/></LinearLayout><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextView android:layout_width="wrap_content"android:layout_height="40dp"android:textSize="18sp"android:textColor="@android:color/background_dark"android:text="密码:"/><EditText android:id="@+id/et_registerpaswd1"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请输入密码"/></LinearLayout><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextView android:layout_width="wrap_content"android:layout_height="40dp"android:textSize="18sp"android:textColor="@android:color/background_dark"android:text="密码:"/><EditText android:id="@+id/et_registerpaswd2"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请再次输入密码"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="40dp"android:text="验证码:"android:textColor="@android:color/background_dark"android:textSize="18sp" /><EditTextandroid:id="@+id/et_vcode"android:layout_width="wrap_content"android:layout_height="50dp"android:hint="请输入4位验证码" /><ImageViewandroid:id="@+id/iv_registercode"android:layout_width="100dp"android:layout_height="match_parent"android:layout_weight="0.99"android:clickable="true" /></LinearLayout><Button android:id="@+id/register_btn"android:layout_width="fill_parent"android:layout_height="40dp"android:background="#3FB1B5"android:textColor="#FFFFFF"android:textSize="18sp"android:text="注册"/><Buttonandroid:id="@+id/registerback_btn"android:layout_width="fill_parent"android:layout_height="40dp"android:background="#33A1C9"android:text="已有账号返回登录"android:textColor="#FFFFFF"android:textSize="18sp" /></LinearLayout>

4.版权信息声明

info.xml文件代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/yun2"android:orientation="vertical" ><TextView android:layout_width="match_parent"android:layout_height="wrap_content"android:text="项目负责人"android:textColor="#292421"android:textSize="25dp"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="10dp" ><ImageViewandroid:layout_width="110dp"android:layout_height="wrap_content"android:src="@drawable/hzc1" /><TextView android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/info1"/></LinearLayout><Button android:id="@+id/infoback_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="返回"/></LinearLayout>

5.登录之后的主界面布局文件

login.xml代码文件如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="0.45"android:gravity="center"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><ImageViewandroid:layout_width="51dp"android:layout_height="33dp"android:src="@drawable/xh" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="学生名单管理系统"android:textSize="28dp" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical" ><Buttonandroid:id="@+id/btn_lookview"android:layout_width="180dp"android:layout_height="wrap_content"android:background="#00FAFFF0"android:text="查看校园图片" /><Buttonandroid:id="@+id/btn_view"android:layout_width="180dp"android:layout_height="wrap_content"android:background="#00F0FFF0"android:text="查看学生信息" /><Buttonandroid:id="@+id/btn_add"android:layout_width="180dp"android:layout_height="wrap_content"android:background="#00F8F8FF"android:text="增加学生信息" /><Buttonandroid:id="@+id/btn_delete"android:layout_width="180dp"android:layout_height="wrap_content"android:background="#00F0FFFF"android:text="删除学生信息" /><Buttonandroid:id="@+id/btn_update"android:layout_width="180dp"android:layout_height="wrap_content"android:background="#00FDF5E6"android:text="修改学生信息" /><Buttonandroid:id="@+id/btn_find"android:layout_width="180dp"android:layout_height="wrap_content"android:background="#00FFC0CB"android:text="搜索学生信息" /><Buttonandroid:id="@+id/btn_exit"android:layout_width="180dp"android:layout_height="wrap_content"android:background="#00BDFCC9"android:text="退出系统" /></LinearLayout></LinearLayout>

6.查看校园图片布局文件

aka.xml文件代码如下

<LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ffffff"android:orientation="vertical" ><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/ffs_ph" android:layout_weight="100"android:src="@drawable/fit1"/><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"><Button android:id="@+id/btn1up"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="100"android:text="上一张"/><Button android:id="@+id/btn2down"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="100"android:text="下一张"/></LinearLayout><Button android:id="@+id/akaback"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="返回"/></LinearLayout>

7.查看信息布局文件

second.xml文件代码如下

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/ye"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="100dp"android:layout_height="wrap_content"android:text="姓名"android:textColor="#ffffff"android:textSize="22sp" /><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#ffffff"android:text="学号"android:textSize="22sp" /></LinearLayout><ListViewandroid:id="@+id/lv"android:layout_width="wrap_content"android:layout_height="322dp"android:layout_weight="0.67" ></ListView><Buttonandroid:id="@+id/btn_back"android:layout_width="match_parent"android:layout_height="50dp"android:text="返回" /></LinearLayout>

这边需要创建一个item.xml文件用来后续将数据库里的数据信息传导到second.xml页面上

item.xml文件代码如下

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><TextView android:id="@+id/tv_name"android:layout_width="100dp"android:layout_height="wrap_content"android:textSize="22sp"android:textColor="#FFFFFF"/><TextView android:id="@+id/tv_number"android:layout_width="120dp"android:layout_height="wrap_content"android:textSize="22sp"/></LinearLayout>

8.增加信息布局文件

add.xml代码文件如下所示

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/hai"android:orientation="vertical">"<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="姓名:"android:textSize="20dp" android:textColor="#ffffff"/><EditTextandroid:id="@+id/et_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入姓名 " /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="学号:"android:textSize="20dp" android:textColor="#ffffff"/><EditTextandroid:id="@+id/et_number"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入学号 " /></LinearLayout></LinearLayout><Buttonandroid:id="@+id/btn_add"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="保存并提交" /><Buttonandroid:id="@+id/btn_back"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="返回上一级" /></LinearLayout>

9.删除信息的布局文件

delete.xml文件代码如下所示

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/hai"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="名字:" android:textColor="#ffffff"android:textSize="20dp"/><EditTextandroid:id="@+id/et_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入要删除信息的学生姓名" /></LinearLayout><Buttonandroid:id="@+id/btn_delete"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="删除信息" /><Buttonandroid:id="@+id/btn_back"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="返回上一级" /></LinearLayout>

10.修改信息布局文件

update.xml文件代码如下所示

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/hai"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="姓名:" android:textSize="20sp"android:textColor="#ffffff"/><EditTextandroid:id="@+id/et_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入姓名: " ><requestFocus /></EditText></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="学号:" android:textSize="20sp"android:textColor="#ffffff"/><EditTextandroid:id="@+id/et_number"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入需要修改的学号: " /></LinearLayout></LinearLayout><Buttonandroid:id="@+id/btn_update"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="修改信息" /><Buttonandroid:id="@+id/btn_back"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="返回上一级" /></LinearLayout>

11.查询信息布局文件

find.xml文件代码如下所示

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/hai"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="姓名:"android:textColor="#ffffff"android:textSize="20dp" /><EditTextandroid:id="@+id/et_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入需要查询的学生姓名: " /></LinearLayout><Buttonandroid:id="@+id/btn_find"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="查找信息" /><Buttonandroid:id="@+id/btn_findall"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="查询所有信息" /><Buttonandroid:id="@+id/btn_back"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="返回上一级" /><TextView android:layout_width="match_parent"android:layout_height="wrap_content"android:text="查询结果:"android:textColor="#ffffff"android:textSize="18dp"/><TextViewandroid:id="@+id/display"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="0.88"android:textSize="20dp" /></LinearLayout>

二、实现功能部分,Java文件

1.登录模块有三个小型数据库,分别是MyDBHelper.java、Code.java(验证码数据库)、LoginService.java(记住密码存储实现)

MyDBHelper.java文件代码如下所示

package com.example.fitskate.dao;import java.util.ArrayList;import com.example.fitskate.po.User;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class MyDBHelper extends SQLiteOpenHelper{private SQLiteDatabase db;public MyDBHelper(Context context){super(context,"db_fitskate_user",null,1);db = getReadableDatabase();}@Overridepublic void onCreate(SQLiteDatabase db){String sql = "create table user(id integer primary key autoincrement,name varchar(20),password varchar(20))";db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){db.execSQL("DROP TABLE IF EXISTS user");onCreate(db);}public void add(String name,String password){db.execSQL("INSERT INTO user (name,password) VALUES(?,?)",new Object[]{name,password});}public void delete(String name,String password){db.execSQL("DELETE FROM user WHERE name = AND password ="+name+password);}public void updata(String password){db.execSQL("UPDATE user SET password = ?",new Object[]{password});}public ArrayList<User> getAllData(){ArrayList<User> list = new ArrayList<User>();Cursor cursor = db.query("user",null,null,null,null,null,"name DESC");while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("name"));String password = cursor.getString(cursor.getColumnIndex("password"));list.add(new User(name,password));}cursor.close();return list;}}

Code .java文件代码如下所示

package com.example.fitskate.dao;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import java.util.Random;/*** Created by littlecurl /6/24*/public class Code {/*** 随机数数组* 去除了易混淆的 数字 0 和 字母 o O*数字 1 和 字母 i I l L*数字 6 和 字母 b*数字 9 和 字母 q*字母 c C 和 G*字母 t (经常和随机线混在一起看不清)*/private static final char[] CHARS = {'2', '3', '4', '5', '7', '8','a', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm','n', 'p', 'r', 's', 'u', 'v', 'w', 'x', 'y', 'z','A', 'B', 'D', 'E', 'F', 'H', 'J', 'K', 'M','N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};private static Code bmpCode;public static Code getInstance() {if(bmpCode == null)bmpCode = new Code();return bmpCode;}//default settings//验证码默认随机数的个数private static final int DEFAULT_CODE_LENGTH = 4;//默认字体大小private static final int DEFAULT_FONT_SIZE = 25;//默认线条的条数private static final int DEFAULT_LINE_NUMBER = 5;//padding值private static final int BASE_PADDING_LEFT = 10, RANGE_PADDING_LEFT = 15, BASE_PADDING_TOP = 15, RANGE_PADDING_TOP = 20;//验证码的默认宽高private static final int DEFAULT_WIDTH = 100, DEFAULT_HEIGHT = 40;//settings decided by the layout xml//canvas width and heightprivate int width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT;//random word space and pading_topprivate int base_padding_left = BASE_PADDING_LEFT, range_padding_left = RANGE_PADDING_LEFT,base_padding_top = BASE_PADDING_TOP, range_padding_top = RANGE_PADDING_TOP;//number of chars, lines; font sizeprivate int codeLength = DEFAULT_CODE_LENGTH, line_number = DEFAULT_LINE_NUMBER, font_size = DEFAULT_FONT_SIZE;//variablesprivate String code;private int padding_left, padding_top;private Random random = new Random();//验证码图片public Bitmap createBitmap() {padding_left = 0;Bitmap bp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);Canvas c = new Canvas(bp);code = createCode();c.drawColor(Color.WHITE);Paint paint = new Paint();paint.setAntiAlias(true);paint.setTextSize(font_size);//画验证码for (int i = 0; i < code.length(); i++) {randomTextStyle(paint);randomPadding();c.drawText(code.charAt(i) + "", padding_left, padding_top, paint);}//画线条for (int i = 0; i < line_number; i++) {drawLine(c, paint);}//c.save( Canvas.ALL_SAVE_FLAG );//保存c.save();//保存c.restore();//return bp;}public String getCode() {return code;}//生成验证码private String createCode() {StringBuilder buffer = new StringBuilder();for (int i = 0; i < codeLength; i++) {buffer.append(CHARS[random.nextInt(CHARS.length)]);}return buffer.toString();}//画干扰线private void drawLine(Canvas canvas, Paint paint) {int color = randomColor();int startX = random.nextInt(width);int startY = random.nextInt(height);int stopX = random.nextInt(width);int stopY = random.nextInt(height);paint.setStrokeWidth(1);paint.setColor(color);canvas.drawLine(startX, startY, stopX, stopY, paint);}//生成随机颜色private int randomColor() {return randomColor(1);}private int randomColor(int rate) {int red = random.nextInt(256) / rate;int green = random.nextInt(256) / rate;int blue = random.nextInt(256) / rate;return Color.rgb(red, green, blue);}//随机生成文字样式,颜色,粗细,倾斜度private void randomTextStyle(Paint paint) {int color = randomColor();paint.setColor(color);paint.setFakeBoldText(random.nextBoolean()); //true为粗体,false为非粗体float skewX = random.nextInt(11) / 10;skewX = random.nextBoolean() ? skewX : -skewX;paint.setTextSkewX(skewX); //float类型参数,负数表示右斜,整数左斜//paint.setUnderlineText(true); //true为下划线,false为非下划线//paint.setStrikeThruText(true); //true为删除线,false为非删除线}//随机生成padding值private void randomPadding() {padding_left += base_padding_left + random.nextInt(range_padding_left);padding_top = base_padding_top + random.nextInt(range_padding_top);}}

LoginService.java代码如下所示

package com.example.loginUI.service;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.util.HashMap;import android.content.Context;import android.widget.Toast;public class LoginService {public static boolean saveInfo(Context context, String name,String password){//getFileDir :/date/date/包名/files//getCacheDir :/data/data/包名/cacheFile file = new File(context.getFilesDir(),"info.txt");try {FileOutputStream fos = new FileOutputStream(file);fos.write((name + "=" + password).getBytes());fos.flush();fos.close();return true;}catch(Exception e){//在命令行打印异常信息在程序中出错的位置及原因e.printStackTrace();return false;}}public static HashMap<String, String> getInfo(Context context){File file = new File(context.getFilesDir(),"info.txt");try{FileInputStream fis = new FileInputStream(file);BufferedReader br = new BufferedReader(new InputStreamReader(fis));String[] result = br.readLine().split("=");HashMap<String, String> map = new HashMap<String, String>();map.put("name", result[0]);map.put("password", result[1]);br.close();return map;}catch (Exception e){Toast.makeText(context, "无法读取用户信息", 0).show();}return null;}}

2.登录模块的bean类

User.java文件代码如下所示

package com.example.fitskate.po;public class User {private String name;//用户private String password; //密码public User(String name, String password) {this.name = name;this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", password='" + password + '\'' +'}';}}

3.登录模块的功能实现

与main.xml布局文件相关联的MainActivity.java代码如下所示(主页面)

package com.example.fitskate.db;import java.util.ArrayList;import java.util.HashMap;import com.example.fitskate.dao.MyDBHelper;import com.example.fitskate.po.User;import com.example.loginUI.service.LoginService;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity implements View.OnClickListener{private MyDBHelper myhelper;private EditText loginname;private EditText loginpassword;private CheckBox cbIsRemeber;private Buttonforget;private Buttonlogin;private Buttonregister;private Buttonquit;private Buttonhzc;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);initivew();myhelper = new MyDBHelper(this);}private void initivew() {loginname= (EditText) findViewById(R.id.et_loginusername);loginpassword = (EditText) findViewById(R.id.et_loginpassword);cbIsRemeber = (CheckBox) findViewById(R.id.checkbox_text);forget = (Button) findViewById(R.id.forget_btn);login = (Button) findViewById(R.id.login_btn);register= (Button) findViewById(R.id.loginregister_btn);quit= (Button) findViewById(R.id.quit_btn);hzc = (Button) findViewById(R.id.hzc_btn);HashMap<String,String> info = LoginService.getInfo(this);if(info != null){loginname.setText(info.get("name"));loginpassword.setText(info.get("password"));}login.setOnClickListener(this);register.setOnClickListener(this);forget.setOnClickListener(this);quit.setOnClickListener(this);hzc.setOnClickListener(this);}@Overridepublic void onClick(View view) {// TODO Auto-generated method stubswitch (view.getId()){//跳转注册case R.id.loginregister_btn:startActivity(new Intent(this,RegisterActivity.class));finish();break;//登录跳转case R.id.login_btn:String name = loginname.getText().toString().trim();String password = loginpassword.getText().toString().trim();if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)){ArrayList<User> data = myhelper.getAllData();boolean match = false;for (int i = 0;i < data.size();i++){User user = data.get(i);if(name.equals(user.getName())&& password.equals(user.getPassword())){match = true;break;}else{match = false;}}if (match){Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();startActivity(new Intent(this, LoginActivity.class));finish();//销毁此Activityif (cbIsRemeber.isChecked()){boolean result = LoginService.saveInfo(this, name, password);}}else{Toast.makeText(this, "用户名或密码不正确,请重新输入", Toast.LENGTH_SHORT).show();}}else{Toast.makeText(this, "请输入你的用户名或密码", Toast.LENGTH_SHORT).show();}break;case R.id.forget_btn:startActivity(new Intent(this,ForgetActivity.class));finish();break;case R.id.hzc_btn:startActivity(new Intent(this,Info.class));finish();break;case R.id.quit_btn:Intent home = new Intent (Intent.ACTION_MAIN);home.addCategory(Intent.CATEGORY_HOME);startActivity(home);finish();}}}

与foget.xml相关联的ForgetActivity.java文件代码如下所示(修改密码)

package com.example.fitskate.db;import java.util.ArrayList;import com.example.fitskate.dao.Code;import com.example.fitskate.dao.MyDBHelper;import com.example.fitskate.po.User;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.Toast;public class ForgetActivity extends Activity implements View.OnClickListener{private EditText forgetname;private EditText forgetpassword1;private EditText forgetpassword2;private EditText VCode;private Buttonforget;private Buttonforgetback;private ImageView ShowCode;private StringrealCode;private MyDBHelper myhelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.forget);initView();myhelper = new MyDBHelper(this);ShowCode.setImageBitmap(Code.getInstance().createBitmap());realCode = Code.getInstance().getCode().toLowerCase();}private void initView() {// TODO Auto-generated method stubforgetname= (EditText) findViewById(R.id.et_forgetname);forgetpassword1 = (EditText) findViewById(R.id.et_forgetpaswd1);forgetpassword2 = (EditText) findViewById(R.id.et_forgetpaswd2);VCode = (EditText) findViewById(R.id.et_vcode);forget= (Button) findViewById(R.id.forget_btn);forgetback= (Button) findViewById(R.id.forgetback_btn);ShowCode = (ImageView) findViewById(R.id.iv_registercode);ShowCode.setOnClickListener((OnClickListener)this);forget.setOnClickListener((OnClickListener)this);forgetback.setOnClickListener((OnClickListener)this);}@Overridepublic void onClick(View view) {// TODO Auto-generated method stubswitch (view.getId()){case R.id.forgetback_btn:Intent intent1 = new Intent(this, MainActivity.class);startActivity(intent1);finish();break;case R.id.iv_registercode:ShowCode.setImageBitmap(Code.getInstance().createBitmap());realCode = Code.getInstance().getCode().toLowerCase();break;case R.id.forget_btn:String name = forgetname.getText().toString().trim();String password1 = forgetpassword1.getText().toString().trim();String password = forgetpassword2.getText().toString().trim();String vCode= VCode.getText().toString().toLowerCase();if(!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password) && !TextUtils.isEmpty(vCode)){if(!password1.equals(password)){ArrayList<User> data = myhelper.getAllData();boolean match = false;for (int i = 0;i < data.size();i++){User user = data.get(i);if(name.equals(user.getName())&& password1.equals(user.getPassword())){match = true;break;}else{match = false;}}if(match){if(vCode.equals(realCode)){myhelper.updata(password);startActivity(new Intent(this, MainActivity.class));finish();Toast.makeText(this, "验证通过,修改成功", Toast.LENGTH_SHORT).show();break;}else{Toast.makeText(this, "验证码错误,修改失败", Toast.LENGTH_SHORT).show();}}else{Toast.makeText(this, "用户名或密码不正确,请重新输入", Toast.LENGTH_SHORT).show();}}else{Toast.makeText(this, "旧密码和新密码一致,修改失败", Toast.LENGTH_SHORT).show();}}else{Toast.makeText(this, "未完善信息,修改失败", Toast.LENGTH_SHORT).show();}break;}}}

与register.xml相关联的RegisterActivity.java文件代码如下(注册)

package com.example.fitskate.db;import java.util.ArrayList;import com.example.fitskate.dao.Code;import com.example.fitskate.dao.MyDBHelper;import com.example.fitskate.po.User;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.Toast;public class RegisterActivity extends Activity implements View.OnClickListener{private EditText registername;private EditText registerpassword1;private EditText registerpassword2;private EditText VCode;private Buttonregister;private Buttonregisterback;private ImageView ShowCode;private StringrealCode;private MyDBHelper myhelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.register);initView();myhelper = new MyDBHelper(this);ShowCode.setImageBitmap(Code.getInstance().createBitmap());realCode = Code.getInstance().getCode().toLowerCase();}private void initView() {// TODO Auto-generated method stubregistername= (EditText) findViewById(R.id.et_registername);registerpassword1 = (EditText) findViewById(R.id.et_registerpaswd1);registerpassword2 = (EditText) findViewById(R.id.et_registerpaswd2);VCode = (EditText) findViewById(R.id.et_vcode);register= (Button) findViewById(R.id.register_btn);registerback= (Button) findViewById(R.id.registerback_btn);ShowCode= (ImageView) findViewById(R.id.iv_registercode);ShowCode.setOnClickListener((OnClickListener)this);register.setOnClickListener((OnClickListener)this);registerback.setOnClickListener((OnClickListener)this);}@Overridepublic void onClick(View view) {// TODO Auto-generated method stubswitch(view.getId()){case R.id.registerback_btn:Intent intent1 = new Intent(this, MainActivity.class);startActivity(intent1);finish();break;case R.id.iv_registercode:ShowCode.setImageBitmap(Code.getInstance().createBitmap());realCode = Code.getInstance().getCode().toLowerCase();break;case R.id.register_btn:String name = registername.getText().toString().trim();String password1 = registerpassword1.getText().toString().trim();String password = registerpassword2.getText().toString().trim();String vCode= VCode.getText().toString().toLowerCase();if(!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password) && !TextUtils.isEmpty(vCode)){if(password1.equals(password)){if(vCode.equals(realCode)){ArrayList<User> data = myhelper.getAllData();boolean match = true;for (int i = 0;i < data.size();i++){User user = data.get(i);if(!name.equals(user.getName())){match = true;}else{match = false;break;}}if (match){myhelper.add(name, password1);startActivity(new Intent(this, LoginActivity.class));finish();Toast.makeText(this, "验证通过,注册成功", Toast.LENGTH_SHORT).show();}else{Toast.makeText(this, "用户名已存在,注册失败", Toast.LENGTH_SHORT).show();}}else{Toast.makeText(this, "验证码错误,注册失败", Toast.LENGTH_SHORT).show();}}else{Toast.makeText(this, "两次密码不一致,注册失败", Toast.LENGTH_SHORT).show();}}else {Toast.makeText(this, "未完善信息,注册失败", Toast.LENGTH_SHORT).show();}break;}}}

与info.xml相关联的info.java文件代码如所示(版权声明)

package com.example.fitskate.db;import com.example.student.AddActivity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class Info extends Activity{private Button back;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.info);back = (Button) findViewById(R.id.infoback_btn);back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(Info.this, MainActivity.class);startActivity(intent);finish();}});}}

4.登录之后的学生信息查系统功能的实现,学生信息系统模块用到的数据库PersonDao.java、PersonSqliteOpenHelper.java

PersonDao.java文件代码如下所示

package com.example.fitskate.dao;import java.util.ArrayList;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import com.example.fitskate.po.Person;import com.example.fitskate.dao.PersonSQLiteOpenHelper;public class PersonDao {PersonSQLiteOpenHelper helper = null;public PersonDao(Context context) {super();this.helper = new PersonSQLiteOpenHelper(context);}public void add(String name, String number) {SQLiteDatabase db = this.helper.getWritableDatabase();db.execSQL("insert into person(name,number) values(?,?)", new Object[] {name, number });db.close();}public ArrayList<Person> find(String name) {SQLiteDatabase db = this.helper.getReadableDatabase();Cursor cursor =db.rawQuery("select * from person", null);boolean result =cursor.moveToNext();ArrayList<Person> persons = new ArrayList<Person>();while (cursor.moveToNext()) {if (name.equals(cursor.getString(cursor.getColumnIndex("name")))){Person person = new Person();person.setId(cursor.getInt(cursor.getColumnIndex("id")));person.setName(cursor.getString(cursor.getColumnIndex("name")));person.setNumber(cursor.getString(cursor.getColumnIndex("number")));System.out.println(person);persons.add(person);}}cursor.close();db.close();return persons;}public void update(String name, String newNumber) {SQLiteDatabase db = this.helper.getWritableDatabase();db.execSQL("update person set number=? where name=?", new Object[] {newNumber, name });db.close();}public void delete(String name) {SQLiteDatabase db = this.helper.getWritableDatabase();db.execSQL("delete from person where name=?", new Object[] { name });db.close();}public ArrayList<Person> findAll() {SQLiteDatabase db = this.helper.getReadableDatabase();ArrayList<Person> persons = new ArrayList<Person>();Cursor cursor = db.rawQuery("select * from person", null);while (cursor.moveToNext()) {int id = cursor.getInt(cursor.getColumnIndex("id"));String name = cursor.getString(cursor.getColumnIndex("name"));String number = cursor.getString(cursor.getColumnIndex("number"));Person p = new Person(id, name, number);persons.add(p);}cursor.close();db.close();return persons;}}

PersonDao2是备用数据库

package com.example.fitskate.dao;import java.util.ArrayList;import com.example.fitskate.po.Person;import com.example.fitskate.dao.PersonSQLiteOpenHelper;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class PersonDao2 {PersonSQLiteOpenHelper helper = null;public PersonDao2(Context context) {super();this.helper = new PersonSQLiteOpenHelper(context);}public long add(String name, String number,int money) {SQLiteDatabase db = this.helper.getWritableDatabase();ContentValues values = new ContentValues();values.put("name", name);values.put("number", number);values.put("account", money);long id = db.insert("person", null, values);db.close();return id;}public boolean find(String name) {SQLiteDatabase db = this.helper.getReadableDatabase();Cursor cursor = db.query("person", null, "name=?",new String[] { name }, null, null, null);boolean result = cursor.moveToNext();cursor.close();db.close();return result;}public int update(String name, String newNumber) {SQLiteDatabase db = this.helper.getWritableDatabase();ContentValues values = new ContentValues();values.put("number", newNumber);int number = db.update("person", values, "name=?",new String[] { name });db.close();return number;}public int delete(String name) {SQLiteDatabase db = this.helper.getWritableDatabase();// db.execSQL("delete from person where name=?", new Object[] { name });int number = db.delete("person", "name=?", new String[] { name });db.close();return number;}public ArrayList<Person> findAll() {SQLiteDatabase db = this.helper.getReadableDatabase();ArrayList<Person> persons = new ArrayList<Person>();Cursor cursor = db.query("person", null, null, null, null, null, null);while (cursor.moveToNext()) {int id = cursor.getInt(cursor.getColumnIndex("id"));String name = cursor.getString(cursor.getColumnIndex("name"));String number = cursor.getString(cursor.getColumnIndex("number"));Person p = new Person(id, name, number);persons.add(p);}cursor.close();db.close();return persons;}public ArrayList<Person> find1(String name) {SQLiteDatabase db = this.helper.getReadableDatabase();Cursor cursor =db.query("person", null, "name=?", new String[]{name}, null, null, null);boolean result =cursor.moveToNext();ArrayList<Person> persons = new ArrayList<Person>();while (cursor.moveToNext()) {Person person = new Person();person.setId(cursor.getInt(1));person.setName(cursor.getString(1));person.setNumber(cursor.getString(2));System.out.println(person);persons.add(person);}cursor.close();db.close();return persons;}}

PersonSqliteOpenHelper.java文件代码如下所示

package com.example.fitskate.dao;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {private static final String DBFILENAME = "person.db";private static int db_version = 2;public PersonSQLiteOpenHelper(Context context) {super(context, DBFILENAME, null, db_version);}/*** 当数据库第一次创建时调用*/@Overridepublic void onCreate(SQLiteDatabase db) {String sql = "create table person(id integer primary key autoincrement,name varchar(20),number varchar(20))";db.execSQL(sql);}/*** 当数据库的版本号发生增加的时候调用*/@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {System.out.println("数据库更改!");String sql = "alter table person add account varchar(20)";db.execSQL(sql);}}

5.学生信息系统模块的Bean类

Person.java文件代码如下所示

package com.example.fitskate.po;public class Person {private int id;private String name;private String number;public Person() {super();}public Person(String name) {super();this.name = name;}public Person(String name, String number) {super();this.name = name;this.number = number;}public Person(int id, String name, String number) {super();this.id = id;this.name = name;this.number = number;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", number=" + number+ "]";}}

6.学生信息系统模块的功能实现代码

与login.xml相关联的LoginActivity.java文件代码如下(登录后的主界面)

package com.example.fitskate.db;import com.example.aka.AkaActivity;import com.example.fitskate.dao.MyDBHelper;import com.example.student.AddActivity;import com.example.student.DeleteActivity;import com.example.student.FindActivity;import com.example.student.SecondActivity;import com.example.student.UpdateActivity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class LoginActivity extends Activity implements View.OnClickListener{private Button lookview;private Button view;private Button add;private Button delete;private Button update;private Button find;private Button loginquit;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.login);initivew();}private void initivew() {// TODO Auto-generated method stublookview = (Button) findViewById(R.id.btn_lookview);view= (Button) findViewById(R.id.btn_view);add = (Button) findViewById(R.id.btn_add);delete = (Button) findViewById(R.id.btn_delete);update = (Button) findViewById(R.id.btn_update);find= (Button) findViewById(R.id.btn_find);loginquit = (Button) findViewById(R.id.btn_exit);lookview.setOnClickListener(this);view.setOnClickListener(this);add.setOnClickListener(this);delete.setOnClickListener(this);update.setOnClickListener(this);find.setOnClickListener(this);loginquit.setOnClickListener(this);}@Overridepublic void onClick(View view) {// TODO Auto-generated method stubswitch (view.getId()){case R.id.btn_lookview:startActivity(new Intent(this,AkaActivity.class));finish();break;case R.id.btn_view:startActivity(new Intent(this,SecondActivity.class));finish();break;case R.id.btn_add:startActivity(new Intent(this,AddActivity.class));finish();break;case R.id.btn_delete:startActivity(new Intent(this,DeleteActivity.class));finish();break;case R.id.btn_update:startActivity(new Intent(this,UpdateActivity.class));finish();break;case R.id.btn_find:startActivity(new Intent(this,FindActivity.class));finish();break;case R.id.btn_exit:startActivity(new Intent(this,MainActivity.class));finish();break;}}}

与add.xml相关联的AddActivity.java文件代码如下(添加新的学生信息)

package com.example.student;import com.example.fitskate.dao.PersonDao;import com.example.fitskate.db.LoginActivity;import com.example.fitskate.db.R;import com.example.fitskate.po.Person;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class AddActivity extends Activity{private EditText nameET;private EditText numberET;private PersonDao dao;Button Back = null;Button Add = null;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.add);dao = new PersonDao(this);Back = (Button) findViewById(R.id.btn_back);Back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(AddActivity.this, LoginActivity.class);startActivity(intent);finish();}});Add = (Button)findViewById(R.id.btn_add);Add.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditText nameET=(EditText)findViewById(R.id.et_name);EditText numberET=(EditText)findViewById(R.id.et_number);String name=nameET.getText().toString();String number=numberET.getText().toString();if (!TextUtils.isEmpty(name)&&!TextUtils.isEmpty(number)){ContentValues values = new ContentValues();values.put("name", name);values.put("number", number);PersonDao dao = new PersonDao(getApplicationContext());dao.add(name, number);Toast.makeText(AddActivity.this, "添加成功", 0).show();}else{Toast.makeText(AddActivity.this, "请完善信息,添加失败", 0).show();}}});}}

与delete.xml相关联的DeleteActivity.java文件代码如下所示(删除)

package com.example.student;import com.example.fitskate.db.LoginActivity;import com.example.fitskate.db.R;import com.example.fitskate.dao.PersonDao;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class DeleteActivity extends Activity{private EditText nameET;private PersonDao dao;Button Delete = null;Button Back = null;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.delete);dao = new PersonDao(this);Back = (Button) findViewById(R.id.btn_back);Back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(DeleteActivity.this, LoginActivity.class);startActivity(intent);finish();}});Delete = (Button)findViewById(R.id.btn_delete);Delete.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditText nameET=(EditText)findViewById(R.id.et_name);String name=nameET.getText().toString();ContentValues values = new ContentValues();values.put("name", name);PersonDao dao = new PersonDao(getApplicationContext());dao.delete(name);if (TextUtils.isEmpty(name)){Toast.makeText(DeleteActivity.this, "姓名不能为空", 0).show();}else{Toast.makeText(DeleteActivity.this, "删除成功", 0).show();}}});}}

与find.xml相关联的FindActivity.java文件代码如下所示(查找)

package com.example.student;import java.util.ArrayList;import com.example.fitskate.dao.PersonDao;import com.example.fitskate.dao.PersonDao2;import com.example.fitskate.db.LoginActivity;import com.example.fitskate.db.R;import com.example.fitskate.po.Person;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class FindActivity extends Activity{private EditText nameET;private TextView tv;private PersonDao dao;Button Find = null;Button Back = null;Button Findall =null;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.find);dao = new PersonDao(this);Back = (Button) findViewById(R.id.btn_back);Back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(FindActivity.this, LoginActivity.class);startActivity(intent);finish();}});Findall = (Button) findViewById(R.id.btn_findall);Findall.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(FindActivity.this, SecondActivity.class);startActivity(intent);}});Find = (Button)findViewById(R.id.btn_find);final EditText nameET = (EditText)this.findViewById(R.id.et_name);final TextView tv = (TextView)this.findViewById(R.id.display);Find.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString name=nameET.getText().toString();PersonDao dao = new PersonDao(FindActivity.this);ArrayList<Person> persons = dao.find(name);String personstr = "";for (Person person : persons){personstr += person.toString();}tv.setText(personstr);}});}}

与second.xml相关联的SecondActivity.java文件代码如下所示(回显)

package com.example.student;import java.util.ArrayList;import com.example.fitskate.dao.PersonDao;import com.example.fitskate.db.LoginActivity;import com.example.fitskate.db.R;import com.example.fitskate.po.Person;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class SecondActivity extends Activity {private ArrayList<Person> list;private PersonDao dao;private EditText nameET;private EditText numberET;private ListView lv;private MyAdapter adapter;Button Back = null;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.second);showView();dao = new PersonDao(this);list = dao.findAll();adapter=new MyAdapter();lv.setAdapter(adapter);Back=(Button)findViewById(R.id.btn_back);Back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(SecondActivity.this, LoginActivity.class);startActivity(intent);finish();}});}private void showView(){lv=(ListView)findViewById(R.id.lv);nameET = (EditText) findViewById(R.id.et_name);numberET = (EditText)findViewById(R.id.et_number);lv.setOnItemClickListener(new MyOnItemClickListener());}private class MyAdapter extends BaseAdapter{public int getCount(){return list.size();}public Object getItem(int position){return list.get( position);}public long getItemId(int position){return position;}public View getView(int position,View convertView,ViewGroup parent){View item = convertView!=null?convertView:View.inflate(getApplicationContext(), R.layout.item, null);TextView nameTV=(TextView) item.findViewById(R.id.tv_name);TextView numberTV=(TextView) item.findViewById(R.id.tv_number);final Person a = list.get(position);nameTV.setText(a.getName());numberTV.setText(a.getNumber()+"");return item;}}private class MyOnItemClickListener implements OnItemClickListener{public void onItemClick(AdapterView<?> parent,View view,int position,long id){Person a=(Person) parent.getItemAtPosition(position);Toast.makeText(getApplicationContext(), a.toString(), Toast.LENGTH_SHORT).show();}}}

与update.xml相关联的UpdateActivity.java文件代码如下所示(修改)

package com.example.student;import com.example.fitskate.dao.PersonDao;import com.example.fitskate.db.LoginActivity;import com.example.fitskate.db.R;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class UpdateActivity extends Activity {private EditText nameET;private EditText numberET;private PersonDao dao;Button Back = null;Button Update = null;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.update);dao = new PersonDao(this);Back = (Button) findViewById(R.id.btn_back);Back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setClass(UpdateActivity.this, LoginActivity.class);startActivity(intent);finish();}});Update = (Button) findViewById(R.id.btn_update);Update.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditText nameET=(EditText)findViewById(R.id.et_name);EditText numberET=(EditText)findViewById(R.id.et_number);String name=nameET.getText().toString();String newNumber=numberET.getText().toString();ContentValues values = new ContentValues();values.put("name", name);values.put("number", newNumber);PersonDao dao = new PersonDao(getApplicationContext());dao.update(name, newNumber);if (TextUtils.isEmpty(name)||TextUtils.isEmpty(newNumber)){Toast.makeText(UpdateActivity.this, "姓名或学号不能为空", 0).show();}else{Toast.makeText(UpdateActivity.this, "修改成功", 0).show();}}});}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。