Android課程設計:學生信息管理


一.需求分析

隨着時代的進步,學生越來越多對於學生信息的管理也不斷的在增加,需要能夠一個能夠管理學生信息的程序。

總體能夠實現對學生基本信息包括:姓名、年齡、性別的記錄,並且能夠記錄學生的選課情況,成績,並且對成績進行修改記錄。

 

一.系統總體設計

 

 

 

 

 

 

 

 

 

技術說明

 

    UI設計:通過多種布局的嵌套及控件的使用來達成效果,通過TextView控件顯示文本信息,使用Button控件定義onClick屬性並在Activity中定義方法實現點擊,並且通過RadioButton在學生性別中判斷,使用了Edit Text編輯框在登陸界面中,顯示輸入框中信息。

 

Activity組件的應用主要通過使用IntentBundle類來進行跳轉,各個Activity界面之間的切換。

 

SQLite數據庫創建了SQLite數據庫,使用了onCreate()方法和onUpgrade()方法,並進行增刪改查操作。

 

File存儲使用了openFileInput()openFileOutput()方法來存取以及讀取設備上的數據,也采用了一些Shared Preferences類進行儲存。

 

ListView:使用了List View和自定義適配器,點擊ListView中的條目出現對話框進行修改,修改后立即通知適配器進行數據的重新加載

 

一.數據庫設計

 

字段名

字段類型

約束控制

說明

name

char

主鍵(primary key)

姓名

gender

char

Not null

性別

age

int

Not null

年齡

class

char

Not null

課程

grade

int

Not null

分數

 

 

 

二.系統總體實現

 

主要部分代碼

 

 

 

(一)布局文件部分代碼:主要展示幾個比較重要的界面

 

 

 

   1.總體文件布局

 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

 

    xmlns:tools="http://schemas.android.com/tools"

 

    android:layout_width="match_parent"

 

    android:layout_height="match_parent"

 

    android:paddingBottom="@dimen/activity_vertical_margin"

 

    android:paddingLeft="@dimen/activity_horizontal_margin"

 

    android:paddingRight="@dimen/activity_horizontal_margin"

 

    android:paddingTop="@dimen/activity_vertical_margin"

 

    tools:context=".MainActivity" >

 

 

 

    <LinearLayout

 

        android:layout_width="fill_parent"

 

        android:layout_height="fill_parent"

 

        android:gravity="center"

 

        android:orientation="vertical" >

 

 

 

        <TextView

 

            android:id="@+id/textView1"

 

            android:layout_width="wrap_content"

 

            android:layout_height="wrap_content"

 

            android:text="@string/main_welcome"

 

            android:textSize="20sp" />

 

 

 

        <Button

 

            android:id="@+id/btn_user_manager"

 

            android:layout_width="fill_parent"

 

            android:layout_height="50dp"

 

            android:layout_marginTop="23dp"

 

            android:background="@drawable/btn_selector"

 

            android:text="1.用戶管理" />

 

 

 

        <Button

 

            android:id="@+id/btn_stu_manager"

 

            android:layout_width="fill_parent"

 

            android:layout_height="50dp"

 

            android:layout_marginTop="23dp"

 

            android:background="@drawable/btn_selector"

 

            android:text="2.學生管理" />

 

 

 

        <Button

 

            android:id="@+id/btn_coure_manager"

 

            android:layout_width="fill_parent"

 

            android:layout_height="50dp"

 

            android:layout_marginTop="23dp"

 

            android:background="@drawable/btn_selector"

 

            android:text="3.課程管理" />

 

 

 

        <Button

 

            android:id="@+id/btn_score_manager"

 

            android:layout_width="fill_parent"

 

            android:layout_height="50dp"

 

            android:layout_marginTop="23dp"

 

            android:background="@drawable/btn_selector"

 

            android:text="4.成績管理" />

 

 

 

        <Button

 

            android:id="@+id/btn_exit"

 

            android:layout_width="fill_parent"

 

            android:layout_height="50dp"

 

            android:layout_marginTop="23dp"

 

            android:background="@drawable/btn_selector"

 

            android:text="5.退出" />

 

    </LinearLayout>

 

 

 

