c语言课程设计GTK+计算器的实现

c语言课程设计GTK+计算器的实现
c语言课程设计GTK+计算器的实现

目录

设计背景 (2)

GTK+简介 (2)

程序实现 (3)

界面的构建 (3)

窗口的实现 (3)

按钮的实现 (4)

输入框的实现 (5)

回调函数的实现 (5)

数字键 (6)

小数点 (6)

运算符 (7)

等号 (7)

清除键 (8)

退格键 (8)

键盘事件 (8)

心得体会 (10)

参考文献 (10)

设计背景

GTK+简介

GTK+一开始是作为流行的GNU图像处理程序GIMP的一部分产生的,逐渐成为功能强大最受欢迎的工具包之一,因为变成了一个独立的项目。它是一个函数库,提供了一组已经制作好的被称为构件的组件,可以通过简单易懂的函数调用把这些组件和应用程序逻辑组合在一起,从而极大的简化了GUI的创建。

GTK+使用自由的LGPL许可证,它完全是用C语言编写的,绝大多数GTK也是用C语言编写的,也有许多语言绑定可以在C++,Python,PHP,Java中使用它。

GTK本身是建立在一组其它函数库上的,例如他需要Glib提供底层数据结构、类型、线程支持、事件循环和动态加载。

Glib和GObject提供了一组数据类型、函数和宏的标准替代集来进行内存管理和处理常见任务,从而实现跨平台开发,意味着GTK+能够可靠的移植到其他平台和体系结构上。

Glib还定义了一些方便的常量:

#define FALSE 0

#define TRUE !FALSE

这些附加的数据类型基本上是标准C语言数据类型的代替,以及用于确保跨平台字节长度不变。

●gint、guint、gchar、guchar、glong、gulong、gfloat和gdouble是标准C

语言数据类型的简单代替

●gpointer与(void *)同义

●gboolean 用于表示布尔类型的值,它事对int的一个包装

●gint8、guint8、gint16、guint16、gint32和guint32是保证字节长度的有

符合和无符号类型

尽管GTK+是完全用C语言编写的,但是它通过GObjiect库支持对象和面向对象编程,这个库通过宏来支持对象继承和多态。为了方便起见,所有构件创建函数都返回一个GtkWidget类型。

程序实现

要实现本次课程设计要求,首先考虑的是将图形界面和回调函数分开来实现,图形界面通过窗口、按钮、盒、文本框等GTK+构件即可实现,而回调函数应该分开来考虑,可以用数字键回调函数、小数点回调函数、运算符回调函数、等号回调函数、记忆功能回调函数、退格键回调函数、键盘事件处理函数来实现,它们之间可以相互独立。

界面的构建

窗口的实现

我们可以通过GTK+ 来创建一个窗口:

#include

int main (int argc,char *argv[])

{

GtkWidger *window;

gtk_init(&argc,&argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_default_size(GTK_WINDOW(window),250,300);

gtk_container_set_border_width(GTK_CONTAINER(window),10);

gtk_window_set_title(GTK_WINDOW(window),"计算器");

gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);

g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_m ain_quit),NULL);

gtk_widger_show(window);

gtk_main();

return 0;

}

首先使用#include 来包含所必需的GTK+库和相关库的头文件,接着,声明window为一个指向GtkWidget的指针,必须在调用任何GTK+函数之前对其调用gtk_init函数进行初始化,将命令行参数argc和argv传递给它,给GTK+一个机会来解析它所需要的任何命令行参数。GtkWidget* gtk_window_new (GtkWindowType type)调用在内存中建立窗口,参数type根据窗口的目的有两种取值,GTK_WINDOW_TOPLEVELW为一个标准的有框架窗口,

GTK_WINDOW_POPUP可以创建一个实用于对话框的无框架窗口,使得将窗口实际显示在屏幕之前,可以在它里面放置构件,通过gtk_window_set_title可以设置窗口的标题,通过gtk_widow_setdefault_size可视设置窗口的大小,通过gtk_window_set_border_with则可以设置边框大小,通过gtk_window_set_position可以设置窗口的初始位置,要实际显示窗口,则需要调用gtk_widget_show;改函数只需一个GtkWidget指针,只需要将窗口的引用传给它。最后调用gtk_main,这个关键函数通过把控制权交给GTK+来启动交互过程,并且一直运行,直到gtk_main_quit才返回,它是GTK+的主事件循环,每一个GTK+程序都必须有,否则程序就没法运行,它在程序运行时等待来自外部用户发出的事件,如键盘事件鼠标移动等,GTK+将这些事件包装成信号,用户在根据信号的功能编写相应的回调函数来处理。代码最后返回FALSE,相当于整数0,使程序更具完整性和可读性。

按钮的实现

多数情况下,标签文本在GTK+编程中起到提示的作用,用gtk_label_new 函数可以直接创建一个便签文本,它的参数就是标签要显示的文本字符串,事实上创建带有标签的按钮时,按钮中就包含一个标签控件。用gtk_button_new 创建按钮后,就可以用gtk_box_pack_start函数排放到盒装容器中。

GTK+以信号和回调函数作为自己的事件和事件监听系统,非常容易使用,可用用函数指针来设置信号处理器。回调函数的原型通常为:

