C++ week1

作者 by 超米 / 2024-03-20 / 暂无评论 / 44 个足迹

整个作业由8个函数构成,通过学习你应该知道程序的入口函数为main()函数,首先读懂main()函数中的代码。然后再逐个了解以下几个函数的功能。

(1).menu()函数

功能是显示系统功能菜单,与用户进行交互。根据用户输入的选项值,调用不同功能的函数。系统菜单的显示如下图:
请输入图片描述
(2).input()函数

功能是输入职工信息。当用户输入选项1时,显示子菜单:1.输入职工信息 2.返回主菜单。用户再次确认输入1,调用input()函数,完成逐项输入职工的工号、姓名、基本工资、奖金和扣款。运行界面如图:

请输入图片描述

(3).output()函数

功能是输出职工信息。用户在主菜单中选择2,子菜单输入1确认,即会调用output()函数,此函数会将刚才输入的5项数据逐行输出,格式如图:
请输入图片描述

(4).takeHomePay()函数

功能是计算职工的实发工资。前面通过input()函数输入的职工信息中有基本工资、资金和扣款,所以职工的实发工资可以通过这三项计算出来。如图:
请输入图片描述
(5).calculateTaxes()函数

功能为计算税金。税金 = 应纳税所得额× 适用税率- 速算扣除数。从2011年开始,我国征收个人所得税从3500元起,分为8级。以下为征税标准:
2024-03-20T10:16:26.png
2024-03-20T10:16:42.png
你可以使用以下数据检查你的函数运算是否正确。

在这个函数中,你可以使用if嵌套语句完成,也可以使用多分支switch语句完成任务。
请输入图片描述
(6).paySalary()函数

功能是计算实发工资所需纸币张数和硬币个数。需要由你设计这个函数协助会计给职工发放工资,计算需要各种面值的纸币和硬币个数。我们在这里假设可使用的纸币面值有100元、50元、20元、10元、5元、2元和1元,硬币面值为5角、2角和1角,面值为分忽略不计。运行结果如图:
2024-03-20T10:17:27.png
(7).avgSalary()函数

功能是计算多个职工的平均工资、最高工资和最低工资。这里的多个职工并不是一个固定值,可能这次程序运行时输入了5个,可在下次运行程序时输入了15个,因此不能使用for循环。While循环语句非常适合无固定次数的循环处理,在条件表达式里可以使用一个是否等于一个特殊的值或超出范围的值来跳出循环,这是一种常用的技巧。运行结果如图:
请输入图片描述

项目模板:

/* 

 * File:  职工管理系统

 */

#include <iostream>

#include <string>

#include <stdlib.h>

using namespace std;

/*

 * 声明六个不同类型的全局变量,分别存储职工的工号,姓名,基本工资,奖金,扣款和实发工资这六项数据;

 */

//请在此处声明变量

/*

 * 函数名:input

 * 功能:输入一个职工的信息

 * 

 * 使用cin 流对象从键盘输入职工的工号,姓名,基本工资,奖金和扣款。

 * 

 * 主要练习输入流对象cin函数的使用 
    
 */

void input() {

cout << "\n*************************************************************\n";

cout << "请输入职工的信息:\n";

//请将代码填写在此处

cout << "\n*************************************************************\n";

system("pause");

}

/* 

 * 函数名:output

 * 功能:输出职工信息

 * 

 * 主要练习cout输出流对象的使用。

 */

void output() {

cout << "\n*************************************************************\n";

//请将代码填写在此处

cout << "\n*************************************************************\n";

system("pause");

}

/*

 * 函数名:takeHomePay

 * 功能:计算某一职工的实发工资并输出结果

 * 

 * 主要练习算术表达式和赋值运算符的使用。 

 */

void takeHomePay() {

    cout << "\n*************************************************************\n";

      //请将代码填写在此处

    cout << "\n*************************************************************\n";

    system("pause");

}

/*

 * 函数名:calculateTaxes

 * 功能:计算税金

 * 

 * 完成此函数需要以下几个步骤:

 * 1.按照税金公式完成税金的计算

 * 2.输出相应结果

 * 

 * 练习分支结构if-else语句和switch语句

 */

void calculateTaxes() {

    cout << "\n*************************************************************\n";

    //请将代码填写在此处

    cout << "\n*************************************************************\n";

    system("pause");

}

/*

 * 函数名:avgSalary

 * 功能:计算多个职工的平均基本工资
 *  

 * 在此函数中,你需要使用循环语句输入多个职工的工资(具体输入多少个职工的工资值,

 * 可以使用当输入值为超出范围的值时结束输入的方法),在输入基本工资的过程同时,

 * 统计职工人数和工资总和,最后计算出平均工资

 * 可根据需要声明变量

 * 

 * 主要练习循环语句,循环计数器 

 */
