ATM机系统的设计与开发.docx

上传人:b****6 文档编号:16392426 上传时间:2023-07-13 格式:DOCX 页数:26 大小:1.01MB
下载 相关 举报
ATM机系统的设计与开发.docx_第1页
第1页 / 共26页
ATM机系统的设计与开发.docx_第2页
第2页 / 共26页
ATM机系统的设计与开发.docx_第3页
第3页 / 共26页
ATM机系统的设计与开发.docx_第4页
第4页 / 共26页
ATM机系统的设计与开发.docx_第5页
第5页 / 共26页
ATM机系统的设计与开发.docx_第6页
第6页 / 共26页
ATM机系统的设计与开发.docx_第7页
第7页 / 共26页
ATM机系统的设计与开发.docx_第8页
第8页 / 共26页
ATM机系统的设计与开发.docx_第9页
第9页 / 共26页
ATM机系统的设计与开发.docx_第10页
第10页 / 共26页
ATM机系统的设计与开发.docx_第11页
第11页 / 共26页
ATM机系统的设计与开发.docx_第12页
第12页 / 共26页
ATM机系统的设计与开发.docx_第13页
第13页 / 共26页
ATM机系统的设计与开发.docx_第14页
第14页 / 共26页
ATM机系统的设计与开发.docx_第15页
第15页 / 共26页
ATM机系统的设计与开发.docx_第16页
第16页 / 共26页
ATM机系统的设计与开发.docx_第17页
第17页 / 共26页
ATM机系统的设计与开发.docx_第18页
第18页 / 共26页
ATM机系统的设计与开发.docx_第19页
第19页 / 共26页
ATM机系统的设计与开发.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ATM机系统的设计与开发.docx

《ATM机系统的设计与开发.docx》由会员分享,可在线阅读,更多相关《ATM机系统的设计与开发.docx(26页珍藏版)》请在冰点文库上搜索。

ATM机系统的设计与开发.docx

ATM机系统的设计与开发

武汉理工大学华夏学院

课程设计报告书

课程名称:

软件工程

 

题目:

ATM机系统的设计与开发

系名:

信息工程系

专业班级:

计算机1112

姓名:

梁海传

学号:

指导教师:

钱小红

 

2014年7月4日

 

课程设计任务书

学生姓名:

梁海传专业班级:

计算机1112

指导教师:

钱小红工作单位:

信息工程系

设计题目:

ATM机系统的设计与开发

课程设计的目的与任务:

软件工程课程设计是《软件工程》课程的后续实践课程,本课程设计的目的是通过一周的实践训练,开发一个学生信息管理系统,使同学们经历一个软件从问题定义、分析、设计到开发的全过程和受到一次软件系统开发的综合训练,以便能熟练掌握软件开发的完整生命周期过程及较全面地理解、掌握和综合运用所学的软件工程的知识。

结合具体的学生信息管理选题开发项目,理解并掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力,进一步提高学生分析问题、解决问题,进行一个完整系统开发的能力。

课程设计的内容与主要要求:

本课题是一个用JAVA和MYSQL/SQLServer实现的ATM机软件系统的设计与开发,功能包括主界面的实现、身份认证、查询余额、取款、转账、密码修改、查询交易明细。

要求系统的特色是界面简单明了,使用方便,系统有较好的网络适应性。

要求学生根据所学的软件工程的知识,利用所学的Java语言/Vb语言/C++语言+Mysql/SQL知识实现一个ATM机系统,并对实现后的软件进行测试。

系统主要实现登陆、查询、取款、存款、同行转账、密码修改等功能。

课程设计的步骤及时间进度、场地安排

本课程设计将安排在第20周,教育技术中心211。

具体安排如下:

6月27日下午:

下发任务;

6月28日:

查找资料,理清整理软件工程实验课所完成的学生信息管理系统需求分析、系统设计及相关模型的建立(通过visio/rationalrose/powerdesigner建立系统的需求模型、数据模型及设计模型,具体包括数据流图、软件结构图、程序流程图、ER图、用例图、类图、时序图、活动图、状态图等);