void a_callback_function(GtkWidget *widget, gpointer user_data);传递的第一个参数是指向发出信号的构件的指针,第二个参数是但你连接回掉函数是自己选择的一个任意指针,可用于任何目的。连接回调函数只需要调用g_signal_connect,并传递如下几个参数:构件、信号名、回调函数指针和你的任意指针:

gulong g_signal_connect(gpointer *object, const gchar *name, GCallback func, gpointer user_data);

连接回调函数没有任何限制,可以讲多个信号连接到同一个回调函数,也可以讲多个回调函数连接到同一信号。

GTK+通过容器构件这种灵活的布局系统来避免使用绝对坐标导致的GUI不一致,它可以用来在应用程序窗口中控制构件的布局,盒是一个不可见的的构件,它的工作就是包含其它的构件,并控制他们的布局,为了控制盒中的每个构件的大小,为他们指定的是规则而不是坐标,因为盒构件可以包含任何GtkWidget,而GtkBox本身就是一个GtkWidget,故可以嵌套盒构件创建复杂的布局。GtkBox有两个主要的子类,GtkHBox是一个单行的横向组装盒构件,GtkVBox是一个单列的的纵向组装盒构件,在创建盒构件时,需要指定两个参数,通过homogeneous和spacing来控制特定组装盒所有构件的布局,homogeneous是一个布尔值,如果被设置成TRUE,则强制盒中每个构件都占据

相同大小的空间,而不管每个构件的大小,spacing则以像素为单位设置构件的间距。

一旦创建好组装盒之后,就可以使用下面的函数来添加构件:

void gtk_box_pack_start (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding);

void gtk_box_pack_end (GtkBox *box, GtkWidget *child, gboolean expand , gboolean fill, guint padding);

其中第一个是向GtkBox的右边和底部增加构件,而gtk_box_pack_end则向左边和顶部增加构件。它们的参数控制组装盒中每个构件的间距和格式:GtkBox *box 将被填充的组装盒

GtkWidget *child 将放入组装盒的构件

gboolean expand 如果为TRUE,则这个构件将填充与其他改标志也被设为TRUE的构件共享的所有可用空间

gboolean fill 如果为TRUE,则这个构件将填满分配给它的空间,而不是将它作为围绕它的边缘填充

guint padding 围绕在构件周围的以像素为单位的填充

GtkButton能派生出很多按钮构件,他们有着丰富的功能,通过创建不同类型的按钮,并把它按照界面设计装入盒容器中,即可构建好所需要的界面。

输入框的实现

GtkEntry是一个单行文本输入构件,常用于输入简单的文本信息,可以通过相应的API调用来设置和读取输入的文本,设置允许的最大字符数,以及设置设置其他一些属性来控制文本的定位和选择。要获取GtkEntry的内容,可以调用gtk_entry_get_text函数,它将返回GtkEntry内部的一个const char指针,如果想修改这个文本或把它传给一个可能修改的函数,就必须使用像strcpy这样的函数来复制这个字符串。可以通过_set_text、_appen_end_text、_modift_text函数来手工设置或修改它的内容,这些函数都使用const指针作为参数。

采用一个纵向盒装容器和多个横向盒装容器设计,另外在单行输入控件的阅读方向属性上用gtk_widget_set_direction设定为GTK_TEXT_DIR_RTL,即从右到左,使此控件的数字显示器更像一个计算器的显示屏。

回调函数的实现

在程序中多次用到stdli.h和glib中将字符串转换为浮点数和将浮点数转换为字符串的转换函数。在键盘处理程序中,用到gdk/gdkkeysyms.h中键值的宏定义,字符处理中用到string.h相关函数,故应该在头文件中包含这三个函

数。

数字键

0-9的功能是向计算器输入数字,通过记位和定位,最后显示出来,所以它们的回调函数是同一个,只是传递的参数不同而已。当有数字键按下时,如果超过计算机所能计算的范围,则返回,否则则通过gtk_button_get_laber函数获取所按下的键的标签,并通过g_strcat函数将此字符串转换为浮点数保存起来,以便进行运算。具体实现代码如下:

void on_num_clicked (GtkButton *button,gpointer data)

{

const gchar *num;

gint i;

if(count == MAX_ENTRY_NUMBER) return;//够6位数则不能再输入

count++;

num = gtk_button_get_label(GTK_BUTTON(button));//取数

g_strlcat(number,num,100);//保存

if(first)

nn = strtod(number,NULL);//数一

else

mm = strtod(number,NULL);//数二

gtk_entry_set_text(GTK_ENTRY(entry),number);

}

小数点

小数点的回调函数是比较特殊的,因为它在一个数字中只能出现一次,再按的话则应该不起作用,小数点输入之后应该对所输入的数字进行处理,使之成为浮点数,并且让后续数字也转换为相应的浮点数。

void on_dot_clicked (GtkButton *button,gpointer data)

{ //当小数点按下时

if(have_result)

clear_all();//全部清楚

if(have_dot == FALSE)

{

have_dot = TRUE;

g_strlcat(number,".",100);

gtk_entry_set_text(GTK_ENTRY(entry),number);

}

//如果有小数点则不输出

}

运算符

此次设计的计算器只能实现加减乘除四种运算功能,这四个运算按钮用了同一个回调函数,根据传递的参数设定当前的计算方法。我们可以用s来表示即将进行的运算,s=0是无运算符,s=1表示加法运算,s=2表示减法运算,s=3表示乘法运算,s=4表示除法运算,通过获取点击的按钮,通过开关语句即可实现相关计算,比如当我们是按下“+”,产生一个gpointer data=1的信号,此时执行以下语句,即可把s设置为1,并在entry上输出“+”:

