贷款申请系统.docx
- 文档编号:3463097
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:16
- 大小:23.04KB
贷款申请系统.docx
《贷款申请系统.docx》由会员分享,可在线阅读,更多相关《贷款申请系统.docx(16页珍藏版)》请在冰豆网上搜索。
贷款申请系统
贷款申请系统
项目提醒
●请仔细阅读规格文档,理解规格文档估计需要花费10~40分钟来理解,请务必看清楚要求再动手,试题包括规格描述和代码框架。
●C/C++编译环境统一为VisualC++6.0版本,Java编译环境统一为1.5.0_06版本。
如果你喜欢并熟悉SourceInsight或其它工具,也可以使用SourceInsight或其它工具进行开发,但大家必须保证提交的代码要在指定编译环境下编译通过,否则无法阅卷。
●无论是C/C++语言,还是Java语言,都不限制系统函数、STL、Java类库或其他类库的使用,前提是提交的代码编译通过并正常运行。
●如果考题与日常工作/生活接近,请大家以规格为准,不要类比相似案例。
●出于自动化测试的需要,程序中不要使用原始的I/O输入输出(键盘输入、屏幕输出)作为正式输入输出,我们会提供基于Socket的输入输出API接口,大家必须使用SocketAPI进行正式输入输出操作。
调试打印的方式不受此限制。
●测试的工程已经提供Socket通信功能,并提供输入/输出的API,大家不需要实现。
1总体说明
该贷款申请系统主要提供贷款的申请和查询功能.
系统启动之后,需要通过初始化命令完成初始化,系统运行过程中也可以随时执行初始化命令.贷款申请系统完成初始化后就可以申请贷款、查询贷款数据.
说明:
本文档中用t标识”单位时间”,即该贷款申请系统运行的最小时间单位,第n个单位时间:
nt,系统最长可运行24t,超出24t的情况不考虑.
1.1系统规则
1、对贷款申请业务,银行有3个部门负责处理:
银行申请贷款部门、银行审查贷款部门、银行发放贷款部门.
2、银行申请贷款部门:
负责贷款申请数据的提交,如果申请数据填写正确,则贷款申请成功,并自动提交给银行审查贷款部门审查,否则贷款申请失败,并清除此申请数据.
每笔贷款申请占用1个t,1个t可申请多笔贷款.
3、银行审查贷款部门:
贷款申请成功后,该部门根据申请数据判断是否允许贷款,如果允许贷款就自动提交给银行发放贷款部门;否则就要求重新申请,即处于待重新申请状态.
每笔贷款审查占用1个t,1个t只可审查一笔贷款.如果当前t已被某份贷款审查占用,其他贷款审查要排队等待.
4、银行发放贷款部门:
审查贷款成功后,该部门判断当前银行是否可以发放贷款,如果可以就发放贷款,并按照相关的利率计息,否则就要求重新申请,即处于待重新申请状态.
每笔贷款发放占用1个t,1个t只可发放一笔贷款.如果当前t已被某份贷款发放占用,其他贷款发放要排队等待.
5、审查贷款在贷款申请成功后下一个空闲t处理,发放贷款在审查贷款成功后下一个空闲t处理.举例:
时间
贷款申请
审查贷款
发放贷款
1t
A贷款申请成功
2t
B贷款申请成功
A审查贷款成功
3t
C贷款申请成功
B审查贷款成功
A发放贷款成功
4t
D贷款申请失败
C审查贷款失败,重新申请
B发放贷款成功
5t
…
…
…
…
6、在待重新申请状态,原贷款申请数据不清除,只有重新申请成功后才能更新其状态和数据.
7、某笔贷款发放成功后,其数据和状态不再发生变换.
8、如果有多笔贷款申请同时等待审查,则审查贷款处理顺序要按照执行贷款申请命令的顺序处理.例如:
A、B两笔贷款申请都在1t申请,A先执行申请命令,则
A,在2t审查贷款结束,3t发放贷款结束。
B,在3t审查贷款结束,4t发放贷款结束。
时间
贷款申请
审查贷款
发放贷款
1t
A贷款申请成功
B贷款申请成功
2t
A审查贷款成功
3t
B审查贷款成功
A发放贷款成功
4t
B发放贷款成功
9、特别提示:
系统可以使用一个计数器来表示时间,不需要考虑时间的周期、步长等因素。
计数器加1时,可以同时做审查贷款、发放贷款;如果贷款的申请时间大于系统计数器,需要将系统计数器更新到申请的时间;同一笔贷款的发放时间与审查时间相差1,并根据查询时间与贷款的审查、发放时间比较,返回某时刻贷款的状态.
10、贷款人有2种级别:
低收入贷款人、高收入贷款人,(月收入单位:
元)
低收入贷款人:
月收入范围[1000,5000]
高收入贷款人:
月收入范围(5000,10000]
11、贷款年限,取值范围[1,20],(单位:
年)
依照贷款人级别,约束不同的贷款年限,如果超出约束,则在贷款查询时提示”贷款年限超出范围,审查贷款失败”:
低收入贷款人:
贷款年限[1,10]
高收入贷款人:
贷款年限[1,20]
12、贷款本金,取值范围[10,100],格式是整数,(单位:
万元)
依照贷款人级别,约束不同的贷款本金,如果超出约束,则在贷款查询时提示”贷款本金超出范围,审查贷款失败”:
低收入贷款人:
贷款本金[10,50]
高收入贷款人:
贷款本金[10,100]
13、审查贷款时,先审查贷款本金,再审查贷款年限.
14、银行可用贷款总金额为300万元,如果”已发放成功的贷款本金加上当前准备发放的贷款本金”超出约束,则在贷款查询时提示”银行无可用贷款,发放贷款失败”
15、银行最多只允许5份贷款发放成功,如超出约束,则在贷款查询时提示”发放贷款系统能力不足,发放贷款失败”;
16、发放贷款时,先核对贷款发放份数,再核对银行可用贷款.
17、该系统申请的贷款其还款类型是:
等额本金还款法,基本概念和公式如下:
概念:
等额本金还款,又称等本不等息还款法.贷款人将本金分摊到每个月内,同时付清每个月的利息.这种还款方式每月支付的本金数相同,但利息逐月减少,故还款负担逐月递减.
基本术语、公式:
贷款本金:
申请贷款的本金总额
实际月利率=实际年利率/12
实际年利率=初始年利率*年利率折扣
还款期数=贷款年限×12
每月还款本金=贷款本金/还款期数
第x个月月还款利息=每月还款本金*(还款期数-x+1)*实际月利率
第x个月还款本息总金额=每月还款本金+第x个月月还款利息
还款总利息=贷款本金*实际月利率*(还款期数+1)/2
还款本息总金额=贷款本金+还款总利息
说明:
第x个月是从发放贷款成功之日开始算起,本文档中利息的计算以月为最小计算单位.此时间是自然时间,与系统运行时间无关.
18、银行规定的贷款利率及折扣
贷款年限不同,(单位:
年),初始年利率不同:
贷款年限[1,10],初始年利率:
2.4%
贷款年限(10,20],初始年利率:
4.8%
贷款本金不同,(单位:
万元),年利率折扣不同:
贷款本金[10,40],年利率折扣:
100%
贷款本金(40,100],年利率折扣:
50%
19、住房公积金,构成:
50%是自己缴纳,50%是公司缴纳,还款时可用住房公积金还款.
个人还款本息总金额=还款本息总金额-住房公积金还款金额*50%
1.2系统约束
1、所有命令格式的合法性在工程框架中提供,大家不需要考虑。
2、所有输入输出无需携带单位,使用默认的单位,大家不需要考虑单位的输出。
3、不考虑系统运行时间超出范围的情况。
2操作说明
1、命令字请全部使用小写,系统中的命令区分大小写,如果异常输入,系统提示”E100:
其他命令错误”;
命令的所有参数都是必选参数,且顺序固定,对参数缺少或冗余、参数顺序打乱、参数长度异常等输入,系统提示”E100:
其他命令错误”;
命令字与第一个参数间使用一个空格分隔,多个参数间使用半角”-”分隔,参数间没有空格,如果异常输入,系统提示”E100:
其他命令错误”;
2、测试系统会对输入命令格式进行处理,大家不需要关注输入命令格式、参数格式的合法性,只需要实现命令处理函数。
测试框架会将字符串解释成对应的命令及命令参数结构,大家不需要自行解释命令字符串。
3、所有不需要大家考虑的命令错误都由测试框架统一输出“E100:
其他命令错误”,这里定义仅仅是为了系统的完整性,与大家无关。
4、系统中的所有标点符号应为英文半角符号,大家需要考虑输出中的标点符号。
2.1系统初始化
命令格式:
reboot
功能说明:
系统在任意阶段均可执行reboot命令初始化系统。
已发放贷款金额、份数、系统时间、贷款申请数、审查数、所有输入命令、输出轨迹等全部清空。
相当于:
关闭系统并重启系统。
执行该命令后,系统数据会清空到初始状态:
✓系统运行时间:
1t
✓银行已发放贷款:
0
✓贷款申请数:
0
输出说明:
输出操作成功提示
输出样例如下:
命令·
输出
reboot
E001:
初始化成功
2.2贷款申请
命令格式:
request贷款编号-贷款人月收入-贷款本金-贷款年限-申请时间
功能说明:
输入申请贷款的基本信息,提交申请,通过合法性判断申请是否成功。
约束说明:
参数中的单位无需输入,非法的贷款申请数据报错后会立即清除,不保存。
输出说明:
(1)贷款编号:
[1,10],格式:
整数,用来唯一标识一笔贷款;
如果输入值超出范围,则输出“E002:
贷款编号输入错误”;
(2)贷款人月收入:
[1000,10000],(单位,元)
如果输入值超出范围,则输出“E003:
贷款人月收入输入错误”;
(3)贷款本金:
[10,100],格式为整数,(单位,万元)
如果输入值超出范围,则输出“E004:
贷款本金输入错误”;
(4)贷款年限:
[1,20],(单位,年)
如果输入值超出范围,则输出“E005:
贷款年限输入错误”;
(5)申请时间:
[1,10],(单位,t),用来标识贷款申请时系统时间。
如果输入值超出范围,则输出“E006:
申请时间输入错误”;
(6)request命令可重复执行,后执行命令的申请时间不能小于先执行命令成功的申请时间,否则输出“E007:
申请时间错误递减”;
(7)某一笔贷款申请,若已申请成功,则只有在待重新申请状态才允许其被重新提交申请(重新提交申请:
即再次执行贷款编号相同的request命令):
若重新提交申请成功,则覆盖原有申请且需要重新排队审查,否则不影响原有贷款数据和状态;
若在非待重新申请状态:
(包含发放成功)重新申请,则输出“E008:
贷款处理正常,不允许修改初始信息”且不影响原有贷款数据和状态。
重新申请只能在待重新申请状态的当前t及以后t申请。
例如:
输入
输出
request1-5000-40-10-2
E009:
贷款申请成功
符合条件,贷款1申请成功,系统时间为4.
request1-1000-40-10-4
E008:
贷款处理正常,不允许修改初始信息
命令企图在4时修改贷款1的信息,4时贷款发放成功,不允许修改.
request1-1000-40-10-3
E008:
贷款处理正常,不允许修改初始信息
命令企图在3时修改贷款1的信息,3时贷款处于审查成功状态,也不允许修改.
request1-1000-40-10-1
E007:
申请时间错误递减
修改贷款信息的时间不能小于上一次贷款的申请时间2
(8)request命令和list命令的执行以及贷款申请的判断都不会导致系统时间的增长,只有审查和发放贷款耗用时间,导致时间的增长.request命令提供的时间做为贷款状态判断的依据,如果申请成功,系统自动完成审查和放款,系统时间增长;如果申请不成功,系统时间不会增长.
(9)命令的合法性检查,按照
(1)~(7)顺序判断;
(10)命令正确、参数范围合法,输出“E009:
贷款申请成功”。
输出样例如下:
输入
输出
request1-2000-10-10-1
E009:
贷款申请成功
2.4贷款查询(本功能作为附加功能,学员选做)
命令格式:
list贷款编号-第x个月份-住房公积金还款金额-查询时间
功能说明:
查询用户当前贷款申请状态,如果贷款已发放成功,附带返回用户计划还款
的第x个月份本息还款总金额,以及如果使用住房公积金还款情况下,个人还款的本息总金额。
查询错误不影响贷款的数据和状态。
约束说明:
参数中的单位无需输入。
输出说明:
(1)贷款编号:
[1,10],格式:
整数,用来标识一笔贷款;
如果输入值超出范围,则输出“E002:
贷款编号输入错误”;
如果系统中没有该贷款编号对应的有效的贷款申请数据,则输出“E010:
无有效的贷款申请”;
相同贷款编号可以多次查询;
(2)第x个月份:
[1,240],格式:
整数,x的取值不大于该笔贷款的还款期数,如果输入值超出范围,则输出“E011:
还款月份无效”;
(3)住房公积金还款金额[0,100],格式:
整数,单位:
万元,住房公积金还款金额不大于该笔贷款本金;如果输入值超出范围,则输出“E012:
住房公积金还款金额无效”;
(4)查询时间:
[1,24],单位:
t,用来标识查询贷款时系统时间:
如果输入值超出范围,则输出“E013:
查询时间输入错误”;
如果查询时间小于申请时间,则输出“E014:
查询时间错误递减”;
(5)list命令可以在任意的系统运行时间内重复执行,可以查询到该笔贷款的历史状态;
说明:
如果在重新提交申请成功后查询,只能查询最新贷款的数据。
同样的,如果在提交申请成功前查询,则查询的是原有数据。
举例:
A贷款在1t申请,2t重新申请成功后查询,则查询2t时A贷款数据状态是贷款申请成功待审查,查询1t时A贷款数据是E014:
查询时间错误递减。
(6)命令的合法性检查,按照
(1)~(5)顺序判断;
(7)命令正确、参数范围合法,输出具体的计算结果,格式如下:
E015:
贷款申请M详细信息
贷款申请状态:
H
贷款本金(万元):
I
还款期数:
J
实际月利率(千分之):
K
第x个月份的还款本息总金额:
O
需还款本息总金额:
P
需个人还款本息总金额:
Q
说明:
✓M指贷款查询命令输入的贷款编号。
✓H指当前贷款申请状态,输出内容有以下几种:
L,待重新申请
贷款申请成功待审查
贷款审查成功待发放
贷款发放成功
✓L指重新申请的原因,包括“贷款年限超出范围,审查贷款失败”、“贷款本金超出范围,审查贷款失败”、“银行无可用贷款,发放贷款失败”、“发放贷款系统能力不足,发放贷款失败”
✓I指该贷款申请的贷款本金,格式:
整数,(单位:
万元)
✓J指该贷款申请的还款期数,格式:
整数。
✓K指该贷款的实际月利率,格式:
整数,(单位:
千分之)
✓x即贷款查询命令输入的第x个月份。
✓O、P、Q指算出的具体金额数,(单位:
元),格式:
整数,计算的最后结果四舍五入。
✓M、H、x、I、J、K、L、O、P、Q前后没有空格字符。
(8)如果当前贷款不处于“贷款发放成功”状态,则“实际月利率(千分之)”、“第x个月份的还款本息总金额”、“需还款本息总金额”、“需个人还款本息总金额”为0。
输出样例如下:
输入
输出
reboot
request1-1000-10-20-1
list1-1-0-4
E001:
初始化成功
E009:
贷款申请成功
E015:
贷款1申请详细信息
贷款申请状态:
贷款年限超出范围,审查贷款失败,待重新申请
贷款本金(万元):
10
还款期数:
240
实际月利率(千分之):
0
第1个月份的还款本息总金额:
0
需还款本息总金额:
0
需个人还款本息总金额:
0
3附录:
3.1命令汇总
命令
命令格式
示例
说明
reboot
reboot
reboot
reboot,系统初始化
request
request贷款编号-贷款人月收入-贷款本金-贷款年限-申请时间
request1-1000-1-1-1
request,输入用户申请贷款的基本信息数据
list
list贷款编号-第x个月份-住房公积金还款金额-查询时间
list1-1-0-1
list,查询用户当前的申请状态,用户想计算的第x个月份的本息还款总金额,以及个人还款的本息总金额。
3.2返回码汇总
返回码描述
说明
E001:
初始化成功
reboot命令执行成功返回
E002:
贷款编号输入错误
输入的贷款编码非法
E003:
贷款人月收入输入错误
request命令输入的贷款人月收入非法
E004:
贷款本金输入错误
request命令输入的贷款本金非法
E005:
贷款年限输入错误
request命令输入的贷款年限非法
E006:
申请时间输入错误
request命令输入的申请时间非法
E007:
申请时间错误递减
多条request命令执行,输入的申请时间出现递减错误
E008:
贷款处理正常,不允许修改初始信息
贷款处于发放成功状态后被重复申请
E009:
贷款申请成功
request命令执行成功
E010:
无有效的贷款申请
list命令输入的贷款编码不存在对应的申请数据
E011:
还款月份无效
list命令输入的还款月份非法
E012:
住房公积金还款金额无效
list命令输入的住房公积金还款金额非法
E013:
查询时间输入错误
list命令输入的查询时间非法
E014:
查询时间错误递减
list命令输入的查询时间小于申请时间
E015:
贷款申请M详细信息
贷款申请状态:
H
贷款本金(万元):
I
还款期数:
J
实际月利率(千分之):
K
第x个月份的还款本息总金额:
O
需还款本息总金额:
P
需个人还款本息总金额:
Q
list命令执行成功
E100:
其他命令错误
命令字大小写、错误的命令字、命令格式、全角半角错误时系统输出,不需要测试。
3.3基本用例
编号
用例标题
测试步骤
预期输出
1
系统重启、初始化;
贷款申请、审查、放贷成功;
有计算贷款信息。
reboot
request1-2000-20-5-1
list1-1-10-4
E001:
初始化成功
E009:
贷款申请成功
E015:
贷款申请1详细信息
贷款申请状态:
贷款发放成功
贷款本金(万元):
20
还款期数:
60
实际月利率(千分之):
2
第1个月份的还款本息总金额:
3733
需还款本息总金额:
212200
需个人还款本息总金额:
162200
2
系统重启、初始化;
贷款申请成功,审查失败;
无计算贷款信息。
reboot
request1-2000-20-15-1
list1-1-0-4
E001:
初始化成功
E009:
贷款申请成功
E015:
贷款申请1详细信息
贷款申请状态:
贷款年限超出范围,审查贷款失败,待重新申请
贷款本金(万元):
20
还款期数:
180
实际月利率(千分之):
0
第1个月份的还款本息总金额:
0
需还款本息总金额:
0
需个人还款本息总金额:
0
3
系统重启、初始化;
贷款申请成功,审查成功,放款失败;
无计算贷款信息。
reboot
request1-9000-80-15-1
request2-8000-80-15-1
request3-8600-80-15-1
request4-8100-80-15-1
list4-10-10-6
E001:
初始化成功
E009:
贷款申请成功
E009:
贷款申请成功
E009:
贷款申请成功
E009:
贷款申请成功
E015:
贷款申请4详细信息
贷款申请状态:
银行无可用贷款,发放贷款失败,待重新申请
贷款本金(万元):
80
还款期数:
180
实际月利率(千分之):
0
第10个月份的还款本息总金额:
0
需还款本息总金额:
0
需个人还款本息总金额:
0
4
系统重启、初始化;
贷款申请成功后,再次申请;
贷款申请失败后,再次申请;
reboot
request1-9000-80-15-1
request2-8000-80-15-1
request3-8600-80-15-2
request4-8100-80-15-3
request3-8630-80-15-4
request4-8100-80-13-5
request4-8100-80-13-8
E001:
初始化成功
E009:
贷款申请成功
E009:
贷款申请成功
E009:
贷款申请成功
E009:
贷款申请成功
E008:
贷款处理正常,不允许修改初始信息
E008:
贷款处理正常,不允许修改初始信息
E009:
贷款申请成功
5
系统重启、初始化;
贷款申请成功后、再次申请;
查询不同时刻的贷款状态;
reboot
request1-2000-20-15-1
request2-8000-20-13-2
request3-8000-20-13-3
request1-2000-20-15-3
list1-1-0-4
list1-1-0-6
E001:
初始化成功
E009:
贷款申请成功
E009:
贷款申请成功
E009:
贷款申请成功
E009:
贷款申请成功
E015:
贷款申请1详细信息
贷款申请状态:
贷款申请成功待审查
贷款本金(万元):
20
还款期数:
180
实际月利率(千分之):
0
第1个月份的还款本息总金额:
0
需还款本息总金额:
0
需个人还款本息总金额:
0
E015:
贷款申请1详细信息
贷款申请状态:
贷款年限超出范围,审查贷款失败,待重新申请
贷款本金(万元):
20
还款期数:
180
实际月利率(千分之):
0
第1个月份的还款本息总金额:
0
需还款本息总金额:
0
需个人还款本息总金额:
0
3.4API说明
VC工程MatchSysC_VC6.rar中包括:
●\Lib\SocketApi.lib:
是一个LIB库文件,其中实现了对外通信接口;
●\Lib\MatchSysApi.lib:
是一个LIB库文件,其中实现了对命令输入输出的封装;
●\Src\MatchSysApi.h:
头文件,定义了大家可能用到的的枚举、宏、结构,以及需要大家自己实现的接口函数;
●\Src\MatchSys.h:
头文件,大家可以向其中添加自己的定义。
具体要求请看注释。
●\Src\MatchSysC.cpp:
源码文件,提供了需要大家实现的接口函数框架,这些函数是空白的,需要由大家自己实现。
●其他文件是VC工程自行产生的,大家不必关注。
更详细的定义请参阅VC工程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贷款 申请 系统