void avgSalary() {

    cout << "\n*************************************************************\n";

    //请将代码填写在此处

    cout << "\n*************************************************************\n";

    system("pause");

}

/*

 * 函数名:paySalary

 * 功能:换算纸币及硬币个数

 * 

 * 

 * 纸币可使用面值有100元,50元,20元,10元,5元,2元和1元,硬币可使用面值有5角,

 * 2角和1角,在此程序中可不计算面值为分的硬币个数。
        
 * 

 * 主要练习除号表达式

 */

void paySalary() {

    cout << "\n*************************************************************\n";



    //请将代码填写在此处

    cout << "\n*************************************************************\n";

    system("pause");

}

/*

 * 此函数用于显示菜单

 */

int menu() {

    int n, w;

    cout << "\n\n\t\t\t欢迎来到职工管理系统\n\n";

    cout << "     * *    * *\t\t1.输入职工信息\n";

    cout << "   *    * *    *\t2.输出职工信息\n";

    cout << "   *     *     *\t3.计算职工实发工资\n";

    cout << "   *           *\t4.计算税金\n";

    cout << "    *         *\t\t5.计算纸币及硬币个数\n";

    cout << "     *       *\t\t6.计算平均基本工资\n";

    cout << "      *     *\t\t7.菜单\n";

    cout << "       *   * \t\t8.退出\n";

    cout << "         * \n\n";

    do {

        cout << "请选择:";

       cin >> n; //对照菜单,输入菜单选项,选择你所要执行的功能 

        cout << "\n\n";

        if (n < 1 || n > 8) {//判断你所输入的数字是否在0-8之间,如果是则跳出while循环,到switch语句里选择你所输入的功能分支

            w = 1;

            cout << "无此项功能,请重新选择!\n";

            }//若你输入的数字不在0-8之间,即不在菜单列表所列的功能选项之内,则w=1(用于while循环条件的判定)

            else

            w = 0; //若你输入的数字在0-8之间,即在菜单列表所列的功能选项之内,则w=0( 用于while循环条件的判定)

    } while (w == 1); //do_while语句的逻辑判定表达式,若w=1,则继续执行do循环体,若w=0,则跳出do_while循环执行下一语句

    return n;

}

int caller(int n) {

    int i;

    switch (n) {

        case 1:cout << "1.输入职工信息\t2.返回主菜单\n"; //功能选择的项的输出 

        cout << "请选择:";

        cin >> i; //输入你所要选择的功能 1.输入职工信息 2.返回菜单

        if (i == 1) input(); //若你选择功能1(即输入职工信息),马上调用input()函数,该函数用于实现输入职工信息功能

        else if (i == 2) return n; //若你选择功能2(即返回菜单),返回main()函数,重新调用menu()函数

        else cout << "\n\n输入错误!\n\n"; 

        break;

    case 2:cout << "1.输出职工信息并输出\t2.返回主菜单\n"; //该分支与case1完全雷同,每一条语句参照case1理解即可

        cout << "请选择:";

        cin >> i;

        if (i == 1) output();

        else if (i == 2) return n;

        else cout << "\n\n输入错误!\n\n";

        break;

    case 3:cout << "1.计算职工实发工资\t2.返回菜单\n"; //该分支与case1完全雷同,每一条语句参照case1理解即可

        cout << "请选择:";

        cin >> i;

        if (i == 1) takeHomePay();

        else if (i == 2) return n;

        else cout << "\n\n输入错误!\n\n";

        break;

    case 4:cout << "1.计算税金\t2.返回菜单\n"; //该分支与case1完全雷同,每一条语句参照case1理解即可

        cout << "请选择:";

        cin >> i;

        if (i == 1) calculateTaxes();

        else if (i == 2) return n;

        else cout << "\n\n输入错误!\n\n";

        break;

    case 5:cout << "1.计算纸币和硬币个数\t2.返回菜单\n"; //该分支与case1完全雷同,每一条语句参照case1理解即可

        cout << "请选择:";

        cin >> i;

        if (i == 1) paySalary();

        else if (i == 2) return n;

        else cout << "\n\n输入错误!\n\n";

        break;

    case 6:cout << "1.计算多个职工平均基本工资\t2.返回菜单\n";

        cout << "请选择:";

        cin >> i;

        if (i == 1) avgSalary();

        else if (i == 2) return n;

        else cout << "\n\n输入错误!\n\n";

        break;

    case 7: return n;

    case 8:cout << "\n谢谢使用!再见!\n";

        return 8;

}

return n;

}

int main() {

    int i = 0;

    while(1){

    i = caller(menu());

    if (i == 8)

        break;

    }

    return 0;

}


独特见解