switch(GPOINTER_TO_INT(data))

{

case 1://"+"

s = 1;

gtk_entry_set_text(GTK_ENTRY(entry),"+");

break;

}

等号

按钮的回调函数是根据当前的运算进行相应的运算,并将计算结果输出到输出控件中。当调用等号按钮回调函数on_eq_clicked时,我们可以通过获取s 的值即可进行相应的运算,再把结果通过g_ascii_dtostr装换为字符串从entry输出,如下:

switch(s)

{

case 1:

nn=nn+mm;

break;

}

g_ascii_dtostr(result,100,nn);

gtk_entry_set_text(GTK_ENTRY(entry),result);

清除键

功能是清除所有标记并将它们设为默认。即把记位,两个操作数,运算符标示全部置为0,把是否首次输入,是否有结果输出,前一个操作是否为运算符全部置为FALSE。

退格键

每按一次,从最后输入往前删一次,如果前一个输入是运算符的话,只需将运算符标识s置为0,若前面没有过输入,则返回,若前面输入为数字的话则把记位自减,并通过gtk_entry_get_text(GTK_ENTRY(entry))函数得到前面输入的字符,再把最后一个字符删除即可,如下:

count--;

str_in=gtk_entry_get_text(GTK_ENTRY(entry));

for(i=0;str_in[i]!='\0';i++)

number[i]=str_in[i];

number[i-1]='\0';

键盘事件

键盘事件处理的回调函数原型是:

gboolean on_widget_key_press_event(GtkWidget *event, gpointer user_data)

其中on_widget_key_press_event 是回调函数的名称,第一个参数widget是信号源,即接收key_press_event的控件,第二个event参数的类型是GdkEventkey,其中成员keyval就是捕获的按键的键值,在回调函数里可以这样获得键值俄vent->keyval,再用switch语句对不同按键进行处理, 其中的键值定义在/usr/include/gtk-2.0/gdk/gdkkeysyms.h文件里。

gboolean on_key_press_event (GtkWidget *widget,GdkEventKey *event, gpointer data)

{

switch(event->keyval)

{

case GDK_1:

on_key_num_press(1);

break;

case GDK_2:

on_key_num_press(2);

break;

}

}

对编写好的程序进行编译,输入:

$ gcc calc.c -o calc `pkg-config –cflags –libs gtk+-2.o`

当用以下命令运行程序时,就会弹出界面:

$ ./calc

点击按钮或直接用键盘即可输入数字,点击MS即可对当前的数进行保存,以便进行记忆运算:

再输入一个数字,点击M-,就可计算出记忆下来的数以当前数的差:

心得体会

本次课程设计做的是基于GTK+图形库的计算机,虽然之前对于它一点都不了解,但却是兴趣十足,因为我们日常生活中所用到的软件基本都是图形界面的,所以很好奇,一切都是从头学起,经过两个星期的奋战,最终得以实现。在此次设计中,使用了C语言和GTK+图形库进行开发,最终成果可以在装有GTK+运行环境的各种操作系统上运行,实现了标准型计算器上的四则运算功能,添加了捕捉键盘事件的功能,通过PC键盘的数字键盘也可以进行操作,此计算器还有存储功能,例如MS,M+,M-等等,实现了完整的标准型计算器的功能。

由于是首次尝试用图形库进行开发,过程中自然困难重重,好多东西都是从头学起,学习GTK+图形库的用法用了好多天,这样也让我学到了好多原来不懂的知识,比如键盘事件的处理等等,对C语言有了更深的理解。

从刚开始的一头雾水到后来整个程序实现的过程中,遇到了很多问题,经过不断上网搜索和查阅相关资料,最终得以解决,这就教会只要肯动手,肯花功夫,问题就会得到解决,更重要的是,要善于使用身边的东西,要冷静思考不浮躁,看到别人做好了自己没搞定也不能气馁,要坚持,要相信自我,最终就会成果了。

在这两周里,薛老师作为指导老师一直陪伴着我们,不厌其烦为我解决了不少问题,提供了很多很好的建议,在此要特别感想。

参考文献

[1] Neil Matthew / Richard Stones.Linux程序设计[M]北京:人民邮电出边社,2010

[2]宋国伟.GTK+2.0编程范例[M]北京:清华大学出版社,2002

[3] Stephen Prata /云巅工作室. C Primer Plus[M]:北京:人民邮电出版社,2005

计算器课程设计报告

课设报告 福建工程学院软件学院 题目:汇编计算器 班级: 1301 姓名 学号: 指导老师: 日期:

目录 1、设计目的 (3) 2、概要设计 (3) 2.1 系统总体分析 (3) 2.2 主模块框图及说明 (3) 3、详细设计 (4) 3.1 主模块及子模块概述 (4) 3.2各模块详运算 (4) 4、程序调试 (7) 4.1 运行界面分析 (7) 算法分析 (7) 4.2 调试过程与分析 (9) 5、心得体会 (11) 5.1 设计体会 (11) 5.2 系统改进 (11) 附录: (11)

1、设计目的 本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。 2、概要设计 用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4)”),按“=”后输出十进制表示的运算结果。 2.1 系统总体分析 在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在0~65535。 2.2 主模块框图及说明 此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。 程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。

