Android實(shí)現(xiàn)機(jī)房座位預(yù)約系統(tǒng)
本文實(shí)例為大家分享了Android實(shí)現(xiàn)預(yù)約系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
這周要去武漢開(kāi)會(huì),下周項(xiàng)目就得用上,所以,比較緊。加上導(dǎo)師不懂Android開(kāi)發(fā),只要開(kāi)會(huì)就改需求,/(ㄒoㄒ)/~~反正他說(shuō)先讓學(xué)校用著,移動(dòng)端和服務(wù)器的開(kāi)發(fā)就給了兩周時(shí)間。所以功能實(shí)現(xiàn)的比較簡(jiǎn)單,但代碼做的比較容易擴(kuò)展,都留了接口,后面更新起來(lái)也好做一些。通過(guò)這個(gè)工程,對(duì)Struts2的攔截器有了一些新體會(huì)。隨著項(xiàng)目變大代碼量變多,自然而然就會(huì)想起用一些設(shè)計(jì)模式了。不然代碼根本沒(méi)辦法看。
整體是4個(gè)fragment,每個(gè)fragment里都有課程表的布局,課程可以從服務(wù)器傳過(guò)來(lái)動(dòng)態(tài)生成。其實(shí)很多都可以復(fù)用的布局,為了代碼結(jié)構(gòu)清晰,都分開(kāi)寫(xiě)了。不然需要加控制器,調(diào)試起來(lái)心累。寫(xiě)的不好,還請(qǐng)大家多指教。做的還不完善,弄完以后再傳上來(lái)。
Application里對(duì)數(shù)據(jù)進(jìn)行持久化,這么做發(fā)現(xiàn)程序變得比較容易控制了。
Application
package com.example.myapplication; import android.app.Application; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; public class CustomApplication extends Application { public static final String serverAddress = "http://192.168.1.119"; // public static final String serverAddress = "http://10.187.86.63"; public static final String serverPort = "8080/Person_proj/upload"; // public static final String serverPort = "8000"; private static final String DEFAULT_NAME = ""; private static final String DEFAULT_ID = "-1"; private String name; private String id; private String room; private String myOrder="NULL"; private boolean isLogin = false; public boolean isLogin() { SharedPreferences sp = getSharedPreferences("status", MODE_PRIVATE); return sp.getBoolean("islogin", false); } /** * 0為 未登錄 * 1為登錄 */ public void setLogin(boolean isLogin) { SharedPreferences sp = getSharedPreferences("status", MODE_PRIVATE); Editor edit = sp.edit(); edit.putBoolean("islogin", isLogin); edit.commit(); } private int version; public int getVersion() { SharedPreferences sp = getSharedPreferences("status", MODE_PRIVATE); return sp.getInt("version",0); } public void setVersion(int version) { SharedPreferences sp = getSharedPreferences("status", MODE_PRIVATE); Editor edit = sp.edit(); edit.putInt("version",version); edit.commit(); } public String getMyOrder() { SharedPreferences sp = getSharedPreferences("status", MODE_PRIVATE); return sp.getString("order","NULL"); } public void setMyOrder(String myOrder) { SharedPreferences sp = getSharedPreferences("status", MODE_PRIVATE); Editor edit = sp.edit(); edit.putString("order",myOrder); edit.commit(); } @Override public void onCreate() { super.onCreate(); setName(DEFAULT_NAME); // 初始化全局變量 setId(DEFAULT_ID); } public void setName(String name) { SharedPreferences sp = getSharedPreferences("status", MODE_PRIVATE); Editor edit = sp.edit(); edit.putString("name", name); edit.commit(); } public String getName() { SharedPreferences sp = getSharedPreferences("status", MODE_PRIVATE); return sp.getString("name", "none"); } public String getId() { return id; } public void setId(String id) { this.id = id; } public void setRoom(String room) { this.room = room; } public String getRoom() { return room; } }
做注冊(cè)時(shí)的邏輯判斷,onClick事件里:
boolean cancel = false; View focusView = null; String id = builder.getUserId().trim(); String password = builder.getPassword().trim(); String passwordConfirm = builder.getPasswordConfirm().trim(); final String username = builder.getUsername().trim(); // Check for a valid password. if (TextUtils.isEmpty(password)) { cancel = true; focusView = builder.getStuPwdEditText(); } // Check for a valid password. if (TextUtils.isEmpty(passwordConfirm)) { cancel = true; focusView = builder.getStuPwdConfirmEditText(); } if (!password.equals(passwordConfirm)) { cancel = true; focusView = builder.getStuPwdEditText(); } // Check for a valid Id. if (TextUtils.isEmpty(id)) { cancel = true; focusView = builder.getStuIdEditText(); } // Check for a valid username. if (TextUtils.isEmpty(username)) { cancel = true; focusView = builder.getStuNameEditText(); } if(!MatchUtils.match(password)||!MatchUtils.match(passwordConfirm)){ cancel = true; focusView = builder.getStuPwdEditText(); ToastUtils.MyToast(getApplicationContext(), "密碼只能為6位數(shù)字!"); } if (cancel) { ToastUtils.MyToast(getApplicationContext(), "輸入有誤,請(qǐng)從新輸入!"); focusView.requestFocus(); } else { //...這里做的網(wǎng)絡(luò)請(qǐng)求 // TODO signup 提交服務(wù)器Get請(qǐng)求 // 符合接口規(guī)范 final String url =app.serverAddress+":"+app.serverPort+"?"+"action=signin"+"&"+"username="+username+"&"+"oldpassword="+password; HttpUtils http = new HttpUtils(); http.send(HttpMethod.GET, url, new RequestCallBack<String>() { @Override public void onSuccess(ResponseInfo<String> responseInfo) { Log.i("tag", "============success============"+responseInfo.result); ToastUtils.MyToast(getApplicationContext(), responseInfo.result); if(responseInfo.result.equals("success")){ //注冊(cè)成功,自動(dòng)實(shí)現(xiàn)登錄 app.setLogin(true); app.setName(username); //更新UI Message m = Message.obtain(); m.what=1; handler.sendMessage(m); ToastUtils.MyToast(getApplicationContext(), "注冊(cè)成功,學(xué)號(hào):"+username); }else{ ToastUtils.MyToast(getApplicationContext(), responseInfo.result); } dialog.dismiss(); } @Override public void onFailure(HttpException error, String msg) { ToastUtils.MyToast(getApplicationContext(), msg); dialog.dismiss(); } }); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android NDK開(kāi)發(fā)(C語(yǔ)言字符串)
這篇文章主要介紹了Android NDK開(kāi)發(fā) C語(yǔ)言字符串 ,主要以字符數(shù)組、字符指針及一些字符串常用的方法的方法未來(lái)全文展開(kāi)內(nèi)容,需要的朋友可以參考一下2021-12-12Flutter 設(shè)置全局字體的實(shí)現(xiàn)
本文主要介紹了Flutter 設(shè)置全局字體的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Android基于高德地圖poi的仿微信獲取位置功能實(shí)例代碼
這篇文章主要介紹了Android基于高德地圖poi的仿微信獲取位置功能,當(dāng)用戶打開(kāi)頁(yè)面自動(dòng)定位,同時(shí)搜索周邊所有poi,點(diǎn)擊搜索按鈕輸入關(guān)鍵字,獲取關(guān)鍵字搜索結(jié)果,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友參考下吧2017-12-12android通過(guò)google api獲取天氣信息示例
這篇文章主要介紹了android通過(guò)google api獲取天氣信息示例,需要的朋友可以參考下2014-04-04android實(shí)現(xiàn)可以滑動(dòng)的平滑曲線圖
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)可以滑動(dòng)的平滑曲線圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06Android中解決RecyclerView各種點(diǎn)擊事件的方法
這篇文章主要介紹了Android中解決RecyclerView各種點(diǎn)擊事件的方法,完美解決RecyclerView點(diǎn)擊事件、長(zhǎng)按事件、子項(xiàng)點(diǎn)擊事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android開(kāi)源項(xiàng)目PullToRefresh下拉刷新功能詳解2
這篇文章主要為大家進(jìn)一步的介紹了Android開(kāi)源項(xiàng)目PullToRefresh下拉刷新功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09Android基于AccessibilityService制作的釘釘自動(dòng)簽到程序代碼
這篇文章主要介紹了Android基于AccessibilityService制作的釘釘自動(dòng)簽到程序代碼,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Android使用Notification實(shí)現(xiàn)寬視圖通知欄(二)
這篇文章主要為大家詳細(xì)介紹了Android使用Notification實(shí)現(xiàn)寬視圖通知欄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12Android三種方式實(shí)現(xiàn)ProgressBar自定義圓形進(jìn)度條
這篇文章主要介紹了Android三種方式實(shí)現(xiàn)ProgressBar自定義圓形進(jìn)度條的相關(guān)資料,需要的朋友可以參考下2016-03-03