银行ATM系统软件工程设计报告_第1页
银行ATM系统软件工程设计报告_第2页
银行ATM系统软件工程设计报告_第3页
银行ATM系统软件工程设计报告_第4页
银行ATM系统软件工程设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

西安邮电学院软件工程报告学院名称:计算机学院学生姓名:专业名称:网络工程班级:PartA:WhatisSoftwareEngineering(SE)软件工程是一门工程学科,涉及软件生产的各个方面,从最初的系统描述一直到使用后的维护,都属于其学科范畴。软件工程人员运用的是系统的、有组织的的工作方法,这种方法对于制作高质量的软件是最有效的。HowmanydifferentpartsinSEdevelopment(1).问题的定义以及规划;(2).需求分析;(3).软件设计;(4).程序编码;(5).软件测试;(6).软件维护。WhatisSoftwareProcesses软件过程是指制作软件产品的一组活动及其结果。所有的软件工程都包含:(1).软件描述;(2)软件开发;(3)软件的有效性验证;(4)软件进化。Softwaredevelopment(Technologyandmethod)软件工程方法是一种软件开发的结构化方法,其目的在于提高软件质量的同时,使其性价比较高。结构化分析方法(DeMarco,1978)和JSD方法(Jackson,1983)在20世纪70年代首次开发出来,这些方法旨在识别系统中基本的功能模块,面向功能的方法现在仍被广泛应用。在20世纪80到90年代,Booch(1994)和Rumbaugh(1991)等人又提出了面向对象的方法。现在这些不同的方法已经被集成了一种方法——统一建模语言(UML)。ProjectandProjectmanagement软件项目管理者和其他的工程项目管理者的工作性质是相同的,然而,软件工程管理与其他的工程管理相比,在很多方面是有显著的区别的。(1).软件产品是无形的;(2).没有标准的软件过程;(3).大型软件项目常常是“一次性”项目。需求分析由于经济社会发展速度的大幅提高,几乎所有的银行都配备了不用繁琐的人工操作的ATM自动取款机。软件设计本系统相应的需求有以下方面:能够读取和存储客户账户中的存取款信息,并方便有效地进行客户选择的交易操作。这主要包括以下内容:自动调用银行总系统中客户原有信息银行客户账户中的信息的查询、读取客户操作的识别,及信息的录入、更新、存储(2)能够将客户输入的信息及时上传到银行总系统中,并将客户原有信息进行自动更新。这其中主要包括以下内容:汇总客户更新的信息,直接上传到银行总系统中抽调银行总系统中客户原有信息,并进行修改将银行总系统中客户原有信息更新为客户最新输入的信息,并存储提供客户信息访问的权限和管理。其中包括:客户访问普通信息的权限银行系统管理员对客户信息的录入、更改和删除需要补充说明的几点有:数据保存:需要长期保存的数据信息有客户信息:客户开通银行账户的基本信息账户信息:客户在银行的存取款信息系统用户:银行系统管理员和客户银行系统管理员:对ATM机中的信息可进行录入、更改和删除等操作客户:在ATM机上可进行存取交易操作系统的总体规划客户端流程软件开发与运行维护由于本人水平有限以及时间仓促,暂时用C语言来实现,后期的运行维护也尚未展开。#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"intNo=0,m,n=0;/*记录用户账号次序变量*/FILE*fp,*fp1;structatmsystem{ charzhanghao[9]; /*账号*/ charpassword[11]; /*密码*/ floatallmoney; /*总金额*/}atm[30],atmtemp; /*定义30个帐户与一个临时帐户*/ main() /*主函数*/{ voidkaihu(); /*声明开户函数*/intcheck(); /*声明密码验证函数*/voidservice(); /*声明服务菜单函数*/voidzhuanzhang(); /*声明转帐函数*/voidchangepw(); /*声明更改密码函数*/voidquit();/*声明退出函数*/chara;/*菜单选择用的变量*/if((fp=fopen("USER.txt","r"))==NULL)/*打开文件*/ { printf("Filecannotbeopened\n"); system("pause"); return0; }for(m=0;!feof(fp);m++)/*读取文件将内容存放到内存*/fscanf(fp,"#%s%s%f\n",atm[m].zhanghao,atm[m].password,&atm[m].allmoney);fclose(fp);/*关闭文件*/No=m+1;for(;;) /*循环主菜单*/ { system("cls"); /*设置清屏*/printf("***********WelcometoATMSystem*************\n\n"); printf("Pleaseselect:\n1.Createanewaccount\n2.CustomerService\n3.ExitSystem\n"); /*输出主菜单*/ printf("--------------------------------------------\n"); scanf("%c",&a); /*接收一个数字字符*/ if(a=='1') /*判断是否是1*/ { printf("Settinguserinformation\n"); kaihu(); /*调用新开户的函数*/ printf("\nPressanykeytocontinue"); getch(); system("cls"); /*设置清屏*/ } elseif(a=='2') /*判断是否是2*/ { if(check()==1)/*调用检查账户函数*/ service();/*认证后开始服务*/ else { printf("\nSorry,youhavebeenwrongfor3times."); quit(); } } elseif(a=='3') /*判断是否是3*/quit();/*退出*/ } system("pause"); return0;}voidkaihu() /*定义新开帐户函数*/{inti,j,flag=0;charpw,ch1;floatmoney;charch[7]; if(No<=30)/*判断是否有空间创建帐户*/ {for(;;){printf("PleaseenteryouraccountID:(lessthan8characters)\n"); scanf("%s",&atmtemp.zhanghao); /*接收一个字符串*/if(strcmp(atmtemp.zhanghao,"exit")==0) exit(1);for(n=0;n<30;n++)/*验证输入的帐户和密码*/{ if(strcmp(atm[n].zhanghao,atmtemp.zhanghao)==0)/*如果输入的帐户已经存在*/ { printf("\nAccountalreadyexists,pleasere-enter.\nIfyouwanttoexit,pleaseenter'exit'whenyouenterID.\nPressanykeytocontinue.\n\n"); /*帐户已经存在,请重新输入*/ getch(); break; } elseif(n==29)/*输入的帐户不存在,开建新帐户*/ flag=1;} if(flag==1) break;/*跳出检查*/ } printf("\n"); for(j=0;j<3;j++){ i=0; printf("Pleaseenteryourpassword:(lessthan10characters)\n"); pw=getch(); while(pw!='\r') /*接收密码*/ { if(pw=='\b') { printf("\b\b"); --i; } else { putchar('*'); atmtemp.password[i++]=pw; } pw=getch(); }atmtemp.password[i]='\0';printf("\n");printf("Pleasere-enterpassword");/*再次输入密码*/printf("\n"); i=0;ch1=getch();while(ch1!='\r') { if(ch1=='\b') { printf("\b\b"); --i; } else { putchar('*'); ch[i++]=ch1; } ch1=getch(); }ch[i]='\0';printf("\n");if(strcmp(atmtemp.password,ch)==0)/*两次输入密码一样,继续*/ { strcpy(atm[No-1].zhanghao,atmtemp.zhanghao); /*创建新账号*/ strcpy(atm[No-1].password,atmtemp.password); atm[No-1].allmoney=0; /*金额的初始值为0*/ for(;;) { printf("Pleaseentertheamountinthefirsttime:\n"); scanf("%f",&money); if(money>0) /*判断是否输入错误*/ { atm[No-1].allmoney+=money; /*总金额等于总金额加上初次存入金额*/ break; } elseprintf("Wrongamount.Again!\n"); } printf("---------------------\n"); printf("Information:\nID:%s\nAmount:%.2f\n",atm[No-1].zhanghao,atm[No-1].allmoney); printf("---------------------\n"); No++;/*帐户自增*/ break; } elseprintf("Pleasere-enterpassword.Youhave3timestotry!\n"); }}elseprintf("Sorry,therecan'thavemoreaccount.\n");} intcheck() /*定义检查函数*/{inti,j,flag=0; /*设变量*/charpw;for(j=0;j<3;j++) /*让密码输入循环*/ { i=0; printf("PleaseenteryouraccountID:\n"); scanf("%s",&atmtemp.zhanghao); /*输入账号*/ printf("Pleaseenteryourpassword:\n"); pw=getch(); while(pw!='\r') { if(pw=='\b') { printf("\b\b"); --i; } else { putchar('*'); atmtemp.password[i++]=pw; } pw=getch(); } atmtemp.password[i]='\0'; printf("\n"); for(n=0;n<30;n++)/*验证输入的帐户和密码*/ if(strcmp(atm[n].zhanghao,atmtemp.zhanghao)==0&&strcmp(atm[n].password,atmtemp.password)==0)/*如果输入的帐户和密码相同*/ { printf("\n----------------AuthenticationSuccessful----------------\n\n"); /*认证成功*/ flag=1; /*而且标志为1*/ break; /*跳出内循环*/ }if(flag==1)break;/*跳出外循环*/ if(flag==0) /*如果验证密码不通过*/ printf("Authenticationfailed!Pleasere-enterandcannotbemuchofanerrorinthreetimes!\n\n");/*认证失败!请重新输入,不容许多于三次的错误!*/ } returnflag;}voidservice() /*声明服务菜单函数*/{inta; /*设定输入选择的变量*/intflag=0;floatcq,q; /*设cq存入金额的变量,q取款金额的变量*/for(;;){system("cls"); printf("Pleaseselect..............................ID:%s\n\n",atm[n].zhanghao); printf("\t-------------------------------------------------\n"); /*输出语句-子菜单*/printf("\t-----------1.DepositServices--------------------\n");printf("\t-----------2.TellerService----------------------\n");printf("\t-----------3.Transfer----------------------------\n");printf("\t-----------4.ChangePassword---------------------\n");printf("\t-----------5.Checktheaccountinformation-------\n");printf("\t-----------6.Logout-----------------------------\n");printf("\t-------------------------------------------------\n\n");printf("\tYourchoice:");scanf("%d",&a); /*输入选择*/ if(a==1) /*如果选择1*/ { for(;;) { printf("Pleaseentertheamountyouwantdeposited:"); /*请输入您要存入的金额*/ scanf("%f",&cq); /*输入存款的金额*/ if(cq>0) { atm[n].allmoney+=cq; /*余额等于余额加上存款*/ break; } elseprintf("Wrongenter.Again!\n"); } printf("------------------\n"); printf("\nTheamountofyourdeposit:%.2f\nTotalamountofmoneyare:%.2f\n",cq,atm[n].allmoney);/*输出存款和余额*/ printf("------------------\n"); printf("\nPressanykeytocontinue"); getch(); system("cls"); /*设置清屏*/ } elseif(a==2) /*如果选择2*/ { for(flag=0;;) /*加入循环*/ { if(flag) break;/*跳出循环*/ for(;;) { printf("Pleaseentertheamountofmoneyyouwant:"); scanf("%f",&q); /*输入您要取款的金额*/ if(q>0) { if(q>atm[n].allmoney) /*如果取款金额大于余额*/ { printf("Youhavenotenoughbalance!\n"); /*输出"余额不足",继续循环*/ } else /*否则*/ { atm[n].allmoney-=q; /*余额等于原余额减去取款金额*/ printf("-----------------------\n"); printf("\nTheamountofmoneyyouwantare:%.2f\nThebalanceare:%.2f\n",q,atm[n].allmoney);/*输出取款金额和余额*/ printf("-----------------------\n"); printf("\nPressanykeytocontinue"); getch(); system("cls"); /*设置清屏*/ flag=1; break; /*并跳出循环*/ } } elseprintf("WrongEnter.Again!\n"); } } } elseif(a==3) /*如果选择3*/ { zhuanzhang(); /*调用转账函数*/ printf("\nPressanykeytocontinue"); getch(); system("cls"); /*设置清屏*/ } elseif(a==4) /*如果选择4.修改密码*/ { changepw(); /*调用修改密码的函数*/ printf("\nPressanykeytocontinue"); getch(); system("cls"); /*设置清屏*/ } elseif(a==5) /*如果选择5*/ { printf("---------------------\n"); printf("ID:%s\n",atm[n].zhanghao); /*输出清单:账号*/ printf("Psaaword:******\n"); /*输出密码*/ printf("Balance:%.2f\n",atm[n].allmoney); /*输出金额*/ printf("---------------------\n"); printf("Pressanykeytocontinue\n"); getch(); system("cls"); /*设置清屏*/ } elseif(a==6) /*如果选择是6*/ { break; }}}voidzhuanzhang() /*定义转帐函数*/{inti,flag=0,m; floats; for(i=0;i<3;i++) { printf("EntertheaccountIDtobetransferredto:"); /*输入您要转入帐号*/ scanf("%s",atmtemp.zhanghao);for(m=0;m<30;m++) if(strcmp(atm[m].zhanghao,atmtemp.zhanghao)==0)/*如果输入的帐户存在*/ { flag=1; /*而且标志为1*/ break; /*跳出内循环*/ } if(flag==1)break;/*跳出外循环*/ if(flag==0)printf("\nEntertheaccountIDiswrong.Pleasere-enterandcannotbemuchofanerrorinthreetimes!\n"); } for(;;) { if(flag==1) printf("\nEntertheamountyouwanttransferredto:"); /*输入您要转入的金额*/ else break; scanf("%f",&s); /*输入转入的金额*/ if(s>0) { if(atm[n].allmoney<s) /*如果转出的金额大于余额*/ printf("Youhavenotenoughbalance!\n"); /*输出"余额不足",并继续循环*/ else { atm[n].allmoney-=s; /*转出的账户金额等于余额减去转出的金额*/ atm[m].allmoney+=s; /*转入的账户金额等于余额加上转入的金额*/ printf("\n------------------\n"); printf("Successfultransfer!\n"); printf("Youraccountbalanceare:%.2f\n",atm[n].allmoney); /*输出余额*/ printf("------------------\n"); break; } } elseprintf("Wrongenter.Again!\n"); }}voidchangepw() /*定义修改密码的函数*/{ inti,j,p;charch,ch1,ch2;charaa[11],cc[11],dd[11]; /*设定变量aa为输入原密码cc密码*/for(;;) /*循环*/ { i=0; printf("\nPleaseentertheoriginalpassword:"); /*请输入原密码*/ ch=getch(); while(ch!='\r') { if(ch=='\b') { printf("\b\b"); --i; }else { aa[i++]=ch; putchar('*'); } ch=getch(); } aa[i]='\0'; /*输入原密码*/ printf("\n"); if(strcmp(aa,atm[n].password)==0) /*判断输入的密码是否与原密码相同*/ { p=0; j=0; printf("\nPleaseente

温馨提示

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

评论

0/150

提交评论