当前位置:首页 > 小型科学计算器的设计与实现3
沈阳航空工业学院毕业设计(论文)
3.1.2关系模型设计
本系统中主要的关系模型设计如下: 算式信息(编号,算式名);
按键信息(编号,按键名,按键功能);
3.1.3数据库结构设计
每个数据文件均有一张定义表。其数据库各表的表头信息更为详细的反映数据间的关系。本系统数据库的内容包括算式表、帮主功能表。
表的具体设计如下所示:
(1)算式表用来存储算是编号和算式名,表名:message。本表用来存储已用户常用的算式,其中可以对算式进行保存、删除、修改,方便用户及使用到常用的式子,提高用户效率。算式表如表3.1所示。
3.1算式表
字段名称 编号 算是名 数据类型 Int QString 长度 4 16 备注 算是编号(Id) 算式(formulanumber)
(2)按键信息表用来存储按键编号,按键名,按键功能,表名:helpmessage。本表用来实现帮助功能,存储帮助功能中按键的信息,可以查看所有的按键功能,也可以看单个按键信息,还可以对案件信息进行增加和删除。按键表如表3.2所示。
3.2按键表
字段名称 编号 按键名 功能 数据类型 自动编号 Vchar Vchar 长度 长整型 1 1 备注 为主码、唯一(id) 按键名(helpname) 按键功能(explain)
11
沈阳航空工业学院毕业设计(论文)
3.2系统功能模拟设计
3.2.1普通计算功能
(1) 界面设计
界面设计我是使用Qt designer进行设计,首先创建一个CounterWidget.Ui,这个界面为QWidget。然后在左侧的Widget Box找相应的控件添加到CounterWidget里。首先提出一个lineEdit控件作为算式显示窗口和结果显示窗口,在提取出26个QpushButton为0到F按键和加减乘除按键、等于按键、帮助按键。然后再把各个pushButton名字改成相应的符号,并且改对应pushbutton的属性,保存后取vs2008编译CounterWidget.Ui,运行程序就可以显示相应界面。
(2) 算法设计
现在.h文件中对各个按键在私有槽中进行声明,例如:void on_zeroButton_clicked();,就对0键进行声明,然后就可以在.cpp进行编写程序。声明first,second两个整形表示第一个输入和第二个输入,然后用Qt封装好的append()函数进行编写代码,使其按键符号点击后可以在lineEdit上显示,在这里用的是信号和槽的机制。
等于好中的算法主要用栈进行编写,在下面科学计算中再详细介绍。
3.2.2科学计算功能
本界面的主要功能是在普通计算上添加一些科学计算,如平方、开放、取倒数、正弦、余弦、大括号、中括号、小括号等功能。
(1) 界面设计:
在普通窗口的基础上添加一些QPushButton按钮,修改其属性,变成相应的功能,再从左面把QRadioButton控件加到界面中,使其分别为普通计算和科学计算。这个控件的功能为只能有一个被点中,然后再拖拽四个QRadioButton控件到界面,使其分别表示二进制、八进制、十进制、十六进制,修改期属性。再到vs2008中编译次ui界面,点击运行时可显示相应的界面,达到想要的效果。
(2) 程序的具体实现:
首先各个按钮控件都得在,h文件中声明,再到,cpp文件中写相应的代码。在二进制、
12
沈阳航空工业学院毕业设计(论文)
八进制、十进制、十六进制的函数中把相应用不到的按键用函数写成不显示,要用的显示,然后读取显示窗口的内容,把其转换成相应进制的数字,并把此时窗口的状态记录成此时的进制,方便其他的运算。
在其他科学运算符的按键的函数编写代码,读取窗口数据,把其转换成double型,然后进行相应的运算,再把结果显示到窗口。
3.2.3时间功能
(1) 界面设计:
在窗口的右侧添加一个lineEdit控件,修改其属性,把它作为显示时间用。再到vs2008中编译ui界面。
(2) 具体功能实现:
这个功能我要在软件刚打开就显示,所以我在构造函数进行编写此功能。在其中声明一个时间的函数,然后在根据startTimer(1000)使其每一秒刷新一次,在编写时间函数,使其显示时间为电脑上的时间,日期为点到日期,时间为时间,再按照年月日时分秒的顺序显示出来。
3.2.4算式提取功能
本模块是本系统的算式提取、删除、保存功能。 (1) 界面介绍:
这里我要用三个QpushButton控件,他们分别表示提取算式、保存算式、删除算式,在修改其属性,在拖拽一个tableView控件,它用来把算式存储的结果显示出来,而且还可以在其上点击选择的算式。
(2) 程序的具体实现:
保存算式:首先提取窗口上的算式,然后查询算式表(message),查找最后一个id的值,然后id加一,再把次id和窗口提取的算式存入数据库算式表(message)中,然后查询整个message表把表中的内容显示出来。
提取算式:先用currentIndex().row()把鼠标点中的行选中,提出行数,把它作为id。然后声明tableView的model,这个是Qt专门为tableview封装好的model, 它的作用为把数据显示到tableView,我再从数据库中查找相应的id,把他的算式通
13
沈阳航空工业学院毕业设计(论文)
过model存储到一个QString型的变量中,然后就可以把它显示到窗口。
删除算式:先用currentIndex().row()把鼠标点中的行选中。提出行数,声明model,再用model中封装好的函数删除这一行,在加上警告函数,判断是否删除,就可以了。
(3)数据库设计
首先创建一个database.h文件,在这个文件中编写创建message表,用sql语句编写,这个表包含两个元素,分别为id和formulanumber,id我设定为自增长,formulanumber为算式,这里我使用的是QSqlite数据库,它小巧,占内存空间小,更快捷,在main主函数连接数据库就可以了。
3.2.5清空功能
此功能为清空显示窗口,这里用Qt封装好的函数clear(),直接把lineEdit给清空,这样就达到效果。
3.2.6删除功能
此功能为删除窗口最后一个字符,具体编写为:提取窗口的内容,把它存到一个QString型变量中,然后用Qt封装好的函数,把这个变量从左开始把最后一个字符去掉,使其长度减少一,在存放到这个变量中,再把这个变量重新输入到窗口中,这样就达到删除的功能了。
3.2.7帮助功能
本模块是本系统的帮助功能,它负责介绍各个按键的功能,他还可以添加按键功能,也可以删除按键功能,还可以查询所有的按键功能,也可以通过条件查询查询单个按键功能。
(1) 界面介绍:
因为这是有一个界面,所以我有创建一个界面helpDialog.ui,它是QDialog比QWidget第一个级别。这里我用新号和槽来实现点击帮助出现这个界面。
在QDialog里放一个大的tableView用来显示帮助按钮的名字和按钮信息,
再加一个QLable表示按键名,再加一个QLineEdit来输入按键名,还有一个
pushButton来表示查询,这样就可以查询用户要查询的单独信息,方便用户快速
14
共分享92篇相关文档