</RelativeLayout>

 

 

 

 

 

  1. 登錄界面

 

 

 

 

 

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 

    android:layout_width="fill_parent"

 

    android:layout_height="fill_parent"

 

    android:orientation="vertical" >

 

 

 

    <RelativeLayout

 

        android:layout_width="fill_parent"

 

        android:layout_height="50dip"

 

        android:orientation="vertical" >

 

 

 

        <TextView

 

            android:layout_width="wrap_content"

 

            android:layout_height="wrap_content"

 

            android:layout_centerInParent="true"

 

            android:text="用戶登錄"

 

            android:textColor="@color/black"

 

            android:textSize="23sp" />

 

    </RelativeLayout>

 

 

 

    <!-- 信息輸入框 -->

 

 

 

    <LinearLayout

 

        android:layout_width="fill_parent"

 

        android:layout_height="wrap_content"

 

        android:layout_marginLeft="10.0dip"

 

        android:layout_marginRight="10.0dip"

 

        android:layout_marginTop="20.0dip"

 

        android:orientation="vertical" >

 

 

 

        <LinearLayout

 

            android:layout_width="fill_parent"

 

            android:layout_height="50.0dip"

 

            android:gravity="center_vertical"

 

            android:orientation="horizontal" >

 

 

 

            <TextView

 

                android:layout_width="wrap_content"

 

                android:layout_height="50.0dip"

 

                android:gravity="center_vertical"

 

                android:text="用戶名:"

 

                android:textSize="20sp" />

 

 

 

            <EditText

 

                android:id="@+id/loginInputUserName"

 

                android:layout_width="fill_parent"

 

                android:layout_height="50.0dip"

 

                android:hint="請輸入用戶名" />

 

        </LinearLayout>

 

 

 

        <LinearLayout

 

            android:layout_width="fill_parent"

 

            android:layout_height="50.0dip"

 

            android:gravity="center_vertical"

 

            android:orientation="horizontal" >

 

 

 

            <TextView

 

                android:layout_width="wrap_content"

 

                android:layout_height="50.0dip"

 

                android:gravity="center_vertical"

 

                android:text="密    碼:"

 

                android:textSize="20sp" />

 

 

 

            <EditText

 

                android:id="@+id/loginInputPassword"

 

                android:layout_width="fill_parent"

 

                android:layout_height="50.0dip"

 

                android:hint="請輸入密碼" />

 

        </LinearLayout>

 

    </LinearLayout>

 

 

 

    <Button

 

        android:id="@+id/btn_login"

 

        android:layout_width="200dp"

 

        android:layout_height="wrap_content"

 

        android:layout_gravity="center"

 

        android:layout_marginTop="20dp"

 

        android:text="登錄" />

 

 

 

</LinearLayout>

 

 

 

 

 

  1. 展現學生信息界面

 

 

 

 

 

  <?xml version="1.0" encoding="utf-8"?>

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

 

    android:layout_width="fill_parent"

 

    android:layout_height="80dp"

 

    android:padding="8dp" >

 

 

 

    <LinearLayout

 

        android:id="@+id/linearLayout1"

 

        android:layout_width="fill_parent"

 

        android:layout_height="80dp"

 

        android:orientation="vertical" >

 

 

 

        <LinearLayout

 

            android:layout_width="wrap_content"

 

            android:layout_height="40dp" >

 

 

 

            <TextView

 

                android:layout_width="40dp"

 

                android:layout_height="40dp"

 

                android:text="姓名"

 

                android:textSize="20sp" />

 

 

 

            <View

 

                android:layout_width="wrap_content"

 

                android:layout_height="1dp"

 

                android:layout_weight="1" />

 

 

 

            <TextView

 

                android:layout_width="40dp"

 

                android:layout_height="40dp"

 

                android:text="性別"

 

                android:textSize="20sp" />

 

 

 

            <View

 

                android:layout_width="wrap_content"

 

                android:layout_height="1dp"

 

                android:layout_weight="1" />

 

 

 

            <TextView

 

                android:layout_width="40dp"

 

                android:layout_height="40dp"

 

                android:text="年齡"

 

                android:textSize="20sp" />

 

        </LinearLayout>

 

 

 

        <LinearLayout

 

            android:layout_width="fill_parent"

 

            android:layout_height="40dp" >

 

 

 

            <TextView

 

                android:id="@+id/tv_name"

 

                android:layout_width="wrap_content"

 

                android:layout_height="50dp"

 

                android:text=""

 

                android:textSize="20sp" />

 

 

 

            <View

 

                android:layout_width="wrap_content"

 

                android:layout_height="1dp"

 

                android:layout_weight="1" />

 

 

 

            <TextView

 

                android:id="@+id/tv_sex"

 

                android:layout_width="wrap_content"

 

                android:layout_height="50dp"

 

                android:text=""

 

                android:textSize="20sp" />

 

 

 

            <View

 

                android:layout_width="wrap_content"

 

                android:layout_height="1dp"

 

                android:layout_weight="1" />

 

 

 

            <TextView

 

                android:id="@+id/tv_age"

 

                android:layout_width="wrap_content"

 

                android:layout_height="40dp"

 

                android:text=""

 

                android:textSize="20sp" />

 

        </LinearLayout>

 

    </LinearLayout>

 

 

 

