银行卡管理系统
一、题目要求
请设计《银行卡管理系统》,要实现系统的主要功能模块有:
实现系统内制卡、发卡功能;
实现系统内卡帐户几相关帐户管理;
实现卡交易和合法性检查;
实现卡金融交易积分功能;
实现卡报表功能;
数据以文件形式存储。
[提示]
制卡:指申请一个银行卡,但还没有使用。
发卡;指该卡已经起用。
实现卡交易:指从卡中消费掉一定金额。
二、需求分析
根据题目要求,由于数据以文件形式存储,因此应该提供文件的输入和输出等操作;在程序中需要浏览卡帐户信息,应提供显示、查找等操作;另外还应该提供键盘式选择采单实现功能选择。
三、总体设计
根据需求分析,可以将这个银行卡系统的设计分为5个模块:制 卡、发 卡、管 理、交 易、报 表。
四、详细设计
主函数
主函数比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。
[流程图]
N
Y
将main()函数体内的界面选择部分语句单独抽取出来作为一独立函数,便于系统执行完每部分功能模块后能够方便返回到系统界面。
[程序]
void menu()
{
int n,w1;
/*变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围内*/
do
{
void new_card();
void use_card();
void conduct();
void transaction();
void form();
puts("\n\t\t*********************MENU*********************\n\n"); puts("\t\t\t\t 1.New card");
puts("\t\t\t\t 2.Use card");
puts("\t\t\t\t 3.Account conduct");
puts("\t\t\t\t 4.Transaction");
puts("\t\t\t\t 5.Report form");
puts("\t\t\t\t 6.Exit");
puts("\n\n\t\t*********************************************\n");
printf("Choice your number(1-6):[ ]\b\b");
scanf("%d",&n);
if(n<1||n>6) /*对选择的数字作判断*/
{
w1=1;
getchar();
}
else w1=0;
}while(w1==1);
/*选择功能*/
switch(n)
{case 1:new_card();break;
case 2:use_card();break;
case 3:conduct();break;
case 4:transaction();break;
case 5:form();break;
case 6:exit(0);
}
}
main()
{menu();
}
各功能模块设计
(1)制卡模块
[需求分析]
该模块的功能是增加新的卡,也就是新的帐户,让系统自动设置帐户原始信息(卡号自动加1,用户名为NO,钱数和积分都为0)。采用追加的方式保存。
[分析]
由题目知,系统内的数据有卡号、姓名、钱数和积分。
单独看各数据信息,卡号和积分是整数,可以采用整型;姓名是字符型,采用字符型数组;钱数有可能为小数可采用实型。数据信息存放在文件中,一条记录对应一个帐户。用结构体数组存放若干个帐户信息。
struct user
{
int num;
char