银行ATM存款机系统项目总结
银行ATM存取款机系统项目总结
一、项目时间:
201*年9月29日201*年10月11日二、项目实际结果:
ATM存取款机系统,能够对银行日常的存款业务进行计算机管理。能够按照银行的业务需求,实现各项银行日常存款、取款和转账业务。
三、主要的功能:1.开户
每个客户凭个人身份证在银行可以开设多个银行卡账号,但是每一个账户只有一个银行卡,每个银行卡。在开设账号时还需要提供一些开户数据。
2.存款
客户持银行卡在ATM机上输入密码,经系统确认后才能办理存款业务。银行规定,每个账户当前的存款金额不得小于1元。
3.取款
取款时不仅要确认身份,取款金额还要小于等于当前的存款金额。
4.转账
转账的要求和取款类似。
5.余额查询
客户持银行卡在ATM机上输入密码,经系统确认后才能办理存款业务。
6.项目的流程数据库设计绘制E-R图、数据库模型图建库、建表、建约束插入测试数据利用事务实现较复杂的数据更新使用存储过程创建、使用视图模拟常规业务修改密码、挂失等在整个项目中,图中加了横线的都是较为复杂的,需要耗费很长时间。
7.项目的特点:
项目基本的功能较为完善,能够满足银行的基础业务需求,实现各项银
行日常存款、取款和转账业务。但对于大银行的借贷、网银等业务仍难以实现满足。
8.使用的技能:
1.2.3.4.
使用T-SQL语句创建数据库表和表结构;使用T-SQL语句编程实现用户业务;使用事务和存储过程封装业务逻辑;使用视图简化复杂的数据查询。
9.开发工作的评价
该项目是由我们七个小组(全班),分别负责不同的用例完成的。而我们第
四小组就负责的用例4的工作。由于每个小组建的数据库名以及表中各种列名都不相同讲解给其他组听时就会出现一些问题。但就整个的完成情况来说,各组的工作都做得很好的。尤其是后面的四个用例难度比较前几个组难,且要做的东西较多,但大家都完成的很好。
10.经验和教训
经过此次的项目案例,使我明白小组合作的重要性。很多东西也许自己一个人做起来有些难度,但经过与小组的其他成员的讨论请教就可以解决。而且,当工作太多时,可以进行分工,加快工作的效率。
我们的职业导向老师曾说过,在项目小组中我们不应该把自己看做一个个体,我们是小组的组成成员。小组成员之间的合作是否紧密会直接关系到这个项目的最终成果。
在数据库的设计中架构尤为重要!!如果前面的数据库框架没有建好,那么后面的同学在创建数据库、表以及约束的时候,是很容易出错的。到最后,数据库的错误就会越累积越多。
在后面的四个用例中几乎每个都没select查询语句有关。因此,我们必须很熟悉查询语句的用法。尤其是连接查询和联合查询,这两种中的联合查询我就不是很会用。我们应该拿起大一的课本好好复习关于查询的语句。
最后就是,我发现如果每个用例都参与的话,比我们光看书要来的有用多了。因此我们以后如果想要让自己的技能提高还是需要多多的做一些案例。实践总会比光理论要来的有效。当然,最好就是理论与实践相结合。这样就需要我们多看书,上课时要认真的听讲,老师在做案例是要尽量跟着敲。而在课外我们更不能因为所谓的休息而太过于放松自己,要经常看看书,将书上的例子什么的最好都做出来运行看看。
扩展阅读:项目实战银行ATM
项目实战银行ATM(取款机)系统
第一部分问题描述某银行拟开发一套ATM取款机系统,实现如下功能:
开户(到银行填写开户申请单,卡号自动生成)取钱存钱查询余额
转账(如使用一卡通代缴手机话费,个人股票交易等)现要求对“ATM柜员机系统”进行数据库的设计并实现,数据库保存在F:\\bank目录下,文件增长率为15%
第二部分环境要求开发工具:SQLServer201*企业版、PowerDesigner
第三部分问题分析用户信息表:userInfo见表1.1
表1.1用户信息表
字段名称customerIDcustomerNamePIDtelephoneAddress
顾客编号开户名身份证号联系电话居住地址必填必填,只能是18位或15位,身份证号唯一约束必填,格式为xxxx-xxxxxxxx或手机号11位可选输入说明自动编号(标识列),从1开始,主键银行卡信息表:cardInfo见表1.2
表1.2银行卡信息表字段名称说明卡号必填,主键,银行的卡号规则和电话号码一样,一般前8位代表特殊含义,如某总行某支行等。假定该行要求其营业厅的卡号格式为:10103576xxxxxxxx开始,每4位号码后有空格,卡号一般是随机产生必填,默认为RMB活期/定活两便/定期必填必填,默认为系统当前日期必填,不低于1元必填,不低于1元,否则将销户必填,6为数字,开户时默认为6个“8”必填,是/否值,默认为“否”外键,必填,表示该卡对应的顾客编号,一般顾客允许办理多张卡cardIDcurTypesavingTypeopenDateopenMoneybalancepassIsReportLosscustomerID
货币类型存款类型开户日期开户金额余额密码是否挂失顾客编号交易信息表:transInfo见表1.表1.3交易信息表
字段名称transDatecardIDtransTypetransMoneyremark交易日期卡号交易类型交易金额备注说明必填,默认为系统当前日期必填,外键,可重复索引必填,只能是存入/支取必填,大于0可选输入,其他说明第四部分实现步骤
1.设计数据库E-R模型图(采用PowerDesigner建模工具)提示:根据第三部分的各个表,绘制概念数据模型图(ConceptualDataModel)。
2.建库:要求保存在F:\\bank文件夹下,取名为bankDB,文件增长率为15%。提示:以下所有步骤的软件环境均为SQL查询分析器
在F盘创建文件夹bank。提示:execxp_cmdshell‘mkdirf:\\bank’,NO_OUTPUT
建库是要求检测是否存在bankDB,如果存在先删除再创建。提示:参考上机相关代码ifexists(…)…
3.建表:创建用户信息表userInfo,银行卡信息表cardInfo,交易信息表transInfo提示:参照第三部分各表提出的要求,确定表中各个字段的长度、数据类型,注意一个汉字占两个字节。身份证号字段为了验证方便,一般保存为字符串;是/否挂失字段,可保存为BIT(即1/0)类型。
4.加约束
根据第三部分“说明”一栏中的要求,分析每列相应的约束条件例如:
(1)主键,添加主键(PrimaryKey)约束
(2)只能是18位或者15位,添加检查(check)约束。(利用字符串长度函数len())(3)……
同一个表的多个约束可以连写例如:
AlterTABLEcardInfoADDCONSTRAINTPK_cardIDPRIMARYKEY(cardID),CONSTRAINTCK_cardIDCHECK(cardID,….),CONSTRAINTDF_cruType….
5.建关系提示:根据三表的字段,通过外键约束来建立表之间的关系
6.插入测试数据:
先假定卡号不自动随机产生,而是人工指定,向相关表中插入如下开户信息张三开户身份证:123456789012345,电话:010-678989地址:北京海淀,开户金额:1000,活期,卡号:1010357612345678李四开户
身份证:321245678912345678电话:0478-44443333开户金额:1,定期,卡号:1010357612121134
插入交易信息
张三的卡中取款900元李四的卡中存款5000元
要求保存交易记录,以便客户查询和银行业务统计。提示:当张三取款900时,会向信息表(transInfo)中添加一条交易记录,同时应自动更新银行卡信息表(cardInfo)中的现有余额(减少900元),先假定手动完成插入更新信息。
7.常规业务模拟
修改密码张三(1010357612345678)修改银行卡密码为123456李四(1010357612121134)修改银行卡密码为123123挂失帐号李四(1010357612121134)因银行卡丢失,申请挂失统计银行的资金流通余额和盈利结算。统计说明:存入代表资金流入,支取代表资金流出,则有:资金流通余额=总存入量总支取量假定存款利率为千分之3,贷款利率为千分之8,则有:盈利结算=总支取量×0.008总存入量×0.003提示:定义两个变量存放总存入和总支取量、sum()函数及转换函数convert()
查询本周开户的卡号,显示该卡相关信息。提示:求时间差的日期函数DateDiff,求星期几用DatePart函数查询本月交易金额最高的卡号提示:在交易信息表中,采用子查询和Distinct去掉重复的卡号。查询挂失帐号的客户信息。提示:利用子查询In的方式或内部连接InnerJoin
催款提醒业务例如因某种业务的需要,每个月末如果发现用户帐上余额少于200元,将致电催款。
8.创建索引和视图。
给交易表的卡号cardID字段创建重复索引,以便加速查询,填充因子为70%按指定索引查询张三的交易记录
创建视图。为了向客户显示友好信息,请创建视图,把表中英文字段名改成中文字
段名,3个表对应的视图名分别为:view_userInfo、view_cardInfo、view_Info
9.创建触发器trig_trans:改进上述的存款或取款语句,当存取或取钱(如张三取款900元)
时,会往交易信息表transInfo中插入一条交易记录,同时会自动更新(而不是人工更新)用户信息表userInfo中的余额(如减少900元)。因此,我们应该在交易信息表transInfo中创建插入触发器,自动触发更新余额的动作。提示:
如果交易类型是“支取”,则应判断余额是否足够支取(余额-支取金额>=1),否则
提示余额不足。如果支取成功,更新余额,减去支取的金额。如果是“存入”,则更新余额,加上存入的金额。
交易结束后,提示交易信息:是否成功,目前余额是多少。10.测试触发器:张三的卡号支取1000,李四的卡号存入200.提示:这里需要张三和李四的卡号,现实中的取款机依靠读卡器读出卡号,此处可以根据张三和李四的名字查出卡号来模拟(采用内连接或子查询)
11.创建存储过程:
取钱或存钱的存储过程proc_takeMoney提示:取钱时要求提供密码,存取不用。取钱时需验证密码是否正确,然后向交易表transInfo中插入一条支取的交易信息即可。因为我们已经在该表上创建了插入触发器,所以插入时将自动触发上述动作,检测余额是否足够支取,然后自动更新余额。存储过程参数:卡号、交易金额、交易类型、密码(默认为空)测试:调用存储过程取钱或存取,张三的卡号支取300(密码123456),李四的卡号存入500,同样,张三、李四的卡号可以根据名字查出来。
产生随机卡号的存储过程proc_randCardID提示:银行卡卡号共19位(4位数一组,中间用空格隔开),对于某个银行来说,前面8个数字是固定的,后面8个数字要求随机的,并且唯一。我们只需要产生8位随机的数字,然后和前8位固定的数字“10103576”连接即可。随机函数的用法下:RAND(随机种子):将产生0~1的随机数,要求每次的随机种子不一样。为了保证随机种子每次不相同,一般的算法如下:随机种子=当前的月份数×100000+当前秒数×1000+当前毫秒数产生了0~1的随机数后,我们取小数点后8位,即:0.xxxxxxxx测试:产生随机号
开户的存储过程proc_openAccount提示:开户的相关信息作为该存储过程的参数,包括开户名、身份证号、电话号码、开户金额、存款类型和地址(默认值为空)。该存储过程调用上述的随机卡号的存储过程生成随机卡号,如果该随机卡号在cardInfo中不存在,则往相关表插入开户信息。否则将调用上述随机卡号的存储过程,重新产生随机卡号(使用while循环)测试:调用此存储过程开户。王五,身份证:334456889012678,电话:2222-63598978,开户金额:1000,活期,地址:河南新乡。赵二,身份证:213445678912342222,电话:0760-44446666,开户金额:1,定期
12.创建事务:同银行的帐户间一般都支持转账功能,因为转账的规则为一方支取,另
一方存入相应金额。这两步要求要么同时完成,要么同时失败,所以采用事务处理。如果任何一方失败,可以撤销回滚操作。现模拟从李四转账201*到张三的帐号上,要求显示转账信息、是否转账成功及转账后双方的余额。为了调用方便,采用存储过程实现,需要3个参数:转出方卡号、接收方卡号和转账金额。测试:调用此事务存储过程,模拟从李四转账201*到张三的帐号上。(张三、李四的卡号同前,需要根据张三、李四的名字查出卡号)
13.创建登录帐号和数据库用户
添加SQL登录帐号sysAdmin,密码1234,作为系统维护的帐号,具有对上述3
个表增、删、改、查的权限。测试帐号创建是否成功
(1)打开SQL查询分析器,选择菜单“文件”->“连接”,选择SQLServer身份验
证,如图1.15所示。(2)输入sysAdmin的帐号和密码,测试能否登录
(3)登录成功后,输入增、删、改、查语句检查权限是否正确
友情提示:本文中关于《银行ATM存款机系统项目总结》给出的范例仅供您参考拓展思维使用,银行ATM存款机系统项目总结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
《银行ATM存款机系统项目总结》
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/507518.html
- 上一篇:网点主任工作总结
- 下一篇:年终总结