**理工大学
C++面向对象课程设计报告
1.概要设计………………………….1
1.1设计思想………………………….1
1.2设计方法……………………….1
1.3系统中主要模块和其他模块间的关系描述…1
2.需求分析………………………………..2
3.总体设计……………………………2
4.模块设计……………………………………3
4.1开户功能模块………………………….3
功能模块分析……………………………...……..3
代码设计及分析………………………………….4
运行结果………………………………………….5
4.2销户功能模块…………………………5
功能模块分析……………………………………5
代码设计及分析…………………………………5
运行结果………………………………………….7
5.系统使用说明……………………………7
6.附录……………………………….7
6.1设计体会……………………………7
6.2源程序………………………8
1.概要设计
1.1设计思想
银行账户管理系统,通过设计一个控制台应用程序来实现工作人员遍历管理所有银行用户的银行账户功能。通过C++面向对象的程序设计语言,利用面向对象的设计思想,将程序运用面向对象的方法逐块划分,对每个对象的性质进展分析设计。
1.2实现方法
总体设计方法,是构建一个链表,来存储用户的资料,数据存储方面,用存储文件技术代替存储数据库技术。构建一个银行账户类,封装链表的头结点,创立用户银行账户各个属性的函数及其变量。构建一个程序操作类,用于封装实现打印操作菜单,实现主程序的操作选择等方法。
1.3系统中主要模块及各模块间的关系的描述
系统中的主要模块:
构造体节点:用于存放用户所用的账户信息〔,单位,,账户号,余额,地址,是否为联名账户等〕
银行账户类:用于封装链表的头结点,记录删除所回收的账户号,和删除回收的账户数目;构造函数在创立对象时,完成从文件中读出用户账户所有信息的操作,析构函数在对象即将消亡时,完成将整个链表中的所有信息逐个节点的存入文件中的操作。
程序操作类:用于实现程序中,菜单打印操作,菜单项选择择等操作。
其他各个模块:
节点构建函数构〔开户函数〕:链表构建函数为银行账户类的私有函数成员,银行账户类的大三功能函数之一,即是链表构建的方法,也是用户开户的方法,当构造函数运行时从文件中读入数据存入链表时调用,在用户选择开户操作时调用,实现添加一个节点的功能,进而实现链表一个节点逐个构造的功能。
节点删除函数〔销户函数〕:节点删除函数为银行账户类的私有成员,银行账户类的三大功能函数之一,即是链表删除的方法,也是用户销户的方法,当用户选择销户操作时,调用节点删除函数,删除并释放节点。
资金操作函数〔存款,取款,转账函数〕:资金操作函数为银行账户类的私有成员,银行账
户的三大功能函数之一,是用户所有对资金操作的方法的集合。在用户选择任何一种资金操作时调用资金操作函数,完成对用户账户资金的操作,同时对节点中相对应的变量进展修改,并且返回操作结果。
操作选择函数:选择操作函数为银行类的公有成员,根据打印菜单函数,用户输入任意一个选项选择操作,相对应的银行账户的操作。并且判断用户是否按照规定输入,将用户输入的选择传入操作函数。
操作函数:操作函数为银行操作类的私有成员,根据传来的参数选择是否调用,三大功能函数,并且返回操作结果。
其他功能函数:根本均为银行账户类的私有成员函数,节点信息输入函数:实现节点信息逐个输入,和账号生成的功能,主要是在开户函数中调用。节点遍历函数:根据传入的字符串,遍历查链表,返回符合规定的节点指针。文件读写操作函数〔〕:实现节点信息文件中的读写功能,同时实现类中私有变量链表长度,回收账号,回收账号数目的读写操作,主要实在对象的构造函数和析构函数中调用。
2.需求分析
银行账户管理系统,是由银行工作人员对银行用户的账户进展操作管理的系统。是一款使用者为银行工作人员,但效劳对象是银行用户的管理系统。不考虑银行工作人员账号注册用户名密码的情况下,只需要对银行用户账户的信息进展操作和管理就能完成要求。
银行用户账户的属性中含有,用户的用户真实**,**,公司,地址,,账户,账户余额等属性。除账户余额外,其余变量类型均应该为string类型,账户余额的类型应该为,double类型。**,长度应为18位,的长度应为11位。账户余额不能超值,最小值为零。账户应由系统自动生成,一个用户名额下可以有多个账户,每个账户由账户号来区别开来。另外应该设立一种联名账户,这种账户有两个人共同管理,及一个账户由两个用户名,有两个**。
此外,系统中的每个变量的输入都应该有判断正误的判断,对错误无效的变量输入应该反应构造不承受。
系统中所有的用户信息应该在程序开场时从文件中读出,再程序完毕时写入文件,这样实现用户信息的存储代替存入数据库的方法。
3.总体设计
管理系统总体构造由构建的链表存储信息,程序完毕后所有的用户信息都存入文件中,程序开场时再从文件中读取相关的信息。
声明一个构造体变量Node,包含string类型的变量:用户名,**,,公司,地址,账户号,联名用户用户名,联名用户**,double类型的变量余额,Node*类型的变量ne*t。
定义一个Link类,封装链表的头指针Node *head,链表的长度length,回收的账号lack【】,回收的账号数目number。构造函数,在建立对象时构建链表,通过存入链表的length值判断链表的长度及已存在的银行账户个数,从而调用构造链表的add〔〕函数,在add〔〕函数中调用file_read〔〕函数读出存在文件中银行账户的信息。程序开场打印出菜单供用户选择。开户,对应add〔〕函数,add函数调用out_node〔〕函数,根据提示输入用户银行账户所有信息,并根据length长度和用户的**后12位生成账户账号。销户操作,对应delcte〔〕函数,根据传递的参数用户账号字符串,查对应的银行账户,然后对节点进展删除释放。存款,取款,转账操作对应money〔〕函数,根据传递的参数,用户的账户,及选择的选项,执行相对的操作,通过账户到相对应的节点,在对节点的money变量进展简单的加减操作。析构函数,在对象消亡时进展调用,本程序也就是在程序即将完毕时进展调用,将
链表中的每个节点所有信息,按照一定的顺序存入指定的文件中,再将银行类中的链表的长度length,回收的账号数组lack【】,回收的账号数目按照一定的顺序存入文件中。
4.程序模块设计
4.1开户功能模块:
模块功能分析:
开户功能膜块在面向用户方面应该实现应该具有如下功能,银行账户所有信息输入的功能,提示用户是否申请为联名账户,并且防止用户随意输入错误无效的信息。在面向系统构造方面,应该具有构建链表节点功能,创立链表节点,并且根据所处的位置参加链表,尾节点的ne*t指针应该指向NULL。最后返回操作结果,执行成功返回true,失败返回false。
代码的设计及分析:
bool add(bool t,ifstream &input)//是否是从文件中读出银行账户信息
{
Node* pel,*tail;
if(head==NULL) //构建链表头结点
{
head=new Node();
if(!t) //是否第一次使用系统
{
out_node(head,length);
length++;
}
else //不是第一次使用系统,从文件中读取信息
read_file(head,input);析构方法
head->ne*t=NULL;
return true;
}
else
{
pel=head;
while(pel->ne*t) //在链表的末端添加节点
{
pel=pel->ne*t;
}
tail=new Node();
tail->ne*t = NULL;
if(!t) //是否第一次使用系统
{
out_node(tail,length);
length++;
}
else //不是第一次使用系统,从文件中读取信息
read_file(tail,input);
pel->ne*t = tail;
pel=tail;
return true;
}
}
运行结果:
4.2销户模块:
模块功能分析
模块功能分析:销户函数模块,面像用户来说需要实现以下功能:用户通过输入一个银行账户,查相对应的银行账户,如果银行账户不存在,返回给用户银行账户不存在的信息,如果存在,提示用户是否删除,用户确认删除,将对应的银行账户信息删除,反应给用户删除成功的信息。面对系统内部来说,应该实现以下功能:通过所输入的string 类型变量查符合要求的节点,用户确认删除,用delete函数释放节点内存,重新接好链表。此外应该防止用户随意输入的无效和错误信息。最后返回操作结果,执行成功返回true,失败返回false。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论