1. 程式人生 > >【Android】_UI設計_學生註冊、選課(無資料庫)

【Android】_UI設計_學生註冊、選課(無資料庫)

學生管理系統

(一) 效果實現圖

目標:通過一個SQLite的資料庫的操作實現學生資訊的增刪改查
1)實現多個學生資訊的新增和顯示
2)用EditText實現姓名、年齡的輸入,並有輸入校驗(空校驗,數字校驗)
3)用AutoCompleteTextView的實現專業的輸入,並有提示功能。
4)通過CheckBox實現多門課程選擇
5)通過Radio實現性別
6)點選提交按鈕後,將輸入的資訊,用列表控制元件ListView顯示在另一個Activity。

  • 學生資訊錄入
    在這裡插入圖片描述
  • 選課
    在這裡插入圖片描述

(二) 專案結構圖

在這裡插入圖片描述
在這裡插入圖片描述

(三) 具體的編碼實現

(1)註冊

  1. 自定義StuInfo.java
package com.example.cungu.myapplication3;

import java.io.Serializable;

public class StuInfo implements Serializable {
    private String name;
    private String major;

    public StuInfo(String n, String m)
{ name=n; major=m; } public String getMajor() { return major; } public String getName() { return name; } public void setMajor(String major) { this.major = major; } public void setName(String name) { this.name =
name; } }
  1. 佈局介面比較簡單,主函式activity_stu.xml:
    在這裡插入圖片描述

activity_stu.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/pinkback"
    android:gravity="center">
    <!-- 主介面 -->
    <Button
        android:id="@+id/button_1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:background="@drawable/shape_button"
        android:onClick="onClick"
        android:text="註冊"
        android:textColor="#ffffff"
        android:textSize="20dp" />

    <Button
        android:id="@+id/button_2"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/button_1"
        android:layout_marginTop="20dp"
        android:background="@drawable/shape_button"
        android:onClick="onClick"
        android:text="選課"
        android:textColor="#ffffff"
        android:textSize="20dp" />
</RelativeLayout>

stuActivity.java

package com.example.cungu.myapplication2;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class stuActivity extends AppCompatActivity implements View.OnClickListener{
    Button button_1;
    Button button_2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_stu);
        button_1 = (Button) findViewById(R.id.button_1);
        button_2 = (Button) findViewById(R.id.button_2);
        button_1.setOnClickListener(this);
        button_2.setOnClickListener(this);
    }
    @Override
    public void onClick(View view) {
        Intent intent = new Intent();
        switch (view.getId()) {
            case R.id.button_1:
                intent.setClass(this,stuRegistrationActivity.class);
                startActivity(intent);
                break;
            case R.id.button_2:
                intent.setClass(this,ChoseCouresActivity.class);
                startActivity(intent);
                break;
        }
    }
}
  1. 學生註冊介面,stu_registration.xml:
    在這裡插入圖片描述

stu_registration.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/pinkback"
    android:gravity="center"
    android:orientation="vertical">
    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="學生註冊"
        android:textSize="25dp"
        android:textColor="#f47983"/>
    <AutoCompleteTextView
        android:id="@+id/stu_name"
        android:layout_width="236dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:background="@drawable/shape"
        android:hint="name" />
    <RadioGroup
        android:id="@+id/rg_gender"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:layout_marginRight="70dp"
        android:layout_marginTop="2dp"
        android:orientation="horizontal"
        >
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text=""
            android:textColor="#ff9999"
            android:textSize="18sp"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text=""
            android:textColor="#ff9999"
            android:textSize="18sp"
            />
    </RadioGroup>
    <Spinner
        android:id="@+id/stu_major"
        android:layout_width="236dp"
        android:layout_height="40dp"
        android:layout_marginTop="5dp"
        android:layout_gravity="center"
        android:hint="major">
    </Spinner>
    <EditText
        android:id="@+id/stu_age"
        android:layout_width="236dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:background="@drawable/shape"
        android:hint="age"
        android:inputType="number" />
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:gravity="center">
        <Button
            android:id="@+id/button_add"
            android:layout_width="wrap_content"
            android:layout_height="37dp"
            android:background="@drawable/shape_button"
            android:text="新增資訊"
            android:textColor="#ffffff" />

        <Button
            android:id="@+id/button_send"
            android:layout_width="wrap_content"
            android:layout_height="37dp"
            android:layout_marginLeft="40dp"
            android:background="@drawable/shape_button"
            android:text="檢視資訊"
            android:textColor="#ffffff" />
    </TableRow>
