西安邮电大学计算机学院数据库课程设计的报告480p两个财富值_第1页
西安邮电大学计算机学院数据库课程设计的报告480p两个财富值_第2页
西安邮电大学计算机学院数据库课程设计的报告480p两个财富值_第3页
西安邮电大学计算机学院数据库课程设计的报告480p两个财富值_第4页
西安邮电大学计算机学院数据库课程设计的报告480p两个财富值_第5页
已阅读5页,还剩405页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

...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四、需求分析易贷宝是一款为面向农户贷款的贷款应用,实行“公司+农户+信贷〞的产业链模式进展申贷。所谓“公司+农户+信贷〞,就是实行农户贷款,企业担保方式。利用企业市场洞察力、信息敏感度和资金实力相对较强的优势,由企业为关联农户贷款提供担保,既把企业与农户的利益严密地联系在一起,又能增强单个农户抗风险能力创新担保形式,实现风险共担。这样利用农户现成生产设备减少了生产成本,公司和周围农民都有了经济效益。通过对农业龙头企业进展支持,以及对形成农业产业链的前提——农户种植、收购、加工等上下游提供相应的信贷支持、提供信息服务、发放惠农卡等,不仅满足企业开展的资金需求还对上下游客户提供延伸的金融服务,这样银行也能降低风险,形成农户、企业、银行等多赢局面。“易贷宝〞是一款集贷款服务、供需资讯于一体的金融类应用程序。很好的运用了“公司+农户+信贷〞这一模式。具体流程如下:农产品收购企业向银行申请贷款,并按照企业和银行协议,棉花收购企业需将这笔款项中的一定比例借给有需求的农户,用于农户的扩大再生产,并负责向农户提供生产技术指导和产品收购。这笔借款以农户在企业中的订单做抵押。农户将其现在或将来生产的农场品销售给企业,作为获得贷款的对价和归还贷款的方式,最后由企业向银行归还贷款本息。“易贷宝〞创新了信贷管理方式,依托产业化龙头企业,把银行贷款发放和农业产业化有机地结合在一起。“易贷宝〞贷款的设计理念是通过产业链贷款资金封闭运行化解信贷资金的风险,从而解决农户贷款难、担保难的问题。同时立足于简化企业贷款流程,减少企业款项下达时间,为企业提供优惠利率。同时利用银行做资金融通,以“公司+农户+信贷〞的模式实现三方共赢。具体的需求分析:农户注册登陆:用户名、用户密码、用户密码确认、手机号。注册之后出现用户信息,可以暂不填写,但是在申请贷款之前必须得填写用户信息:身份认证:中文姓名、身份证号、出生年月、现居地址经营状况:种植行业、种植规模、种植年限、年投入成本、年收入、贷款用途银行卡号:卡号、余额〔贷款对象须从事种养殖业,并且有过种植经历,即年限不可为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)还款工程六、系统的实施系统的实现方法,应用程序的编制方法,重要代码的说明。〔可以给出流程图〕系统的实现方法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〔企业承受担保〕EnterpriseAddBankCardTask.java〔企业添加银行卡〕EnterpriseDetialAddTask.java〔企业添加详细信息〕EnterpriseFindAllBankCardsTask.java〔企业查找自己所有银行卡〕EnterpriseGetAllGurantTask.java〔企业查看所有向我申请担保农户〕EnterpriseGetAllLoanApplyTask.java〔企业查看所有贷款申请〕EnterpriseGetAllRepaymentTask,java〔企业查看所有还款申请〕EnterpriseLoanFailedTask.java〔企业不同意放贷〕EnterpriseLoanSuccessTask.java〔企业同意放贷〕EnterpriseLoginTask.java〔企业登陆〕EnterprisePendingLoanTask.java〔企业审核贷款〕EnterpriseRegistTask.java〔企业注册〕EnterpriseRejectGuranteeTask.java〔企业拒绝担保〕EnterpriseUpdateMoneyTask.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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论