c语言银行卡管理系统.docx

上传人:b****6 文档编号:4586607 上传时间:2022-12-07 格式:DOCX 页数:17 大小:180.49KB
下载 相关 举报
c语言银行卡管理系统.docx_第1页
第1页 / 共17页
c语言银行卡管理系统.docx_第2页
第2页 / 共17页
c语言银行卡管理系统.docx_第3页
第3页 / 共17页
c语言银行卡管理系统.docx_第4页
第4页 / 共17页
c语言银行卡管理系统.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

c语言银行卡管理系统.docx

《c语言银行卡管理系统.docx》由会员分享,可在线阅读,更多相关《c语言银行卡管理系统.docx(17页珍藏版)》请在冰豆网上搜索。

c语言银行卡管理系统.docx

c语言银行卡管理系统

1.题目要求

题目十三:

银行卡管理系统设计

设计银行卡管理系统,系统主要模块:

实现系统内制卡、发卡功能;

实现系统内账户及相关账户管理;

实现卡交易和合法性检查;

实现卡金融交易积分功能;

实现卡报表功能;

数据以文件形式存储。

(提示)

制卡:

指申请一张银行卡,但还没有使用。

发卡:

指该银行卡已经启用。

实现卡交易:

指从卡中取出掉一定的金额。

 

2.需求分析

structCCard

{

charcardNo[20];//卡号

charname[20];//持卡人姓名

charID[20];//持卡人身份证号码

charpassword[20];//密码

intflag;//标志该卡是否启用(0表示未启用,1表示启用)

floataccount;//账户金额

fntintegral;//积分

}card[M];

(1)制卡指申请一个银行卡。

即建立一个CCard对象,输入信息对其初始化。

(2)账户信息存储到账户信息文件中,当制作一新卡时,就把该新卡追加到账户信息文件。

对账户信息的管理需要实现账户信息查询,用基本的查找算法按卡号对账户信息文件进行查找,并打印输出。

(3)实现卡交易和合法性检查。

用户首先依靠卡号和密码登陆(通过查找账户信息文件,来查看卡号和密码是否正确匹配),输入交易金额,如果account>=输入金额,则输出“交易成功!

”,并更改account=account-输入金额。

否则输出“对不起,您的余额不够!

”。

(4)实现卡金融交易积分功能。

在把积分初始化为0,只需在卡交易的时候,把交易金额取整加到积分上。

(5)实现卡报表功能。

读账户信息文件,分屏输出所有账户的帐号和交易金额

3.总体设计

分析了整个系统之后,根据上面的系统需求分析,可以将这个系统的设计分为如下七大模块:

制卡、发卡、存款、取款、查询账户相关信息、查询账户交易记录、查询全部信息

4.详细设计

#include

#include/*调用字符函数*/

#include

#include/*通用输入输出库*/

#include

#defineM1000

voidmenu();

voidmade();

voidadd();

voidlife();

voidenter();

voidbrowse();

voidhuo(intk);

voidhedui(intk);

voidmenu1(intk);

voidfetch(intk);

voidchange(intk);

voiddeposit(intk);

voidstat_one(intk);

voidprint_one(intj);

intsearch(charh[20]);

intn=0;

structCCard/*定义信用卡结构体*/

{

intnumber;

charcardNO[20];//卡号

charname[20];//持卡人姓名

charID[20];//持卡人身份证号码

charpassword[20];//密码

intflag;//标志该卡是否启用(0表示未启用,1表示启用)

floataccount;//账户金额

intintegal;//积分

}card[M];

voidmenu()/*主菜单*/

