个人信用卡管理系统_第1页
个人信用卡管理系统_第2页
个人信用卡管理系统_第3页
个人信用卡管理系统_第4页
个人信用卡管理系统_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内蒙古科技大学C+程序设计课程设计说明书题 目个人信用卡管理系统的设计学 号1167111103姓 名马小强指导教师周李涌日 期2013-01-05内蒙古科技大学课程设计任务书课程名称C+语言课程设计设计题目个人信用卡管理系统的设计指导教师周李涌时间2012-2013秋学期 第18、19周一、教学要求1. 巩固和加深学生对C+语言课程的基本知识的理解和掌握2. 掌握C+语言编程和程序调试的基本技能3. 利用C+语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C+语言解决实际问题的能力二、设计资料及参数用C+设计一个系统,能提供下列服务:(1) 录入信用卡信息,格式为:卡

2、号名称账单日还款日余额6542301100220605中行淘宝卡5号25-126.5(2) 增加功能。输入卡号或名称向信用卡使用记录中增加一条记录;格式为:卡号名称日期金额类型6542301100220605中行淘宝卡11-212.4消费(或还款)如果是消费则信用卡余额减去金额,如果是还款则信用卡余额加上金额。(3) 查询功能。查询某个信用卡详细的使用记录;可以查询已出账单,即本月账单日和上月账单日之间的消费记录和消费总额;查询未出账单,及本月账单日之后的消费记录和消费总额。(4) 提醒功能。在某个信用卡还款日期的前2天给出提示信息,提示要还款的总额。三、设计要求及成果根据系统功能要求,可以将

3、问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和力一法);目录第1章 需求分析41.1引言41.2任务概述41.3数据描述41.4功能需求41.5性能需求51.6运行需求51.7任务计划5第2章 总体设计6第3章 类的设计7Bank类的设计7第4章 详细设计84.1工程视图84.2类图视图84.3函数的调用关系94.4主程序流程图104.5录入用户信息流程图114.6修改用户信息流程图12第5章 测试13第6章 总结17附录:程序代码18第1章 需求分析1.1引言 C+语言是目前公认的热门

4、编程语言之一。C+是在C语言基础上发展演变而来的一种面向对象程序设计语言。它既支持面向过程的程序设计方法,也支持面向对象的程序设计方法。C+全面兼容了C语言,但是C+本身也是一个完整的程序设计语言。它在面向过程方面不但对C语言进行了扩展,而且提供了比C更严格,更安全的语法要求。同时C+增加了面向对象编程、数据抽象、类属编程等技术支持,通过继承和多态性,使程序具有很高的可重用性,是软件的开发和维护更加方便。它是目前应用最广的面向对象程序设计语言之一。1.2任务概述 个人信用卡管理系统的各种基本数据的录入、添加、删除、显示、查询、类型及退出系统。1.3数据描述个人信用卡管理系统中包括创建账号,查询

5、已有账号信息,添加新用户,类型,还款人员查询,显示全部用户,删除账户,退出等(帐号不重复)。试设计一个个人信用卡管理系统,使之能提供以下功能: 个人信用卡信息录入功能输入; 个人信用卡信息显示功能输出; 查询功能:(至少一种查询方式);按卡号查询;按户名查询; 个人信用卡管理系统的添加信息、删除信息等功能。1.4功能需求(1)个人信用卡信息录入添加功能:个人信用卡信息用文件保存,用户录入一条新记录信息后,这些信息就存入到相应的文件中(可以考虑结构体类型数组来操作);文件信息不超过200条记录,即数组长度可固定为200;其中包括录入个人信用卡的卡号、户名、开户日期等具体信息。(2)个人信用卡信息

