c 程序设计课程设计说明个人信用卡管理系统.docx
《c 程序设计课程设计说明个人信用卡管理系统.docx》由会员分享,可在线阅读,更多相关《c 程序设计课程设计说明个人信用卡管理系统.docx(60页珍藏版)》请在冰豆网上搜索。
c程序设计课程设计说明个人信用卡管理系统
《C++程序设计》
课程设计说明书
题目
个人信用卡管理系统
学号
姓名
指导教师
日期
内蒙古科技大学课程设计任务书
课程名称
C++语言课程设计
设计题目
个人信用卡管理系统的设计
指导教师
时间
2015-2016春学期第17、18周
一、教学要求
1.巩固和加深学生对C++语言课程的基本知识的理解和掌握
2.掌握C++语言编程和程序调试的基本技能
3.利用C++语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C++语言解决实际问题的能力
二、设计资料及参数
用C++设计一个系统,能提供下列服务:
(1)录入信用卡信息,格式为:
卡号
名称
账单日
还款日
余额
6542301100220605
中行淘宝卡
5号
25
-126.5
(2)增加功能。
输入卡号或名称向信用卡使用记录中增加一条记录;格式为:
卡号
名称
日期
金额
类型
6542301100220605
中行淘宝卡
11-2
12.4
消费(或还款)
如果是消费则信用卡余额减去金额,如果是还款则信用卡余额加上金额。
(3)查询功能。
查询某个信用卡详细的使用记录;可以查询已出账单,即本月账单日和上月账单日之间的消费记录和消费总额;查询未出账单,及本月账单日之后的消费记录和消费总额。
(4)提醒功能。
在某个信用卡还款日期的前2天给出提示信息,提示要还款的总额。
三、设计要求及成果
根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类层次;
(3)完成类层次中各个类的描述(包括属性和力一法);
(4)完成类中各个成员函数的定义;
(5)完成系统的应用模块;
(6)功能调试;
(7)提交课程设计报告:
完成系统总结报告以及系统使用说明书
第1章需求分析
1.1引言
随着目前计算机技术的发展,越来越多的生活工具机械化、方便化、人们需要的东西也越来越人性化。
同时,为了巩固和加深学生对C++语言课程的基本知识的理解和掌握,掌握C++语言编程和程序调试的基本技能,利用C++语言进行基本的软件设计,掌握书写程序设计说明文档的能力提高运用C++语言解决实际问题的能力。
1.2任务概述
本程序是对个人信用卡的管理,对个人信用卡信息的录入,存储,查询消费记录,还款记录以及还款提醒。
1.3数据描述
个人信用卡管理系统中包括创建账号,查询已有账号的信息,提醒还款,显示全部用户,退出等。
试设计一个个人信用卡管理系统,使之能提供以下功能:
个人信用卡信息录入功能--输入;
个人信用卡信息显示功能--输出;
个人信用卡消费/还款功能;
查找信用卡及信息:
按卡号查询,按消费金额区间查询,按消费日期查询;
查看不良欠款记录:
超过消费日80天为不良记录;
1.4功能需求
首先,需要创建一个主界面,包含“录入信息,消费/还款功能,账单记录,还款提醒,所有信用卡信息”。
其次开始对个人信息的录入,调用成员函数voidluru()进行录入,个人信用卡信息用文件保存,用户录入一条新记录信息后,这些信息就存入到相应的文件中;其中包括录入个人信用卡的卡号、户名、日期等具体信息。
消费/还款功能调用成员函数voidzengjia()记录消费或还款。
账单记录,对个人的消费,还款记录进行查询,用户可以输入卡号在录入的信用卡中进行查询。
这使我们更深入的了解对信用卡的管理,更熟练的掌握信用卡的录入,存储,记录。
1.5任务计划
(1)以文字和数字形式输入信息。
(2)程序包含录入功能,显示功能,查询功能,提醒功能,初始化功能等。
(2)若输入结果有误,则重新输入,若输入正确,则继续按照程序顺序执行。
第2章总体设计
个人信用卡管理系统的操作以及总体框架的设计:
1.框架:
2.文字描述:
1、首先创建文件。
提前创建好txt文件,一个是基类Card的文件,另一个是派生类Recard的文件。
2、进入主界面选择要进行的操作
3、录入信息(输入卡号如:
6542301100220605,名称如中行淘宝卡;账单日如5号还款日如25号余额如123.5)
4、消费/还款(卡号如6542301100220605;名称如中行淘宝卡;日期如11-2金额如12.4元类型消费或还款)
5、使用记录:
使用记录包括:
查看所有账单、查看已出账单、查看未出账
6、提醒功能如果还有两天还款,则有提醒
7、所有信用卡信息显示已录入的使用信用卡信息包括欠款,余额,初始信用额度等。
8、查找信用卡及信息通过1.按卡号查找2.消费金额区间查找3.日期区间查找
第3章类的设计
3.1Card类的设计
ClassCard
{
数据成员:
charcardnum[20];
charname[20];
intstartday;
intbackday;
doubleyu_e;
doubleSum;//
doubleYU_e;//
函数成员:
Card()//构造函数
voidSet(char*cnum,char*cname,intcstartday,intcbackday,doublecyu_e,doubleCYU_e);//初始化,给信用卡对象数组中的数据成员赋值
voidjie_huan(doublemoney,char*type)//这个函数用于在后边进行余额的计算和欠款的总额的计算,当为消费类型的时候,余额-消费额==新的余额、消费额Sum增加,当为消费类型的时候,余额+还债额==现有余额、消费额Sum减少。
voidluru();//输入信用卡的基本信息,如卡号、卡的名称、账单日、还款日、信用额等数据后,再调用Set函数给对象数组赋值。
voidtixing();//提醒函数,调用电脑当前时间,在某个信用卡还款日期的前2天给出提示信息,提示要还款的总额。
voiddisplay();//显示所有信用卡的当前信息
intsearchCard();//输入一个卡号在当前所有记录中查找,存在的话返回一个数值i。
};
3.2Record类的设计(Card的派生类)
ClassCard
{
数据成员:
doublemoney;
chartype[20];
intmonth;
intday;
函数成员:
Record()//构造函数
voidSet(char*cnum,char*cname,intMonth,intDay,doubleMoney,char*Type);//初始化,给消费记录对象数组中的数据成员赋值
voidzengjia();//通过查找函数对已录入的信用卡进行消费和还款工作。
voidshiyongjilu();//使用记录
voidall_jilu();//消费还款的所有记录和消费还款总额。
voidyichu_jilu();//已出记录即本月账单日和上月账单日之间的消费记录和消费总额。
voidweichu_jilu();//未出记录及本月账单日之后的消费记录和消费总额。
voidchaozhaojiemian();//查找信用卡及信息
voidjin_e();//消费金额区间查找
voidkahao();//按卡号查找
voidriqi();日期区间查找
voidxinyong();//查看不良欠款记录
voidloadData();//对文件进行读取
voidsaveData();//对文件进行存储,建立card、record的txt文本文档。
};
第4章详细设计
4.1工程视图
图4-1
4.2类图视图
图4-2
4.3函数的调用关系
如下图:
4.4
主程序流程图
第5章测试
1.欢迎界面:
图5-1
2.功能界面:
图5-2
3.录入功能:
图5-3
图5-4
4.消费还款功能:
图5-5
5.使用记录界面:
图5-6
1所有账单:
图5-7
2已出账单:
图5-8
3未出账单:
图5-9
4上季度账单:
6.还款提醒:
图5-10
7.所有信用卡信息:
图5-11
8.查找界面:
图5-12
1按卡号查找:
图5-13
图5-14
图5-15
2按消费金额查找:
图5-16
图5-17
图5-18
图5-19
3按消费日期查找:
图5-20
9.不良欠款
图5-21
10.退出界面:
图5-22
第6章总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
在这一周的程序设计练习当中并不是一帆风顺的。
刚开始到指导老师面前听了一大堆,我根本就不知道要做什么,用什么做。
我并没有被眼前的一点小困难所击倒,我相信困难总是有办法解决的。
于是开始的两天我就在图书馆找相关图书。
通过两天的原始知识积累后,我开始尝试着按照自己的想法做了一些小系统。
起初会出现很多问题,不是这儿少了就是那错了。
在这样那样的错误中我明白编程是一件很严谨的事,容不得半点错误,一步走错,全盘皆输!
在出现错误读不懂时我通常是上网搜索错误原因,往往一个问题的解决方法是多种多样的,各自有其精妙之处。
有的解决方法浅显易懂,但是易出现漏洞;有的复杂难懂,但是逻辑紧密,无丝毫破绽。
编程是一门逻辑的游戏,一但了解其游戏规则,便发现乐趣无穷。
有时候自己有很多的想法,但由于自己的水平有限不能很好地实现,每到那时候我就有一种强烈的愿望想要把问题解决,做出自己想的东西。
一但解决了问题,那种快乐非亲身经历者不能感受!
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢。
附录:
程序代码
#include
#include
#include
#include
#include
#include//获取时间的文件的声明
usingnamespacestd;
//信用卡类
classCard
{
public:
charcardnum[20];
charname[20];
intstartday;
intbackday;
doubleyu_e;
doubleSum;//欠款总额
doubleYU_e;//初始额度
Card()
{
}
voidSet(char*cnum,char*cname,intcstartday,intcbackday,doublecyu_e,doubleCYU_e);//初始化
voidjie_huan(doublemoney,char*type)
{
if(strcmp(type,"消费")==0)
{
yu_e=yu_e-money;
Sum=Sum+money;
}
elseif(strcmp(type,"还款")==0)
{
yu_e=yu_e+money;
Sum=Sum-money;
}
}
voidluru();//录入
voidtixing();//提醒函数
voiddisplay();
intsearchCard();
};
//消费记录类
classRecord:
publicCard
{
public:
Record()
{
}
voidSet(char*cnum,char*cname,intMonth,intDay,doubleMoney,char*Type);//初始化
voidzengjia();
voidshiyongjilu();//使用记录
voidall_jilu();
voidyichu_jilu();
voidweichu_jilu();
voidjidu_jilu();
voidloadData();
voidsaveData();
voidjin_e();
voidkahao();
voidchaozhaojiemian();
voidriqi();
voidxinyong();
private:
doublemoney;
chartype[20];
intmonth;
intday;
};
constintCMAX=20;//信用卡存储数量
constintRMAX=100;//消费记录存储数量
Cardcard[CMAX];
Recordrecord[RMAX];
intc_num=0,r_num=0;
/*---------------------------------------------Card类实现------------------------------------------------*/
//初始化信用卡函数
voidCard:
:
Set(char*cnum,char*cname,intcstartday,intcbackday,doublecyu_e,doubleCYU_e)
{
strcpy(cardnum,cnum);
strcpy(name,cname);
startday=cstartday;
backday=cbackday;
yu_e=cyu_e;
YU_e=CYU_e;
}
/*--------------------------------------录入模块------------------------------------*/
voidCard:
:
luru()
{
charcardnum[20];
charname[20];
intstartday;
intbackday;
doubleyu_e;
doubleYU_e;
inta;
system("cls");
cout<<"\t*************************************************\n";
cout<<"\t||个人信用卡管理系统||\n";
cout<<"\t||----录入信息||\n";
cout<<"\t*************************************************\n\n";
jixu:
cout<<"请输入信用卡号:
\n";
cin>>cardnum;
boolright=true;
for(intj=0;j{
if(strcmp(card[j].cardnum,cardnum)==0)
{
right=false;
break;
}
}
while(!
right)
{
cout<<"已经保存有这个卡号\n";
cout<<"请输入新的卡号:
\n";
cin>>cardnum;
right=true;
for(intj=0;j{
if(strcmp(card[j].cardnum,cardnum)==0)
{
right=false;
break;
}
}
}
cout<<"请输入信用卡名称:
\n";
cin>>name;
start:
cout<<"请输入账单日(1-31):
\n";
cin>>startday;
if(1>startday||startday>31)
{
cout<<"输入有误!
请重新输入\n";
gotostart;
}
back:
cout<<"请输入还款日(1-31):
\n";
cin>>backday;
if(1>backday||backday>31)
{
cout<<"输入有误!
请重新输入\n";
gotoback;
}
cout<<"请输入余额:
\n";
cin>>yu_e;
YU_e=yu_e;
card[c_num].Set(cardnum,name,startday,backday,yu_e,YU_e);
c_num++;
cout<<"录入成功,回车继续\n";
cin.get();
cin.get();
ifstart:
system("cls");
cout<<"\t*************************************************\n";
cout<<"\t||1.继续录入2.返回主菜单||\n";
cout<<"\t*************************************************\n\n";
cout<<"选择您要进行的操作:
";
cin>>a;
if(a==1)
{
gotojixu;
}
if(a==2)
{
}
if(a!
=1&&a!
=2)
{
cout<<"输入错误,请重新输入(1/2)\n";
cin.get();
cin.get();
gotoifstart;
}
}
/*--------------------------------------------------*/
//查找函数
intCard:
:
searchCard()
{
inti=-1;
boolright=false;
charcardnum[20];
cout<<"请输入信用卡号:
\n";
cin>>cardnum;
for(intj=0;j{
if(strcmp(card[j].cardnum,cardnum)==0)
{
i=j;
right=true;
break;
}
}
while(!
right)
{
cout<<"没有找到您刚刚输入的这个卡号\n";
cout<<"请重新输入卡号:
";
cin>>cardnum;
for(intj=0;j{
if(strcmp(card[j].cardnum,cardnum)==0)
{
i=j;
right=true;
break;
}
}
}
returni;
}
/*--------------------------------------提醒模块--------------------------*/
voidCard:
:
tixing()
{
longt=time(NULL);
tm*pt=localtime(&t);
intmonth=pt->tm_mon+1;
intday=pt->tm_mday;
system("cls");
cout<<"\t\t==================================================\n";
cout<<"\t\t||个人信用卡管理系统||\n";
cout<<"\t\t==================================================\n\n";
cout<<"\t\t还款提醒\n\n";
for(intj=0;j{
if(!
(card[j].backday-day>0&&card[j].backday-day<=2&&card[j].Sum>0||31<=day+backday&&day+backday<=32&&card[j].Sum>0))
continue;
cout<<"卡号:
"<cout<<"名称:
"<cout<<"应还款日期:
"<cout<cout<<"金额:
"<}
}
//显示所有卡
voidCard:
:
display()
{
intj;
cout<<"\t\t========================================\n";
cout<<"\t\t||您的信用卡信息||\n";
cout<<"\t\t========================================\n\n\n";
for(j=0;j{
cout<<"卡号:
"<cout<<"名称:
"<cout<<"账单日:
"<cout<<"还款日:
"<cout<<"初始额度:
"<cout<<"消费额:
"<cout<<"余额:
"<}
cout<<"键入回车返回";
}
//
/*-------------------------------------------------------------------------------------------*/
/*----------------------Record类的实现---------------------------------------------------------------------*/
//初始化消费记录函数
voidRecord:
:
Set(char*cnum,char*cname,intMonth,intDay,doubleMoney