</RelativeLayout>

 

 

 

 

 

 

 

 

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 

    xmlns:tools="http://schemas.android.com/tools"

 

    android:layout_width="match_parent"

 

    android:layout_height="match_parent"

 

    android:orientation="vertical"

 

    android:padding="20dp" >

 

 

 

    <ListView

 

        android:id="@+id/course_student_manage"

 

        android:layout_width="match_parent"

 

        android:layout_height="match_parent" >

 

    </ListView>

 

</LinearLayout>

 

 

 

 

 

(二)Activity代碼(部分)

 

 

 

  1. MainActivity

 

 

 

package com.example.studentsytem;

 

 

 

import android.app.Activity;

 

import android.content.Intent;

 

import android.os.Bundle;

 

import android.view.View;

 

import android.view.View.OnClickListener;

 

import android.widget.Button;

 

 

 

 

 

import com.example.CourseManagerActivity;

 

import com.example.ScoreManagerActivity;

 

import com.example.StudentManagerActivity;

 

import com.example.UserManagerActivity;

 

import com.example.StudentDBHelper;

 

 

 

 

 

public class MainActivity extends Activity implements OnClickListener {

 

 

 

    private Button btn_user_manager;

 

    private Button btn_stu_manager;

 

    private Button btn_coure_manager;

 

    private Button btn_score_manager;

 

 

 

    @Override

 

    protected void onCreate(Bundle savedInstanceState) {

 

        super.onCreate(savedInstanceState);

 

        setContentView(R.layout.activity_main);

 

        btn_user_manager = (Button) this.findViewById(R.id.btn_user_manager);

 

        btn_stu_manager = (Button) this.findViewById(R.id.btn_stu_manager);

 

        btn_coure_manager = (Button) this.findViewById(R.id.btn_coure_manager);

 

        btn_score_manager = (Button) this.findViewById(R.id.btn_score_manager);

 

 

 

        btn_user_manager.setOnClickListener(this);

 

        btn_stu_manager.setOnClickListener(this);

 

        btn_coure_manager.setOnClickListener(this);

 

        btn_score_manager.setOnClickListener(this);

 

    }

 

 

 

    public void onClick(View v) {

 

        switch (v.getId()) {

 

            case R.id.btn_user_manager:

 

                Intent intent1 = new Intent(MainActivity.this, UserManagerActivity.class);

 

                startActivity(intent1);

 

                break;

 

            case R.id.btn_stu_manager:

 

                Intent intent2 = new Intent(MainActivity.this, StudentManagerActivity.class);

 

                startActivity(intent2);

 

                break;

 

            case R.id.btn_coure_manager:

 

                Intent intent3 = new Intent(MainActivity.this, CourseManagerActivity.class);

 

                startActivity(intent3);

 

                break;

 

            case R.id.btn_score_manager:

 

                Intent intent4 = new Intent(MainActivity.this, ScoreManagerActivity.class);

 

                startActivity(intent4);

 

                break;

 

            case R.id.btn_exit:

 

 

 

                break;

 

        }

 

    }

 

}

 

 

 

 

 

  1. StudentManagerActivity

 

package com.example.studentsytem;

 

 

 

import java.util.ArrayList;

 

import java.util.List;

 

 

 

import android.app.Activity;

 

import android.app.AlertDialog;

 

import android.content.Context;

 

import android.content.Intent;

 

import android.os.Bundle;

 

