linux计算器程序实验,Linux下基于GTK+的单词数值计算器
一、 实验要求
综合运用CTK+提供的函数,按照一定的规则(具体见实验报告)计算一个单词或者一组单词的数值,并输出到屏幕或文件中。
1、 按照规则计算单词的值,如果 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为1 2 3 4 5 6 7 8 9 10 11 12 13 1 15 16 17 18 19 20 21 22 23 24 25 26,
如
WINJACK这个单词的值就为:W+I+N+J+A+C+K=23+9+14+10+1+3+11=71%
HARDWORK=H+A+R+D+W+O+R+K=8+1+18+4+23+15+18+11=98%
KNOWLEDGE=K+N+O+W+L+E+D+G+E=11+14+15+23+12+5+4+7+5=96%
LOVE=L+O+V+E=12+15+22+5=54%
LUCK=L+U+C+K=12+21+3+11=47%
ATTITUDE=A+T+T+I+T+U+D+E=1+20+20+9+20+21+4+5=100%
2、 程序在第一个单行文本框输入一单词,点击“计算”按钮,按照以上算法计算出该单词的值。
3、 如果在最下面的单行文本框输入一个文件路径,此文件每行记录一个单词,那么经过程序计算出各个单词的值,并把结果输出到当前目录下result.txt文件中。如果文件不存在,应该提示错误。
二、 设计思路
程序结构
程序界面主要由一个VBOX,6个HBOX和两个三个LABEL,两个ENTRY,两个BUTTON组成。
程序的执行函数都在两个BUTTON里面,单击按钮就执行对应函数。
计算按钮主要把单词输入框传来的英文单词放到一个字符数组里面,然后把字符数组每个字符的ASCLL码减去64得到单词的值然后累加。累加后得到一个数值,调用sprintf()把值变字符串,再调用strcat()函数在字符串后面加上百分号字符,最后把字符串输出到单词数值LABEL显示。
执行按钮主要实现从文件路径输入框里面获得文件路径,并打开相应文件,然后对每个文件中的单词执行和计算按钮相同的操作,并写入result.txt文件中。
程序代码
#include
#include
#include
#include
const char*danci=”dd”;
GtkWidget*dancizhib_label;
GtkWidget*wjlj_entry;
void closeApp(GtkWidget*window,gpointer data){
gtk_main_quit();
}
//计算按钮函数
void jisuan_clicked(GtkWidget*window,gpointer data){
const char *danci_text=gtk_entry_get_text(GTK_ENTRY((GtkWidget*)data));
char sum=0,all[50];
int i;
for(i=0;danci_text[i]!=0;i++)
sum+=danci_text[i]-64;
sprintf(all,”%d”,sum);
strcat(all,”%”);
gtk_label_set_text(GTK_LABEL (dancizhib_label),all);
}
//执行按钮函数
void zhixing_clicked(GtkWidget*window,gpointer data){
const char *filepath=gtk_entry_get_text(GTK_ENTRY((GtkWidget*)data));
FILE *fp,*fp2;
char i[50],sum=0,all[50],af[50];
int c,k,aa=0;
if((fp=fopen(filepath,”rb”))==FALSE)
{gtk_entry_set_text(GTK_ENTRY(wjlj_entry),”此路径文件不存在!”);
return;
}
if((fp2=fopen(“result.txt”,”wb”))==FALSE)
{gtk_entry_set_text(GTK_ENTRY(wjlj_entry),”result.txt文件不存在!”);
return;
}
else
{
while((fscanf(fp,”%s”,i))!=EOF)//读取直到文件结束
{
for(c=0;i[c]!=0;c++)
sum+=i[c]-64;
sprintf(all,”%d”,sum);
strcat(all,”%\n”);
fprintf(fp2,”%s”,all);
sum=0;
gtk_entry_set_text(GTK_ENTRY(wjlj_entry),”执行成功,已写入result.txt!”);
}
}
rewind(fp);
rewind(fp2);
fclose(fp2);
fclose(fp);
}
//主函数
int main(int argc,char *argv[]){
//一些声明定义
GtkWidget*window;
GtkWidget*danci_label,*dancizhi_label,*wjlj_label,*part_label;
GtkWidget*danci_entry;
GtkWidget*jisuan_button;
GtkWidget*zhixing_button;
GtkWidget*hbox1,*hbox2,*hbox3,*hbox4,*hbox5,*hbox6;
GtkWidget*vbox;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),”单词数值计算器”);
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window),450,250);
danci_label=gtk_label_new(“请输入单词值:”);
dancizhi_label=gtk_label_new(“该单词值: “);
wjlj_label=gtk_label_new(“请输入文件路径:”);
dancizhib_label=gtk_label_new(“0”);
part_label=gtk_label_new(“***************************************************************”);
danci_entry=gtk_entry_new();
wjlj_entry=gtk_entry_new();
jisuan_button=gtk_button_new_with_label(“计算”);
zhixing_button=gtk_button_new_with_label(“执行”);
g_signal_connect(GTK_OBJECT(window),”destroy”,GTK_SIGNAL_FUNC(closeApp),NULL);
g_signal_connect(GTK_OBJECT(jisuan_button),”clicked”,GTK_SIGNAL_FUNC(jisuan_clicked),danci_entry);
g_signal_connect(GTK_OBJECT(zhixing_button),”clicked”,GTK_SIGNAL_FUNC(zhixing_clicked),wjlj_entry);
hbox1=gtk_hbox_new(TRUE,10);
hbox2=gtk_hbox_new(TRUE,10);
hbox3=gtk_hbox_new(TRUE,10);
hbox4=gtk_hbox_new(TRUE,10);
hbox5=gtk_hbox_new(TRUE,10);
hbox6=gtk_hbox_new(TRUE,10);
vbox=gtk_vbox_new(FALSE,20);
gtk_box_pack_start(GTK_BOX(hbox1),danci_label,TRUE,FALSE,10);
gtk_box_pack_start(GTK_BOX(hbox2),danci_entry,TRUE,FALSE,1);
gtk_box_pack_start(GTK_BOX(hbox2),jisuan_button,TRUE,FALSE,9);
gtk_box_pack_start(GTK_BOX(hbox3),dancizhi_label,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox3),dancizhib_label,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox6),part_label,TRUE,FALSE,10);
gtk_box_pack_start(GTK_BOX(hbox4),wjlj_label,TRUE,FALSE,10);
gtk_box_pack_start(GTK_BOX(hbox5),wjlj_entry,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox5),zhixing_button,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(vbox),hbox1,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox2,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox3,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox6,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox4,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox5,FALSE,FALSE,10);
gtk_container_add(GTK_CONTAINER(window),vbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
三、 程序运行效果图
四、 实验总结
省略啦
版权所有,严禁用于商业用途,转载请写明转载自 www.piikee.net
打赏
微信扫一扫,打赏作者吧~
linux计算器程序实验,Linux下基于GTK+的单词数值计算器相关推荐
- 基于GTK+的单词数值计算器-实验报告
一.实验要求 实现基于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 ...
- Linux下基于GTK人脸识别界面设计
Linux下基于GTK人脸识别界面设计 1.人脸识别简介 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸, ...
- linux系统程序问题报告,Linux程序设计实验报告.docx
Linux程序设计实验报告.docx Linux程序设计实验指导书实验类别课内实验 实验课程名称Linux程序设计实验室名称软件工程专业实验室 实验课程编号 000 总 学 时32 学 分 2 适用专 ...
- linux c程序hello,Linux下实现c语言hello world 步骤
最近.刚开始学习Linux.下面简单介绍一下在Linux 下实现hello world的几个步骤: 先附上基本的过程 [crazw@Linux ~]$ ls code Documents Music ...
- Linux软件基础实验,linux基本操作的实验
linux基本操作的实验 发布时间:2008-10-02 00:37:30来源:红联作者:sfwjeo 实验一.linux基本操作 1.实验目的 了解linux的基本命令,熟练掌握其基本操作 2.相关 ...
- linux应用程序原理,LINUX原理及应用:第15章 XWindow及Genie应用程序
<LINUX原理及应用:第15章 XWindow及Genie应用程序>由会员分享,可在线阅读,更多相关<LINUX原理及应用:第15章 XWindow及Genie应用程序(12页珍藏 ...
- python监控linux运行程序_python linux监控程序
Pyinotify – Linux中实时监控文件系统更改 Pyinotify 是一个简单而实用的 Python 模块,它用于通过 inotify 实时监控Linux文件系统的更改.用于在Linux中实 ...
- linux有趣程序视频,Linux系统下也玩视频编辑 10个非常流行的免费Linux视频软件
为了满足广大Linux爱好者的需要,我们为大家搜罗基于Linux操作系统的优秀应用软件.首先,让我们一起来认识一些面向Ubuntu Linux的免费的视频编辑工具. PiTiVi是一个使用Python ...
- linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...
使用linux的过程中,我们会熟悉各种命令,偶尔我们不禁会问,这些命令是怎么实现的,学习他们其实是学习linux高级系统编程很快捷的方法. 这些命令的源码肯定是存放在相应的包里面,但是是哪些包呢? 发 ...
最新文章
- oracle相关操作
- ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`meiduo`.`
- flask框架创建数据库定义字段类型和字段常用参数
- Spring+ Spring cloud + SSO单点登录应用认证
- 闲话WPF之十(Dependency属性 [2] )
- [蓝桥杯2016初赛]卡片换位-bfs
- Vue之splice和push
- linux 29900端口,USB2.0接口100M以太网芯片SR9900(A)的应用
- 2个字段并在一次插入一个字段里面_elasticsearch外用与内观(二)-当插入文档时,elasticsearch都在做什么...
- Netty工作笔记0002---Netty的应用场景
- Linux中删除文件夹和文件的命令
- Python_骑士游历问题
- android zlib 和zip,gzip zip 和zlib
- powerbi导入地图_PowerBI 地图 - 层级下钻形状地图最佳实践
- Erlang 游戏开发经验总结
- 单片机c语言编写注解,单片机C语言程序注解
- 苹果cms怎么采集别人网站的视频
- 网线信道测试软件,测试网线是否正常的方法有哪些
- ZbxTable 2.0 重磅发布!6大主要优化功能!
- jvm调优五:jvm调优工具和调优实战
热门文章
- 无证书访问https外部接口
- BMS电池管理系统中的各种算法介绍
- 外汇交易系统应遵循的原则
- 5个月82起数据泄露事件,新西兰运输局网络安全受质疑
- Inno Setup 精灵显示插件 InnoFairy (V2.0 版本)
- 发那科机器人的LPOS JPOS指令
- Unsupported compiler 'GCC 4.2 (Plausible Blocks)' selected for i386
- 【转】rundll32 运行 dll 中的函数
- 安卓简单app《录音机》实现
- safari10.0以上版本出现默认小人头图标