700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android实现学生信息管理系统之学生端功能实现

Android实现学生信息管理系统之学生端功能实现

时间:2021-05-01 01:06:15

相关推荐

Android实现学生信息管理系统之学生端功能实现

前言

数据库设计参考我的上一篇博客

Android实现学生信息管理系统之登录与数据库准备

代码我已经放到了github上,需要的可以下载

/SunnyBoy-WYH/AndroidDemo

考虑到大家可能github下载慢,我也在码云放了一份

/SunnyBoy-WYH/AndroidDemo

觉得还可以的可以Star一下…

效果图

依赖

大部分组件来自于Design库

在build.gradle 文件中添加这样的代码

dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:design:28.0.0'}

要想使用circleimageview–圆形imageview也就是我的头像,只需要在上面依赖中添加如下一句

implementation 'de.hdodenhof:circleimageview:2.1.0'

添加依赖之后记得Sync now 编译一下 以让它下载你的依赖。

侧滑菜单参考我之前的一篇博客

Android 界面美化之DrawerLayout(抽屉式布局)+菜单栏导航实现

XML布局代码

用于提交留言的布局 activity_submit_message.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="@mipmap/liuyan_new"tools:context=".student.submit_message"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:gravity="center"android:textSize="30dp"android:text="留言"/><EditText android:text=""android:layout_marginTop="50dp"android:id="@+id/et_message"android:lines="5"android:gravity="top"android:hint="请输入您的反馈意见(字数500以内)!"android:textSize="20sp"android:textColor="#000000"android:layout_width="fill_parent"android:layout_height="wrap_content"></EditText><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginTop="50dp"android:text="提交"android:background="@mipmap/color"android:id="@+id/button_submit"/></LinearLayout>

选课界面的布局文件 activity_choose_course.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".student.choose_course"android:background="@mipmap/choosecourse"android:orientation="vertical"><ListViewandroid:layout_width="match_parent"android:layout_height="650dp"android:layout_weight="9"android:id="@+id/listview_course"></ListView><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="horizontal"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="选择"android:id="@+id/choose"android:layout_marginLeft="120dp"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/back"android:text="返回"/></LinearLayout></LinearLayout>

java逻辑代码

学生端主界面 activity_student.java