6、删除功能:根据用户输入需要删除的序号,查找该条记录,若找到该记录,可对此人的相应数据进行删除,即对该记录进行标记,当重新写入文件里,不予写入,若未找到该记录,提示用户“无此人信息”,然后再继续根据提示进行删除。(3)个人信用卡信息查询功能:用户可以根据卡号,户名等条件在数组中进行查询,若能找到该记录,则在屏幕上输出符合条件的记录信息,否则,打印出“无此人信息”的提示信息。然后再根据之后的提示进行查询。(4)系统其他功能模块:根据课题适当加入相应的数据信息,拓展功能,开阔思路。注:个人信用卡管理系统中包括卡号、户名、开户日、还款日等信息(卡号不重复)。1.5性能需求(1)构造函数功能:bank(

7、)完成类中构造函数的构造功能。(2)初始化功能:例如:void set()完成初始化信息,进行第一次对信息的录入功能。(3)查询功能:例如:void chaxun()完成查询账户的使用记录功能。(4)添加功能:例如:void add()完成添加某用户信息的功能。(5)显示功能:例如:void display()完成显示全部用户信息的功能。(6)删除功能:例如:void del()完成删除全部用户信息的功能。(7)显示还款信息:例如:void news()完成显示还款人员信息功能。1.6运行需求根据题目要求,由于个人信用卡信息是存放在文件中的,所以应该让文件提供输入、输出等操作功能;在程序中需要

8、浏览个人信用卡的信息,应该提供显示、查询等操作;另外还应该提供键盘式选择菜单实现功能选择。1.7任务计划(1)以文字和数字形式输入信息。(2)程序包含录入功能,显示功能,查询功能,删除功能,添加功能,初始化功能等。(3)若输入结果有误,则停止输入,若输入正确,则继续按照程序顺序执行。第2章 总体设计系统的功能结构,用文字描述系统要完成的功能,用结构框图表示各个功能之间的关系。Bank类(包含用户的基本信息)录入账户基本信息查询账户的使用记录添加新用户用户来还款或者消费删除某用户信息显示所有用户信息显示还款人员信息第3章 类的设计定义格式如下:Bank类的设计Class bank数据成员:dou

9、ble money ; /用户余额信息string name , numf , numl , start , back ; / 户名 用户账号前八位 用户账号后八位 用户开户日期 用户还款信息函数成员:bank(); /构造函数void set(); /初始化信息,第一次对信息的录入void chaxun(); /查询账户的使用记录void add(); /添加某用户的信息void change(); /某用户的消费和还款void display(); /显示全部用户信息void del(); /删除全部用户信息void news(); /显示应该还款人员信息;第4章 详细设计4.1工程视图说

10、明有几个源代码文件,可以截取工程文件视图表示4.2类图视图每个文件包含哪些类和函数,可以截图说明4.3函数的调用关系如下图:由主函数延伸到目录函数,再由目录函数向下延伸,各个函数之间有联系,能互相进入,每个函数结束后都能直接退出系统!main()主函数menu() 目录函数bank.set()录入函数bank.chaxun()查询函数bank.add()添加函数bank.change()信息改变函数bank.news()还款信息函数bank.display()显示函数bank.del()删除信息函数退出系统4.4主程序流程图录入用户信息消费或者还款继续添加用户显示用户信息删除用户信息还款人员查

11、询进入系统选着所办业务退出系统返回4.5录入用户信息流程图开始ofstream outfile;outfile.open(“f1.txt”,ios:out);if(!outfile);exit(1);cerr<<”open error”<<endl;for(i=0;i<M;i+);M=200if(bankname=0)cin>>bankname;bankname=nameN+;cout<<name<<” ”;cin>>banknumf,banknuml,bankstart,bankback,bankmoney结束开始

12、4.6修改用户信息流程图int i,w,j;i=0;j=0ifstream infile(“f1.txt”,ios:in);else if(w!=1)if(!infile)cerr<<”open error”<<endl;cout<<”a.按卡号查找b.按户名查找”<<endl;if(ch=b)if(ch=a)cin>>today;cin>>searchname;cin>>today;cin>>numf;for(i=0;i<N;i+;)cout<<”无此人信息!” <<

13、endl;for(i=0;i<N;i+;)if(namei=searchname)w=1;j=bi;if(ali=n)for(i=0;i<N;i+;)if(a2i=n)elsecout<<”c.还款 d.消费”<<endl;cout<<”c.还款 d.消费”<<endl;if(ch=c)cin>>sendmoneyelseif(ch=c)cin>>backmoneycin>>sendmoneycin>>backmoneyj+;if(j=20)j=0;bi=j;结束j+;if(j=20)j

