Android学生管理系统

由android + mysql实现

1.需求分析

功能需求和页面需求两天没有细想,想到啥功能写啥功能想到啥界面写啥界面

2.系统设计

总体界面结构参照了微信的设计结构,主要功能包括管理员的注册和登录,所有学生信息的查询、单个学生信息的添加。

Android学生信息管理应用程序制作 基于android的学生管理系统_居中显示


界面主要由两下方的按钮部分和上方的功能部分组成,每一个按钮又是一个不同的Fragment,每一个功能也是一个不同的Fragment。

2.1按钮

布局为垂直线性布局,从上到下依次是ImageButton以及TextView。

Android学生信息管理应用程序制作 基于android的学生管理系统_居中显示_02


其余三个按钮类似,不做过多介绍。

2.2登陆/注册功能

布局为ConstraintLayout,由ImageView、两个TextView、两个按钮构成

Android学生信息管理应用程序制作 基于android的学生管理系统_业务逻辑_03

2.3所有学生信息功能

布局为垂直线性布局,从上到下依次是TextView,TableLayout。为TableLayout添加五列,分别是学生的学号、专业、姓名、性别、年龄。

Android学生信息管理应用程序制作 基于android的学生管理系统_Android学生信息管理应用程序制作_04

2.4添加学生信息

布局为ConstraintLayout

Android学生信息管理应用程序制作 基于android的学生管理系统_业务逻辑_05


以上四个按钮+三个Fragment共同组成了整个学生管理系统

3.数据库设计

3.1用户表

用户的属性为用户名和密码

字段名

字段类型

字段长度

username

String

50

password

String

50

3.2学生表

学生的属性为学号、专业、姓名、性别、年龄

字段名

字段类型

字段长度

id

String

20

major

String

20

name

String

20

age

int

20

gender

String

20

4.系统实现

4.1 Fragment的界面切换

将四个不同按钮的界面设计好后,分别新建四个不同的Fragment的子类与四个不同的按钮相对应

  1. 登录/注册按钮
  2. 所有学生信息按钮
  3. 添加学生信息按钮
  4. 查询学生信息按钮

添加完毕之后,为主页面添加四个fragments与上面四个类相对应,并在主页面中添加相应的点击事件监听,并创建四个功能界面碎片的实例。之后的主要逻辑为,先隐藏所有的界面碎片实例,在根据按钮的不同来展现不同的碎片实例。

Android学生信息管理应用程序制作 基于android的学生管理系统_mysql_06


Android学生信息管理应用程序制作 基于android的学生管理系统_mysql_07


Android学生信息管理应用程序制作 基于android的学生管理系统_Android学生信息管理应用程序制作_08


上图是登录注册界面部分的切换,其他类似。

至此,Fragment页面切换功能结束。

4.2 登录注册功能

  1. 注册功能
    首先先完成新建一个名为Dao层的包来存放对数据库的增删改查,并新建一个叫userDao的类来编写对用户信息的增删改查
    添加用户

    通过用户名查询用户信息

    其次在新建一个名为service的包来存放业务逻辑处理,例如用户的登录注册,学生信息的添加和查询
    用户注册业务逻辑

    最后在注册按钮处调用对应的方法,值得一提的是,android调用数据库方法需要在一个子线程中启动。
    获取输入信息

    调用方法
  2. 登录
    用户登录业务逻辑

    调用方法

4.3所有学生信息查询

首先新建一个叫studentDao的类来编写对学生信息的增删改查

所有学生信息查询

Android学生信息管理应用程序制作 基于android的学生管理系统_Android学生信息管理应用程序制作_09


添加学生信息

Android学生信息管理应用程序制作 基于android的学生管理系统_居中显示_10


通过学号查询学生信息

Android学生信息管理应用程序制作 基于android的学生管理系统_居中显示_11


调用方法

依旧是开启一个线程,在使用java语句手动创建一行向tableLayout中添加以查询到的数据

public void run() {
            for (int i = 0; i<mStudentList.size(); i++){
                TableRow row = new TableRow(getContext());

                text1 = new TextView(getContext());
                text1.setText(mStudentList.get(i).getId());
                text1.setTextSize(20); //字体大小
                text1.setTextColor(R.color.teal_200);
                text1.setGravity(Gravity.CENTER); //居中显示

                text2 = new TextView(getContext());
                text2.setText(mStudentList.get(i).getMajor());
                text2.setTextSize(20); //字体大小
                text2.setGravity(Gravity.CENTER); //居中显示

                text3 = new TextView(getContext());
                text3.setText(mStudentList.get(i).getName());
                text3.setTextColor(R.color.teal_200);
                text3.setTextSize(20); //字体大小
                text3.setGravity(Gravity.CENTER); //居中显示

                text4 = new TextView(getContext());
                text4.setText(String.valueOf(mStudentList.get(i).getAge()));
                text4.setTextSize(20); //字体大小
                text4.setGravity(Gravity.CENTER); //居中显示

                text5 = new TextView(getContext());
                text5.setText(mStudentList.get(i).getGender());
                text5.setTextSize(20); //字体大小
                text5.setGravity(Gravity.CENTER); //居中显示

                row.addView(text1);
                row.addView(text2);
                row.addView(text3);
                row.addView(text4);
                row.addView(text5);

                mTableLayout.addView(row);
            }
        }

并在主线程中更新

mStudentDao = new studentDao();
        mTableLayout = view.findViewById(R.id.table);
        new Thread(new Runnable(){
            public void run(){
                mStudentList =mStudentDao.findAllDao();
                handler.post(mRunnable);
            }
        }).start();

所有学生信息查询功能结束

4.4添加学生信息

业务逻辑

//添加学生数据
    public boolean add(Student student){
        if (mStudentDao.findByIdDao(student.getId()).getId()!=null){
            return false;
        }
        mStudentDao.addDao(student);
        return true;
    }

数据获取

Android学生信息管理应用程序制作 基于android的学生管理系统_Android学生信息管理应用程序制作_12


调用方法

Android学生信息管理应用程序制作 基于android的学生管理系统_业务逻辑_13


至此,添加学生信息功能结束

5. 运行结果

5.1所有学生信息的查询

Android学生信息管理应用程序制作 基于android的学生管理系统_mysql_14


其他功能不好展现,在这里就不展现了