ATM自动取款机系统-详细设计说明书_第1页
ATM自动取款机系统-详细设计说明书_第2页
ATM自动取款机系统-详细设计说明书_第3页
ATM自动取款机系统-详细设计说明书_第4页
ATM自动取款机系统-详细设计说明书_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文档名称:具体设计说明书项目名称:ATM自动取款机系统编写:张恒友审核:王旭日期:2023年6月5日院系:计算机学院专业:计算机科学与技术一.引言编写目的根据《需求规格说明书》,在仔细考虑讨论之后,我们又进一步对《ATM自动取款机系统》软件的功能划分、数据结构、软件总体结构进行设计,从而完毕概要设计,作为软件具体设计的基础。项目背景项目委托单位:计算机学院软件工程实验。开发单位:班ATM自动取款机系统项目组。由于柜台经常会拥挤,排队的人很多,并且大多数的客户都是取款,存款等,而有些办理业务的需要一定的时间,这会使得一些只需要取款等的客户会有较长时间的等待。所以银行希望设计一个系统,能让客户在系统上进行简朴的操作,比如存款、取款、查询余额、转账等。定义ATM:AutomaticTellerMachine,自动柜员机。参考资料《计算机软件需求说明编制指南》《计算机软件产品开发文献指南》《ATM系统可行性分析报告》。《软件设计与体系结构》《软件工程——实践者的研究方法》任务概述2.1目的现如今,ATM在一定限度上存在很大的安全隐患,给用户导致很大的经济损失。为了解决这样的问题,我们小组提出了改善ATM自动取款机系统,使用户在操作过程中更加安全,放心,更便捷。2.2运营环境硬件环境: CPU:1GHZ及以上 内存:1G以上 硬盘:20G以上软件环境:操作系统:MicrosoftWindowsXP或更高版本数据库:MicrosoftSQLServer2023Web服务器:Tomcat5.0以上支持浏览器:InternetExplorer7.0及其以上版本开发环境:MyEclipse,jdk,MicrosoftSQLServer20232.3条件与限制随着科技的发展,人们生活水平的不断提高,高性能高效率高安全的产品越来越受到人们的欢迎。ATM自动取款机是一种非常智能的机器,人们可以直接和它交互,代替以前的手工操作,大大提高了银行的工作效率。同时也给广大用户带来了非常大的方便。由于ATM自动取款机是和服务器是连网的,这就涉及到安全的问题本系统可以有效地解决这个问题。但是本程序也使用户操作时间增长,在一定限度上增长了用户的抱怨率。三.总体设计解决流程主流程图:用户流程:存款流程:取款流程:转账流程:查询流程:改密:具体模块及代码实现1.主菜单模块(含:存款、取款、转账、密码修改、查询余额)

存款:个人账户上的金额加上。

取款:个人账户上的金额减去。

转账:涉及到两个账户其实就是下标的不同金额一个减去一个加上。密码修改:输入新密码、再次输入新密码判断两次密码是否相同

在用strcpy()函数将新密码当前账户下标元素密码成员

并且判断是否修改成功。

查询余额:就是从结构体数组里面调用存金额那个成员欢迎模块:定义一个函数voidhuanying(),运用for循环进行字符的输出。voidhuanying()//定义函数

