一、简介
现如今大学中有越来越多的学生助理,通常也会给予他们一定的资助(money)。本文基于我校某校组织的工作量计算方法提出了一套工作量转换+计算程序,以方便相关同学计算工作量。
二、流程
由负责的学生助理先将每位同学的工作时间统计好,然后输入系统。
1.输入学生姓名;
2.输入工作时间
3.输出当前同学的工作量
4.若输入学生姓名不为“0”返回1.;
5.输入学生姓名为“0”,输入结束;
6.输出包含每位同学的工作量统计。
三、计算原理
double computeworktime(double time)//计算工作量
{
/*第一步,算出金额*/
double money=0;//金额
if(time<18)//初始工作时间不满18小时的情况
{
money=time*8;
}
else//初始工作时间满18小时的情况
{
money=(time-18)+18*8;
}
/*第二步,转化为填入正式表格中的工作量*/
double worktime=0;
if(money<12*12)
{
worktime=money/12.0;
}
else
{
money=money-12*12;
worktime=12+money/2.0;
}
return worktime;
}
第一步:算出一个“金额”
前18小时,每小时8块钱(暂以此作单位,但不是实际单位),超过18小时的部分按每小时1块。这样就会算出一个值,我们称为“金额”;
第二步:将第一步的金额转化为工作量。
对于刚才的金额,对于前12小时,每小时12块,超过的部分,每小时2块。
而工作量的计算则是用刚才的金额,如果低于12*12=144,则直接除12得出工作量;如果高于144,则金额先减去144,这样就已经有12小时的工作量了,随后加上(超过的金额除2),这样就可以算出工作量了。
附详细计算过程:
四、代码
#include<iostream>
#include<string>
#include<string.h>
#include <stdlib.h>
using namespace std;
int sum=0;
struct student{//学生信息
string name;//学生姓名
double time;//初始工作时间
double worktime;//工作量
} stu[100];//容量为100
/*工作量转换*/
double computeworktime(double time)//计算工作量
{
/*第一步,算出金额*/
double money=0;//金额
if(time<18)//初始工作时间不满18小时的情况
{
money=time*8;
}
else//初始工作时间满18小时的情况
{
money=(time-18)+18*8;
}
/*第二步,转化为填入正式表格中的工作量*/
double worktime=0;
if(money<12*12)
{
worktime=money/12.0;
}
else
{
money=money-12*12;
worktime=12+money/2.0;
}
return worktime;
}
double inputtime(string name)//输入工作时间
{
double time=0;
cout<<"请输入"<<name<<"同学的工作时间:";
cin>>time;
return time;
}
void input()//输入学生的信息
{
int i=1;
cout<<"请输入第"<<i<<"个同学的姓名:";
/*循环输入学生初始工作时间*/
while(cin>>stu[i].name&&stu[i].name!="0")//输入为“0”时,结束
{
/*当输入数字或英文字母时,提示重新输入*/
if((stu[i].name<="9"&&stu[i].name>="0")||(stu[i].name>="a"&&stu[i].name<="z"))
{
cout<<"输入错误!请重新输入姓名"<<endl<<endl;
input();
}
else
{
stu[i].time=inputtime(stu[i].name);//输入工作时间
if(stu[i].time<0)//提示输入正确时间
{
cout<<"请输入正确的工作时间!"<<endl;
stu[i].time=inputtime(stu[i].name);
}
stu[i].worktime=computeworktime(stu[i].time);//将工作时间转换为工作量
cout<<stu[i].name<<"同学的工作量为:"<<stu[i].worktime<<endl<<endl;//输出这名同学的工作量
}
i++;
cout<<"请输入第"<<i<<"个同学的姓名:";
}
sum=i;
}
void output()//输出所有同学的信息
{
cout<<"———————————————输入结束———————————————"<<endl<<endl;
cout<<"*****************工作量统计*****************"<<endl;
cout<<" 姓名 "<<" 工作量 "<<endl;
for(int j=1;j<sum;j++)
{
if(((stu[j].name).length())/2==2)
cout<<" "<<stu[j].name<<" "<<stu[j].worktime<<" "<<endl;
else if(((stu[j].name).length())/2==4)
cout<<" "<<stu[j].name<<" "<<stu[j].worktime<<" "<<endl;
else
cout<<" "<<stu[j].name<<" "<<stu[j].worktime<<" "<<endl;
}
cout<<"********************************************"<<endl;
cout<<"————————————感谢使用!按任意键退出———————————"<<endl;
}
void start()
{
cout<<" 欢迎使用工作量计算工具!"<<endl;
cout<<"*****************************使用说明*******************************"<<endl;
cout<<"** 输入:只需按要求输入学生姓名与所统计的工作时间即可 **"<<endl;
cout<<"** 输出:最终会输出工作量总表 **"<<endl;
cout<<"** 退出:当输入姓名为“0”时即可退出 **"<<endl;
cout<<"** 问题反馈:qiz1less@qq.com **"<<endl;
cout<<"********************************************************************"<<endl<<endl;
cout<<"———————————————开始输入———————————————"<<endl;
}
int main()
{
start();
input();
output();
system("pause");
return 0;
}
感谢观看,欢迎指正。