第8章 简单银行存取系统.doc_第1页
第8章 简单银行存取系统.doc_第2页
第8章 简单银行存取系统.doc_第3页
第8章 简单银行存取系统.doc_第4页
第8章 简单银行存取系统.doc_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第8章 简单银行存取系统8.1 系统需求分析8.1.1引言1.目的 需求分析报告是为“简单银行存取系统”开发人员进行系统总体规划设计及具体实施开发提供必要的参考资料,在系统开发完成后期为系统的测试、用户手册的编写提供帮助。其编写过程由某高校信息学院学生完成。预期读者是从事“简单银行存取系统”开发的相关人员。2.背景本项目名称为“简单银行存取系统”。系统功能主要包括:能够存储一定数量的储户信息,并方便有效的进行相应的信息操作和管理。本项目的任务提出者为某高校信息学院,开发者为信息学院学生。3.项目概述本项目的用户是模拟储户。储户必须先使用自己的账号和相应的密码登录到银行系统。任何用户都可以合法地建立新账户。在建立新账户时,需要向系统提供储户相关信息。当储户使用合法身份登录到银行系统后,可以立即查看到该账户的各项信息。储户在正确登录系统的前提下,可以凭账户开户时注册的身份证号码及当前账户密码来查询自己其它的账户余额信息。在正确登录到系统后,储户还可进行如下操作:取款、存款、查看到期日期、设置信用卡密码、查看透支额、查看汇款方式等。4.参考文献(1)Joseph Schmuller著,李虎 赵龙刚译. UML基础、案例与应用. 人民邮电出版社.2004年8月(2)孙鑫,余安萍 编著,VC+深入详解. 电子工业出版社. 2006年6月(3)MFC Windows程序设计(第2版). (美)帕罗赛斯 著,北京博彦科技发展有限责任公司 译清华大学出版社.2007年5月(4)陈明. 软件工程实用教程. 北京:电子工业出版社,2006年1月(5)潘孝铭 辛明海 软件文档编写. 高等教育出版社. 2004年2月8.1.2 需求概述1. 目标“简单银行存取系统”主要提供不同模拟储户的一般操作,如:取款、存款、查看到期日期、设置信用卡密码、查看透支额、查看汇款方式等。2. 用户类和特征 用户可分为定期储户、一般储户、结算储户、信用卡储户 ,具备一定的计算机操作知识即可。3. 运行环境 (1)硬件资源服务器:工作站或小型机;打印机。(2)软件资源操作系统:windows 2000 或windowsXp 数据库:Access2000 开发平台:Visual C+ 6.08.1.3 功能需求相应的需求有:(1)装载账户信息:所有的账户信息保存应能永久保存在一个特定磁盘文件中(本系统采用后台数据库作为账户信息的载体),在系统开始运行时应首先连接数据库文件,并将数据库中的数据装载到内存中,并依据它们构造各类账户对象,并添加到账户映射集合。(2)登录系统:各类储户必须先使用自己的账号和相应的密码登录到银行系统,才能进行其它操作。(3)建立新账户:任何用户都可以合法地建立新账户。在建立新账户时,需要向系统提供如下信息:账户类型、货币种类、预存款额、6位数字账户密码、账户特殊信息(信用卡账户需提供6位数字信用卡密码、定期账户需提供存储年限、结算账户需提供汇款方式)以及储户相关信息(身份证号、真实姓名、通讯地址和电话号码)。(4)查看当前账户信息:当储户使用合法身份登录到银行系统后,可以立即查看到该账户的各项信息,包括账户类型、账户余额、货币类型、创建日期以及储户的身份证号码(后四位隐藏)、姓名、通讯地址和电话号码。(5)通过身份证号和账户密码查询其账户余额:储户在正确登录系统的前提下,储户可以凭账户开户时注册的身份证号码及当前账户密码来查询自己其它的账户余额信息,该信息包括账号、账户类型、币种、余额和账户的创建日期。(6)取款:储户在正确登录系统的前提下,可以进行取款操作。其中一般账户和结算账户的取款操作相同,定期存款账户不得在未到期之前取款,信用卡账户允许善意透支5000元(各币种)。(7)存款:储户在正确登录系统的前提下,可以进行存款操作。其中一般账户、结算账户和信用卡账户的存款操作相同,定期存款账户在用户开户后不得再存款。(8)查看到期日期(包含在查看当前帐户信息中):针对定期存款储户的服务,储户可以在正确登录系统后立即查看到该账户的到期日期。(9)设置信用卡密码:针对信用卡储户的服务,储户可以通过旧信用卡密码来更改信用卡的密码。信用卡密码和信用卡账户的密码可以一样,也可以不一样。(10)查看透支额(包含在查看当前帐户信息中):针对信用卡储户的服务,储户可以在正确登录系统后,立即查看到该账户的透支额。(11)查看汇款方式(包含在查看当前帐户信息中):针对结算储户的服务,储户可以在正确登录系统后,立即查看到该账户的汇款方式。1.确定执行者执行者为定期储户、一般储户、结算储户、信用卡储户。2.确定用例图8.1是我们通过一定的调研和分析得到的“简单银行存取系统”的用例图:图 8.1 简单银行存取系统用例图3.编写用例文档(1)装载账户信息用例用例名:装载账户信息参与执行者:无。入口条件:无。事件流:在系统开始运行时首先连接数据库文件,并将数据库中的信息装载到内存中,构建各类账户信息,并添加至账户映射集合。出口条件: 用户合法的创建新帐户后,系统将相关信息存放至数据库中。异常事件:无 (2)登录系统用例用例名:登录系统参与执行者:各类储户入口条件:无。事件流:各类储户输入自己的账号和密码登录,如果账户不存在或者密码有误,则给出相应提示,重新登录。若重试超过三次,则封锁该储户。若用户名和密码匹配,则进入系统。出口条件:系统显示该储户可进行的操作界面。异常事件:无(3) 建立帐号信息用例用例名:建立帐号信息参与执行者:储户入口条件:储户已经登录到该系统中。事件流:储户登录后,点击建立新帐户,填写账户类型、货币种类、预存款额、6位数字账户密码、储户身份证号、真实姓名、通讯地址和电话号码。如果是信息卡账户需填写6位数字信用卡密码;如果是定期账户需要提供存储年限;如果是结算账户需要提供汇款方式。出口条件: 系统将新账户的相关信息添加至数据库中。异常事件:无(4) 查询当前账户信息用例用例名:查询当前账户信息参与执行者:储户入口条件:储户已经登录到该系统中。事件流:当储户使用合法身份登录到银行系统后,可以查看该账户的各项信息:账户类型、账户余额、货币类型、创建日期以及储户的身份证号码(后四位隐藏)、姓名、通讯地址和电话号码。出口条件: 系统显示当前帐户信息。异常事件:无(5) 通过身份证和密码查询其他账户余额用例用例名:通过身份证和密码查询其他账户余额参与执行者:储户入口条件:储户已经登录到该系统中。事件流:储户正确登录到系统之后,可以凭账户开户时注册的身份证号码及当前账户密码来查询自己其它账户的账号、账户类型、币种、余额信息以及账户的创建日期。出口条件:系统显示其它账户信息。异常事件:无(6)取款用例用例名:取款参与执行者:储户入口条件:储户已经正确登录到系统中事件流:一般账户和结算账户输入取款金额,该输入数目不能为负数,也不能超过余额,否则,系统提示错误。正确输入取款金额后,系统模拟取款过程(非真实),当前账户余额减去取款金额。定期存款账户不得在未到期之前取款。信用卡帐户允许善意透支5000元(各种币种)。出口条件:提示操作是否成功,显示当前余额。异常事件:若出现断电或者其他不可预料情形,整个取款操作回滚到取款之前。(7)存款用例用例名:存款参与执行者:储户入口条件:储户已经正确登录到该系统中。事件流:定期存款账户在开户后不得存款。一般账户、结算账户和信用卡帐户输入存款金额,系统验证输入存款金额和实际金额是否一致(模拟),如果不一致,则提示错误,否则该账户余额增加存入数目。出口条件:系统显示当前账户余额。(8)查看到期日期用例用例名:查看到期日期参与执行者:定期存款储户入口条件:拥有定期账号的储户已经登录到系统中。事件流:定期储户在登录后可查看该账户的到期日期。出口条件:系统定期储户的到期日期。(9)设置信用卡密码用例用例名:设置信用卡密码参与执行者:拥有信用卡帐号的储户入口条件:拥有信用卡帐号的储户已经登录到系统中。事件流:拥有信用卡帐号的储户登录到系统中后,储户点击修改密码功能按钮,系统提示输入信用卡旧密码,如果输入的旧密码与数据库中存储的密码不一致,系统提示错误。如果输入旧密码与数据库中存储的旧密码一致,则提示输入新的密码,点击确定,密码修改成功,给出成功提示。出口条件:系统给出是否修改成功的信息提示。(10)查看透支额用例用例名:查看透支额参与执行者:拥有信用卡帐号的储户入口条件:拥有信用卡帐号的储户已经登录到该系统中。事件流:拥有信用卡帐号的储户已经登录到系统后,可以立即查看该账户的透支额。出口条件:系统显示该账户的透支额。 异常事件:无(11)查看汇款方式用例用例名:查看汇款方式参与执行者:拥有结算账户的储户入口条件:拥有结算账户的储户已经登录到该系统中。事件流:拥有结算账户的储户已经登录到该系统后,可以查看该账户的汇款方式。出口条件:系统显示汇款方式异常事件:无8.2建立分析的对象模型1应用程序框架相关类图8.2 应用程序框架相关类图应用程序框架采用MFC的基于对话框的框架程序实现。以下是相关类的设计说明:(1)CBankMISApp类属性:m_rsAccSet数据库记录集对象 m_dbAccounts数据库对象 m_accountMap帐号账户对象映射表操作:CBankMISApp类构造函数,其中构造哈希表初始大小(使用m_accountMap完成) InitInstance初始化实例,其中完成连接数据库、建立对象映射表及开启主对话框 InitMap建立对象映射表(2)CClientsMap类(稍候说明)(3)CAccountsSet类(稍候说明)2各种账户类型(主要数据类)图 8.3 各类型账户类图(1)CAccount类(账户抽象基类)属性:s_lastAccount存放记录集中最后一条记录的序号s_accountCount账户总数m_lID帐号 m_strPassword密码m_accID账户类型 m_curType货币类型 m_balance余额m_perOwner储户信息 m_createDate创建日期操作:CAccount(ACCTYPE AccountType, double InitBalance,CURRENCYTYPE curType, const CString& pwd,const Person* person, long aid=0, const CTime* pTime=NULL)构造函数,构造账户基类 virtual CAccount()析构函数 GetAccountCount()获得账户总数 GetAccountID()获得帐号 GetAccountBalance()获得账户余额GetCurrencyType()获得货币类型GetPersonInfo()获得储户信息 GetCreateDate()获得创建日期字符串对象GetAccountType()获得账户类型CheckPassword检查密码SetPassword设置密码Deposit抽象函数,存款 Withdrawal抽象函数,存款(2)CSaving类(一般存储账户类)属性:无操作:CSaving(ACCTYPE AccountType, double InitBalance,CURRENCYTYPE curType, const CString& pwd,const Person* person, long aid=0, const CTime* pTime=NULL)构造函数 CSaving 析构函数Deposit 存款Withdrawal 取款(3)CCreditCard类(信用卡存储账户类)属性:s_minBalance 最高善意透支数(5000.0)m_password信用卡密码m_curBalance当前透支额操作:CCreditCard(ACCTYPE AccountType, const CString& InitPassword , double InitBalance,CURRENCYTYPE curType , const CString& pwd , const Person* person,long aid=0,const CTime* pTime=NULL,double curBalance=0.0)构造函数CCreditCard析构函数GetCurBalance获取当前透支额SetPassword设置信用卡密码CheckCardPwd检查信用卡密码Deposit 存款Withdrawal 取款(4)CFixSaving 类(定期存储账户类)属性:m_fixTimeType存储年限m_fixTime 到期日期操作:CFixSaving(ACCTYPE AccountType, FIXTYPE ft, const CTime& date, double InitBalance,CURRENCYTYPE curType , const CString& pwd , const Person* person,long aid=0,const CTime* pTime=NULL)构造函数CFixSaving析构函数GetFixTimeType获取定期期限GetFixTime获取到期日期CompareFixTime比较到期情况Deposit存款Withdrawal取款(5)CChecking 类(结算存储账户类)属性:m_remitType汇款方式操作:CChecking(ACCTYPE AccountType, double InitBalance , CURRENCYTYPE curType , const CString& pwd , const Person* person , REMIT remitType, long aid=0,const CTime* pTime=NULL)构造函数CChecking析构函数Deposit存款Withdrawal取款SetRemit设置汇款方式GetRemitType获得汇款方式3存储数据类图 8.4 存储数据库类图CClientsMap类(帐号账户对象基类指针映射表类)属性:无操作:CClientsMap()析构函数,析构由基类指针所指的各账户派生类对象4数据库类图 8.5 数据库类图CAccountsSet类(记录集类):该类的属性自动与数据库中表的所有属性列绑定,作为相应属性列的缓冲区,操作由MFC框架自动生成。数据库中表Accounts如下图,例:+m_AccountID:long代表绑定Accounts表中的AccountID属性,+m_AccountPWD:CString代表绑定Accounts表中AccountPWD属性。8.3提供交互界面的类1. CAboutDlg类(关于对话框)属性:无操作:CAbountDlg构造函数 DoDataExchange重新定义据类中的虚函数,用于交互操作中的数据交换(后同)2. CAskPwdDlg类(输入密码对话框)属性:m_iMode模式选择,1为退出时验证退出密码,2为取款时验证密码 m_strPwd输入密码的缓冲区,CString类对象成员 pAccount账户基类指针,用于在对话框内部验证账户或信用卡密码的正确性操作:CAskPwdDlg构造函数OnOK重新定义基类中的虚函数,用于按OK按钮关闭该交互界面时的回应操作(后同)。3. CChangePwdDlg类(变更密码对话框)属性:m_oldPwd旧密码m_newPwd新密码 m_rePwd重复密码操作:CChangePwdDlg构造函数4. CNewAccountDlg类(增加新账户对话框)属性:m_ctrlRemitCB汇款方式组合框控制,CComboBox类型对象成员 m_ctrlFixCB存期组合框控制,CComboBox类型对象成员 m_ctrlPwdEdit信用卡密码编辑框控制,CEdit类型对象成员 m_ctrlRemit汇款方式标签控制,CStatic类型对象成员 m_ctrlFixDate存款日期标签控制,CStatic类型对象成员 m_ctrlCardPwd信用卡密码标签控制,CStatic类型对象成员m_strPersonName储户姓名标签控制,CStatic类型对象成员 m_strPersonAddr储户地址标签控制,CStatic类型对象成员m_strPersonPhone储户电话标签控制,CStatic类型对象成员 m_strPersonID储户身份证号标签控制,CStatic类型对象成员 m_dInitBalance初始化余额缓冲,double类型 m_iAccountType账户类型缓冲,int类型 m_iCurrencyType货币类型缓冲,int类型m_iRemitType汇款方式类型缓冲,int类型m_iFixType存期类型缓冲,int类型m_strAccPwd账户密码缓冲,CString类型对象成员m_strCardPwd信用卡密码缓冲,CString类型对象成员m_strRePwd重复密码缓冲,CString类型对象成员操作:CNewAccountDlg构造函数 OnSelchangeComboAccounttype改变账户类型下拉列表索引内容时出发的事件处理5. CBankMISDlg类(主对话框)属性:isLogin标记当前是否是登录状态 pAccount账户基类指针 m_imageLis图片列表对象,CImageList类型对象成员m_ctrlPerPhone储户电话标签控制,CStatic类型对象成员m_ctrlPerName储户姓名标签控制,CStatic类型对象成员 m_ctrlPerId储户身份证号标签控制,CStatic类型对象成员 m_ctrlPerAddr储户地址标签控制,CStatic类型对象成员 m_ctrlAccountPwd账户密码编辑框控制,CEdit类型对象成员m_ctrlAccountID账号编辑框控制,CEdit类型对象成员 m_ctrlCreateDate创建日期标签控制,CStatic类型对象成员 m_ctrlRemit汇款方式标签控制,CStatic类型对象成员 m_ctrlFixDate到期日期标签控制,CStatic类型对象成员 m_ctrlCurbal透支额标签控制,CStatic类型对象成员 m_ctrlAccType账户类型标签控制,CStatic类型对象成员 m_ctrlBalance账户余额标签控制,CStatic类型对象成员 m_ctrlBtnCGEPWD更改帐户密码按钮控制,CButton类型对象成员 m_ctrlBtnCGECardPwd更改信用卡密码按钮控制,CButton类型对象成员 m_ctrlCurrType货币类型标签控制,CStatic类型对象成员 m_ctrlBtnLogout登录按钮控制,CButton类型对象成员 m_ctrlBtnLogin登出按钮控制,CButton类型对象成员 m_ctrlBtnQuery查询按钮控制,CButton类型对象成员 m_ctrlBtnDeposit存款或取款按钮控制,CButton类型对象成员 m_ctrlQueryResult查询结果列表,CListCtrl类型对象成员 m_lLoginID帐号缓冲,long类型 m_strLoginPwd密码缓冲,CString类型 m_strPersonId储户身份证号缓冲,CString类型 m_strQueryPwd密码缓冲,CString类型 m_dAmount存取款数量缓冲,double类型 m_iDepositOpt存款或取款选项,int类型操作:CBankMISDlg构造函数 OnButtonAbout激活关于对话框 OnButtonChangeCardPwd激活修改信用卡密码对话框(登录后可用) OnButtonChangePwd激活修改账户密码对话框(登录后可用) OnButtonDeposit处理存款和取款功能(登录后可用) OnButtonLogin处理登录功能 OnButtonLogout处理登出功能 OnButtonNewAccount激活新建账户对话框 OnButtonQuery处理查询其余账户余额功能(登录后可用) OnClose处理WM_CLOSE消息 OnInitDialog初始化对话框图 8.6 主对话类图8.4建立动态模型简列系统中重要业务流程时序图:1装载帐户信息图 8.7装载帐户信息时序图同一时期,只能有帐户类的一个对象生成,用基类指针指向,并添加帐号帐户基类指针映射。2各类储户建立新账户图 8.8建立新账户时序图同一时期,只能有帐户类的一个对象生成,用基类指针指向,并添加帐号帐户基类指针映射。3登录图 8.9登陆时序图同一时期,接受验证的派生类对象只有一个,由基类指针所指。4查询当前帐户信息图 8.10查询当前帐户信息时序图同一时期,基类指针指向唯一一个派生类对象,用基类指针调用相关函数获得信息并显示。5根据身份证号查询其他帐户余额图 8.11查询帐户余额时序图6取款图 8.12取款时序图同一时刻,派生类对象只能出现一个,并且被基类指针所指,借以调用虚函数withdrawal。7存款图 8.13存款时序图同一时刻,派生类对象只能出现一个,并且被基类指针所指,借以调用虚函数deposit。8设置信用卡密码图 8.14设置密码时序图9查看透支额图 8.15查看透支额时序图10查看到期日期图 8.16查看到期日期时序图11查看汇款方式图 8.17查看汇款方式时序图8.5数据库表的设计帐号信息表:属性名属性解释数据类型是否允许空是否主键InternalID内部编号数字AccountID帐号文本AccountPWD密码文本AccountType帐户类型数字CurrencyType货币类型数字Balance数字货币CreateDate创建日期日期/时间CardPwd信用卡密码文本CurBalance透支额数字FixTimeType定期存款限额数字RemitType汇款方式数字PersonID储户身份证号文本PersonName储户真实姓名文本PersonAddr储户通讯地址文本PersonPhone储户电话号码文本8.6界面设计本系统是一个基于对话框的程序,系统每项功能基本上都对应对话框的一个选项。另外每一功能的实现过程都是通过在各种界面上的人机交互完成。1用户账户输入输出/编辑界面该界面是一个拥有多个文本编辑框控件的对话框。 控件的输入限定输入登录账号为09任意组合,成功登录。输入登录账号为其他英文字母,无法输入,但可以通过粘贴输入。输入登录帐号为F1F12功能键,按F1时. 用户账户信息需完整填写当密码为空,或不正确,会提示“账户和密码不匹配”2用户账号选择界面该界面是一个只有一个文本编辑框控件的对话框。测试表明无论输入的身份证号是否合法,都只会导致被查找的人员是否能够找到,而不会影响使用该界面的“查询信息”、“信息删除”和“信息编辑”功能正确实现。3用户账户信息列表显示界面 该界面是一个拥有一个多行多列的列表控件的对话框。列表框中总能正确顺序显示当前人员信息集合中所有人员的主要信息(包括空集合),从而为“信息”显示和“信息排序”功能提供了正确的基本操作。4各类储户可以建立新账户,允许一个储户开设多个多种账户 (账户号有程序自动产生)。在主菜单中选择创建新账户选项,出现创建新账户菜单:a输入真实姓名:该项目不得为空,否则在确定创建时会产生“储户姓名不得为空”的警告。b输入通讯地址:该项目不得为空,否则在确定创建时会产生“储户地址不得为空”的警告c输入电话号码:该项目不得为空,否则在确定创建时会产生“储户电话不得为空”的警告,且该项目拒绝非数字的字符。d输入身份证件:该项目是账户的唯一标识,不得为空,否则在确定创建时会产生“储户身份证不得为空”的警告。同时需满足18位数字,拒绝非数字的字符,否则在确定创建时会产生“储户身份证必须为18位”的警告。e选择账户类型:该选项有一般存储账户、定期存储账户、信用卡存储账户和结算存储账户,默认选项为一般存储账户。f选择定期存储账户:存储年限的选项开启,该选项有一年、三年和五年三个选项,默认选项为一年。g选择信用卡存储账户:信用卡密码项目开启,输入密码不得为空且为6位数字,否则在确定创建时会产生“信用卡密码必须是6位”的警告。h选择结算存储账户:汇款方式选项开启,该选项有邮递、网络和其它三个选项,默认选项为邮递。i选择货币种类:该选项有人民币、美元、英镑、法郎和日圆5个选项,默认选项为人民币。 j输入账户密码:该项目不得为空且必须为6位数字,否则在确定创建时会产生“账户密码必须为6位”的警告。h 输入重复密码:该项目不得为空且,否则在确定创建时会产生“账户密码必须为6位”的警告。而且该密码必须与账户密码一致,否则在确定创建时会产生“两次输入的账户密码不一致”的警告。满足上述所有要求,系统能成功确立新账户。符合功能的设计要求。5各类储户可以在自己的某个账户上存款。在用户登陆的前提下,可以使用存款功能。选择存款选项,输入存款金额:输入的存款金额为正数数字,提交后有存款成功的提示,并在账户余额上增加了存款金额。输入的存款金额为负数时,系统有“存款金额不得为负数”的警告。符合功能的设计要求。输入的存款金额若为字符串或者为空时,系统会出现“请输入一个数”的提示。6各类储户可以从自己的某个账户上取款。在用户登陆的前提下,可以使用取款功能。选择取款选项,输入取款金额:输入的取款金额为正数数字,提交后需输入账户密码,密码无误时,有取款成功的提示,并在账户余额上减去了取款金额密码有误时,系统会出现“口令错误”的警告。输入的取款金额为负数时,系统有“取款金额不得为负数”的警告。符合功能的设计要求。输入的取款金额若为字符串或者为空时,系统会出现“请输入一个数”的提示。7各类储户可以查询自己的某个账户上的余额。在主菜单中的登陆系统输入正确的账户和密码后,系统提示“登陆成功”。输入错误的账户,系统有“未找到匹配的账户”的警告。输入的账户名正确,但密码错误,系统有“账户与密码不匹配的”警告。在登陆成功后,在主菜单中的当前账户信息中的账户余额可以看到该用户的余额。8各类储户可以通过自己的唯一身份信息查询自己所有账户上的余额。在用户登陆的情况下,可以在主菜单中的其它账户查询,查询自己所有账户上的余额。输入身份证号:身份证号不能为空且为18位,否则在查询时会产生“用户身份验证失败”的警告。输入密码:密码不能为空且与账户密码一致,否则在查询时会产生“用户密码验证失败”的警告。输入身份证号与密码成功后,系统会显示该用户的所有账户信息,包括账号、类型、币种、余额、创建日期。9允许储户修改自己的信用卡账户密码。在信用卡账户成功登陆后,主菜单中更改信用卡密码的项目开启。点击进入。输入旧密码:该项目不得为空,否则在确定更改时会产生“密码域不得为空”的警告。在三个密码都不为空的情况下,要与账户密码一致,否则在确定更改时会产生“原始密码错误”的警告。输入新密码:该项目不得为空,否则在确定更改时会产生“密码域不得为空”的警告。输入重复新密码:该项目不得为空,否则在确定更改时会产生“密码域不得为空”的警告。该项目与新密码要一致,否则在确定更改时会产生“两次新密码不一致”的警告。满足上述要求,密码便修改成功。8.7 系统的实现1.软件平台l 操作系统:windows 2000 或windowsXpl 数据库:Access2000l 开发平台:Visual C+6.02.编码1、CAccount类(1)类定义class CAccount/ 操作public:CAccount(ACCTYPE AccountType, double InitBalance,/ 帐户类型,初始化余额 CURRENCYTYPE curType, const CString& pwd,/ 货币类型,帐户密码 const Person* person, long aid=0,/ 储户,默认帐号 const CTime* pTime=NULL); / 默认创建日期virtual CAccount();static unsigned long GetAccountCount();/ 获得帐户个数unsigned long GetAccountID();/ 获得帐号double GetAccountBalance();/ 获得余额CURRENCYTYPE GetCurrencyType();/ 获得货币类型Person GetPersonInfo();/ 获得储户信息CString GetCreateDate();/ 获得创建日期ACCTYPE GetAccountType();/ 获得帐户类型bool CheckPassword(const CString& pwd);/ 检验密码是否合法bool SetPassword(const CString& newPwd);/ 设置密码virtual double Deposit(double amount) = 0;/ 存款 virtual double Withdrawal(double amount) = 0;/ 取款/ 属性public:static unsigned long s_lastAccount;protected:static unsigned long s_accountCount;/ 帐户总数unsigned long m_lID;/ 帐号CString m_strPassword;/ 密码ACCTYPE m_accID;/ 帐户类型CURRENCYTYPE m_curType;/ 货币类型double m_balance;/ 余额Person m_perOwner;/ 储户CTime m_createDate;/ 创建日期;(2)主要算法CAccountCAccount(ACCTYPE AccountType, double InitBalance,/ 帐户类型,初始化余额 CURRENCYTYPE curType, const CString& pwd,/ 货币类型,帐户密码 const Person* person, long aid=0, / 储户,默认帐号 const CTime* pTime=NULL);/ 默认创建日期 参数说明:如上所示。 BEGIN if(账号未被传递进构造函数) then 用当前时间计算账号并保存当前时间为创建日期else 用传递进来的账号作为对象账号endif添加储户信息调整账号序数 ENDSetPasswordbool SetPassword(const CString& newPwd) 参数说明:newPwd,字符串对象的常引用,传递即将变更的新密码 BEGIN更改对象中密码为新密码获取应用程序对象开始数据库事务处理if(没有错误发生)then 更新数据库中密码域,返回trueelse回滚数据库操作,显示错误信息,返回false END2、CSaving 类(1)类定义class CSaving : public CAccountpublic: CSaving(ACCTYPE AccountType, double InitBalance , / 构造函数,参数同其基类 CURRENCYTYPE curType ,const CString& pwd , const Person* person,long aid=0,const CTime* pTime=NULL); virtual CSaving(); virtual double Deposit(double amount);/ 存款 virtual double Withdrawal(double amount);/ 取款;(2)主要算法Depositdouble Deposit(double amount);参数说明:amount,存款金额 返回值说明:函数返回存款后的余额 BEGIN保存当前余额获得应用程序指针开始数据库事务处理if(事务处理过程没有错误) then 更新当前余额,更新数据库余额,提示存款成功信息else回滚数据库,恢复当前余额,提示存款失败信息endif返回当前余额,如果存款成功则为更改后的,如果存款失败则为原来的 ENDWithdrawaldouble Withdrawal(double amount)参数说明:amount,存款金额 返回值说明:函数返回存款后的余额BEGIN保存当前余额获取应用程序指针开始数据库事务处理if(事务处理过程没有错误) then if(余额取款金额)then 提示取款失败信息,回滚数据库,返回当前余额更新当前余额,更新数据库余额,提示取款成功信息else回滚数据库,恢复当前余额,提示取款失败信息endif返回当前余额,如果存款成功则为更改后的,如果存款失败则为原来的END3、CCreditCard 类(1)类定义class CCreditCard : public CAccountpublic:/ InitPassword为信用卡初始密码 CCreditCard(ACCTYPE AccountType, const CString& InitPassword ,double InitBalance,CURRENCYTYPE curType , const CString& pwd , const Person* person,long aid=0,const CTime* pTime=NULL,double curBalance=0.0);/ 构造函数其余参数同其基类 virtual CCreditCard(); double GetCurBalance();/ 获取当前透支额 bool SetPassword(const CString& NewPassword);/ 修改信用卡密码 bool CheckCardPwd(const CString& Passowrd);/ 检验信用卡密码 virtual double Deposit(double amount);/ 存款 virtual double Withdrawal(double amount);/ 取款protected:double m_curBalance;/ 当前透支额 static double s_minBalance; / 最大透支限额 CString m_password;/ 密码6个数字字符;(2)主要算法SetPasswordbool SetPassword(const CString& NewPassword) 参数说明:NewPassword,字符串类型常引用,存放新密码 返回值说明:修改成功返回true,失败返回false BEGIN更新密码获得应用程序指针开始数据库事务处理if(事务处理正常)then 更新数据库中信用卡密码域,确认事务,返回trueelse回滚数据库,提示更改密码失败信息,返回falseendif ENDWithdrawaldouble Withdrawal(double amount)参数说明:amount,存款金额 返回值说明:函数返回存款后的余额 BEGIN保存当前余额和当前透支额获取应用程序指针开始数据库事务处理If(事务处理正常)then if(当前余额+透支额余额取款金额) then 提示错误信息,回滚数据库,返回当前余额if(当前余额取款金额) then 更新当前透支额=取款金额-当前余额,当前余额=0else 当前余额-=取款金额更新数据库中余额和透支额,确认事务,提示当前透支额,返回当前余额else回滚数据库,提示错误信息,恢复当前余额和透支额返回当前余额,如果存款成功则为更改后的,如果存款失败则为原来的 END4、CFixSaving 类(1)类定义class CFixSaving : public CAccountpublic: CFixSaving(ACCTYPE AccountType, FIXTYPE ft,/ ft为定期期限 const CTime& date, double InitBalance,/ date为到期日期 CURRENCYTYPE curType , const CString& pwd , const Person* person,long aid=0, const CTime* pTime=NULL);/ 构造函数,其余项目同基类 FIXTYPE GetFixTimeType();/ 获

温馨提示

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

最新文档

评论

0/150

提交评论