atm取款机实训文档_第1页
atm取款机实训文档_第2页
atm取款机实训文档_第3页
atm取款机实训文档_第4页
atm取款机实训文档_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、长 沙 学 院课程设计说明书题目程序设计基础课程设计系(部)计算机科学与技术系专业(班级)2012级计科1班姓名刘江惠学号 2012021102指导教师黄娟起止日期2013.9.2-2013.9.6课程设计任务书课程名称:程序设计基础课程设计课程编码:JX020139课程类别:集中性实践教学环节学分数:1学时数:1周开课学期:3设计题目:银行ATM存取款系统、个人通信录系统(任选一题)已知技术参数和设计要求:需求说明及要求题目一:银行ATM存取款系统银行ATM存取款系统业务描述如下:银行ATM存取款系统能为用户提供存款、取款、查询、转账和修改密码的功能。为了模拟真实的ATM业务环境,本系统必须

2、实现存款、取款、查询、转账、修改密码以及开户的功能。用户通过开户业务在本系统开立银行账户,之后可以通过该银行账户登陆ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。本系统各个业务有如下注意点:(1) 登陆系统用户登陆之前,必须在登陆界面输入其银行账户,通过其正确输入的银行账户登陆系统。(2) 开户业务 要使用本系统必须首先执行开户业务开立新的银行账户,并且将此新开的银行存储于文件当中。同时,系统以身份证号码作为开户的充分条件,即一个身份证号码只能开立一次银行账户。(3) 存款业务 客户登陆系统后,选择存款业务,即可以将输入的存款金额存入相应的账户。(4) 取款业务客户登陆系统

3、后,选择取款业务,即可以将输入的取款金额从相应的银行账户取出,但是取款金额必须大于目前的账户余额。(5) 查询业务 客户登陆系统后,可以选择查询业务,查询账户余额。(6) 转账业务 客户登陆系统后,可以选择转账业务,进行转账。注意的是转账的目的账户必须是本系统已经存在的银行账户。(7) 修改密码客户登陆系统后,可以选择修改密码业务,进行密码修改。各阶段具体要求:1、需求分析阶段熟悉系统业务,从业务中抽取出系统的需求,形成完善的需求说明书。2、系统设计阶段根据需求,进行程序设计,包括定义系统的界面、定义系统数据的存储方式等,形成完善的设计说明书。3、编码实现阶段(1)完成代码编写 (2)要求代码

