Android实现学生管理系统

本文实例为大家分享了Android实现学生管理系统的关键性代码,供大家参考,具体内容如下

局部效果图:

实现代码:

1、布局

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.itheima27.sutdentmanager"
  android:versionCode="1"
  android:versionName="1.0" > 

  <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

  <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
      android:name="com.itheima27.sutdentmanager.MainActivity"
      android:label="@string/app_name"
      android:theme="@android:style/Theme.NoTitleBar" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" /> 

        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
  </application> 

</manifest> 
<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>

2、关键代码:

package com.itheima27.sutdentmanager.entities; 

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 + "]";
  }
} 
package com.itheima27.sutdentmanager; 

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

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

import com.itheima27.sutdentmanager.entities.Student; 

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.graphics.Color;
import android.text.TextUtils;
import android.util.Xml;
import android.view.Menu;
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; 

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();
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助。

(0)

相关推荐

  • JavaEE在线人数管理系统

    这篇博客是filter.listener和servlet技术的相关总结,实现了简单的显示在线人数.在线人详细信息.管理员踢人功能 下面是详细代码 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http:

  • JavaWeb Session 会话管理实例详解

    Session会话简介 会话是指在一段时间内,用户使用同一个浏览器进程与Web应用之间的交互过程. 会话(Session)通常用来跟踪用户的状态,缓存用户在此浏览器进程中的信息. 当用户关闭浏览器,上一个Session也就无法再次获得了(Cookie的maxAge为-1的情况).再次打开新的浏览器,将开始一个新的会话. 类javax.servlet.http.HttpSession.每一个HttpSession代表用户的一个会话. 每一个Session的过期时间默认为30分钟. 当浏览器第一次访

  • 简单实现Android学生管理系统(附源码)

    本文实例讲述了Android实现学生管理系统,分享给大家供大家参考.具体如下: (1)管理系统实现的功能主要是:学生.教师的注册登录,和选课,以及修改学生的成绩等基本简单的功能,最主要的是实现一些Dialog的使用. 界面如下: (2)主要代码如下:(个人留作笔记,如需要完整代码,在最下边免费下载) 下边是一个适配器,适配器是为了一个listvie进行设置值,其中加载的是一个itemview,适配器中还是用了继承的方法,用于通知适配器进行更新. public class CourseAdapte

  • Java设计模块系列之书店管理系统单机版(二)

    Java-单机版的书店管理系统(练习设计模块和思想_系列 一 ): http://www.jb51.net/article/91004.htm 介绍 小提示:上面一点有一个目录,可以快速定位到自己需要看的类. 今天对前面的代码有了小小的修改,让代码更加完善了一点. 至于用户唯一标识码uuid,会在以后修改成程序内部生成的, 现在的uuid还是由用户自己设置. 今天对这个程序,添加了用户界面的表现层的一部分,增加了公共类 枚举, 下面贴出目前我写的这个程序的全部代码:我会逐渐的写完这个程序的,请大

  • java学生信息管理系统设计(2)

    本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <htm

  • java联系人管理系统简单设计

    本文实例为大家分享了java联系人管理系统毕业设计,供大家参考,具体内容如下 要求:  请使用XML保存数据,完成一个联系人管理系统.       用户必须经过认证登录后方可以使用系统.       注册.增加.删除.查看联系人功能.        分模块进行设计. 两层框架-用户交互层,Dao层.             其他支持层-数据封装层.             工具类-加密,工厂Bean. 开发步骤: 第一步:设计数据结构-XML. 第一步:设计数据结构-XML. 第三步:准备资源并

  • java学生信息管理系统设计

    本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <htm

  • java用户管理注册功能 含前后台代码

    本文实例为大家分享了java用户注册功能,供大家参考,具体内容如下 主页面: 浏览器显示: 代码实现: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>用户信息管理</title> </head> <body> 用户注册:<br

  • C语言职工管理系统设计

    本文实例为大家分享了C语言职工管理系统设计代码,供大家参考,具体内容如下 代码如下: #include<stdio.h> #include<stdlib.h> #include <string.h> struct Worker { int id;//工号 char name[16];//姓名 char sex[8];//性别 int age;//年龄 char edu_exp[32];//学历 int wage;//工资 char adress[32];//地址 cha

  • java实现学籍管理系统

    本教程为大家分享了学籍管理系统的具体java代码,供大家参考,具体内容如下 1.需求分析 1.1系统功能设计 (1)能够查询学生的基本信息,如:学号,姓名年龄,班级和性别 (2)能对表格中的学生信息实现增加,删除,查找,修改等功能 (3)能将数据保存到MySQL数据库中,记录下来 (4)能把数据通过mysql数据库进行数据更新 1.2系统模块设计 学籍管理系统包括增加信息模块,删除信息模块,修改信息模块,查询信息模块,更新数据模块.系统管理人员能够查询学生的学号,姓名,性别,年龄,所获奖项等信息

随机推荐