<?xml version="1.0" encoding="iso-8859-1" ?>
<html>
<head>
<title>Body Mass Index (BMI)</title>
</head>
<body>
<form method="POST" action="/bmi">
Name<br/><input type="text" name="name"/><br/>
Mass(KG)<br/><input type="text" name="mass"/><br/>
Height(m)<br/><input type="text" name="height"/><br/><br/>
<input type="submit" name="submit" value="Calculate"/>
</form>
</body>
</html>
<?xml version="1.0" encoding="iso-8859-1" ?>
<html>
<head>
<title>Body Mass Index (BMI) - Results</title>
</head>
<body>
Name: <out value="#{user.getName}"/><br/>
Mass(KG): <out value="#{user.getMass}"/><br/>
Height(m): <out value="#{user.getHeight}"/><br/>
BMI: <out value="#{user.getBmi}"/><br/>
Category: <out value="#{user.getCategory}"/>
</body>
</html>
#ifndef USER_H
#define USER_H
#include <QObject>
#include <QString>
class User : public QObject
{
Q_OBJECT
private:
QString name;
QString category;
double mass = 0;
double height = 0;
double bmi = 0;
public:
explicit User(QObject *parent = 0) : QObject(parent)
{
}
public slots:
QString getName() const
{
return name;
}
void setName(const QString &value)
{
name = value;
}
QString getCategory() const
{
return category;
}
double getMass() const
{
return mass;
}
void setMass(double value)
{
mass = value;
}
double getHeight() const
{
return height;
}
void setHeight(double value)
{
height = value;
}
double getBmi()
{
bmi = height != 0 ? mass / (height * height) : 0;
if(bmi <= 15)
{
category = "Very severely underweight";
}
else if(bmi > 15 && bmi <= 16)
{
category = "Severely underweight";
}
else if(bmi > 16 && bmi <= 18.5)
{
category = "Underweight";
}
else if(bmi > 18.5 && bmi <= 25)
{
category = "Normal (healthy weight)";
}
else if(bmi > 25 && bmi <= 30)
{
category = "Overweight";
}
else if(bmi > 30 && bmi <= 35)
{
category = "Obese Class I (Moderately obese)";
}
else if(bmi > 35 && bmi <= 40)
{
category = "Obese Class II (Severely obese)";
}
else
{
category = "Obese Class III (Very severely obese)";
}
return bmi;
}
};
#endif // USER_H
#ifndef BMICONTROLLER_H
#define BMICONTROLLER_H
#include "cwf/controller.h"
#include "cwf/request.h"
#include "cwf/response.h"
#include "entities/user.h"
class BmiController : public CWF::Controller
{
public:
void doGet(CWF::Request &request, CWF::Response &response) override
{
request.getRequestDispatcher("/pages/bmi").forward(request, response);
}
void doPost(CWF::Request &request, CWF::Response &response) override
{
User user;
request.fillQObject(&user);
request.addAttribute("user", &user);
request.getRequestDispatcher("/pages/bmiresults.view").forward(request, response);
}
};
#endif // BMICONTROLLER_H
#include <QCoreApplication>
#include <cwf/cppwebapplication.h>
#include <controllers/bmicontroller.h>
int main(int argc, char *argv[])
{
CWF::CppWebApplication server(argc, argv, "PATH_TO_SERVER_FOLDER");
server.addUrlController<BmiController>("/bmi");
return server.start();
}