</LinearLayout>

stuRegistrationActivity.java

package com.example.cungu.myapplication2;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.ArrayList;

public class stuRegistrationActivity extends AppCompatActivity implements View.OnClickListener{
    Button button_add;
    Button button_send;
    AutoCompleteTextView stu_name;
    RadioGroup rg_gender;
    Spinner stu_major;
    EditText stu_age;
    ArrayList<StuInfo> studentList=new ArrayList<StuInfo>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_stu_registration);
        button_add = (Button) findViewById(R.id.button_add);
        button_send = (Button) findViewById(R.id.button_send);
        stu_name  = (AutoCompleteTextView) findViewById(R.id.stu_name);
        stu_major = (Spinner) findViewById(R.id.stu_major);
        stu_age=(EditText) findViewById(R.id.stu_age);
        rg_gender=(RadioGroup)findViewById(R.id.rg_gender);
        button_add.setOnClickListener(this);
        button_send.setOnClickListener(this);

        //輸入時自動提示
        String[] name={"張三","李四","wang"};
        ArrayAdapter<String> arrayAdapter2=new ArrayAdapter(this,R.layout.au_textview,name);
        stu_name.setAdapter(arrayAdapter2);

        String[] arr={"物聯網工程","電腦科學","電信"};
        ArrayAdapter<String> arrayAdapter=new ArrayAdapter(this,R.layout.au_textview,arr);
        stu_major.setAdapter(arrayAdapter);
    }
    //正則表示式判斷是否為數字
    private  boolean isDigtal(String num){
        return num.matches("[0-9]{1,}");
    }
    @Override
    public void onClick(View view) {
        Intent intent = new Intent();
        switch (view.getId()) {
            case R.id.button_add:
                if(stu_name.length() == 0){
                    stu_name.setError("不能為空!");
                }

                if(stu_age.length()==0){
                    stu_age.setError("不能為空!");
                    //Toast.makeText(stuActivity.this,"輸入不能為空!",Toast.LENGTH_SHORT).show(); //彈出一個自動消失的提示框
                    //return;
                }else {
                    String name=stu_name.getText().toString() ;//
                    String sex=getCheckedRadioInfo(rg_gender);//返回性別
                    String major=stu_major.getSelectedItem().toString();
                    String age=stu_age.getText().toString();
                    if (!isDigtal(age.toString())){
                        stu_age.setError("只能為數字!");
                    }
                    StuInfo stu=new StuInfo(name,sex,major,age);//字串
                    studentList.add(stu);//studentList新增學生
                    if(stu!=null&&isDigtal(age.toString())){
                        Toast.makeText(this,"新增完成!",Toast.LENGTH_SHORT).show();
                        return;
                    }
                }
                break;
            case R.id.button_send:
                if(studentList.isEmpty()) return;
                intent.putExtra("students",studentList);//傳值
                intent.setClass(this, otherActivity.class);
                startActivity(intent);
                break;
        }
    }
    //獲得RadioGroup中返回的sex性別值(String型別)
    private String getCheckedRadioInfo(RadioGroup radioGroup) {
        String sex="";
        int num=radioGroup.getChildCount();
        for(int i=0;i<num;i++){
            RadioButton rd=(RadioButton)radioGroup.getChildAt(i);
            if(rd.isChecked()){
                sex=rd.getText().toString();
                break;
            }
        }
        return sex;
    }
}
  1. 顯示學生列表Other.xml:
    在這裡插入圖片描述

other.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=