Java带计算过程的计算器课程设计报告

保存计算过程的计算器 Java程序设计课程设计报告保存计算过程的计算器 目录 1 概述.............................................. 错误!未定义书签。 1.1 课程设计目的............................... 错误!未定义书签。 1.2 课程设计内容............................... 错误!未定义书签。 2 系统需求分析.......................................... 错误!未定义书签。 2.1 系统目标................................... 错误!未定义书签。 2.2 主体功能................................... 错误!未定义书签。 2.3 开发环境................................... 错误!未定义书签。 3 系统概要设计.......................................... 错误!未定义书签。 3.1 系统的功能模块划分......................... 错误!未定义书签。 3.2 系统流程图................................. 错误!未定义书签。4系统详细设计........................................... 错误!未定义书签。 5 测试.................................................. 错误!未定义书签。 5.1 测试方案................................... 错误!未定义书签。 5.2 测试结果................................... 错误!未定义书签。 6 小结.................................................. 错误!未定义书签。参考文献................................................ 错误!未定义书签。附录................................................ 错误!未定义书签。 附录1 源程序清单...................................... 错误!未定义书签。

单片机计算器的课程设计报告

目录 一、设计任务和性能指标 (1) 1.1设计任务 (2) 1.2性能指标 (2) 二、设计方案 (2) 3 3 4 5 5 6 6 7 7 20 20 20 20 21 参考文献 (21) 附录1、系统硬件电路图 (22) 附录2、硬件实物图 (23) 附录3、器件清单 (24)

一、设计任务和性能指标 1.1设计任务 自制一个单片机最小系统,包括复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上。 要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要 显 位 监测模块采用二极管和扬声器(实验室用二极管代替)组成电路。 键盘电路采用4*4矩阵键盘电路。 显示模块采用4枚共阳极数码管和74ls273锁存芯片构成等器件构成。 整个单片机的接口电路: P0用于显示输出; P1用于键扫描输入; P2用于数码管位选控制; P3用于键盘扩展(部分运算符输入);

三.系统硬件设计 3.1单片机最小系统 单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。 主控芯片选取STC89C52RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便。 扩展键:“log”,“ln”,“x^2”“小数点”,“开方” 共计25个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0~P1.7,这样扫描P1口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P1口德扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘的功能。 以下为键盘接口电路的硬件电路图

科学计算器课程设计报告C课程设计修订稿

科学计算器课程设计报告C课程设计 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

计算机科学与技术学部 C++课程设计 题目科学计算器 学部计算机科学与技术 班级计科1103 指导教师李军 姓名刘明 学号 2012年6月27日

摘要 计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。 在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 进行编写。 简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。 关键词:计算器;运算;VC++等

java课程设计报告_简单图形界面计算器的设计

Java 课程设计 简单图形界面计算器的设计 课程名称 Java程序设计 选题名称简单图形界面计算器的设计 专业 班级 姓名 学号 指导教师 简单图形界面计算器的设计

一、设计任务与目标 本次java程序设计我的设计任务是设计一个图形界面(GUI)的计算器应用程序并且能够完成简单的算术运算。本次任务的基本要求是这个计算器应用程序可以完成十进制的加、减、乘、除、求倒、取余、开方运算,且有小数点、正负号、退格和清零功能。而我要在此基础上添加一项千位符分隔符的功能,即以三位为一级,在输入的一串数字中每三位加入一个逗号,这项功能国际通用,并已经成为惯例,会计记账都用这种方法便于账目核算与管理。 GUI计算器设计的具体目标: 1.完成十进制的加、减、乘、除、求倒、取余和开方运算; 2.有小数点和正负号加入运算; 3.有退格、复位和清零的功能; 4.有千位符分隔符的功能,即在输入的一串数字中每三位加入一个逗号。 二、方案设计与论证 1.设计目标的总体分析 (1)设计目标的需求分析:计算器是现在一个普遍应用的工具,能够解决许多人工所无法计算的数据,节省大量宝贵的时间。 (2)设计目标的功能分析:实现计算器系统的功能,主要有两个功能模块:输入和输出。 (3)设计原则:基于计算器系统要具有适用性广、操作简便等特点,本系统预计要达到以下几个目标:①满足以上的基本功能要求;②能够在常见的计算机及其操作系统上运行。 2.设计的基本思路 利用GUI的界面设计,将整个大设计分为三块,分别是数据的输入,运算符

功能符的控制和数据的输入输出显示。利用Swing控件,数据的输入由0~9这10个按钮来表示,用“+”、“-”、“*”、“/”、“1/x”、“%”、“sqrt”这7个按钮来表示加、减、乘、除、求倒、取余、开方运算,用“.”和“±”这2个按钮来表示小数点和正负号,用“Back”、“CE”和“C”这3个按钮来表示退格、复位和清零的功能,数据的输入输出显示由文本字段来表示。将计算器的总体界面设计好后,再将代码分别写入不同的按钮的源程序中。 我要完成的一项改进,即添加一个拥有千位符分隔符功能的按钮,按下这个按钮能够在输入的一串数字中每三位加入一个逗号并且显示出来。我要在之前的界面设计的基础上多添加一个按钮“$”来表示千位符分隔符,并且将功能代码写入这个按钮的源程序中。 三、程序流程图,程序清单与调用关系 1. 程序流程图:

计算器课程设计报告

高级语言程序(JAVA)课程设计报告 系部名称:商学系专业班级:营销*** 学生姓名:墨璇 墨兰学号: ********** ********** 指导教师:王芬教师职称:讲师 2014年06月26日

目录 一、课程设计目的及意义 .................................... 错误!未定义书签。 二、课程设计任务 .......................................... 错误!未定义书签。 2.1程序设计要求....................................... 错误!未定义书签。 三、课程设计时间 .......................................... 错误!未定义书签。 四、课程设计地点 .......................................... 错误!未定义书签。 五、课程设计内容 .......................................... 错误!未定义书签。 5.1开发工具与平台..................................... 错误!未定义书签。 (1).开发工具 ...................................... 错误!未定义书签。 (2).开发平台 ...................................... 错误!未定义书签。 5.2设计思路........................................... 错误!未定义书签。 5.3 程序测试 .......................................... 错误!未定义书签。 5.4实验总结........................................... 错误!未定义书签。 六、课程设计感想 .......................................... 错误!未定义书签。 七、附录(程序代码) ...................................... 错误!未定义书签。

计算器设计的java课程设计报告

】 · ( 华东交通大学课程设计 课 程: Java 程序设计 题 目: 计算器设计 年 级: 2010级 专 业: 信息一班 * 学 号: 姓 名: 组 员: 指导教师: 课程设计题目:计算器设计

课程设计(论文)任务书 基础学院信息与计算科学专业2010—1 班 一、课程设计(论文)题目计算器的设计 二、课程设计(论文)工作自2013 年 6 月23日起至2013 年6月27日止。 三、课程设计(论文) 地点: 计算机中心 · 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握系统各功能模块的基本工作原理; (2)掌握Java的基本编程原理和基本的编程方法; (3)使学生学会系统调试; (4)培养学生分析、解决问题的能力; (5)提高学生的软件文档写作能力和团队合作精神。 2.课程设计的任务及要求 ' 1)基本要求: (1)分析系统各功能模块的工作原理; (2)提出系统的设计方案; (3)对所进行编程、调试、修改。 2)创新要求: 在基本要求达到后,可进行创新设计,如:用虚函数,文件流,重载流插入运算符等。3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写设计论文; > (2)论文包括目录、摘要、正文、总结等; (3)毕业论文装订按学校的统一要求完成。 4)答辩与评分标准: (1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分; (2)能正确回答老师所提问题,可增加10分; (3)课程设计报告书写规范整齐,可增加10分; (4)心得体会认真总结,可增加10分; (5)程序有创新性,可增加10分; [ 成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。 5)参考文献:

计算机技术综合课程设计报告

计算机技术综合课程设计 设计题目锅炉液位控制系统学生姓名史婷艳 专业班级自动化1302班学号20134460203 指导老师洪镇南 2017年1 月3日

目录 前言 (2) 1 锅炉汽包水位控制对象与控制指标 (4) 1.1锅炉汽包水位的特征 (4) 1.2汽包水位动态特性 (4) 1.2.1汽包水位在给水流量W作用下的动态特性 (4) 1.2.2汽包水位在蒸汽流量D扰动下的动态特性 (5) 1.2.3燃料量B扰动下汽包水位的动态特性 (6) 2. 汽包水位控制方案 (7) 2.1单冲量控制方式 (7) 2.2 双冲量控制方式 (8) 2.3 三冲量控制方式 (9) 3. 三冲量串级PID控制 (11) 3.1 串级PID控制 (11) 3.2 智能整定PID控制 (12) 4 汽包水位模糊控制器设计及仿真 (12) 4.1 输入输出变量 (12) 4.2 隶属度函数 (15) 4.3基于MATLAB/Simulink 环境建立的系统仿真分析 (16) 4.3.1 基于MATLAB/Simulink 的系统模型 (16)

4.3.2 仿真结果分析 (18) 总结与体会 (18) 参考文献 (20) 前言 锅炉是典型的复杂热工系统,目前,中国各种类型的锅炉有几十万台,由于设备分散、管理不善或技术原因,使大多数锅炉难以处于良好工况,增加了锅炉的燃料消耗,降低了效率。同时,锅炉工作过程中各项指标的调节难以建立数学模型,具有非线性、不稳定性、时滞等特点,所以如何改善对锅炉的控制,保证其正常工作,提高效率一直是人们关注的焦点。而汽包液位是锅炉安全、稳定运行的重要指标,保证液位在给定范围内,对于高蒸汽品质、减少设备损耗和运行损耗、确保整个网络安全运行具有要意义。 现代锅炉的特点之一就是蒸发量显著提高,汽包容积相对变小,水位变化速度很快,稍不注意就容易造成汽包满水或者烧成干锅,这都对汽包液位控制系统提出了更高的要求。汽包液位过高,会影响汽包内汽液分离效果,使汽包出口的饱和蒸汽带水增多,蒸汽带水会使汽轮机产生水冲击,引起轴封破损、叶片断裂等事故。同时会使饱和蒸汽中含盐量增高,降低过热蒸汽品质,增加在过热器管壁和汽轮机叶片上的结垢。水位过低,则可能破坏自然循环锅炉汽水循环系统中某些薄弱环节,以致局部水冷管壁被烧坏,严重时会造成爆炸事故。 目前,对汽包液位位控制大多采用常规PID控制方式,从控制方式来看,它们要么系统结构简单成本低,不能有效的控制锅炉汽包“虚假水位”现象,要么能够在一定程度上控制“虚假现象”,系统却过于复杂,成本投入过大。常用的蒸汽锅炉液位调节系统有三种基本结构:单冲量调节系统结构、双冲量调节系统结构、串级三冲量调节系统结

java课程设计报告计算器

java课程设计报告 计算器 1 2020年4月19日

目录 一、课程设计目的 (5) 二、课程设计任务.................................................................................................... .. (2) 2.1、设计任务 (5) 2.2、课程设计要求: (6) 2.3、需求分析 (6) 三、开发工具与平台.................................................................................................... (3) 3.1、开发工具 (7) 3.2、开发平台 (7) 2 2020年4月19日

四、设计思路.................................................................................................... . (4) 4.1、界面设计.................................................................................................... . (4) 4.2.1、逻辑设计 (8) 4.2.2、程序流程图.................................................................................................... . (5) 4.2.3、主要代码展示及说明 (5) 4.3、程序测试 (18) 五、实验小结 (20) 3 2020年4月19日

编写一个计算器程序课程设计报告-范例

《金融IT入门-程序设计》 课程设计报告 中国地质大学长城学院XX系2017年月 3 日目录 一.总体概述:二.设计目标:三.程序流程图:四.程序代码:五.* 六.设计体会: 题目:用Python编写简易计算器程序学号:$ 专业: 班级: 姓名: 指导教师:、

一、设计内容--------------------------------------------- - 2 - 1. 课程设计目的:------------------------------------- - 2 - 2.课程设计任务:-------------------------------------- - 2 - 3.创新要求:------------------------------------------ - 2 - 4.设计要求: ------------------------------------------- - 2 - 二、原理与分析------------------------------------------- - 2 - 1.开发的技术及功能------------------------------------ - 3 - 2.设计思路-------------------------------------------- - 3 - 3.设计效果图------------------------------------------ - 3 - 三、设计过程--------------------------------------------- - 3 - 1. 程序思路:----------------------------------------- - 3 - 2.功能实现:------------------------------------------ - 4 - 1)加减乘除求余以及指数运算------------------------ - 4 - 2)其他运算---------------------------------------- - 4 - 3)主要方法说明------------------------------------ - 6 - 4)程序流程图-------------------------------------- - 6 - 3.算法思路:------------------------------------------ - 7 - 4.数据分析:------------------------------------------ - 8 - 四、设计结果与分析---------------------------------------- - 8 - ⒈运行调试-------------------------------------------- - 8 - 1)进行加减乘除求余以及指数运算-------------------- - 8 - 2)求倒-------------------------------------------- - 9 -

