《 面 向 对 象 的 程 序 设 计 》
大 作 业
题目: 《我的家房贷利率计算器》
物联网工程学院 学院
计算机科学与技术
专业
学
号:
1020316135
学生姓名:
王夏东
班
成
级:
绩:
计科 1901
2020 年 6 月
一、需求分析
(一)甲方要求
(1)采用面向对象的思想设计程序。
(2)采用 C++语言进行设计。
(3)注意人机友好性。
(4)对用户输入,给出足够的提示信息。
(5)程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误
而中断执行。对输入值的类型、大小范围、字符串的长度等,进行正确性检查,
对不合法的输入值给出出错信息,指出错误类型,等待重新输入。
(6)对删除数据应给出警告,以便用户确认删除操作。
(7)对界面进行美化。
(二)要求分析
(1)目标
开发设计一款能够准确计算房贷利息的计算器
(2)功能需求
1.用户在界面上输入信息数据,程序能够根据条件和所得信息数据准确地计
算出房贷利息等相关信息并显示在界面中。
2.对用户的错误数据输入和清除数据等行为给出明确提示。
(3)界面需求
界面简洁大方,各模块区分明了,数据显示清晰,用户能够根据提示正确输
入数据
(4)性能需求
1.程序运行环境为 Windows 操作系统,能够接受鼠标和键盘的操作。
2.程序能够快速地、准确地、无误地得出正确信息。
3.程序具有一定的健壮性,不会因为一些预知外的操作引起程序中断。
(5)其他
程序以 C++语言为主体,采用面向对象地程序设计思想,人机交互性强。
二、设计思路
(一)基本思路
(1)编译器
QT creator
(2)总体布局
项目主要包括 main 主函数,Welcome 类,Widget 类,Ui 类,Error 类和 Sorry
类。
(3)模块概要
1.欢迎界面
弹出欢迎界面,主界面准备运行。
2.主界面
提供功能选择,共有税费计算、房贷计算、提前还贷、公积金贷款额度和装
修贷款等五大功能,目前仅开放税费计算功能。
主界面能根据用户选择功能,跳转至功能界面。
3.功能界面
功能界面主要实现对用户输入的数据地进行加工计算,并将计算结果显示在
功能界面上。
点击返回按钮能够返回主界面,实现功能再选择。
4.警告界面
当用户操作不当或者输入错误数据时弹出。
(二)详细设计
(1)欢迎界面类
1.Welcome 类继承 Widget 窗口类,用以实现程序启动时欢迎用户效果,同时
提升软件知名度以及加深用户对软件的粘性。
2.Welcome 类包括:
3.具体细节
类功能实现集中在 Welcome 类创建时调用的构造函数内。
在
函数
先调
口边框设置函数 setWindowFlags(),参数中输入 Qt:: FramelessWindowHint 即
可隐藏窗口边框。然后调用 show 函数显示欢迎界面,最后调用 Qt 的阻塞函数(类
似于 sleep 函数),控制欢迎界面显示时间的长短。
到达规定时间后将欢迎界面 delete,结束使命。
构造
内,首
用窗
(2)主界面类
1.Widget 类继承 QWidget 类,能够为用户提供选择功能的功能
2.Widget 类包括:
3.具体细节
A.类功能实现主要在构造函数中
第一调用 setWindowTitle()函数,更改窗口名称为“MyHome”,然后调用
setFixedSize()函数将窗口固定为 328*394 大小。
第二是跳转功能界面接口,用 connect()函数,将.ui 文件中生成的
radioButton 按钮,与对应功能界面条件参数一一对应,实现信号和槽的连接。
再连接 pushButton 按钮的单击信号和自定义槽函数,实现点击确定跳转。
第三是功能界面返回主界面接口,当接收到功能界面的信号后,显示主界面。
B.自定义槽函数
因为目前仅开发了房贷利息功能,所以当用户选择其他功能既功能界面条件
参数 i 为 2~5 时,会通过 switch 选择进入 sorry 界面,显示功能正在开发中的
信息。
当 i=1 时,隐藏主界面,显示功能界面。
(3)功能界面类
1.Ui 类继承自 QWidget 类,主要实现对用户输入的数据进行加工处理,反馈
用户期望的值。
2.Ui 类包括:
3.具体细节
A.类功能实现仍然主要在构造函数中
第一是隐藏盒子,由于功能界面各类按钮过多,所以在.ui 文件中,将各类
按钮,下拉条和行编辑等单独元件组合到 groupBox 盒子中去,以便统一显示隐
藏。
功能界面总共有 6 个盒子
其中 groupBoxshangye 盒子即商业贷款栏初始化在功能界面中,其余 5 个盒
子隐藏。
第二是实现贷款类别下拉选择条中商
业贷款公积金贷款,与混合贷款两个盒子
的分离。通过 comboBox.currentIndex()
函数读取现在贷款类别下拉条的返回值,
若类别参数 leibie=0 或 1,显示商业和公
积金贷款盒子,隐藏混合贷款盒子;若
leibie=2 则反之。
第三是将各功能按钮赋给各指针,简便书写,方便阅读。
第四是设置正则表达式,限制 lineEdit 的输入,使用户的输入符合实际,
减少错误的几率,健壮程序。考虑到实际情况,对用户输入的房屋单价设置上限
999999 元/平方米;房屋面积 9999 平方米;贷款利率最大 9.99%。
第五是返回主界面,如果触发返回 pushButton 按钮的点击信号,则关闭功
能界面,再触发 backmain()信号,使主界面显示。
第六是选择还款方式后进行的操作,若用户点击 radioButton 按钮,程序获
取信号,进行更改 hkfangshi 的值,再清除现有界面内用户输入的数值,达到
清除的效果。
第七是将用户输入的数据传递进算法函数中,用户点击确定按钮后,触发
Linetomath()函数,Linetomath()函数主要作用是将行编辑中的内容转化成
数值,以便计算。然后触发 jisuan()函数,数据的处理过程就在这个函数中
实现。
B.这是一些简单的内容转化函数的实
现,将各类按钮中用户选定或输入的内容
转化为可理解的数值,方便对数值进行操
作。
C.下面我将给出商贷、公积金贷和混合贷的具体代码和流程图,由于商贷、
公积金贷和混合贷的流程类似,故只给出一张流程图。算法并不是什么有难度的
算法,所以我就不展开介绍了。