{

inti;

for(i=0;i<10;i++)//for循环

{

printf("\n\n\n\n\n\n\n\n");

printf("\t\t\t--------------------------\n");

printf("\t\t\t

欢迎使用

\n");

printf("\t\t\t--------------------------\n");

printf("\n\n\t\t希望此ATM系统可以给您带来方便!");

printf("\n\n\n\n\t\t\t\t正在进入");

shaohou();//等待系统响应

system("cls");

printf("\n\n\n\n\n\n\n\n");

}

}用户模块:在此模块,从A,B,C中选择出执行的操作服务,然后进入下一个模块。运用while语句,定义的选择函数charxuanze,实现输出。 伪代码: voidmain()//主函数

{

huanying();

system("cls");

while(1)

{

charxuanze;//定义函数

system("cls");

printf("\n\n\t欢迎使用\n");

printf("\n\n\t请选择:\n");

printf("\n\n\tA.开户服务\n");

printf("\n\n\tB.登录服务\n");

printf("\n\n\tC.退出。\n");

printf("\n\n\t请选择:");

scanf("%c",&xuanze);

switch(xuanze)

{

case'a':

case'A':kaihu();break;

case'b':

case'B':denglu();break;

case'c':

case'C':exit(0);

default:printf("\n\t您的选择错误!");break;

}

}

}开户服务:structkaihu

{

charname[10];

charmima[10];

doublezong;

intzhanghao;

}guke[20];intrenshu=0;

intxianzai;*/

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<conio.h>

struct

{

intjin_e,zong;

intzhanghao;

charname[20];

charmima[20];

}guke[20];

intrenshu=0;

intxianzai;

voidshaohou()

{

inti,j;

for(i=0;i<3;i++)

{

printf(".");

for(j=0;j<40000000;j++)

{

;

}

}

}

voiddedaomima(charmima[])

{

inti=0;

while(1)

{

charch;

ch=getch();

if(ch=='\r')

{

mima[i]='\0';

printf("\n");

break;

}

else

{

if(ch=='\b')

{

if(i>0)

{

printf("\b\b");

i--;

}

}

else

{

if(i<16)

{

mima[i]=ch;

printf("*");

i++;

}

}

}

}

}

voidkaihu()

{

intk;

for(k=0;k<5;k++)

{

printf("\n\n\t正在进入注册页面,请稍后");

shaohou();

system("cls");

}

while(1)

{

printf("\n\n\t【开户服务】");

printf("\n\n\t请输入您的姓名:");

charxingming[16];

charyanzheng[20];

scanf("%s",xingming);

printf("\n\n\t请输入密码:");

dedaomima(guke[renshu].mima);

printf("\n\n\t请再次确认您的密码:");

dedaomima(yanzheng);

if(strcmp(guke[renshu].mima,yanzheng)==0)

{

printf("\n\n\t密码验证通过:");

break;

}

else

{

printf("两次密码不相同。请重新输入。");

system("cls");

}

}while(1)

{

printf("\n\n\t请输入开户金额:");

scanf("%d",&guke[renshu].jin_e);

if(guke[renshu].jin_e>0)

{printf("\n\n\t开户成功,您的可用余额为:%d",guke[renshu].jin_e);

break;

}

else

{

printf("\n\n\t开户金额不能低于壹圆!\n\n");

system("cls");

}}

guke[renshu].zhanghao=518518+renshu;

printf("\n\n\t您的账号是:%d请牢记!\n",guke[renshu].zhanghao);

printf("\n\n\t开户成功,是否继续?继续请按任意键。\n");

renshu++;

getch();}

登录服务:voiddenglu()

{

intq;

for(q=0;q<8;q++)

{

printf("\n\n\t正在进入,请稍后");

shaohou();

system("cls");

}

/*while(1)

{

printf("\n\n\t\t【登录服务】");

printf("\n\n\t\t请输入账号:");

intzh;

scanf("%d",&zh);

inti;

for(i=0;i<renshu;i++)

{

if(zh!=guke[i].zhanghao)

{

printf("\n\n\t账号错误,请重新输入。");

continue;

}

else

{

xianzai=i;

printf("\n\n\t账号对的:");

}

}break;

}*/

printf("\n\n\t\t【登录服务】");

printf("\n\n\t\t请输入账号:");

intzh;

scanf("%d",&zh);for(inti=0;i<renshu;i++)

{

if(zh!=guke[i].zhanghao)

{

i++;

if(i==renshu)

{

printf("\n\n\t账号错误,请重新输入。");

}

continue;

}

else

{

xianzai=i;

printf("\n\n\t账号对的:");

break;

}

}

for(i=0;i<3;i++)

{

printf("\n\t请输入密码:");

charpassword[10];

dedaomima(password);

if(strcmp(password,guke[xianzai].mima)==0)

{

printf("\n\t密码对的!");

break;

}else

{

printf("密码输入错误,请重新输入。");

return;

getch();

}

}

fuwu();

getch();

}主菜单模块:此模块重要用于用户进行各种操作服务的选择,实现相关功能,如存款,取款,转账,密码修改,余额查询等等。voidfuwu()

{

inti=0;

for(i;i<8;i++)

{

printf("\n\n\n\n\n\n\n");

printf("\n\n\n\n\t\t\t正在进入服务,请稍后");

shaohou();

system("cls");

}while(1)

{

charshuru;

system("cls");

printf("\n\n\t【服务】\n");

printf("\n\n\t%d欢迎使用!\n",guke[i].name);

printf("\n\t(请选择:)\n");

printf("\n\ta.存款服务\n");

printf("\n\tb.取款服务\n");

printf("\n\tc.转账服务\n");

printf("\n\td.余额查询\n");

printf("\n\te.密码修改\n");

printf("\n\tf.退出\n");

printf("\n\t请选择服务:");

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();break;

//case'e':

//case'E':xiougai();break;

case'f':

case'F':printf("返回上级菜单,请按任意键");return;

default:printf("\n\t您的选择错误!");break;

}

}

}存款服务:voidcunkuan()