14、=0;bi=j;第5章 测试程序的运行结果截图。主界面(图1)录入信息界面(图2)添加信息(图3)显示全部人员信息(图4)消费还款界面(图5)消费还款记录界面(图6)还款人员界面(图7)删除人员界面(图7)第6章 总结在这之前我没有编写过c+的界面程序,c+上机也只是编写关于书本上课后习题的程序,验证性的编写罢了,说白了就是输入看看输出而已,没什么技术含量。对于这次c+的课程设计,是根据学生管理系统改变过来的,并不是直接去网上找的程序,所以对我程序上的锻炼是显而易见的。以前我曾经编写过一些关于单片机的程序,所以有一定的基础,所以这次改程序不是想象的那么困难,只是要注意一些函数之间的关系,以及各

15、种类型的变量之间的关系,好几次错误都是把变量之间的类型搞错了,不同类型的变量之间就相等了,进而导致了错误,这是最常见的错误,也是最容易忽略的错误,要谨记!虽然这次进行了c+的课程设计的训练,但是对于类,还是一个很迷糊的概念,我只能说我会用,我能解决一些关于类的基本错误,但是要我来说类到底是什么东西,我还是说不出来,浅显的看,类包括了public里面的成员函数以及private里面的数据成员,这些是直观上看见的!其次就是头文件的使用,数据流的头文件以及其他头文件的使用。特别要声明的一点就是using namespace std的使用,不知道把这个问题拿到头文件这一部分来说合适与否,但至少我觉得拿

16、到其他位置不合适,没有这个东西string是使用不了,在c+程序里面我们常常使用的不是char了,而是使用string了,因为这个更合适,或者说它更加的强大,有了char所不具有的功能。感谢这次c+的课程设计让我对于这方面有了很大的提高,特别是读程序的能力,看的多了,对于自己最大的嘱咐就是,写程序不要那么死板,主要的是功能,实现的方法多了,多想想!还有就是程序不必每句都读懂,那样既耗时可能也到不到想要的结果,看看后面的,再看前面的比较好,对于程序有了大致的了解,再看不至于那么模糊,心里已经有数了,反反复复的看看!附录:程序代码#include<iostream>#include&l

17、t;fstream>#include<string>#include<iomanip>using namespace std;#define M 200 /可以存信息总量int N=0; /学生总量float amoney20M,bM=0,bmoney20M;string atoday20M;class bankpublic:bank();void set(); /初始化信息,第一次对信息的录入void chaxun(); /查询用户信息void add(); /添加某用户信息void change(); /修改某用户信息void display(); /显示全部

18、用户信息void del();void news();private:double money;string name,numf,numl,start,back;/int bank:num=110;bank:bank() /初始化文件/in 是读文件 out 是写文件 还回值是-1void bank:set()int i;string banknumf,banknuml,bankname,bankstart,bankback;double bankmoney;ofstream outfile;outfile.open("f1.txt",ios:out); /-打开文件-if

19、(!outfile)cerr<<" open error"<<endl; exit(1);/-依次录入相应个数的学生信息-for(i=0;i<M;i+)cout<<"当户名输入为'0'时,停止输入!"<<endl;cout<<"请输入户名:"<<endl;cin>>bankname; name=bankname;if(bankname="0") break;if(bankname!="0")

20、N+; outfile<<name<<" "cout<<"请输入前八位卡号:"<<endl; cin>>banknumf; numf=banknumf;outfile<<banknumf<<" "cout<<"请输入后八位卡号:"<<endl; cin>>banknuml; numl=banknuml;outfile<<banknuml<<" " cou

21、t<<"请输入账单日:"<<endl; cin>>bankstart; start=bankstart; outfile<<start<<" " cout<<"请输入还款日:"<<endl; cin>>bankback; back=bankback; outfile<<back<<" " cout<<"请输入余额:"<<endl; cin>>

22、bankmoney; money=bankmoney; outfile<<money<<endl;outfile.close(); /-关闭文件-void bank:display()int k;string dname,dnumf,dnuml,dstart,dback;double dmoney;ifstream infile("f1.txt",ios:in); if(!infile)cerr<<" 0open error"<<endl;exit(1);cout<<" 户名 卡号 开

23、户日 还款日 余额 "<<endl;for(k=0;k<N;k+)cout<<" "infile>>dname;cout<<setw(9)<<dname;cout<<" "infile>>dnumf;cout<<setw(9)<<dnumf;infile>>dnuml;cout<<setw(8)<<dnuml;cout<<" "infile>>dstar