计算机课程设计报告

课程设计 课程名称______________________ 题目名称______________________ 学生学院______________________ 专业班级______________________ 学号______________________ 学生姓名______________________ 指导教师______________________ 200 年月日

摘要 本课程设计说明书主要说明了在windows下如何用c语言编写设计ftp服务器和客户端的基本方法及其实现。包含了TCP/IP协议基本通信原理,Winsock编程基本原理以及ftp工作原理。正文部分是程序设计的具体内容及其源代码,最后是报告反思及总结。 关键词:TCP/IP,Winsock,ftp 摘要 (1) 1.绪论 (2) 1.1设计目的 (2) 1.2设计要求 (2) 1.21计算机网络实验环境建立在TCP/IP 网络体系结构之上。 (2) 1.22具体要求 (2) 1.3设计准备 (1) 1.4设计方案 (1) 2.开发环境介绍 (2) 3.相关原理分析了解 (2) 3.1TCP/IP原理 (2) 3.11网络层协议 (2) 3.12应用层协议 (2) 3.2Winsock编程原理 (3)

3.23Winsock编程模型: (3) 数据报套接字编程模型 (4) Winsock I/O模型 (4) 3.3TP工作原理 (4) 3.4Winsock API基本函数介绍 (5) (1)WSAStartup()函数和WSACleanup()函数 (5) (2)socket()函数 (5) (3)bind( ) 函数 (6) (4)listen( )函数 (6) (5)accept( )函数 (6) (6)connect( )函数 (6) (7)closesocket( )函数 (6) 4.总体设计 (7) 4.1了解Winsock与操作系统的关系 (7) 4.2实现功能流程图 (8) 5.详细设计 (8) 5.1文件传输源程序代码 (8) (1)客户端client程序代码 (8) (2)、服务器端server程序代码 (19) 六、系统实现步骤 (30) 七、总结结论(心得体会) (32) 参考文献: (33)

java课程设计报告—计算器

目录 一、课程设计目的 (3) 二、课程设计任务........................................................................ (2) 、设计任务 (3) 、课程设计要求: (3) 、需求分析 (4) 三、开发工具与平台........................................................................ . (3) 、开发工具 (4) 、开发平台 (4) 四、设计思路........................................................................ .. (4)

、界面设计........................................................................ .. (4) 、逻辑设计 (5) 、程序流程图........................................................................ .. (5) 、主要代码展示及说明........................................................................ .. (5) 、程序测试 (10) 五、实验小结 (12) 六、附录 (程序代码) (13)