import android.view.LayoutInflater;

 

import android.view.View;

 

import android.view.View.OnClickListener;

 

import android.widget.Button;

 

import android.widget.EditText;

 

import android.widget.TextView;

 

import android.widget.Toast;

 

 

 

public class StudentManagerActivity extends Activity implements OnClickListener{

 

 

 

    private Button query_by_name;

 

    private Button query_all_student;

 

    private EditText et_query_by_name;

 

    private Button btn_query_by_name;

 

    private Button score_student;

 

 

 

    private List<Student> list;

 

 

 

    private TextView tv_name;

 

    private TextView tv_sex;

 

    private TextView tv_age;

 

 

 

    private View dialogView;

 

    private AlertDialog dialog;

 

 

 

    @Override

 

    protected void onCreate(Bundle savedInstanceState) {

 

        super.onCreate(savedInstanceState);

 

        setContentView(R.layout.student_manage);

 

 

 

        list = new ArrayList<Student>();

 

 

 

        query_by_name = (Button) this.findViewById(R.id.query_by_name);

 

        query_all_student = (Button) this.findViewById(R.id.query_all_student);

 

        score_student = (Button) this.findViewById(R.id.score_student);

 

 

 

        query_by_name.setOnClickListener(this);

 

        query_all_student.setOnClickListener(this);

 

        score_student.setOnClickListener(this);

 

    }

 

 

 

 

 

    public void onClick(View v) {

 

        switch (v.getId()) {

 

            case R.id.query_by_name:

 

                AlertDialog.Builder builder = new AlertDialog.Builder(this);

 

 

 

                //加載布局文件

 

                LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

 

                dialogView = inflater.inflate(R.layout.dialog_query_by_name,null);

 

 

 

                builder.setView(dialogView);

 

                builder.create();

 

                dialog = builder.show();

 

 

 

                et_query_by_name = (EditText) dialogView.findViewById(R.id.et_query_by_name);

 

                btn_query_by_name = (Button) dialogView.findViewById(R.id.btn_query_by_name);

 

 

 

                tv_name = (TextView) dialogView.findViewById(R.id.tv_name);

 

                tv_sex = (TextView) dialogView.findViewById(R.id.tv_sex);

 

                tv_age = (TextView) dialogView.findViewById(R.id.tv_age);

 

 

 

                //點擊按鈕的時候對學生信息進行查詢

 

                btn_query_by_name.setOnClickListener(new OnClickListener() {

 

 

 

                    public void onClick(View v) {

 

                        String name = et_query_by_name.getText().toString();

 

                        //查詢學生信息

 

                        queryStudentByName(name);

 

                    }

 

                });

 

                break;

 

            case R.id.query_all_student://查詢所有學生信息

 

                Intent intent = new Intent(StudentManagerActivity.this, QueryAllStudentActivity.class);

 

                startActivity(intent);

 

                finish();

 

                break;

 

 

 

            case R.id.score_student: //管理學生分數信息

 

                Intent intent2 = new Intent(StudentManagerActivity.this, ManageStudentScoreActivity.class);

 

                startActivity(intent2);

 

                finish();

 

                break;

 

        }

 

    }

 

 

 

 

 

    /**

 

     * 根據姓名查詢學生信息

 

     *

 

     *

 

     */

 

    protected void queryStudentByName(String name) {

 

        PersonFactory factory = new PersonFactory();

 

        TeacherInter teacherInter = (TeacherInter) factory.getPersonByClass("com.xuliugen.control.impl.TeacherImpl");

 

        list = teacherInter.queryStudentByName(name);

 

        if (list != null) {

 

            for (Student stu : list) {

 

                // 如果一下子賦值的話是不正確的

 

                tv_name.setText(stu.getName() + "");

 

                tv_sex.setText(stu.getSex() + "");

 

                tv_age.setText(stu.getAge() + "");

 

            }

 

        } else {

 

            // dialog.dismiss(); //這句話是消掉dialog之后彈出一個對話框

 

            Toast.makeText(StudentManagerActivity.this, "沒有找到你所需要的學生信息!",Toast.LENGTH_LONG).show();

 

        }

 

    }

 

}

 

 

 

3.StudentDBHelper

 

 

 

package com.example.studentsytem;

 

 

 

import android.content.Context;

 

