银行账户信息管理汽院车联网工程.docx
- 文档编号:23711710
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:17
- 大小:17.22KB
银行账户信息管理汽院车联网工程.docx
《银行账户信息管理汽院车联网工程.docx》由会员分享,可在线阅读,更多相关《银行账户信息管理汽院车联网工程.docx(17页珍藏版)》请在冰豆网上搜索。
银行账户信息管理汽院车联网工程
C语言课程设计题目
根据需求,该系统所应包含的信息有以下一些:
银行账户的基本信息:
编号、客户姓名、客户地址、客户电话、账户总金额(最开始为0)。
共有5个客户。
根据需求,该系统所应实现的功能有以下一些:
1)存款:
输入客户编号、存款金额、存款日期,完成存款功能。
2)取款:
输入客户编号、存款金额、取款日期,完成取款功能。
3)查询指定客户的余额
4)查询指定客户的存款记录
5)查询指定客户的取款记录
#include
#include
#include
#include
#include
#defineLENsizeof(structinf)
#defineLINsizeof(structrecord)
intmenu_select();
voidaccount();
voidteller();
voidsearch();
voidlist_account();
voidlist_teller();
voidload();
intjudge(chardata[]);
voidwrite();
voidlist();
structinf
{
charnum[15];
charname[20];
charadd[30];
charphone[13];
doublesum;
};
structrecord
{
charnum[15];
charday[11];
doublechange;
structrecord*next;
}*head1,*head2;
structinfcustomer[5];
intmenu_select()
{
inta;
printf("\t\t*************银行账户信息管理***************\n");
printf("\t\t*****************菜单目录*******************\n");
printf("\t\t\t1.存款\n");
printf("\t\t\t2.取款\n");
printf("\t\t\t3.查询余额\n");
printf("\t\t\t4.查询存款记录\n");
printf("\t\t\t5.查询取款记录\n");
printf("\t\t\t6.显示所有客户信息\n");
printf("\t\t\t0.退出(任何情况下按Ctrl+C退出程序)\n");
printf("\t\t********************************************\n");
printf("\n输入你的选择(0~5):
\n");
scanf("%d",&a);
returna;
}
intmain()
{
load();
for(;;)
{
switch(menu_select())
{
case1:
system("cls");account();break;
case2:
system("cls");teller();break;
case3:
system("cls");search();break;
case4:
system("cls");list_account();break;
case5:
system("cls");list_teller();break;
case0:
system("cls");exit(0);return0;
default:
{
getchar();
printf("\n选择错误,请正确输入你的选择(0~5),:
\n");
printf("\n按任意键返回......\n");
getchar();
system("cls");
}
}
}
return0;
}
voidload()
{
FILE*fp;
inti;
if((fp=fopen("c:
\\info.txt","r"))==NULL)
{
printf("\t\t客户基本信息文件不存在!
!
!
\n\t请输入五位客户的信息(编号、姓名、地址、电话):
\n");
fp=fopen("c:
\\cnfo.txt","w");
for(i=0;i<5;i++)
{
scanf("%s%s%s%s",customer[i].num,customer[i].name,customer[i].add,customer[i].phone);
customer[i].sum=0;
fprintf(fp,"%s\t%s\t%s\t%s\t%.2lf\n",customer[i].num,customer[i].name,customer[i].add,customer[i].phone,&customer[i].sum);
}
fclose(fp);
printf("\n\t\5项信息输入完毕,按任意键返回......\n");
getchar();
system("cls");
}
else
{
while(!
feof(fp))
{
for(i=0;i<5;i++)
fscanf(fp,"%s%s%s%s%lf",customer[i].num,customer[i].name,customer[i].add,customer[i].phone,&customer[i].sum);
}
}
fclose(fp);
}
voidwrite()
{
FILE*fp;
inti;
if((fp=fopen("c:
\\info.txt","w"))==NULL)
{
printf("\n\t信息无法保存,按任意键返回......\n");
getch();
system("cls");
return;
}
for(i=0;i<5;i++)
{
fprintf(fp,"%s\t%s\t%s\t%s\t%.2lf\n",customer[i].num,customer[i].name,customer[i].add,customer[i].phone,customer[i].sum);
}
fclose(fp);
printf("\n\t信息已经保存完毕,按任意键返回......\n");
getch();
system("cls");
}
voidaccount()
{
inti;
chara[15],s[11],c;
doublemoney;
structrecord*t,*p;
load();
head1=(structrecord*)malloc(LIN);
head1->next=NULL;
p=head1;
printf("请输入您的编号、存款金额(>0)、存款日期(形式如YYYY-MM-DD)\n");
scanf("%s%lf%s",a,&money,s);
while
(1)
{
for(i=0;i<5;i++)
{
if(!
strcmp(customer[i].num,a))
{
if(judge(s)&&(money>0))
{
customer[i].sum+=money;
t=(structrecord*)malloc(LIN);
t->next=NULL;
strcpy(t->num,a);
strcpy(t->day,s);
t->change=money;
p->next=t;
p=t;
write();
system("cls");
}
else
{
printf("\n您的输入有误,请重新输入。
按任意键返回......\n");
getchar();
getchar();
system("cls");
break;
}
}
}
printf("继续存款吗(Y/N)?
?
?
('Y'继续,'N'停止!
)\n");
getchar();
scanf("%c",&c);
if(c=='Y'||c=='y')
{
system("cls");
printf("请输入您的编号、存款金额(>0)、存款日期(形式如YYYY-MM-DD)\n");
scanf("%s%lf%s",a,&money,s);
continue;
}
elseif(c=='N'||c=='n')
{
system("cls");
return;
}
else
{
printf("输入错误,请重新选择:
");
printf("继续取款吗(Y/N)?
?
?
('Y'继续,'N'停止!
)\n");
getchar();
scanf("%c",&c);
}
}
free(t);
}
voidteller()
{
inti;
chara[15],s[11],c;
doublemoney;
structrecord*t,*p;
load();
head2=(structrecord*)malloc(LIN);
head2->next=NULL;
p=head2;
printf("请输入您的编号、取款金额(>0)、取款日期(形式如YYYY-MM-DD)\n");
scanf("%s%lf%s",a,&money,s);
while
(1)
{
for(i=0;i<5;i++)
{
if(!
strcmp(customer[i].num,a))
{
if(judge(s)&&(money>0)&&(money<=customer[i].sum))
{
customer[i].sum-=money;
t=(structrecord*)malloc(LIN);
strcpy(t->num,a);
strcpy(t->day,s);
t->change=money;
p->next=t;
p=t;
write();
system("cls");
}
else
{
printf("\n您的输入有误,请重新输入。
按任意键返回......\n");
getchar();
getchar();
system("cls");
break;
}
}
}
printf("继续取款吗(Y/N)?
?
?
('Y'继续,'N'停止!
)\n");
getchar();
scanf("%c",&c);
if(c=='Y'||c=='y')
{
system("cls");
printf("请输入您的编号、取款金额(>0)、取款日期(形式如YYYY-MM-DD)\n");
scanf("%s%lf%s",p->num,&p->change,p->day);
continue;
}
elseif(c=='N'||c=='n')
{
system("cls");
return;
}
else
{
printf("输入错误,请重新选择:
");
printf("继续取款吗(Y/N)?
?
?
('Y'继续,'N'停止!
)\n");
getchar();
scanf("%c",&c);
}
}
free(t);
}
voidsearch()
{
charm[15];
inti;
printf("请输入您的编号:
\n");
scanf("%s",m);
for(i=0;i<5;i++)
{
if(!
strcmp(customer[i].num,m))
printf("您的卡号%s余额为%.2lf元\n",customer[i].num,customer[i].sum);
}
printf("\n按任意键返回......\n");
getchar();
getchar();
system("cls");
}
intjudge(char*date)
{
intleap;
intyear,month,day;
intflag=1;
if(strlen(date)==10)
{
if(date[4]=='-'&&date[7]=='-')
{
year=1000*(date[0]-'0')+100*(date[1]-'0')+10*(date[2]-'0')+date[3]-'0';
month=10*(date[5]-'0')+date[6]-'0';
day=10*(date[8]-'0')+date[9]-'0';
if(month>12)
{
printf("\n您的输入的月份有误。
\n请您重新正确输入:
\n");
flag=0;
}
if(month==2)
{
leap=(year%4==0&&year%100!
=0||year%400==0);
if(leap==1&&day>29)
{
printf("\n您输入的年份有误(您所输入的年份属于闰年,二月只有二十九天)\n请您重正确新输入:
\n");
flag=0;
}
if(leap==0&&day>28)
{
printf("\n您输入的年份有误(您所输入的年份属于平年,二月只有二十八天)\n请您重新正确输入:
\n");
flag=0;
}
}
if(month==4||month==6||month==9||month==11)
{
if(day>30)
{
printf("\n您输入的天数有误(您所输入的月份只有三十天)\n请您重新正确输入:
\n");
flag=0;
}
}
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if(day>31)
{
printf("\n您输入的月份有误(您所输入的月份只有三十天)\n请您重新正确输入:
\n");
flag=0;
}
}
}
else
{
printf("\n您输入的日期格式有误(正确格式为YYYY-MM-DD)\n请您重新正确输入:
\n");
flag=0;
}
}
else
{
printf("\n您输入的日期长度格式有误(正确为YYYY-MM-DD)\n请您重新正确输入:
\n");
flag=0;
}
returnflag;
}
voidlist_account()
{
charm[15];
inti;
structrecord*p1;
printf("请输入您查询的的编号:
\n");
scanf("%s",m);
for(i=0;i<5;i++)
{
if(!
strcmp(customer[i].num,m))
{
if(head1==NULL)
{
printf("\nb编号为%s的存款记录为空。
按任意键返回.....\n");
getchar();
system("cls");
return;
}
printf("编号为%s的存款记录:
\n",m);
printf("\n编号\t日期\t\t操作类别\t金额\n");
p1=head1->next;
while(p1!
=NULL)
{
if(!
strcmp(p1->num,m))
printf("%s\t%s\t存款\t\t%.2lf\n",p1->num,p1->day,p1->change);
p1=p1->next;
}
}
}
printf("\n按任意键返回......\n");
getchar();
getchar();
system("cls");
}
voidlist_teller()
{
charm[15];
inti;
structrecord*p1;
printf("请输入您查询的的编号:
\n");
scanf("%s",m);
for(i=0;i<5;i++)
{
if(!
strcmp(customer[i].num,m))
{
if(head2==NULL)
{
printf("\n编号为%s的取款记录为空。
按任意键返回.....\n",m);
getchar();
getchar();
system("cls");
return;
}
printf("编号为%s的取款记录:
\n",m);
printf("\n编号\t日期\t\t操作类别\t金额\n");
p1=head2->next;
while(p1!
=NULL)
{
printf("%s\t%s\t取款\t\t%.2lf\n",p1->num,p1->day,p1->change);
p1=p1->next;
}
}
}
printf("\n按任意键返回......\n");
getchar();
getchar();
system("cls");
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行 账户 信息管理 汽院车 联网 工程