一、课程设计目的 1、熟练掌握java面向对象编程。 2、选择合适的数据结构实现需求。 3、熟练使用各种控制结构。 4、GUI组件、事件处理技术。 二、课程设计任务 、设计任务 设计一个简易的计算器,可以进行四则运算:加、减、乘、除等(限于十进制下) 程序要求: (1)应具有相应的界面,可参考Windows操作系统自带的计算器界面。 (2)操作符号定为:“+”,“-”,“*”,“/”,“+/-”等。(按国际惯例设计) (3)用户通过点击程序界面上按钮,实现数字、运算符的输入操作。 (4)以上部分为必须完成的内容。 选作部分: (1)具有操作符号“1/x”,“sqrt”(开方),“.”(小数功能)等。、课程设计要求: (1)应用自己所学课程知识完成对计算器的基本任务。 (2)查阅相关资料,学习和掌握项目中涉及的新知识,提高自学能力。 (3)通过应用java程序编写计算器来提升自己对简单的图形界面有一定的掌握和了解。

java课程设计报告计算器

目录 一、课程设计目的 (2) 二、课程设计任务 (2) 2.1、设计任务 (2) 2.2、课程设计要求: (2) 2.3、需求分析 (2) 三、开发工具与平台 (3) 3.1、开发工具 (3) 3.2、开发平台 (3) 四、设计思路 (4) 4.1、界面设计 (4) (3) 4.3、程序测试 (7) 五、实验小结 (8) 六、附录(程序代码) (8)

一、课程设计目的 1、熟练掌握java面向对象编程。 2、选择合适的数据结构实现需求。 3、熟练使用各种控制结构。 4、GUI组件、事件处理技术。 二、课程设计任务 2.1、设计任务 设计一个简易的计算器,可以进行四则运算:加、减、乘、除等(限于十进制下) 程序要求: (1)应具有相应的界面,可参考Windows操作系统自带的计算器界面。 (2)操作符号定为:“+”,“-”,“*”,“/”,“+/-”等。(按国际惯例设计)(3)用户通过点击程序界面上按钮,实现数字、运算符的输入操作。 (4)以上部分为必须完成的内容。 选作部分: (1)具有操作符号“1/x”,“sqrt”(开方),“.”(小数功能)等。 2.2、课程设计要求: (1)应用自己所学课程知识完成对计算器的基本任务。 (2)查阅相关资料,学习和掌握项目中涉及的新知识,提高自学能力。 (3)通过应用java程序编写计算器来提升自己对简单的图形界面有一定的掌握和了解。 2.3、需求分析 1.设计的计算器可以完成加法、减法、乘法、除法的简单运算。 2.实现一些简单的扩展运算,如:正负号、倒数、退格、清零等功能。 3.添加小数点功能,用以实现浮点型数据的计算。 4.使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输入,并完成相关的计算。

C++简单计算器课程设计报告

目录 1 基本功能描述 (1) 2 设计思路 (1) 3 软件设计 (4) 3.1 设计步骤 (4) 3.2 界面设计 (5) 3.3 关键功能的实现 (11) 4 结论与心得体会 (12) 5 参考文献 (13) 6 思考题 (13) 7 附录 (14) 7.1 调试报告 (14) 7.2 测试结果 (15) 7.3 关键源代码 (16)

简单计算器 1 基本功能描述 简单计算器包括双目运算和单目运算功能。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,阶乘,对数,开方,倒数等运算。可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出相应提示,同时包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。 2 设计思路 如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。子程序开始时m_num为零。按下数字按钮后,判断m_num的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。 回到总流程图中,输完第一个操作数后,若按下双目运算符,则把m_num存入num2,按下输入第二个操作数并算出结果。若按下的是单目运算符,则直接对其处理得出结果。若按下清零,则m_num等于0.在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。算出后把结果保存至num2。若需用算出的结果继续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。

输入数据子函数 N 图1 输入数据子函数流程图

图2 简单计算器总流程图

单片机课程设计报告(简易计算器)

简易计算器 摘要:计算器是人们的日常生活中是最常见的电子产品之一,它应用极广、发展迅猛,并且不断出现着拥有更加强大功能的计算器。为了解和研究计算器,本次课设设计制作了一个简易计算器,能够在十四位的计算范围内进行“+”、“-”、“*”、“/”的基本运算,能进行负数以及小数点后两位的精确结果显示。该计算器以AT89C51单片机芯片作为核心。采用LCD1602工业字符液晶进行显示。完成的计算器经过检验能够完整的实现预设功能,各种细节完善,具有很高的使用价值。 关键词:单片机;简易计算器;AT89C51;LCD1602

Simple Calculator Abstract:Calculator is People's Daily life is one of the most common electronic products, used very wide, developing rapidly, and constantly appear more powerful function with have calculators. In order to understand and study calculator, this class set design made a simple calculator, can the calculation in within 14 "+" and "-" and "*", "/" the basic computing, can carry out negative and two decimal places accurate results are shown. This calculator with AT89C51 chips as the core. Using liquid LCD1602 industrial characters displayed. Complete calculator after inspection can complete realization, various details preset functions to perfect, have high use value. Keywords:MCU; Simple calculator;AT89C51;LCD1602

科学计算器课程设计报告C++课程设计

计算机科学与技术学部 C++课程设计 题目科学计算器 学部计算机科学与技术班级计科1103 指导教师李军 姓名刘明 学号11430421817667 2012年6月27日

摘要 计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。 在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 6.0进行编写。 简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。 关键词:计算器;运算;VC++等