package com.example.database_manage.student;import android.content.DialogInterface;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import .Uri;import android.os.Build;import android.os.Bundle;import android.provider.MediaStore;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.NavigationView;import android.support.v4.content.FileProvider;import android.support.v4.view.GravityCompat;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.ActionBar;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.MenuItem;import android.view.View;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;import com.mon_methon;import com.mon_toolbarColor;import com.example.database_manage.R;import com.example.monDatabase;import com.example.database_manage.database.image_store;import com.example.database_manage.start_load.load;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import de.hdodenhof.circleimageview.CircleImageView;public class activity_student extends AppCompatActivity {private SQLiteDatabase db;//切换用户弹出的对话框private AlertDialog.Builder builder;//Toolbar用于替代原有的actionBarprivate Toolbar toolbar ;//用于显示学生选课信息的listviewprivate ListView listView_mycourse;//侧滑private DrawerLayout drawerLayout;private NavigationView navigationView;//用于获取NavigationView的headlayout,方便监听子项private View headview;//headlayout中的textviewprivate TextView textView_welcome;//headlayout中circleimageprivate CircleImageView circleImageView;private Uri imageUri;private static final int TAKE_PHOTO =1;private image_store imageStore;private Intent intent_1;//悬浮按钮也就是加号,用于选课private FloatingActionButton floatingActionButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_student);initView();//获取登录信息,以锁定用户intent_1 = getIntent();final ActionBar actionBar = getSupportActionBar();if(actionBar!=null){actionBar.setDisplayHomeAsUpEnabled(true);//设置左箭头图片actionBar.setHomeAsUpIndicator(R.drawable.a);}//headlayout中的欢迎实现textView_welcome.setText(findNameById(intent_1.getStringExtra("student_id")));//菜单栏实现navigationView.setCheckedItem(R.id.nav_menu_myinfo);navigationView.setCheckedItem(R.id.nav_menu_changeacc);//设置标题栏与状态栏颜色保持一致new Common_toolbarColor().toolbarColorSet(activity_student.this);//头像初始化Bitmap bitmap_temp = imageStore.getBmp(db,intent_1.getStringExtra("student_id"));if(bitmap_temp!=null){circleImageView.setImageBitmap(bitmap_temp);}//NavigationView的菜单项监听器navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {switch (menuItem.getItemId()){case R.id.nav_menu_myinfo:Intent intent_about = new Intent(activity_student.this, about_me.class);intent_about.putExtra("student_id", intent_1.getStringExtra("student_id"));startActivity(intent_about);break;case R.id.nav_menu_changeacc:builder = new AlertDialog.Builder(activity_student.this);builder.setIcon(R.drawable.ic_launcher_background);// 设置Title的内容builder.setTitle("提示");// 设置Content来显示一个信息builder.setMessage("您确定要切换账号吗?");// 设置一个PositiveButtonbuilder.setPositiveButton("确定", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){startActivity(new Intent(activity_student.this, load.class));finish();}});// 设置一个NegativeButtonbuilder.setNegativeButton("取消", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){//取消就什么都不做}});// 显示出该对话框builder.show();break;//留言case R.id.nav_menu_liuyan:Intent intent_submit = new Intent(activity_student.this, submit_message.class);intent_submit.putExtra("student_id", intent_1.getStringExtra("student_id"));startActivity(intent_submit);break;//查看选课结果case R.id.nav_menu_look_hcourse://两表连接查询Cursor cursor = db.rawQuery("select * from student_course inner join course " +"on student_course.course_name =course.course_name " +"AND student_course.teacher_name = course.teacher_name " +"where student_id = ?", new String[]{intent_1.getStringExtra("student_id")});ArrayList<Map<String, String>> arrayList_1 = new ArrayList<Map<String, String>>();if (cursor.getCount() == 0) {Toast.makeText(activity_student.this, "您还没有选择任何课!", Toast.LENGTH_SHORT).show();} else {while (cursor.moveToNext()) {Map<String, String> map = new HashMap<String, String>();map.put("course_time", cursor.getString(cursor.getColumnIndex("course_time")));map.put("course_name", cursor.getString(cursor.getColumnIndex("course_name")));map.put("teacher_name", cursor.getString(cursor.getColumnIndex("teacher_name")));map.put("course_period", cursor.getString(cursor.getColumnIndex("course_period")));map.put("course_weight", cursor.getString(cursor.getColumnIndex("course_weight")));arrayList_1.add(map);}//设置适配器,并绑定布局文件SimpleAdapter simpleAdapter = new SimpleAdapter(activity_student.this, arrayList_1, R.layout.choose_result,new String[]{"course_name", "teacher_name", "course_time", "course_weight", "course_period"}, new int[]{R.id.result_course_name, R.id.result_teacher_name, R.id.result_time, R.id.result_weight, R.id.result_period});listView_mycourse.setAdapter(simpleAdapter);}break;default:break;}return true;}});//为listview设定监听器View.OnClickListener listener = new View.OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.floatingbutton_choose_course://再将从登陆界面接受的学生学号传给选择课程的活动Intent intent_2 = new Intent(activity_student.this, choose_course.class);intent_2.putExtra("student_id", intent_1.getStringExtra("student_id"));startActivity(intent_2);break;case R.id.circleimage:// 创建File对象,用于存储拍照后的图片File outputImage = new File(getExternalCacheDir(), "output_image.jpg");try {if (outputImage.exists()) {outputImage.delete();}outputImage.createNewFile();} catch (IOException e) {e.printStackTrace();}if (Build.VERSION.SDK_INT < 24) {imageUri = Uri.fromFile(outputImage);} else {imageUri = FileProvider.getUriForFile(activity_student.this, "com.example.database_manage.fileprovider", outputImage);}// 启动相机程序Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, TAKE_PHOTO);break;default:break;}}};floatingActionButton.setOnClickListener(listener);circleImageView.setOnClickListener(listener);}//点击头像拍照实现@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {switch (requestCode){case TAKE_PHOTO:if(resultCode ==RESULT_OK){try{//将拍摄的照片显示到头像中Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));circleImageView.setImageBitmap(bitmap);//更新本人资源表Bitmap bitmap1 = new Common_methon().compressBoundsBitmap(activity_student.this,imageUri,200,200);imageStore.update(bitmap1,db,intent_1.getStringExtra("student_id"));}catch (FileNotFoundException e){e.printStackTrace();}}break;default:break;}}private void initView() {//获取数据库对象db = new CommonDatabase().getSqliteObject(activity_student.this, "test_db");listView_mycourse = findViewById(R.id.listview_mycourse);toolbar =findViewById(R.id.toolbar_student);setSupportActionBar(toolbar);drawerLayout = findViewById(R.id.drawerlayout_student);navigationView = findViewById(R.id.navigation_view);headview = navigationView.inflateHeaderView(R.layout.headlayout);textView_welcome = headview.findViewById(R.id.welcome_textview);circleImageView = headview.findViewById(R.id.circleimage);floatingActionButton = findViewById(R.id.floatingbutton_choose_course);imageStore = new image_store();}//@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case android.R.id.home:drawerLayout.openDrawer(GravityCompat.START);break;default:break;}return true;}//根据用户的学号去查找姓名public String findNameById(String id){Cursor cursor = db.query("student",null,"id = ?",new String[]{id},null,null,null,null);//如果没查到if(cursor.getCount()==0){return "无法获取您的个人信息";}else{String str = "";while(cursor.moveToNext()){str = cursor.getString(cursor.getColumnIndex("name"));}return str+" 欢迎您!";}}}

我的信息界面 about_me.java

package com.example.database_manage.student;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import com.example.database_manage.R;import com.example.monDatabase;/*我的信息功能实现,主要根据登录时传过来的intent所携带的数据*/public class about_me extends AppCompatActivity {SQLiteDatabase db ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_about_me);//获取数据库对象db = new CommonDatabase().getSqliteObject(about_me.this,"test_db");//获取登录时传来的信息final Intent intent_about_me =getIntent();//绑定组件TextView t_about_id = findViewById(R.id.aboutme_id);TextView t_about_name = findViewById(R.id.aboutme_name);TextView t_about_phone = findViewById(R.id.aboutme_phone);TextView t_about_banji = findViewById(R.id.aboutme_banji);TextView t_about_sex = findViewById(R.id.aboutme_sex);TextView t_about_age = findViewById(R.id.aboutme_age);TextView t_about_college = findViewById(R.id.aboutme_college);Cursor cursor_about = db.query("student",null,"id = ?",new String[]{intent_about_me.getStringExtra("student_id")},null,null,null);while(cursor_about.moveToNext()){//将通过id查询到的学生信息显示到界面中t_about_id.setText(cursor_about.getString(cursor_about.getColumnIndex("id")));t_about_name.setText(cursor_about.getString(cursor_about.getColumnIndex("name")));t_about_banji.setText(cursor_about.getString(cursor_about.getColumnIndex("banji")));t_about_phone.setText(cursor_about.getString(cursor_about.getColumnIndex("phone")));t_about_sex.setText(cursor_about.getString(cursor_about.getColumnIndex("sex")));t_about_age.setText(cursor_about.getString(cursor_about.getColumnIndex("age")));t_about_college.setText(cursor_about.getString(cursor_about.getColumnIndex("college")));}Button button_back = findViewById(R.id.button_finish_about);Button button_jidian = findViewById(R.id.button_query_jidian);button_jidian.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//主要用于查询绩点Cursor cursor1 =db.rawQuery("select * from student_course inner join course " +"on student_course.course_name =course.course_name " +"AND student_course.teacher_name = course.teacher_name " +"where student_id = ?",new String[]{intent_about_me.getStringExtra("student_id")});//设定比对数组,根据河北大学绩点对照double[] duizhao = new double[105];double fenmu =0.0;double fenzi =0.0;double temp=0.8;for(int i=0;i<60;i++){duizhao[i]=0;}for(int j=60;j<66;j++){temp+=0.2;duizhao[j]=temp;}temp=2.0;for(int z=66;z<95;z++){temp+=0.1;duizhao[z]=temp;}for(int k=95;k<=100;k++){duizhao[k]=5.0;}while(cursor1.moveToNext()){if(cursor1.getString(cursor1.getColumnIndex("score"))!=null) {fenmu = fenmu + Double.parseDouble(cursor1.getString(cursor1.getColumnIndex("course_weight")));fenzi += duizhao[Integer.parseInt(cursor1.getString(cursor1.getColumnIndex("score")))] * Double.parseDouble(cursor1.getString(cursor1.getColumnIndex("course_weight")));}}if(fenmu<0.1){Toast.makeText(about_me.this,"您还没有选任何课或您的成绩老师还没有注入哦",Toast.LENGTH_LONG).show();}else{Toast.makeText(about_me.this,"您的绩点为:"+String.valueOf(fenzi/fenmu),Toast.LENGTH_LONG).show();}}});button_back.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});}}

配合listview的选课自定义Adapter courseAdapter.java

package com.example.database_manage.student;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import poundButton;import android.widget.TextView;import com.example.database_manage.R;import java.util.List;/*主要用于设定listview的适配器*/public class courseAdapter extends BaseAdapter {Context mContext;List<item> mList;ViewHolder mViewHolder;public courseAdapter(Context mContext, List<item> mList){this.mContext = mContext;this.mList = mList;}@Overridepublic int getCount(){return mList.size();}@Overridepublic Object getItem(int i){return mList.get(i);}@Overridepublic long getItemId(int i){return i;}@Overridepublic View getView(final int i, View view, ViewGroup viewGroup){final item it = mList.get(i);if(view == null){//用LayouInflater加载布局,传给布局对象view// 用view找到三个控件,存放在viewHolder中,再把viewHolder储存到View中// 完成了把控件展示在ListView的步骤view = LayoutInflater.from(mContext).inflate(R.layout.list_item_course, viewGroup, false);mViewHolder = new ViewHolder();mViewHolder.checkBox = (CheckBox)view.findViewById(R.id.checkbox_1);mViewHolder.course_name = (TextView)view.findViewById(R.id.t_course_name);mViewHolder.course_time = (TextView)view.findViewById(R.id.t_course_time);mViewHolder.course_period =(TextView) view.findViewById(R.id.t_course_period);mViewHolder.teacher_name = view.findViewById(R.id.t_teacher_name);mViewHolder.course_weight = view.findViewById(R.id.t_course_weight);view.setTag(mViewHolder);}else{mViewHolder = (ViewHolder) view.getTag();}mViewHolder.checkBox.setOnCheckedChangeListener (new CompoundButton.OnCheckedChangeListener(){@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b){it.setIscheck(b);}});mViewHolder.course_name.setText(it.getCourse_name());mViewHolder.course_time.setText(it.getCourse_time());mViewHolder.course_period.setText(it.getCourse_period());mViewHolder.teacher_name.setText(it.getTeacher_name());mViewHolder.checkBox.setChecked(it.getIscheck());mViewHolder.course_weight.setText(it.getCourse_weight());return view;}class ViewHolder{TextView course_name;TextView course_time;CheckBox checkBox;TextView course_period;TextView teacher_name;TextView course_weight;}}

配合自定义Adapter使用的子项类item, item.java

package com.example.database_manage.student;/*item主要设计选课时的选中状态以及信息*/public class item {String course_name;String course_time;String course_period;String course_weight;String teacher_name;Boolean ischeck;public item(String course_name, String course_time, String course_period,String teacher_name,String course_weight){this.course_name = course_name;this.course_time = course_time;this.course_period = course_period;this.teacher_name = teacher_name;this.course_weight = course_weight;this.ischeck = false;}public String getCourse_weight() {return course_weight;}public String getTeacher_name() {return teacher_name;}public void setTeacher_name(String teacher_name) {this.teacher_name = teacher_name;}public String getCourse_name() {return course_name;}public String getCourse_time() {return course_time;}public String getCourse_period() {return course_period;}public void setCourse_name(String course_name) {this.course_name = course_name;}public Boolean getIscheck() {return ischeck;}public void setIscheck(Boolean ischeck) {this.ischeck = ischeck;}}

提交留言用的界面 submit_message.java

package com.example.database_manage.student;import android.content.ContentValues;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.example.database_manage.R;import com.example.monDatabase;public class submit_message extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_submit_message);final EditText editText = findViewById(R.id.et_message);Button button_submit = findViewById(R.id.button_submit);button_submit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(editText.getText().toString().equals("")){Toast.makeText(submit_message.this,"留言不可以为空",Toast.LENGTH_SHORT).show();}else{ContentValues contentValues = new ContentValues();contentValues.put("student_id",getIntent().getStringExtra("student_id"));contentValues.put("message",editText.getText().toString());new CommonDatabase().getSqliteObject(submit_message.this,"test_db").insert("message",null,contentValues);Toast.makeText(submit_message.this,"留言成功!",Toast.LENGTH_SHORT).show();finish();}}});}}

