程序设计报告 B1514Word格式文档下载.docx
- 文档编号:21941836
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:32
- 大小:556.97KB
程序设计报告 B1514Word格式文档下载.docx
《程序设计报告 B1514Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《程序设计报告 B1514Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。
三、概要设计
1.系统总框图:
2.函数功能详解:
2.1银行登录功能
客户进入银行取款机登录界面时,按照指定的要求进行操作,当提示客户输入身份证号(卡号),当系统接收到客户的输入信息时,将文件中的信息输到链表中,进行遍历核对,当系统接收到客户的输入信息时,将文件中的信息输到链表中,进行遍历核对,若客户输入的银行卡号与注册的卡号不相同,则提示客户输入有误,让客户重新输入。
三次输入银行卡号有误,系统将自动退出。
若输入卡号正确,则进入下一个流程。
当提示客户输入银行卡密码,当系统接收到客户的输入信息时,将文件中的信息输到链表中,进行遍历核对,若客户输入的银行卡密码与注册的银行卡密码不相同,则提示客户输入有误,让客户重新输入。
2.2银行取款功能
客户进入银行取款界面时,在银行取款界面中显示客户可取金额数目项目,客户按照指定金额对应的阿拉伯数字输入即可。
当客户按照指定的要求输入时,将对客户输入的金额与用户里面的余额进行比较,若客户输入的金额大于现有余额,则提示客余额不足,返回功能选择界面。
若客户输入的金额小于客户原有余额,则按p->
money-=i的公式从客户原有余额中减去当下所取金额,然后提示取款成功,并显示客户现有余额。
2.3余额查询功能
客户在进入银行查询界面时,系统自动从链表中读取与该客户相匹配的余额。
2.4修改密码功能
客户进入登录界面时,系统自动提示客户输入银行卡原密码,当系统接收到客户的输入的信息时,遍历链表中的信息与客户输入的密码进行核对,若客户输入的银行卡原密码与注册的银行卡密码不相同,则提示客户输入有误,系统将自动返回功能选择界面。
若输入密码正确,提示客户输入新密码,若第一次输入的新密码不为六位或六位相同则返回界面,若所输入密码符合要求且两次输入相同则保存好客户修改的新密码。
下次登录只能用新密码才能成功登录。
3.重要函数流程图
1.登陆函数流程图
2.修改密码函数流程图
四、源程序代码
#include<
stdio.h>
string.h>
stdlib.h>
structper/*定义结构体*/
{
charname[20];
charID[20];
intmoney;
charmima[20];
structper*next;
};
typedefstructperson/*定义另一结构体*/
{
structperkehu;
structperson*next;
}L;
voidchaxun(structper*head);
/*各个函数的声明*/
voidkaihu(structper*head);
voiddenglu(structper*head);
voidcaidan(structper*head);
voidqukuan(structper*head);
voidxgmm(structper*head);
voidcunkuan(structper*head);
voidchuangjian(structperson**Phead);
voidshuchu(structperson*Phead);
voidshanchu(structperson**Phead);
voidzengjia(structperson**Phead);
voidtuichu();
1.主函数
/////////////////////////////////////////////
voidmain()
{system("
colora"
);
charx;
charchoose;
/*choose为定义输入选择的变量*/
intflag=1;
structperson*Phead=NULL;
/*Phead为定义二层头指针*/
structper*head=NULL;
/*head为定义一层头指针*/
printf("
********************************\n"
**欢迎使用ATM自动取款机系统***\n"
********************************\n\n\n\n"
---------------------------\n"
|1开户|\n"
|2登录|\n"
|请选择您的需求|\n"
scanf("
%s"
&
x);
system("
cls"
switch(x)
{
case'
1'
:
system("
kaihu(head);
/*调用开户函数*/
break;
2'
denglu(head);
/*调用登陆函数*/
}
while(flag)
{
tuichu();
}
}
2.开户函数
////////////////////////////////
voidkaihu(structper*head)
head=NULL;
FILE*fp;
/*定义文件指针*/
structper*p1=NULL,*p2=NULL;
/*p1,p1为定义链表指针*/
p1=(structper*)malloc(sizeof(structper));
/*开辟内存单元*/
请输入您的姓名:
\n"
/*将数据输入链表中*/
p1->
name);
请设置您的卡号:
ID);
请设置您银行卡密码:
mima);
p1->
money=10000;
next=NULL;
您的个人信息为\n"
姓名:
%s\n卡号:
%s\n余额:
%4d\n"
name,p1->
ID,p1->
money);
您的初始金额为10000元\n"
if(NULL==head)/*为新增客户开辟内存单元*/
head=(structper*)malloc(sizeof(structper));
head->
next=p1;
/*进行头插法,将其作为第一个节点*/
else/*为新增客户开辟内存单元*/
for(p2=head;
p2->
next!
=NULL;
p2=p2->
next);
/*进行尾插*/
p2->
next=p1;
if((fp=fopen("
save.txt"
"
ab+"
))==NULL)/*打开文件*/
cannotopenfile\n"
return;
if(fwrite(p1,sizeof(structper),1,fp)!
=1)/*将链表信息写入文件中*/
filewriteerror\n"
fclose(fp);
恭喜您开户成功,请登录\n"
pause"
3.登陆函数
voiddenglu(structper*head)
chard[20];
inti,j;
structper*p,*q=NULL;
rb+"
))==NULL)/*打开一个二进制文件,为读方式*/
{
不能打开文件\n"
/*如不能打开,则结束程序*/
}
p=(structper*)malloc(sizeof(structper));
/*申请空间*/
head=p;
while(!
feof(fp))/*循环读数据直到文件尾结束*/
{
if(1!
=fread(p,sizeof(structper),1,fp))
/*如果没读到数据,跳出循环*/
p->
next=(structper*)malloc(sizeof(structper));
/*为下一个结点申请空间*/
q=p;
/*保存当前结点的指针,作为下一结点的前驱*/
p=p->
next;
/*指针后移,新读入数据链到当前表尾*/
}
q->
next=NULL;
/*最后一个结点的后继指针为空*/
***********************\n"
* 欢迎使用本银行*\n"
for(j=1;
j<
4;
j++)/*限制卡号输入的次数的循环*/
请您输入卡号\n"
d);
for(q=head;
q!
q=q->
next)/*遍历链表*/
if(strcmp(q->
ID,d)!
=0)/*核对账号*/
continue;
/*跳出循环*/
else
for(i=1;
i<
i++)/*限制密码输入的次数的循环*/
\n\n请输入您的密码\n"
mima);
mima,mima)!
=0)/*核对密码*/
密码不正确,请重新输入密码\n"
/*若密码不对,跳出循环*/
caidan(head);
/*调用菜单函数*/
\n\n\n您输入密码三次错误,谢谢光临\n"
system("
exit(0);
\n\n\n您输入的卡号有误,请重试\n"
您的卡号三次输入错误,谢谢使用"
4.银行菜单函数
//////////////////////////////////////////
voidcaidan(structper*head)
inti;
/*i为客户选择输入的变量*/
while
(1)
请选择您需要的业务\n"
/*银行业务菜单*/
***********************************\n"
**1取款*****2查询**\n"
**3存款*****4修改密码**\n"
************5退出*****************\n"
***********************************\n\n\n"
%d"
i);
if(i<
5||i>
0)
switch(i)
case1:
qukuan(head);
/*调用银行取款函数*/
case2:
chaxun(head);
/*调用银行查询函数*/
;
case3:
cunkuan(head);
/*调用银行修改密码函数*/
case4:
xgmm(head);
/*调用银行存款函数*/
case5:
/*调用银行退出函数*/
}}
您的输入有误\n"
5.银行取款函数函数
voidqukuan(structper*head)
head=NULL;
/*head为链表头指针*/
inti;
FILE*fp;
请输入您要取款的金额\n"
if(i%100!
=0||i<
=0)/*限制输入范围*/
对不起,您的输入有误\n\n"
if(i>
q->
money)
对不起,您的余额不足\n"
/*调用取款机菜单函数*/
money-=i;
/*对金额进行处理*/
wb+"
if(fwrite(q,sizeof(structper),1,fp)!
=1)/*将修改的信息重新写入文件*/
您已成功走取%d元\n"
i);
/*关闭文件*/
6.银行查询函数
voidchaxun(structper*head)
/*链表头指针*/
您卡上原有余额为%d元\n\n"
q->
money);
7.银行修改密码函数
voidxgmm(structper*head)
charmima1[20];
charmima2[20];
请输入您的原密码\n"
mima,mima)==0)/*核对密码*/
密码正确\n"
请输入您的新密码:
scanf("
mima1);
if(strlen(mima1)!
=6)
{
printf("
请输入六位的密码\n"
system("
}
else
if(mima1[1]==mima1[2]&
&
mima1[2]==mima1[3]&
mima1[3]==mima1[4]&
mima1[4]==mima1[5]&
mima1[0]==mima1[1])
{printf("
六位不能相同\n"
system("
return;
else
printf("
请再次输入您的新密码\n"
mima2);
if(strcmp(mima1,mima2)==0)
{strcpy(q->
mima,mima2);
if((fp=fopen("
))=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计报告 B1514 程序设计 报告