课程设计任务分配表: 表1 分配信息表 姓名主要工作组长刘明程序设计和编写 舒兆月实验报告书的制作组员 凡力强实验报告书的制作 课程设计成绩表: 表2 成绩表 姓名学号班级成绩组长刘明11430421817667 计科1103 舒兆月11430727814558 计科1103 组员 凡力强11430426154534 计科1103

MFC计算器课程设计报告

MFC计算器课程设计报告计算机应用3班黄锦湫,罗洁,饶益 指导老师:蒋鹏 2009.3.15

一.题目:利用MFC框架编写简易计算器 要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的 加减乘数,正负转换,并且实现BackSpace CE C功能。 二.设计过程 1.Windows消息处理机制的理解 首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。 Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。还有用户消息,比如鼠标的单击,双击,键盘的键入等。 2.界面的设计 仿照Windows附件里面的计算器,在资源视图中画好界面,如图: 主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出 的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 3.

变量定义: double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0; 4.设计思路 a)首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9为数字类,+, -,*,/,=为符号类。数字在计算的过程中最多需要保存两个,所以定义了两个double 型变量numfirst和numsecond来进行存储。符号需要一个char op来存储。 b)然后考虑在计算的过程中,numfirst和numsecond的存储状态有三种,一种是 numfirst==0 && numsecond==0 也就是程序刚开始运行还没有开始录入数字的状 态。二种是numfirst!=0 && numsecond==0 也就是第一个数字已经录入,符号也已 经录入时候把m_Dis的值直接赋值给numfirst,第三种是numfirst!=0 &&numsecond!=0,表示可以通过op来把两数合并为一个数。 c)考虑到该计算器支持连续的计算,比如3.33+1.33*88/96= ?。所以必须在点符号 Button也要计算出之前的结果,通过判断op,来计算,把两个数字合并为一个数字, 方便下一次运算,功能近似于点=,所以把=也划分到符号类。 d)因为数字全部使用的是double,键入的数字必须通过一定的处理达到累加的效果, 加上小数和整数的处理差异性大,所以分别用point_flag来判断,分别出来小数和 整数。 5.成员函数及其释义 因为对OnNum0()到OnNum9()的处理函数差异仅在一个数字上,可以通过调用一个共同的函数OnCal(double num)来简化源代码长度,增加模块性。 void CCalcDlg::OnCal(double num) { //分三种状态来处理 if(numfirst!=0 && numsecond!=0) { if(point_flag==TRUE) //判定为小数 { poz*=0.1; //小数进位 m_Dis=m_Dis+poz*num;//递增 UpdateData(false); //把结果从内存传递到屏幕 } else

单片机课程设计报告(简易计算器)

单片机实训报告 ———简易计算器 姓名*** 学号*** 专业*** 学校*** 指导教师 *** 实训时间2014.06.23-2014.06.29

目录 中文摘要............................................................1 关键词.............................................................1 1 实训任务.........................................................1 1.1 主要功能设计................................................1 1.2 任务目的....................................................1 2 整体设计方案.....................................................1 2.1 方案论证....................................................1 2.2 系统框图....................................................2 3 控制软件设计....................................................2 3.1 程序时序总图...............................................2 3.2 液晶显示软件设计............................................3 3.3 键盘输入软件设计...........................................5 3.4 计算函数设置...............................................7 4 软件调试........................................................8 个人小结...........................................................8参考文献...........................................................9附录...............................................................9

简易计算器VB课程设计报告

简易计算器 要求:用VB做类似于windows自带的计算器程序 绪论:Visual Basic(VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。 1.界面设计: 根据WINDOWS计算器界面模型,修改后制作简易计算器界面。新建一个窗体,添加一个文本框用于显示运算数字和结果,添加若干按钮包括(数字0—9,+,-,*,/,=,x^ ,1/x,清屏,退出)。 当单击数字按钮时输入运算数时,单击运算符按钮,再单击“=”按钮,则再文本框中显示计算结果。具体如下图

计算器界面设计示意图 流程图如下: 简易计算器 ↓ 计算器管理界面 ↓ 计算界面 ↓ 退出程序 2.程序代码: Dim A, B As Single Dim Op As String Private Sub Command1_Click() Text1.Text = Text1.Text + Command1.Caption End Sub Private Sub Command14_Click() ’定义减法

If A = 0 Then A = Text1.Text Else B = Text1.Text End If Text1.Text = "" Op = "-" End Sub Private Sub Command2_Click() Text1.Text = Text1.Text + Command2.Caption End Sub Private Sub Command20_Click() ’定义平方 A = Text1.Text B = A ^ 2 Text1.Text = B End Sub Private Sub Command3_Click() Text1.Text = Text1.Text + Command3.Caption End Sub Private Sub Command4_Click() Text1.Text = Text1.Text + Command4.Caption End Sub Private Sub Command13_Click() ’定义加法If A = 0 Then A = Text1.Text Else B = Text1.Text End If Text1.Text = "" Op = "+" End Sub Private Sub Command5_Click() Text1.Text = Text1.Text + Command5.Caption End Sub Private Sub Command6_Click() Text1.Text = Text1.Text + Command6.Caption End Sub Private Sub Command17_Click() ’清屏Text1.Text = "" A = 0: B = 0 End Sub Private Sub Command19_Click() End End Sub

相关文档
最新文档