目錄
學生信息存儲系統的設計與實現 1
一、摘要: 1
二、 需求分析 2
2.1可行性分析 2
2.1.1 2
2.1.2 2
2.2 需求分析 2
2.2.1 2
2.2.2 2
三、 總體設計 2
3.1系統功能結構圖 3
3.2UI設計圖 4
3.3數據庫存儲 5
3.3.1添加信息(學生信息和賬號密碼) 5
3.3.2刪除信息 6
3.3.3修改信息 6
四、 系統測試 7
4.1登錄注冊(可存儲賬號密碼) 7
4.2添加信息 8
4.3刪除信息 9
4.4修改信息 9
4.5查詢信息 11
五、 系統實現 11
5.1代碼 11
5.1.1類代碼 11
5.1.2布局代碼 11
5.1.3類說明 12
5.1.4關鍵代碼 17
六、 心得與體會 23
學生信息存儲系統的設計與實現
一、摘要:
隨着互聯網時代的迅速發展,人們的生活質量越來越高,工作越來越便利,生活方式和思想方式都發生了巨大的變化。
信息技術的飛速發展不僅為人類的生活提供了便利,也為我們的各種日常工作提供了更加快捷、有效的途徑。如今,教育成為國家的發展之根本,學校成為了我們生活中的第二個家,隨着人口的不斷增長和對國家對於教育事業的重視,學生數量與日俱增,使得對學生信息的管理越來越難,也正因為這樣,創建一個學生信息存儲系統成為了當代學校的必要部分,可以更有效的提高工作效率。本文介紹了一個基於Android自主研發的學生信息系統,該系統可在移動平台上使用,也就是我們的生活必需品——手機,因此更加便捷。
該系統可以存儲學生的信息,並對學生的信息進行增加、刪除、修改、查尋信息等管理操作,每個學生用戶都可以建立自己的賬號,非常的便捷、安全和穩定。
二、需求分析
2.1可行性分析
2.1.1技術可行性分析:合理的開發一個學生信息存儲系統,對學生信息進行合理的管理操作在技術上是可行的
2.1.2 經濟可行性分析:個人研究技術與開發Android平台是免費的,經濟可行
2.2 需求分析
2.2.1特性需求分析
1)容易操作,簡單便捷
2)功能俱全
3)軟件易維護
2.2.2功能需求分析
1)用戶可以對對信息進行增加、刪除、修改、查詢的功能
2)設立自己的賬號密碼
三、總體設計
3.1系統功能結構圖
1)用戶通過登錄自己的用戶名進入學生信息系統,沒有的話進去注冊頁面,注冊成功直接進入添加頁面。
2)學生用戶可以在添加頁面,添加自己的名字、性別、年齡、專業、大學和添加信息的時間。
3)添加成功后進去到菜單頁面,菜單頁面會顯示學生的信息,學生的信息可以隨時刪除,修改,當信息量多的時候,可以根據你輸入搜索框的關鍵字搜索到學生信息,並顯示條數
3.2UI設計圖
3.3數據庫存儲
3.3.1添加信息(學生信息和賬號密碼)
);
3.3.2刪除信息
刪除了一條信息
3.3.3修改信息
學校全部改成沈陽科技學院
四、系統測試
4.1登錄注冊(可存儲賬號密碼)
注冊了一個用戶名為 郭少鋒
密碼為123456的賬號
登錄用戶名密碼直接登陸成功,經過測試注冊成功
4.2添加信息
經過測試,可以添加信息
4.3刪除信息
4.4修改信息
經過測試,可以修改信息
4.5查詢信息
經測試可以查詢信息
五、系統實現
5.1代碼
5.1.1類代碼
5.1.2布局代碼
圖片在上述UI設計圖中
5.1.3類說明
1.第一個類是登錄類 定義兩個Button和兩個EditText,給Button按鈕設置監聽,利用swich case 實施對兩個Button的功能定義,並使用intent使得跳轉注冊頁面。
2.第二個類是注冊類,同上定義空間,使用if else進行功能定義,使用intent跳轉添加頁面。 DBop dBop = new DBop(); dBop.test(zhuce.this);
定義新對象調用text完成注冊並存儲。
3.這里用user類對用戶名和密碼進行定義和獲取,package com.example.tian;
//獲取用戶名和密碼
public class User {
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
private String userName;
private String passWord;
}
4.添加類,定義學生信息並定義數據庫以及對listview的使用,DBop dbop = new DBop();
List<student> studentlist = new ArrayList<student>();//ListView適配器 設置Adapter
SQLite mySQLite = new SQLite(tianjia.this, 1); //定義數據庫
並用swich case 定義功能並跳轉菜單
5.菜單類 swich case 定義查詢跳轉類 DBop dbOperate=new DBop();
6.查詢類 if else 定義功能跳轉返回菜單
7.SQLite類 public class SQLite extends SQLiteOpenHelper {
public SQLite(Context context,int version) {
super(context, "stu2.db", null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table students(\n"+
"id integer primary key autoincrement,\n"+
"name text,\n"+
"sex text,\n"+
"age integer,\n"+
"academy text,\n"+
"major text\n,"+
"date text\n"+
");");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//數據庫的創建 stu.db
//建表格式 students 名字 性別 年齡 大學 專業 日期
//數
8. student類同user一樣定義獲取學生信息
//獲取學生信息 編號 名字 專業 年齡 大學 日期
public int getId()
{return id;}
public void setId(int id)
{
this.id=id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getAge() {
return age;
}
public void setAge(String sex) {
this.age = sex;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAcademy() {
return academy;
}
public void setAcademy(String academy) {
this.academy = academy;
}
public void setDate(String date) {
this.date = date;
}
public String getDate() {
return date;
}
public student(String n, String s, String a, String aca,String m, String t) {
name = n;
major = m;
age = a;
sex = s;
academy = aca;
date = t;
}
public student(int i, String n, String s, String a, String aca,String m, String t) {
id=i;
name = n;
major = m;
age = a;
sex = s;
academy = aca;
date = t;
}
public student(String n, String s, String a) {
name = n;
sex = s;
age = a;
}
}
並對其他類的listview顯示提供
- DBop類
數據庫操作類,public void insert(student s){
int age=Integer.parseInt(s.getAge());
database.execSQL("insert into students values(?,?,?,?,?,?,?" +
")",new Object[] {null,s.getName(),s.getSex(),age,s.getAcademy(),s.getMajor(),s.getDate()});
System.out.println("插入數據成功");
}
public void insertUser(User user){
String stu_table="create table if not exists user(id integer primary key autoincrement,username text,password text)";
database.execSQL(stu_table);
database.execSQL("insert into user values(?,?,?" +
")",new Object[] {null,user.getUserName(),user.getPassWord()});
System.out.println("插入數據成功");
}//插入學生信息和用戶名密碼
public Boolean queryUser(User user){
String stu_table="create table if not exists user(id integer primary key autoincrement,username text,password text)";
database.execSQL(stu_table);
Cursor cursor=database.rawQuery("select * from user where username = ? and password= ?",new String[]{user.getUserName(),user.getPassWord()});
return cursor.getCount() > 0?true:false;
}
//判定格式對錯
public void update(student s){
Integer I=new Integer(s.getId());
ContentValues values = new ContentValues();
values.put("name",s.getName());
values.put("major",s.getMajor());
values.put("age",s.getAge());
values.put("sex",s.getSex());
values.put("academy", s.getAcademy());
values.put("date",s.getDate());
String whereClause = "id=?";
String[] whereArgs={String.valueOf(I)};
database.update("students",values,whereClause,whereArgs);
}
public void update(student s){
Integer I=new Integer(s.getId());
ContentValues values = new ContentValues();
values.put("name",s.getName());
values.put("major",s.getMajor());
values.put("age",s.getAge());
values.put("sex",s.getSex());
values.put("academy", s.getAcademy());
values.put("date",s.getDate());
String whereClause = "id=?";
String[] whereArgs={String.valueOf(I)};
database.update("students",values,whereClause,whereArgs);
}
//數據庫更新
等一系列操作判定
10.修改類 同添加類用swich case完成功能定義
if (altStu != null) {
altStu.setName(name);
altStu.setSex(sex);
altStu.setAge(age);
altStu.setMajor(major);
altStu.setDate(date);
altStu.setAcademy(aca);
dBop.update(altStu);
}
並進行數據更新
5.1.4關鍵代碼
跳轉:
Intent intent2 = new Intent(this,zhuce.class);
startActivity(intent2);
break;
//登錄界面點擊注冊按鈕實現到注冊頁面的轉換
Toast.makeText(zhuce.this,"注冊成功",Toast.LENGTH_SHORT).show();
Intent intent1 = new Intent(zhuce.this, tianjia.class);
startActivity(intent1);
//注冊成功跳轉添加學生信息頁面
intent.putExtra("students", (Serializable) studentlist);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(tianjia.this, caidan.class);
startActivity(intent);//跳轉到列表頁面
intent.setClass(this, chaxun.class);
intent.putExtra("searchKey", search);
startActivity(intent);//跳轉到查詢類
Intent intent=new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(this,caidan.class);
startActivity(intent);//查詢到的結果返回到菜單頁面
intent.setClass(this, caidan.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();//修改信息跳轉菜單
學生信息和用戶名賬號信息的的定義和獲取:
//獲取學生信息 編號 名字 專業 年齡 大學 日期
public int getId()
{return id;}
public void setId(int id)
{
this.id=id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getAge() {
return age;
}
public void setAge(String sex) {
this.age = sex;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAcademy() {
return academy;
}
public void setAcademy(String academy) {
this.academy = academy;
}
public void setDate(String date) {
this.date = date;
}
public String getDate() {
return date;
}
public class User {
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
SQLite數據庫:
public class SQLite extends SQLiteOpenHelper {
public SQLite(Context context,int version) {
super(context, "stu2.db", null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table students(\n"+
"id integer primary key autoincrement,\n"+
"name text,\n"+
"sex text,\n"+
"age integer,\n"+
"academy text,\n"+
"major text\n,"+
"date text\n"+
");");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//數據庫的創建 stu.db
//建表格式 students 名字 性別 年齡 大學 專業 日期
//數據庫更新
DBop dBop = new DBop();
dBop.test(denglu.this);
DBop dBop = new DBop();
dBop.test(zhuce.this);
SQLite mySQLite = new SQLite(tianjia.this, 1); //定義數據庫
private void test() {
SQLite mySQLiteAccess = new SQLite(this, 1);
mySQLiteAccess.getReadableDatabase();
}
DBop dbOperate=new DBop();
public class DBop {
private SQLite mySQLiteAccess;
private SQLiteDatabase database;
public void test(Context context){
mySQLiteAccess=new SQLite(context,3);
database=mySQLiteAccess.getReadableDatabase();
}
public void insert(student s){
int age=Integer.parseInt(s.getAge());
database.execSQL("insert into students values(?,?,?,?,?,?,?" +
")",new Object[] {null,s.getName(),s.getSex(),age,s.getAcademy(),s.getMajor(),s.getDate()});
System.out.println("插入數據成功");
}
public void insertUser(User user){
String stu_table="create table if not exists user(id integer primary key autoincrement,username text,password text)";
database.execSQL(stu_table);
database.execSQL("insert into user values(?,?,?" +
")",new Object[] {null,user.getUserName(),user.getPassWord()});
System.out.println("插入數據成功");
}
public Boolean queryUser(User user){
String stu_table="create table if not exists user(id integer primary key autoincrement,username text,password text)";
database.execSQL(stu_table);
Cursor cursor=database.rawQuery("select * from user where username = ? and password= ?",new String[]{user.getUserName(),user.getPassWord()});
return cursor.getCount() > 0?true:false;
}
//用戶名和密碼
public void update(student s){
Integer I=new Integer(s.getId());
ContentValues values = new ContentValues();
values.put("name",s.getName());
values.put("major",s.getMajor());
values.put("age",s.getAge());
values.put("sex",s.getSex());
values.put("academy", s.getAcademy());
values.put("date",s.getDate());
String whereClause = "id=?";
String[] whereArgs={String.valueOf(I)};
database.update("students",values,whereClause,whereArgs);
}
//建表,插入數據,更新數據庫
ListView的使用(適配器的使用):
ListView studentlist;
private List<student> list = new ArrayList<student>();
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListView list = (ListView) parent;
student s = (student) list.getItemAtPosition(position);
String info = (String) s.getName() + "\n\n" + s.getAcademy();
Toast.makeText(caidan.this, info, Toast.LENGTH_SHORT).show();
}
private void showList(List<student> stus) {
Adapter studentAdapter = new Adapter(this, stus);
studentlist.setAdapter(studentAdapter);
}
}
List<student> searchList= dbOperate.searchByAll(searchKey);
if (!searchList.isEmpty()){
Adapter myAdapter=new Adapter(this,searchList);
lv_searchlist.setAdapter(myAdapter);
}
else
{
Toast.makeText(this,"無結果",Toast.LENGTH_SHORT);
}
}略
六、心得與體會
在本次課程設計的完成中,讓我再次復習了一遍所學過的內容,也學會了很多課上忽略掉的一些知識和一些課上沒有學到過的。課程設計非常鍛煉一個學生的專業能力,可以培養我們的自我動手能力,不管是獨立思考能力還是自學能力,總能收獲許多。本次課設讓我熟悉了SQLite增刪改查的使用和ListView綁定適配器等很多知識,也大大提升了我對代碼進行改錯的能力,學會了有目的的去學習一些將要用到的東西,仔細地考慮工作流程的規律和步驟,充分利用手中的開發工具,利用其所具備的功能,盡量使自己的開發在代碼上實現少而精確、讓用戶能夠盡量簡單地進行操作,但也發現了一些自己的問題,例如查錯效率低等問題都是要在以后需要改進的。