{

intv,w1;

do

{

printf("\n\n\n\n");

printf("\t\t<_______________________THEMENU______________________>\n");

printf("\t\t||

(1)制卡操作||\n");

printf("\t\t||------------------------------------------------------||\n");

printf("\t\t||

(2)帐号激活||\n");

printf("\t\t||------------------------------------------------------||\n");

printf("\t\t||(3)帐户登录||\n");

printf("\t\t||------------------------------------------------------||\n");

printf("\t\t||(4)报表操作||\n");

printf("\t\t||------------------------------------------------------||\n");

printf("\t\t||(5)退出||\n");

printf("\t\t||______________________________________________________||\n");

printf("\n\n\t\t请选择操作(1--5):

<>\b\b");

scanf("%d",&v);

if(v<1||v>5)

{

printf("\n\n\t\t**********输入有误!

************");

w1=1;

getchar();

}

elsew1=0;

}

while(w1==1);

switch(v)

{

case1:

made();break;/*制卡操作*/

case2:

life();break;/*账号激活*/

case3:

enter();break;/*账户登录*/

case4:

browse();break;/*报表操作*/

case5:

exit(0);/*退出*/

}

}

voidmain()/*主题*/

{

printf("\n\n\n\n\n\n\n\n\n");

printf("\t\t*********************银行卡管理系统************************\n");

menu();

}

voidmade()/*制卡操作*/

{

inti;

charh[20];

do

{

printf("\n\n\t请输入要申请的号码:

<\t\t\t>\b\b\b\b\b\b\b");

scanf("%s",h);

if(strlen(h)!

=6)

{

printf("\n\n\n\t\t**************输入有误,请重新输入***************\n\n");

continue;

}

for(i=0;i

if(strcmp(card[i].cardNO,h)==0)

{

printf("\n\n\t\t**********该号码已经存在,请重新输入**********\n\n");

break;

}

}

while(((strlen(h))!

=6)||strcmp(card[i].cardNO,h)==0);

card[n].number=n;

strcpy(card[n].cardNO,h);

strcpy(card[n].name,"***");

strcpy(card[n].ID,"********");

strcpy(card[n].password,"000000");

card[n].flag=0;

card[n].account=0.00;

card[n].integal=0;

printf("\n\n\n\t\t********************制卡成功!

**********************\n\n");

print_one(n);

n++;

add();

menu();

}

voidprint_one(intj)/*显示消息*/

{

printf("\n|----|--------------|----------|----------------|----|----------|----------|");

printf("\n|NO.|姓名|卡号|ID|flag|account|integal|");

printf("\n|----|--------------|----------|----------------|----|----------|----------|");

printf("\n|%4d|%14s|%10s|%16s|%4d|%10.2f|%10d|",

card[j].number,card[j].name,card[j].cardNO,card[j].ID,card[j].flag,card[j].account,card[j].integal);

printf("\n|----|--------------|----------|----------------|----|----------|----------|");

}

voidlife()/*登录*/

{

intk=-1;

charh[20];

if(n==0)

printf("\n\n\t\t****************请先制卡*********************\n");

else

{

printf("\n\n\t请输入银行卡号码:

<\t\t\t>\b\b\b\b\b\b\b");

scanf("%s",h);

k=search(h);

if(k==-1)

printf("\n\n\t\t\t*****************该号码不存在!

****************\n");

else

{

if(card[k].flag==1)

printf("\n\n\t\t****************该卡已经激活!

*****************\n");

elsehuo(k);

}

}

menu();

}

intsearch(charh[20])

{

inti,k=-1;

for(i=0;i

if(strcmp(card[i].cardNO,h)==0)k=i;

return(k);

}

voidhuo(intk)/*激活操作*/

{

charm[20],q[20],p[20];

intx,w2;

do

{

printf("\n\n\t\t是否激活该卡?

(1)是

(2)否\n");

printf("\n\t\t请选择卡号:

<>\b\b");

scanf("%d",&x);

if(x!

=1&&x!

=2)

{w2=1;getchar();}

elsew2=0;

}

while(w2==1);

if(x==1)

{

printf("\n\n\t\t请输入姓名:

<\t\t\t>\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%s",m);

strcpy(card[k].name,m);

printf("\n\n\t\t请输入身份证号码:

<>\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%s",q);

strcpy(card[k].ID,q);

printf("\n\n\t\t请输入六位数密码:

<>\b\b\b\b\b\b\b");

scanf("%s",p);

strcpy(card[k].password,p);

card[k].flag=1;

printf("\n\n\n\t\t*******************激活成功!

**********************\n\n");

print_one(k);

add();

}

}

voidenter()/*进入*/

{

intk=-1;

charh[20];

if(n==0)

printf("\n\n\t\t****************请先制卡*********************\n");

else

{

printf("\n\n\t请输入银行卡号码:

<\t\t\t>\b\b\b\b\b\b\b");

scanf("%s",h);

k=search(h);

if(k==-1)

printf("\n\n\t\t\t*****************该号码不存在!

****************\n");

else

{

if(card[k].flag=0)

printf("\n\n\t\t************该卡还未激活,请先激活!

************\n");

else

hedui(k);

}

}

menu();

}

voidhedui(intk)/*验证核对*/

{

intc=0,w3=0;

charp[8];

do

{

printf("\n\n\t\t*******请输入密码:

<>\b\b\b\b\b\b\b");

scanf("%s",p);

if(strcmp(card[k].password,p)!

=0)

{

printf("\n\n\t\t********密码不正确,请重新输入!

**********\n");

continue;

}

else

{

printf("\n\n\t\t**********密码正确!

***********\n");

w3=1;

menu1(k);

}

}

while(w3==0&&c<3);

}

voidmenu1(intk)/*副菜单*/

{

intv,w4;

do

{

printf("\n\n\n");

printf("\t\t<_______________________THEMENU1______________________>\n");

printf("\t\t||

(1)查询||\n");

printf("\t\t||------------------------------------------------------||\n");

printf("\t\t||

(2)存款||\n");

printf("\t\t||------------------------------------------------------||\n");

printf("\t\t||(3)取款||\n");

printf("\t\t||------------------------------------------------------||\n");

printf("\t\t||(4)修改密码||\n");

printf("\t\t||------------------------------------------------------||\n");

printf("\t\t||(5)返回主菜单||\n");

printf("\t\t||______________________________________________________||\n");

printf("\n\n\t\tChoiceyournumber(1--5):

<>\b\b");

scanf("%d",&v);

if(v<1||v>5)

{w4=1;getchar();}

elsew4=0;

}

while(w4==1);

switch(v)

{

case1:

stat_one(k);break;

case2:

deposit(k);break;

case3:

fetch(k);break;

case4:

change(k);break;

case5:

menu();

}

}

voidstat_one(intk)

{

printf("\n\n\t\t*************操作成功!

***************");

print_one(k);

menu1(k);

}

voidadd()

{

inti;

FILE*fp;

if((fp=fopen("jieguo.txt","wb"))==NULL)

{

printf("\t\tCannotopenthefile\n");

return;

}

for(i=0;i

if(fwrite(&card[i],sizeof(structCCard),1,fp)!

=1)

{

printf("\t\terror\n");

return;

}

fclose(fp);

printf("\n\n\n\t\t************成功保存************");

}

voiddeposit(intk)/*存款*/

{

floata=0.00;

printf("\n\n\t\t请输入存款金额:

<\t\t>\b\b\b\b\b\b\b\b\b\b\b");

scanf("%f",&a);

card[k].account+=a;

printf("\n\n\t\t**********存款成功!

***********");

print_one(k);

add();

menu1(k);

}

voidfetch(intk)/*取款*/

{

floatb=0.00;

printf("\n\n\t\t请输入取款金额:

<\t\t>\b\b\b\b\b\b\b\b\b\b\b");

scanf("%f",&b);

if(b>card[k].account)

printf("\n\n\t\t**********对不起,您的余额不足*************");

else

{

card[k].account-=b;

card[k].integal+=b;

printf("\n\n\t\t**********交易成功***********");

print_one(k);

add();

}

menu1(k);

}

voidchange(intk)/*修改密码*/

{

chara[20],b[20];

printf("\n\n\t\t请输入新六位数密码:

<>\b\b\b\b\b\b\b");

scanf("%s",a);

printf("\n\t\t请再次输入新六位数密码:

<>\b\b\b\b\b\b\b");

scanf("%s",b);

if(strcmp(a,b)==0)

{

printf("\n\n\t\t**********密码修改成功!

*************");

add();

}

else

printf("\n\n\t\t两次密码输入不一致,密码修改失败!

");

menu1(k);

}

voidbrowse()

{

inti;

if(n==0)

printf("\n\n\t\t**********无记录,请先制卡!

***********");

else

{

printf("\n\n\t\t*************操作成功!

**************\n");

printf("\n|----|--------------|----------|----------------|------|----------|----------|");

printf("\n|NO.|姓名|卡号|ID|flag|account|integal|");

printf("\n|----|--------------|----------|----------------|------|----------|----------|");

for(i=0;i

printf("\n|%4d|%14s|%10s|%16s|%4d|%10.2f|%10d|",

card[i].number,card[i].name,card[i].cardNO,card[i].ID,card[i].flag,card[i].account,card[i].integal);

printf("\n|----|--------------|----------|----------------|------|----------|----------|");

}

menu();

}

5.上机操作

(1)主菜单

(2)制卡操作

(3)激活操作

(4)副菜单

(5)修改密码

(6)报表操作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1