6月29日-7月2日:

完成学生信息管理系统的开发;

7月3日~7月4日完成系统测试、报告的写作及答辩验收,并将以上工作整理成为课程设计报告,于7月4日下午前提交课程设计报告。

课程设计报告撰写格式要求:

1设计题目与要求

2设计思想

3系统结构

4数据结构的说明和模块的算法流程图

5使用说明书(即用户手册)、运行结果、关键界面截图

6测试计划说明书、测试用例规格说明、缺陷报告

7自我评价与总结

8附录:

程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加注释;

要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。

设计报告正文字数不少于0.2万字(不包括附录)。

第1级(章)题序和题名用黑体三号字;第2级(目)题序和题名用黑体小四号字;第3级(条)题序和题名用黑体小四号字;正文内容用宋体五号字(英文用新罗马体),多倍行距1.25。

报告内容一律使用A4打印纸计算机打印,页码在页下居中标明。

必须使用国家公布的规范字。

页面设置:

上空2.5cm,下空2.0cm,左空2.5cm,右空2.0cm(左装订)。

插图图面要整齐、美观,插图应与正文呼应,不能脱节。

每幅插图应有图序与图题,图序编号要连续,图序与图题间空一格且要放在插图下方居中处。

课程设计考核及评分标准

课程设计考核将综合考虑学生考勤和参与度,系统设计方案正确性,系统设计和开发效果以及课程设计报告书的质量。

总分按五级记分法记载最后成绩:

优秀(100~90分),良好(80~89分),中等(70~79分),及格(60~69分),不及格(0~59分)

指导教师签字:

钱小红2014年6月27日

 

1设计题目与要求

1.1设计题目

简单的ATM机系统的设计与开发

1.2设计要求

ATM机系统的设计要求该系统界面简单明了,使用方便,有较好的网络适应性。

利用我们所学的软件工程的知识,Java语言+Mysql/SQL数据库知识实现一个简单的ATM机系统,并对实现后的ATM机系统进行测试。

该系统主要实现登陆、查询、取款、存款、同行转账、密码修改等功能。

2设计思想

本系统主要包括管理员登陆和普通会员登陆的两个主体板块。

此需求规格说明书是系统开发者设计实现ATM机系统的依据,也是用户对最终软件系统进行功能测试和验收的依据。

本系统为Web应用的信息管理系统,目的在于可以让用户更方便、快捷的进行取款,存款,转账等操作,实现便利,人性化的信息交流平台,支持管理员的后台信息管理。

各个角色的功能需求如下:

1.管理员登录在调研中了解到,用户想要使用系统,首先要有一个友好的用户注册界面。

其次,用户需要经历登录验证过程,只有合法的拥有管理员身份的用户才可以使用系统中的管理功能。

这样做可以防止非法用户登录并使用本系统,妨害数据安全。

用户登录,通过系统登录验证,用户成功进入系统并开始使用其中功能。

管理员可以进行会员注册,管理员注册,还有系统的维护等。

2.普通会员登陆,也是本ATM机系统的主要模块。

主要是对用户的需求而设计的。

用户登陆到系统后,可以进行取款,存款,转账,查看自己的账户信息(包括:

账户id,账户密码,用户名,地点,银行余额),还可以查看自己的交易明细(包括:

自己的ID,交易时间,转账用户的id,收入资金,支出资金)

3.系统结构

3.1系统功能模块

ATM的系统中总共设计了四个模块,分别是登陆模块、交易模块、查询模块、修改密码模块,总的功能模块图如下所示

图3.1ATM系统功能结构图

3.2数据流图的设计

3.2.1一级数据流图

主要体现了整个系统的一个宏观的模块,数据流的出口与入口体现。

图3.2ATM系统一级数据流图

3.2.2二级数据流图

主要体现了整个系统数据流的流向,及功能的基本模块化。

图3.3ATM系统二级数据流图