学生端选课界面 choose_course.java

package com.example.database_manage.student;import android.content.ContentValues;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import android.widget.Toast;import com.example.database_manage.R;import com.example.monDatabase;import java.util.ArrayList;import java.util.List;public class choose_course extends AppCompatActivity {private SQLiteDatabase db;private List<item> arrayList;private courseAdapter c;private ListView listView_course;private Button button_back;private Button button_choose;private CommonDatabase commonDatabase;private Intent intent_3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_choose_course);/commonDatabase = new CommonDatabase();db =commonDatabase.getSqliteObject(choose_course.this,"test_db");/listView_course = findViewById(R.id.listview_course);button_back = findViewById(R.id.back);button_choose =findViewById(R.id.choose);intent_3 = getIntent();View.OnClickListener listener_choose =new View.OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.choose:String string_chongtu = "";for(int i=0;i<c.getCount();i++){//获取子项的对象item it = (item)c.getItem(i);//如果是被选中的状态if(it.ischeck==true){//去表中查一下是否已经存在Cursor cursor = db.query("student_course",null,"student_id =? AND course_name =? AND teacher_name = ?",new String[]{intent_3.getStringExtra("student_id"),it.getCourse_name(),it.getTeacher_name()},null,null,null);//如果不存在if(cursor.getCount()==0){ContentValues values1 = new ContentValues();values1.put("student_id",intent_3.getStringExtra("student_id"));values1.put("course_name",it.getCourse_name());values1.put("teacher_name",it.getTeacher_name());db.insert("student_course",null,values1);}//存在说明已经选过了else{string_chongtu+=it.getCourse_name();string_chongtu+="/";}}//如果没有冲突的if(string_chongtu.equals("")){Toast.makeText(choose_course.this,"选课成功!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(choose_course.this,string_chongtu+"重复选中,其他课程选课成功!",Toast.LENGTH_SHORT).show();}}break;case R.id.back:finish();break;}}};button_choose.setOnClickListener(listener_choose);button_back.setOnClickListener(listener_choose);//获取课程的全部信息Cursor cursor = db.query("course", null, null, null, null, null, null);arrayList= new ArrayList<item>();//对游标进行遍历while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("course_name"));String time = cursor.getString(cursor.getColumnIndex("course_time"));String period = cursor.getString(cursor.getColumnIndex("course_period"));String teacher = cursor.getString(cursor.getColumnIndex("teacher_name"));String weight = cursor.getString(cursor.getColumnIndex("course_weight"));item it = new item(name,time,period,teacher,weight);arrayList.add(it);}//实例化Adapterc = new courseAdapter(choose_course.this,arrayList);listView_course.setAdapter(c);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。