1、文档名称:具体设计说明书项目名称:ATM自动取款机系统编写:张恒友审核:王旭日期:6月5日院系:计算机学院专业:计算机科学和技术一引言1.1 编写目标依据需求规格说明书,在仔细考虑讨论以后,我们又深入对ATM自动取款机系统软件功效划分、数据结构、软件总体结构进行设计,从而完成概要设计,作为软件具体设计基础。1.2 项目背景项目委托单位:计算机学院软件工程试验。开发单位:班ATM自动取款机系统项目组。因为柜台常常会拥挤,排队人很多,而且大多数用户全部是取款,存款等,而有些办理业务需要一定时间,这会使得部分只需要取款等用户会有较长时间等候。所以银行期望设计一个系统,能让用户在系统上进行简单操作,比
2、如存款、取款、查询余额、转账等。1.3 定义ATM: Automatic Teller Machine,自动柜员机。1.4 参考资料计算机软件需求说明编制指南计算机软件产品开发文件指南ATM系统可行性分析汇报。软件设计和体系结构软件工程实践者研究方法二 任务概述2.1目标现现在,ATM在一定程度上存在很大安全隐患,给用户造成很大经济损失。为了处理这么问题,我们小组提出了改善ATM自动取款机系统,使用户在操作过程中愈加安全,放心,更便捷。2.2运行环境硬件环境:CPU:1GHZ及以上内存:1G以上硬盘:20G以上软件环境: 操作系统:Microsoft Windows XP或更高版本数 据 库:
3、Microsoft SQL Server Web服务器:Tomcat5.0以上 支持浏览器:Internet Explorer 7.0及其以上版本开发环境:MyEclipse,jdk,Microsoft SQL Server 2.3条件和限制伴随科技发展,大家生活水平不停提升,高性能高效率高安全产品越来越受到大家欢迎。 ATM自动取款机是一个很智能机器,大家能够直接和它交互,替换以前手工操作,大大提升了银行工作效率。同时也给广大用户带来了很大方便。因为ATM自动取款机是和服务器是连网,这就包含到安全问题本系统能够有效地处理这个问题。不过本程序也使用户操作时间增加,在一定程度上增加了用户埋怨率。
4、三总体设计3.1 处理步骤主步骤图:用户步骤:存款步骤:取款步骤:转账步骤:查询步骤:改密:3.2 具体模块及代码实现1. 主菜单模块(含:存款、取款、转账、密码修改、查询余额)存款:个人账户上金额加上。 取款:个人账户上金额减去。转账:包含到两个账户 其实就是下标不一样 金额一个减去一个加上。密码修改:输入新密码、再次输入新密码 判定两次密码是否相同在用strcpy()函数 将新密码 目前账户下标元素密码组员而且判定是否修改成功。查询余额:就是从结构体数组里面调用存金额那个组员欢迎模块:定义一个函数void huanying(),利用for循环进行字符输出。void huanying() /
5、定义函数int i;for(i=0;i10;i+) /for循环 printf(nnnnnnnn); printf(ttt -n); printf(ttt 欢迎使用 n); printf(ttt -n); printf(nntt期望此ATM系统能够给您带来方便!); printf(nnnntttt正在进入); shaohou(); /等候系统响应 system(cls); printf(nnnnnnnn);用户模块:在此模块,从A,B,C中选择出实施操作服务,然后进入下一个模块。利用while语句,定义选择函数char xuanze,实现输出。伪代码:void main() /主函数huany
6、ing();system(cls);while(1)char xuanze; /定义函数system(cls);printf(nnt欢迎使用n);printf(nnt请选择:n);printf(nntA.开户服务n);printf(nntB.登录服务n);printf(nntC.退出。n);printf(nnt请选择:);scanf(%c,&xuanze);switch(xuanze) casea: caseA:kaihu();break; caseb: caseB:denglu();break; casec: caseC:exit(0); default:printf(nt您选择错误!);b
7、reak;开户服务:struct kaihuchar name10;char mima10;double zong;int zhanghao;guke20;int renshu=0;int xianzai;*/#include #include #include #include structint jin_e,zong; int zhanghao;char name20;char mima20;guke20;int renshu=0;int xianzai;void shaohou()int i,j;for(i=0;i3;i+) printf(.); for(j=0;j0) printf(b
8、 b); i-; else if(i16) mimai=ch; printf(*); i+; void kaihu()int k;for(k=0;k0) printf(nnt开户成功,您可用余额为:%d,gukerenshu.jin_e); break;else printf(nnt开户金额不能低于壹圆!nn); system(cls); gukerenshu.zhanghao=518518+renshu; printf(nnt您账号是:%d请切记!n,gukerenshu.zhanghao); printf(nnt开户成功,是否继续?继续请按任意键。n); renshu+; getch();
9、登录服务:void denglu()int q;for(q=0;q8;q+)printf(nnt正在进入,请稍后);shaohou();system(cls);/*while(1)printf(nntt【登录服务】);printf(nntt请输入账号:);int zh; scanf(%d,&zh);int i;for(i=0;irenshu;i+) if(zh!=gukei.zhanghao) printf(nnt账号错误,请重新输入。); continue; else xianzai=i; printf(nnt账号正确:);break;*/printf(nntt【登录服务】);printf(
10、nntt请输入账号:);int zh; scanf(%d,&zh);for(int i=0;irenshu;i+) if(zh!=gukei.zhanghao) i+; if(i=renshu) printf(nnt账号错误,请重新输入。); continue; else xianzai=i; printf(nnt账号正确:); break; for(i=0;i3;i+) printf(nt请输入密码:); char password10; dedaomima(password); if(strcmp(password,gukexianzai.mima)=0) printf(nt密码正确!);
11、 break; else printf(密码输入错误,请重新输入。); return; getch();fuwu(); getch();主菜单模块:此模块关键用于用户进行多种操作服务选择,实现相关功效,如存款,取款,转账,密码修改,余额查询等等。void fuwu()int i=0;for(i;i8;i+) printf(nnnnnnn); printf(nnnnttt正在进入服务,请稍后); shaohou(); system(cls);while(1)char shuru;system(cls);printf(nnt【服务】n);printf(nnt%d欢迎使用!n,gukei.name)
12、;printf(nt(请选择:)n);printf(nta.存款服务n);printf(ntb.取款服务n);printf(ntc.转账服务n);printf(ntd.余额查询n);printf(nte.密码修改n);printf(ntf.退出n);printf(nt请选择服务:);scanf(%c,&shuru);switch(shuru) case a: case A:cunkuan();break; case b: case B:qukuan();break;/ case c:/ case C:zhuanzhang();break; case d: case D:chaxun();bre
13、ak;/ case e:/ case E:xiougai();break; case f: case F:printf(返回上级菜单,请按任意键);return; default:printf(nt您选择错误!);break;存款服务:void cunkuan()for(int i=0;i5;i+) printf(nnt正在进入,请稍等); shaohou(); system(cls);printf(nnnnnnn);printf(nnt【存款服务】);printf(nnt请输入您存款金额:);int xincun;scanf(%d,&xincun);gukerenshu.zong=guker
14、enshu.jin_e+xincun;printf(nnt您现在可用余额为:%d,gukerenshu.zong);printf(nnt是否继续?继续请按任意键。);getch();取款服务:void qukuan()for(int i=0;i5;i+) printf(nnt正在进入,请稍等); shaohou(); system(cls);printf(nnt【取款服务】);printf(nnt请输入取款金额:);int xinqu;scanf(%d,&xinqu);gukexianzai.zong=gukerenshu.zong-xinqu;if(xinqugukerenshu.zong)
15、printf(nnt取款成功:%d,您现在可用余额为:%d,xinqu,gukexianzai.zong);printf(nnt是否继续?继续请按任意键:); getch();查询服务:void chaxun() for(int i=0;i5;i+) printf(nnt正在进入,请稍等); shaohou(); system(cls); printf(nt【查询服务】); printf(nt您可用余额为:%d,gukerenshu.jin_e); printf(nt是否继续?继续请按任意键.); getch();四接口设计4.1 外部接口硬件接口:包含和打印机接口(控制打印机打发票及存款凭证
16、等),和银行数据库主机接口,和出钞机接口。对硬件处理关键由操作系统完成,本软件只调用操作系统提供打印,出钞等指令。软件接口:根据银行指定格式和银行数据库通信,并需要预留可能在ATM上安装其它软件接口方便于扩充功效。4.2 内部接口1.前后台程序通信接口,包含配款提醒和维护提醒。2.系统和数据库接口。五测试计划测试日期、测试人员安排请参考测试计划;测试用例具体内容,详见测试用例说明。现在本小组仅以会话用例和取款用例进行对ATM机管理系统单体测试计划;用例被测试功效初始系统状态测试输入期望结果会话用例系统读取用户银行卡系统处于ON状态,并没有为用户提供服务插入可读银行卡银行卡被接收,系统请求输入密
17、码会话用例系统弹出不可读取银行卡系统处于ON状态,目前没有为用户提供服务插入不可读取银行卡银行卡被弹出,系统显示错误信息,准备开启一个新会话会话用例系统接收用户密码系统请求用户输入密码输入密码系统显示一个事务类型菜单会话用例系统许可用户实施事务系统显示事务类型菜单实施事务系统问询用户是否期望实施其它事务会话用例系统许可在一个会话中实施多个事务系统问询是否实施其它事务回复“是”系统显示事务类型菜单会话用例当用户选择不实施其它事务时,会话结束系统问询是否实施其它事务回复“否”系统弹出银行卡,准备开启一个新会话事务用例系统处理一个不正当密码插入了可读取卡输入不正确密码尝试某个事务实施非法密码取款用例
18、系统提醒用户选择需要提取现金账户正在显示事务类型菜单选择取款事务系统显示账户类型菜单取款用例系统正确实施正当取款事务系统显示取款金额菜单选择系统目前拥有单小于账户余额取款金额系统弹出现金,打印收据,更新账户余额取款用例系统验证是否有足够现金,完成用户请求系统现有现金数量小于用户请求数量选择大于目前系统拥有现金数量取款金额系统将显示一个信息,提醒现金不足,请重新选择取款金额取款用例系统验证用户账户余额是否能够满足请求金额系统正在请求取款金额选择一个取款金额使得该金额小于目前系统中现金余额不过大于用户账户余额系统将显示一个信息位用户提供是否实施其它事务选项取款用例取款事务在选择金额之前能够被用户取
19、消系统显示账户类型菜单按下“CANCEL”键系统显示信息为用户实施其它事务提供相关选项取款用例取款事务在用户请求取款金额之前任何时候能够被取消系统显示请求取款金额菜单按下“CANCEL”键系统显示信息为用户实施之前事务选项六具体设计小结和相关说明因为本系统最终将会运行于取款机之上,而取款机是一个经典嵌入式设备,内存容量有限,运行速度比较缓慢,故在进行系统设计时候不仅得考虑一般取款机系统设计通常问题,还得额外考虑相关设备部分特征。本具体设计有以下多个特点:立即释放内存,提升内存资源利用率。利用主菜单控制,进行功效选择,使程序简单化,模块化,清楚化。正确合理使用多模块进行系统设计。使用人工选择进行界面切换。