当前位置: 首页 > news >正文

合肥网站建设技术文登做网站

合肥网站建设技术,文登做网站,网站开发广告宣传语,平面设计课程培训登录模块 数据库设计如图所示创建了如上的数据库由于没有注册功能人为添加了两个用户#xff1a; 数据库创建语句#xff1a; public static final String CREATE_task create table user ( id integer primary key autoincrement, remenber…  登录模块 数据库设计如图所示创建了如上的数据库由于没有注册功能人为添加了两个用户 数据库创建语句 public static final String CREATE_task create table user ( id integer primary key autoincrement, remenberPassword text,autoLogin text, username text, password text );public static final String CREATE_task2 create table Travel ( id integer primary key autoincrement, travelName text, content text, traveldate date, userID integer ); Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_task);db.execSQL(CREATE_task2);} 与数据库对应创建了两个对应于两张表的数据库操作DBBean代码如下 Travel表的TravelDBean插入语句 public long insert(TravelBean travel) {ContentValues newValues new ContentValues();newValues.put(content, travel.getContent());newValues.put(traveldate,travel.getTraveldate());newValues.put(travelName,travel.getTravelName()); newValues.put(userID,travel.getUserID()); return db.insert(DB_Table, null, newValues); } 根据用户名加载全部行程的语句此处加载按时间排序进行加载 public TravelBean[] LoadAllData(String Uername) {Cursor result db.query( DB_Table, new String[] {id,travelName,content,traveldate,userID}, “userID”” ”Uername , null, null, null,traveldate desc);return ConvertToTravelBean(result);} 根据返回的游标将数据封装进对象语句 private TravelBean[] ConvertToTravelBean(Cursor result) {// TODO Auto-generated method stubint resultCountsresult.getCount();if(resultCounts0||!result.moveToFirst()) {return null;}TravelBean[] travelnew TravelBean[resultCounts]; for(int i0;iresultCounts;i) {travel[i]new TravelBean();travel[i].setContent(result.getString(result.getColumnIndex(content)));travel[i].setTravelName(result.getString(result.getColumnIndex(travelName)));travel[i].setTraveldate(result.getString(result.getColumnIndex(traveldate)));travel[i].setUserID(result.getString(result.getColumnIndex(userID))); travel[i].setID(result.getString(result.getColumnIndex(id))); System.out.println(travel[i].getTravelName());result.moveToNext(); }return travel;} 根据travel的ID号修改旅行名称、内容、时间语句 public void updateOneData(String travelName,String content,String traveldate,String id) {ContentValues updateValuesnew ContentValues();updateValues.put(content, content);updateValues.put(travelName, travelName);updateValues.put(traveldate, traveldate);db.update(DB_Table, updateValues, id id, null);} 根据旅行的ID号删除一条旅行记录 public long deleteOneData(String id) {return db.delete(DB_Table, id id, null);} Uer对应的UserDBBean 创建数据库并返回一个SQLIteDatabse对象供给TravelDBean使用 public SQLiteDatabase open() throws SQLiteException{dbOpenhelpernew MyDatabaseHelper(context, DB_NAME, null, DB_VERSION);try {dbdbOpenhelper.getWritableDatabase();return db;}catch(SQLiteException e) {dbdbOpenhelper.getReadableDatabase();return db;}} 插入用户对象注册功能为实现但需要插入两个用户进行测试 public long insert(UserBean user) {ContentValues newValues new ContentValues();newValues.put(remenberPassword, user.getRemenberPassword());newValues.put(password,user.getPassword());newValues.put(username,user.getUsername()); newValues.put(autoLogin,user.getAutoLogin());return db.insert(DB_Table, null, newValues); } 根据用户名加载用户 public UserBean queryByUsername(String username) {UserBean userBeannull;Cursor result db.query( DB_Table, new String[] {username,password,remenberPassword,autoLogin}, username username, null, null, null,null);if(result.getCount()!0) {result.moveToFirst();userBeannew UserBean();userBean.setPassword(result.getString(1));userBean.setAutoLogin(result.getString(3));userBean.setRemenberPassword(result.getString(2));userBean.setUsername(username); }return userBean;} 根据用户名来更新记住密码、自动登陆的状态 public void updateOneData(String username,String remenberPassword,String autoLogin ) {if(username!null) {ContentValues updateValuesnew ContentValues();updateValues.put(autoLogin, autoLogin);updateValues.put(remenberPassword, remenberPassword);db.update(DB_Table, updateValues, username username, null);}else {return;} } 两个用来封装数据的实体Bean代码如下 UserBean public class UserBean {private String id;private String username;private String password;private String remenberPassword;private String autoLogin;public String getRemenberPassword() {return remenberPassword;}public void setRemenberPassword(String remenberPassword) {this.remenberPassword remenberPassword;}public String getAutoLogin() {return autoLogin;}public void setAutoLogin(String autoLogin) {this.autoLogin autoLogin;}public String getId() {return id;}public void setId(String id) {this.id id;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}} TravelBean: public class TravelBean {private String ID;private String travelName;private String content;private String traveldate;private String userID;public String getID() {return ID;}public void setID(String iD) {ID iD;}public String getTravelName() {return travelName;}public void setTravelName(String travelName) {this.travelName travelName;}public String getContent() {return content;}public void setContent(String content) {this.content content;}public String getTraveldate() {return traveldate;}public void setTraveldate(String traveldate) {this.traveldate traveldate;}public String getUserID() {return userID;}public void setUserID(String userID) {this.userID userID;}} 登录界面设计                                    登录界面 源代码 TextViewandroid:layout_widthmatch_parentandroid:layout_height50dpandroid:text登录界面android:gravitycenterandroid:textSize30sp/View android:layout_widthmatch_parent android:layout_height1dpandroid:backgroundcolor/orange_main/ RelativeLayoutandroid:layout_widthmatch_parentandroid:layout_height50dpandroid:layout_marginLeft32dpandroid:layout_marginRight32dpandroid:layout_marginTop120dpImageViewandroid:idid/img_accountandroid:layout_width19dpandroid:layout_height20dpandroid:layout_alignParentBottomtrueandroid:layout_marginBottom4dpandroid:layout_marginLeft4dpandroid:scaleTypefitXYandroid:srcdrawable/icon_login_account/EditTextandroid:idid/et_accountandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_alignParentBottomtrueandroid:layout_gravitycenterandroid:layout_marginBottom4dpandroid:layout_marginLeft12dpandroid:layout_toRightOfid/img_accountandroid:backgroundnullandroid:hintstring/accountandroid:maxLines1android:textColorandroid:color/blackandroid:textColorHintcolor/tv_gray_deepandroid:textSize14dp/Viewandroid:layout_widthmatch_parentandroid:layout_height1dpandroid:layout_alignParentBottomtrueandroid:layout_marginLeft12dpandroid:layout_toRightOfid/img_accountandroid:backgroundcolor/orange_light//RelativeLayoutRelativeLayoutandroid:layout_widthmatch_parentandroid:layout_height50dpandroid:layout_marginLeft32dpandroid:layout_marginRight32dpImageViewandroid:idid/img_pwandroid:layout_width18dpandroid:layout_height20dpandroid:layout_alignParentBottomtrueandroid:layout_marginBottom4dpandroid:layout_marginLeft4dpandroid:scaleTypefitXYandroid:srcdrawable/icon_login_pw/EditTextandroid:idid/et_passwordandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_alignParentBottomtrueandroid:layout_gravitycenterandroid:layout_marginBottom4dpandroid:layout_marginLeft12dpandroid:layout_toRightOfid/img_pwandroid:backgroundnullandroid:hintstring/passwordandroid:inputTypetextPasswordandroid:maxLines1android:textColorandroid:color/blackandroid:textColorHintcolor/tv_gray_deepandroid:textSize14dp/ImageViewandroid:idid/iv_see_passwordandroid:layout_width20dpandroid:layout_height20dpandroid:srcdrawable/image_password_bgandroid:layout_centerVerticaltrueandroid:layout_alignParentRighttrueandroid:scaleTypefitXY/Viewandroid:layout_widthmatch_parentandroid:layout_height1dpandroid:layout_alignParentBottomtrueandroid:layout_marginLeft12dpandroid:layout_toRightOfid/img_pwandroid:backgroundcolor/orange_light//RelativeLayout CheckBoxandroid:idid/checkBox_passwordandroid:padding10dpandroid:textSize14dpandroid:layout_gravitycenterandroid:layout_widthwrap_contentandroid:layout_weight1android:layout_heightwrap_contentandroid:textstring/check_passwordandroid:textColorcolor/top_bar_normal_bg android:checkedfalse/CheckBoxandroid:idid/checkBox_loginandroid:padding10dpandroid:textSize14dpandroid:layout_gravitycenterandroid:layout_widthwrap_contentandroid:layout_weight1android:layout_heightwrap_contentandroid:textstring/check_loginandroid:textColorcolor/top_bar_normal_bg android:checkedfalse/ ​​​​​​登录界面功能 登录界面可隐藏显示密码 实现代码首先构建一个选择器选择器代码如下 selector xmlns:androidhttp://schemas.android.com/apk/res/androiditem android:drawabledrawable/icon_see_pass android:state_selectedfalse/item android:drawabledrawable/icon_nosee_pass android:state_selectedtrue//selector 然后在Login.xml文件中调用该选择器 ImageViewandroid:idid/iv_see_passwordandroid:layout_width20dpandroid:layout_height20dpandroid:srcdrawable/image_password_bgandroid:layout_centerVerticaltrueandroid:layout_alignParentRighttrueandroid:scaleTypefitXY / 最后通过设置该选择器控件的点击事件来达到显示密码与不显示密码此时要更换图片的状态以及设置密码框的 setInputType类型来使密码可见。具体代码如下 if (iv_see_password.isSelected()) {iv_see_password.setSelected(false);//密码不可见et_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);} else {iv_see_password.setSelected(true);//密码可见et_password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);} 登录界面可记住密码、自动登陆 由以上两张图片登录成功后注销登陆回来仍然显示当前密码 由两张图片用户选择自动登陆登录之后退出APP在进去自动登陆。若注销则自动登陆状态自动取消方便用户更换账号。 输入密码错悟提示如上图所示 实现代码思想如下 我点击登陆后会向数据库更新用户的记下密码、自动登陆的状态并且将当前用户的账号用SharedPreferences类更新在xml配置文件(保存上一次登陆的账号)中用户登陆之前从数据库中根据根xml配置文件中保存的用户账号把用户所有信息加载出来并封装在User对象中我根据此User的记下密码、自动登陆的状态做出相应的处理首先将账号加载到用户控件然后若记下密码我就将密码显示到密码控件上若是自动登陆那么直接进行Login()登陆方法。具体代码如下 查找上一次加载的用户并从数据库中将此用户所有信息获取。 SharedPreferencesUtils helper new SharedPreferencesUtils(this, setting);String lastLoginUserName helper.getString(name);System.out.println(lastLoginUserNamelastLoginUserName);user userBean.queryByUsername(lastLoginUserName); 验证该用户记住密码、自动登陆的状态 //判断是否记住密码if (remenberPassword()) {checkBox_password.setChecked(true);//勾选记住密码setTextNameAndPassword();//把密码和账号输入到输入框中} else {setTextName();//把用户账号放到输入账号的输入框中}//判断是否自动登录if (autoLogin()) {checkBox_login.setChecked(true);login();//去登录就可以} 判断记住密码方法代码如下 private boolean remenberPassword() {if(user.getRemenberPassword().equals(ture))return true;elsereturn false;} 将密码以及账号更新UI界面代码如下 public void setTextNameAndPassword() {UserBean user1userBean.queryByUsername(user.getUsername());if(user1!null) {et_name.setText( user1.getUsername());et_password.setText( user1.getPassword());}} 只用账户更新UI界面代码如下 public void setTextName() {UserBean user1userBean.queryByUsername(user.getUsername());if(user1!null) {et_name.setText( user1.getUsername());}} 判断用户的自动登陆状态代码如下 private boolean autoLogin() {//获取SharedPreferences对象使用自定义类的方法来获取对象if(user!null) {if(user.getAutoLogin().equals(true)) {return true;}}return false;} 重写记住密码、与自动登陆的状态改变监听函数做到如选择自动登陆那么记住密码应自动被勾选如果取消记住密码那么自动登陆也将自动取消。重写OnCheckedChangeListener函数具体代码如下 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (buttonView checkBox_password) { //记住密码选框发生改变时if (!isChecked) { //如果取消“记住密码”那么同样取消自动登陆checkBox_login.setChecked(false);}} else if (buttonView checkBox_login) { //自动登陆选框发生改变时if (isChecked) { //如果选择“自动登录”那么同样选中“记住密码”checkBox_password.setChecked(true);}}} 登录成功获取失败的消息提示代码如下 public void showToast(final String msg) {runOnUiThread(new Runnable() {Overridepublic void run() {Toast.makeText(LoginActivity.this, msg, Toast.LENGTH_SHORT).show();}});} 自动登录部分先验证账号密码是不是为空在进行登陆。若为空消息提示登陆失败。 若不为空且校验成功则将进行页面跳转并将用户名带过去。此处因为不涉及更新UI但是要访问数据库就创建了一个子线程处理登录模块。具体代码如下 private void login() {//先做一些基本的判断比如输入的用户命为空密码为空若是直接返回提示错误if (et_name.getText().toString().trim().isEmpty()){showToast(你输入的账号为空);return;}if (et_password.getText().toString().trim().isEmpty()){showToast(你输入的密码为空);return;}Thread loginRunnable new Thread() {Overridepublic void run() {super.run();mLoginBtn.setClickable(false);//点击登录后设置登录按钮不可点击状态//睡眠2秒try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}user userBean.queryByUsername(et_name.getText().toString().trim());//判断账号和密码if (et_name.getText().toString().trim().equals(user.getUsername()) et_password.getText().toString().trim().equals(user.getPassword())) {showToast(登录成功);loadCheckBoxState();//记录下当前用户记住密码和自动登录的状态;SharedPreferencesUtils helper new SharedPreferencesUtils(LoginActivity.this, setting);helper.putValues(new SharedPreferencesUtils.ContentValue(name, et_name.getText().toString().trim()));//将上一次登陆人的账号存入xml文件Intent intentnew Intent(LoginActivity.this, LoginAfterActivity.class);intent.putExtra(username, et_name.getText().toString().trim());startActivity(intent);finish();//关闭页面} else {System.out.println(usernameuser.getUsername());System.out.println(passworduser.getPassword());showToast(输入的登录账号或密码不正确);}mLoginBtn.setClickable(true); //这里解放登录按钮设置为可以点击}};loginRunnable.start();} ​​​​​​​行程界面模块 行程界面就一个自定义标题组件与一个ListView组件具体代码如下 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical includelayoutlayout/title_travelandroid:layout_widthmatch_parentandroid:layout_heightwrap_content /includeListViewandroid:idid/listView1android:layout_widthmatch_parentandroid:layout_heightwrap_content android:divider#dd430b/ListView/LinearLayout 自定义组件代码如下: ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontal TextViewandroid:idid/textView1android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:text行程安排 android:textColorcolor/black_translucentandroid:textSize30dp android:gravitycenterandroid:textAlignmentcenter//LinearLayout 行程界面功能实现截图登录之后按下”注销“返回登陆界面。 添加完条记录点击添加出来一跳添加框填好信息点击”保存“如下图按时间最大往低排序显示如下图所示 选中最后一条信息进行删除之后如上图显示下面进行修改操作将”baixue“的行程内容更改为”chifan“ 从上图看到数据库中数据已经改变。 注销功能代码如下 backLogin.setOnClickListener(new OnClickListener() { Overridepublic void onClick(View v) {//更新用户自动登录的状态人为设为falseuserBean.updateOneData(username, ture, false);//创建记住密码和自动登录是默认不选,密码为空startActivity(new Intent(LoginAfterActivity.this, LoginActivity.class));}}); 2. 增加行程的功能代码主要是增加一行TableRow组件里面内嵌三个EditText组件和一个保存按钮组件保存按钮实现点击保存那么将数据插入到数据库将此组件从TableRowLsit链表中删除从数据库重新加载全部数据更新UI界面 addTravel.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {clear();TableRow tableRownew TableRow(LoginAfterActivity.this);tableRow.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));final MyEditText et1new MyEditText(LoginAfterActivity.this,(int)(0.25*ScreenWidth));final MyEditText et2new MyEditText(LoginAfterActivity.this,(int)(0.25*ScreenWidth));final MyEditText et3new MyEditText(LoginAfterActivity.this,(int)(0.25*ScreenWidth));tableRow.addView(et1);tableRow.addView(et2);tableRow.addView(et3);final TravelBean travelnew TravelBean();Button savenew Button(LoginAfterActivity.this);save.setText(保存);tableRow.addView(save);tableRowList.add(2,tableRow);save.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {travel.setUserID(username);travel.setTravelName(et1.getText().toString());travel.setContent(et2.getText().toString());travel.setTraveldate(et3.getText().toString());System.out.println(我被触发了);travelDB.insert(travel);tableRowList.remove(2);queryAll(); }});/*updateButtonList.add(update);*/queryAll(); }});queryAll();System.out.println(列表长度为tableRowList.size());} ​​​​​​​3. 加载所有数据更新UI界面若有数据那么将数据加载到界面并且动态创建删除、修改按钮并注册监听事件删除按钮从数据库中删除该条记录并回调”加载全部函数“更新界面。修改按钮根据记录ID号对该行程记录进行更新。具体代码如下 public void queryAll() {/*lv.removeAllViews();*/if(!firstLogin)clear();//清除ListView原来的组件firstLoginfalse;final TravelBean[] sf travelDB.LoadAllData(username);/*TextView tvNewnew TextView(this);*//*tvNew.setText(没有数据);*/if(sf!null) {for( int i0;isf.length;i) {System.out.println(共有i);/*IDsf[i].getId()*/TableRow trnew TableRow(this);final MyEditText et1new MyEditText(LoginAfterActivity.this,(int)(0.25*ScreenWidth));et1.setText( sf[i].getTravelName());final MyEditText et2new MyEditText(LoginAfterActivity.this,(int)(0.25*ScreenWidth));et2.setText(sf[i].getContent());final MyEditText et3new MyEditText(LoginAfterActivity.this,(int)(0.25*ScreenWidth));et3.setText(sf[i].getTraveldate());Button updatenew Button(this);update.setText(修改);final TravelBean sfmansf[i];final String idsf[i].getID();update.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {travelDB.updateOneData(et1.getText().toString(),et2.getText().toString(),et3.getText().toString(),id); }});/*updateButtonList.add(update);*/Button deletenew Button(this);delete.setText(删除);delete.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {// TODO Auto-generated method stubtravelDB.deleteOneData(sfman.getID());queryAll();}});tr.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));tr.addView(et1);tr.addView(et2);tr.addView(et3);tr.addView(update);tr.addView(delete);tableRowList.add(tr);}}mAdapter.setTableRowList1(tableRowList);//清空ListView链表/*mAdapter.setTableRowList(tableRowList);*/lv.setAdapter(mAdapter);} ​​​​​​​4. 根据屏幕大小调整动态创建的组件的宽度具体代码如下 获取当前屏幕宽度 WindowManager wm (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics dm new DisplayMetrics();wm.getDefaultDisplay().getMetrics(dm);ScreenWidth dm.widthPixels; // 屏幕宽度(dp)ScreenHeight dm.heightPixels;// 屏幕高度(dp) 对创建的组件宽度进行设置 text1.setWidth((int)(0.25*ScreenWidth)); Text2.setWidth((int)(0.25*ScreenWidth)); Text3.setWidth((int)(0.25*ScreenWidth)); Text4.setWidth((int)(0.25*ScreenWidth)); final MyEditText et1new MyEditText(LoginAfterActivity.this,(int)(0.25*ScreenWidth)); final MyEditText et2new MyEditText(LoginAfterActivity.this,(int)(0.25*ScreenWidth)); final MyEditText et3new MyEditText(LoginAfterActivity.this,(int)(0.25*ScreenWidth)); 清除TableRowList中的除注销登陆、增加行程、和标题栏之外的所有TableRow组件。 public void clear() {if(tableRowList.size()!0tableRowList!null) {for(int i0;itableRowList.size();i) {if(tableRowList.get(i).getChildCount()5) {tableRowList.remove(i);i--;}}}}
http://wiki.neutronadmin.com/news/289177/

