# calculator **Repository Path**: jinshaomin123/calculator ## Basic Information - **Project Name**: calculator - **Description**: C语言实现的计算器,主要用于练手项目,以及探索如何开始一个开源项目 - **Primary Language**: C/C++ - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-26 - **Last Updated**: 2024-11-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # calculator ### 简易计算器 ### 1. 引言 : 简易计算器,旨在实现一个简单的计算器功能。 1. 整形,浮点型数据的加减乘除运算; 2. 数据的统计(如文件中某字符的出现频数); 3. 期望,方差运算; 4. 平均数,最小值,最大值,中位数,众数的计算; 5. 排序,查询运算。 6. 使用图形库实现交互功能。 ### 2. 系统架构 : ![输入图片说明](image/caculator.png) ### 3. 技术选型 : 开发语言选择C语言,使用到C语言的math库。 EasyX库缺少ubuntu下的库文件支持; 可视化选择OpenGL图形库。OpenGL图形库虽然可以绘制2D和3D图形,但是没有很好地支持控件的库函数; GTK图形库,有较为丰富的控件支持,安装和编译的时候需要使用pkg-config来管理头文件的搜索和依赖。 ### 4. 模块设计 : 预处理模块 输入模块 1.while循环保持窗口的停留,接收输入的字符串; 2.可以输入命令,读取相应目录下的文件,计算文件中的数据,同时把数据保存到文件中。 字符串解析模块 1. 检查字符串是否是quit等停止推出符号,如果是推出程序; 2. 检查字符串是否是合法字符串,如果包含了出数字和操作符之外的字符,则认为字符串不合法,请用户重新输入表达式。 计算模块 1整形,浮点型数据的加减乘除运算; 2数据的统计(如文件中某字符的出现频数); 3期望,方程运算; 4平均数,最小值,最大值,中位数,众数的计算; 5排序,查询运算。 6使用图形库实现交互功能。 输出模块 按照特定的格式输出到屏幕中。 使用gtk作为交互的界面,将结果显示在窗口的文本框中。 存储模块 将计算结果按照规定格式输出到文件中保存。 5. 数据设计 : 数据栈:保存数据的数据结构; 操作符栈:保存操作符的数据结构; 文件:保存计算结果的数据类型; ### 5. 测试策略 : 命名一个test.c统一建立测试用例。 1.整数运算 2.整数和浮点数的运算 3.浮点数和浮点数的运算 4.带括号的整数运算 5.带括号的浮点数运算 6.在gtk ui上输入表达式,求运算的结果 7.输入一个数组,统计特定数据的频数和频率 8.输入一个数组,求期望和方差 9,输入一个数组,排序和查找 10. 清除输入的结果 ### 安装说明 在linux系统双击main程序即可执行。 ### 使用说明 1.运算 输入整形表达式,点击sure按钮可以运算出结果: ![输入图片说明](image/int_caculate.png) 输入浮点型表达式,点击sure按钮可以运算出结果: ![输入图片说明](image/float_caculate.png) 2.统计 输入整形数列,对数列数据进行求平均值和方差: ![输入图片说明](image/int_count.png) 输入浮点型数列,对数列数据进行求平均值和方差: ![输入图片说明](image/float_count.png) 3.排序 输入整数数列,进行升序排序 ![输入图片说明](image/sort.png)