3.3系统流程图

本系统的总体逻辑结构的流程图,清晰的体现了整个系统的运行的一个流程。

图3.4ATM系统流程图

3.4ATM机系统用例图

将上图的类图的一个实体化,将类实体化出对象,体现出对象可以做的事情,即可以实现的本系统的功能。

图3.6ATM机系统用例图

4数据结构的说明和模块的算法流程图

4.1数据库

4.1.1实体联系图

用户信息实体包括:

用户账号、用户名、账户密码、用户电话、用户地址以及账户余额,将用户账号设置为主键。

ATM机系统的管理员信息实体包括:

管理员账号、管理员名称以及管理员登陆密码

ATM机系统的交易明细信息实体包括:

交易时间、存款金额、取款金额、汇入账号、汇出账号。

图4.1实体联系图

4.1.2数据字典

atm_user表是用来存储用户信息的,具体字段如下:

 

表1atm_user(uid,uname,upass,tel,addr,balance)表

字段名

数据类型

可否为空

描述

uid

Varchar

Notnull(主键)

用户账号

uname

Varchar

Null

用户名

upass

Varchar

Null

账户密码

tel

Varchar

Null

用户电话

addr

Varchar

Null

用户地址

balance

Float

Null

账户余额

atm_admin该表主要是用来存储管理员信息的,具体字段如下:

表2atm_admin(adid,adname,adpass)表

 

字段名

数据类型

可否为空

描述

Adid

Varchar

Notnull(主键)

管理员账号

Adname

Varchar

Null

管理员名称

Adpass

Varchar

Null

管理员密码

atm_detail该表主要是用来存储交易信息的,具体字段如下:

表3atm_detail(euid,etime,esave,eget,uid)表

字段名

数据类型

可否为空

描述

Etime

Datetime

Notnull(主键)

交易时间

Esave

Float

Null

存款金额

Eoutput

Float

Null

支出金额

Euid

Varchar

Null

汇入账号

Uid

Varchar

Notnull(主键)

汇出账号

4.1.3数据关联

图4.2数据关联

4.2模块的算法流程图

登录模块流程图

图4.3登录模块流程图

5运行结果关键界面截图

5.1登陆页面

登陆页面,有用户的输入账号密码的两个输入框,还有一个下拉框,进行不同身份的登陆

图5.1普通用户登录页面

5.2普通用户登录后的页面

用户点击登陆以后,通过数据库对比,判断用户的合法性,通过后就会进入该界面,否则继续停留在登陆页面。

进入用户界面后,用户就可以看到以下不同的操作类型,通过点击不同的链接,可以实现不同的功能,以此来满足用户的不同需求。

图5.2普通用户登录后的页面

5.3用户进行取钱操作

点击“取款”便可以跳转到取款页面。

通过数据库链接技术,用户在该页面取出的钱将会返回到数据库中去,减去相应的取款金额。

图5.4用户进行取钱操作

5.4用户进行转账业务

点击“转账”便可以跳转到转账业务中去。

通过对自己的账号,转账方的账号,还有姓名的对比,再输入转账金额就可以转账了,转账之后,转账双方都会添加一条交易明细,记录此次交易内容。

图5.5用户进行转账业务操作

5.6查询用户自己信息

点击“查询信息”后便可转到查询页面,用户可以查看自己的信息,主要是可以看到自己的银行余额。

图5.6查询用户自己信息

5.7查询交易明细

点击“查询明细”之后便可以看到自己的交易的信息明细了,主要包括交易时间,支出,收入,转账账户等。

如果是取钱,则收入就会有信息,支出为0,转账为null。

其他操作以此类推,如存钱,转账等操作。

具体页面如下:

图5.7查询交易明细

5.8管理员登录页面

当管理员登录成功后便可以转入管理员的界面。

该界面主要可以有以下可选操作:

管理员注册,普通会员操作,系统维护。

实现结果如下:

管理员注册新用户

点击“注册新用户”便可进入注册用户的界面。

