irpas技术客

Android Studio实现学生信息管理系统,基础入门项目_振华OPPO_android studio学生信息管理系统

网络 5307

文章目录 一、需求分析二、开发环境三、详细设计3.1 项目结构3.2 数据库3.3 登录和注册3.4 增删改查 四、项目演示五、项目源码

一、需求分析

该学生信息管理系统具有添加学生信息的功能、删除学生信息的功能、修改学生信息功能和查询学生信息的功能。利用Sqlite数据库实现对学生信息的增删改查,登录密码也采用了MD5加密的方式,更加注重用户隐私安全。除了有欢迎界面,还有注册和登录界面,满足应用的基础需求,主界面和四个独立的操作界面流畅跳转。使用了ListView、Sqlite、Handler、Intent和SharedPreferences等Android基础知识。

二、开发环境

三、详细设计 3.1 项目结构

先来看下项目结构,包名为edu.cn.studentadminister,代码文件分别放在四个文件夹中:

activity:负责增删改查的四个activity文件app:包含欢迎界面、登录界面、注册界面和主界面四个activity文件bean:包含实体类Student和数据库操作类StudentsDaodatabase:MD5加密的工具类MD5Utils和数据库帮助类MyDBHelper 3.2 数据库

SQLiteDatabase是Android三大数据存储方式之一,方便快捷,下面是书上的SQLiteOpenHelper模板,只要自己修改下数据库名称和数据库表的属性即可,在运行项目时会自动创建数据库和数据表。比如这里,我们的数据库叫做db_student.db,数据表叫做tb_Students,表属性分别是(studentid char(20) primary key,studentname varchar(20),majoy varchar(20),studentclass varchar(20))。

package edu.cn.studentadminister.database; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class MyDBHelper extends SQLiteOpenHelper { //定义数据库名称和版本号 public static final String name = "db_student.db"; public static final int DB_VERSION = 1; //创建数据表的语句 public static final String CREATE_USERDATA = "create table tb_Students(studentid char(20)primary key,studentname varchar(20),majoy varchar(20),studentclass varchar(20))"; //构造函数 public MyDBHelper(Context context) { super(context, name, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_USERDATA); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }

当然对数据表进行的各种增删改查操作都在StudentsDao中进行了集成:

addStudents()向values数组中插入学生信息的键值对,然后insert()插入到表中。deletStudents()从数据表中删除指定id的学生信息。updateStudents()向values数组中插入学生信息的键值对,并且update()更新指定id的学生信息。getStudents()通过id获取到该学生的所有信息,使用cursor从头到尾扫描一条记录。getAllstudents()查询数据表中所有的学生信息记录,返回的是信息列表。 //添加学生信息 public long addStudents(Student o) { // 创建ContentValues对象 ContentValues values = new ContentValues(); // 向该对象中插入键值对 values.put("studentid", o.studentid); values.put("studentname", o.studentname); values.put("majoy", o.majoy); values.put("studentclass", o.studentclass); // 调用insert()方法将数据插入到数据库当中 return db.insert("tb_Students", null, values); } //删除指定学生信息 public int deletStudents(Student o) { return db.delete("tb_Students", "studentid=?", new String[]{String.valueOf(o.studentid)}); } //修改指定学生信息 public int updateStudents(Student o) { ContentValues value = new ContentValues(); value.put("studentname", o.studentname); value.put("majoy", o.majoy); value.put("studentclass", o.studentclass); return db.update("tb_Students", value, "studentid=?", new String[]{String.valueOf(o.studentid)}); } //根据学生学号查找信息 public Student getStudents(String studentid) { //查询学生 Cursor cursor = db.query("tb_Students", null, "studentid=?", new String[]{studentid}, null, null, null); Student o = new Student(); 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.studentclass = cursor.getString(cursor.getColumnIndex("studentclass")); } return o; } //查看所有学生信息 public ArrayList<Map<String, Object>> getAllstudents() { ArrayList<Map<String, Object>> listStudents = new ArrayList<Map<String, Object>>(); Cursor cursor = db.query("tb_Students", 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("studentclass", cursor.getString(cursor.getColumnIndex("studentclass"))); listStudents.add(map); } return listStudents; } } 3.3 登录和注册

在登录注册前还有进入应用的3s欢迎界面,实现起来很简单,其实就是使用Handler消息传递机制,延迟3000ms后执行run()中的intent跳转,并且销毁自身的activity。

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); } }

登录和注册界面的activity实现起来有很多细节,首先最基本的需求就是你登录的账号和密码要正确,这就需要从数据库中搜索登录账号对应的密码,然后与用户输入的密码进行比对。前面我们说过,密码经过了MD5加密存储在SharedPreferences中,所以,我们中间也要转换一步。

其次,注册的用户账号不能已存在,即用户的账号是键属性,非空且唯一。而且输入的账号和密码不能为空,且不能包含非法字符。

最后,登录时,如果账号不存在也无法登录。无论登录成功与否都会提示相关信息。

private void init() { et_username = (EditText) findViewById(R.id.loginusername); et_pwd = (EditText) findViewById(R.id.loginpwd); 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(); } }); } 3.4 增删改查

增删改查四个activity中,我们以AddActivity添加学生信息为例,其实都是对数据库中的学生表进行操作。首先填写完学生信息后,点击【添加】按钮,那么就会执行下面的点击事件。

获取到每个EditText的文本信息并且转成String字符串类型。检验信息是否正确,isEmpty()判断是否为空。如果id空,则请输入学号,如果name空,请输入姓名,如果major空,请输入专业,如果class空,请输入班级。执行到此步,肯定信息都输入正确,那么初始化一个Student对象o,将获取的String类型的学生信息分别赋值给对象的属性。dao对象打开数据库,执行数据库的添加信息,然后关闭数据库,结束活动。 @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 studentclass = etStudentclass.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(studentclass)) { Toast.makeText(this, "请输入班级", Toast.LENGTH_SHORT).show(); return; } //添加学生信息 Student o =new Student(); o.studentid= studentid; o.studentname = studentname; o.majoy = majoy; o.studentclass = studentclass; //创建数据库访问对象 StudentsDAO dao = new StudentsDAO(getApplicationContext()); //打开数据库 dao.open(); //执行数据库访问方法 long result = dao.addStudents(o); if (result > 0) { Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "添加失败", Toast.LENGTH_SHORT).show(); } //关闭数据库 dao.close(); //关闭活动 finish(); } 四、项目演示

学生信息管理系统

五、项目源码

点此下载源码:👉Android Studio实现学生信息管理系统👈

??还可以关注我的公众号《萌新加油站》,后台回复:学生系统 ??


🚀这有你错过的精彩内容

??Android Studio实现一个校园二手交易系统??

??Android Stduio实现一个天气预报APP??

??Android Studio实现一个健康饮食搭配APP??

??Android Studio实现音乐播放器2.0版本??


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #studio学生信息管理系统