您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 银行定期储蓄管理系统报告
银行定期储蓄管理系统实验报告一、实验目的1.通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。2.通过实践进一步领会程序设计的特点和应用,提高运用C++语言以及面向对象知识解决实际问题的能力。3.通过实践掌握用C++语言编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识;4.学会利用C++程序设计语言编写出基于单文档并且可靠的Windows实用程序,切实提高面向对象的程序设计能力。为后续的相关课程的学习打下基础。二、实验要求·要求该系统存贮以下信息:1.每笔存款的储户信息和办理该笔存款的营业员信息,这些信息存放于存款文件中。其中,储户信息包括:帐号,姓名,密码,地址,储种(定期1年、3年、5年),本金,收储日期,是否已挂失和挂失日期,营业员信息包括:接待该储户的营业员的姓名与工号。2.每笔取款的储户信息和办理该笔取款的营业员信息,这些信息存放于取款文件中。·系统功能要求如下:1.创建存款文件(第一次输入储户信息时);2.创建取款文件(第一次办理取款时);3.接收储蓄。接收储户与营业员信息并将以上信息添加到存款文件中;4.处理挂失。根据储户提供的帐号、姓名、密码、地址、储种,储金核查有无此项存款,有则对此帐号加入挂失标记,若无此项存款,则需判断是否领走还是未发生过这笔存款。5.办理取款:(1)根据储户提供的存款单(上面有帐号、姓名、储种、本金、日期)判断是否到期,检查有否挂失,根据储户提供的密码判断是否正确。若以上判断通过,执行以下三步。(2)在取款文件中添加这笔取款的储户和营业员的所有信息和取款日期,以便复查。(3)打印利息单,其内容包括:帐号、姓名、储种、起息日期,支取日期、本金、利息和支取金额。利息计算方法如下:1年到期利率1.98%;3年到期利率2.25%:5年到期利率3.5%,每逾期一天,每天利率0.05‰;若未到期提前支取,按每天利率0.05‰计,利息税按20%扣除。(4)在存款文件中对这笔存款删除。6.统计今后3天每天到期的储金数,以便备款。三、设计思路和关键代码3.1算法基本流程和相关代码1)创建一个基于单文档并继承CListView的MFC框架2)创建一个自定义存款信息类SavingMessage保存储户和营业员的信息,派生之CObject以便实现序列化操作3)创建自定义取款信息类FetchMessage保存取款后储户和营业员的信息(包括利息和取款日期),也能对其进行序列化操作4)创建存款对话框,供储户和营业员输入信息,在CSaveSystemDoc中添加菜单响应消息接收输入的信息,并将信息存储在CSaveSystemDoc类中声明的一个SavingMessage类型的列表m_putin中。相关代码:voidCSaveSystemDoc::OnMenuitemSendout(){SavingMessagesavingmessage;CInputDialogdialog;if(dialog.DoModal()==IDOK){savingmessage.customer.address=dialog.m_address;savingmessage.customer.corpus=dialog.m_corpus;savingmessage.customer.key=dialog.key;savingmessage.customer.m_account=dialog.m_account;savingmessage.customer.m_date=dialog.m_date;savingmessage.customer.m_name=dialog.m_name;savingmessage.customer.type=dialog.type;savingmessage.salesman.m_name=dialog.m_named;savingmessage.salesman.number=dialog.m_number;m_putin.AddTail(savingmessage);UpdateAllViews(NULL);//显示m_getin列表中所有元素}}5)创建办理挂失的对话框,当储户输入银行账户和密码时通过遍历m_putin中的元素来查找该储户然后将其成员变量islost修改为1从而达到挂失的目的6)创建取款对话框,当储户输入银行账户和密码时通过遍历m_putin中的元素来查找是否有该储户,如果有则计算利息并将该储户的信息,营业员信息,利息一并存储在在CSaveSystemDoc中声明的FetchMessage类型的取款列表m_getin中,并将此储户信息从m_putin中删除。如果该储户已办理挂失,则打印挂失消息,若储户已将存款取走,打印消息。以上操作都在对话框的确定按钮被按下时进行。相关代码:voidCGetIn::OnOK(){//TODO:AddextravalidationhereUpdateData(true);POSITIONpos1,pos2;pos1=(m_pDoc-m_putin).GetHeadPosition();//获取m_putin列表中元素的首地址while(pos1!=NULL)//遍历列表元素{FetchMessagefetchmessage;pos2=pos1;SavingMessagesavingmessage=(m_pDoc-m_putin).GetNext(pos1)//获取列表元素if(m_account==savingmessage.customer.m_account&&m_key==savingmessage.customer.key)//比较列表中对应元素的储户帐号和密码与储户取款时输入的账号密码{if(savingmessage.islost==1)//根据在savingmessage中存储的islost变量判断此帐户有没挂失{MessageBox(此帐号已被挂失);CDialog::OnOK();return;}//对储户利息的计算m_ctime=COleDateTime::GetCurrentTime();//获取当前时间COleDateTimentime=savingmessage.customer.m_date;savingmessage.customer.m_date.SetTime(0,0,0);CTimetm1(m_ctime.GetYear(),m_ctime.GetMonth(),m_ctime.GetDay());//取款日期CTimetm2(ntime.GetYear(),ntime.GetMonth(),ntime.GetDay());//存款日期CTimetm4(ntime.GetYear()+atoi(savingmessage.customer.type),ntime.GetMonth(),ntime.GetDay());CTimeSpantm3=tm1-tm2;CTimeSpantm5=tm1-tm4;if(tm1==tm4){switch(savingmessage.customer.type.GetAt(0)){case'1':fetchmessage.m_total=savingmessage.customer.corpus*(1+0.0198);fetchmessage.m_fee=savingmessage.customer.corpus*0.0198;case'3':fetchmessage.m_total=savingmessage.customer.corpus*pow((1+0.0225),3);fetchmessage.m_fee=fetchmessage.m_total-savingmessage.customer.corpus;case'5':fetchmessage.m_total=savingmessage.customer.corpus*pow((1+0.035),5);fetchmessage.m_fee=fetchmessage.m_total-savingmessage.customer.corpus;default:break;}if(tm1tm4){intnday=tm3.GetDays();fetchmessage.m_fee=(savingmessage.customer.corpus*pow((1+0.00005),nday)-savingmessage.customer.corpus)*0.8;fetchmessage.m_total=savingmessage.customer.corpus+fetchmessage.m_fee;}if(tm1tm4){intmday=tm5.GetDays();switch(savingmessage.customer.type.GetAt(0)){case'1':fetchmessage.m_total=savingmessage.customer.corpus*(1+0.0198)*pow((1+0.00005),mday);fetchmessage.m_fee=fetchmessage.m_total-savingmessage.customer.corpus;case'3':fetchmessage.m_total=savingmessage.customer.corpus*pow((1+0.0225),3)*pow((1+0.00005),mday);fetchmessage.m_fee=fetchmessage.m_total-savingmessage.customer.corpus;case'5':fetchmessage.m_total=savingmessage.customer.corpus*pow((1+0.035),5)*pow((1+0.00005),mday);fetchmessage.m_fee=fetchmessage.m_total-savingmessage.customer.corpus;default:break;}}//fetchmessage.getdate=m_ctime;fetchmessage.customer=savingmessage.customer;fetchmessage.customer.m_date=ntime;fetchmessage.salesman=savingmessage.salesman;(m_pDoc-m_getin).AddTail(fetchmessage);//将该储户取款的信息保存m_getin(m_pDoc-m_putin).RemoveAt(pos2);//在m_putin中删除所有该信息CStringstr;str.Format(%f,fetchmessage.m_fee);str=你的利息为:+str;MessageBox(str);CDialog::OnOK();return;}}MessageBox(对不起,你的账户或密码不正确);CDialog::OnOK();}7)在CSaveSystemDoc的串行化函数Serialize中保存m_putin和m_getin列表8)在CSaveSystem类中分别添加菜单项命令消息a)OnMenuitemSendlist:打印出存款单b)OnMenuitemGetlist:打印利息单四、基本界面主界面存储对话框取款对话框和挂失对话框(两者一样)六、实验心得与编程收获通过这个计算器程序让我理解了MFC基于对话框编程的方法,并且掌握了常用控件如文本框,按钮的使用,更深入地了解到C++封装的各种类的强大功能,尤其是CString类,我们知道此计算器程序就是对字符串的处理!其实MFC也并不是那么地恐怖,它为我们提供了一个很好的编程接口,只需我们添加一些代码而已,所以只要你理解一下它的本质,它的
本文标题:银行定期储蓄管理系统报告
链接地址:https://www.777doc.com/doc-2400349 .html