基于Android Studio的学生信息管理App

发布于:2023-01-22 ⋅ 阅读:(2) ⋅ 点赞:(0) ⋅ 评论:(0)

 先看效果图: 

下载链接在底部

  

1.1 设计目的

学生信息的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生信息管理还停留在纸介质的基础上,尤其是中、小学对学生信息的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。作为移动应用的一部分,使用移动应用对学生档案进行管理,有着手工管理所无法比拟的优点,系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。作为移动应用的一部分,使用移动终端APP对学校的各类信息进行管理,具有手工管理无法比拟的优点。例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。

1.2 需求实现的功能

1.2.1 注册功能

用户依据自己的学号或者工号进行用户注册,持有账号后方可进行进行登录系统,进行用户的一系列操作。

1.2.2 登录功能

用户经过注册后持有系统账户,选择不同登录模式,输入正确的账号和密码即可登录本系统,进入系统后,不同的登录权限将会进入不同系统主界面,进行用户的不同操作。

1.2.3 查看个人信息功能

用户登录系统后进入主界面,点击“查看个人信息”的图片按钮或文字,即可进入个人信息界面,查看用户的学号、姓名、专业、班级、院系、联系手机号码。

1.2.4修改个人信息功能

用户登录系统进入主界面后,点击“修改个人信息”的图片按钮或文字,即可进入修改个人信息界面,可对用户个人的姓名和联系手机号码进行修改操作。输入姓名和11位联系手机号,点击“确定”按钮,完成对个人信息的修改。

1.2.5 修改密码功能

用不同的登录权限进入不同的系统主界面,用户和管理员都可以进行密码的修改。进入修改密码功能,输入两次一致的新密码,点击“确定”按钮,即可完成密码的修改。

1.2.6 用户查看成绩功能

用户在系统主界面选择“查看成绩”功能,进入查看成绩界面,输入课程名,点击“立即查询”按钮,界面显示用户的学号、姓名、课程名、成绩。

1.2.7 添加学生信息功能

此功能为管理员为学生用户添加账号,管理员进入添加学生信息界面后,输入学生的学号、初始密码、姓名、专业、班级、院系、手机号,点击“添加”按钮,即可添加学生用户。

1.2.8 修改学生信息功能

管理员在修改学生信息界面下,可以对学生的姓名、密码、专业、班级、院系、手机号进行一一修改。

1.2.9 查询学生信息功能

管理员实现对学生信息进行按学号查询,输入学生学号后点击“立即查询”按钮,即可查询学生的学号、密码、姓名、专业、班级、院系、手机号等详细信息。

1.2.10 删除学生信息功能

管理员对学生信息按照学号进行删除,输入学生学号后点击“删除”按钮,可实现对学生信息的删除。

1.2.11 添加学生课程成绩功能

此功能为管理员为学生添加课程成绩,在此界面输入学生学号、姓名、课程名、成绩,即可添加学生课程成绩。

1.2.12 修改学生课程成绩功能

管理员对已录入学生课程成绩进行修改,管理员输入学生的学号、姓名、课程名、成绩,点击“修改”按钮,即可实现修改成绩。

1.2.13 查询学生课程成绩功能

管理员实现对学生课程成绩进行按学号查询,输入学生学号后点击“立即查询”按钮,即可查询学生的学号、姓名、课程名、成绩。

1.2.14 删除学生课程成绩功能

管理员对学生课程成绩按照学号进行删除,输入学生学号后点击“删除”按钮,可实现对学生课程成绩的删除。

1.2.15 查看班级学生信息功能

管理员可以按照所属班级进行学生信息的详细查看,输入班级名称进行检索,即可查看该班级所有学生的详细信息。

2.1 功能模块划分

学生信息管理APP功能描述:本APP分为学生端功能和管理员端功能,学生端功能分为学号注册、学生登录、查看个人信息、修改个人信息、修改密码、查询课程成绩6个功能模块;管理员端分为工号注册,管理员登录、添加学生信息、修改学生信息、查询学生信息、删除学生信息、添加学生成绩、修改学生成绩、查询学生成绩、删除学生成绩、查看班级学生、修改密码12个功能模块。

功能模块划分图如下:

1、注册功能:这是用户使用学号或工号进行系统账户注册,采用输入框获取内容方法和按钮事件实现。

public class User_register extends AppCompatActivity {