相关文章:

  • 网站备案拍照要求品牌推广策略案例
  • 中山做app网站公司吗wordpress怎么放图片
  • 合肥做淘宝网站建设网络升级访问紧急页面通知
  • 建设银行网站功能网址导航发布页
  • 常州哪家公司做网站宣城网站建设 有限公司
  • 网站改版 优势手机建站平台淘客
  • 公司主页的网站格式重庆建设工程信息网官网中苏业盛
  • 做快递单的网站会不会是骗人的网站功能有哪些
  • 龙岗做棋牌网站建设大兴网站定制开发
  • 苏州网站建设专家免费网站容量大
  • 深圳网站优化推广方案网页设计师岗位
  • 模板网站建设教程ip动态地址做网站
  • 常德天鹰建设有限公司网站网站建设服务哪家有
  • 网站排名快速提升工具如何创建一个网站用来存放东西
  • 网站友情链接购买自己做影视网站
  • 做宠物店网站的素材wordpress中英文模板
  • 义乌企业网站搭建首选wordpress主题momo
  • 建设银行开通网银网站上海网站建设网站开发
  • 响应式网站用什么工具电暖怎么做网站
  • 做网站租服务器wordpress过滤用户输入数据库
  • php靓号网站源码google adwords关键词工具
  • 阿里云做网站步骤网站开发工程师中级高级
  • 成华区门户网站网站设计方案怎么写
  • 专业企业网站建设郴州做网站的
  • 中信建设官方网站软件下载wordpress在线安装
  • 网站建设电子苏州建设银行官方网站
  • 网站怎么做浏览量才会多网站设计配色方案
  • 网易 自助网站建设个人养老保险缴费档次
  • 杭州营销型网站建设优秀网文
  • 济南装修公司排名前十强智能网站排名优化