Android Studio实现学生信息管理系统

这篇具有很好参考价值的文章主要介绍了Android Studio实现学生信息管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、需求分析

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

二、开发环境

Android Studio实现学生信息管理系统

三、详细设计

3.1 项目结构

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

  • activity:负责增删改查的四个activity文件
  • app:包含欢迎界面、登录界面、注册界面和主界面四个activity文件
  • bean:包含实体类Student和数据库操作类StudentsDao
  • database:MD5加密的工具类MD5Utils和数据库帮助类MyDBHelper
    Android Studio实现学生信息管理系统

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添加学生信息为例,其实都是对数据库中的学生表进行操作。首先填写完学生信息后,点击【添加】按钮,那么就会执行下面的点击事件。

  1. 获取到每个EditText的文本信息并且转成String字符串类型。
  2. 检验信息是否正确,isEmpty()判断是否为空。如果id空,则请输入学号,如果name空,请输入姓名,如果major空,请输入专业,如果class空,请输入班级。
  3. 执行到此步,肯定信息都输入正确,那么初始化一个Student对象o,将获取的String类型的学生信息分别赋值给对象的属性。
  4. 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();
    }

四、项目演示

学生信息管理系统

五、源码获取

♻️下面两种方式都可以获取源代码
1️⃣ 点击直接下载 Android Studio 学生信息管理系统
2️⃣关注公众号《 萌新加油站 》,后台回复: 学生系统

🚀这有你错过的精彩内容
Android Studio实现外卖订餐系统
Android Studio实现考试管理系统
Android Studio实现天气预报系统
Android Studio实现图书馆订座系统
Android Studio实现前后台分离的选课系统

一知半解的人,多不谦虚;见多识广有本领的人,一定谦虚。——谢觉哉文章来源地址https://www.toymoban.com/news/detail-431055.html

到了这里,关于Android Studio实现学生信息管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【超详细】Java实现学生信息管理系统

     项目介绍:用java实现学生信息的管理,其中录入的数据包括:学号、姓名、年龄、居住地等,并且能够实现对学生信息的添加、修改、删除、查看功能。 一、创建项目 1、项目名称:myStudentManager 二、创建包 1、包名称:study 2、名字也可以自己进行命名 三、创建两个类 1、

    2024年02月04日
    浏览(43)
  • 基于C++实现的学生信息管理系统

    点击获取(源码+课程设计报告文档+截图) 学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如

    2024年02月04日
    浏览(44)
  • 基于SSM架构实现学生信息管理系统

    本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架搭建的学生信息管理系统,实现了对学生、用户等信息的增删改查功能,以及登录、分页等功能。本项目采用了三层架构,分为entity层、service层、dao层和controller层,使用了Maven进行项目管理,使用了MySQL作为数据库。 本项目主要

    2024年02月03日
    浏览(52)
  • java毕业设计——基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    大家好,今天给大家介绍基于JSP+sqlserver的学生信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 随着学校规模的

    2024年02月04日
    浏览(68)
  • JAVA学生信息管理系统(数据库实现)

    这次的项目是用数据库实现学生的信息管理系统,有三步组成,写项目链接数据库实现相关的操作 开发工具: eclipse、MySQL、navicat、mysql-connector-java-8.0.27     (1)主页面   (2)添加界面   (3)删除界面    (4)修改界面  (5)查找界面 (6)数据库链接   添加Java驱动包

    2024年02月11日
    浏览(45)
  • C语言实现学生信息管理系统(附原码)

    本人的C语言学习完后,用所学的知识自己实现了一个学生管理系统,新手一个,代码还有待完善,欢迎大家在评论区指出错误! 一、流程图 二、函数的目录  三、程序介绍  1.主要功能: 添加学生信息、打印学生信息、查找学生信息、添加学生信息、修改学生信息、计算学

    2024年02月12日
    浏览(45)
  • python基于Tkinter实现学生信息管理系统

    1.添加学生成绩:管理员可以在系统中添加学生的成绩信息,包括学生姓名、学号、课程名称、成绩等。 2.删除学生成绩:管理员可以根据学生的学号或者姓名删除学生的成绩信息。 3.修改学生成绩:管理员可以修改学生的成绩信息,包括学生姓名、学号、课程名称、成绩等

    2024年02月08日
    浏览(73)
  • Java基础——学生成绩信息管理系统(简单实现)

    1、 定义一个学生类 Student,包含姓名、成绩信息; 2、使用 ArrayList集合存储学生对象; 3、 对集合中的元素进行增删查改的操作。 学生类可以包含姓名、成绩、学号、年龄等等,这里只包含了前两项学生类属性。 在该类中定义了简单的增、删、查、改的方法。 其中,遍历集

    2024年02月11日
    浏览(35)
  • 【Java:JDBC+MySQL实现学生信息管理系统】

    此次使用Java JDBC+MySQL数据库实现一个简易的学生管理系统(没有前端界面)。 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我

    2024年02月05日
    浏览(61)
  • 基于python的学生信息管理系统的设计与实现

    小白学python,做了一个基础小系统,给大家分享一下(欢迎大神指导) 目录 步骤 1.设计要求 2.设计步骤 (1)导入os模块,创建一个文件夹用于存储数据  (2)定义一个菜单函数 (3)实现学生信息的录入功能 (4)定义了一个save函数用于录入功能的调用 (5)查询功能的实现

    2024年02月09日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包