    private EditText Userid_register,Userpwd_register1,Userpwd_register2;
    private Button Register_button;
    private SQLiteDatabase db;
    private MyDataBase sql;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_register);
        sql=new MyDataBase(this,"xxx",null,1);
        Register_button=(Button)findViewById(R.id.Register_button);
        Userid_register=(EditText)findViewById(R.id.Userid_register);
        Userpwd_register1=(EditText)findViewById(R.id.Userpwd_register1);
        Userpwd_register2=(EditText)findViewById(R.id.Userpwd_register1);
        db=sql.getWritableDatabase();

    }

    public String checkInfo(){

        String userid=Userid_register.getText().toString();
        String userpwd = Userpwd_register1.getText().toString();
        String reuserpwd=Userpwd_register2.getText().toString();
        if(userid==null||"".equals(Userid_register)){
            return "账号不能为空";

        }
        if (userpwd.length()<6||userpwd.length()>15){
            return "密码位数在6-15位之间";

        }
        if(!userpwd.equals(reuserpwd)){
            return "两次密码必须一致";
        }
        return null;
    }

    public  void  register(View view){
        String userid=Userid_register.getText().toString();
        String userpwd=Userpwd_register1.getText().toString();
        String checkResult=checkInfo();
        if (checkInfo()!=null){
            AlertDialog.Builder builder=new AlertDialog.Builder(this);
            builder.setTitle("失败提示");
            builder.setMessage(checkResult);
            builder.setPositiveButton("确定",null);
            builder.create().show();
        }else{
            Log.d("Register","sss");
            if (selectid(userid)){
                Toast.makeText(User_register.this,"该账号已被注册,注册失败",Toast.LENGTH_SHORT).show();
            }

            else{
                db.execSQL("insert into userinfo_tb(userid,userpwd) values(?,?)",new String[]{userid,userpwd});
                Toast.makeText(User_register.this,"注册成功",Toast.LENGTH_SHORT).show();
                Intent intent=new Intent(User_register.this,User_login.class);
                startActivity(intent);
            }
        }
    }

    private  boolean selectid(String userid){
        String sql1="select * from userinfo_tb where userid = ? ";
        Cursor cursor=db.rawQuery(sql1,new String[]{ userid });
        if (cursor.getCount()>0){
            cursor.close();
            return true;
        }
        else
        {
            cursor.close();
            return  false;
        }
    }
    public void Go_userlogin(View view){
        Intent intent = new Intent(this,User_login.class);
        startActivity(intent);
    }
}

2、登录功能:用户登录时调用。

public class User_login extends AppCompatActivity {

    private SQLiteDatabase db;

    private MyDataBase sql;

    private EditText Userid,Userpwd;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_user_login);

        sql=new MyDataBase(this,"xxx",null,1);

        Userid=(EditText)findViewById(R.id.Userid);

        Userpwd=(EditText)findViewById(R.id.Userpwd);

        db=sql.getWritableDatabase();

    }

    public String checkInfo(){

        String userpwd = Userpwd.getText().toString();

        if (userpwd.length()<6||userpwd.length()>15){

            return "密码位数在6-15位之间";

        }

        return null;

    }

    public void login(View view)

    {

        String userid=Userid.getText().toString();

        String userpwd=Userpwd.getText().toString();

        String checkResult=checkInfo();

        if (checkInfo()!=null){

            AlertDialog.Builder builder=new AlertDialog.Builder(this);

            builder.setTitle("失败提示");

            builder.setMessage(checkResult);

            builder.setPositiveButton("确定",null);

            builder.create().show();

        }else {

            Log.d("MainActivity","sss");

            if (selectid(userid,userpwd)) {

                Toast.makeText(User_login.this,"登陆成功",Toast.LENGTH_SHORT).show();

                Intent intent=new Intent(User_login.this,User_main.class);

                intent.putExtra("Userid",Userid.getText().toString());

                startActivity(intent);

            }else{

                Toast.makeText(User_login.this,"用户名或者密码错误",Toast.LENGTH_SHORT).show();

            }

        }

    }

    private  boolean selectid(String userid,String userpwd){

        String sql1="select * from userinfo_tb where userid = ? and userpwd = ? ";

        Cursor cursor=db.rawQuery(sql1,new String[]{ userid,userpwd});

        if (cursor.getCount()>0){

            cursor.close();

            return true;

        }

        else

        {

            cursor.close();

            return  false;

        }

    }

    public void Go_register(View view){

        Intent intent = new Intent(this,User_register.class);

        startActivity(intent);

    }

    public void Go_adminlogin(View view){

        Intent intent = new Intent(this,Admin_login.class);

        startActivity(intent);

    }

}

3、查看成绩功能:这是学生用户按课程名查看课程成绩的方法。

public class User_view_score extends AppCompatActivity {

    private TextView Userid,Username,Usercourse,Userscore;

    private EditText Usercourse_check;

    private SQLiteDatabase db;