4、编写规范4、系统测试阶段(1)完成功能调试(2)要求完成必要的测试工作5、交付实施阶段(1)提交可正常执行的系统(2)提交系统需求说明书、设计说明书、程序代码(3)撰写课程设计报告书(4)要求规范地书写文档设计工作量:(1)软件设计:完成问题陈述中所提到的所有需求功能。(2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。工作计划:软件开发进度如下,论文同步进行;1.选定题目(2课时)2.需求分析(2课时)3.概要设计(2课时)4.详细设计(2课时)5.编码实现(8课时)6.系统测试(1课时)7.模拟实施(1课时)8.答辩(2课时)班级周次节次教室内容指导教师12计科1班1周

5、周一3-4致远楼1403布置任务黄娟1周周一5-8致远楼1403上机调试1周周二3-4致远楼1403上机调试1周周三5-8致远楼1403答疑1周周四5-8致远楼1403上机调试1周周五5-8致远楼1408答辩注意事项n 提交文档 长沙学院课程设计任务书(每学生1份) 长沙学院课程设计论文(每学生1份) 长沙学院课程设计鉴定表(每学生1份)指导教师签名: 日期: 教研室主任签名: 日期:系主任签名: 日期:长沙学院课程设计鉴定表姓名 刘江惠学号2012021102 专业计算机科学与技术班级12计科1设计题目银行ATM存取款系统指导教师黄娟指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见

6、:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;目 录第1章 问题描述21.1 设计内容21.2 设计要求21.2.1 功能要求21.2.2 界面要求31.2.3 技术要求3第2章 系统设计与实现42.1 系统总体设计42.1.1 数据结构设计42.1.2 各功能模块间的关系52.2 系统详细设计与实现52.2.1 主函数72.2.2 注册函数72.2.3 登陆函数92.2.4 存款函数112.2.5 取款函数122.2.6 转账函数152.2.7查询函数172.2.8 修改

7、密码18第3章 系统测试223.1 主菜单界面223.2 开户界面223.3 登陆界面233.3.1 存款233.3.2 取款243.3.3 转账243.3.4 修改密码253.3.5 查询26总结27第一章 问题描述1.1 设计内容本次实训设计了一个银行ATM存取款模拟管理系统,具有注册、登陆功能。用户登陆该系统后能为用户提供存款、取款、查询、转账和修改密码的功能。在这个过程中,利用到了文件等技术。1.1.1设计要求1.菜单设计:要有两个菜单,登陆之前有一个登陆和注册菜单,然后登陆进去后要有一个可以进入各个功能的菜单。2.注册设计:要求输入用户的一些个人信息。能够自己设置密码。并且给予客户账

8、号。 3.登陆设计:要求要验证用户的账号和密码。4.存款设计:要能输入金额并且能够与余额累加。5.取款设计:要能验证余额并且能够与余额相减。6转账设计:要能验证转入账号并且能够验证转出金额不大于余额。7账户查询设计:要能打印出账户的余额。1.2.1 功能要求 开户功能客户需要提供姓名、身份证号等信息,经过系统处理后,将产生的用户账号及客户信息写入账户文件中。2. 登录功能用户登陆时,必须在登陆界面输入其银行账户和密码,通过其正确输入的银行账户登陆系统,进入登陆界面后即可进行以下操作:(8) 取款要求客户输入取款金额,经过系统处理后,更新该账户所对应的账户余额。(9) 存款要求客户输入存款金额,

9、经过系统处理后,更新该账户所对应的账户余额。(10) 转账要求客户输入目标账号,再经过确认其账号输入是否有误来判断转账是否继续,在余额充足的条件下进行转账程序,否则提示余额不足。(11) 查询系统根据该客户的账户信息查询其信息文件,将查询结果显示出来。(12) 修改密码客户登陆系统后,可以选择密码修改业务,进行修改。1.2.2 界面要求1 界面设计要清晰合理;2 排版要整洁易于看懂;3 给出相关的注释。1.2.3 技术要求1 函数的定义和调用;2 循环语句的应用3 Switch语句的多分支选择;4 If 条件语句使用:包括if 语句类型的选择,及嵌套使用;5 熟悉结构体的应用及如何定义;6 函

10、数跳转需求的实现;7 熟悉对文件的使用; 第2章 系统设计与实现2.1 系统总体设计2.1.1 数据结构设计在整个程序中,有结构体类型的数据构成了一个链表,这里所用到的数据,有账户、姓名、密码、账户余额。具体类型定义如表2.1所示。表2.1 数据类型定义 数据定义类型长度姓名char20账户号码char8密码char10账户余额double-注: 1) 账户号码、客户名称、客户密码通常是一行字符串,所以将其设计成字符数组,再规定其字符串的长度。 2) 账户余额通常是带小数的,在C语言中可以用float、double等数据类型定义。在这里将账户余额定义为double类型的变量。2.1.2 各功能

11、模块间的关系该ATM银行管理系统的主界面由七个主要功能构成,在登陆界面中又由五个功能构成,其大致结构图如图所示。ATM管理系统退出登录注册转账退出修改密码查询取款存款图1.1功能流程图2.2 系统详细设计与实现2.2.1 主函数在打开的主界面中,通过switch语句来选择各项操作,在进入各函数的算法过程。其流程图如2.1所示。 开始登录注册在判断用户是否已经存在? 是 否注册信息 结束图2.1主函数流程图主要代码:int main() / 1 主函数 int flog=0; char a4; /登录的初始页面 printf(=欢迎使用ATM系统=n); printf( | 1 开户 n); p

12、rintf( | 2 登陆 n); printf(=n); while (flog=0) printf(请输入您的选项:); scanf(%s,a); /或者用gets(a);也可以 switch(a0) case 1:kh();flog=1;break; /跳转致开户函数 case 2:dl(),flog=1;break; /跳转致登陆函数 default:printf(输入错误,请从新输入!n); flog=0;break; system(pause); return 0; 2.2.2功能模块:注册对应函数:zc()输入:姓名,账号,密码,存款金额函数跳转:跳转到main;实现功能:为客户

