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