    private MyDataBase sql;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_user_view_score);

        Usercourse_check=(EditText)findViewById(R.id.Usercourse_check);

        Userid=(TextView)findViewById(R.id.Userid);

        Username=(TextView)findViewById(R.id.Username);

        Usercourse=(TextView)findViewById(R.id.Usercourse);

        Userscore=(TextView)findViewById(R.id.Userscore);

        sql=new MyDataBase(this,"xxx",null,1);

        db=sql.getWritableDatabase();

    }

    public String checkInfo(){

        String usercourse_check=Usercourse_check.getText().toString();

        if(usercourse_check.length()==0){

            return "课程不能为空";

        }

        return null;

    }

    private  boolean selectcourse(String usercourse_check){

        String sql1="select * from userscore_tb where course = ? ";

        Cursor cursor=db.rawQuery(sql1,new String[]{ usercourse_check });

        if (cursor.getCount()==0){

            cursor.close();

            return true;

        }

        else

        {

            cursor.close();

            return  false;

        }

    }

    public void user_course_check(View view){

        String usercourse_check = Usercourse_check.getText().toString();

        String checkResult = checkInfo();

        if (checkInfo() != null) {

            AlertDialog.Builder builder = new AlertDialog.Builder(this);

            builder.setTitle("失败提示");

            builder.setMessage(checkResult);

            builder.setPositiveButton("确定", null);

            builder.create().show();

        } else {

            Log.d("Admin_alter_info", "sss");

            if (selectcourse(usercourse_check)) {

                Toast.makeText(User_view_score.this, "该课程不存在,失败", Toast.LENGTH_SHORT).show();

            }else{

                Cursor cursor=db.rawQuery("select * from userscore_tb where course = ?",new String[]{usercourse_check});

                cursor.moveToFirst();

                Userid.setText(cursor.getString(1));

                Username.setText(cursor.getString(2));

                Usercourse.setText(cursor.getString(3));

                Userscore.setText(cursor.getString(4));

                cursor.close();

                Toast.makeText(User_view_score.this, "查询成功", Toast.LENGTH_SHORT).show();

            }

        }

    }

}

4、查看班级学生信息功能:这是管理员用户按班级名查看班级学生信息的方法。

public class Admin_view_classes extends AppCompatActivity {

    private EditText Admincalsses_check;

    private ListView listview;

    private SQLiteDatabase db;

    private MyDataBase sql;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_admin_view_classes);

        Admincalsses_check=(EditText)findViewById(R.id.Admincalsses_check);

        listview=(ListView)findViewById(R.id.listview);

        sql=new MyDataBase(this,"xxx",null,1);

        db=sql.getReadableDatabase();

    }

    public void admin_classes_check(View view){

        String classes=Admincalsses_check.getText().toString();

        String sql1="select * from userinfo_tb where classes = ? ";

        Cursor cursor=db.rawQuery(sql1,new String[]{ classes });

        if(cursor.getCount()>0){

            SimpleCursorAdapter userAdapter = new SimpleCursorAdapter(this, R.layout.classes_item,

                    cursor, new String[]{

                    "userid", "userpwd", "username", "subject", "classes", "department", "phone"

            }, new int[]{

                    R.id.Userid, R.id.Userpwd, R.id.Username, R.id.Usersubject,

                    R.id.Userclasses, R.id.Userdepartment, R.id.Userphone

            }, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

            listview.setAdapter(userAdapter);

        }else {

            Toast.makeText(Admin_view_classes.this,"该班级没有学生", Toast.LENGTH_SHORT).show();

        }

    }

}

5、创建数据库方法:这是创建SQLite内置数据库的方法。

public class MyDataBase extends SQLiteOpenHelper {

    private String CREATE_TABLE_USER ="create table userinfo_tb(_id integer primary key autoincrement,userid,userpwd,username,subject,classes,department,phone)";

    private String CREATE_TABLE_ADMIN ="create table admininfo_tb(adminid integer primary key autoincrement,adminpwd varchar(20))";

    private String CREATE_TABLE_SCORE ="create table userscore_tb(_id integer primary key autoincrement,userid,username,course,score)";

    public MyDataBase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {

        super(context, name, factory, version);

    }

    public void onCreate(SQLiteDatabase db) {

        db.execSQL(CREATE_TABLE_USER);

        db.execSQL(CREATE_TABLE_ADMIN);

        db.execSQL(CREATE_TABLE_SCORE);

    }

    public void onUpgrade(SQLiteDatabase db, int oldVersion,

                          int newVersion) {

        System.out.println("---------" + oldVersion + "------->" + newVersion);

    }

}

上链接:

下载链接