课程设计报告课程类别:本科课程名称:程序设计基础(C语言)课程代号:指导教师:银行ATM自动取款机系统课程设计姓名:学号:姓名:学号:姓名:学号:学院:班级:《程序设计基础-C语言》课程设计报告第2页,共79页目录1.课程设计内容..................................................2.课程设计要求..................................................3.可行性研究...................................................4.需求分析.....................................................5.概要设计......................................................5.1功能模块图...............................................5.2功能模块描述.............................................5.3数据结构.................................................6.详细设计......................................................6.1功能流程图...............................................6.2重点设计.................................................7.测试与调试....................................................8.总结..........................................................8.1心得体会..................................................8.2不足与改进................................................9.参考文献......................................................《程序设计基础-C语言》课程设计报告第3页,共79页1.课程设计内容模拟银行的自动取款机ATM使用过程中的界面和用户交互过程2.课程设计要求(1)要求利用面向过程的方法以及C语言的编程思想来完成系统的设计;(2)在系统的设计中,要求运用菜单和文件实现系统功能。(3)在基本要求达到后,可进行创新设计,如存款、代缴电话费等,或设计友好的界面等。3.可行性研究系统是一个基于局域网、互联网和WINDOWS操作的系统,现有技术已较为成熟,利用现有技术完全可以实现系统开发目标。同时具有优秀的软件需求人员、软件设计人员、和具有丰富经验的软件测试人员。4.需求分析在市场经济的蓬勃发展和人们日益繁忙的条件下,现有的银行系统往往需要客户在办理手续时等待很长的时间,这不仅会浪费很多宝贵的时间,也会使得银行的业务人员十分的繁忙,需要很大的人力和财力。《程序设计基础-C语言》课程设计报告第4页,共79页5.概要设计5.1功能模块图此处除了系统的模块划分,还要重点描述三人分工情况,分工一定要明确。5.2功能模块描述银行自动取款机菜单界面设置储户信息修改密码查询余额取款转账取储户名储户信息类设置储户信息修改密码查询余额取款取密码取储户名转账《程序设计基础-C语言》课程设计报告第5页,共79页5.3数据结构#includestdio.h#includestdlib.hvoidmain(){intNum,a,code,ll=0,l=0,p,n,r=0,x,m,Num1,Num2;intnum[10],feng[10],money[10],s[6],t[6];inti=0;for(p=0;p9;p++){num[p]=000000;money[p]=5000;feng[p]=0;}loop://首先...请陈老师原谅我N多的goto...printf(_______________________________\n);printf(||\n);printf(|欢迎使用ATM自动取款机|\n);printf(||\n);printf(|~第一小组热情开发~|\n);《程序设计基础-C语言》课程设计报告第6页,共79页printf(|_______________________________|\n);printf(请输入卡号:);scanf(%d,&Num);fflush(stdin);if(Num==00){printf(是否进入管理员模式?1/2:);//是否进入管理员模式。scanf(%d,&a);fflush(stdin);switch(a){case1:{printf(请输入管理员密码(6位):);scanf(%d,&code);fflush(stdin);if(code!=num[0]){printf(密码不正确!\n);printf(按任意键返回。\n);while(getchar()!=EOF){system(cls);《程序设计基础-C语言》课程设计报告第7页,共79页gotoloop;}}else{guanlimoshi://密码输入正确后,进入管理模式.system(cls);printf(|-----欢迎进入管理员模式-------|\n);printf(|1:查询用户帐户信息|\n);printf(|2:返回欢迎界面|\n);printf(|______________________________|\n);printf(请选择:);scanf(%d,&n);fflush(stdin);switch(n){case1:system(cls);gotoguanli;break;case2:system(cls);gotoloop;break;}}}case2:{system(cls);《程序设计基础-C语言》课程设计报告第8页,共79页gotoloop;break;}default:printf(输入错误!\n);break;}}else{if(feng[Num]==1)//如果输入的不是管理员帐号,则判断该帐号是否被封.{printf(该帐号已被封存!\n);//如果被封,则返回开头.printf(按任意键返回。\n);while(getchar()!=EOF){system(cls);gotoloop;}}else//如果没被封,则开始输入密码.{printf(请输入密码:);state:scanf(%d,&code);《程序设计基础-C语言》课程设计报告第9页,共79页fflush(stdin);if(code!=num[Num]){printf(密码不正确!请重新输入:);i++;//计算输入错误几次.if(i3)gotostate;else{printf(连续三次出错!\n);++r;//计算连续三次出错共有几次.if(r2)//小于2则返回欢迎界面.{i=0;printf(按任意键返回。\n);while(getchar()!=EOF){system(cls);gotoloop;}}else//大于2则封存帐户,然后返回欢迎界面.{《程序设计基础-C语言》课程设计报告第10页,共79页printf(您的帐号已被封存.\n);feng[Num]=1;printf(按任意键返回。\n);while(getchar()!=EOF){system(cls);gotoloop;}}}}else//如果密码输入正确,则进入用户页面.{system(cls);shuru:printf(|---欢迎使用ATM自动取款机---|\n);printf(|1.取款2.余额查询|\n);printf(|3.密码修改4.转帐|\n);printf(|5.历史交易纪录查询|\n);printf(|6.返回欢迎界面|\n);printf(|___________________________|\n);printf(请输入选项:\n);《程序设计基础-C语言》课程设计报告第11页,共79页scanf(%d,&x);fflush(stdin);switch(x)//进行选择.{case1:system(cls);gotoqukuan;break;case2:system(cls);gotoyuechaxun;break;case3:system(cls);gotomimaxiugai;break;case4:system(cls);gotozhuanzhang;break;case5:system(cls);gotolishijilu;break;case6:system(cls);gotoloop;break;default:printf(输入错误!\n);system(cls);gotoshuru;}}}qukuan://进入取款页面.printf(|----取款----|\n);printf(|1.取款|\n);printf(|2.返回|\n);printf(|------------|\n);scanf(%d,&x);fflush(stdin);《程序设计基础-C语言》课程设计报告第12页,共79页switch(x){case1:{if(l5000)//判断累计取款额.{printf(累计取款超过5000元,系统出错.\n);printf(按任意键返回。\n);while(getchar()!=EOF){system(cls);gotoshuru;}}else//若低于5000,则开始取款.{if(money[Num]100)//判断此时余额,进行屏幕打印.{printf(余额不足.\n);//以下N个疯狂的循环道理同此.printf(按任意键返回。\n);while(getchar()!=EOF){system(cls);//原谅我吧蒋老师...我实在没想出啥好方法...gotoshuru;《程序设计基础-C语言》课程设计报告第13页,共79页}}elseif(money[Num]200)//现金在0~200元之间时。{printf(请选择:1.100元2.返回上一级\n);scanf(%d,&n);fflush(stdin);switch(n){case1:{printf(正在取款,请稍候......\n);money[Num]-=100;l+=100;printf(取款成功!\n);printf(按任意键返回。\n);while(getchar()!=EOF){system(cls);gotoqukuan;}break;}case2:gotoshuru;break;《程序设计基础-C语言》课程设计报告第14页,共79页default:{printf(输入错误!\n);printf(按任意键返回。\n);while(getchar()!=EOF){system(cls);gotoqukuan;}break;}}}elseif(money[Num]500)//现金在0~500元之间时。{printf(请选择:1.100元2.200元3.返回上一级.\n);scanf(%d,&n);fflush(stdin);switch(n){case1:{printf(正在取款,请稍候......\n);money[Num]-=100;l+=100;《程序设计基础-C语言》课程设计报告第15页,共79页printf(取款成功!\n);printf(按任意键返回。\n);while(getchar()!=EOF){system(cls);gotoqukuan;}break;}case2:{printf