安卓课程设计报告
**
安卓課程設計報告
**
目錄
一.應用需求分析… 3
1.1用例分析UML圖… 3
1.2用例說明… 4
二…應用系統設計… 5
2.1.應用核心模塊時序圖:… 5
2.2應用類圖… 6
2.3Android數據庫概述… 6
2.4數據庫表詳細設計… 7
2.4.1 用戶表… 7
2.4.2 筆記內容表… 7
2.4.3 收藏表… 8
三.應用測試… 8
3.1系統測試用例… 8
3.2應用系統測試結果… 10
(1)系統測試方法… 10
(2)用戶注冊登錄功能測試… 10
(3)用戶添加查看刪除筆記收藏功能測試… 10
(5)用戶名,密碼修改功能測試… 10
(6)閱讀本地書籍,瀏覽網絡教程功能測試… 10
(7)退出功能測試… 11
四.應用實現… 11
4.1界面布局… 11
4.2用戶注冊登錄功能… 12
4.3添加筆記,添加收藏,查看筆記,查看收藏,刪除筆記功能核心界面:… 14
4.4閱讀本地書籍功能核心界面:… 16
4.5瀏覽網絡教程核心界面:… 17
4.6 退出應用功能實現… 17
五 .總結… 18
附件1:… 18
課程設計題目:… 18
技術說明:… 19
UML類圖:… 20
代碼清單文件… 20
布局文件:… 22
JAVA類說明:… 26
一.應用需求分析
1.1用例分析UML圖
用例圖如圖所示
應用UML用例圖
1.2用例說明
應用啟動第一次進入歡迎頁面,點擊體驗進入總分為3個功能模塊的用例,閱讀本地書籍,包含3個功能,可添加筆記,添加收藏,返回主頁。網絡書城使用web view顯示網絡教程,我的模塊,包含用戶登錄,筆記,收藏,關于著作者,設置,退出應用。
二…應用系統設計
2.1.應用核心模塊時序圖:
核心模塊時序圖
2.2應用類圖
應用類圖
2.3Android數據庫概述
Android自帶了SQLite數據庫,是一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統來講,它的處理速度比他們都快。
關于Sqlite的數據類型,你會驚訝:Typelessness(無類型). 對! SQLite是無類型的. 這意味著你可以保存任何類型的數據到你所想要保存的任何表的任何列中, 無論這列聲明的數據類型是什么. 對于SQLite來說對字段不指定類型是完全有效的。
2.4數據庫表詳細設計
對應用所需功能需求分析通過了設計確定了系統數據庫中表的設計,該系統有三張表(用戶表,收藏表,筆記內容表),下面為表的詳細設計。
2.4.1 用戶表
Table [user_info]
Fields: 3[u_id]: VARCHAR(20)[u_name]: VARCHAR(20)[u_pwd]: VARCHAR(20)Indexes: 0Triggers: 0Table constraints:Primary Key:Fields:On Conflict:Foreign Keys: 0Unique constraints: 0Check constraints: 0Table [user_info] end
2.4.2 筆記內容表
筆記內容
Table [user_sc]
Fields: 2[u_time]: integer[u_bj_content]: VARCHAR(1000)Indexes: 0Triggers: 0Table constraints:Primary Key:Fields: [u_time]On Conflict:Foreign Keys: 0Unique constraints: 0Check constraints: 0Table [user_sc] end
2.4.3 收藏表
Table [u_sc]
Fields: 2[u_sc_id]: integer[u_sc]: VARCHAR(10)Indexes: 0Triggers: 0Table constraints:Primary Key:Fields: [u_sc_id]On Conflict:Foreign Keys: 0Unique constraints: 0Check constraints: 0Table [u_sc] end
三.應用測試
3.1系統測試用例
系統測試就是利用測試工具按照測試方案和流程對產品進行功能和性能測試,根據需要編寫不同的測試工具,設計和維護測試系統,對測試方案可能出現的問題進行分析。根據功能需求和性能需求制定以下測試用例,測試用例如表所示。
3.2應用系統測試結果
(1)系統測試方法
測試過程按4個步驟進行,即單元測試、集成測試、確認測試和系統測試及發版測試。
①單元測試:集中對用源代碼實現的每一個程序單元進行測試,檢查各個程序模塊是否正確地實現了規定的功能。
②集成測試:把已測試過的模塊組裝起來,主要對與設計相關的軟件體系結構的構造進行測試。
③確認測試:檢查已實現的軟件是否滿足了需求規格說明中確定了的各種需求,以及軟件配置是否完全正確。
④系統測試:把已經經過確認的軟件納入實際運行環境中,與其它系統成份組合在一起進行測試。
(2)用戶注冊登錄功能測試
在我的頁面下點擊用戶按鈕進入登錄界面,登錄界面左下角點擊進入注冊界面,輸入信息后點擊注冊toast顯示注冊成功,即可返回登錄頁面輸入用戶名密碼進行登錄,登錄后自動跳轉回主頁,進入我的頁面可見用戶+用戶名即登陸成功。如圖堆(1)
(3)用戶添加查看刪除筆記收藏功能測試
在閱讀書籍的頁面下點擊添加收藏按鈕Toast顯示添加成功,點擊頁面左下角添加筆記,自定義彈窗輸入筆記內容,點擊確定,即可添加成功返回我的頁面點擊筆記可查看筆記,點擊刪除筆記,彈窗內輸入筆記id,點擊刷新按鈕,可見指定筆記已經刪除,點擊收藏,可見已經添加收藏的書籍名稱。如圖堆(2)
(5)用戶名,密碼修改功能測試
在我的頁面下點擊設置按鈕進入設置界面,點擊修改用戶名,在彈窗內輸入舊用戶名,確定后在輸入新用戶名,即可修改成功 點擊修改密碼,在彈窗內輸入舊密碼,確定后在輸入新密碼,即可修改成功 。
(6)閱讀本地書籍,瀏覽網絡教程功能測試
點擊本地書籍,再點擊書籍封面,即可閱讀指定書籍PDF文件,點擊網絡教程,可瀏覽網絡教程。如圖堆(3)
(7)退出功能測試
在我的頁面下點擊退出應用按鈕,退出App。
四.應用實現
為了實現用戶信息,筆記,收藏在數據庫中的增加,刪除,查找等操作,使用操作數據庫的核心類android.database.sqlite.SQLiteDatabase。使用SQLiteOpenHelper的子類來完成創建、打開數據庫及各種對數據庫的操作。數據庫的類繼承函數,顯示了數據庫類的繼承關系。實現閱讀服務器端PDF文件書籍,采用導入Okhttp-3.2.0.jar包借用了github上的一個index.html文件
4.1界面布局
Android的資源文件保存在/res的子目錄中。其中/res/drawable/目錄中保存的是圖像文件,/res/values目錄中保存的是用來自定義字符串和顏色的文件,/res/xml目錄中保存的是XML格式的數據文件。所有在程序開發階段可以被調用的資源都保存在這些目錄中,在對界面進行繪制時要考慮到不同手機屏幕大小可能不一樣,應盡量兼容大多數手機屏幕尺寸,使之顯示無障礙。
4.1.1第一次進入,歡迎頁面
圖(a)
關鍵代碼:
//采用tablelayout+Fragment實現歡迎滑動頁面用SharedPreferences
進行判斷是否第一次進入應用
vp = findViewById(R.id.vp);
tableLayout = findViewById(R.id.tb);
4.2用戶注冊登錄功能
在“學跡app”主要的功能操作之一,
核心界面:
圖堆(1)
用戶注冊登錄關鍵代碼:
//用戶注冊代碼
db = mydb.getWritableDatabase();u_name=u_name_z.getText().toString();u_id=u_id_z.getText().toString();u_pwd=u_pwd_z.getText().toString();ContentValues values = new ContentValues();values.put("u_id", u_id);values.put("u_name", u_name);values.put("u_pwd", u_pwd);db.insert("user_info", null, values);//數據庫添加數據db.close();Toast.makeText(siginActivity.this, “注冊成功”, Toast.LENGTH_SHORT).show();
//用戶登錄關鍵代碼
SQLiteDatabase db=mydb.getReadableDatabase();String uname=u_name.getText().toString();String upwd=u_pwd.getText().toString();String sql="select * from user_info where u_name=? and u_pwd=?";Cursor cursor=db.rawQuery(sql, new String[]{uname,upwd});//數據庫查詢若在,就登錄成功if(cursor.moveToFirst()==true){cursor.close();Toast.makeText(loginActivity.this,"登錄成功",Toast.LENGTH_SHORT).show();Intent intent=new Intent(loginActivity.this, MainActivity.class);//跳轉回主頁面intent.putExtra("zdf",1);intent.putExtra("yhm",uname);startActivity(intent);finish();}else {Toast.makeText(loginActivity.this,"登錄失敗賬號or密碼錯誤",Toast.LENGTH_SHORT).show();}4.3添加筆記,添加收藏,查看筆記,查看收藏,刪除筆記功能核心界面:
圖堆(2)
//核心代碼:
//**此處數據添加使用數據庫添加不再重復贅述,重點貼出自定義彈窗實現輸入筆記代碼
AlertDialog dialog;
final EditText editText=new EditText(read_Activity.this);
AlertDialog.Builder builder=new AlertDialog.Builder(read_Activity.this)
.setTitle(“添加筆記”)
.setView(editText)
.setIcon(R.drawable.tx)
.setPositiveButton(“確定”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) { db = mydq.getWritableDatabase();
String u_bj=editText.getText().toString();
ContentValues values = new ContentValues();values.put(“u_bj_content”,u_bj);
db.insert(“user_sc”, null, values);
db.close();
dialog.dismiss();
Toast.makeText(read_Activity.this,“添加成功”,Toast.LENGTH_LONG).show();
}
}).setNegativeButton(“取消”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) { dialog.dismiss();}
});
builder.setCancelable(true);
dialog=builder.create();
dialog.setCanceledOnTouchOutside(true);
dialog.show();
//顯示采用listview顯示,以下是數據庫內容添加到listView內容部分代碼
listView=findViewById(R.id.bj_list);final ArrayList<String> list = new ArrayList();final my_db_helper mydb = new my_db_helper(this);SQLiteDatabase db=mydb.getReadableDatabase();Cursor cursor = db.query("user_sc", null, null, null, null, null, null);if (cursor!=null){while (cursor.moveToNext()) {int priceIndex = cursor.getColumnIndex("u_time");int numberIndex = cursor.getColumnIndex("u_bj_content");String time = cursor.getString(priceIndex);String u_context = cursor.getString(numberIndex);list.add("筆記編號"+time+":"+u_context);Toast.makeText(bijiActivity.this,"進入筆記"+u_context,Toast.LENGTH_SHORT).show();}cursor.close();db.close();4.4閱讀本地書籍功能核心界面:
圖堆(3)
關鍵代碼:
//此處使用Gridview+listview來實現本地書籍的顯示及監聽,適配器及具體代碼未貼出
gridView = (GridView) getActivity().findViewById(R.id.mc_list);mc_list();cridadapter= new Cridadapter(this.getContext(),list);gridView.setAdapter(cridadapter); } private void mc_list() {list=new ArrayList<p>();list.add(new p(" 白帽子講web安全",R.drawable.web_aq));list.add(new p("android總結",R.drawable.android_zj));list.add(new p("MySQL數據庫入門",R.drawable.mysql));list.add(new p("精通nginx",R.drawable.nginx));list.add(new p("Node.js代碼段",R.drawable.node_js));list.add(new p("Python 3.5從零開始學",R.drawable.pythoon));list.add(new p("Tomcat 應用開發",R.drawable.tomcat));list.add(new p("Android 模塊化項目實戰",R.drawable.android_xm)); }4.5瀏覽網絡教程核心界面:
圖(4)
//關鍵代碼:
//采用WebView加載網絡頁面來顯示
WebView webView=(WebView) getActivity().findViewById(R.id.web);
webView.loadUrl(“http://m.runoob.com”);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view,String url){
view.loadUrl(url);
return true;
}
});
4.6 退出應用功能實現:
關鍵代碼:
Button b_tc = (Button) getActivity().findViewById(R.id.tcyy);//出錯
b_tc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().finish();
五 .總結
這次課程設計花費了兩天不眠不休的去構思開發,對于安卓,由于平時對安卓開發這方面興趣濃厚,所以在學習的時候,帶著興趣去學習的。當然,對于android開發領域,在課堂以及自己學習過程中,比想象要困難的多。為了在短時間內投入到開發,完成項目,需要花大量的時間去學習,動手編程,掌握開發中的各種控件的使用,理解了Android各個組件的實現,內容,及生命周期,以及各個內的使用,接口的使用,Android studio來開發移動應用,Android開發框架,學習SQLite數據庫的使用。
在開發當中遇到了很多困難,仍然遇見了很多困難,有時候,也會因為個別問題卡殼了很久,遲遲沒能解決,到處在網上查找答案,或者向安卓移動開發群里面請求各位大佬的幫助。經過努力這些問題都一一解決了,當這些問題一一被我解決之后,那種自信感就更加上升。
這次課程設計是對自己的一個挑戰,在經過努力,遇到的問題最終一步步都解決了。完成課程設計。
附件1:
課程設計題目:”學跡”學習應用
技術說明:
序
號
分類
技術說明
具體使用位置
重點、難點
1
UI設計
登錄界面及主頁面
重點:UI設計
難點:多種布局的嵌套及控件的使用,至少4個界面
2
CridView+listView應用
本地書籍,網格實現,瀏覽
適配器使用以及響應監聽
3
Dialog的使用
使用自定義Dialog進行提示和輸入彈窗
Dialog進行輸入
4
SQLite數據庫
賬號,密碼,用戶名,收藏,筆記內容,使用sqlite數據庫存儲
重點: SQLite數據庫的應用
難點:數據庫的增刪改查操作
5
SharedPreferences存儲
判斷是否第一次
進入是否打開歡迎界面
無
6
WebView+html 應用
實現閱讀本地pdf文件
在線加載服務器端pdf文件較慢
7
Activity組件的應用
歡迎界面進入主頁面,點擊進入閱讀界面,以及各個交互界面
重點:多Activity的切換
難點:多Activity的切換
8
ViewPager +TabLayout+
Fragment實現左右滑動首次歡迎界面,以及主頁面
首次進入歡迎界面
主頁面
TabLayout啟動ViewPager
9
ListView的使用
本地書籍的顯示,筆記顯示,收藏的顯示
重點:LiseView的應用
難點:適配器的使用
10
WebView應用
顯示網絡教程
無
11
Fragment應用
主頁面內容
Fragment生命周期+以及Fragment內跳轉
UML類圖:
代碼清單文件
<?xml version="1.0" encoding="utf-8"?>
布局文件:
1:部分截圖
Main.xml代碼
<?xml version="1.0" encoding="utf-8"?> <androidx.viewpager.widget.ViewPagerandroid:id="@+id/view_pager"android:layout_width="match_parent"android:layout_height="0dip"android:layout_weight="1" /><Viewandroid:layout_width="match_parent"android:layout_height="0.5dip"android:background="#8a8a8a" /><com.google.android.material.tabs.TabLayoutandroid:id="@+id/tab_layout"android:layout_width="match_parent"android:layout_height="54dip"app:tabIndicatorHeight="0dip" />注冊界面.xml
<?xml version="1.0" encoding="utf-8"?> <ImageViewandroid:id="@+id/imageView"android:layout_width="80sp"android:layout_height="80sp"app:srcCompat="@drawable/tx"android:layout_centerHorizontal="true"android:layout_marginTop="100sp"/> <LinearLayoutandroid:id="@+id/sigin_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/imageView"android:layout_marginTop="50dp"android:background="@drawable/et_1"android:layout_marginLeft="20sp"android:layout_marginRight="20sp"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="15dp"android:textColor="#FFFFFF"android:text="用戶名:"android:textStyle="bold"android:textSize="20sp" /><EditTextandroid:id="@+id/et_u_name"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="10dp"></EditText> </LinearLayout> <LinearLayoutandroid:id="@+id/lzh"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/sigin_name"android:layout_marginTop="50dp"android:background="@drawable/et_1"android:layout_marginLeft="20sp"android:layout_marginRight="20sp"android:orientation="horizontal"><TextViewandroid:id="@+id/id"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="15dp"android:text="賬 號:"android:textColor="#FFFFFF"android:textStyle="bold"android:textSize="20sp" /><EditTextandroid:id="@+id/et_u_id"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="10dp"></EditText> </LinearLayout><LinearLayoutandroid:id="@+id/mm"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/lzh"android:layout_marginTop="50dp"android:background="@drawable/et_1"android:layout_marginLeft="20sp"android:layout_marginRight="20sp"android:orientation="horizontal"><TextViewandroid:id="@+id/pw"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="15dp"android:text="密 碼:"android:textColor="#FFFFFF"android:textStyle="bold"android:textSize="20sp" /><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:password="true"android:id="@+id/et_u_pwd"android:padding="10dp"></EditText> </LinearLayout><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/mm"android:layout_marginLeft="30dp"android:layout_marginTop="60dp"android:layout_marginRight="60dp"android:orientation="horizontal"><Buttonandroid:id="@+id/fh_dl"android:layout_width="wrap_content"android:layout_height="30sp"android:layout_marginLeft="5dp"android:background="@drawable/et_1"android:text="返回登錄"android:textColor="#03A9F4" /><Buttonandroid:id="@+id/qr_zc"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/mm"android:layout_marginLeft="30dp"android:background="@drawable/yuan_bt"android:text=" 確 認 注 冊 "android:textColor="#FFFFFF"android:textSize="25sp"android:textStyle="bold" /> </LinearLayout>JAVA類說明:
my_db_helper
數據庫類
bdFragment
本地書籍類
meFragment
我的
scFragment
網絡書城
bijiActivity
筆記查看操作
loginActivity
登錄
settingActivity
設置
shoucActivity
收藏
siginActivity
注冊
bj_list_adapter
筆記listview適配器
Cridadapter
本地書籍lisview適配器
FPagerAdapter
歡迎界面適配器
MFragmentAdapter
主頁適配器
p
封裝本地書籍信息實體類
read_Activity
閱讀類
MainActivity
主頁類
Wel
歡迎類
wel_bool
判斷是否第一次進入工具類
總結
- 上一篇: 多媒体技术是指运用计算机,多媒体技术的概
- 下一篇: mysql 初始化序列_GitHub -