




已阅读5页,还剩480页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西 安 邮 电 大 学 (计算机学院)综合应用软件课程设计报告题 目:易贷宝-企业-银行-农民贷款系统 专业名称: 计算机科学与技术班 级: 计科1201 学生姓名: 学号(8位): 指导教师: 乔平安起止时间: 2014年11月17日2014年11月28日一、课程设计目的在数据库原理课程基础上,培养综合运用数据库知识的能力。学会数据库的设计、规划以及应用程序的开发和调试,掌握客户机/服务器体系结构,学会大型数据库的工作模式。大型数据库管理系统存放于服务器,数据库放在服务器上,学生在客户机上开发应用程序访问服务器上的数据库,并完成应用系统所要求的各项功能,应用程序的开发需要采用当前流行的新软件。二、课程设计内容数据库的设计根据所选的题目,经过调查研究,构建合理的数据库。首先构建基本表以及表和表之间的联系,在此基础上构建视图和索引表。此次选题共建立11张表,各表之间外键关联极强。 服务器的组织根据建立的基本表、视图和索引表搭建服务器。前端开发工具:采用JAVA进行编写 服务器端:JDK 1.7 , mysql 5.6 开发应用程序利用所学的新软件开发工具进行应用程序的开发。 连接、调试。三、软硬件环境及系统所采用的体系结构系统的体系结构为C/S结构1.前台开发工具Eclipse+ADT 22.0.3+GenyMotion开发语言为:Java(使用JDK1.6)开发环境:Android4+Windows8 x642. 后台开发工具:MyEclipse2014+Tomcat7.0+MySQL5.6+SQLYog开发语言为:Java(使用JDK1.7),SQL开发环境为:Windows7 x64四、需求分析易贷宝是一款为面向农户贷款的贷款应用,实行“公司+农户+信贷”的产业链模式进行申贷。所谓“公司+农户+信贷”,就是实行农户贷款,企业担保方式。利用企业市场洞察力、信息敏感度和资金实力相对较强的优势,由企业为关联农户贷款提供担保,既把企业与农户的利益紧密地联系在一起,又能增强单个农户抗风险能力创新担保形式,实现风险共担。这样利用农户现成生产设备减少了生产成本,公司和周围农民都有了经济效益。通过对农业龙头企业进行支持,以及对形成农业产业链的前提农户种植、收购、加工等上下游提供相应的信贷支持、提供信息服务、发放惠农卡等,不仅满足企业发展的资金需求还对上下游客户提供延伸的金融服务,这样银行也能降低风险,形成农户、企业、银行等多赢局面。 “易贷宝”是一款集贷款服务、供需资讯于一体的金融类应用程序。很好的运用了“公司+农户+信贷”这一模式。具体流程如下:农产品收购企业向银行申请贷款,并按照企业和银行协议,棉花收购企业需将这笔款项中的一定比例借给有需求的农户,用于农户的扩大再生产,并负责向农户提供生产技术指导和产品收购。这笔借款以农户在企业中的订单做抵押。农户将其现在或将来生产的农场品销售给企业,作为获得贷款的对价和偿还贷款的方式,最后由企业向银行偿还贷款本息。“易贷宝” 创新了信贷管理方式,依托产业化龙头企业,把银行贷款发放和农业产业化有机地结合在一起。“易贷宝”贷款的设计理念是通过产业链贷款资金封闭运行化解信贷资金的风险,从而解决农户贷款难、担保难的问题。同时立足于简化企业贷款流程,减少企业款项下达时间,为企业提供优惠利率。同时利用银行做资金融通,以“公司农户+信贷”的模式实现三方共赢。具体的需求分析:1. 农户注册登陆:用户名、用户密码、用户密码确认、手机号。注册之后出现用户信息,可以暂不填写,但是在申请贷款之前必须得填写2. 用户信息:身份认证:中文姓名、身份证号、出生年月、现居地址 经营状况:种植行业、种植规模、种植年限、年投入成本、年收入、贷款用途银行卡号: 卡号、余额 (贷款对象须从事种养殖业,并且有过种植经历,即年限不可为0。规模、年限、成本收入、贷款用途作为银行放贷金额的考量)3. 担保企业信息:企业名称、企业注册号、企业地址、企业电话、申请进度(银行线上电话核实,符合后根据企业地址线下审核,审查交易来往记录等内容)4.贷款申请:申请农户、贷款金额、贷款期限、申请企业、状态、申请日期、用途、应还日期(必须完善用户信息之后才能在线申请,提交申请后根据用户信息进行审核)5.进度查询:查询用户款项审核进度。有未审核,正在审核,审核未通过三种情况。未通过审核列有未审核通过的原因。6.在线寻找担保企业:可以通过定位寻找附近的农企,也可搜索企业,并实现线上沟通。发送担保申请。7.申请记录:申请记录中有农户贷款的申请记录,记录农户贷款的金额,贷款日期,款项状态(已还款,未还款)显示到期偿还金额,应还款的日期8.还款:产品申请 数量 单价 合计金额 提交还款申请 等待企业线上核实(农户提交申请后,在线下交易的同时企业完成线上核实)9.邀请好友:邀请通讯录中的好友。方式为短信。10.平台介绍:介绍易贷宝,语言通俗易懂关于:简单介绍开发团队意见反馈:提交文字信息客服电话:一键拨打客服电话11.企业注册:用户名、密码、密码确认、企业名称、注册号(注册号必须输入完整信息,名称可以模糊匹配)成立日期、登记机关、地址、经营范围、企业电话 12.我的消息:查看农户的消息,并在线沟通。13.查看申请:查看向自己申请的农户的所有信息,线下核实之后线上通过担保申请。通过或拒绝担保申请的农户。通过的农户保存在我的担保农户中。 查看农户的还款申请,在交易的同时通过还款验证,农户的申请记录中款项更新为已还款。14.我的担保农户:查看所担保农户的所有信息、审核进度、并实现交流。五、系统设计1.系统结构图(功能模块图)见附件一2.后台接口:1.农民注册servlet/FarmerRegistServletString name农民姓名String password密码String phone农民电话返回值name_has_registed有信息姓名,注册失败phone_has_registed有重复电话,注册失败regist_success注册成功regist_failed注册失败2.农民资料完善http:/localhost:8080/ servlet/FarmerDetialServletInteger fid农民idString plantIndestury种植行业String plantScale种植规模Integer plantYear种植年限Float annualInvestment年投入Float annualEarning年收入String loanUse贷款用途返回值message_save_success信息保存成功message_has_certained信息已确认过save_failed保存失败3.农民个人信息完善http:/localhost:8080/ servlet/FarmerIdentityServletInteger fid农民idcnNAME中文姓名identityNumber农民身份证号birthday生日address住址返回值message_save_success信息保存成功message_has_certained信息已确认过save_failed保存失败4.农民持有银行卡情况http:/localhost:8080/ servlet/ servlet/FBankCardServletInteger fid农民idString bankName银行名称String cardNumber银行卡号返回值cardNumber_has_certained银行卡已存在message_save_success信息保存成功message_has_save信息保存(超过一张卡)save_failed保存失败5.企业注册http:/localhost:8080/ servlet/ servlet/ EnterpriseServletString name企业登录名String password登录密码String enterpriseName企业名称String registNumber企业注册号返回结果name_has_registed存在相同注册名,注册失败enterpriseName_has_registed存在相同企业名,注册失败registNumber_has_registed存在相同注册号,注册失败regist_success注册成功regist_failed注册失败6.企业信息完善/servlet/EnterpriseDetialServletInteger eid企业idString establishDate成立日期String registAuthorith登记机关String businessScope经营范围String phoneNumber企业电话返回结果message_save_success信息插入成功message_has_certained信息已插入save_failed插入失败7.企业持有银行卡情况http:/localhost:8080/ servlet/ servlet/EBankServletInteger eid企业idString bankName银行名称String cardNumber银行卡号返回值number_has_certained银行卡已存在message_save_success信息保存成功message_has_save信息保存(超过一张卡)message_save_failed保存失败8.农民登陆http:/localhost:8080/ servlet/FarmerLoginServletString name农民姓名String password密码返回结果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:100009.企业登陆http:/localhost:8080/servlet/EnterpriseLoginServletString name企业登录名String password登录密码返回结果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:600000010.更新农民银行卡金额/servlet/FarmerUpdateMoneyServletInteger id银行卡idFloat money钱数返回结果money_less_failed所要取出的钱大于已有的钱,取钱失败get_money_success取钱成功save_money_success存钱成功update_money_failed更新失败11.更新企业银行卡金额/servlet/EnterpriseUpdateMoneyServletInteger id银行卡idFloat money钱数返回结果money_less_failed所要取出的钱大于已有的钱,取钱失败get_money_success取钱成功save_money_success存钱成功update_money_failed更新失败12.查询企业银行卡信息/servlet/EBankCardDetialServletInteger eid企业id返回结果no_bankcard无银行卡信息id:1,eid:1,bankName:123,cardNumber:123,money:5930000,id:2,eid:2,bankName:234,cardNumber:23456,money:800000013.查询农民银行卡信息/servlet/FBankCardDetialServletInteger fid农民id返回结果no_bankcard无银行卡信息id:1,fid:1,bankName:123,cardNumber:123,money:11000014.模拟在线查找企业(产生10个eid随机数,返回enterprise,enterprisedetial中的全部内容)/servlet/FindEnterpriseServlet返回结果id:1,name:haha,enterpriseName:123,registNumber:123,businessScope:123,phoneNumber:123,establishDate:123,.随机返回10个企业及其信息15. 用户提出担保申请/servlet/GurantEnterpriseServletInteger fid农民idInteger eid企业id返回结果gurant_success申请提出成功gurant_failed申请提出失败16.企业接受农户担保申请/servlet/UpdateGurantDateSuccessServletInteger id担保信息id返回结果update_success更新申请信息为接受成功update_failed更新申请信息为接受失败17.企业不接受农户担保申请/servlet/UpdateGurantDateFailedServletInteger id担保信息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/FarmerAllLoanServletInteger fid返回结果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:723.农户提出还款/servlet/FarmerRepaymentServletInteger fid农民idInteger eid企业idInteger fbid农户选择还款的银行卡idInteger lid借款项idString repaymentContent还款内容返回结果reapply_success更改状态为农民提出还款成功reapply_failed更改状态为农民提出还款失败24.企业正在审核还款/servlet/LoanRependingServletInteger id还款id返回结果update_loan_repending_success更改状态为企业正在审核还款成功update_loan_repending_failed更改状态为企业正在审核还款失败25.企业决定还款成功/servlet/RepaySuccessServletInteger id还款idInteger ebid企业银行卡id返回结果update_loan_success_success更改状态为企业决定还款成功成功update_loan_success_failed更改状态为企业决定还款成功失败26.农户查看所有还款信息27.农户查询全部担保信息/servlet/FarmerGetAllGurantInfoServletInteger fid农户id返回结果no_data没有数据JSON:id:1,askDate:2014-11-17,status:1,enterprise:enterpriseName:dell担保进度数据28.企业查询所有担保信息/servlet/EnterpriseGetAllGurantApplyServletInteger eid企业id返回结果(no_data没有数据JSON:id:3,askDate:2014-11-17,cnName:zzzc,identityNumberaddress:xian changan此处返回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)还款项目六、系统的实施系统的实现方法,应用程序的编制方法,重要代码的说明。(可以给出流程图)1. 系统的实现方法Server端使用JDBC+Apache的开源接口进行数据库操作,同时使用了传统的Servlet+Service+Dao设计,实现了事务管理,Servlet层实现参数接收和信息发送接收,Service实现业务逻辑的处理,Dao层直接操纵数据库2. 数据库的设计软件的设计采用面向对象的实现方式,所以数据库要遵循这一思想,先不编写数据库SQL脚本,先设计实体类(对应服务器代码的com.xiyou.ydb.model层下的Entity)3. Server端对请求参数的处理关键代码如下:public class EncodingFilter implements Filter private String charset = UTF-8;Overridepublic void destroy() Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException HttpServletRequest req = (HttpServletRequest) request;if(req.getMethod().equalsIgnoreCase(GET) if(!(req instanceof GetRequest) req = new GetRequest(req, charset);/处理get请求编码 else req.setCharacterEncoding(charset);/处理post请求编码chain.doFilter(req, response);Overridepublic void init(FilterConfig fConfig) throws ServletException String charset = fConfig.getInitParameter(charset);if(charset != null & !charset.isEmpty() this.charset = charset;使用一个过滤器,实现全站请求码转码,方便中文数据的发送和接受4. Server端数据库连接方式为了提高Server的系统吞吐量,采用C3P0数据库连接池,C3P0依赖的jar包有c3p0-0.9.2-pre1.jar和mchange-commons-0.2.jar,并且需要在classpath下添加c3p0数据库的连接信息c3p0-config.xml: com.mysql.jdbc.Driverrootroot3102105. Android网络请求实现方式:原则上手写,不使用GitHub上的开源项目,不使用别人的jar包。关键代码:Http请求/* * 用于POST请求生成字符串的方法 * * param url * (请求的地址) * param params * (POST请求参数) * return 请求结果 */public static String queryStringForPost(String url,Map rawParams) HttpPost request = new HttpPost(url);List params = null;if (rawParams != null) params = new ArrayList();for (String key : rawParams.keySet() params.add(new BasicNameValuePair(key, rawParams.get(key);try if (params != null) request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8); catch (UnsupportedEncodingException e1) e1.printStackTrace();String result = null;try HttpResponse response = new DefaultHttpClient().execute(request);if (response.getStatusLine().getStatusCode() = 200) System.out.println(requese successful);result = EntityUtils.toString(response.getEntity(), utf-8);System.out.println(result- + result);return result; catch (ClientProtocolException e) e.printStackTrace();result = HttpUtils.NETWORK_ERROR;return result; catch (IOException e) e.printStackTrace();result = HttpUtils.NETWORK_ERROR;return result;return null;该方法返回的字符串即为Server返回的数据,可以是JSON数据,之后通过客户端对JSON数据进行解析,从而得到View上的数据6. Android端的MVC设计方式:Model即和服务器同步,使用实体类封装数据库中的数据;View层即使用xml文件完成静态布局,节省代码;Controller即使用Activity控制Android程序的执行7. Android实现的类似WEB(B/S)的应用的Cookie保存在Android平台下,有一个特殊的类android.app.Application,作用范围类似WEB应用的ApplicationScope,使用它来保存应用程序的当前状态public class AppStatus extends Application public final static String TAG = AppStatus;private Farmer farmer;private FarmerDetial farmerDetial;private FarmerIdentity farmerIdentity;private List fbankCards = new ArrayList();private EnterPrise enterPrise;private EnterPriseDetial enterPriseDetial;private List ebankCards = new ArrayList();public Farmer getFarmer() return farmer;public void setFarmer(Farmer farmer) this.farmer = farmer;public FarmerDetial getFarmerDetial() return farmerDetial;public void setFarmerDetial(FarmerDetial farmerDetial) this.farmerDetial = farmerDetial;public FarmerIdentity getFarmerIdentity() return farmerIdentity;public void setFarmerIdentity(FarmerIdentity farmerIdentity) this.farmerIdentity = farmerIdentity;public List getFbankCards() return fbankCards;public void setFbankCards(List fbankCards) this.fbankCards = fbankCards;public EnterPrise getEnterPrise() return enterPrise;public void setEnterPrise(EnterPrise enterPrise) this.enterPrise = enterPrise;public EnterPriseDetial getEnterPriseDetial() return enterPriseDetial;public void setEnterPriseDetial(EnterPriseDetial enterPriseDetial) this.enterPriseDetial = enterPriseDetial;public List getEbankCards() return ebankCards;public void setEbankCards(List ebankCards) this.ebankCards = ebankCards;public boolean isFarmerStatus() return isFarmerStatus;public void setFarmerStatus(boolean isFarmerStatus) this.isFarmerStatus = isFarmerStatus;private boolean isFarmerStatus ;/当前用户种类 true为农户.false为企业Overridepublic void onCreate() super.onCreate();Log.i(TAG, onCreate);8. Android端自定义View的实现:以SearchView为例:这个自定义View继承自android.widget.RelativeLayout,实现他的三个构造函数public SearchView(Context context)public SearchView(Context context,AttributeSet attrs)和public SearchView(Context context,AttributeSet attrs,int defStyle),这样便能通过xml文件调用。之后需要实现protected void onDraw(CanvasCanvas)方法,对整个View进行绘制;最后重写public boolean onTouch(MotionEvent event)方法,对点击时间监听响应,即可完成点击后执行的动作。完整代码:public class SearchView extends RelativeLayout public static final String TAG = SearchView;private OnClickListener onClickListener;public OnClickListener getOnClickListener() return onClickListener;public void setOnClickListener(OnClickListener onClickListener) this.onClickListener = onClickListener;public SearchView(Context context) super(context);initBitmap();public SearchView(Context context, AttributeSet attrs) super(context, attrs);initBitmap();public SearchView(Context context, AttributeSet attrs, int defStyle) super(context, attrs, defStyle);initBitmap();public static final boolean D = BuildConfig.DEBUG;/TODO BuildConfigSuppressWarnings(unused)private long TIME_DIFF = 1500;int lineColor = new int 0x7B, 0x7B, 0x7B ;int innerCircle0 = new int 0xb9, 0xff, 0xFF ;int innerCircle1 = new int 0xdf, 0xff, 0xFF ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防水施工完工验收协议
- 进度款审核与造价咨询协议
- 货车租赁与售后服务合同
- 顾客满意度评价协议
- 湘教版八年级下册地理课外考察计划
- 橱窗广告印刷合同
- 科技创新孵化计划及措施
- 购房者权益维护协议
- 教育科研人员个人基本功提升计划
- 三年级班主任下学期学生自主管理计划
- 施工现场安全隐患检查表
- 酒店业大数据分析与精准营销应用
- 《太阳升起来了》课件
- 近五年重庆中考数学真题及答案2024
- 扫地机器人结构设计说明书
- 汽车清洁保养服务合同示范文本
- 【基于单片机的电梯控制系统设计7000字(论文)】
- HY/T 0379-2023赤潮灾害风险评估与区划导则
- 郑和完整版本
- 2024年安庆市金融控股集团有限公司招聘笔试参考题库附带答案详解
- SJ-T 11841.2.2-2022 显示系统视觉舒适度 第2-2部分:平板显示-蓝光测量方法
评论
0/150
提交评论