C语言 ATM 程序设计(31页).doc
-C语言程序设计专题实习实习报告学校:系别:姓名:班级:实习时间:实习目的 1、通过这次专题实习,可以巩固和加深对所学相关知识点的理解。 2、进一步熟悉基本的流程控制结构-实现分支的 if else 语句、switsh 语句和实 现循环的for、while、dowhile语句、break、continue等。 3、基本数据类型、数组、结构体、自定义类、函数的应用。 4、加强对模块化程序设计和面向对象程序设计的理解。 5、掌握C/C+语言程序设计的基本思想,了解简单的系统分析和设计方法。实现步骤: (1)总体分析设计(画出模块结构图和系统流程图,理清程序思路) (2)完成字符界面菜单 (3)结构体类型的定义 (4)主控函数main的编写 (5)修改信息 (6)录入信息,显示到屏幕 (7)查看储户信息(8)查询金额 (9)排序 (10)退出实验内容仿真程序 设计一个仿真自动柜员机(ATM)的程序包括提款、存款、查询余额、修改密码、退出等功能。 ATM 保存多个储户的信息(姓名、身份证号、密码、金额) 程序具体实现如下功能: a) 系统以菜单方式工作 b) 储户和管理员进入系统都需要用户名和密码 c) 管理员可以录入储户信息、浏览全部储户的信息、排序、查询、修改储户信息; d) 储户登陆可以信息进行存款、取款、转账等操作; e) 系统退出开 始选择操作者登陆(验证密码)登陆成功?显示主菜单输入功能选项判断选项用户取款用户存款查询金额录入信息查询用户用户排序退出系统修改密码浏览信息结束#include<stdio.h> #include <process.h> #define max 20 void cx(); void qk(); void zz(); void xgmm(); void tc(); void ck(); void lr();void ll();void px();void cxyh();void xgzl();void yonghu();void guanliyuan();void main() int select; printf("1 储户 n"); printf("2 管理员n"); printf("请选择功能:n"); scanf("%d",&select); switch(select) case 1: yonghu();break; case 2: guanliyuan();break; default:break; void yonghu() system("pause"); system("cls"); do system("color 17"); printf("nnnn"); printf("ttt 欢 迎 使 用n"); printf("nn"); printf("ttt 中 国 农 业 银 行n"); printf("nn"); printf("tt ATM 取 款 机 管 理 系 统nn"); system("pause"); system("cls"); printf("nnn"); printf("tttt请插入磁卡n"); printf("nn"); system("pause"); system("cls"); int i; int num = 999666; int times; do for(times=1;times<=3;times+) printf("请输入密码:"); scanf("%d",&i); if(i=num) printf("欢迎进入"); printf("nnnn"); printf("ttt 欢 迎 使 用n"); printf("nn"); printf("ttt 中 国 农 业 银 行n"); printf("nn"); printf("tt ATM 取 款 机 管 理 系 统nn"); system("pause"); system("cls"); printf("nnn"); printf("tttt请插入磁卡n"); printf("nn"); do system("pause"); system("cls"); printf("nnn"); printf("ttt请选择您所需要的服务n"); printf("nn"); printf("tt-n"); printf("tt|tt|tt |n"); printf("+ 1. 查询 + |n"); printf("+2. 取款+n"); printf("3. 转账 +|n"); printf("+4. 修改密码 +n"); printf("+5.存款 n"); printf("+ 6. 退出程序 +n"); system("pause"); system("cls"); int select; printf("请选择功能:"); scanf("%d",&select); switch (select) case 6:tc();break; case 1:cx();break; case 2:qk();break; case 3:zz();break; case 4:xgmm();break; case 5:ck();break; default :printf("输入有误,请在16之间选择.n"); break; while("n"); system("pause"); system("cls"); else if(times>=3)tc(); while(i!=num); while(1); void cx() int money=5000; printf("显示卡内余额%d元钱n",money); system("pause"); system("cls"); void qk() int x,y,money=5000; printf("本银行最低取款金额为100元n"); printf("请输入您要提取的金额:"); scanf("%d",&x); if(x>=100) if(x<=money) printf("您取了%d元钱",x); y=money-x; printf("您卡里的余额是%d元钱",y); else if(x>=money) printf("您卡里余额不足"); system("pause"); system("cls"); void zz() int money=5000,id=1234; int idd; int x; int y; do printf("请输入卡号:n"); scanf("%d",&idd); if(idd=id) printf("您可以进行转账"); else if(idd!=id) printf("请重新输入卡号n"); while(idd!=id); printf("请输入转账金额n:"); scanf("%d",&x); if(x<=money) printf("您转了%d元钱n",x); y=money-x; printf("您卡里的余额是%d元钱n",y); else printf("您卡里的余额不足n"); system("pause"); system("cls"); void ck()int money=5000; int x,y; printf("您要存入的金额n"); scanf("%d",&x); y=money+x; printf("存款成功,请按确认键n"); printf("您卡里的余额是%d元钱n",y); system("pause"); system("cls"); void xgmm() int password=999666; int x,x1; printf("原密码是%dn",password); printf("请输入新密码:"); scanf("%d",&x); printf("请确认新密码"); scanf("%d",&x1); if(x=x1) printf("修改密码成功n"); printf("请牢记n"); printf("新密码是%dn",x); else printf("两次密码不一致:"); printf("请重新输入n"); scanf("%d",&x); system("pause"); system("cls"); void tc() printf("欢迎下次光临n"); printf("请取出你的卡n"); printf("谢谢n"); exit(0);void guanliyuan() system("pause"); system("cls"); system("color 17"); printf("nnnn"); printf("ttt 欢 迎 使 用n"); printf("nn"); printf("ttt 中 国 农 业 银 行n"); printf("nn"); printf("tt ATM 取 款 机 管 理 系 统nn"); system("pause"); system("cls"); int num=456789;int passwd=123456;int i;printf("欢迎进入管理系统n");printf("请输入管理员账户:n"); scanf("%d",&num); printf("请输入密码:n"); scanf("%d",&i);if(i=passwd) printf("欢迎进入管理系统"); else if(i!=passwd) printf("密码有误,请重新输入:n"); scanf("%d",&i); do system("pause"); system("cls"); printf("nnn"); printf("ttt请选择您所需要的服务n"); printf("nn"); printf("tt-n"); printf("tt|tt|tt |n"); printf("+ 1. 录入用户资料 +n"); printf("+ 2. 浏览用户资料 +n"); printf("+ 3. 排序用户资料 +n"); printf("+ 4. 查询用户资料 +n"); printf("+ 5. 修改用户资料 +n"); system("pause"); system("cls"); int select; printf("请选择你所需要的功能:"); scanf("%d",&select); switch(select) case 1:lr();break; case 2:ll();break; case 3:px();break; case 4:cxyh();break; case 5:xgzl();break; default:printf("输入有误,请在15之间选择.n");break; while("n"); void lr() char usernamemax;char sfzhmax;printf("请输入用户名:n");scanf("%s",username);printf("请输入身份证号:n");scanf("%d",&sfzh); printf("信息输入成功n"); printf("请再次输入用户名:n");scanf("%s",username);printf("请再次输入身份证号:n");scanf("%d",&sfzh);printf("确认成功,请按任意键返回功能菜单n"); system("pause"); system("cls"); void ll() char usernamemax;printf("请输入用户名:n");scanf("%c",&username);printf("显示用户信息n");printf(" 卡上金额 :5000n"); system("pause"); system("cls"); void px() int select; printf("请选择排序方式:n");printf("A 按账号排序n ");printf(" B 按姓氏排序n"); printf(" C 按开户时间n"); printf(" D 返回主菜单n"); scanf("%d",&select); switch(select) case 'A': printf("n输出按账号排序的所有用户信息"); break; case 'B': printf("n输出按姓氏排序的所有用户信息"); break; case 'C': printf("n输出按开户排序的所有用户信息"); break; case 'D': return; default: printf("很抱歉,暂无此排序方式!"); break; system("pause"); system("cls"); void cxyh() int method;int num,num1; char namemax; printf("n请选择查询方式"); printf("n1.按帐号查询"); printf("n2.按用户名查询"); printf("n3.显示全部用户信息"); printf("n4.返回主菜单n"); scanf("%d",&method); switch(method) case 1: printf("n请输入要查询的帐号:"); scanf("%d",&num); printf("n帐号 姓名 身份证号码 卡上金额n "); scanf("%d",&num1); if(num=num1) printf("账号:12345678n"); printf("姓名:张三n"); printf("身份证号码: 513901199010216121n"); printf("卡上金额: 5000n"); else printf("对不起,你所查找的用户不存在n"); break; case 2: printf("n请输入要查询的用户名:"); scanf("%s",name); printf("n帐号 姓名 身份证号码 卡上金额n "); printf("账号:12345678n"); printf("姓名:张三n"); printf("身份证号码: 513901199010216121n"); printf("卡上金额: 5000n"); break; case 3: printf("全部用户信息"); scanf("%s",name); printf("n帐号 姓名 身份证号码 卡上金额 开户时间n"); printf("账号:12345678n"); printf("姓名:张三n"); printf("身份证号码: 513901199010216121n"); printf("卡上金额: 5000n"); printf("开户时间: 2008.08.08n"); break; case 4: return; default: printf("很抱歉,暂无此查询方式!"); break; system("pause"); system("cls"); void xgzl() char nummax; printf("n请输入要修改的用户的账号:n"); scanf("%s",num); int select; char name1max,khsj1max,age1max,id1max; printf("n请输入要修改的该用户的信息:"); printf("n1.用户名"); scanf("%s",&name1); printf("n2.开户时间"); scanf("%s",&khsj1); printf("n3.年龄"); scanf("%d",&age1); printf("n4.身份证号"); scanf("%c",&id1); scanf("%d",&select); printf("n请再次输入修改的信息:n"); printf("n1.用户名"); scanf("%s",&name1); printf("n2.开户时间"); scanf("%s",&khsj1); printf("n3.年龄"); scanf("%d",&age1); printf("n4.身份证号"); scanf("%c",&id1); switch(select) case 1: scanf("%s",name1); break; case 2: scanf("%s",khsj1); break; case 3: scanf("%s",age1); break; case 4: scanf("%s",id1); break; default: break; system("pause"); system("cls"); 心得体会:通过一周的专题实习的操作,对原本完全陌生的程序编写有了进一步的理解,虽然还不能够完全熟练的进行各种程序的编写,但对于我们已经学过的很多知识已经不在局限于最初刚学时那种懵懂的状态了。特别是结构体、选择函数、判断函数的运用。还有就是循环的嵌套、自定义类函数的操作都有了更多的了解。虽然在做的过程中遇到很多问题,甚至产生了放弃的想法,幸好理智战胜了冲动。在做时遇到很多不会的问题,经过老师和同学的帮助最后终于做出了正确的程序。在那一刻内心是多么的兴奋,那一刻觉得一周的操作时多么的值得啊!第 31 页-