# 基于VC++的MFC类库实现的住房贷款计算器
# 1 系统需求分析
## 1.1 系统目标
在我们的日常生活中,经常会遇到一些繁琐的计算,比如房贷的计算,手工计算非常的繁琐,这时我们就需要用到一个专门的房贷计算器,所以借着课程设计这个机会我便开发了这个房贷计算器。计算器要实现的功能有以下几个方面:等额本息还款法的房款总额、贷款总额、还款总额、总支付利息、首期付款、贷款月数和月均还款,等额本金还款法的房款总额、贷款总额、还款总额、总支付利息、首期付款、贷款月数、首月还款和每月换款递减数。
## 1.2 主体功能
- 通过输入商业贷款、公积金贷款或者组合贷款的各组数据,计算出等额本息还款法或者等额本金还款法的各个还款项目
- 通过MFC对话框编程,实现一些好玩的功能,比如按钮颜色改变,对话框背景设置等
- 通过点击软件上的按钮可以方便的调用系统自带的屏幕键盘,增加了本计算器的可操作性
- 操作更加人性化,方便他人使用
## 1.3 课程设计思想
整个房贷计算器最主要两个类的类图如下:
- **CMy03Dlg是整个对话框的类**,它的基类是CDialog,CMy03Dlg包含了几个主要的公有成员函数:OnBegin()、OnButt()、OnCtlColor()、OnExp()、OnReset()、OnOpenkeybord()等:
- OnBegin()成员函数是用来控制开始计算按钮的函数,这个函数体内主要添加用于计算的代码
- OnButt()成员函数是一个控制结果显示的函数
- OnCtlColor()是用来控制各个BUTTON按钮的属性的函数,只有添加了这个函数BUTTON按钮的各个属性值才会改变
- OnExp()是打开程序说明弹窗的函数
- OnReset()是一个用来重置各个变量的成员函数
OnOpenkeybord()是打开系统屏幕键盘的函数
![](http://www.writebug.com/myres/static/uploads/2021/10/19/74047a97b491c9e7706387a98a402785.writebug)
- **CBtnTest类是一个为了实现控制BUTTON按钮属性而添加的类**,里面的代码需要根据具体的需要自行添加,这个类是从CButton类继承的类,里面只有有三个成员函数:
- DrawItem()是为了改变Button按钮而重写的一个函数
- SetDownColor()是为了改变按钮按下之后的颜色而写的一个函数,显而易见
- SetUpColor()是为了实现改变按钮未按下时的颜色而写的函数
![](http://www.writebug.com/myres/static/uploads/2021/10/19/c1b4f8ce24d2c82733d8866406c6ec51.writebug)
## 1.4 开发环境
- Windows操作系统
- VC++ 6.0
- OFFICE WORD
# 2 系统详细设计
## 2.1 设计步骤
打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard [exe] 工程,输入工程名房贷计算器及其所在位置,点击确定,如下图所示。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/bafd3a94651db4ed59153afa35f7ebaf.writebug)
接下来,选择基本对话框,点击完成,如下图所示。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/40620db8d32eda7731490e3d06108522.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/991afa656b286afe1c361988d61d5c1f.writebug)
## 2.2 界面设计
界面设计主要是创建控件,在选项卡中打开Dialog资源组,双击IDD\_MY03\_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。
在“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时弹出Edit属性对话框,如下图所示,在该对话框中输入ID属性。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/fca9db517de39cabd449c178d8109c0a.writebug)
在“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,如下图所示,在该对话框中输入控件的ID值和标题属性。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/57dcf29150e8e647c240c7a29968cd3b.writebug)
**各按钮和编辑框等对象的属性**
| 对象 | ID | 对应的变量名称 | 标题或说明 |
| ----- | --------------- | --------- | --------- |
| 单选框 | IDC_LOAN1 | m_nLoan1 | 商业贷款 |
| 单选框 | IDC_LOAN2 | | 公积金贷款 |
| 单选框 | IDC_LOAN3 | | 组合贷款 |
| 单选框 | IDC_DAREA | m_nDarea | 根据面积、单价计算 |
| 单选框 | IDC_DTOTAL | | 根据贷款总额计算 |
| 编辑框 | IDC_UNITP | m_fDj | 单价 |
| 编辑框 | IDC_AREA | m_fArea | 房屋面积 |
| 下拉列表框 | IDC_CSHU | m_nCshu | 按揭成数 |
| 编辑框 | IDC_TOTAL1 | m_fTotal1 | 商业贷款总额 |
| 编辑框 | IDC_TOTAL2 | m_fTotal2 | 公积金贷款总额 |
| 下拉列表框 | IDC_YEARS | m_nYears | 按揭年数 |
| 编辑框 | IDC_LILV1 | m_fLilv1 | 商业贷款利率 |
| 编辑框 | IDC_LILV2 | m_fLilv2 | 公积金贷款利率 |
| 复选框 | IDC_METH1 | m_nMeth1 | 等额本息还款 |
| 复选框 | IDC_METH2 | m_nMeth2 | 等额本金还款 |
| 按钮 | IDC_BEGIN | m_begin | 开始计算 |
| 按钮 | IDC_RESET | m_reset | 全部清零 |
| 按钮 | IDC_OPENKEYBORD | m_open | 打开屏幕键盘 |
| 按钮 | IDC_EXP | m_exp | 程序说明 |
| 按钮 | IDOK | m_TestBtn | 退出程序 |
| 按钮 | IDC_BUTT | m_butt | 隐藏结果 |
| 编辑框 | IDC_REFK1 | m_fFkze1 | 房款总额输出框 |
| 编辑框 | IDC_REDK1 | m_fDkze1 | 贷款总额输出框 |
| 编辑框 | IDC_REHK1 | m_fHkze1 | 还款总额输出框 |
| 编辑框 | IDC_REZF1 | m_fZflx1 | 支付利息输出框 |
| 编辑框 | IDC_RESQ1 | m_fSqfk1 | 首期付款输出框 |
| 编辑框 | IDC_REDKY1 | m_nDkys1 | 贷款月数输出框 |
| 编辑框 | IDC_REYJ1 | m_fYjhk1 | 月均还款输出框 |
| 编辑框 | IDC_REFK2 | m_fFkze2 | 房款总额输出框 |
| 编辑框 | IDC_REDK2 | m_fDkze2 | 贷款总额输出框 |
| 编辑框 | IDC_REHK2 | m_fHkze2 | 还款总额输出框 |
| 编辑框 | IDC_REZF2 | m_fZflx2 | 支付利息输出框 |
| 编辑框 | IDC_RESQ2 | m_fSqfk2 | 首期付款输出框 |
| 编辑框 | IDC_REDKY2 | m_nDkys2 | 贷款月数输出框 |
| 编辑框 | IDC_REYJ2 | m_fYjhk2 | 月均还款输出框 |
| 编辑框 | IDC_REDJ | m_nMydj | 每月递减输出框 |
其余文字均为静态文本框,此处不一一列举了。
给编辑框连接变量。在编辑框上单击鼠标右键,在弹出菜单中选择ClassWizard菜单项,弹出MFC ClassWizard对话框,选择Member Variables选项卡,如下图所示。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/1ac482fa885275807e287eecda4e9f42.writebug)
在Control IDs列表框中选择IDC\_LOAN1,单击Add Variables按钮,在弹出的对话框中连接变量m\_nLoan1,变量类型设定为int型,如下图所示。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/17e2575f2f459c56ca9a851f337bfd66.writebug)
在“开始计算”按钮上单击鼠标右键,在弹出的对话框中选择Messages Maps选项卡,然后在Object IDS列表框中选择IDC\_BEGIN,在Messages列表框中选择BN\_CLICKED项,即选择单击按钮事件,如下图所示。
![](http://www.writebug.com/myre