




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2010-2011学年第二学期高级应用课程设计报告项 目 组:专 业: 计算机科学与技术 学 院:指导教师:时 间:2011年7月11日-2011年7月22日目 录一、团队构成及分工1二、进度计划2三、需求分析33.1 需求描述33.2 用况建模3四、项目功能设计44.1 总体设计44.2 算法设计5五、项目数据设计85.1 数据逻辑设计85.2 数据表设计9六、系统实现14七、关键代码22八、课程设计总结47一、团队构成及分工团队: X-Group职能成员任务分工成绩组长总体设计、编码、调试、测试组员编码、设计页面编码、数据库设计文档、数据库设计 指导教师签字: 年 月 日二、进度计划序号任
2、务名称开始时间完成时间持续时间1分工、系统设计、系统原型搭建7-117-13两天2模块编码7-137-19六天3进行系统测试7-197-20一天4程序的打包和发布、整理文档7-207-21一天5撰写课程设计报告、答辩7-217-22一天三、需求分析3.1 需求描述住房公积金贷款管理交易系统从审批开始到资金划拨结束需要经过的几个状态为:审批通过、贷款开户、抵押确认、打印放款通知书、资金划拨。个贷审批:根据借款人的已做审批情况、历史贷款情况、购房情况、本次贷款申请情况、借款人自然情况(性别、年龄)等,系统自动做出“贷与不贷”“贷的金额年限”判断,若不能贷,还需逐条列示原因;若能贷申请金额年限的贷款
3、则产生贷款审批记录(标记为未审批通过)。贷款开户:产生贷款合同等基本信息。抵押登记确认:经抵押登记机构办理好抵押手续后,做本交易,更新“抵押库信息”,抵押状态为“已登记”。本交易后,方可打印放款通知书,进行贷款发放。放款通知书打印:做本交易产生放款通知书,把通知书拿给会计科做贷款资金划拨。贷款资金划拨:对公积金贷款资金进行划拨,生成还款计划。3.2 用况建模图3.1 用例图四、项目功能设计4.1 总体设计柜员登录个贷审批贷款开户放款通知书打印抵押登记图4.1 层次方框图4.2 算法设计1.登录后,先提示输入身份证号,最多可输入两个人的身份证号,一个人的身份证号不可输入两次。通过后,输入一个身份
4、证号,系统自动识别为单职工贷款,输入两个身份证号,系统自动识别为双职工贷款。若不能贷,需逐条列出不能贷的原因。图4.2个贷审批活动图2. 输入贷款审批号,提取贷款审批信息,核对后,可确认开户,生成分户帐信息(贷款利率以当前执行利率为准)。图4.3贷款开户活动图3.经抵押登记机构办理好抵押手续后,做本交易,更新“抵押库信息”,抵押状态为“已登记”。本交易后,方可打印放款通知书,进行贷款发放。图4.4 抵押登记活动图4.按委托银行产生对应银行放款通知书图4.5放款通知书打印活动图五、项目数据设计5.1 数据逻辑设计图5.1 数据库表5.2 数据表设计表5-1用户信息表列名中文名列类型列注释可否为空
5、USERID用户号DOUBLE主键自增不可以USERNAME用户姓名CHARACHER不可以USERPASS用户密码DOUBLE不可以LIMIT权限CHARACHER不可以表5-2贷款审批信息表列名中文名列类型列注释可否为空ID主键号INT不可以APPRNUM贷款审批号CHAR(9)不可以APPRFLAG审批状态CHAR(2)01:审批通过02:开户03:抵押登记确认04:打印放款通知书05:资金划拨不可以VALID有效性标志CHAR(1)1:有效2:无效不可以AGENCYBANK代办银行CHAR(2)不可以MULTILOAN单双人贷款标志CHAR(1)1:单人贷款2:双人贷款不可以LOANT
6、YPE贷款类型CHAR(2)01:商品房03:经适房05:存量房07:安置房不可以PROTONUM开发商项目协议号CHAR(9)可以POLENUM栋号CHAR(4)可以ASSURETYPE担保方式CHAR(1)1:抵押2:担保不可以ASSURECOMP担保公司CHAR(4)可以PAYEE收款人CHAR(80)不可以BANKNAME开户银行CHAR(40)不可以BANKACCNUM银行账号CHAR(30)不可以RETLOANCYCLE还款周期CHAR(1)1:月2:季3:年9:其他不可以RETLOANMODE还款方式CHAR(1)1:等额本息 2:等额本金 3:等本等息 4:利随本清不可以APP
7、RLOANSUM审批的金额DECIMAL(16,2)不可以APPRLOANTERM审批的年限INT不可以LOANPERCENT贷款成数DECIMAL(16,2)可以BUYHOUSETYPE购房类型CHAR(1)1:现房2:期房不可以HOUSEADDR购房地址CHAR(80)不可以BUYHOUSEAREA购房面积DECIMAL(16,2)不可以HOUSESTRUCT房屋结构CHAR(1)1:砖混2:钢混3:混合4:框架5:剪力墙6:框剪7:其他不可以BUYHOUSEAMT购房房款总额DECIMAL(16,2)不可以ACCNAME1借款人一姓名CHAR(40)不可以CERID1借款人一证件号CHA
8、R(20)不可以SEX1借款人一性别CHAR(1)0:男1:女不可以AGE1借款人一年龄INT不可以ACCUNITNAM1借款人一单位CHAR(100)可以INAMT1借款人一收入DECIMAL(16,2)可以HANDSET1借款人一手机CHAR(20)可以UNITPHONE1借款人一单位电话CHAR(20)可以LINKADDRE1借款人一联系住址CHAR(60)异地、铁路专用可以ACCNAME2借款人二姓名CHAR(40)可以CERID2借款人二证件号CHAR(20)可以SEX2借款人二性别CHAR(1)0:男1:女可以AGE2借款人二年龄INT可以ACCUNITNAM2借款人二单位CHAR
9、(100)可以INAMT2借款人二收入DECIMAL(16,2)可以HANDSET2借款人二手机CHAR(20)可以UNITPHONE2借款人二单位电话可以LINKADDRE2借款人二联系住址CHAR(60)可以OP柜员CHAR(4)不可以TRANSDATE审批日期DATE不可以FREEUSE1备用1CHAR(40)可以FREEUSE2备用2INT可以表5-3抵押物信息表列名中文名列类型列注释可否为空ASSUREID主键号INT不可以ASSURETYPE担保方式CHAR(1)1:保证担保2:抵押担保不可以ASSURECOMP担保公司CHAR(4)01:快捷担保02:平安担保03:盛大担保04:
10、安泰担保可以MORVALUE抵押价值DOUBLE商品房 经适房时自动默认为购房款总额其他房型需要手工输入(单位:元)不可以MORADDRESS抵押物地址CHAR(60)不可以COMPLETEDATE竣工日期CHAR(10)当购买的是存量房时,需要录入该字段可以OWNERNAME产权人姓名CHAR(40)不可以IDCARD产权人身份证号CHAR(18)不可以OWNERUNITNAM产权人单位名称CHAR(60)不可以OWNERPHONE产权人电话CHAR(20)不可以ACCNAME1共有人1姓名CHAR(40)不可以CERID1共有人1身份证号CHAR(18)不可以ACCUNITNAM1共有人1
11、单位名称CHAR(60)不可以UNITPHONE1共有人1电话CHAR(20)不可以ACCNAME2共有人2姓名CHAR(40)不可以CERID2共有人2身份证号CHAR(18)不可以ACCUNITNAM2共有人2单位名称CHAR(60)不可以UNITPHONE2共有人2电话CHAR(20)不可以表5-4贷款开户信息表列名中文名列类型列注释可否为空ID主键号INT不可以APPRNUM贷款审批号CHAR(9)不可以ACCNAME1借款人一姓名CHAR(40)不可以CERID1借款人一身份证号CHAR(20)不可以LOANBALANCE贷款余额DECIMAL(16,2)不可以LOANTERM贷款年
12、限INT不可以MONPROFIT执行月利率DOUBLE5年以下(含):4.20%5年以上: 4.70%以上给出的是年利率月利率用年利率/12即可得到不可以六、系统实现1、柜员登录界面,柜员输入用户名(shell)、密码(123)进入系统登录页面。如图6-1:图6-1登录2、成功登录后,进入主页面。如图6-2:图6-2主页3、输入身份证号,进入个贷审批页面。如图6-3:图6-3申请信息页面4、输入相关信息,进入借款人信息页面。如图6-4:图6-4借款人信息页面5、输入相关信息,进入购房情况页面。如图6-5:图6-5购房情况页面6、输入相关信息,进入抵押物情况页面。如图6-6:图6-6抵押物情况页
13、面7、输入相关信息,提交,系统提示是否审批成功。如图6-7:图6-7审批成功页面8、点击贷款开户,进入开户页面。如图6-8:图6-8贷款开户页面9、输入审批号,进入贷款开户信息核对页面(系统自动输出)。如图:6-9图6-9开户信息核对页面10、核对信息,确认无误,提交后显示是否成功。如图6-10:图6-10抵押登记成功页面11、点击抵押登记,进入抵押登记确认页面。如图6-11:图6-11抵押登记确认页面12、输入信息,进入抵押登记信息核对页面。如图6-12:图6-12抵押登记信息核对页面13、核对信息,确认无误,提交后显示是否成功。如图6-13:图6-13抵押成功页面14、点击放款通知书打印,
14、进入放款通知书打印页面。如图6-14:图6-14放款通知书打印页面15、选择银行,进入信息显示页面。如图:6-15图6-15放款通知书信息页面七、关键代码1、LoginAction.Javapackage fund.action;import fund.service.UserFacade;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import fund.domain.User;public class LoginAction extends ActionS
15、upport private String username;private String userpass;public String getUsername() return username;public void setUsername(String username) this.username = username;public String getUserpass() return userpass;public void setUserpass(String userpass) this.userpass = userpass;private UserFacade userFa
16、cade;public UserFacade getUserFacade() return userFacade;public void setUserFacade(UserFacade userFacade) this.userFacade = userFacade;public String login() boolean flag = false;User user=new User();user.setUsername(getUsername();user.setUserpass(getUserpass();try flag = userFacade.login(user);/ fla
17、g=true说明从数据库中查询出了与页面获得的帐号密码相匹配的结果if (flag = true) / 将登录用户信息存入sessionActionContext.getContext().getSession().put("op", user.getUsername();return "loginSuccess" else return "loginError" catch (Exception e) e.printStackTrace();return "Error"2、CheckAction.javapack
18、age fund.action;import java.sql.SQLException;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import fund.service.CheckFacade;public class CheckAction extends ActionSupportprivate String cerid1;private String cerid2;public String getCerid1() return cerid1;pub
19、lic void setCerid1(String cerid1) this.cerid1 = cerid1;public String getCerid2() return cerid2;public void setCerid2(String cerid2) this.cerid2 = cerid2;private CheckFacade checkFacade;public CheckFacade getCheckFacade() return checkFacade;public void setCheckFacade(CheckFacade checkFacade) this.che
20、ckFacade = checkFacade;public String check()ActionContext.getContext().getSession().put("cerid11", getCerid1();ActionContext.getContext().getSession().put("cerid2", getCerid2();if(!getCerid1().equals("")&&getCerid2().equals("")|(!getCerid1().equals(&qu
21、ot;")&&getCerid2().equals("")if(getCerid1().length()=15|getCerid1().length()=18|getCerid2().length()=15|getCerid2().length()=18)int flag;try flag = checkFacade.Check(cerid1, cerid2);if(flag=1)return "Success1"return "checkfail" catch (SQLException e) e.prin
22、tStackTrace();return "Error"else return "Error"else if(!getCerid1().equals("")&&!getCerid2().equals("")if(getCerid1().length()=15|getCerid1().length()=18)&&(getCerid2().length()=15|getCerid2().length()=18)&&(!getCerid1().equals(getCerid
23、2()return "Success2"else return "Error"elsereturn "Error"3、CheckActionDAOImpl.javapackage fund.persistence;import java.sql.SQLException;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class CheckDAOImpl extends Hibernat
24、eDaoSupport implements CheckDAOpublic int Check(String cerid1, String cerid2) throws SQLException List l1=getHibernateTemplate().find("select o.apprloansum from Open o where o.cerid1=?",cerid1);if(l1.size()>0)Double apprloansum1=(Double)l1.get(0);if(apprloansum1>0)return 0; /个人不可以有未还
25、清的公积金贷款(贷款余额大于零)return 1;4、ApplyAction.javapackage fund.action;import com.opensymphony.xwork2.ActionSupport;import fund.domain.Apply;import fund.service.ApplyFacade;import fund.service.ApplyFacadeImpl;public class ApplyAction extends ActionSupportprivate String relation;private String loantype;priva
26、te Double appcount;private int appyearlimit;private String retloanmode;private String retloancycle;private String bankname;public String getRelation() return relation;public void setRelation(String relation) this.relation = relation;public String getLoantype() return loantype;public void setLoantype
27、(String loantype) this.loantype = loantype;public Double getAppcount() return appcount;public void setAppcount(Double appcount) this.appcount = appcount;public int getAppyearlimit() return appyearlimit;public void setAppyearlimit(int appyearlimit) this.appyearlimit = appyearlimit;public String getRe
28、tloanmode() return retloanmode;public void setRetloanmode(String retloanmode) this.retloanmode = retloanmode;public String getRetloancycle() return retloancycle;public void setRetloancycle(String retloancycle) this.retloancycle = retloancycle;public String getBankname() return bankname;public void s
29、etBankname(String bankname) this.bankname = bankname;public ApplyFacade getApplyFacade() return applyFacade;public void setApplyFacade(ApplyFacade applyFacade) this.applyFacade = applyFacade;private ApplyFacade applyFacade;public ApplyAction() applyFacade= new ApplyFacadeImpl();public String apply()
30、int flag;Apply apply=new Apply();apply.setRelation(getRelation();apply.setLoantype(getLoantype();apply.setAppcount(getAppcount();apply.setAppyearlimit(getAppyearlimit();apply.setRetloanmode(getRetloanmode();apply.setRetloancycle(getRetloancycle();apply.setBankname(getBankname();try if(getAppyearlimi
31、t()>30)return "Error"flag = applyFacade.apply(apply);if (flag = 1) /ActionContext.getContext().getSession().put("op", user);return "applySuccess" else if(flag=2)return "applyError2"else return "applyError" catch (Exception e) e.printStackTrace();r
32、eturn "Error"5、ApplyDAOImpl.javapackage fund.persistence;import java.sql.SQLException;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.opensymphony.xwork2.ActionContext;import fund.domain.Apply;public class ApplyDAOImpl extends HibernateDaoSupport implements
33、 ApplyDAOpublic int apply(Apply apply) throws SQLException Double appc=apply.getAppcount();if(appc>200000)return 2; /单身职工最高贷款金额为(20)万元ActionContext.getContext().getSession().put("apply",apply);return 1;6、AssureAction.javapackage fund.action;import com.opensymphony.xwork2.ActionSupport;i
34、mport fund.domain.Assure;import fund.service.AssureFacade;public class AssureAction extends ActionSupportprivate Assure assure;public Assure getAssure() return assure;public void setAssure(Assure assure) this.assure = assure;private AssureFacade assureFacade;public AssureFacade getAssureFacade() ret
35、urn assureFacade;public void setAssureFacade(AssureFacade assureFacade) this.assureFacade = assureFacade;public String assure()int flag;tryflag=assureFacade.assure(assure);if(flag=1)return "Error1"if(flag=2)return "Error2"if(flag=3)return "Error3"if(flag=4)return "
36、Error4"if(flag=6)return "Error6"assure.setState(1);return "Success"catch (Exception e) e.printStackTrace();return "Error"7、AssureDAOImpl.javapackage fund.persistence;import java.sql.SQLException;import java.util.Calendar;import java.util.Date;import org.springframe
37、work.orm.hibernate3.support.HibernateDaoSupport;import com.opensymphony.xwork2.ActionContext;import fund.domain.Apply;import fund.domain.Applyloan;import fund.domain.Assure;import fund.domain.House;import fund.domain.Loan;public class AssureDAOImpl extends HibernateDaoSupport implements AssureDAOpub
38、lic int assure(Assure assure) throws SQLException ActionContext.getContext().getSession().put("assure",assure);House hou=(House)ActionContext.getContext().getSession().get("house");Apply app=(Apply)ActionContext.getContext().getSession().get("apply");Assure ass=(Assure)
39、ActionContext.getContext().getSession().get("assure");Loan loan=(Loan)ActionContext.getContext().getSession().get("loan");Double appc=app.getAppcount();Double amt=hou.getBuyhouseamt();Double fir=hou.getFiramt();if(appc>amt+fir)return 1; /贷款金额必须小于等于(购房总价-首付款)Double loanpercent;
40、if(hou.getBuyhousearea()>90)loanpercent=0.7;elseloanpercent=0.8;ActionContext.getContext().getSession().put("loanpercent", loanpercent);if(appc>ass.getMorvalue()*loanpercent)return 2; /申请金额不得超过(抵押价值¡Á贷款成数)Loan lo=(Loan)ActionContext.getContext().getSession().get("loan&
41、quot;);if(lo.getSex1().equals("1")if(lo.getAge()+app.getAppyearlimit()>60)return 3; /现年龄+贷款年限<=法定退休年龄 男为( 60 )岁 elseif(lo.getAge()+app.getAppyearlimit()>55)return 4; /现年龄+贷款年限<=法定退休年龄 女为(55 )岁getHibernateTemplate().save(ass);Applyloan applyloan=new Applyloan();Calendar c=Calend
42、ar.getInstance();int y=c.getTime().getYear()+1900;int last=getHibernateTemplate().find("from Applyloan").size();last+;String la="00000"+last;la=la.substring(la.length()-5);String apprnum="01"+y+la;applyloan.setApprnum(apprnum);ActionContext.getContext().getSession().put
43、("apprnum", apprnum);applyloan.setApprflag("01");applyloan.setValid("1");applyloan.setAgencybank(app.getBankname();applyloan.setMultiloan("1");applyloan.setLoantype("01");applyloan.setProtonum(hou.getProname();applyloan.setPolenum(hou.getPolenum();ap
44、plyloan.setAssurecomp(ass.getAssurecomp();applyloan.setAssuretype(ass.getAssuretype();applyloan.setPayee(hou.getRecname();applyloan.setBankname(app.getBankname();applyloan.setBankccnum(hou.getRecaccount();applyloan.setRetloancycle(app.getRetloancycle();applyloan.setRetloanmode(app.getRetloanmode();a
45、pplyloan.setApprloansum(app.getAppcount();applyloan.setApprloanterm(app.getAppyearlimit();applyloan.setLoanpercent(loanpercent);ActionContext.getContext().getSession().remove("loanpercent");applyloan.setBuyhousetype(hou.getBuyhousetype();applyloan.setHouseaddr(hou.getHouseaddr();applyloan.
46、setBuyhousearea(hou.getBuyhousearea();applyloan.setHousestruct(hou.getHousestruct();applyloan.setBuyhouseamt(hou.getBuyhouseamt();applyloan.setAccname1(loan.getAccname1();applyloan.setCerid1(loan.getCerid1();applyloan.setSex1(loan.getSex1();applyloan.setAge1(loan.getAge();applyloan.setAccunitnam1(lo
47、an.getAccunitnam1();applyloan.setInamt1(loan.getMonsalary();applyloan.setUnitphone1(ass.getUnitphone1();applyloan.setLinkaddre1(loan.getLinkaddre1();applyloan.setAccname2("");applyloan.setCerid2("");applyloan.setSex2("");applyloan.setAge2(1);applyloan.setAccunitnam2(&qu
48、ot;");applyloan.setInamt2(0);applyloan.setHandset2("");applyloan.setUnitphone2("");applyloan.setLintaddre2("");applyloan.setOp("");Date d=new Date();applyloan.setTransdate(d);applyloan.setFreeuse1("");applyloan.setFreeuse2(1);getHibernateTemplat
49、e().save(applyloan);ActionContext.getContext().getSession().remove("house");ActionContext.getContext().getSession().remove("loan");ActionContext.getContext().getSession().remove("apply");ActionContext.getContext().getSession().remove("assure");return 5;8、Assur
50、eAction.javapackage fund.action;import com.opensymphony.xwork2.ActionSupport;import fund.domain.Assure;import fund.service.AssureFacade;public class AssureAction extends ActionSupportprivate Assure assure;public Assure getAssure() return assure;public void setAssure(Assure assure) this.assure = assu
51、re;private AssureFacade assureFacade;public AssureFacade getAssureFacade() return assureFacade;public void setAssureFacade(AssureFacade assureFacade) this.assureFacade = assureFacade;public String assure()int flag;tryflag=assureFacade.assure(assure);if(flag=1)return "Error1"if(flag=2)return "Error2"if(flag=3)re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夫妻保姆合同协议书范本
- 白酒合同转让协议
- 土地借用合同协议
- 离婚协议的合同生效时间
- 充电桩安装租赁合同协议
- 工程联营协议合同
- 金蝶公司合同协议
- 承包协议书合同格式要求
- 医美合伙人协议合同
- 车位购买合同协议
- 腱鞘炎康复治疗
- 中考物理复习《浮力液面高度变化量计算方法与技巧》
- 2024年同等学力申硕英语考试真题
- 电子商域视觉设计应用规范手册
- 品牌经理招聘笔试题及解答(某大型国企)2025年
- 四年级语文下册 第26课《宝葫芦的秘密》同步训练题(含答案)(部编版)
- 幼儿园大班班本课程绳彩飞扬
- GB/T 44625-2024动态响应同步调相机技术要求
- 大学物理:电磁感应与电磁场
- 2024年青岛中小学教师招聘真题
- 2024年四川省眉山市中考地理+生物试卷(含答案解析)
评论
0/150
提交评论