网站建设资讯

NEWS

网站建设资讯

Android版如何实现学生管理系统

这篇文章将为大家详细讲解有关Android版如何实现学生管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

海湖新ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

用户可以输入姓名、性别、年龄三个字段,通过点击添加学生按钮,将学生信息展示到开始为空的ScrollView控件中,ScrollView控件只能包裹一个控件,我这里包裹的是LinearLayout。点击保存数据按钮将数据通过XmlSerializer对象将数据保存到sd卡中,当点击恢复数据按钮时将sd卡文件中的数据读取出来回显到ScrollView中。

因为要读写文件,所以要在清单文件中添加两个权限:


首先,我们画出UI界面,具体代码和效果如下:



 

 

  

   

   
  

  

   

   
  

  

   

   
  

  

 

 
 

  

  

 

 

  

  
  

效果图:

Android版如何实现学生管理系统

之后我们要建立一个student的domain,就包括了三个字段,name、age、sex,为了方便观看,我也将Student代码也全部贴出来:

package cn.yzx.studentmanageros.domain;

public class Student {
 private String name;
 private String sex;
 private Integer age;

 public Student() {
  super();
  // TODO Auto-generated constructor stub
 }
 public Student(String name, String sex, Integer age) {
  super();
  this.name = name;
  this.sex = sex;
  this.age = age;
 }
 @Override
 public String toString() {
  return "Student [name=" + name + ", sex=" + sex + ", age=" + age + "]";
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }

}

之后,也是最主要的,activity的实现文件,我这里直接将代码贴出来,因为注释的很清楚:

package cn.yzx.studentmanageros;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.Format;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import android.util.Xml;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import cn.yzx.studentmanageros.domain.Student;


public class MainActivity extends Activity implements OnClickListener {

 private static final String TAG = "MainActivity";

 private EditText et_name;
 private EditText et_sex;
 private EditText et_age;
 private LinearLayout llStudentGroup; //学生列表控件
 private List studentList;

 private File cacheFile = new File(Environment.getExternalStorageDirectory(), "student.xml");

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  init();
 }

 private void init() {
  studentList = new ArrayList();

  et_name = (EditText) findViewById(R.id.et_name);
  et_sex = (EditText) findViewById(R.id.et_sex);
  et_age = (EditText) findViewById(R.id.et_age);

  llStudentGroup = (LinearLayout) findViewById(R.id.ll_student_group);

  findViewById(R.id.btn_add).setOnClickListener(this);
  findViewById(R.id.btn_save).setOnClickListener(this);
  findViewById(R.id.btn_restore).setOnClickListener(this);

 }

 @Override
 public void onClick(View v) {
  switch (v.getId()) {
  case R.id.btn_add: //添加学生
   //取出数据
   String name = et_name.getText().toString();
   String sex = et_sex.getText().toString();
   String age = et_age.getText().toString();

   //控制台打印数据
   Log.e(TAG, "name="+name+",sex="+sex+",age="+age);

   //判断是否有数据为空
   if(TextUtils.isEmpty(name) || TextUtils.isEmpty(sex) || TextUtils.isEmpty(age)){
    Toast.makeText(this, "请重新输入", 0).show();
    break;
   }

   //封装成Student实体
   Student student = new Student(name, sex, Integer.valueOf(age));

   //添加到学生列表中
   addToStudentList(student);

   break;

  case R.id.btn_save: //保存数据
   boolean isSuccess = saveStudentList();
   if(isSuccess){
    Toast.makeText(this, "保存成功", 0).show();
   }else {
    Toast.makeText(this, "保存失败", 0).show();
   }
   break;

  case R.id.btn_restore: //恢复数据
   // 恢复数据之前, 需要把集合中和LinearLayout中的数据全部清空
   studentList.clear();

   // 把线性布局中所有的控件全部移除
   llStudentGroup.removeAllViews();

   //从文件中读取数据
   List readStudentList = readStudentList();

   // 把取出回来的数据, 一条一条的添加到学生列表中
   for (Student stu : readStudentList) {
    addToStudentList(stu);
   }

   break;

  default:
   break;
  }
 }

 private List readStudentList() {
  List studentList = null;

  // 构建一个XmlPullParser解析器对象
  XmlPullParser parser = Xml.newPullParser();

  // 指定要解析的文件
  try {
   parser.setInput(new FileInputStream(cacheFile), "utf-8");

   // 开始解析: 获取EventType解析事件, 循环去判断事件
   int eventType = parser.getEventType();

   Student student = null;
   while(eventType!=XmlPullParser.END_DOCUMENT){
    // 当前的事件类型不等于结束的document, 继续循环
    String tagName = parser.getName();

    switch (eventType) {
    case XmlPullParser.START_TAG:
     if("students".equals(tagName)){//
      studentList = new ArrayList();
     }else if ("student".equals(tagName)) {//
      student = new Student();
     }else if ("name".equals(tagName)) {
      student.setName(parser.nextText());
     }else if ("sex".equals(tagName)) {
      student.setSex(parser.nextText());
     }else if("age".equals(tagName)){
      student.setAge(Integer.valueOf(parser.nextText()));
     }
     break;

    case XmlPullParser.END_TAG:
     if("student".equals(tagName)){
      studentList.add(student);
     }
     break;

    default:
     break;
    }
    eventType = parser.next(); // 取下一个事件类型
   }

   return studentList;
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }

 private boolean saveStudentList() {
  String path = cacheFile.getPath();
  Log.e(TAG, "保存文件的路径:"+path);

  //得到一个序列化对象
  XmlSerializer serializer = Xml.newSerializer();

  try {
   //指定输出流
   serializer.setOutput(new FileOutputStream(cacheFile), "utf-8");

   //写start_document
   serializer.startDocument("utf-8", true);

   // 写
   serializer.startTag(null, "students");

   for (Student student : studentList) {
    Log.e(TAG, student.toString());
    // 写
    serializer.startTag(null, "student");

     // 写
     serializer.startTag(null, "name");

     serializer.text(student.getName());

     // 写
     serializer.endTag(null, "name");

     // 写
     serializer.startTag(null, "sex");

     serializer.text(student.getSex()); 

     // 写
     serializer.endTag(null, "sex");

     // 写
     serializer.startTag(null, "age");

     serializer.text(String.valueOf(student.getAge())); 

     // 写
     serializer.endTag(null, "age");

    // 写
    serializer.endTag(null, "student");
   }

   // 写
   serializer.endTag(null, "students");

   //写end_document
   serializer.endDocument();


   return true;
  } catch(Exception e) {
   e.printStackTrace();
  }

  return false;
 }

 /**
  * 把给定的学生添加到学生列表中
  * @param student
  */
 private void addToStudentList(Student student) {
  // 把学生信息添加到集合中, 为了方便呆会去保存
  studentList.add(student);

  //创建一个TextView对象,并设置其内容
  TextView tv = new TextView(this);
  String text = "  "+student.getName()+" "+student.getSex()+"  "+student.getAge();
  tv.setText(text);
  tv.setTextSize(18);
  tv.setTextColor(Color.BLACK);

  // 把TextView添加到学生列表中
  llStudentGroup.addView(tv);
 }
}

关于“Android版如何实现学生管理系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


文章名称:Android版如何实现学生管理系统
标题链接:http://cdweb.net/article/jjpecj.html