开户功能只能是管理员拥有,其他成员没有此项特权。

注册的用户提交后便可以在atm_user表中记录该用户的信息,而起始余额默认为0。

图.5.9管理员注册新用户

 

6测试计划说明书、测试用例规格说明、缺陷报告

6.1功能测试计划。

由于系统是刚刚完成,存在很多内在的问题需要我们去发现,并完善。

系统测试也是软件的一个生命周期。

整个测试计划主要包括:

登陆测试,取款与存款测试,转账测试,修改密码测试,注册用户测试,注册管理员测试,查询信息测试,查询明细测试。

通过以上先后循序完成对这个系统的测试。

6.2测试用例规格说明

6.2.1取款测试。

对取款金额进行测试,测试用例如下:

-100,取负数,系统便会报错,取款金额只能为正。

0,取款为0的话,系统就不会做任何操作。

Null,因为钱的数据类型我们设计为float类型,空的话会报错

100,这是正常的取款数额。

大于余额的数,当区的数大于余额,这是不符合该ATM系统的原则的。

通过以上测试用例的使用,发现,系统的实际结果与理想结果一致,系统的取款模块正常。

以下是对于小数取款的用例截图:

图6.1小数取款的用例截图

 

6.2.2转账测试

对转账进行测试,测试用例如下:

己方账号为空,转账失败,系统通过数据库没有查到转账方的账号会报错

对方账号为空,转账失败,系统通过数据库没有查到入账方的账号会报错

转账金额为null,转账失败,数据类型不一样,

转账金额为-100,转账失败,转账金额只能为正

错误的账号(数据库中不存在),转账失败,不是本银行的账号不能转账

通过以上测试用例的使用,发现,系统的实际结果与理想结果一致,系统的转账模块正常。

 

6.3缺陷报告

通过以上的测试计划说明书的测试后,系统基本上完善,但是,通过不断的运行该系统,还是发现了一个bug没有修复,时间和精力有限未能完善。

该缺陷是:

系统管理员在点击维护系统后,这个系统应该都是那个维护系统的页面。

普通用户进入系统也会进入该维护界面,但是,我们在其他机器上普通会员还是可以正常的进行操作。

预期完善思路:

当管理员点击系统维护的超链接后,就会返回一个结果到相应页面的servlet中去,然后设置有一个全局变量flag,将之放入到session中去,使每个servlet都可以访问到flag,平时flag为ture,当管理员点击系统维护后,flag便会改为false,然后当用户登陆时就通过判断该flage,通过相应结果跳到相应的界面上去。

 

7自我评价与总结

在实验的过程中,我掌握了很多JSP的编程知识,还有myeclips开发环境的熟悉,到界面设计,服务器servlet,javabean的创建等等,还有数据库mysql的创建,表格等等。

并对这种成熟并广泛应用的技术进行了深入的学习。

设计的过程也是一个再学习的过程,在遇到问题的时候我尽量自己想办法解决,这在很大程度上激发了我们的自学能力;在没有办法解决的情况下,我们也通过团队合作进行不断地讨论,最终将结果讨论出来。

以往我们曾经有过多次设计的体会,但只是设计一个模块或一个小系统,而这一次课程设计是综合所学的jsp,java和html的知识来设计一个适合运行的ATM机系统软件。

我们在设计中经常出现一些问题不知该如何解决,在此时通过团队合作的作用帮助我们解决了很多问题,我们遇到问题时,一起讨论,进行XX查找答案等,最终解决问题。

而在课程设计中,我们也给每一个成员分配了不同的任务,将功能单一的模块分给一个人。

当然每个人负债了几个板块的实现。

这样我们在时间的过程中,不需要考虑其他功能的实现了,是要认认真真完成自己的任务就行了。

在任务都完成的最后阶段,我们团队将每个认做的内容一起整合起来,最终将我们的ATM机系统实现完成。

