当前位置: 代码迷 >> Android >> 容易的学生管理系统
  详细解决方案

容易的学生管理系统

热度:87   发布时间:2016-04-28 01:39:35.0
简单的学生管理系统

简单的学生管理系统

一,主要功能:

  1,添加学生信息;

  2,添加的学生信息显示在线型布局中;

  3,把学生信息保存在xml文件中;

  4,把保存在mxl中的学生信息取出来解析显示在界面;

二,主要知识点:

  1,layout_weight的使用;

  2,pull解析xml文件,xml序列化;

  3,保存数据到sd卡;

  4,动态添加控件刷新界面;

三,界面原型如下图:

四,代码展示:

  1,界面xml文件,activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@android:color/white"    android:orientation="vertical" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:layout_marginTop="5dip"        android:text="学生管理系统"        android:textColor="#99CCFF"        android:textSize="23sp" />    <RelativeLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginTop="5dip"        android:padding="5dip" >        <TextView            android:id="@+id/tv_name"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="15dip"            android:paddingRight="15dip"            android:text="姓名"            android:textSize="18sp" />        <TextView            android:id="@+id/tv_sex"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="5dip"            android:layout_toRightOf="@id/tv_name"            android:paddingLeft="15dip"            android:paddingRight="15dip"            android:text="性别"            android:textSize="18sp" />        <TextView            android:id="@+id/tv_age"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="5dip"            android:layout_toRightOf="@id/tv_sex"            android:paddingLeft="15dip"            android:paddingRight="15dip"            android:text="年龄"            android:textSize="18sp" />        <EditText            android:id="@+id/et_name"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignLeft="@id/tv_name"            android:layout_alignRight="@id/tv_name"            android:layout_below="@id/tv_name"            android:singleLine="true" />        <EditText            android:id="@+id/et_sex"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignLeft="@id/tv_sex"            android:layout_alignRight="@id/tv_sex"            android:layout_below="@id/tv_sex"            android:singleLine="true" />        <EditText            android:id="@+id/et_age"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignLeft="@id/tv_age"            android:layout_alignRight="@id/tv_age"            android:layout_below="@id/tv_age"            android:inputType="number"            android:singleLine="true" />        <Button            android:id="@+id/btn_add_student"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignBaseline="@id/et_age"            android:layout_toRightOf="@id/et_age"            android:text="添加学生"            android:textSize="20sp" />    </RelativeLayout>    <ScrollView        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_weight="1" >        <LinearLayout            android:id="@+id/ll_student_list"            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:layout_margin="1dip"            android:orientation="vertical"            android:padding="5dip" >        </LinearLayout>    </ScrollView>    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginTop="5dip"        android:orientation="horizontal" >        <Button            android:id="@+id/btn_save"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="保存数据"            android:textSize="20sp" />        <Button            android:id="@+id/btn_restore"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="恢复数据"            android:textSize="20sp" />    </LinearLayout></LinearLayout>
View Code

  2,定义实体类,Student.java

public class Student {    private String name;    private String sex;    private Integer age;    public Student(String name, String sex, Integer age) {        super();        this.name = name;        this.sex = sex;        this.age = age;    }    public Student() {        super();        // TODO Auto-generated constructor stub    }    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;    }    @Override    public String toString() {        return "Student [name=" + name + ", sex=" + sex + ", age=" + age + "]";    }}
View Code

