沈阳航空航天大学课程设计学号2010040701021班级04070101姓名王翰章指导教师杨煦2011年9月28日沈阳航空航天大学课程设计任务书学院:自动化学院专业:测控技术与仪器班级:04070101学号:2010040701021题目:自动存取款机模拟一、课程设计时间2011~12第1学期第4周,共计1周,20学时。二、课程设计内容请你模仿自动存取款机系统,用C语言编写软件完成以下任务:1.登陆功能:某个用户输入账户名和密码,可以登陆ATM。注意:应有多个用户,并把信息保存在文件中。2.查询功能:登陆后,可以查询存款余额。3.存款功能:登陆后,可以向账户中存款。4.取款功能:登陆后,可以取款。注意:取款金额不能超过存款金额。提示:用户(账号、密码、存款余额、利率、开户银行)三、课程设计要求1.程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括、“数据输入”、“数据保存”、“信息查询”、“数据修改”、“退出”5项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。2.课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。四、指导教师和学生签字指导教师:学生签名:五、成绩六、教师评语沈阳航空航天大学设计用纸I目录一、需求分析......................................................1二、设计分析......................................................2三、主要界面截图..............................................5四、技术要点......................................................5五、个人总结......................................................8六、参考文献......................................................8七、源程序..........................................................9沈阳航空航天大学设计用纸1一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。该系统是一个较典型的银行存取款模拟系统,其使用者被假定为银行信用卡用户,系统应该具有安全、稳定、功能齐全的特点。1.安全性分析银行存取款机的数据涉及到取款机内储存的所有用户,数据量较大且对保密性的需求很高,所以要通过设置密码等手段确保数据不能被随意的删减和修改。2.稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。3.主要功能分析(1)账号及密码输入:允许用户输入账号、密码,对用户由于疏忽录入的非法数据,能够及时提示并更正。沈阳航空航天大学设计用纸2(2)登陆成功界面:共有三个选项,查询余额、取款、退出分别对应1、2、3选项,若序号输入不正确会予以提示。(3)余额查询:选定1后,进入查询界面,用户输入查询条件,系统规则地在界面显示查询结果,且显示的数据尽量全面。当输入卡号时,系统需要输入对应的密码(若密码错误则会有相应提示)密码与卡号相对应可查询到该用户的姓名、余额。(3)取款:选定2后,进入取款界面,用户输入取款金额,若取款金额大于存款金额则会提示“余额不足”,若小于则会在原余额上扣除取款金额。(4)退出:选定3后,进入退出界面,系统会延迟3-4秒重新跳回登陆界面,供其他用户使用。二、设计分析主要有5个功能模块,每个模块对应一个C语言子函数。这些函数原型及其功能简述如下:voiddljm();------登陆成功后出现的界面沈阳航空航天大学设计用纸3voiddl();------登陆voidcx();------查询voidqk();------取款voidtk();------退卡1、程序总体结构图图1沈阳航空航天大学设计用纸42、主要功能模块框图图2沈阳航空航天大学设计用纸5三、主要界面截图图1登陆成功后的操作图2查询及取款沈阳航空航天大学设计用纸6四、技术要点1、结构体的应用定义了结构体用来描述用户的姓名、卡号、密码以及金额。具体的定义如下:structatm//ATM自助银行{charname[10];intaccount;//卡号shortpassword;//密码floatmoney;//金额}at[10]={{ZhaoLin,1,1,4000},{MaFang,2,2,7000},{WangMing,3,3,5888},{MaJiu,4,4,7543},{HangHan,5,5,10000},{ZhangHu,6,6,4087},{MaFang,7,7,2765},{ZhouLi,8,8,4530},{HongShan,9,9,5693},{YuLi,10,10,7543}};沈阳航空航天大学设计用纸7所定义的结构体主要用于定义数组。2、循环语句与选择性分支语句的嵌套while(z!=-1){printf(\n\n请输入操作序号:);scanf(%d,&z);switch(z){case1:cx();break;//查询余额case2:qk();break;//取款case3:tk();break;//退卡default:printf(操作序号不合法!);return;}}3、关于延迟清屏时间for(i=0;i1000000000;i++);//延缓显示时间system(cls);//清屏沈阳航空航天大学设计用纸8main();//回初始界面,供其他用户使用此for循环语句可以使清屏函数延缓3-4秒执行,后调用main函数,完成整个操作过程后重新供其他用户登陆。五、个人总结在此次课设过程中,我遇到了许多困难,例如如何在没有用户注册的程序中直接能完成登陆,只需建立一个结构体数组,还有如何能做到像ATM机那样一个用户用完之后还能供其他用户使用,这些都是经过查找书籍和上网查找相关资料才得以解决。所以这次课设对我的帮助很大。六、参考文献1谭浩强.C程序设计.北京:清华大学出版社,20052詹红霞,visualc++6.0程序设计,西安:西安电子科技大学出版社,2009沈阳航空航天大学设计用纸9七、源程序#includestdio.h#includestdlib.hintx;//记录下标voiddljm();//登录成功后出现的界面voiddl();//登录voidcx();//查询voidqk();//取款voidtk();//退卡structatm//ATM自助银行{charname[10];intaccount;//卡号shortpassword;//密码floatmoney;//金额}at[10]={{ZhaoLin,1,1,4000},{MaFang,2,2,7000},{WangMing,3,3,5888},{MaJiu,4,4,7543},{HangHan,5,5,10000},{ZhangHu,6,6,4087},{MaFang,7,7,2765},{ZhouLi,8,8,4530},{HongShan,9,9,5693},{YuLi,10,10,7543}};//主函数voidmain(){printf(******************欢迎使用自动取款机**************\n);printf(**************************************************\n);dl();}//登录函数沈阳航空航天大学设计用纸10voiddl(){inta;//临时记录下标intaccount;//卡号shortpassword;//密码printf(请输入卡号:);scanf(%d,&account);for(a=0;a=9;a++){if(account==at[a].account){x=a;//将临时变量下标值存储到全局下标变量中printf(请输入密码:);scanf(%d,&password);if(password==at[a].password){printf(****************丫丫银行欢迎您的登录**************\n);printf(**************************************************\n);printf(登录成功,请选择操作\n);dljm();//登录成功界面break;}else{printf(密码输入错误\n);dl();//递归(调用自己,再来一次)}}}}//登录界面voiddljm()沈阳航空航天大学设计用纸11{intz;printf(查询余额---------1\n);printf(取款---------2\n);printf(退卡---------3\n);while(1){printf(\n\n请输入操作序号:);scanf(%d,&z);switch(z){case1:cx();break;//查询余额case2:qk();break;//取款case3:tk();break;//退卡default:printf(操作序号不合法!);return;}}}//查询余额voidcx(){printf(%s您卡上余额为%7.2f元,at[x].name,at[x].money);}//取款voidqk(){floata;printf(请输入取款金额:);scanf(%f,&a);if(aat[x].money)printf(你的余额不足);else{printf(您已取款%7.2f元,a);at[x].money=at[x].money-a;}沈阳航空航天大学设计用纸12}//退卡voidtk(){inti;printf(请取回您的卡\n);for(i=0;i1000000000;i++);//延缓显示时间system(cls);//清屏main();//回初始界面,供其他用户使用}