?先看效果圖:?
下載鏈接在底部
??
1.1 設(shè)計(jì)目的
學(xué)生信息的管理對(duì)于學(xué)校的管理者來說至關(guān)重要,學(xué)生信息是高等學(xué)校非常重要的一項(xiàng)數(shù)據(jù)資源,是一個(gè)教育單位不可缺少一部分。特別是近幾年來,國家政策的調(diào)整,我國高等院校大規(guī)模的擴(kuò)招,給高等院校的教學(xué)管理、學(xué)生管理、后勤管理等方面都帶來不少的沖擊。其包含的數(shù)據(jù)量大,涉及的人員面廣,而且需要及時(shí)更新,故較為復(fù)雜,難以單純地依靠人工管理,而且傳統(tǒng)的人工管理方式既不易于規(guī)范化,管理效率也不高,目前我國各類高等院校中還有相當(dāng)一部分學(xué)生信息管理還停留在紙介質(zhì)的基礎(chǔ)上,尤其是中、小學(xué)對(duì)學(xué)生信息的管理更是落后,這樣的管理機(jī)制已經(jīng)不能適應(yīng)時(shí)代發(fā)展的要求,其管理方法將浪費(fèi)許多人力和物力。作為移動(dòng)應(yīng)用的一部分,使用移動(dòng)應(yīng)用對(duì)學(xué)生檔案進(jìn)行管理,有著手工管理所無法比擬的優(yōu)點(diǎn),系統(tǒng)針對(duì)學(xué)校學(xué)生信息的特點(diǎn)以及管理中實(shí)際需要而設(shè)計(jì),能夠有效地實(shí)現(xiàn)學(xué)生信息管理的信息化,減輕管理人員的工作負(fù)擔(dān),高效率、規(guī)范化地管理大量的學(xué)生信息,并避免人為操作的錯(cuò)誤和不規(guī)范行為。作為移動(dòng)應(yīng)用的一部分,使用移動(dòng)終端APP對(duì)學(xué)校的各類信息進(jìn)行管理,具有手工管理無法比擬的優(yōu)點(diǎn)。例如:檢索迅速、查詢方便、效率高、可靠性好、存儲(chǔ)量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)校信息管理的效率,也是一個(gè)單位科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。
1.2 需求實(shí)現(xiàn)的功能
1.2.1 注冊(cè)功能
用戶依據(jù)自己的學(xué)號(hào)或者工號(hào)進(jìn)行用戶注冊(cè),持有賬號(hào)后方可進(jìn)行進(jìn)行登錄系統(tǒng),進(jìn)行用戶的一系列操作。
1.2.2 登錄功能
用戶經(jīng)過注冊(cè)后持有系統(tǒng)賬戶,選擇不同登錄模式,輸入正確的賬號(hào)和密碼即可登錄本系統(tǒng),進(jìn)入系統(tǒng)后,不同的登錄權(quán)限將會(huì)進(jìn)入不同系統(tǒng)主界面,進(jìn)行用戶的不同操作。
1.2.3 查看個(gè)人信息功能
用戶登錄系統(tǒng)后進(jìn)入主界面,點(diǎn)擊“查看個(gè)人信息”的圖片按鈕或文字,即可進(jìn)入個(gè)人信息界面,查看用戶的學(xué)號(hào)、姓名、專業(yè)、班級(jí)、院系、聯(lián)系手機(jī)號(hào)碼。
1.2.4修改個(gè)人信息功能
用戶登錄系統(tǒng)進(jìn)入主界面后,點(diǎn)擊“修改個(gè)人信息”的圖片按鈕或文字,即可進(jìn)入修改個(gè)人信息界面,可對(duì)用戶個(gè)人的姓名和聯(lián)系手機(jī)號(hào)碼進(jìn)行修改操作。輸入姓名和11位聯(lián)系手機(jī)號(hào),點(diǎn)擊“確定”按鈕,完成對(duì)個(gè)人信息的修改。
1.2.5 修改密碼功能
用不同的登錄權(quán)限進(jìn)入不同的系統(tǒng)主界面,用戶和管理員都可以進(jìn)行密碼的修改。進(jìn)入修改密碼功能,輸入兩次一致的新密碼,點(diǎn)擊“確定”按鈕,即可完成密碼的修改。
1.2.6 用戶查看成績功能
用戶在系統(tǒng)主界面選擇“查看成績”功能,進(jìn)入查看成績界面,輸入課程名,點(diǎn)擊“立即查詢”按鈕,界面顯示用戶的學(xué)號(hào)、姓名、課程名、成績。
1.2.7 添加學(xué)生信息功能
此功能為管理員為學(xué)生用戶添加賬號(hào),管理員進(jìn)入添加學(xué)生信息界面后,輸入學(xué)生的學(xué)號(hào)、初始密碼、姓名、專業(yè)、班級(jí)、院系、手機(jī)號(hào),點(diǎn)擊“添加”按鈕,即可添加學(xué)生用戶。
1.2.8 修改學(xué)生信息功能
管理員在修改學(xué)生信息界面下,可以對(duì)學(xué)生的姓名、密碼、專業(yè)、班級(jí)、院系、手機(jī)號(hào)進(jìn)行一一修改。
1.2.9 查詢學(xué)生信息功能
管理員實(shí)現(xiàn)對(duì)學(xué)生信息進(jìn)行按學(xué)號(hào)查詢,輸入學(xué)生學(xué)號(hào)后點(diǎn)擊“立即查詢”按鈕,即可查詢學(xué)生的學(xué)號(hào)、密碼、姓名、專業(yè)、班級(jí)、院系、手機(jī)號(hào)等詳細(xì)信息。
1.2.10 刪除學(xué)生信息功能
管理員對(duì)學(xué)生信息按照學(xué)號(hào)進(jìn)行刪除,輸入學(xué)生學(xué)號(hào)后點(diǎn)擊“刪除”按鈕,可實(shí)現(xiàn)對(duì)學(xué)生信息的刪除。
1.2.11 添加學(xué)生課程成績功能
此功能為管理員為學(xué)生添加課程成績,在此界面輸入學(xué)生學(xué)號(hào)、姓名、課程名、成績,即可添加學(xué)生課程成績。
1.2.12 修改學(xué)生課程成績功能
管理員對(duì)已錄入學(xué)生課程成績進(jìn)行修改,管理員輸入學(xué)生的學(xué)號(hào)、姓名、課程名、成績,點(diǎn)擊“修改”按鈕,即可實(shí)現(xiàn)修改成績。
1.2.13 查詢學(xué)生課程成績功能
管理員實(shí)現(xiàn)對(duì)學(xué)生課程成績進(jìn)行按學(xué)號(hào)查詢,輸入學(xué)生學(xué)號(hào)后點(diǎn)擊“立即查詢”按鈕,即可查詢學(xué)生的學(xué)號(hào)、姓名、課程名、成績。
1.2.14 刪除學(xué)生課程成績功能
管理員對(duì)學(xué)生課程成績按照學(xué)號(hào)進(jìn)行刪除,輸入學(xué)生學(xué)號(hào)后點(diǎn)擊“刪除”按鈕,可實(shí)現(xiàn)對(duì)學(xué)生課程成績的刪除。
1.2.15 查看班級(jí)學(xué)生信息功能
管理員可以按照所屬班級(jí)進(jìn)行學(xué)生信息的詳細(xì)查看,輸入班級(jí)名稱進(jìn)行檢索,即可查看該班級(jí)所有學(xué)生的詳細(xì)信息。
2.1 功能模塊劃分
學(xué)生信息管理APP功能描述:本APP分為學(xué)生端功能和管理員端功能,學(xué)生端功能分為學(xué)號(hào)注冊(cè)、學(xué)生登錄、查看個(gè)人信息、修改個(gè)人信息、修改密碼、查詢課程成績6個(gè)功能模塊;管理員端分為工號(hào)注冊(cè),管理員登錄、添加學(xué)生信息、修改學(xué)生信息、查詢學(xué)生信息、刪除學(xué)生信息、添加學(xué)生成績、修改學(xué)生成績、查詢學(xué)生成績、刪除學(xué)生成績、查看班級(jí)學(xué)生、修改密碼12個(gè)功能模塊。
功能模塊劃分圖如下:
1、注冊(cè)功能:這是用戶使用學(xué)號(hào)或工號(hào)進(jìn)行系統(tǒng)賬戶注冊(cè),采用輸入框獲取內(nèi)容方法和按鈕事件實(shí)現(xiàn)。
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 "賬號(hào)不能為空";
??????? }
??????? if (userpwd.length()<6||userpwd.length()>15){
??????????? return "密碼位數(shù)在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,"該賬號(hào)已被注冊(cè),注冊(cè)失敗",Toast.LENGTH_SHORT).show();
??????????? }
??????????? else{
???????????? ???db.execSQL("insert into userinfo_tb(userid,userpwd) values(?,?)",new String[]{userid,userpwd});
??????????????? Toast.makeText(User_register.this,"注冊(cè)成功",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、登錄功能:用戶登錄時(shí)調(diào)用。
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 "密碼位數(shù)在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,"用戶名或者密碼錯(cuò)誤",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、查看成績功能:這是學(xué)生用戶按課程名查看課程成績的方法。
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、查看班級(jí)學(xué)生信息功能:這是管理員用戶按班級(jí)名查看班級(jí)學(xué)生信息的方法。
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,"該班級(jí)沒有學(xué)生", Toast.LENGTH_SHORT).show();
??????? }
??? }
}
5、創(chuàng)建數(shù)據(jù)庫方法:這是創(chuàng)建SQLite內(nèi)置數(shù)據(jù)庫的方法。
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);
??? }
}
上鏈接:文章來源:http://www.zghlxwxcb.cn/news/detail-488840.html
下載鏈接文章來源地址http://www.zghlxwxcb.cn/news/detail-488840.html
到了這里,關(guān)于基于Android Studio的學(xué)生信息管理App的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!