移動課堂點名APP
一、程式原始碼涉及多個類,比較繁雜,就不貼到這兒了,在這附上原始碼地址:https://github.com/WreckBear/final
二、該程式涉及以下幾個類,對以下的類進行簡要說明:
CallNameActivity:顯示全域性點名的介面。
CallNameAll:負責點名選擇介面。
CallNameRdmActivity:負責隨機點名介面。
CountActivity:負責統計介面。
ImportActivity:負責匯入檔案的介面。
MainActivity:主介面。
MoreActivity:更多介面。
MyDBOpenHelper:關於和資料庫互動的類。
MyInfoActivity:我的資訊頁。
PersonDao:關於資料庫請求類。
SplashActivity:進入Splash介面。
三、部分程式碼
貼出統計頁面的原始碼,簡要說明下思路:
本類包含4個方法:oncreate():初始化介面的各個變數。
onstart():檢測有無表kecheng1存在,如存在則呼叫count方法;否則就顯示沒有課程。
tableExist():檢測資料表是否存在。
count():將所有同學的資料從資料庫中取出來,放到listview中顯示。
下面是具體程式碼,附註釋:
3 import java.awt.Cursor; 4 import java.util.ArrayList; 5 import java.util.HashMap; 6 import java.util.List; 7 8 public class CountActivity extends Activity { 9 ListView listView; 10 TextView text; 11 LinearLayout linearLayout; 12 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.count_layout); 17 18 //初始化介面元件 19 text = (TextView) findViewById(R.id.toast); 20 linearLayout = (LinearLayout) findViewById(R.id.instudct); 21 listView = (ListView) findViewById(R.id.count); 22 } 23 24 @Override 25 protected void onStart() { 26 super.onStart(); 27 //如果表存在,就呼叫count方法 28 if (tabIsExist("kecheng1")) { 29 linearLayout.setVisibility(View.VISIBLE); 30 listView.setVisibility(View.VISIBLE); 31 text.setVisibility(View.GONE); 32 count(); 33 } else { 34 linearLayout.setVisibility(View.GONE); 35 listView.setVisibility(View.GONE); 36 text.setVisibility(View.VISIBLE); 37 } 38 } 39 40 public boolean tabIsExist(String tabName) { 41 SQLiteDatabase dbInfo = new MyDBOpenHelper(this).getReadableDatabase(); 42 boolean result = false; 43 if (tabName == null) { 44 return false; 45 } 46 Cursor cursor = null; 47 try { 48 String sql = "select count(*) as c from sqlite_master where type ='table' and name ='" 49 + tabName.trim() + "' "; 50 cursor = dbInfo.rawQuery(sql, null); 51 if (cursor.moveToNext()) { 52 int count = cursor.getInt(0); 53 if (count > 0) { 54 result = true; 55 } 56 } 57 } catch (Exception e) { 58 } finally { 59 dbInfo.close(); 60 } 61 return result; 62 } 63 64 private void count() { 65 // 存放資料用 66 List<HashMap<String, String>> all = new ArrayList<HashMap<String, String>>(); 67 PersonDao per = new PersonDao(this); 68 List<String[]> tmpList = per.getAllPerson(); 69 //將資料拆箱裝到hashmap裡 70 for (String[] tmpAll : tmpList) { 71 HashMap hash = new HashMap<String, String>(); 72 hash.put("學號", tmpAll[0]); 73 hash.put("班級", tmpAll[3]); 74 hash.put("姓名", tmpAll[1]); 75 hash.put("缺勤", tmpAll[4]); 76 all.add(hash); 77 } 78 //設定listViw介面卡 79 SimpleAdapter simple = new SimpleAdapter(this, all, R.layout.liststyle, 80 new String[] { "學號", "班級", "姓名", "缺勤" }, new int[] { R.id.t1, 81 R.id.t2, R.id.t3, R.id.t4 }); 82 listView.setAdapter(simple); 83 84 } 85 }