13、注册开户流程图:开始 输入姓名、身份证号、密码。按照提示选择注册注册成功,生成账号回到主函数结束 图2.2注册函数流程图主要代码:void kh() / 2 新用户注册 FILE *fp; int i,s,flog=1; double money; char name20,password7,count20; printf(请输入你的姓名,账号,密码及存款数目n); /新用户信息输入 scanf(%s %s %s %lf,name,count,password,&money); i=strlen(password); /计算字符串数组长度函数 if(i6) printf(密码应小于六位!请重新

14、输入!n); kh(); /跳转致开户函数界面 fp=fopen(text.txt,r); /打开一个文本文件 text(只读) for(i=0;inumber;i+) fscanf(fp,%s %s %s %lf,,useri.password,useri.password,&useri.money); /磁盘文件输入函数 if(strcmp(count,useri.count)=0)flog=0; /标记为已经注册用户 fclose(fp); if(flog!=0) fp=fopen(text.txt,a+); /打开一个文件文本text(读写) fprintf(fp,

15、%s %s %s %.2lfn,name,count,password,money); /新用户信息收集 fclose(fp); number+=1; /标记已经注册的用户数量 printf(恭喜您注册成功n); printf (返回按 1n); scanf(%d,&s); if(s=1) system(cls); main();/清屏并且跳转致主函数界面 else printf(该用户已存在,您不能使用!n); kh(); 2.2.3功能模块:登录对应函数:dl()输入:账号,密码函数跳转:跳转到存款、取款、转账、查询修改密码相应功能项的函数;实现功能:登录进入功能选项;流程图:图2.3登陆

16、函数流程图开始请输入账号和密码判断用户账号和密码是否相同?进入主页面进行下面操作是否结束主要代码:void dl() / 已注册用户 FILE *fp; printf(请输入您的账号及密码!n); int flog=0,i,a=100; char temp_name20,temp_password7,temp_count20,k2; / 用户登录 while(flog=0) scanf(%s %s,temp_count,temp_password); /调试时空格分别输入 fp=fopen(text.txt,r); /打开一个文本文件 text(只读) for(i=0;inumber;i+)

17、/检索已经注册用户的信息 fscanf(fp,%s %s %s %lf,,useri.count,useri.password,&useri.money); if(strcmp(temp_password,useri.password)=0&strcmp(temp_count,useri.count)=0) a=i; fclose(fp); if(anumber) /当已经注册的用户大于100人时清屏 system(cls); menu(usera.count); /跳转至选择函数界面 flog=1; /标记为已经登陆用户 else printf(输入错误,请重新输入!n)

18、; dl();break; /跳转至登陆函数界面,结束循环 break; system(pause);2.2.4功能模块:存款 对应函数:ck()输入:金额;函数跳转:存款后返回到登录函数;实现功能:向账户存入一定金额; 流程图:开始输入要本次存入的金额。按照提示选择存款选项显示存款成功结束 图2.4存款函数流程图主要代码:void ck(char x20) / 1 存款功能 FILE *fp; int i,a=0; double t; printf(请输入存储金额:n); scanf(%lf,&t); /记录存款金额 fp=fopen(text.txt,r); for(i=0;inumber

19、;i+) fscanf(fp,%s %s %s %lf,,useri.count,useri.password,&useri.money); if(strcmp(x,useri.count)=0)a=i; /找到存款者 fclose(fp); usera.money+=t; /资金累加 fp=fopen(text.txt,w); /打开一个文本文件(只写) for(i=0;inumber;i+) fprintf(fp,%s %s %s %lfn,,useri.count,useri.password,useri.money); fclose(fp); p

20、rintf(存储成功!n); printf(返回请按 1n); /返回主函数 scanf(%d,&i); if(i=1) system(cls); menu(usera.count); /清屏并且跳转至选择函数界面 2.2.5功能模块:取款对应函数:qc()输入:账户,密码;函数跳转:取款成功后返回登陆函数,不成功则返回主函数;实现功能:从账户中取出一定金额,并保存剩余金额数;流程图:开始是否进入取款业务请输入取款金额判断取款金额是否小于存款金额取出现金,结算余额并保存结束是是还回主界面否否 图2.5取款函数流程图 主要代码: void qk(char x20) / 2 取款功能 FILE *

21、fp; int i,a=0; double t; /定义一个提取资金变量 printf(请输入提取金额:n); scanf(%lf,&t); fp=fopen(text.txt,r); /打开一个文件文本text(只读) for(i=0;i=t) /判断提取资金是否超出用户资金 usera.money-=t; fp=fopen(text.txt,w); /打开一个文件文本text(只写) for(i=0;inumber;i+) fprintf(fp,%s %s %s %lfn,,useri.count,useri.password,useri.money); /储存用户账户