在设计的过程中增加了于实际接触的机会,不仅培养了我的自学和编程能力,让我在即将离开学校进入社会之前有了一定的资本,提高了我与人沟通的能力。

 

8附录:

程序清单

packagecom.atm.DAO;

importjava.sql.Date;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.text.SimpleDateFormat;

importjava.util.ArrayList;

importjava.util.List;

importcom.atm.modelbean.Detail;

importcom.atm.modelbean.User;

importcom.atm.toolbean.DB;

publicclassUserDAO{

SimpleDateFormatmyformatter=newSimpleDateFormat("yyyy-MM-ddHH:

mm:

ss");

java.util.Datemycurrentime=newjava.util.Date();

Stringmycurrentdate=myformatter.format(mycurrentime);

DBdb=newDB();

publicUserDAO(){

db.loadDrive();db.getCon();db.getStm();}

//管理员登录

publicbooleanloginadmin(Stringadname,Stringadpass){

//TODOAuto-generatedmethodstub

booleanflag=false;

Stringsql="select*fromATM_adminwhereadname='"+adname

+"'andadpass='"+adpass+"'";

ResultSetrs=db.getRs(sql);intid=0;

//判断rs中是否有数据

try{while(rs.next()){

//有数据,则取出数据

id=rs.getInt("adid");}

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();}

if(id>0){

flag=true;}

returnflag;}//普通用户登录

publicbooleanlogin(Stringadname,Stringadpass){

//TODOAuto-generatedmethodstub

booleanflag=false;

Stringsql="select*fromATM_userwhereuname='"+adname

+"'andupass='"+adpass+"'";

ResultSetrs=db.getRs(sql);

intid=0;

//判断rs中是否有数据

try{

while(rs.next()){//有数据,则取出数据

id=rs.getInt("uid");}

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();}

if(id>0){

flag=true;}

returnflag;}

//查看个人信息通过用户名和密码查找

publicListfindselfinfo(Stringadname,Stringadpass){

//TODOAuto-generatedmethodstub

Listlist=newArrayList();

db.loadDrive();

db.getCon();

db.getStm();

Stringsql="select*fromatm_userwhereuname='"+adname

+"'andupass='"+adpass+"'";

ResultSetrs=db.getRs(sql);

try{

while(rs.next()){

Stringuid=rs.getString("uid");

Stringuname=rs.getString("uname");

Stringupass=rs.getString("upass");

Stringtel=rs.getString("tel");

Stringaddr=rs.getString("addr");

floatbalance=rs.getFloat("balance");

Useru=newUser();

u.setUid(uid);

u.setUname(uname);

u.setUpass(upass);

u.setTel(tel);

u.setAddr(addr);

u.setBalance(balance);

list.add(u);}}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();}returnlist;}

//通过用户名和密码获得用户账号

publicStringgetUid(Stringuname,Stringupass){

Stringuid=null;

Stringsql="select*fromatm_userwhereuname='"+uname

+"'andupass='"+upass+"'";

ResultSetrs=db.getRs(sql);

try{

while(rs.next()){

uid=rs.getString("uid");}

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();}

returnuid;}

//修改密码

publicbooleanupdatePassword(Stringid,Stringupass){

//TODOAuto-generatedmethodstub

booleanflag=false;

Stringsql="updateatm_usersetupass="+upass+""+"whereuid="+id;

booleanrs=db.upRs(sql);

if(rs){

flag=true;}

returnflag;}

//

publicbooleanopearateMoney(Stringoper,Stringuid,floatmoney){

Stringsql=null;

Stringsql1=null;

if(oper.equals("save"))

{sql="updateatm_usersetbalance=balance+"+money+"whereuid='"+uid+"'";

sql1="insertintoatm_detailvalues('"+uid+"','"+mycurrentdate+"','"+money+"','0','')";

}

if(oper.equals("get"))

{sql="updateatm_usersetbalance=balance-"+money+"whereuid='"+uid+"'";

sql1="insertintoatm_detailvalues('"+uid+"','"+mycurrentdate+"','0','"+m

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2