  3,主界面activity,MainActivity.java

public class MainActivity extends Activity implements OnClickListener {    private EditText etName;    private EditText etSex;    private EditText etAge;    private LinearLayout llStudentList;    private List<Student> studentList;    private String filePath;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    private void init() {        etName = (EditText) findViewById(R.id.et_name);        etSex = (EditText) findViewById(R.id.et_sex);        etAge = (EditText) findViewById(R.id.et_age);                llStudentList = (LinearLayout) findViewById(R.id.ll_student_list);        findViewById(R.id.btn_save).setOnClickListener(this);        findViewById(R.id.btn_restore).setOnClickListener(this);        findViewById(R.id.btn_add_student).setOnClickListener(this);                studentList = new ArrayList<Student>();        filePath = Environment.getExternalStorageDirectory().getPath() + "/student.xml";    }    @Override    public void onClick(View v) {        switch (v.getId()) {        case R.id.btn_save:            if(studentList.size() > 0) {                if(saveStudent2Local()) {                    Toast.makeText(this, "保存成功", 0).show();                } else {                    Toast.makeText(this, "保存失败", 0).show();                }            } else {                Toast.makeText(this, "当前没有数据", 0).show();            }            break;        case R.id.btn_restore:            if(restoreStudentFromLocal()) {                Toast.makeText(this, "恢复成功", 0).show();            } else {                Toast.makeText(this, "恢复失败", 0).show();            }            break;        case R.id.btn_add_student:            addStudent();            break;        default:            break;        }    }        private boolean restoreStudentFromLocal() {        try {            XmlPullParser parser = Xml.newPullParser();            parser.setInput(new FileInputStream(filePath), "utf-8");                        int eventType = parser.getEventType();                        studentList.clear();                        Student student = null;            String nodeName = null;            while(eventType != XmlPullParser.END_DOCUMENT) {                nodeName = parser.getName();                switch (eventType) {                case XmlPullParser.START_TAG:                    if("student".equals(nodeName)) {                        student = new Student();                    } else if("name".equals(nodeName)) {                        student.setName(parser.nextText());                    } else if("sex".equals(nodeName)) {                        student.setSex(parser.nextText());                    } else if("age".equals(nodeName)) {                        student.setAge(Integer.valueOf(parser.nextText()));                    }                    break;                case XmlPullParser.END_TAG:                    if("student".equals(nodeName)) {                        studentList.add(student);                    }                    break;                default:                    break;                }                eventType = parser.next();            }            refreshStudentList();                        return true;        } catch (Exception e) {            e.printStackTrace();        }        return false;    }        private void refreshStudentList() {        llStudentList.removeAllViews();        TextView childView;        for (Student student : studentList) {            childView = new TextView(this);            childView.setTextSize(23);            childView.setTextColor(Color.BLACK);            childView.setText("  " + student.getName() + "  " + student.getSex() + "  " + student.getAge());            llStudentList.addView(childView);        }    }        private boolean saveStudent2Local() {        try {            XmlSerializer serializer = Xml.newSerializer();            serializer.setOutput(new FileOutputStream(filePath), "utf-8");                        serializer.startDocument("utf-8", true);            serializer.startTag(null, "infos");            for (Student stu : studentList) {                serializer.startTag(null, "student");                                serializer.startTag(null, "name");                serializer.text(stu.getName());                serializer.endTag(null, "name");                serializer.startTag(null, "sex");                serializer.text(stu.getSex());                serializer.endTag(null, "sex");                serializer.startTag(null, "age");                serializer.text(String.valueOf(stu.getAge()));                serializer.endTag(null, "age");                                serializer.endTag(null, "student");            }            serializer.endTag(null, "infos");            serializer.endDocument();            return true;        } catch (Exception e) {            e.printStackTrace();        }        return false;    }    private void addStudent() {        String name = etName.getText().toString();        String sex = etSex.getText().toString();        String age = etAge.getText().toString();                if(!TextUtils.isEmpty(name)                 && !TextUtils.isEmpty(sex)                 && !TextUtils.isEmpty(age)) {            studentList.add(new Student(name, sex, Integer.valueOf(age)));            TextView childView = new TextView(this);            childView.setTextSize(23);            childView.setTextColor(Color.BLACK);            childView.setText("  " + name + "  " + sex + "  " + age);            llStudentList.addView(childView);        } else {            Toast.makeText(this, "请正确输入", 0).show();        }    }}
View Code

 

通过以上步骤基本实现功能,不过还有需要完善的地方,比如年龄校验等

  

  相关解决方案