22、金额 fclose(fp); printf(取款成功!n); /返回主函数 else printf(取款失败!n); printf(返回请按 1n); scanf(%d,&i); if(i=1) system(cls); menu(usera.count); /清屏并且跳转至选择函数界面 2.2.6功能模块:转账对应函数:zhuanz()输入:账户,密码;函数跳转:转账成功跳转到登录函数,否则回到主函数main;实现功能:实现用户间的转账;流程图:否开始输入要转入的账号判断该账号是否存在是输入转账金额是否判断转账金额是否大于余额结束 图2.6转账函数流程图主要代码:void zhuanz(ch

23、ar x20) / 3 转账功能 FILE *fp; double t; int a=100,i,b=100; char z20; /定义一个被转账用户名字符数组 printf(请输入对方账号!n); scanf(%s,z); /或者用gets(z);也可 printf(请输入转账金额n); scanf(%lf,&t); fp=fopen(text.txt,r); /打开一个文件文本text(只读) for(i=0;inumber;i+) fscanf(fp,%s %s %s %lf,,useri.count,useri.password,&useri.money); /

24、查询转账者 if(strcmp(z,useri.count)=0)b=i; fclose(fp); fp=fopen(text.txt,r); for(i=0;inumber;i+) fscanf(fp,%s %s %s %lf,,useri.count,useri.password,&useri.money); / 查询转账者 if(strcmp(x,useri.count)=0)a=i; if(b=t) /判断转账资金是否大于底金和转账用户人数是否大于被转账用户人数 fclose(fp); usera.money-=t; userb.money+=t; fp=fopen

25、(text.txt,w); for(i=0;inumber;i+) fprintf(fp,%s %s %s %lfn,,useri.count,useri.password,useri.money); / 记录转账后的信息 fclose(fp); printf(转账成功!n); else printf(账号或金额错误,转账失败n); printf(返回请按 1n); / 返回主函数 scanf(%d,&i); if(i=1) system(cls); menu(usera.count); 2.2.7功能模块:查询对应函数:cx()输入:账户,密码;输出:账户余额;函数跳转;

26、查询完毕后返回登录函数;实现功能:输出账户余额;流程图:结束显示余额选择查询余额开始 图2.7查询函数流程图 主要代码:void cx(char x20) / 4 查询功能 FILE *fp;printf(您的信息如下:n); int i,a=0; fp=fopen(text.txt,r); for(i=0;inumber;i+) fscanf(fp,%s %s %s %lf,,useri.count,useri.password,&useri.money); if(strcmp(x,useri.count)=0)a=i; / 记录要查询的人 printf(姓名:%s 账号

27、:%s 密码:%s 余额%.2lfn,,usera.count,usera.password,usera.money); fclose(fp); printf(返回请按 1n); scanf(%d,&i); if(i=1) system(cls); menu(usera.count); 2.2.8功能模块:修改密码对应函数:xg()输入:账户,密码;函数跳转:改密成功后返回到登录函数;实现功能:输出账户余额; 流程图:否是是返回主菜单否是是返回主菜单否是是返回主菜单判断原密码是否正确再次输入新密码输入新密码输入原密码开始 判断两次新密码是否相同判断两次新密码是否相同判断两次

28、新密码是否相同否 否 修改密码成功结束 图2.8修改密码函数流程图主要代码:void xg(char x20) / 5 修改密码 FILE *fp; int i,a; char password_17,password_27; printf(请输入密码n); fp=fopen(text.txt,r); for(i=0;inumber;i+) fscanf(fp,%s %s %s %lf,,useri.count,useri.password,&useri.money); /记录下要修改密码的人 if(strcmp(x,useri.password)=0)a=i; fclos

29、e(fp); scanf(%s,password_1); printf(请再输入密码n); /两次输入密码 scanf(%s,password_2); if(strcmp(password_1,password_2)=0) strcpy(usera.password,password_1); /把改过后的密码复制到原来密码函数 fp=fopen(text.txt,w); for(i=0;inumber;i+) fprintf(fp,%s %s %s %.2lfn,,useri.count,useri.password,useri.money); /写入磁盘文件 printf

30、(修改成功n); fclose(fp); printf(返回请按 1n); scanf(%d,&i); / 返回主函数 if(i=1) system(cls); menu(usera.count); /清屏并且跳转至选择函数界面 第3章 系统测试3.1 主菜单界面进入该银行管理系统时,弹出主菜单如图3.1所示,在主菜单上选择相应操作。输入相应操作选项,跳入开户注册界面或登录界面。图3.1 主菜单界面3.2 注册界面输入姓名,账号,密码以及存款金额,注册成功后提示注册成功;完成后返回按1。图3.2 注册界面3.3登录界面开户后选择登陆界面,提示输入账号和密码,如密码或账号错误,提示重新输入;如正确,进入登录后的五个功能界面选项;返回按1。图3.3登录界面3.4 存款界面选择存款业务后

温馨提示

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

评论

0/150

提交评论