




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
...wd......wd......wd...西安郵電大學〔計算機學院〕綜合應用軟件課程設計報告題目:易貸寶-企業-銀行-農民貸款系統專業名稱:計算機科學與技術班級:計科1201學生姓名:學號〔8位〕:指導教師:喬安全起止時間:2014年11月17日—2014年11月28日一、課程設計目的①在數據庫原理課程根基上,培養綜合運用數據庫知識的能力。②學會數據庫的設計、規劃以及應用程序的開發和調試,掌握客戶機/服務器體系構造,學會大型數據庫的工作模式。③大型數據庫管理系統存放于服務器,數據庫放在服務器上,學生在客戶機上開發應用程序訪問服務器上的數據庫,并完成應用系統所要求的各項功能,應用程序的開發需要采用當前流行的新軟件。二、課程設計內容數據庫的設計根據所選的題目,經過調查研究,構建合理的數據庫。首先構建基本表以及表和表之間的聯系,在此根基上構建視圖和索引表。此次選題共建設11張表,各表之間外鍵關聯極強。服務器的組織根據建設的基本表、視圖和索引表搭建服務器。前端開發工具:采用JAVA進展編寫服務器端:JDK1.7,mysql5.6開發應用程序利用所學的新軟件開發工具進展應用程序的開發。連接、調試。三、軟硬件環境及系統所采用的體系構造系統的體系構造為C/S構造1.前臺——開發工具Eclipse+ADT22.0.3+GenyMotion開發語言為:Java〔使用JDK1.6〕開發環境:Android4+Windows8x64后臺——開發工具:MyEclipse2014+Tomcat7.0+MySQL5.6+SQLYog開發語言為:Java〔使用JDK1.7〕,SQL開發環境為:Windows7x64四、需求分析易貸寶是一款為面向農戶貸款的貸款應用,實行“公司+農戶+信貸〞的產業鏈模式進展申貸。所謂“公司+農戶+信貸〞,就是實行農戶貸款,企業擔保方式。利用企業市場洞察力、信息敏感度和資金實力相對較強的優勢,由企業為關聯農戶貸款提供擔保,既把企業與農戶的利益嚴密地聯系在一起,又能增強單個農戶抗風險能力創新擔保形式,實現風險共擔。這樣利用農戶現成生產設備減少了生產成本,公司和周圍農民都有了經濟效益。通過對農業龍頭企業進展支持,以及對形成農業產業鏈的前提——農戶種植、收購、加工等上下游提供相應的信貸支持、提供信息服務、發放惠農卡等,不僅滿足企業開展的資金需求還對上下游客戶提供延伸的金融服務,這樣銀行也能降低風險,形成農戶、企業、銀行等多贏局面?!耙踪J寶〞是一款集貸款服務、供需資訊于一體的金融類應用程序。很好的運用了“公司+農戶+信貸〞這一模式。具體流程如下:農產品收購企業向銀行申請貸款,并按照企業和銀行協議,棉花收購企業需將這筆款項中的一定比例借給有需求的農戶,用于農戶的擴大再生產,并負責向農戶提供生產技術指導和產品收購。這筆借款以農戶在企業中的訂單做抵押。農戶將其現在或將來生產的農場品銷售給企業,作為獲得貸款的對價和歸還貸款的方式,最后由企業向銀行歸還貸款本息。“易貸寶〞創新了信貸管理方式,依托產業化龍頭企業,把銀行貸款發放和農業產業化有機地結合在一起。“易貸寶〞貸款的設計理念是通過產業鏈貸款資金封閉運行化解信貸資金的風險,從而解決農戶貸款難、擔保難的問題。同時立足于簡化企業貸款流程,減少企業款項下達時間,為企業提供優惠利率。同時利用銀行做資金融通,以“公司+農戶+信貸〞的模式實現三方共贏。具體的需求分析:農戶注冊登陸:用戶名、用戶密碼、用戶密碼確認、手機號。注冊之后出現用戶信息,可以暫不填寫,但是在申請貸款之前必須得填寫用戶信息:身份認證:中文姓名、身份證號、出生年月、現居地址經營狀況:種植行業、種植規模、種植年限、年投入成本、年收入、貸款用途銀行卡號:卡號、余額〔貸款對象須從事種養殖業,并且有過種植經歷,即年限不可為0。規模、年限、成本收入、貸款用途作為銀行放貸金額的考量〕擔保企業信息:企業名稱、企業注冊號、企業地址、企業、申請進度〔銀行線上核實,符合后根據企業地址線下審核,審查交易來往記錄等內容〕4.貸款申請:申請農戶、貸款金額、貸款期限、申請企業、狀態、申請日期、用途、應還日期〔必須完善用戶信息之后才能在線申請,提交申請后根據用戶信息進展審核〕5.進度查詢:查詢用戶款項審核進度。有未審核,正在審核,審核未通過三種情況。未通過審核列有未審核通過的原因。6.在線尋找擔保企業:可以通過定位尋找附近的農企,也可搜索企業,并實現線上溝通。發送擔保申請。7.申請記錄:申請記錄中有農戶貸款的申請記錄,記錄農戶貸款的金額,貸款日期,款項狀態〔已還款,未還款〕顯示到期歸還金額,應還款的日期8.還款:產品申請數量單價合計金額提交還款申請等待企業線上核實〔農戶提交申請后,在線下交易的同時企業完成線上核實〕9.邀請好友:邀請通訊錄中的好友。方式為短信。10.平臺介紹:介紹易貸寶,語言通俗易懂關于:簡單介紹開發團隊意見反響:提交文字信息客服:一鍵撥打客服11.企業注冊:用戶名、密碼、密碼確認、企業名稱、注冊號〔注冊號必須輸入完整信息,名稱可以模糊匹配〕成立日期、登記機關、地址、經營范圍、企業12.我的消息:查看農戶的消息,并在線溝通。13.查看申請:查看向自己申請的農戶的所有信息,線下核實之后線上通過擔保申請。通過或拒絕擔保申請的農戶。通過的農戶保存在我的擔保農戶中。查看農戶的還款申請,在交易的同時通過還款驗證,農戶的申請記錄中款項更新為已還款。14.我的擔保農戶:查看所擔保農戶的所有信息、審核進度、并實現交流。五、系統設計 1.系統構造圖〔功能模塊圖〕 見附件一2.后臺接口:1.農民注冊servlet/FarmerRegistServletStringname農民姓名Stringpassword密碼Stringphone農民返回值name_has_registed有信息姓名,注冊失敗phone_has_registed有重復,注冊失敗regist_success注冊成功regist_failed注冊失敗2.農民資料完善://localhost:8080/servlet/FarmerDetialServletIntegerfid農民idStringplantIndestury種植行業StringplantScale種植規模IntegerplantYear種植年限FloatannualInvestment年投入FloatannualEarning年收入StringloanUse貸款用途返回值message_save_success信息保存成功message_has_certained信息已確認過save_failed保存失敗3.農民個人信息完善://localhost:8080/servlet/FarmerIdentityServletIntegerfid農民idcnNAME中文姓名identityNumber農民身份證號birthday生日address住址返回值message_save_success信息保存成功message_has_certained信息已確認過save_failed保存失敗4.農民持有銀行卡情況://localhost:8080/servlet/servlet/FBankCardServletIntegerfid農民idStringbankName銀行名稱StringcardNumber銀行卡號返回值cardNumber_has_certained銀行卡已存在message_save_success信息保存成功message_has_save信息保存〔超過一張卡〕save_failed保存失敗5.企業注冊://localhost:8080/servlet/servlet/EnterpriseServletStringname企業登錄名Stringpassword登錄密碼StringenterpriseName企業名稱StringregistNumber企業注冊號返回結果name_has_registed存在一樣注冊名,注冊失敗enterpriseName_has_registed存在一樣企業名,注冊失敗registNumber_has_registed存在一樣注冊號,注冊失敗regist_success注冊成功regist_failed注冊失敗6.企業信息完善/servlet/EnterpriseDetialServletIntegereid企業idStringestablishDate成立日期StringregistAuthorith登記機關StringbusinessScope經營范圍StringphoneNumber企業返回結果message_save_success信息插入成功message_has_certained信息已插入save_failed插入失敗7.企業持有銀行卡情況://localhost:8080/servlet/servlet/EBankServletIntegereid企業idStringbankName銀行名稱StringcardNumber銀行卡號返回值number_has_certained銀行卡已存在message_save_success信息保存成功message_has_save信息保存〔超過一張卡〕message_save_failed保存失敗8.農民登陸://localhost:8080/servlet/FarmerLoginServletStringname農民姓名Stringpassword密碼返回結果login_failed登陸失敗{"farmer":{"id":1,"name":"zc","password":"123","hasIdentity":1,"hasDetial":1,"hasBankCard":1},"farmerDetial":{"fid":1,"plantIndestury":"123","plantScale":"123","plantYear":123,"annualInvestment":123,"annualEarning":123,"loanUse":"123"},"farmerIdentity":{"fid":1,"cnName":"qwe","identityNumber":"123","birthday":"123","address":"123"},"bankCards":[{"fid":1,"bankName":"123","cardNumber":"123","money":10000}]}9.企業登陸://localhost:8080/servlet/EnterpriseLoginServletStringname企業登錄名Stringpassword登錄密碼返回結果login_failed登陸失敗{"enterprise":{"id":1,"name":"haha","password":"123","enterpriseName":"123","registNumber":"123","hasDetial":1,"hasBankCard":1},"enterprisedetial":{"eid":1,"establishDate":"123","registAuthorith":"123","businessScope":"123","phoneNumber":"123"},"bankCards":[{"eid":1,"bankName":"123","cardNumber":"123","money":6000000}]}10.更新農民銀行卡金額/servlet/FarmerUpdateMoneyServletIntegerid銀行卡idFloatmoney錢數返回結果money_less_failed所要取出的錢大于已有的錢,取錢失敗get_money_success取錢成功save_money_success存錢成功update_money_failed更新失敗11.更新企業銀行卡金額/servlet/EnterpriseUpdateMoneyServletIntegerid銀行卡idFloatmoney錢數返回結果money_less_failed所要取出的錢大于已有的錢,取錢失敗get_money_success取錢成功save_money_success存錢成功update_money_failed更新失敗12.查詢企業銀行卡信息/servlet/EBankCardDetialServletIntegereid企業id返回結果no_bankcard無銀行卡信息[{"id":1,"eid":1,"bankName":"123","cardNumber":"123","money":5930000},{"id":2,"eid":2,"bankName":"234","cardNumber":"23456","money":8000000}]13.查詢農民銀行卡信息/servlet/FBankCardDetialServletIntegerfid農民id返回結果no_bankcard無銀行卡信息[{"id":1,"fid":1,"bankName":"123","cardNumber":"123","money":110000}]14.模擬在線查找企業〔產生10個eid隨機數,返回enterprise,enterprisedetial中的全部內容〕/servlet/FindEnterpriseServlet返回結果[{"id":1,"name":"haha","enterpriseName":"123","registNumber":"123","businessScope":"123","phoneNumber":"123","establishDate":"123"},….]隨機返回10個企業及其信息用戶提出擔保申請/servlet/GurantEnterpriseServletIntegerfid農民idIntegereid企業id返回結果gurant_success申請提出成功gurant_failed申請提出失敗16.企業承受農戶擔保申請/servlet/UpdateGurantDateSuccessServletIntegerid擔保信息id返回結果update_success更新申請信息為承受成功update_failed更新申請信息為承受失敗17.企業不承受農戶擔保申請/servlet/UpdateGurantDateFailedServletIntegerid擔保信息id返回結果update_success更新申請信息為不承受成功update_failed更新申請信息為不承受失敗18.用戶向企業貸款/servlet/LoanServletfid農民ideid企業idfbid農民存入的銀行卡idmoney貸款金額remoney應還金額loanDays貸款期限useOfLoan貸款用途返回結果loan_success申請貸款成功loan_failed申請貸款失敗19.企業正在審理貸款/servlet/LoanPendingServletid貸款id返回參數loan_update_pending_success更改狀態為企業正在審理貸款成功loan_update_pending_failed更改狀態為企業正在審理貸款失敗20.企業決定不放貸/servlet/LoanFailedServletid貸款id返回結果loan_update_failed_success更改狀態為企業不放貸成功loan_update_failed_failed更改狀態為企業不放貸失敗21.企業決定放貸/servlet/LoanSuccessServletid貸款idebid企業所用的銀行卡id返回結果loan_update_success_success更改狀態為企業決定放貸成功loan_update_success_success更改狀態為企業決定放貸失敗22.農戶查看我的所有貸款情況/servlet/FarmerAllLoanServletIntegerfid返回結果[{"eid":1,"establishDate":"123","registAuthorith":"123","businessScope":"123","phoneNumber":"123","fid":1,"fbid":1,"money":123,"remoney":234,"loanDays":12,"loanSuccessDate":"2014-11-17","repaymentDate":"2014-11-17","useOfLoan":"12","status":7}]23.農戶提出還款/servlet/FarmerRepaymentServletIntegerfid農民idIntegereid企業idIntegerfbid農戶選擇還款的銀行卡idIntegerlid借款項idStringrepaymentContent還款內容返回結果reapply_success更改狀態為農民提出還款成功reapply_failed更改狀態為農民提出還款失敗24.企業正在審核還款/servlet/LoanRependingServletIntegerid還款id返回結果update_loan_repending_success更改狀態為企業正在審核還款成功update_loan_repending_failed更改狀態為企業正在審核還款失敗25.企業決定還款成功/servlet/RepaySuccessServletIntegerid還款idIntegerebid企業銀行卡id返回結果update_loan_success_success更改狀態為企業決定還款成功成功update_loan_success_failed更改狀態為企業決定還款成功失敗26.農戶查看所有還款信息27.農戶查詢全部擔保信息/servlet/FarmerGetAllGurantInfoServletIntegerfid農戶id返回結果no_data沒有數據JSON:[{"id":1,"askDate":"2014-11-17","status":1,"enterprise":{"enterpriseName":"dell"}}]擔保進度數據28.企業查詢所有擔保信息/servlet/EnterpriseGetAllGurantApplyServletIntegereid企業id返回結果(no_data沒有數據JSON:[{"id":3,"askDate":"2014-11-17","cnName":"zzzc","identityNumber":,"address":"xianchangan"}]此處返回status=1的信息,表示我要處理的擔保申請3.數據庫設計ER圖1.農戶表farmeridINT農民id〔主鍵〕nameVARCHAR(255)農民姓名passwordVARCHAR(255)登陸密碼phoneVARCHAR(20)農民hasIdentityTINYINT是否確認身份信息,1確認hasDetialTINYINT是否確認經營信息,1確認hasBankCardTINYINT是否擁有銀行卡2.農戶細節表farmerdetialfidINT農民id〔主鍵+外鍵〕plantIndesturyVARCHAR(255)種植行業plantScaleVARCHAR(255)種植規模plantYearINT種植年限annualInvestmentFLOAT年投入annualEarningFLOAT年收入loanUseVARCHAR(255)貸款用途3.農戶確認信息表farmeridentityfidINT農民id〔主鍵+外鍵〕cnNameVARCHAR(255)中文姓名identityNumberVARCHAR(255)身份證號birthdayVARCHAR(255)出生年月addressVARCHAR(255)現居地址4.農民銀行卡表fbankcardidINT銀行卡id〔主鍵〕fidINT農民id〔外鍵〕bankNameVARCHAR(255)銀行名稱cardNumberVARCHAR(255)銀行卡號moneyFLOAT金額5.企業表enterpriseidINT企業id〔主鍵〕nameVARCHAR(255)企業登陸名稱passwordVARCHAR(255)密碼enterpriseNameVARCHAR(255)企業名稱registNumberVARCHAR(255)注冊號hasDetialTINYINT是否填寫企業信息hasBankCardTINYINT是否填寫銀行卡6.企業細節表enterprisedetialeidINT企業id〔主鍵+外鍵〕establishDateVARCHAR(255)成立日期registAuthorithVARCHAR(255)登記機關businessScopeVARCHAR(255)經營范圍phoneNumberVARCHAR(255)企業7.企業銀行卡表ebankcardidINT銀行卡id〔主鍵〕eidINT企業id〔外鍵〕bankNameVARCHAR(255)銀行名稱cardNumberVARCHAR(255)銀行卡號moneyFLOAT金額8.擔保表gurantidINT擔保信息id〔主鍵〕fidINT農民id〔外鍵〕eidINT企業id〔外鍵〕askDateVARCHAR(255)申請日期gurantDateVARCHAR(255)申請成功日期statusINT申請狀態9.信息表messageidINT信息idtypeINT信息類型contentVARCHAR(255)信息內容fidINT農民ideidINT企業iddateVARCHAR(255)發送日期hasReadTINYINT是否閱讀,1已讀10.貸款表loanIdINT貸款id〔主鍵〕fidINT農民id〔外鍵〕eidINT企業id〔外鍵〕fbidINT農民存入的銀行卡id〔外鍵〕ebidINT企業存入的銀行卡id〔外鍵〕moneyFLOAT貸款金額remoneyFLOAT應還金額loanDaysINT貸款期限loanSuccessDateVARCHAR(255)成功貸款日期repaymentDateVARCHAR(255)還款日期useOfLoanVARCHAR(255)貸款用途statusINT狀態11.還款表repaymentIdINT還款id〔主鍵〕fidINT農民id〔外鍵〕eidINT企業id〔外鍵〕fbidINT農民存入的銀行卡id〔外鍵〕ebidINT企業存入的銀行卡id〔外鍵〕lidINT借款id〔外鍵〕repaymentContentVARCHAR(255)還款工程六、系統的實施系統的實現方法,應用程序的編制方法,重要代碼的說明?!部梢越o出流程圖〕系統的實現方法Server端使用JDBC+Apache的開源接口進展數據庫操作,同時使用了傳統的Servlet+Service+Dao設計,實現了事務管理,Servlet層實現參數接收和信息發送接收,Service實現業務邏輯的處理,Dao層直接操縱數據庫數據庫的設計軟件的設計采用面向對象的實現方式,所以數據庫要遵循這一思想,先不編寫數據庫SQL腳本,先設計實體類〔對應服務器代碼的com.xiyou.ydb.model層下的Entity〕Server端對請求參數的處理關鍵代碼如下:publicclassEncodingFilterimplementsFilter{privateStringcharset="UTF-8";@Overridepublicvoiddestroy(){}@OverridepublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse, FilterChainchain)throwsIOException,ServletException{ ServletRequestreq=(ServletRequest)request;if(req.getMethod().equalsIgnoreCase("GET")){if(!(reqinstanceofGetRequest)){ req=newGetRequest(req,charset);//處理get請求編碼 } }else{ req.setCharacterEncoding(charset);//處理post請求編碼 } chain.doFilter(req,response); }@Overridepublicvoidinit(FilterConfigfConfig)throwsServletException{ Stringcharset=fConfig.getInitParameter("charset");if(charset!=null&&!charset.isEmpty()){this.charset=charset; } }}使用一個過濾器,實現全站請求碼轉碼,方便中文數據的發送和承受Server端數據庫連接方式為了提高Server的系統吞吐量,采用C3P0數據庫連接池,C3P0依賴的jar包有c3p0-0.9.2-pre1.jar和mchange-commons-0.2.jar,并且需要在classpath下添加c3p0數據庫的連接信息c3p0-config.xml:<?xmlversion="1.0"encoding="UTF-8"?><c3p0-config><!--數據庫連接池--><default-config><propertyname="jdbcUrl"><![CDATA[ jdbc:mysql://localhost:3306/ydb?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=256&rewriteBatchedStatements=true]]></property><propertyname="driverClass">com.mysql.jdbc.Driver</property><propertyname="user">root</property><propertyname="password">root</property><propertyname="acquireIncrement">3</property><propertyname="initialPoolSize">10</property><propertyname="minPoolSize">2</property><propertyname="maxPoolSize">10</property></default-config></c3p0-config>Android網絡請求實現方式:原那么上手寫,不使用GitHub上的開源工程,不使用別人的jar包。關鍵代碼:請求/** *用于POST請求生成字符串的方法 * *@paramurl *(請求的地址) *@paramparams *(POST請求參數) *@return請求結果 */publicstaticStringqueryStringForPost(Stringurl, Map<String,String>rawParams){ Postrequest=newPost(url); List<NameValuePair>params=null;if(rawParams!=null){ params=newArrayList<NameValuePair>();for(Stringkey:rawParams.keySet()){ params.add(newBasicNameValuePair(key,rawParams.get(key))); } }try{if(params!=null){ request.setEntity(newUrlEncodedFormEntity(params,.UTF_8)); } }catch(UnsupportedEncodingExceptione1){ e1.printStackTrace(); }Stringresult=null;try{ Responseresponse=newDefaultClient().execute(request);if(response.getStatusLine().getStatusCode()==200){ System.out.println("requesesuccessful"); result=EntityUtils.toString(response.getEntity(),"utf-8"); System.out.println("result>"+result);returnresult; } }catch(ClientProtocolExceptione){ e.printStackTrace(); result=Utils.NETWORK_ERROR;returnresult; }catch(IOExceptione){ e.printStackTrace(); result=Utils.NETWORK_ERROR;returnresult; }returnnull; }該方法返回的字符串即為Server返回的數據,可以是JSON數據,之后通過客戶端對JSON數據進展解析,從而得到View上的數據Android端的MVC設計方式:Model即和服務器同步,使用實體類封裝數據庫中的數據;View層即使用xml文件完成靜態布局,節省代碼;Controller即使用Activity控制Android程序的執行Android實現的類似WEB(B/S)的應用的Cookie保存在Android平臺下,有一個特殊的類android.app.Application,作用范圍類似WEB應用的ApplicationScope,使用它來保存應用程序的當前狀態publicclassAppStatusextendsApplication{publicfinalstaticStringTAG="AppStatus";privateFarmerfarmer;privateFarmerDetialfarmerDetial;privateFarmerIdentityfarmerIdentity;privateList<FBankCard>fbankCards=newArrayList<FBankCard>();privateEnterPriseenterPrise;privateEnterPriseDetialenterPriseDetial;privateList<EBankCard>ebankCards=newArrayList<EBankCard>();publicFarmergetFarmer(){returnfarmer; }publicvoidsetFarmer(Farmerfarmer){this.farmer=farmer; }publicFarmerDetialgetFarmerDetial(){returnfarmerDetial; }publicvoidsetFarmerDetial(FarmerDetialfarmerDetial){this.farmerDetial=farmerDetial; }publicFarmerIdentitygetFarmerIdentity(){returnfarmerIdentity; }publicvoidsetFarmerIdentity(FarmerIdentityfarmerIdentity){this.farmerIdentity=farmerIdentity; }publicList<FBankCard>getFbankCards(){returnfbankCards; }publicvoidsetFbankCards(List<FBankCard>fbankCards){this.fbankCards=fbankCards; }publicEnterPrisegetEnterPrise(){returnenterPrise; }publicvoidsetEnterPrise(EnterPriseenterPrise){this.enterPrise=enterPrise; }publicEnterPriseDetialgetEnterPriseDetial(){returnenterPriseDetial; }publicvoidsetEnterPriseDetial(EnterPriseDetialenterPriseDetial){this.enterPriseDetial=enterPriseDetial; }publicList<EBankCard>getEbankCards(){returnebankCards; }publicvoidsetEbankCards(List<EBankCard>ebankCards){this.ebankCards=ebankCards; }publicbooleanisFarmerStatus(){returnisFarmerStatus; }publicvoidsetFarmerStatus(booleanisFarmerStatus){this.isFarmerStatus=isFarmerStatus; }privatebooleanisFarmerStatus;//當前用戶種類true為農戶.false為企業@OverridepublicvoidonCreate(){super.onCreate(); Log.i(TAG,"onCreate"); }}Android端自定義View的實現:以SearchView為例:這個自定義View繼承自android.widget.RelativeLayout,實現他的三個構造函數publicSearchView(Contextcontext)publicSearchView(Contextcontext,AttributeSetattrs)和publicSearchView(Contextcontext,AttributeSetattrs,intdefStyle),這樣便能通過xml文件調用。之后需要實現protectedvoidonDraw(CanvasCanvas)方法,對整個View進展繪制;最后重寫publicbooleanonTouch(MotionEventevent)方法,對點擊時間監聽響應,即可完成點擊后執行的動作。完整代碼:publicclassSearchViewextendsRelativeLayout{publicstaticfinalStringTAG="SearchView";privateOnClickListeneronClickListener;publicOnClickListenergetOnClickListener(){returnonClickListener;}publicvoidsetOnClickListener(OnClickListeneronClickListener){this.onClickListener=onClickListener;}publicSearchView(Contextcontext){super(context); initBitmap();}publicSearchView(Contextcontext,AttributeSetattrs){super(context,attrs);initBitmap();}publicSearchView(Contextcontext,AttributeSetattrs,intdefStyle){super(context,attrs,defStyle);initBitmap();}publicstaticfinalbooleanD=BuildConfig.DEBUG;//TODOBuildConfig@SuppressWarnings("unused")privatelongTIME_DIFF=1500;int[]lineColor=newint[]{0x7B,0x7B,0x7B};int[]innerCircle0=newint[]{0xb9,0xff,0xFF};int[]innerCircle1=newint[]{0xdf,0xff,0xFF};int[]innerCircle2=newint[]{0xec,0xff,0xFF};int[]argColor=newint[]{0xF3,0xf3,0xfa};privatefloatoffsetArgs=0;privatebooleanisSearching=false;privateBitmapbitmap;privateBitmapbitmap1;privateBitmapbitmap2;publicbooleanisSearching(){returnisSearching; }publicvoidsetSearching(booleanisSearching){this.isSearching=isSearching;offsetArgs=0;invalidate();}privatevoidinitBitmap(){if(bitmap==null){bitmap=Bitmap.createBitmap(BitmapFactory.decodeResource( getResources(),R.drawable.gplus_search_bg));}if(bitmap1==null){bitmap1=Bitmap.createBitmap(BitmapFactory.decodeResource( getResources(),R.drawable.locus_round_click));}if(bitmap2==null){bitmap2=Bitmap.createBitmap(BitmapFactory.decodeResource( getResources(),R.drawable.gplus_search_args));} }@SuppressLint("DrawAllocation")@OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(canvas); canvas.drawBitmap(bitmap,getWidth()/2-bitmap.getWidth()/2, getHeight()/2-bitmap.getHeight()/2,null);if(isSearching){RectrMoon=newRect(getWidth()/2-bitmap2.getWidth(), getHeight()/2,getWidth()/2,getHeight()/2 +bitmap2.getHeight()); canvas.rotate(offsetArgs,getWidth()/2,getHeight()/2); canvas.drawBitmap(bitmap2,null,rMoon,null);offsetArgs=offsetArgs+3; }else{ canvas.drawBitmap(bitmap2,getWidth()/2-bitmap2.getWidth(), getHeight()/2,null);} canvas.drawBitmap(bitmap1,getWidth()/2-bitmap1.getWidth()/2, getHeight()/2-bitmap1.getHeight()/2,null);if(isSearching)invalidate();}@OverridepublicbooleanonTouchEvent(MotionEventevent){switch(event.getAction()){caseMotionEvent.ACTION_DOWN: handleActionDownEvenet(event);returntrue;caseMotionEvent.ACTION_MOVE:returntrue;caseMotionEvent.ACTION_UP:returntrue; }returnsuper.onTouchEvent(event); }privatevoidhandleActionDownEvenet(MotionEventevent){ RectFrectF=newRectF(getWidth()/2-bitmap1.getWidth()/2, getHeight()/2-bitmap1.getHeight()/2,getWidth()/2 +bitmap1.getWidth()/2,getHeight()/2 +bitmap1.getHeight()/2);if(rectF.contains(event.getX(),event.getY())){if(D) Log.d(TAG,"clicksearchdevicebutton");onClickListener.onClick(this);if(!isSearching()){ setSearching(true); }else{ setSearching(false); } } }}數據庫3NF和關聯關系1NF:所謂第一范式〔1NF〕是指數據庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。如果出現重復的屬性,就可能需要定義一個新的實體,新的實體由重復的屬性構成,新實體與原實體之間為一對多關系。在第一范式〔1NF〕中表的每一行只包含一個實例的信息。簡而言之,第一范式就是無重復的列。2NF:第二范式〔2NF〕是在第一范式〔1NF〕的根基上建設起來的,即滿足第二范式〔2NF〕必須先滿足第一范式〔1NF〕。第二范式〔2NF〕要求數據庫表中的每個實例或行必須可以被惟一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的惟一標識。這個惟一屬性列被稱為主關鍵字或主鍵、主碼。3NF:在第二范式的根基上,數據表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函數依賴那么符合第三范式。簡而言之,第三范式就是屬性不依賴于其它非主屬性。所謂傳遞函數依賴,指的是如果存在"A
→
B
→
C"的決定關系,那么C傳遞函數依賴于A。數據庫關系1.企業-農戶擔保關系2.農戶自身身份,經營狀況3.企業自身身份,經營狀況,銀行卡信息4.農戶-企業貸款信息5.農戶-企業還款信息局部界面演示農戶首頁農戶首頁登錄歡迎界面農戶賬戶農戶還款進度農戶貸款進度農戶賬戶農戶還款進度農戶貸款進度農戶申請擔保進度搜索界面農戶申請擔保進度搜索界面搜索結果搜索結果貸款界面貸款界面選擇銀行卡選擇銀行卡選擇銀行卡選擇銀行卡企業主界面農戶還款項企業主界面農戶還款項企業賬戶企業賬戶企業承受貸款企業承受貸款關于App企業承受還款關于App企業承受還款七、系統評價及心得體會1.數據庫設計過程:數據庫設計時,不能著急,要按照明確的額步驟執行:明確需求分析->寫出數據字典->畫數據流圖->畫ER圖->創立實體類->寫SQL腳本。其中,數據庫的ER圖實際上是在模擬數據更新流程,此時可以用到Activiti工作流這個框架來進展梳理,也可以直接使用Activiti工作框架執行各個步驟;Server端開發過程:分層開發,明確數據庫之后,先編寫model層〔domain,vo〕,即使用面向對象的方式映射數據庫,注意,1-1映射使用本類主鍵作為映射類的外鍵;1-N映射在1端使用Set集合映射N端,在N端使用1端的實體類映射;N-N映射使用中間表映射,中間表包含兩端的主鍵作為外鍵,實體類設計時保存兩端的實體類。這種思想符合面向對象的程序設計方法。Service層要明確邏輯關系,要盡量想到各種異常情況,對不同的狀況有不同的反響,這樣客戶端才能做出合理的響應。同時,Service層要使用事務,保證數據庫操作的原子性。Servlet層需要對參數進展簡單處理,類似于Struts2的ModelDriven方式承受參數,將表單數據封裝成一個數據庫中的實體類,對Service層傳遞對象,這樣更符合面向對象的軟件設置方式。另外,在Servlet層注入Service層的對象,在Service層注入Dao層的對象。這種理念符合Spring的Ioc容器理念,可以高效開發程序。Dao層為了簡化JDBC的操作,可以使用Apache的接口操縱數據庫,org.apache,commons.dbutils.QueryRunner,這個類底層實現了JDBC的基本操作,包括PreparedStatment,自動開啟事務,包括事務回滾。查詢過程中,可以使用一下幾個類:org.apache,commons.dbutils.handlers.BeanHandlerorg.apache,commons.dbutils.handlers.BeanListHandlerorg.apache,commons.dbutils.handlers.ScalerHandlerorg.apache,commons.dbutils.handlers.MapHandlerorg.apache,commons.dbutils.handlers.MapListHandler等,可以實現對基本數據類型的簡單封裝,提高程序開發效率。Android開發的代碼重用問題使用Style,xml元素來實現背景動畫等元素。八、參考文獻1.?Tomcat與JavaWeb開發技術詳解〔第二版〕?孫衛琴電子工業出版社2.?瘋狂Java講義〔第二版〕?李剛電子工業出版社3.?瘋狂Android講義〔第二版〕?李剛電子工業出版社4.?MySQL5.6從零開場學(視頻教學版)?劉增杰,李坤清華大學出版社5.?數據庫系統原理與應用?孟彩霞,張榮,喬安全人民郵電出版社6.?輕量級JavaEE企業應用實戰Struts2+Spring3+Hibernate3整合開發?李剛電子工業出版社九、附錄:源代碼Android端代碼:代碼包構造YDB:srcCom.xiyou.ydb.constants〔常量〕BankUtils.java〔銀行卡常量〕HeadViewBgs.java〔頭像文件常量〕Com.xiyou.ydb.data〔數據包〕AppStatus.java〔CS客戶端保存應用程序狀態信息〕Com.xiyou.ydb.model.enterprise〔企業Model包〕EBankCard.java〔企業銀行卡Model〕EnterPrise.java〔企業Model〕EnterPriseDetial.java〔企業詳細信息Model〕Com.xiyou.ybd.model.farmer〔農戶model包〕Farmer.java〔農戶Model〕FarmerDetial.java〔農戶詳細信息Model〕FarmerIdentity.java〔農戶身份信息Model〕FBankCard.java〔農戶銀行卡Model〕Com.xiyou.modek.gurantee〔農戶企業擔保信息Model〕GuranteeStatus.java〔擔保狀態常量〕GurantEnterprise.java〔企業擔保Model〕Com.xiyou.ydb.model.loan〔貸款信息Model〕Loan.java〔貸款信息Model〕LoanStatus.java〔貸款狀態常量〕Repayment.java〔還款Model〕C.enterprise〔企業網絡請求異步實現類〕EnterpriseAcceptGuranteeTasj.java〔企業承受擔?!矱nterpriseAddBankCardTask.java〔企業添加銀行卡〕EnterpriseDetialAddTask.java〔企業添加詳細信息〕EnterpriseFindAllBankCardsTask.java〔企業查找自己所有銀行卡〕EnterpriseGetAllGurantTask.java〔企業查看所有向我申請擔保農戶〕EnterpriseGetAllLoanApplyTask.java〔企業查看所有貸款申請〕EnterpriseGetAllRepaymentTask,java〔企業查看所有還款申請〕EnterpriseLoanFailedTask.java〔企業不同意放貸〕EnterpriseLoanSuccessTask.java〔企業同意放貸〕EnterpriseLoginTask.java〔企業登陸〕EnterprisePendingLoanTask.java〔企業審核貸款〕EnterpriseRegistTask.java〔企業注冊〕EnterpriseRejectGuranteeTask.java〔企業拒絕擔?!矱nterpriseUpdateMoneyTask.java〔企業更新銀行卡金額〕C.farmer〔農戶網絡請求異步實現類〕FarmerAddBankCardTask.java〔農戶添加銀行卡〕FarmerAskGuranteeTask.java〔農戶擔保申請〕FarmerAskLoanTask.java〔農戶向企業申請貸款〕FarmerDetialTask.java〔農戶完善詳細信息〕FarmerFindAllBankCardsTask.java〔農戶查看所有銀行卡〕FarmerGetAllGuranteeEntepriserTask.java〔農戶查看擔保企業〕FarmerGetAllRepaymentTask.java〔農戶查看所有還款信息〕FarmerGetGuranteeInfoTask.java〔農戶查看擔保信息〕FarmerGetLoanProgressTask.java〔農戶查看貸款進度〕FarmerIdentityTask.java〔農戶更新身份信息〕FarmerLoginTask.java〔農戶登錄〕FarmerRigistTask.java〔農戶注冊〕FarmerRepaymentApplyTask.java〔農戶還款申請〕FarmerUpdateMoneyTask.java〔農戶更新銀行卡金額〕FarmerFindEnterpriseTask.java〔農戶查看附近企業〕GetLoanDetialTask.java〔農戶查看貸款詳情〕Com.xiyou.ydb.util〔工具類〕ActionBarUtil.java〔初始化ActionBar〕BitmapUtils.java〔高效處理Bitmap〕DialogUtils.java〔對話框生成〕Utils.java〔請求〕JSONUtils.java〔處理JSON數據〕ToastUtils.java〔產生Toast〕ValidateUtils.java〔表單驗證〕Com.xiyou.ydb.view.adapter〔listview的適配器〕AdPagerAdapter.java〔首頁廣告適配器〕BankListAdapter.java〔銀行列表〕LoanProcessAdapter.java〔貸款進度〕MoreListViewAdapter.java〔更多頁面〕RepaymentProgressAdapter.java〔還款進度〕Com.xiyou.ydbmon〔公共使用的Activity〕AboutActivity.java〔關于〕AddBankCardActivity.java〔添加銀行卡〕BankChooseActivity.java〔選擇銀行卡〕FeedBackActivity.java〔反響〕LoanFlowActivity.java〔貸款流程〕MoreFragment.java〔更多〕MyBankCardActivity.java〔我的銀行卡〕SearchActivity.java〔搜索〕StartUpActivity.java〔歡迎界面〕Com.xiyou.ydb.view.customer〔自定義視圖〕SearchView.java〔搜索框〕Com.xiyou.ydb.view.enterprise〔企業視圖〕EnterpriseDetialActivity.java〔企業上傳詳細信息〕EnterpriseGurantProgressActicity.java〔企業查看擔保申請〕EnterpriseLoanProgressActivity.java〔企業查看貸款信息〕EnterpriseMainActivity.java〔企業主界面〕EnterpriseRegistActivity.java〔企業注冊〕EnterpriseRepaymentProgressActivity.java〔企業查看還款進度〕Com.xiyou.ydb.view.enterprise.fragment〔企業視圖片段〕EnterpriseAccountFragment.java〔企業賬戶信息〕EnterpriseMainFragment.java〔企業主界面〕Com.xiyou.ydb.view.farmer〔農戶視圖〕FarmerDetialActivity.java〔農戶添加詳細信息〕FarmerGuranteeProgressActivity.java〔農戶查看擔保進度〕FarmerIdentityActivity.java〔農戶查看身份信息〕FarmerLoanActivity.java〔農戶查看貸款信息〕FarmerLoanProgressActivity.java〔農戶查看貸款進度〕FarmerMainActivity.java〔農戶主界面〕FarmerRepaymentActivity.java〔農戶查看還款信息〕FarmerRepaymentApplyActivity.java〔農戶查看還款申請〕FarmerRepaymentProgressActivity.java〔農戶查看還款進度〕FarmerRegistActivity.java〔農戶注冊〕SearchGuranteeResultActivity.java〔農戶查看擔保結果〕Com.xiyou.ydb.view.farmer.fragment〔農戶視圖片段〕FarmerMainFragment.java〔農戶主視圖〕FarmerMyAccountFragment.java〔農戶賬戶信息〕Com.xiyou.ydb.view.listener〔監聽器〕AdPagerChangeListener.java〔廣告更新〕resanimloading_progress_anim.xmlstart_up_app_copyright_anim.xmlstart_up_app_icon_anim.xmlstart_up_app_name_anim.xmldrawablebg_button_blue_normal.xmlbg_button_blue_pressed.xmlbg_button_blue_selector.xmlbg_button_orange_normal.xmlbg_button_orange_pressed.xmlbg_button_orange_selector.xmlbg_edittext_focused.xmlbg_edittext_selector.xmlbg_edittext_unfocused.xmlcommon_block_bg_normal.xmlcommon_block_bg_pressed.xmlcommon_block_bg_selector.xmlmain_activity_viewpager_page_circle_selected.xmlmain_activity_viewpager_page_circle_unselected.xmlprogress_left_bg.xmlprogress_middle_bg.xmlprogress_right_faild_bg.xmlprogress_right_succ_bg.xmlradiobottom_main_bg.xmlradiobutton_main_tab_text_color.xmlradiobutton_main_tab1.xmlradiobutton_main_tab2.xmlradiobutton_main_tab3.xmltoast_background.xmllayoutactivity_about.xmlacitivty_add_bank_card.xmlactivity_bank_choose_xmlactivity_enteprise_detial.xmlactivity_enteprise_gurant_progress.xmlactivity_enteprise_loan_progress.xmlactivity_enteprise_main.xmlactivity_enteprise_enterprise_regist.xmlactivity_enteprise_repayment_progress.xmlactivity_farmer_detial.xmlactivity_farmer_gurantee_progress.xmlactivity_farmer_identity,xmlactivity_farmer_loan_progress.xmlactivity_farmer_loan.xmlactivity_farmer_main.xmlactivity_farmer_repayment_apply.xmlactivity_farmer_repayment_process.xmlactivity_farmer_repayment.xmlactivity_feed_back.xmlactivity_loan_flow.xmlactivity_login.xmlactivity_my_bank_card.xmlactivity_register_farmer.xmlactivity_search_gurantee_result.xmlactivity_search.xmlactivity_start_up.xmlactivity_confirme.xmldialog_confirme.xmldialog_progress_loading.xmldialog_update_money.xmlfragment_common_more.xmlfragment_enterprise_account_tab.xmlfragment_enterprise_main_tab.xmlfragment_farmer_account_tab.xmlfragment_farmer_main_tab.xmlitem_bank_choose_bank.xmlitem_common_listview.xmlitem_enterprise_gurantee_progress.xmlitem_enterprise_loan_progress.xmlitem_enterprise_repayment_progress.xmlitem_farmer_repayment_progress.xmlitem_gurantee_enterprise.xmlitem_gurantee_progress.xmlitem_loan_progress.xmlitem_loan_repayment_apply.xmlitem_my_bank_card.xmlitem_repayment_progress.xmltoast_common.xmlvaluescolor.xmldimens.xmlstrings.xmlstyles.xmlAndroidManifest.xml2.詳細代碼:BankUtils.javapackagecom.xiyou.ydb.constants;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importcom.xiyou.ydb.R;/***銀行名+iconid*@authorzc**/publicclassBankUtils{ publicstaticList<Map<String,Object>>banks=newArrayList<Map<String,Object>>(); static{ String[]bankNames=new
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 纖支鏡檢查的護理
- 1歲以下嬰兒培訓課件
- 房地產項目合作開發合同書
- 語文課外閱讀特色課程
- 樂器電商課程介紹
- 規范楷書系統課件
- 德法形策課程介紹
- 河北石油職業技術大學《生物醫學工程整合課程》2023-2024學年第二學期期末試卷
- 人教版數學六年級下冊第二單元《百分數(二)》同步練習含答案
- 遂寧能源職業學院《插畫創作》2023-2024學年第二學期期末試卷
- 挖掘機維護保養記錄
- 化學實驗論文范文(6篇)
- 裝修公司入職勞動合同
- (完整版)施工單位工程竣工報告
- 國家開放大學混凝土結構設計原理形考1-4參考答案
- 贛美版八年級美術下冊《產品包裝設計》教案及教學反思
- LOFT地下車庫設計分析
- 對集成電路工程倫理問題的探討
- 廣告設計、制作、安裝及售后服務方案
- SMM英國建筑工程標準計量規則中文 全套
- GB/T 9263-2020防滑涂料防滑性的測定
評論
0/150
提交評論