栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

简单计算系统

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单计算系统

  • 需求和规格说明

    设计实现求二元一次方程的定积分,先将区间(a,b)n等分,(a,b,n由程序输入)此次拓展为用户任意输入系数,以及n,可将区间n等分,得到n个小梯形,然后分别求小梯形,再求和。拓展1,加入了计算三角函数的功能,引入头文件#include,将输入的角度转化为弧度值,然后用内置三角函数进行求解。拓展2,加入了判断素数的功能,进行遍历判定。拓展3,加入了输入三边判定是否构成三角形,以及构成什么三角形和三角形的面积。拓展4,能够进行累加于累乘。拓展5,能够求解二元一次方程。拓展6,能够求两个数的最小公倍数与最大公约数。

  • 设计

       整个课设分为多个部分完成的。最初实现的是不定积分部分,由于定积分部分代码较少,我又拓展了其他的功能,最终写了336行代码。

    1. 菜单的显示:

    采用了void showMenu()函数,

    void showMenu()

    {

          cout << "**************欢迎使用简单数学计算系统*****************" << endl;

          cout << "**************0、退出计算系统**************************" << endl;

          cout << "**************1、计算定积分****************************" << endl;

          cout << "**************2、计算三角函数**************************" << endl;

          cout << "**************3、判定是否是素数************************" << endl;

          cout << "**************4、判定三边能否构成三角形以及面积********" << endl;

          cout << "**************5、计算累乘与累加************************" << endl;

          cout << "**************6、二元一次方程求解**********************" << endl;

          cout << "**************7、求最大公约数**************************" << endl;

          cout << "**************8、求最小公倍数**************************" << endl;

          cout << "*******************************************************" << endl;

    }

    1. 定积分函数部分

    采用了微分法,先将图像分割成n分,然后用梯形法求解面积

    1. 三角函数部分

    先将角度制转化为弧度制,然后用sin(),cos(),tan()函数进行计算,求解出要求的三角函数值

    1. 判断三边是否构成三角形以及三角形的面积

    第一步,判定是否构成三角形a+b>c&&b+c>a&&a+c>b,第二步判断构成的三角形的形状,第三步,利用海伦公式计算三角形的面积

    5、判断素数部分

    输入一个数据n后,利用for循环遍历i=1至i=n-1,如果在遍历中有一个i,被n取余后为0,则n不是素数,循环停止,如果遍历一遍后,仍然没有符合条件的i,则输入的n为素数

    6、累加与累乘部分

    首先分为两个部分累加与累乘,在累加部分中,你要输入累加的起始a于终止b和累加间隔c,利用for循环进行计算。在累乘部分中,你要输入累乘的起始a与终止b,和累乘间隔c,也利用for循环进行计算

    7、最大公约数部分

      利用辗转相除法进行求解,先进行for循环,直到余数为零才退出循环。

    8、最小公倍数部分

       先输入两个数m与n并找出m与n中较大的数,利用for循环遍历大于较大的数,直到找到一个数,它被m取余后为零且n取余后也为零,循环停止,并输出该数。

    9、二元一次方程求解部分

    你要输入要计算的二元一次方程的二次项系数a,一次项系数b,常数项c,系统会判断b*b -4*a*c的正方关系,如果为负,则输出无实数解,如果为零,则计算唯一实数解x=-b/2*a,如果为正,则分别计算x1与x2

  • 用户手册
    1. 程序运行时,会显示菜单栏

    2、根据提示输入数字,进入不同的界面

  • 调试及测试

      我在代码编写过程中使用的DevC++,有部分函数需要稍微做一

    些修改才能使用, 在编写过程中,首先面临菜单的保留与运行选项的清理,我在网上学习了一下,才编写出来。

  • 运行实例

  • 进一步改进

    功能不太全,有待拓展,代码的效率较低有待提高,代码不易了解

  • 心得体会

      通过课程设计,自己的收获是很多的,毕竟代码是真的自己一个

    人独立完成的。在整个课设的制作过程中自己遇到过大大小小的问题,

    有些至今已经解决,有些苦思冥想也没搞明白,还有些虽然和自己的

    预想有些差异,但却是想着好的方向发展的。

  • 对课程设计的建议

      我认为梯形法定积分的程序较为简单,我就拓展了一下,增加了其他功能,代码的长度增加到了三百多行。

    #include
    #include
    #define pi 3.141592654
    using namespace std;
    //显示菜单
    void showMenu()
    {
        cout << "**************欢迎使用简单数学计算系统*****************" << endl;
        cout << "**************0、退出计算系统**************************" << endl;
        cout << "**************1、计算定积分****************************" << endl;
        cout << "**************2、计算三角函数**************************" << endl;
        cout << "**************3、判定是否是素数************************" << endl;
        cout << "**************4、判定三边能否构成三角形以及面积********" << endl;
        cout << "**************5、计算累乘与累加************************" << endl;
        cout << "**************6、二元一次方程求解**********************" << endl;
        cout << "**************7、求最大公约数**************************" << endl;
        cout << "**************8、求最小公倍数**************************" << endl;
        cout << "*******************************************************" << endl;
    }
    //计算定积分
    void Jfun()
    {
        float a, b, n, a1 = 1, b1 = 2, c1 = 1;//定义a,b,c二元一次方程的系数 
        cout << "请输入要计算定积分的二元一次表达式的系数a1,b1,c1" << endl;
        cin >> a1 >> b1 >> c1;
        cout << "请输入区间(a,b)" << endl;
        cin >> a >> b;//输入定积分区间 
        cout<<"请输入多少份:"<     cin>>n; 
        float h, s = 0, t1, t2, l1, l2;
        h = (b - a) / n;//梯形的高 
        for (int i = 0; i < n; i++)
        {
            t1 = a + h * i;//下底对应的x 
            t2 = a + h * (i + 1);//上底对应的x 
            l1 = a1 * t1 * t1 + b1 * t1 + c1;//下底 
            l2 = a1 * t2 * t2 + b1 * t2 + c1;//上底 
            s += (l1 + l2) * h / 2.f;//单个小梯形的面积 
        }
        cout << s << endl;//输出定积分的值 
        system("pause");
        system("cls");
    }
    //计算三角函数
    int Sfun()
    {
        float x = 0;
        int Select=0;
        while (true)
        {
            cout << "********************************" << endl;
            cout << "**************1、正弦函数*******" << endl;
            cout << "**************2、余弦函数*******" << endl;
            cout << "**************3、正切函数********" << endl;
            cout << "**************4、返回主菜单******" << endl;
            cout << "请输入你的选择" << endl;
            cin >> Select;
            switch (Select)
            {
            //计算正弦 
            case 1:
                
                cout << "请输入你要算的值" << endl;
                cin >> x;
                cout << sin(x / 180 * pi);
                system("pause");
                system("cls");
                break;
                //计算余弦 
            case 2:
                
                cout << "请输入你要算的值" << endl;
                cin >> x;
                cout << cos(x / 180 * pi) << endl;
                system("pause");
                system("cls");
                break;
                //计算正切 
            case 3:
                cout << "请输入你要算的值" << endl;
                cin >> x;
                cout << tan(x / 180 * pi) << endl;
                system("pause");
                system("cls");
                break;
            case 4:
                return 0;//返回主菜单 
                break;
            default :
                cout << "请重新输入" << endl;
                system("pause");
                system("cls");
            }
        }
        system("pause");
        system("cls");
    }
    //判断是否为素数
    void Pfun()
    {
        int x;
        int flag = 1;
        cout << "请输入一个数字" << endl;
        cin >> x;
        for (int i = 2; i < x / 2; i++)
        {
            if (x % i == 0)
            {
                flag = 0;//判断参照 
                cout << "不是素数" << endl;
                system("pause");
                system("cls");
                break;
            }
        }
        if (flag == 1)
        {
            cout << "是素数" << endl;
            system("pause");
            system("cls");
        }
    }
    //4、判定三边能否构成三角形以及面积
    void Qfun()
    {
        float a = 0, b = 0, c = 0;
        cout << "请输入三角形的三边" << endl;
        cin >> a >> b >> c;
        //判断是否构成三角形 
        if (a + b > c && b + c > a && a + c > b)
        {
            //判断是否构成等腰三角形 
            if (a != b && b != c && a != c)
            {
                //判断是否构成直角三角形 
                if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a)
                {
                    cout << "能构成直角三角形" << endl;
                }
                else
                {
                    cout << "构成普通三角形" << endl;
                }
            }
            else
            {
                //判断是否构成等边三角形 
                if (a == b && b == c)
                {
                    cout << "构成等边三角形" << endl;
                }
                else
                {
                    cout << "构成等腰三角形" << endl;
                }
            }
            float s = (a + b + c)/2.f;
            float area = 0;
            area = sqrt(s * (s - a) * (s - b) * (s - c));
            cout << "其面积为" << area << endl;

        }
        else
        {
            cout << "不能构成三角形" << endl;
        }
        system("pause");
        system("cls");
    }
    //累加与累乘
    int Lfun()
    {
        int select = 0;
        long int a = 0, b = 0, c = 0;
        long int sj = 0;
        long int sc = 1;
        while (true)
        {
            cout << "*****************************" << endl;
            cout << "*********1、累加*************" << endl;
            cout << "*********2、累乘*************" << endl;
            cout << "*********3、返回主菜单*******" << endl;
            cout << "请输入你的选择" << endl;
            cin >> select;
            switch (select)
            {
            case 1:
                cout << "请输入累加的区间与累加间隔" << endl;
                cin >> a >> b >> c;
                for (int i = a; i<= b; i += c)
                {
                    sj += i;
                }
                cout << sj << endl;
                system("pause");
                system("cls");
                break;
            case 2:
                cout << "请输入你的累乘区间与累乘间隔" << endl;
                cin >> a >> b >> c;
                for (int i = a; i <= b; i += c)
                {
                    sc *= i;
                }
                cout << sc << endl;
                system("pause");
                system("cls");
                break;
            case 3:
                return 0;
            default :
                cout << "请重新输入" << endl;
                break;
            }
        }
        system("pause");
        system("cls");
    }
    //求解二元一次方程
    void Cfun()
    {
        float a, b, c, x1, x2, x;
        cout << "请输入一元二次方程的a,b,c的系数" << endl;
        cin >> a >> b >> c;
        //判断是否有实数解 
        if (b * b - 4 * a * c < 0)
        {
            cout << "无实数解" << endl;
        }
        else
        {
            if (b * b == 4 * a * c)
            {
                cout << "有两个相等的实数根" << endl;
                cout << -b / 2 * a << endl;
            }
            else
            {
                float d = sqrt(b * b - 4 * a * c);
                x1 = (-b + d) / 2 * a;
                x2 = (-b - d) / 2 * a;
                cout << "有两个实数根" << endl;
                cout << x1 << "  " << x2 << endl;
            }
        }
        system("pause");
        system("cls");
    }
    //求解最大公约数
    void Mfun()
    {
        int m = 0, n = 0;
        cout << "请输入你要求的两个数的最大公约数" << endl;
        cin >> m >> n;
        
        
            int z = n;
            while (m % n != 0)
            {
                z = m % n;
                m = n;
                n = z;
            }
            cout << z << endl;
        system("pause");
        system("cls");
    }
    //求最小公倍数
    void Ifun()
    {
        int m, n=0;
        int z = n;
        cout << "请输入你要求的两个数的最小公倍数" << endl;
        cin >> m >> n;
        if (m < n) 
        {
            int temp;
            temp = m;
            m = n;
            n = temp;
        }
        for (int i = m; ; i++)
            if (i % m == 0 && i % n == 0)
            {
                cout << i << endl;
                break;
            }
            
        system("pause");
        system("cls");
    }

    //主函数
    int main()
    {
        int select = 0;
        while (true)
        {
            showMenu();
            cout << "请输入你的选择" << endl;
            cin >> select;
            switch (select)
            {
                //推出计算系统 
            case 0:
                cout << "欢迎下次使用" << endl;
                system("pause");
                return 0;
                break;
                //计算定积分 
            case 1:
                Jfun();
                break;
            case 2:
                Sfun();
                system("cls");
                break;
                //判断一个数是否为素数 
            case 3:
                Pfun();
                break;
            case 4://判断三边是否构成三角形以及构成三角形的面积 
                Qfun();
                break;
            case 5://计算累乘与累加 
                Lfun();
                system("cls");
                break;
            case 6://求二元一次方程 
                Cfun();
                break;
            case 7://求最大公约数 
                Mfun();
                break;
            case 8://求最小公倍数 
                Ifun();
                break;
            default:
                cout << "输入错误,请重新输入" << endl;
                system("pause");
                system("cls");
                break;
            }
        }
        system("pause");
        return 0;
    }

  • 转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/702494.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号