{

for(inti=0;i<5;i++)

{

printf("\n\n\t正在进入,请稍等");

shaohou();

system("cls");

}

printf("\n\n\n\n\n\n\n");

printf("\n\n\t【存款服务】");

printf("\n\n\t请输入您的存款金额:");

intxincun;

scanf("%d",&xincun);

guke[renshu].zong=guke[renshu].jin_e+xincun;

printf("\n\n\t您现在的可用余额为:%d",guke[renshu].zong);

printf("\n\n\t是否继续?继续请按任意键。");

getch();

}取款服务:

voidqukuan()

{

for(inti=0;i<5;i++)

{

printf("\n\n\t正在进入,请稍等");

shaohou();

system("cls");

}

printf("\n\n\t【取款服务】");

printf("\n\n\t请输入取款金额:");

intxinqu;

scanf("%d",&xinqu);

guke[xianzai].zong=guke[renshu].zong-xinqu;

if(xinqu<guke[renshu].zong)

printf("\n\n\t取款成功:%d,您现在的可用余额为:%d",xinqu,guke[xianzai].zong);

printf("\n\n\t是否继续?继续请按任意键:");

getch();

}查询服务:

voidchaxun()

{

for(inti=0;i<5;i++)

{

printf("\n\n\t正在进入,请稍等");

shaohou();

system("cls");

}

printf("\n\t【查询服务】");

printf("\n\t您的可用余额为:%d",guke[renshu].jin_e);

printf("\n\t是否继续?继续请按任意键.");

getch();

}四.接口设计4.1外部接口硬件接口:涉及和打印机的接口(控制打印机打发票及存款凭证等),和银行数据库主机的接口,和出钞机的接口。对硬件的解决重要由操作系统完毕,本软件只调用操作系统提供的打印,出钞等指令。软件接口:按照银行指定的格式与银行数据库通信,并需要预留也许在ATM上安装的其他软件的接口以便于扩充功能。4.2内部接口1.前后台程序通信接口,涉及配款提醒和维护提醒。2.系统与数据库接口。五.测试计划测试日期、测试人员安排请参考测试计划;测试用例的具体内容,详见测试用例说明。现在本小组仅以会话用例与取款用例进行对ATM机管理系统的单体测试计划;用例被测试的功能初始系统状态测试输入盼望的结果会话用例系统读取顾客的银行卡系统处在ON状态,并没有为顾客提供服务插入可读的银行卡银行卡被接受,系统请求输入密码会话用例系统弹出不可读取的银行卡系统处在ON状态,当前没有为顾客提供服务插入不可读取的银行卡银行卡被弹出,系统显示错误信息,准备启动一个新的会话会话用例系统接受顾客的密码系统请求顾客输入密码输入密码系统显示一个事务类型菜单会话用例系统允许顾客执行事务系统显示事务类型菜单执行事务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论