C语言ATM程序设计.docx
《C语言ATM程序设计.docx》由会员分享,可在线阅读,更多相关《C语言ATM程序设计.docx(19页珍藏版)》请在冰豆网上搜索。
C语言ATM程序设计
C语言程序设计
专题实习
实
习
报
告
学校:
宁夏工业职业学院
系别:
2012级矿山机电系
姓名:
张峰周彦超魏宗涛董照明
班级:
矿山机电2班
实习时间:
2014—6—18
实习目的
1、通过这次专题实习,可以巩固和加深对所学相关知识点的理解.
2、进一步熟悉基本的流程控制结构---实现分支的if…else语句、switsh语句和实
现循环的for、while…、do…while语句、break、continue等。
3、基本数据类型、数组、结构体、自定义类、函数的应用.
4、加强对模块化程序设计和面向对象程序设计的理解。
5、掌握C/C++语言程序设计的基本思想,了解简单的系统分析和设计方法。
实现步骤:
(1)总体分析设计(画出模块结构图和系统流程图,理清程序思路)
(2)完成字符界面菜单
(3)结构体类型的定义
(4)主控函数main的编写
(5)修改信息
(6)录入信息,显示到屏幕
(7)查看储户信息
(8)查询金额
(9)排序
(10)退出
实验内容
ATM仿真程序
设计一个仿真自动柜员机(ATM)的程序包括提款、存款、查询余额、修改密码、退出等功能。
ATM保存多个储户的信息(姓名、身份证号、密码、金额)
程序具体实现如下功能:
a)系统以菜单方式工作
b)储户和管理员进入系统都需要用户名和密码
c)管理员可以录入储户信息、浏览全部储户的信息、排序、查询、修改储户信息;
d)储户登陆可以信息进行存款、取款、转账等操作;
e)系统退出
开始
选择操作者
登陆(验证密码)
登陆成功?
显示主菜单
输入功能选项
判断选项
用户取款
用户存款
查询金额
录入信息
查询用户
用户排序
退出系统
修改密码
浏览信息
结束
#includeh>
#includeh〉
#definemax20
voidcx();
voidqk();
voidzz();
voidxgmm();
voidtc();
voidck();
voidlr();
voidll();
voidpx();
voidcxyh();
voidxgzl();
voidyonghu();
voidguanliyuan();
voidmain()
{
intselect;
printf(”1储户\n”);
printf(”2管理员\n”);
printf(”请选择功能:
\n");
scanf(”%d”,&select);
switch(select)
{
case1:
yonghu();break;
case2:
guanliyuan();break;
default:
break;
}
}
voidyonghu()
{inti;
intnum=999666;
inttimes;
intselect;
system(”pause");
system("cls”);
do
{
system("color17");
printf(”\n\n\n\n”);
printf("\t\t\t欢迎使用\n”);
printf("\n\n”);
printf(”\t\t\t中国农业银行\n");
printf(”\n\n”);
printf("\t\tATM取款机管理系统\n\n");
system(”pause”);
system("cls”);
printf(”\n\n\n”);
printf("\t\t\t\t请插入磁卡\n”);
printf(”\n\n”);
system("pause");
system(”cls”);
do
{
for(times=1;times〈=3;times++)
{
printf(”请输入密码:
”);
scanf("%d",&i);
if(i==num)
{
printf(”欢迎进入”);
printf(”\n\n\n\n");
printf(”\t\t\t欢迎使用\n");
printf("\n\n");
printf("\t\t\t中国农业银行\n");
printf("\n\n");
printf("\t\tATM取款机管理系统\n\n");
system(”pause");
system("cls”);
printf("\n\n\n”);
printf(”\t\t\t\t请插入磁卡\n");
printf("\n\n");
do
{
system(”pause”);
system("cls");
printf("\n\n\n");
printf(”\t\t\t请选择您所需要的服务\n");
printf("\n\n”);
printf(”\t\t--—--—————————--—-—--—---—-———--—-—\n");
printf("\t\t|\t\t|\t\t|\n");
printf(”+1。
查询+|\n");
printf("+2.取款+\n");
printf(”3。
转账+|\n");
printf("+4.修改密码+\n");
printf(”+5.存款\n”);
printf(”+6.退出程序+\n");
system("pause”);
system("cls”);
printf("请选择功能:
”);
scanf(”%d",&select);
switch(select)
{
case6:
tc();break;
case1:
cx();break;
case2:
qk();break;
case3:
zz();break;
case4:
xgmm();break;
case5:
ck();break;
default:
printf(”输入有误,请在1~6之间选择。
\n");break;
}
}
while(”\n”);
system("pause");
system("cls”);
}
else
{
if(times〉=3)
tc();
}
}
}
while(i!
=num);
}
while
(1);
}
voidcx()
{
intmoney=5000;
printf("显示卡内余额%d元钱\n",money);
system(”pause”);
system("cls”);
}
voidqk()
{
intx,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);
}
elseif(x>=money)
{
printf(”您卡里余额不足”);
}
}
system(”pause”);
system(”cls”);
}
voidzz()
{
intmoney=5000,id=1234;
intidd;
intx;
inty;
do
{
printf("请输入卡号:
\n”);
scanf(”%d”,&idd);
if(idd==id)
{
printf(”您可以进行转账”);
}
elseif(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”);
}
voidck()
{
intmoney=5000;
intx,y;
printf("您要存入的金额\n");
scanf(”%d",&x);
y=money+x;
printf(”存款成功,请按确认键\n");
printf("您卡里的余额是%d元钱\n",y);
system("pause");
system(”cls");
}
voidxgmm()
{
intpassword=999666;
intx,x1;
printf("原密码是%d\n",password);
printf("请输入新密码:
”);
scanf(”%d",&x);
printf("请确认新密码");
scanf("%d”,&x1);
if(x==x1)
{
printf(”修改密码成功\n");
printf(”请牢记\n”);
printf(”新密码是%d\n",x);
}
else
{
printf(”两次密码不一致:
”);
printf("请重新输入\n");
scanf("%d”,&x);
system("pause”);
system(”cls");
}
}
voidtc()
{
printf(”欢迎下次光临\n”);
printf(”请取出你的卡\n”);
printf("谢谢\n");
exit(0);
}
voidguanliyuan()
{
intnum=456789;
intpasswd=123456;
inti;
intselect;
system(”pause");
system(”cls");
system("color17");
printf("\n\n\n\n”);
printf(”\t\t\t欢迎使用\n”);
printf("\n\n");
printf(”\t\t\t中国农业银行\n”);
printf("\n\n");
printf("\t\tATM取款机管理系统\n\n”);
system(”pause");
system("cls");
printf("欢迎进入管理系统\n”);
printf(”请输入管理员账户:
\n”);
scanf("%d”,&num);
printf("请输入密码:
\n");
scanf(”%d",&i);
if(i==passwd)
{
printf(”欢迎进入管理系统”);
}
elseif(i!
=passwd)
{
printf("密码有误,请重新输入:
\n”);
scanf(”%d”,&i);
}
do
{
system("pause”);
system("cls”);
printf("\n\n\n”);
printf(”\t\t\t请选择您所需要的服务\n");
printf("\n\n");
printf("\t\t--—-———---——-—-——-—---—-———-—-——---\n”);
printf(”\t\t|\t\t|\t\t|\n");
printf(”+1.录入用户资料+\n”);
printf("+2。
浏览用户资料+\n”);
printf(”+3.排序用户资料+\n");
printf(”+4。
查询用户资料+\n");
printf("+5.修改用户资料+\n”);
system(”pause”);
system(”cls");
printf(”请选择你所需要的功能:
”);
scanf("%d",&select);
switch(select)
{
case1:
lr();break;
case2:
ll();break;
case3:
px();break;
case4:
cxyh();break;
case5:
xgzl();break;
default:
printf("输入有误,请在1~5之间选择。
\n");break;
}
}
while("\n”);
}
voidlr()
{
charusername[max];
charsfzh[max];
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");
}
voidll()
{
charusername[max];
printf("请输入用户名:
\n”);
scanf(”%c",&username);
printf(”显示用户信息\n”);
printf(”卡上金额:
5000\n");
system(”pause”);
system("cls”);
}
voidpx()
{
intselect;
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");
}
voidcxyh()
{
intmethod;
intnum,num1;
charname[max];
printf(”\n请选择查询方式");
printf(”\n1。
按帐号查询”);
printf("\n2。
按用户名查询");
printf(”\n3.显示全部用户信息”);
printf(”\n4.返回主菜单\n”);
scanf("%d”,&method);
switch(method)
{
case1:
printf("\n请输入要查询的帐号:
”);
scanf(”%d",&num);
printf("\n帐号姓名身份证号码卡上金额\n”);
scanf(”%d”,&num1);
if(num==num1)
{
printf(”账号:
12345678\n”);
printf(”姓名:
张三\n");
printf(”身份证号码:
513901199010216121\n”);
printf(”卡上金额:
5000\n");
}
else
{
printf("对不起,你所查找的用户不存在\n”);
break;
}
case2:
printf("\n请输入要查询的用户名:
”);
scanf("%s”,name);
printf(”\n帐号姓名身份证号码卡上金额\n");
printf("账号:
12345678\n”);
printf("姓名:
张三\n");
printf("身份证号码:
513901199010216121\n”);
printf(”卡上金额:
5000\n");
break;
case3:
printf(”全部用户信息”);
scanf("%s”,name);
printf(”\n帐号姓名身份证号码卡上金额开户时间\n");
printf(”账号:
12345678\n”);
printf("姓名:
张三\n”);
printf(”身份证号码:
513901199010216121\n");
printf("卡上金额:
5000\n");
printf(”开户时间:
2008。
08.08\n");
break;
case4:
return;
default:
printf("很抱歉,暂无此查询方式!
”);
break;
}
system(”pause");
system("cls”);
}
voidxgzl()
{
charnum[max];
intselect;
charname1[max],khsj1[max],age1[max],id1[max];
printf("\n请输入要修改的用户的账号:
\n");
scanf("%s",num);
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)
{
case1:
scanf(”%s",name1);
break;
case2:
scanf("%s”,khsj1);
break;
case3:
scanf(”%s”,age1);
break;
case4:
scanf("%s”,id1);
break;
default:
break;
}
system(”pause”);
system("cls");
}
}
心得:
•经过一学期的C语言学习,我们掌握了C语言的基础知识,能够读懂别人用c语言设计的程序。
平时的程序设计大多是以填空的形式出现,虽然有所接触,但都不完全。
而这两周的课程设计,却让我们完完全全用自己学到的知识编写一个完整的体统程序.这是一个新的挑战,也是一种新的学习.都找不出毛病来的时候就会有想要放弃的念头。
有时候就直接关机去做别的事情,等再开始做程序的时候,才发现先前的错误所在。
这时候会有一种“柳暗花明又一村"的欣慰感觉.总之,遇到困难,可以先放一放,让脑子休息一下,忘掉错误的记忆。
或许等过段时间再回过头来,就会很容易的发现之前的错误了.随着编好的程序越多,累积的经验也越多,查找错误就越快了.还有会发现很多程序有很多相似之处,可以通过复制修改的发式来编写。
虽然题目要求只需要一种查询方式,但当我编出规律之后自然就想多写两个,写完就会有很大的成就感了。
•当所有功能函数都编好后,我用主函数将他们串起来,这是遇到最大的问题就是经过删除、添加后职工人数会发生变化。
想了很久,又翻以前的课堂笔记,最后想到了定义全局指针变量来解决这个问题。
这个问题的成功解决预示着我们的ATM系统大功告成!
•