1. 基于Android的用户信息管理与学习系统设计与实现
1.1 系统需求分析 3
1.1.1操作可行性 3
1.1.2功能分析 3
1.2 系统总体设计 3
1.2.1UML类图 3
1.3 系统测试 4
1.3.1 首页界面 4
1.3.2“我”的界面 4
1.3.3课程界面 4
1.3.4注册界面 5
1.3.5登录界面 5
1.3.6设置界面 6
1.3.7修改密码 6
1.3.8设置密保 7
1.3.9找回密码 7
1.3.10个人资料 8
1.4系统实现 9
1.4.1清单文件 9
1.4.2主要代码 10
1.5技术说明 22
2. 课程设计总结 22
2.1 总结 22
系统的操作可行性是一个系统成功与否的关健,在很多系统中操作的合理性经常成为用户讨论的焦点,所以说系统设计的合理性既是需要考虑的关键也是对用户选择此系统的主要吸引力。
该系统的功能不能单一,这样既保证了用户的部分需求,也不会显得杂乱。
本系统“用户信息管理与学校”包含首页、学习课程、用户注册、用户登录、个人资料、设置、修改密码、设置密保、找回密码、修改个人信息10个功能。
实现首界面的搭建;
实现右上角小人图标的点击事件;
实现界面跳转功能(跳转到“我”的界面)。
实现“我”的界面的搭建;
实现界面跳转。
实现课程的界面的搭建;
实现界面跳转。
实现注册界面的搭建;
实现注册按钮的点击事件;
实现界面跳转功能(跳转到个人信息界面)。
实现登录界面的搭建;
实现登录按钮的点击事件;
实现界面跳转功能(跳转到个人信息界面)。
实现设置界面的搭建;
实现界面跳转(点击修改密码跳转到修改密码界面,点击设置密保跳转到设置密保界面);
实现退出登录按钮的点击事件。
实现修改密码界面的搭建;
实现保存按钮的点击事件;
实现界面跳转(修改成功后关闭设置界面和修改密码界面,并跳转到登录界面)。
实现设置密保界面的搭建
实现验证按钮的点击事件
实现找回界面的搭建
实现验证按钮的点击事件
实现个人资料界面的搭建;
实现用户信息的展示;
实现性别条目的点击事件(可以修改性别);
实现界面跳转(分别点击昵称和签名会跳转到个人资料修改界面)。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.training"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/w1"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<activity
android:name="com.study.activity.MainActivity"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.study.activity.LoginActivity" />
<activity android:name="com.study.activity.MyInfoActivity" />
<activity android:name="com.study.activity.RegisterActivity" />
<activity android:name="com.study.activity.FindPswActivity" />
<activity android:name="com.study.activity.UserInfoActivity" />
<activity android:name="com.study.activity.ChangeUserInfoActivity" />
<activity android:name="com.study.activity.SettingActivity" />
<activity android:name="com.study.activity.ModifyPswActivity" />
<activity android:name="com.study.activity.VideoActivity" />
</application>
</manifest>
主要布局代码
(1)activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:orientation="vertical" >
<include layout="@layout/main_title_bar" />
<ImageView
android:id="@+id/main_body"
android:layout_width="match_parent"
android:layout_height="178dp"
android:background="@drawable/w1" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="45dp" >
<ImageView
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:src="@drawable/course_intro_icon" />
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginLeft="5dp"
android:gravity="center_vertical"
android:text="Android 基础教程1-4章视频"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<include layout="@layout/course_list_item" />
<include layout="@layout/course_list_item2" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/main_bottom_bar"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_alignParentBottom="true"
android:background="#F2F2F2"
android:orientation="horizontal" >
<RelativeLayout
android:id="@+id/bottom_bar_course_btn"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1" >
<Button
android:id="@+id/bottom_bar_text_course"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="3dp"
android:gravity="center"
android:singleLine="true"
android:background="@null"
android:text="课程"
android:textColor="#666666"
android:textSize="14sp"
android:onClick="Click" />
<ImageView
android:id="@+id/bottom_bar_image_course"
android:layout_width="27dp"
android:layout_height="27dp"
android:layout_above="@id/bottom_bar_text_course"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="3dp"
android:src="@drawable/main_course_icon" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/bottom_bar_myinfo_btn"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1" >
<TextView
android:id="@+id/bottom_bar_text_myinfo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="3dp"
android:gravity="center"
android:singleLine="true"
android:text="我"
android:textColor="#666666"
android:textSize="14sp" />
<ImageView
android:id="@+id/bottom_bar_image_myinfo"
android:layout_width="27dp"
android:layout_height="27dp"
android:layout_above="@id/bottom_bar_text_myinfo"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="3dp"
android:src="@drawable/main_my_icon" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/bottom_bar_image_myinfo"
android:background="@null"
android:onClick="Clicktwo"
/>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
(2)activity_myinfo.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white" >
<LinearLayout
android:id="@+id/ll_head"
android:layout_width="fill_parent"
android:layout_height="240dp"
android:background="@drawable/myinfo_bg"
android:orientation="vertical" >
<ImageView
android:id="@+id/iv_head_icon"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="75dp"
android:src="@drawable/head" />
<TextView
android:id="@+id/tv_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="点击登录"
android:textColor="@drawable/register_normal"
android:textSize="16sp" />
</LinearLayout>
<include layout="@layout/main_title_bar" />
<View
android:id="@+id/v_line"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_below="@id/ll_head"
android:layout_marginTop="20dp"
android:background="#E3E3E3" />
<RelativeLayout
android:id="@+id/rl_setting"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_below="@id/v_line"
android:background="#F7F8F8"
android:gravity="center_vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp" >
<ImageView
android:id="@+id/iv_userinfo_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="25dp"
android:src="@drawable/myinfo_setting_icon" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="25dp"
android:layout_toRightOf="@id/iv_userinfo_icon"
android:text="设置"
android:textColor="#A3A3A3"
android:textSize="16sp" />
<ImageView
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="25dp"
android:src="@drawable/iv_right_arrow" />
</RelativeLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_below="@id/rl_setting"
android:background="#E3E3E3" />
</RelativeLayout>
主要java代码
(1)MainActivity.java
package com.study.activity;
import com.training.R;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv_main_title;
private ImageView iv_info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
tv_main_title = (TextView) findViewById(R.id.tv_main_title);
iv_info = (ImageView) findViewById(R.id.iv_info);
iv_info.setVisibility(View.VISIBLE);
tv_main_title.setText("首页");
iv_info.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//已登录跳转到个人资料界面
Intent intent=new Intent(MainActivity.this,MyInfoActivity.class);
startActivity(intent);
}
});
}
public void Click(View v) {
Intent intent=new Intent(MainActivity.this,VideoActivity.class);
startActivity(intent);
}
public void Clicktwo(View v) {
Intent intent=new Intent(MainActivity.this,LoginActivity.class);
startActivity(intent);
}
}
(2)MyInfoActivity.java
package com.study.activity;
import com.training.R;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MyInfoActivity extends Activity {
private RelativeLayout rl_title_bar;
private RelativeLayout rl_setting;
private TextView tv_user_name,tv_back;
private ImageView iv_head;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_myinfo);
init();
}
private void init() {
rl_setting = (RelativeLayout) findViewById(R.id.rl_setting);
rl_title_bar=(RelativeLayout) findViewById(R.id.title_bar);
tv_user_name = (TextView) findViewById(R.id.tv_user_name);
rl_title_bar.setBackgroundColor(Color.TRANSPARENT);
tv_back=(TextView) findViewById(R.id.tv_back);
tv_back.setVisibility(View.VISIBLE);
iv_head=(ImageView) findViewById(R.id.iv_head_icon);
tv_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MyInfoActivity.this.finish();
}
});
if (readLoginStatus()) {
tv_user_name.setText(readLoginUserName());
} else {
tv_user_name.setText("点击登录");
}
iv_head.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 判断是否已经登录
if (readLoginStatus()) {
// 已登录跳转到个人资料界面
Intent intent = new Intent(MyInfoActivity.this, UserInfoActivity.class);
startActivity(intent);
} else {
// 未登录跳转到登录界面
Intent intent = new Intent(MyInfoActivity.this, LoginActivity.class);
startActivityForResult(intent, 1);
}
}
});
tv_user_name.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 判断是否已经登录
if (readLoginStatus()) {
// 已登录跳转到个人资料界面
Intent intent = new Intent(MyInfoActivity.this, UserInfoActivity.class);
startActivity(intent);
} else {
// 未登录跳转到登录界面
Intent intent = new Intent(MyInfoActivity.this, LoginActivity.class);
startActivityForResult(intent, 1);
}
}
});
rl_setting.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (readLoginStatus()) {
// 跳转到设置界面
Intent intent=new Intent(MyInfoActivity.this,SettingActivity.class);
startActivityForResult(intent,1);
} else {
Toast.makeText(MyInfoActivity.this, "您还未登录,请先登录", Toast.LENGTH_SHORT)
.show();
}
}
});
}
/**
* 从SharedPreferences中读取登录用户名
*/
private String readLoginUserName() {
SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
String userName = sp.getString("loginUserName", "");// 获取登录时的用户名
return userName;
}
/**
* 从SharedPreferences中读取登录状态
*/
private boolean readLoginStatus() {
SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
boolean isLogin = sp.getBoolean("isLogin", false);
return isLogin;
}
/**
* 登录成功后设置我的界面
*/
public void setLoginParams(boolean isLogin){
if(isLogin){
tv_user_name.setText(readLoginUserName());
}else{
tv_user_name.setText("点击登录");
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(data!=null){
//从设置界面或登录界面传递过来的登录状态
boolean isLogin=data.getBooleanExtra("isLogin",false);
setLoginParams(isLogin);
}
}
}
1.5技术说明
主要使用技术 |
使用地方 |
ListView |
学习课程列表 |
SharedPreferneces |
个人资料,保存的账号、密码等 |
不管做什么,我们都要相信自己,不能畏惧,不能怕遇到困难,什么都需要去尝试,有些你开始认为很难的事在你尝试之后你可能会发现原来她并没有你以前觉得的那样,自己也是可以的。如果没有自信,没有目标,没有信心就不可能把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标,大学毕业出去即面临找工作,从学习这个专业,到以后从事这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想!
以上基本是这次课设的体会了,设计进行的非常艰难,编码非常不容易,才发现做一个项目最重要的不在于如何实现,而是实现之前的需求分析和模块设计。创新很难,有些流行的系统其实现并不难,难的在于对市场的分析和准确定位。设计,是一个任重道远的过程。
原文:https://www.cnblogs.com/Suzy-an/p/11997056.html