import android.database.sqlite.SQLiteDatabase;

 

import android.database.sqlite.SQLiteDatabase.CursorFactory;

 

import android.database.sqlite.SQLiteOpenHelper;

 

import android.util.Log;

 

 

 

public class StudentDBHelper extends SQLiteOpenHelper {

 

    private static final String TAG = "StudentDBHelper";

 

    public static final String DB_NAME = "student_manager.db";

 

    public static final int VERSION = 1;    //構造方法

 

    public StudentDBHelper(Context context, String name, CursorFactory factory, int version)

 

    {

 

        super(context, name, factory, version);

 

    }

 

    public StudentDBHelper(Context context) {

 

        this(context, DB_NAME, null, VERSION);     }

 

 

 

    //創建數據庫

 

    @Override

 

    public void onCreate(SQLiteDatabase db) {

 

        Log.v(TAG, "onCreate");

 

        db.execSQL("create table "

 

                + TableContanst.STUDENT_TABLE                 + "(_id Integer primary key AUTOINCREMENT,"

 

                + "name char,age integer, sex char, likes char, phone_number char,train_date date, "

 

                + "modify_time DATETIME)");     }

 

    //更新數據庫

 

    @Override

 

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

 

        Log.v(TAG, "onUpgrade");

 

    }

 

}

 

 

 

 

 

4UserLoginActivity

 

 

 

package com.example.studentsytem;

 

 

 

import android.app.Activity;

 

import android.content.Intent;

 

import android.os.Bundle;

 

import android.view.View;

 

import android.view.View.OnClickListener;

 

import android.widget.Button;

 

import android.widget.EditText;

 

import android.widget.Toast;

 

 

 

public class UserLoginActivity extends Activity {

 

 

 

    private EditText loginInputUserName;

 

    private EditText loginInputPassword;

 

    private Button btn_login;

 

    private String username;

 

    private String password;

 

 

 

    @Override

 

    protected void onCreate(Bundle savedInstanceState) {

 

        super.onCreate(savedInstanceState);

 

        setContentView(R.layout.user_login);

 

        loginInputUserName = (EditText) this.findViewById(R.id.loginInputUserName);

 

        loginInputPassword = (EditText) this.findViewById(R.id.loginInputPassword);

 

        btn_login = (Button) this.findViewById(R.id.btn_login);

 

 

 

        btn_login.setOnClickListener(new OnClickListener() {

 

 

 

            public void onClick(View v) {

 

                //獲取值要在按鈕點擊的時候

 

                username = loginInputUserName.getText().toString();

 

                password = loginInputPassword.getText().toString();

 

                studentLogin(username, password);

 

            }

 

        });

 

    }

 

 

 

    /**

 

     * 用戶的登錄

 

     *

 

     */

 

    private void studentLogin(String username, String password) {

 

 

 

        PersonFactory personFactory = new PersonFactory();

 

        StudentInter studentInter = (StudentInter) personFactory.getPersonByClass("com.xuliugen.control.impl.StudentImpl");

 

        boolean flag = studentInter.login(username,password);

 

        if(flag){

 

            Toast.makeText(UserLoginActivity.this, "登錄成功!", Toast.LENGTH_LONG).show();

 

            Intent intent = new Intent(UserLoginActivity.this,UserManagerActivity.class);

 

            finish();

 

        }else{

 

            Toast.makeText(UserLoginActivity.this, "登錄失敗!", Toast.LENGTH_LONG).show();

 

            Intent intent = new Intent(UserLoginActivity.this,UserManagerActivity.class);

 

            finish();

 

        }

 

    }

 

 

 

}

五.程序功能測試及截圖

 

 

1)主界面

 

 

 

 

 

(2)注冊界面

 

 

 

 

(3)查找界面

 

 

 

 

(4)選課界面

 

 

 

(5)查詢信息界面

 

 

 

 

 

 

六.心得體會

 

這次課設使我對android項目的開發有了一個新的認識,知道了一個心得項目是什么樣的,完成一個項目真的很需要時間和精力。在制作的過程中總是會出現各種各樣的問題,在Activity的切換上遇到問題,以及在File存儲,listview出現了困難,通過上博客園、CSDN之類的學術網站去參考一些的解決辦法,總之還是要多學習,多練習,經常做才能更加的熟悉。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM