題 目 OnlineStore 系 別 信息與控制工程系 專 業 計算機科學與技術 班 級 1701 學 號 173230110 姓 名 阮雲飛 指導教師 郭丹 目 錄 1. OnlineStore App的設計與實現 3 1.1系統需求分析 3 1.1.1系統結構圖: 3 1.1.2系統模塊分析 5 1.1.3數據庫分析 8 1.1.4系統實現 9 2.設計總結 17 2.1設計內容的復雜性 17 2.2設計體會與收獲 17 附件 18 1.布局及代碼 18 1.1登錄頁面 18 1.2注冊頁面 21 1.3首頁 23 1.4購物頁面 33 1.5資訊頁面 38 1.6 Listview_item頁面 42 2.JAVA源碼 43 2.1登錄頁面 43 2.2注冊頁面 44 2.3首頁-最新資訊 45 2.4首頁-最新商品 46 2.5購物 47 2.6資訊頁面 50 2.7 MyHelper 51 2.8 CartAdapter 52 2.9 CartBean 53 1.OnlineStore App的設計與實現 1.1系統需求分析 1.1.1系統結構圖: 1.1.2系統模塊分析 OnlineStoreApp的系統架構主要是有登錄,注冊,首頁,購物,資訊五大模塊, 1.登錄 登錄頁面主要由賬號,密碼,登錄按鈕,注冊按鈕組成。頁面包含App名稱的logo,可以顯示頭像,輸入的賬號,密碼。輸入賬號及密碼則可登錄 2.注冊 注冊頁面主要由賬號,密碼,注冊按鈕組成。頁面包含App名稱的logo,可以顯示頭像,輸入的賬號,密碼。輸入賬號及密碼則可登錄 3.首頁 首頁頁面主要由菜單,首頁按鈕,購物按鈕,資訊按鈕 最新資訊,最新商品,熱銷排行組成。頁面主要顯示商品的最新的資訊消息,能夠給用戶提供第一手的商品信息,一些最新商品的排行能夠及時的反映潮流方向供用戶選擇。 購物 購物頁面主要由菜單,首頁按鈕,購物按鈕,資訊按鈕組成。頁面主要實現商品的增加,刪除,修改,查找。手動輸入商品的品名,數量,價格就能實現以上功能,在一定程度上增加了用戶對於商品相關信息了解的便利性,該頁面與數據庫相連,實現了數據的實時存儲,一遍用戶的日后查詢。 5.資訊 資訊頁面主要由菜單,首頁按鈕,購物按鈕,資訊按鈕組成。頁面主要顯示商品的信息以及相關評論。 1.1.3數據庫分析 實現代碼: class MyHelper extends SQLiteOpenHelper { public MyHelper(Context context) { super(context, "shoppingcart.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE cart(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), price VARCHAR(20), number VARCHAR(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } 1.1.4系統實現 1.注冊 注冊成功后跳轉到登錄頁面,並在下部提示注冊成功,下步用賬號密碼登錄關鍵代碼: 按鈕方法: public void click(View view){ Intent intent = new Intent(ZhuceActivity.this, MainActivity.class); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); startActivity(intent); } 下部提示框: public void fanhui(View view){ Toast.makeText(ZhuceActivity.this,"注冊成功",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(); intent.setClass(ZhuceActivity.this, MainActivity.class); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } 2.登錄 在登錄頁面登錄成功后即可進入首頁 關鍵代碼: public void click(View view){ Toast.makeText(MainActivity.this,"登陸成功",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this, ShouOneActivity.class); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); startActivity(intent); } public void zc(View view){ Intent intent = new Intent(); intent.setClass(MainActivity.this, ZhuceActivity.class); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } 3.首頁: 點擊最新商品即可跳轉到目的頁面 關鍵代碼: public void onClick(View v) { switch (v.getId()) { case R.id.btn1: Intent intent = new Intent(ShouOneActivity.this, ShouTwoActivity.class); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; } } 4.購物: 添加: 輸入品名,價格,數量添加商品信息。 關鍵代碼: switch (v.getId()){ case R.id.add: db = myHelper.getWritableDatabase(); name = et_name.getText().toString(); price = et_price.getText().toString(); number = et_number.getText().toString(); ContentValues values = new ContentValues(); //創建ContentValues對象 values.put("name", name); //將數據添加到ContentValues對象 values.put("price", price); values.put("number", number); db.insert("cart", null, values); db.close(); Toast.makeText(this, "信息已添加", Toast.LENGTH_SHORT).show(); break; 查詢: 在輸入相應信息后點擊查詢,下部listview中顯示相關信息。 關鍵代碼: case R.id.query: Log.e("yanwenhua","123"); List<CartBean> list = new ArrayList(); db = myHelper.getWritableDatabase(); Cursor cursor = db.query("cart", null, null, null, null, null, null); if (cursor.getCount() == 0) { Toast.makeText(this, "沒有數據", Toast.LENGTH_SHORT).show(); } else { while (cursor.moveToNext()) { CartBean cartBean = new CartBean(); int nameIndex = cursor.getColumnIndex("name"); int priceIndex = cursor.getColumnIndex("price"); int numberIndex = cursor.getColumnIndex("number"); String name = cursor.getString(nameIndex); String price = cursor.getString(priceIndex); String number = cursor.getString(numberIndex); Log.e("yanwenhua","cursor.getCount();--"+cursor.getCount()+"name-"+name+" "+price+" "+number); cartBean.setName(name); cartBean.setPrice(price); cartBean.setNumber(number); list.add(cartBean); } CartAdapter adapter = new CartAdapter(ShoppingActivity.this,list); listView.setAdapter(adapter); adapter.notifyDataSetChanged(); } cursor.close(); db.close(); break; 修改: 在上部信息中修改后,點擊修改按鈕修改,修改后,點擊查詢查詢修改后的商品信息。 關鍵代碼: case R.id.update: name = et_name.getText().toString(); price = et_price.getText().toString(); number = et_number.getText().toString(); db = myHelper.getWritableDatabase(); values = new ContentValues(); // 要修改的數據 values.put("number",number); values.put("price",price); db.update("cart", values, "name=?", new String[]{name}); // 更新並得到行數 db.close(); Toast.makeText(this, "信息已修改", Toast.LENGTH_SHORT).show(); break; 刪除: 點擊刪除就可以刪除商品信息。 關鍵代碼: case R.id.delete: db = myHelper.getWritableDatabase(); db.delete("cart", null, null); List<CartBean> list2 = new ArrayList(); CartAdapter adapter = new CartAdapter(ShoppingActivity.this,list2); listView.setAdapter(adapter); adapter.notifyDataSetChanged(); db.close(); Toast.makeText(this, "信息已刪除", Toast.LENGTH_SHORT).show(); break; 2設計總結 2.1設計內容的復雜性 該應用設計復雜性主要是實現商品信息的增加,查詢,修改,刪除,並且要同時實現listview與數據庫的連接,針對這一問題,我們的解決方案是設置適配器通過實體類的構造方法取出數據庫里的數據,在通過適配器把實體類對象中的各個變量傳入到textview,進而實現listview顯示數據庫中的數據,進而實現增加,查詢,修改,刪除功能的實現。 2.2設計體會,收獲 本學期Android課程設計在不知不覺中結束了,雖說這次課程設計時長不是很長,但是感覺自我收獲頗豐,不僅僅學習到了一些新知識, 回顧了以前一些快要遺忘的知識點,而且使自我的學習目標更加明確,學習方法更加完善,也體會到Android開發的趣味, 更加清楚地認識到了自我在軟件開發及學習上的一些不足之處。下方就來詳細寫一下我關於此次課程設計的心得體會: 讓我們感覺到了Android的趣味性,Android的實用性。雖說一些技術我們在課堂上也曾學習過,但是大多停留在理論學習上,實際開發很少,而這次課程設計給了我一個很好的邊學習邊實踐的機會 對我深入學習這些技術有很大幫忙,深刻體會到了這些技術的實用性。每當自我成功調試一段代碼或者透過自我的努力克服一個技術困難,都頗有收獲感。 這次實訓讓我體驗了軟件開發的過程, 發現自我的不足,了解了Android技術的軟件開發,增加了必須的項目開發經驗, 增強了必須的就業競爭力。 此次實訓最大的收獲不是我學習到了多少知識而是這幾天實訓給我的感悟:首 先是心態。必須要有一個用心的心態,獨立解決問題的意識,培養扎實基礎的認識。不要什么東西都感覺跟簡單 ( 很多東西可能是看似簡單 ) 就不去做了或者不屑做,以至於性網上搜搜就能夠了,這樣很不好。有自我的東西有自我的付出才會有程序運行成功時的喜悅和小自豪,這樣也有助於培養自我的興趣。 要時刻牢 記態度決定一切。 其次是興趣, 感覺學習工作中興趣很關鍵, 只是一個引發人用 心性的問題,有了興趣就自覺了,效率自然就高了。再次要敢於嘗試和挑戰。不要安於現成的程序, 而且不要害怕失敗, 在程序調試的過程中這點尤為重要,發現出問題然后解決問題是一個積累經驗的過程,而且很高效。最后要不懈追求。 對於源代碼進行不斷的完善, 要盡可能的實現課題所要求的功能。 對於初學者或 者開發較少的人來說,多寫程序還是有必要的, 但同時要注意思考, 理解其實現的內在好處。 還能夠自我添加一些有好處的功能來實現。當看到自我編寫的 程序正常運行時,興趣也會隨之而來,樂此不疲,構成一個良性循環。 短短的課程設計很快結束了, 我發現我對Android有了新的認識。 透過這次的實訓,我了解到, 要真真正正的掌握Android還不是一件簡單容易的事兒, 但真正掌握后,讓我的思想、技能又上了一個台階 ! 附件 1.布局及代碼 1.1登錄頁面 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:layout_editor_absoluteX="60dp" tools:layout_editor_absoluteY="-53dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="138dp" android:orientation="horizontal"> <TextView android:id="@+id/textView4" android:layout_width="197dp" android:layout_height="wrap_content" android:layout_marginLeft="110dp" android:layout_marginTop="90dp" android:text="OnlineStore" android:textColor="#2C2C2C" android:textSize="36sp" android:textStyle="bold|italic" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="115dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="90dp" android:layout_marginTop="10dp" android:layout_weight="1" app:srcCompat="@drawable/enterone" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="69dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView3" android:layout_width="38dp" android:layout_height="34dp" android:layout_marginLeft="90dp" android:layout_marginTop="10dp" app:srcCompat="@drawable/enterthree" /> <EditText android:id="@+id/editText" android:layout_width="207dp" android:layout_height="50dp" android:layout_marginTop="2dp" android:ems="10" android:inputType="phone" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="69dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView4" android:layout_width="35dp" android:layout_height="35dp" android:layout_marginLeft="90dp" android:layout_marginTop="20dp" app:srcCompat="@drawable/enterotwo" /> <EditText android:id="@+id/editText" android:layout_width="210dp" android:layout_height="50dp" android:layout_marginTop="10dp" android:ems="10" android:inputType="phone" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="96dp" android:orientation="horizontal"> <Button android:id="@+id/button" android:layout_width="208dp" android:layout_height="wrap_content" android:layout_marginLeft="110dp" android:layout_marginTop="20dp" android:onClick="click" android:text="LOGIN" android:textSize="18sp" android:textStyle="bold|italic" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="96dp" android:orientation="horizontal"> <Button android:id="@+id/button1" android:layout_width="208dp" android:layout_height="wrap_content" android:layout_marginLeft="110dp" android:onClick="zc" android:text="LOG0N" android:textSize="18sp" android:textStyle="bold|italic" /> </LinearLayout> </LinearLayout> </android.support.constraint.ConstraintLayout> 1.2注冊頁面 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ZhuceActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:layout_editor_absoluteX="60dp" tools:layout_editor_absoluteY="-53dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="138dp" android:orientation="horizontal"> <TextView android:id="@+id/textView4" android:layout_width="197dp" android:layout_height="wrap_content" android:layout_marginLeft="110dp" android:layout_marginTop="90dp" android:text="OnlineStore" android:textColor="#2C2C2C" android:textSize="36sp" android:onClick="fanhui" android:textStyle="bold|italic" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="115dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="90dp" android:layout_marginTop="10dp" android:layout_weight="1" app:srcCompat="@drawable/enterone" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="69dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView3" android:layout_width="38dp" android:layout_height="34dp" android:layout_marginLeft="90dp" android:layout_marginTop="10dp" app:srcCompat="@drawable/enterthree" /> <EditText android:id="@+id/editText" android:layout_width="207dp" android:layout_height="50dp" android:layout_marginTop="2dp" android:ems="10" android:inputType="phone" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="69dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView4" android:layout_width="35dp" android:layout_height="35dp" android:layout_marginLeft="90dp" android:layout_marginTop="20dp" app:srcCompat="@drawable/enterotwo" /> <EditText android:id="@+id/editText" android:layout_width="210dp" android:layout_height="50dp" android:layout_marginTop="10dp" android:ems="10" android:inputType="phone" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="96dp" android:orientation="horizontal"> <Button android:id="@+id/button2" android:layout_width="208dp" android:layout_height="wrap_content" android:layout_marginLeft="110dp" android:layout_marginTop="10dp" android:onClick="fanhui" android:text="LOG0N" android:textSize="18sp" android:textStyle="bold|italic" /> </LinearLayout> </LinearLayout> </android.support.constraint.ConstraintLayout> 1.3首頁 1.3.1首頁-最新資訊 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ShouOneActivity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0"> <LinearLayout android:layout_width="match_parent" android:layout_height="49dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView6" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="15dp" android:layout_marginTop="12dp" app:srcCompat="@drawable/caidan" /> <TextView android:id="@+id/textView" android:layout_width="174dp" android:layout_height="47dp" android:layout_marginLeft="79dp" android:layout_marginTop="5dp" android:text="OnlineStore" android:textColor="#010102" android:textSize="30sp" android:textStyle="bold|italic" /> <ImageView android:id="@+id/imageView7" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="70dp" android:layout_marginTop="11dp" app:srcCompat="@drawable/sousuo" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView14" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" app:srcCompat="@drawable/shouyesix" /> </LinearLayout> <LinearLayout android:layout_width="403dp" android:layout_height="35dp" android:layout_marginLeft="10dp" android:orientation="horizontal"> <Button android:id="@+id/btn3" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:text="最新資訊" android:textSize="12sp" android:textStyle="bold" /> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="35dp" android:layout_weight="1" android:onClick="onClick" android:text="最新商品" android:textSize="12sp" android:textStyle="bold" /> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="34dp" android:layout_weight="1" android:onClick="onClick" android:text="熱銷排行" android:textSize="12sp" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="205dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView3" android:layout_width="449dp" android:layout_height="208dp" android:layout_weight="1" app:srcCompat="@drawable/shouyeone" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="256dp" android:layout_marginTop="4dp"> <ImageView android:id="@+id/imageView10" android:layout_width="206dp" android:layout_height="265dp" android:layout_marginTop="3dp" app:srcCompat="@drawable/shouyefive" /> <ImageView android:id="@+id/imageView8" android:layout_width="218dp" android:layout_height="272dp" app:srcCompat="@drawable/shouyefour" /> </LinearLayout> <LinearLayout android:layout_width="400dp" android:layout_height="51dp" android:layout_marginLeft="11dp" android:orientation="horizontal"> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#191A24" android:text="首頁" android:textColor="#FDFDFE" android:textSize="20sp" android:textStyle="bold|italic" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#FDFDFE" android:onClick="onClick" android:text="購物" android:textSize="20sp" android:textStyle="bold|italic" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#191A24" android:onClick="onClick" android:text="資訊" android:textColor="#FDFDFE" android:textSize="20sp" android:textStyle="bold|italic" /> </LinearLayout> </LinearLayout> </android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout> 1.3.2首頁-最新商品 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ShouTwoActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0"> <LinearLayout android:layout_width="match_parent" android:layout_height="49dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView6" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="15dp" android:layout_marginTop="12dp" app:srcCompat="@drawable/caidan" /> <TextView android:id="@+id/textView" android:layout_width="174dp" android:layout_height="47dp" android:layout_marginLeft="79dp" android:layout_marginTop="5dp" android:text="OnlineStore" android:textColor="#010102" android:textSize="30sp" android:textStyle="bold|italic" /> <ImageView android:id="@+id/imageView7" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="70dp" android:layout_marginTop="11dp" app:srcCompat="@drawable/sousuo" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="77dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="77dp" android:layout_weight="1" app:srcCompat="@drawable/shouyesix" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="35dp" android:orientation="horizontal"> <Button android:id="@+id/btn3" android:layout_width="wrap_content" android:layout_height="34dp" android:layout_weight="1" android:text="最新資訊" android:textSize="12sp" android:onClick="onClick" android:textStyle="bold" /> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="35dp" android:layout_weight="1" android:text="最新商品" android:textSize="12sp" android:textStyle="bold" /> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="34dp" android:layout_weight="1" android:text="熱銷排行" android:textSize="12sp" android:onClick="onClick" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="22dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView4" android:layout_width="18dp" android:layout_height="wrap_content" android:layout_marginLeft="12dp" app:srcCompat="@drawable/syone" /> <ImageView android:id="@+id/imageView5" android:layout_width="20dp" android:layout_height="wrap_content" android:layout_marginLeft="28dp" app:srcCompat="@drawable/sythree" /> <ImageView android:id="@+id/imageView9" android:layout_width="15dp" android:layout_height="wrap_content" android:layout_marginLeft="28dp" app:srcCompat="@drawable/sytwo" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="200dp" android:layout_marginTop="3dp" android:shadowColor="#090707" android:text="店長推薦" android:textColor="#0F0E0E" android:textSize="12sp" android:textStyle="bold|italic" /> <ImageView android:id="@+id/imageView12" android:layout_width="13dp" android:layout_height="wrap_content" android:layout_marginRight="3dp" app:srcCompat="@drawable/syfour" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="425dp" android:layout_marginTop="2dp" android:orientation="vertical"> <ImageView android:id="@+id/imageView13" android:layout_width="match_parent" android:layout_height="180dp" app:srcCompat="@drawable/one" /> <ImageView android:id="@+id/imageView11" android:layout_width="match_parent" android:layout_height="273dp" app:srcCompat="@drawable/sysix" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#191A24" android:text="首頁" android:textColor="#FDFDFE" android:textSize="20sp" android:onClick="Zhuan" android:textStyle="bold|italic" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#FDFDFE" android:text="購物" android:textSize="20sp" android:textStyle="bold|italic" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#191A24" android:text="資訊" android:textColor="#FDFDFE" android:textSize="20sp" android:onClick="Zhuan" android:textStyle="bold|italic" /> </LinearLayout> </LinearLayout> </android.support.constraint.ConstraintLayout> 1.4購物頁面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#E6E6E6" android:orientation="vertical" android:padding="10dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="42dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView6" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="1dp" android:layout_marginTop="11dp" app:srcCompat="@drawable/caidan" /> <TextView android:id="@+id/textView" android:layout_width="174dp" android:layout_height="35dp" android:layout_marginLeft="79dp" android:layout_marginTop="5dp" android:text="OnlineStore" android:textColor="#010102" android:textSize="30sp" android:textStyle="bold|italic" /> <ImageView android:id="@+id/imageView7" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="70dp" android:layout_marginTop="11dp" app:srcCompat="@drawable/sousuo" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="62dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" app:srcCompat="@drawable/shouyesix" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:background="@android:color/white" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:text="品名:" android:textColor="#000" android:textSize="18sp" android:textStyle="bold|italic" /> <EditText android:id="@+id/et_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:background="@null" android:padding="10dp" android:maxLines="1"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:background="@android:color/white" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:text="價格:" android:textColor="#000" android:textSize="18sp" android:textStyle="bold|italic" /> <EditText android:id="@+id/et_price" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:background="@null" android:padding="10dp" android:maxLines="1"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@android:color/white" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:text="數量:" android:textColor="#000" android:textSize="18sp" android:textStyle="bold|italic" /> <EditText android:id="@+id/et_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:background="@null" android:padding="10dp" android:maxLines="1"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="10dp"> <Button android:id="@+id/add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="#191A24" android:text="添加" android:textColor="#FFFFFF" android:textSize="16sp" android:textStyle="bold" /> <Button android:id="@+id/query" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="#FDFDFE" android:text="查詢" android:textColor="#191A24" android:textSize="16sp" android:textStyle="bold" /> <Button android:id="@+id/update" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="#191A24" android:text="修改" android:textColor="#FFFFFF" android:textSize="16sp" android:textStyle="bold" /> <Button android:id="@+id/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="#FDFDFE" android:text="刪除" android:textColor="#191A24" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> <ListView android:id="@+id/listView" android:layout_width="wrap_content" android:layout_height="262dp" android:background="#ffffff"> </ListView> <LinearLayout android:layout_width="match_parent" android:layout_height="89dp" android:orientation="horizontal"> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#191A24" android:onClick="Zhuan" android:text="首頁" android:textColor="#FDFDFE" android:textSize="20sp" android:textStyle="bold|italic" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#FDFDFE" android:text="購物" android:textSize="20sp" android:textStyle="bold|italic" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#191A24" android:onClick="Zhuan" android:text="資訊" android:textColor="#FDFDFE" android:textSize="20sp" android:textStyle="bold|italic" /> </LinearLayout> </LinearLayout> 1.5資訊頁面 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ConsultActivity"> <LinearLayout android:layout_width="429dp" android:layout_height="803dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:background="#E6E6E6" android:orientation="vertical" android:padding="10dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.136"> <LinearLayout android:layout_width="match_parent" android:layout_height="42dp" android:layout_marginTop="5dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView6" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="1dp" android:layout_marginTop="11dp" app:srcCompat="@drawable/caidan" /> <TextView android:id="@+id/textView" android:layout_width="174dp" android:layout_height="35dp" android:layout_marginLeft="79dp" android:layout_marginTop="5dp" android:text="OnlineStore" android:textColor="#010102" android:textSize="30sp" android:textStyle="bold|italic" /> <ImageView android:id="@+id/imageView7" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="70dp" android:layout_marginTop="11dp" app:srcCompat="@drawable/sousuo" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="230dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView15" android:layout_width="422dp" android:layout_height="230dp" android:layout_marginTop="8dp" android:layout_weight="1" app:srcCompat="@drawable/conone" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="46dp" android:layout_marginTop="8dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView16" android:layout_width="80dp" android:layout_height="wrap_content" app:srcCompat="@drawable/zxone" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="43dp" android:layout_marginTop="10dp" android:layout_weight="1" android:text="我們所愛的就是我們所愛的," android:textColor="#000001" android:textSize="20sp" android:textStyle="normal|bold" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="219dp" android:layout_marginTop="8dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView17" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" app:srcCompat="@drawable/contwo" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="44dp" android:layout_marginTop="8dp" android:orientation="horizontal"> <ImageView android:id="@+id/imageView18" android:layout_width="80dp" android:layout_height="40dp" app:srcCompat="@drawable/sytwo" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="43dp" android:layout_marginTop="10dp" android:layout_weight="1" android:text="我們所愛的就是我們所愛的," android:textColor="#000001" android:textSize="20sp" android:textStyle="normal|bold" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="7dp" android:orientation="horizontal"> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#191A24" android:onClick="zhuan" android:text="首頁" android:textColor="#FDFDFE" android:textSize="20sp" android:textStyle="bold|italic" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#FDFDFE" android:onClick="zhuan" android:text="購物" android:textSize="20sp" android:textStyle="bold|italic" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:background="#191A24" android:text="資訊" android:textColor="#FDFDFE" android:textSize="20sp" android:textStyle="bold|italic" /> </LinearLayout> </LinearLayout> </android.support.constraint.ConstraintLayout> 1.6 Listview_item頁面 <?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:orientation="vertical" android:padding="10dp"> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp"/> <TextView android:id="@+id/tv_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="3dp" android:textSize="15sp"/> <TextView android:id="@+id/tv_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="3dp" android:textSize="15sp"/> <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/img" /> </LinearLayout> 2.JAVA源碼 2.1登錄頁面 package com.example.onlinestore; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { public void click(View view){ Toast.makeText(MainActivity.this,"登陸成功",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this, ShouOneActivity.class); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); startActivity(intent); } public void zc(View view){ Intent intent = new Intent(); intent.setClass(MainActivity.this, ZhuceActivity.class); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView t=(TextView) findViewById(R.id.button1); } } 2.2注冊頁面 package com.example.onlinestore; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class ZhuceActivity extends AppCompatActivity { public void click(View view){ Intent intent = new Intent(ZhuceActivity.this, MainActivity.class); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); startActivity(intent); } public void fanhui(View view){ Toast.makeText(ZhuceActivity.this,"注冊成功",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(); intent.setClass(ZhuceActivity.this, MainActivity.class); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zhuce); TextView t=(TextView) findViewById(R.id.button2); } } 2.3首頁-最新資訊 package com.example.onlinestore; import android.app.Activity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class ShouOneActivity extends AppCompatActivity { public void onClick(View v) { switch (v.getId()) { case R.id.btn1: Intent intent = new Intent(ShouOneActivity.this, ShouTwoActivity.class); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; case R.id.btn2: Intent intent3 = new Intent(ShouOneActivity.this, ShouTwoActivity.class); startActivity(intent3); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; case R.id.button4: Intent intent5 = new Intent(ShouOneActivity.this, ShoppingActivity.class); startActivity(intent5); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; case R.id.button3: Intent intent4 = new Intent(ShouOneActivity.this, ConsultActivity.class); startActivity(intent4); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shou_one); } } 2.4首頁-最新商品 package com.example.onlinestore; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class ShouTwoActivity extends AppCompatActivity { public void onClick(View v) { switch (v.getId()) { case R.id.btn3: Intent intent = new Intent(ShouTwoActivity.this, ShouOneActivity.class); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; case R.id.btn2: Intent intent3 = new Intent(ShouTwoActivity.this, ShouOneActivity.class); startActivity(intent3); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shou_two); } } 2.5購物 package com.example.onlinestore; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class ShoppingActivity extends AppCompatActivity implements View.OnClickListener { private EditText et_name,et_price,et_number; private ListView listView; private String name,price,number; private MyHelper myHelper; private SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shopping); et_name = (EditText)findViewById(R.id.et_name); et_price = (EditText)findViewById(R.id.et_price); et_number = (EditText) findViewById(R.id.et_number); listView = (ListView)findViewById(R.id.listView); Button add = (Button)findViewById(R.id.add); Button query =(Button) findViewById(R.id.query); Button update =(Button) findViewById(R.id.update); Button delete = (Button)findViewById(R.id.delete); add.setOnClickListener(this); query.setOnClickListener(this); update.setOnClickListener(this); delete.setOnClickListener(this); myHelper = new MyHelper(this); } public void Zhuan(View v) { switch (v.getId()) { case R.id.button5: Intent intent = new Intent(ShoppingActivity.this, ShouOneActivity.class); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; case R.id.button3: Intent intent3 = new Intent(ShoppingActivity.this, ConsultActivity.class); startActivity(intent3); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; } } // @Override public void onClick(View v) { switch (v.getId()){ case R.id.add: db = myHelper.getWritableDatabase(); name = et_name.getText().toString(); price = et_price.getText().toString(); number = et_number.getText().toString(); ContentValues values = new ContentValues(); //創建ContentValues對象 values.put("name", name); //將數據添加到ContentValues對象 values.put("price", price); values.put("number", number); db.insert("cart", null, values); db.close(); Toast.makeText(this, "信息已添加", Toast.LENGTH_SHORT).show(); break; case R.id.query: Log.e("yanwenhua","123"); List<CartBean> list = new ArrayList(); db = myHelper.getWritableDatabase(); Cursor cursor = db.query("cart", null, null, null, null, null, null); if (cursor.getCount() == 0) { Toast.makeText(this, "沒有數據", Toast.LENGTH_SHORT).show(); } else { while (cursor.moveToNext()) { CartBean cartBean = new CartBean(); int nameIndex = cursor.getColumnIndex("name"); int priceIndex = cursor.getColumnIndex("price"); int numberIndex = cursor.getColumnIndex("number"); String name = cursor.getString(nameIndex); String price = cursor.getString(priceIndex); String number = cursor.getString(numberIndex); Log.e("yanwenhua","cursor.getCount();--"+cursor.getCount()+"name-"+name+" "+price+" "+number); cartBean.setName(name); cartBean.setPrice(price); cartBean.setNumber(number); list.add(cartBean); } CartAdapter adapter = new CartAdapter(ShoppingActivity.this,list); listView.setAdapter(adapter); adapter.notifyDataSetChanged(); } cursor.close(); db.close(); break; case R.id.update: name = et_name.getText().toString(); price = et_price.getText().toString(); number = et_number.getText().toString(); db = myHelper.getWritableDatabase(); values = new ContentValues(); // 要修改的數據 values.put("number",number); values.put("price",price); db.update("cart", values, "name=?", new String[]{name}); // 更新並得到行數 db.close(); Toast.makeText(this, "信息已修改", Toast.LENGTH_SHORT).show(); break; case R.id.delete: db = myHelper.getWritableDatabase(); db.delete("cart", null, null); List<CartBean> list2 = new ArrayList(); CartAdapter adapter = new CartAdapter(ShoppingActivity.this,list2); listView.setAdapter(adapter); adapter.notifyDataSetChanged(); db.close(); Toast.makeText(this, "信息已刪除", Toast.LENGTH_SHORT).show(); break; } } } 2.6資訊頁面 package com.example.onlinestore; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class ConsultActivity extends AppCompatActivity { public void zhuan(View v) { switch (v.getId()) { case R.id.button5: Intent intent = new Intent(ConsultActivity.this, ShouOneActivity.class); startActivity(intent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; case R.id.button4: Intent intent3 = new Intent(ConsultActivity.this, ShoppingActivity.class); startActivity(intent3); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); break; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_consult); } } 2.7MyHelper package com.example.onlinestore; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; class MyHelper extends SQLiteOpenHelper { public MyHelper(Context context) { super(context, "shoppingcart.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE cart(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), price VARCHAR(20), number VARCHAR(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } 2.8 CartAdapter package com.example.onlinestore; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.List; public class CartAdapter extends BaseAdapter { private List<CartBean> list; private LayoutInflater layoutInflater; public CartAdapter(Context context, List<CartBean> list){ this.layoutInflater = LayoutInflater.from(context); this.list = list; } @Override public int getCount() { Log.e("yanwenhua","list.size()--"+list.size()); return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView==null){ convertView=layoutInflater.inflate(R.layout.listview_item,null); viewHolder=new ViewHolder(convertView); convertView.setTag(viewHolder); }else { viewHolder=(ViewHolder) convertView.getTag(); } CartBean cartBean = list.get(position); viewHolder.tv_name.setText("商品名稱:"+cartBean.getName()); viewHolder.tv_price.setText("商品價格:"+cartBean.getPrice()); viewHolder.tv_number.setText("商品數量:"+cartBean.getNumber()); Log.e("yanwenhua","cartBean.getName()-"+cartBean.getName()+" "+cartBean.getPrice()+" "+cartBean.getNumber()); return convertView; } class ViewHolder{ TextView tv_name; TextView tv_price; TextView tv_number; public ViewHolder(View view){ tv_name = (TextView) view.findViewById(R.id.tv_name); tv_price = (TextView) view.findViewById(R.id.tv_price); tv_number = (TextView) view.findViewById(R.id.tv_number); } } } 2.9 CartBean package com.example.onlinestore; public class CartBean { private String name; private String price; private String number; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } }