7C MFC课程设计之活期储蓄管理系统.doc_第1页
7C MFC课程设计之活期储蓄管理系统.doc_第2页
7C MFC课程设计之活期储蓄管理系统.doc_第3页
7C MFC课程设计之活期储蓄管理系统.doc_第4页
7C MFC课程设计之活期储蓄管理系统.doc_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

此报告的源代码(工程)下载地址:/source/3551927大学C+面向对象课程设计报告院(系): 计算机工程学院 专业: 软件工程 学生姓名: 班级: 学号: 2 题目: 银行储蓄管理系统 起讫日期: 2010.07.04-2010.07.14 设计地点: 指 导 教 师: 完成日期: 2010 年07月14日一、 课程设计目的1、 进行c+面向对象程序设计的复习巩固;2、 在完成c+面向对象语言学习的基础上,通过自学MFC,掌握一种可视化编程的方法,并通过实践,加深对面向对象语言的理解。3、 提高运用c+编程的能力和解决实际问题的能力,创新能力及团队合、协调能力4、 提高调查研究、查询技术文献、资料和编程及设计文档的能力;5、 首次尝试编写软件,学习实际操作开发能力,体验学习基础知识重要性。6、 提高自学能力,体验合作以及独立编程、分析文献等各方面的重要性,加强这些方面素质的训练。二、 课程设计内容与实现的功能 课程设计内容是活期储蓄管理系统,次系统主要实现开户、存款、取款、查询以及销户的功能。还有一些细节的地方,比如各个输入位置输入不合法的情况,及BackSpace的功能,等等。三、 系统分析与设计1、系统分析(1)信息。完整描述系统中所处理的全部信息; (2)行为。完全描述系统状态变化所需处理或功能; (3)表示。详细描述系统的对外接口与界面。我的这个系统主要是实现活期储蓄中的开户、存款、取款、查询和销户等的操作。是假定的某银行账户的账号从50000开始的,没增加一个账户,账号就加1,数组对象的每个对象的位置与账号是一一对应的,故,用线性的查找方法可以迅速的找到所查找的账户。我的这个MFC程序主要是一个界面,上面有两个编辑框,和一个接近键盘的按钮组合,需要用户开户,依次输入姓名、设置密码(密码必须是六位字母或者数字)、输入开户金额(必须大于10元),开户成功,然后就可以进行查询和存取钱了,查询的时候需要输入的就是账号和密码,就能查询到该账户的基本情况。还可以进行存取款操作,输入账号和密码之后然后选择存款还是取款,然后是存取金额。销户的时候,输入账号和密码就可以了。各个地方输入错误的时候都会有相应的提示,关于提示,详见设计说明。2、系统设计:1、 引言编写目的:学习一种可视化界面编程操作。背景:学习完成c+。定义:参考资料:数据结构、c+面向对象程序设计、孙鑫MFC教程等2、 总体设计需求规定:要求能够存款、取款、开户、销户。运行环境:Visual Studio2010/Windows基本设计概念和流程图:2.1、模块设计:主要的类是CBankingDlg和Depositor,后者是我自己建立的,用来存储用户信息的。在CBankingDlg里分为开户、存取款、查询、销户、输入五大模块,这五大模块是分别独立的,不能同时运行。但这些模块的运行时都会牵扯到Depositor成员的改动。其中,输入模块的设计是最难的。我设计的是开关性质的输入方式:开户、存取款、查询、销户四大模块分别是一个开关,每个模块开始的时候所有的开关均需要清零,当一个模块下面有多个输入的时候,我设置的是子开关。2.2、数据结构说明:我是用的是线性结构,即数组对象每个对象的编号和账号之间用哈希函数建立联系。int A_Num;/储蓄账号CString A_Name;/储户姓名double A_Overmoney;/账户余额CString A_PassWord;/账户密码其他的开关,有的是CString的,有的是char类型的,等等。2.3、算法流程图:类图功能区大模块:开户_NewAcount()查询_Search()存取款_ChangeMoney()销户_Destroy()CBankingDlg输入系统共46个按钮开户开关清零账户量加1打开开户开关,提示输入姓名输入系统,存储查询开关清零输入账号和密码打开该开关,提示输入姓名密码输入系统给出账户基本信息存取钱开关清零输入账号,密码,存取,打开该开关,提示输入姓名密码输入系统给出账户基本信息销户开关清零输入账号和密码打开该开关,提示输入姓名密码输入系统确认,销户各个小模块功能图:输入系统,例,Button_s()销户op_DestroyAcount=y存取款op_ChageMoney=y查询op_Search=y开户op_NewAcount=yYop_Name=yName_CS+=_T(“s”)显示Name_CSYop_PassWord=yPassWord_CS+=_T(“s”);输出它Yop_OverMoneye=y空(仅限数字和点)Yop_Num=y空(仅限数字)Yop_PassWord=yPassWord_CS+=_T(“s”);输出它Yop_Num=y空Yop_PassWord=yPassWord_CS+=_T(“s”);输出它ST=s,输出它Yop_ST=y空,(仅限数字和点)Yop_CA=yYop_Num=y空Yop_PassWord=yPassWord_CS+=_T(“s”);输出它输出:请输入y或nYop_STD=yEnter 的功能:把屏幕上的分别赋值给A_NameA_PassWordA_OverMoney等,并进行输出、处理等相应操作。四、系统测试与调试分析1、系统测试l 测试方法:黑盒l 测试技术:功能测试l 测试数据:见表测试报告: 测试说明测试名称活期储蓄管理系统测试目的验证系统正常处理流程测试技术功能测试测试方法黑盒测试法测试用例测试内容开户测试步骤输入正确用户名与密码开户金额输入正确用户名密码,错误的开户金额输入正确的用户名错误的密码输入错误的用户名测试数据guoqihong,123456,11guoqihong,123456,5guoqihong,123-预期结果开户成功显示开户金额最少10元提示密码必须是六位-测试结果与预期相符与预期相符与预期相符-测试用例测试内容查询测试步骤输入正确账号与密码输入正确账号错误的密码 错误账号-测试数据50005,12345650005,1234575000-预期结果给出账户信息密码错误提示非本行账号-测试结果与预期相符与预期相符与预期相符-测试内容存取钱测试步骤输入正确账号与密码输入正确账号错误的密码 错误账号余额是50时,输入存取款金额前边都正确,输入s或t或其他字符测试数据50005,12345650005,1234575000存49,取100s,t,a,b,c,1,5预期结果提示存还是取密码错误提示非本行账号50存取款成功,取款余额不足s-进入存钱,t-进入取钱,其他提示应输入s或t测试结果与预期相符与预期相符与预期相符相符2、调试分析:1、开关老是设置不对,老是打开关闭不合理,导致功能实现不了。 仔细分析开关打开关闭情况,并进行修改。2、全局变量设置,放在了cpp文件里,并用extern声明。五、用户手册1、使用平台是Visual Studio 20102、不需要安装3、使用方法:分别点击开户,查询,存取钱,销户可以进行相应的操作。每次输入完之后 需要按回车。六、程序清单类Depositor#pragma once#includeiostream#includefstream#includeiomanip#includestringconst bool OK=1;const bool NO=0;using namespace std;/extern ofstream output;class Depositorpublic:Depositor();Depositor();public:int A_Num;/储蓄帐号CString A_Name;/储户姓名double A_Overmoney;/储蓄余额CString A_PassWord;/用户密码;按键s的功能实现:(取为例子)void CBankingDlg:OnBnClickedButton_s()if(op_NewAcount=y)if(op_Name=y)/为开户输入姓名Name_CS+=_T(s);UpdateData(FALSE);m_display2.SetWindowText(Name_CS);else if(op_PassWord=y)/为开户输入密码PassWord_CS+=_T(s);ShowPassWord_CS+=_T(*);UpdateData(FALSE);m_display2.SetWindowTextW(ShowPassWord_CS);else if(op_OverMoney=y)/为开户输入开户金额else if(op_Search=y)if(op_Num=y)/为查询输入账号else if(op_PassWord=y)/为查询输入密码PassWord_CS+=_T(s);ShowPassWord_CS+=_T(*);m_display2.SetWindowText(ShowPassWord_CS);else if(op_ChangeMoney=y)if(op_Num=y)/为存取款输入账号else if(op_PassWord=y)/为存取款输入密码PassWord_CS+=_T(s);ShowPassWord_CS+=_T(*);m_display2.SetWindowText(ShowPassWord_CS);else if(op_ST=y)ST=s;m_display2.SetWindowTextW(_T(s);/选择存款还是取款-只对s和t有用else if(op_ChangeAmount=y)/输入要存入或取出的金额else if(op_DestroyAcount=y)if(op_Num=y)m_display2.SetWindowTextW(_T(请输入账号);/为销户输入账号else if(op_PassWord=y)PassWord_CS+=_T(s);ShowPassWord_CS+=_T(*);m_display2.SetWindowText(ShowPassWord_CS);/为销户输入密码else if(op_SureTODestroy=y)m_display2.SetWindowText(_T(请输入y/n);/为删除帐户判断,确定还是取消/ TODO: 在此添加控件通知处理程序代码BankingDlg.cppvoid CBankingDlg:OnBnClickedButton_NewAcount()op_NewAcount=op_Search=op_ChangeMoney=op_DestroyAcount=n;op_Num=op_Name=op_PassWord=op_OverMoney=n;Name_CS=PassWord_CS=OverMoney_CS=ShowPassWord_CS=_T();Enter=n;op_NewAcount=y;pCount_OP.A_Num=Count_OP+50000;m_display.SetWindowText(_T(您要进行开户操作rn您的账号是);CString str1,str2;m_display.GetWindowText(str1);str2.Format(_T(%d),pCount_OP.A_Num);str1=str1+str2;m_display.SetWindowText(str1);/CString str3;m_display.GetWindowText(str1);/str1+=_T(rn请输入您的姓名);op_Name=y;/m_display.SetWindowText(str1);/UpdateData(FALSE);m_display2.SetWindowText(_T(请输入您的姓名);/ TODO: 在此添加控件通知处理程序代码void CBankingDlg:OnBnClickedButton_Search()op_NewAcount=op_Search=op_ChangeMoney=op_DestroyAcount=n;op_Num=op_Name=op_PassWord=op_OverMoney=n;Name_CS=Name_CS=PassWord_CS=OverMoney_CS=ShowPassWord_CS=_T();Enter=n;num_in=k=0;/哈希函数值清零op_Search=y;m_display.SetWindowText(_T(您要进行查询操作操作rn请输入您的账号);m_display2.SetWindowTextW(_T(请在这里输入您的账号);op_Num=y;/打开为查询输入账号的门/ TODO: 在此添加控件通知处理程序代码void CBankingDlg:OnBnClickedButton_ChangeMoney()op_NewAcount=op_Search=op_ChangeMoney=op_DestroyAcount=n;op_Num=op_Name=op_PassWord=op_OverMoney=n;Name_CS=PassWord_CS=OverMoney_CS=ShowPassWord_CS=ChangeAmount_CS=_T();Enter=n;num_in=k=0;/哈希函数值清零op_ChangeMoney=y;m_display.SetWindowText(_T(您要进行查询操作操作rn请输入您的账号);m_display2.SetWindowTextW(_T(这里输入您的账号);op_Num=y;/ TODO: 在此添加控件通知处理程序代码void CBankingDlg:OnBnClickedButton_DistroyAcount()op_DestroyAcount=y;op_NewAcount=op_Search=op_ChangeMoney=op_ChangeMoney=n;op_Num=op_Name=op_PassWord=op_OverMoney=n;Num_CS=Name_CS=PassWord_CS=OverMoney_CS=ShowPassWord_CS=ChangeAmount_CS=_T();Enter=n;num_in=k=0;/哈希函数值清零m_display.SetWindowTextW(_T(您要进行销户操作);m_display2.SetWindowTextW(_T(请输入您帐号);op_Num=y;/ TODO: 在此添加控件通知处理程序代码void CBankingDlg:OnBnClickedButton_Enter()Enter=y;if(op_NewAcount=y)if(op_Name=y)/pCount_OP.A_Name=(LPSTR)(LPCTSTR)Name_CS;/直接用CString类型比较pCount_OP.A_Name=Name_CS;m_display2.SetWindowTextW(_T(请为您的账户设置密码);op_Name=n;op_PassWord=y;else if(op_PassWord=y)/pCount_OP.A_PassWord=(LPSTR)(LPCTSTR)PassWord_CS;/直接用CString类型存储秘maint jud;jud=PassWord_CS.GetLength();if(jud=6)pCount_OP.A_PassWord=PassWord_CS;m_display2.SetWindowText(_T(请输入您的开户金额);op_PassWord=n;op_OverMoney=y;elsem_display2.SetWindowTextW(_T(对不起,密码必须是六位!重新输入);PassWord_CS=_T();else if(op_OverMoney=y)/pCount_OP.A_Overmoney=(double)atof(LPCSTR)OverMoney_CS);pCount_OP.A_Overmoney=_wtof(OverMoney_CS.GetString();/VS下CString转doubleif(pCount_OP.A_Overmoney=10)m_display.SetWindowText(_T(账户创建成功,您可以到主菜单查询rn);m_display2.SetWindowTextW(_T();op_OverMoney=n;/*CString str1,str2,str3;str1.Format(_T(%d),pCount_OP.A_Num);str2.Format(_T(%f),pCount_OP.A_Num);str3.Format(_T(%f),pCount_OP.A_Overmoney);str1=str1+str2+str3;m_display.SetWindowText(str3);*/Count_OP+=1;else m_display2.SetWindowTextW(_T(对不起,开户金额最少10元,请重新输入);OverMoney_CS=_T();op_OverMoney=n;else if(op_Search=y)if(op_Num=y)/str1=Num_CS+_T(add);num_in=_tcstoul(Num_CS,NULL,10);/VS2010中把CString转为int型_tcstolif(num_in50000)m_display.SetWindowTextW(_T(账号不存在!请重新输入查询账号);Num_CS=_T();elsek=num_in-50000;op_Num=n;op_PassWord=y;m_display2.SetWindowText(_T(请输入查询密码); else if(op_PassWord=y)/char *p = (LPSTR)(LPCTSTR)cstr/VS2010CString转char*if(PassWord_CS=pk.A_PassWord)m_display.SetWindowTextW(_T(查询结果:rn);m_display.GetWindowText(str1_search_CS);str2_search_CS=_T(账号:);str1_search_CS+=str2_search_CS;m_display.SetWindowTextW(str1_search_CS);m_display.GetWindowText(str1_search_CS);Num_CS.Format(_T(%d),pk.A_Num);str1_search_CS+=Num_CS;m_display.SetWindowTextW(str1_search_CS);m_display.GetWindowText(str1_search_CS);str2_search_CS=_T(rn姓名:);str1_search_CS+=str2_search_CS;m_display.SetWindowText(str1_search_CS);m_display.GetWindowText(str1_search_CS);Name_CS.Format(_T(%s),pk.A_Name);str2_search_CS=Name_CS;str1_search_CS+=str2_search_CS;m_display.SetWindowText(str1_search_CS);m_display.GetWindowText(str1_search_CS);str1_search_CS+=_T(rn账户余额:);m_display.SetWindowText(str1_search_CS);m_display.GetWindowText(str1_search_CS);OverMoney_CS.Format(_T(%f),pk.A_Overmoney);str1_search_CS+=OverMoney_CS;m_display.SetWindowText(str1_search_CS);/格式化输出查询结果else m_display.SetWindowText(_T(密码错误,请重试);op_PassWord=n;Num_CS=PassWord_CS=Name_CS=OverMoney_CS=_T();/op_Search=n;else if(op_ChangeMoney=y)if(op_Num=y)m_display2.GetWindowText(num_in_CS);num_in=_tcstoul(num_in_CS,NULL,10);/VS2010中把CString转为int型_tcstolif(num_in=ChangeAmount)pk.A_Overmoney-=ChangeAmount;str=_T(取钱成功,取出)+ChangeAmount_CS+_T(元);/ChangeAmount_CS=_T(0);m_display2.SetWindowTextW(str);op_ChangeAmount=n;ST=a;op_Changing=n;else m_display2.SetWindowTextW(_T(余额不足,请返回重试);ChangeAmount_CS=_T(0);op_Changing=y;ST=t;/op_ChangeAmount=n;/ST=a;/随便设置的/op_Changing=n;/op_ChangeMoney=n;else if(op_DestroyAcount=y)if(op_Num=y)num_in=_tcstoul(Num_CS,NULL,10);/VS2010中把CString转为int型_tcstolif(num_in50000)m_display.SetWindowTextW(_T(账号不存在!请重新输入查询账号);/Num_CS=_T();elsek=num_in-50000;op_Num=n;op_PassWord=y;m_display2.SetWindowText(_T(请输入查询密码);else if(op_PassWord=y)if(PassWord_CS=pk.A_PassWord)m_display.SetWindowText(_T(确定要销户吗?rny-是rnn-不销户,点错了);op_SureTODestroy=y;op_PassWord=n;elsem_display.SetWindowTextW(_T(密码错误,请返回主菜单);PassWord_CS=_T();op_ChangeMoney=n;op_SureTODestroy=n;/销户按钮上应该有该句。op_PassWord=n;else if(op_SureTODestroy=y)/m_display2.GetWindowTextW(SureORNot);if(SureORNot=_T(y)pk.A_Name=_T();pk.A_Num=0;CString PayBack,str;PayBack.Format(_T(%f),pk.A_Overmoney);PayBack=_T(您的账户还有rn)+PayBack+_T(rn元,请取回以销户);str=_T(账号)+Num_CS+_T(被销户!);m_display.SetWindowTextW(PayBack);m_display2.SetWindowTextW(str);pk.A_PassWord=_T(*);Num_CS=_T();/num_in=0;/无所谓SureORNot=_T(a);/op_SureTODestroy=n;/op_D

温馨提示

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

评论

0/150

提交评论