基于GTK+的单词数值计算器-实验报告
来源:互联网 发布:中国校花大赛数据库 编辑:程序博客网 时间:2024/06/08 10:24
一.实验要求
实现基于GTK+的单词数值计算器。该功能如下:
(1)按照规则计算单词的值,如果AB C D E F G H I J K L M N O P Q R S T U V W S Y Z 26个大写字母(全部用大写)的值分别为12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26,如:
LOVE=L+O+V+E=12+15+22+5=54%
(2)程序的界面参照书上P224,在第一个单行文本框输入一个单词,单击“计算”按钮,按照以上算法计算出该单词的值。
(3)如果在最下面的单行文本框输入一个文件路径,此文件每行记录一个单词,那么经过程序计算出各个单词的值,并把结果输出到当前目录下result.txt文件中。如果文件不存在,应该提示错误。
二.程序设计思路(含流程图、算法、界面布局说明、控件数量及类型等等)
1.流程图
略
2.算法
2.1计算单词的值
2.1.1 提取单词,用数组存放
2.1.2 计算单词的长度
2.1.3依次计算字母的值,相加。
2.1.4将单词的值显示
2.2计算文件中单词的值
2.2.1提取文件中的单词存入array[][]
2.2.2计算各单词的值,算完一个单词,就将单词及值输入对应文件。
3.界面布局说明
gtk_box_pack_start(GTK_BOX(hbox1),label1,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox1),entry1,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox2),label2,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox2),label4,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox2),button1,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox3),entry3,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox3),button2,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),hbox1,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),hbox2,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),label3,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),hbox3,TRUE,FALSE,0);
4.控件数量及类型
(1)窗体控件GtkWindow 1个
(2)按钮控件GtkButton 2个
(3)标签控件GtkLabel 4个
(4)文本框控件GtkEntry 2个
(5)消息对话框控件GtkMessageDialog 2个
三.程序核心代码(需要有相关注释)
void button_clicked1(GtkWidget*widget,gpointer data)//计算单词的值
{
intsum=0;
inti,length;
char*input;
char*value;
value=(gchar*)data;//存放单词
length=strlen(value);//单词长度
for(i=0;i<length;i++)sum=sum+value[i]-64;//计算
sprintf((gchar*)value,"%d",sum);
gtk_label_set_text((GtkLabel*)label4,value);//输出
}
void button_clicked2(GtkWidget*widget,gpointer data)//计算文件中单词的值
{
GtkWidget*dialog;
gchar*temp="输入的文件路径不存在!";
gchar*tmp="计算成功";
charc,array[100][100];
char*file,*vlue;
FILE*open,*result;
inti,j,k,length,sum;
file=(gchar*)data;
open=fopen(file,"r");//打开文件
if(!open)//若是文件不存在,则提示
{
dialog=gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,temp);
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
return;
}
for(i=0;;i++)//将文件中的单词取出来,存入array[][]中
{
for(j=0;;j++)
{
c=fgetc(open);
if(c==10)//若是该单词已结束,跳出当前循环
{
array[i][j]='\0';
break;
}
elseif(c==EOF) break;
elsearray[i][j]=c;
}
if(c==EOF)break;
}
length=i;//表示单词的个数
result=fopen("./result.txt","w++");
for(i=0;i<length;i++)//如上一个函数
{
fprintf(result,"%s ",array[i]);
k=strlen(array[i]);
sum=0;
for(j=0;j<k;j++)sum=sum+array[i][j]-64;
fprintf(result,"%d\n",sum);
}
dialog=gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,tmp);//提示成功
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
fclose(result);
fclose(open);
}
四.程序运行效果
1.主界面
2.输入单词及执行结果
3.输入错误的文件路径
4.输入正确的文件路径及结果
五.实验总结
本次实验主要按照书上关于控件的用法以及容器的布局就可完成,主要遇到的问题就是GTK+自带的函数不太清楚,需要上网查询。
- 基于GTK+的单词数值计算器-实验报告
- 基于GTK+的单词数值计算器
- GTK的计算器
- 【实验】基于webservice的嵌入式计算器的设计
- GTK计算器
- 第三次上机实验报告(个人所得税计算器)
- javaGUI设计简单计算器实验报告
- 【计算器Java实现】基于栈的复杂表达式解析&&数值计算
- 基于网络环境的程序设计综合实验报告
- 实验报告->数组的定义和使用->计算一段文字中的空格数和单词数
- GTK+实验
- 基于堆栈的计算器
- 基于Qt的计算器
- 基于gtk+的软件平台
- 计算器的程序_实验
- 两位数值单词的乘法实现
- 《第十五周实验报告任务2——分数计算器》
- 实验的报告注意事项
- Java 如何证明加载类的动作仅发生一次。证明该类的第一个实体的创建或者对static成员的访问都有可能引起加载
- webshell变形
- 根据先序遍历和中序遍历求后续遍历
- linux SHELL 编程基础知识(随笔记)
- 黑马程序员 Java基础_3 数组,数组排序和应用
- 基于GTK+的单词数值计算器-实验报告
- 闲来无事总结的各种[XXX]的用法……高手勿入……内部低能……
- 浙大PAT考试1001~1004
- 生成模型与判别模型
- 手把手教你如何用读写plist文件
- 我的第1篇博客
- 高性能 Socket 组件 HP-Socket v3.2.1 正式发布
- [Java 11] System 类 与 Runtime 类
- hibernate的简单注解/使用