【Android】_UI設計_學生註冊、選課(無資料庫)
阿新 • • 發佈:2018-12-04
學生管理系統
(一) 效果實現圖
目標:通過一個SQLite的資料庫的操作實現學生資訊的增刪改查
1)實現多個學生資訊的新增和顯示
2)用EditText實現姓名、年齡的輸入,並有輸入校驗(空校驗,數字校驗)
3)用AutoCompleteTextView的實現專業的輸入,並有提示功能。
4)通過CheckBox實現多門課程選擇
5)通過Radio實現性別
6)點選提交按鈕後,將輸入的資訊,用列表控制元件ListView顯示在另一個Activity。
- 學生資訊錄入
- 選課
(二) 專案結構圖
(三) 具體的編碼實現
(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;
}
}
- 佈局介面比較簡單,主函式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;
}
}
}
- 學生註冊介面,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;
}
}
- 顯示學生列表Other.xml:
other.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=