24、t;cout<<setw(9)<<dstart;infile>>dback;cout<<" "cout<<setw(9)<<dback;infile>>dmoney;cout<<setw(9)<<dmoney<<endl;infile.close();void bank:news()int i,w,mm;double moneyM;string nameM,numfM,numlM,backM,today,startM,m;m='0'w=0;

25、ifstream infile("f1.txt",ios:in); if(!infile)cerr<<" open error"<<endl;exit(1);for(i=0;i<N;i+)/cout<<" "infile>>namei;/cout<<setw(16)<<namei;infile>>numfi;infile>>numli;/cout<<setw(16)<<numi;infile>>st

26、arti;/cout<<setw(16)<<starti;infile>>backi;/cout<<setw(16)<<backi;infile>>moneyi;/cout<<setw(16)<<moneyi<<endl;cout<<"*请输入今日日期 "cin>>today;cout<<" 户名 卡号 开户日 还款日 余额 "<<endl;for(i=0;i<N;i+)mm=strcmp(ba

27、cki.c_str(),today.c_str();/前面大 正 相等 0 if(mm<=0)&&(moneyi<0)cout<<" "/infile>>name;cout<<setw(9)<<namei;/infile>>num;cout<<setw(9)<<numfi;cout<<setw(8)<<numli;/infile>>start;cout<<" "cout<<setw(9

28、)<<starti;cout<<" "/infile>>back;cout<<setw(9)<<backi;/infile>>money;cout<<setw(9)<<moneyi<<endl;w=1;if(w=0)cout<<"无还款人员"<<endl;infile.close();void bank:change()int i,w,j;double backmoney,sendmoney,moneyM;char ch;i

29、=0;j=0;string nameM,searchname,numfM,numlM,a1M,a2M,n,startM,backM,today;ifstream infile("f1.txt",ios:in); if(!infile)cerr<<" open error"<<endl;exit(1);for(i=0;i<N;i+)/cout<<" "infile>>namei;/cout<<setw(16)<<namei;infile>>numf

30、i;infile>>numli;/cout<<setw(16)<<numi;infile>>starti;/cout<<setw(16)<<starti;infile>>backi;/cout<<setw(16)<<backi;infile>>moneyi;/cout<<setw(16)<<moneyi<<endl;for(i=0;i<N;i+)/bi0=namei;a1i=numfi;a2i=numli;/bi1=starti;/b

31、i2=backi;/bi3=moneyi;infile.close();ofstream outfile("f1.txt",ios:out);if(!outfile) cerr<<" open error"<<endl; exit(1); cout<<"*a.按卡号查找 b.按户名查找*"<<endl;cout<<"*请输入a或者b!*"<<endl;cout<<"*请输入所用功能: "cin>>ch

32、; if(ch='a')cout<<"请输入今日日期 "cin>>today;cout<<"请输入前八位卡号 "cin>>n;for(i=0;i<N;i+)if(a1i=n)cout<<"请输入后八位卡号 "cin>>n;for(i=0;i<N;i+)if(a2i=n)w=1;j=bi;atodayji=today;cout<<"*c.还款 d.消费*"<<endl; /aa还款 bb消费co

33、ut<<"*请输入c或者d!*"<<endl;cout<<" 请输入所用功能: "cin>>ch;if(ch='c')cout<<" 请输入还款金额 "cin>>backmoney;moneyi=moneyi+backmoney;amoneyji=backmoney;bmoneyji=moneyi;else cout<<" 请输入消费金额 "cin>>sendmoney;moneyi=moneyi-sen

34、dmoney;amoneyji=0-sendmoney;bmoneyji=moneyi;j+;if(j=20)j=0;bi=j;if(w!=1) cout<<"无此人信息!"<<endl;else if(ch='b')cout<<"请输入今日日期 "cin>>today;cout<<"请输入户名 "cin>>searchname;for(i=0;i<N;i+)if(namei=searchname)w=1;j=bi;atodayji=toda

35、y;cout<<"*c.还款 d.消费*"<<endl; /aa还款 bb消费cout<<"*请输入c或者d!*"<<endl;cout<<" 请输入所用功能: "cin>>ch;if(ch='c')cout<<" 请输入还款金额 "cin>>backmoney;moneyi=moneyi+backmoney;amoneyji=backmoney;bmoneyji=moneyi;else cout<

36、<" 请输入消费金额 "cin>>sendmoney;moneyi=moneyi-sendmoney;amoneyji=0-sendmoney;bmoneyji=moneyi;j+;if(j=20)j=0;bi=j; if(w!=1) cout<<"无此人信息!"<<endl;else cout<<"没有此选项!"<<endl;for(i=0;i<N;i+) outfile<<namei<<" "outfile<&

37、lt;numfi<<" "outfile<<numli<<" "outfile<<starti<<" "outfile<<backi<<" "outfile<<moneyi<<" "<<endl;infile.close();if(w=1)cout<<"已修改成功!"<<endl;void bank:chaxun()int i,w,j

38、;double moneyM;char ch;string nameM,searchname,numfM,numlM,a1M,a2M,n,startM,backM;w=0;j=0;ifstream infile("f1.txt",ios:in); if(!infile)cerr<<" open error"<<endl;exit(1);for(i=0;i<N;i+)/cout<<" "infile>>namei;/cout<<setw(16)<<namei;

39、infile>>numfi;infile>>numli;/cout<<setw(16)<<numi;infile>>starti;/cout<<setw(16)<<starti;infile>>backi;/cout<<setw(16)<<backi;infile>>moneyi;/cout<<setw(16)<<moneyi<<endl;for(i=0;i<N;i+)/bi0=namei;a1i=numfi;a2i=nu

40、mli;/bi1=starti;/bi2=backi;/bi3=moneyi;infile.close();cout<<"*a.按卡号查找 b.按户名查找*"<<endl;cout<<"*请输入a或者b!*"<<endl;cout<<"*请输入所用功能: "cin>>ch; if(ch='a')cout<<"*请输入前八位卡号 "cin>>n;for(i=0;i<N;i+)if(a1i=n)cout

41、<<"*请输入后八位卡号 "cin>>n;for(i=0;i<N;i+)if(a2i=n)w=1;cout<<"户名 交易时间 交易金额 余额"<<endl;for(j=0;j<bi;j+)cout<<namei<<" "<<atodayji<<" "<<amoneyji<<" "<<bmoneyji<<endl;else if(ch=

42、9;b')cout<<"*请输入户名 "cin>>searchname;for(i=0;i<N;i+)if(namei=searchname)w=1;cout<<"户名 交易时间 交易金额 余额"<<endl;for(j=0;j<bi;j+)cout<<namei<<" "<<atodayji<<" "<<amoneyji<<" "<<bmone

43、yji<<endl; else cout<<"没有此选项!"<<endl;if(w=0)cout<<"无此人信息!"<<endl;/添加文件void bank:add()string addname,addnumf,addnuml,addstart,addback;double addmoney;/-以追加的方式录入信息,直接将信息追加到以前文件的末尾-ofstream outfile("f1.txt",ios:app);if(!outfile) cerr<<&q

44、uot; open error"<<endl; exit(1); N=N+1;/-依次输入相应的数据,并且追加到之前的文件中去-cout<<"请输入您要添加的数据"<<endl;cout<<"请输入户名:"<<endl;cin>>addname;outfile<<addname<<" "cout<<"请输入前八位账号:"<<endl;cin>>addnumf;outfile&

45、lt;<addnumf<<" "cout<<"请输入后八位账号:"<<endl;cin>>addnuml;outfile<<addnuml<<" "cout<<"请输入开户日:"<<endl;cin>>addstart;outfile<<addstart<<" "cout<<"请输入还款日:"<<endl;cin&g

46、t;>addback;outfile<<addback<<" "cout<<"请输入余额:"<<endl; cin>>addmoney; outfile<<addmoney<<endl;outfile.close();cout<<"已添加成功!"<<endl;/删除文件void bank:del()int k,i;double moneyM;string nameM,startM,numfM,numlM,backM;ifs

47、tream infile("f1.txt",ios:in);if(!infile)cerr<<" open error"<<endl;exit(1);cout<<" 户名 卡号 开户日 还款日 余额 "<<endl;for(i=0;i<N;i+)cout<<" "infile>>namei;cout<<setw(9)<<namei;cout<<" "infile>>numfi;cout<<setw(9)<<numfi;infile>>numli;cout<<setw(8)<<numli;infile>>starti;cout<<setw(9)<<starti;cout<<" "infile>>backi;cout<<setw(9)<<backi;infile>>moneyi;cout<<setw(9)<<moneyi<<endl;cout<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论