C++ | 课程设计 |健身日志
这段代码只是第一版,以后会逐渐迭代.直至能在安卓上运行为止.
我懒得分.h和main.cpp了.
#include <iostream>
#include<string>
#include<fstream>
using namespace std;
int count_Train = 0;
int count_Data = 0;
int count_Run = 0;
const int MAXTrain = 1000;
const int MAXData = 100;
const int MAXRun = 100;
bool flag = true;
class Base
{
public:
virtual void read() = 0;
virtual void add() = 0;
virtual void del(int) = 0;
virtual void fix(int) = 0;
virtual void save() = 0;
};
//-------------------------------------------------------------------
class Train :public Base
{
public:
string name;
int rep;//次数
int set;//组数
double weight;//哑铃重量
double Vol() { return rep * set * weight; }
void read();
void add();
void del(int);
void fix(int);
void save();
};
Train t1[MAXTrain];
void Train::read()
{
fstream trainfile("锻炼日志.txt", ios::in | ios::out);
while (!trainfile.eof())
{
trainfile >> t1[count_Train].name >> t1[count_Train].weight>> t1[count_Train].set>> t1[count_Train].rep;
count_Train++;
}//while语句对于for语句的优点在于不必考虑具体要循环几次。
trainfile.close();
}
void Train::add()//存入对象数组
{
t1[count_Train - 1].name = name;
t1[count_Train - 1].weight = weight;
t1[count_Train - 1].set = set;
t1[count_Train - 1].rep = rep;
}
void Train::del(int index)
{
for (int i = index; i <= count_Train - 1; i++)
{
t1[i - 1].name= t1[i].name;
t1[i - 1].weight= t1[i].weight;
t1[i - 1].set = t1[i].set;
t1[i - 1].rep = t1[i].rep;
}
count_Train--;
}
void Train::fix(int index)
{
t1[index - 1].name = name;
t1[index - 1].weight = weight;
t1[index - 1].set = set;
t1[index - 1].rep = rep;
}
void Train::save()
{
ofstream trainfile;
if (flag == true)
trainfile.open("锻炼日志.txt", ios::app);
else
trainfile.open("锻炼日志.txt");
for (int i = 0; i <= count_Train - 1; i++)
trainfile << i+1<<". "<<t1[i].name << " " << t1[i].weight<<"KG " <<t1[i].set<<"组 "<<t1[i].rep
<<"个 "<< endl;
trainfile.close();
}
//-------------------------------------------------------------------
class Data: public Base
{
public:
void read();
void add();
void del(int);
void fix(int);
void save();
double height;//身高
double wt;//体重
string time;
};
Data d1[MAXData];
void Data::read()
{
fstream datafile("身体数据.txt", ios::in | ios::out);
while (!datafile.eof())
{
datafile >> d1[count_Data].height >> d1[count_Data].wt >> d1[count_Data].time;
count_Data++;
}
datafile.close();
}
void Data::add()
{
d1[count_Data - 1].height = height;
d1[count_Data - 1].wt = wt;
d1[count_Data - 1].time = time;
}
void Data::del(int index)
{
for (int i = index; i <= count_Data - 1; i++)
{
d1[i - 1].height = d1[i].height;
d1[i - 1].wt = d1[i].wt;
d1[i - 1].time = d1[i].time;
}
count_Train--;
}
void Data::fix(int index)
{
d1[index - 1].height = height;
d1[index - 1].wt = wt;
d1[index - 1].time = time;
}
void Data::save()
{
ofstream datafile;
if (flag == true)
datafile.open("锻炼日志.txt", ios::app);
else
datafile.open("锻炼日志.txt");
for (int i = 0; i <= count_Train - 1; i++)
datafile << i + 1 << ". 身高:" << d1[i].height << " 体重:" << d1[i].wt << "KG 时间:" << d1[i].time << endl;
datafile.close();
}
//---------------------------------------------------------
Base *p = NULL;
char out;
void Mytrain()
{
{
system("cls");
int choice=1, i = 0;
bool quit = false;
while (1)
{
cout << "----------我的锻炼日志----------" << endl;
cout << " 1. 录入锻炼记录" << endl;
cout << " 2. 删除锻炼记录" << endl;
cout << " 3. 修改锻炼记录" << endl;
cout << " 4. 查询锻炼记录" << endl;
cout << " 0. 退出 " << endl;
cout << "--------------------------------------------" << endl;
cout << "请输入所要操作的编号:";
cin >> choice;
switch (choice)
{
case 1:
{
Train t2;
p = &t2;
cout << "请依次输入训练动作、重量、组数和次数";
cin >> t2.name >> t2.weight>>t2.set>>t2.rep;
p->add();
break;
}
case 2:
{
Train t3;
p = &t3;
int index;
flag = false;
for (int i = 0; i < count_Train; i++)
cout << i + 1 << "." << t1[i].name << ": " << t1[i].weight <<"KG "
<<t1[i].rep<<"组 "<<t1[i].rep<<"次" <<endl;
cout << "请选择要删除的日志序号"<<endl;
cin >> index;
p->del(index);
break;
}
case 3:
{
Train t4;
p = &t4;
int index;
flag = false;
for (int i = 0; i < count_Train; i++)
cout << i + 1 << "." << t1[i].name << " " << t1[i].weight << endl;
cout << "请选择日志序号"<<endl;
cin >> index;
cout << "依次输入要修改的日志数据(名称、重量、组数、次数):";
cin >> t4.name >> t4.weight>>t4.set>>t4.rep;
p->fix(index);
break;
}
case 0:quit = true; break;
default:cout << "请重新输入。" << endl; break;
}
if (quit == true)
break;
cout << "是否保存你的锻炼日志?(y/n)"<<endl;
cin >> out;
if (out == 'y'||out=='Y')
p->save();
}
system("cls");
return;
}
}
void Mydata()
{
{
system("cls");
int choice = 1, i = 0;
bool quit = false;
while (1)
{
cout << "----------我的锻炼日志----------" << endl;
cout << " 1. 录入身体数据" << endl;
cout << " 2. 删除身体数据" << endl;
cout << " 3. 修改身体数据" << endl;
cout << " 4. 查询身体数据" << endl;
cout << " 0. 退出 " << endl;
cout << "--------------------------------------------" << endl;
cout << "请输入所要操作的编号:";
cin >> choice;
switch (choice)
{
case 1:
{
Data d2;
p = &d2;
cout << "请依次输入训练动作、重量、组数和次数";
cin >> d2.height >> d2.wt >> d2.time;
p->add();
break;
}
case 2:
{
Data d3;
p = &d3;
int index;
flag = false;
for (int i = 0; i < count_Train; i++)
cout << i + 1 << "." << d1[i].height << "CM " << d1[i].wt << "KG 时间:"
<< d1[i].time<< endl;
cout << "请选择要删除的数据序号" << endl;
cin >> index;
p->del(index);
break;
}
case 3:
{
Data d4;
p = &d4;
int index;
flag = false;
for (int i = 0; i < count_Train; i++)
cout << i + 1 << "." << d1[i].height << " " << d1[i].wt << endl;
cout << "请选择数据序号" << endl;
cin >> index;
cout << "依次输入要修改的身体数据(身高、体重、日期):";
cin >> d4.height >> d4.wt >> d4.time;
p->fix(index);
break;
}
case 0:quit = true; break;
default:cout << "请重新输入。" << endl; break;
}
if (quit == true)
break;
cout << "是否保存你的身体数据?(y/n)" << endl;
cin >> out;
if (out == 'y' || out == 'Y')
p->save();
}
system("cls");
return;
}
}
int BMI()
{
double sg, tz;
cout << "请分别输入身高(cm)、体重(kg)"<<endl;
cin >> sg >> tz; cout << "您的BMI值为:"<< 10000*tz / (sg*sg)<<endl;
return 0;
}
int main()
{
Train tr;
tr.read();
Data da;
da.read();
int choice = 1;
while (1)
{
cout << "----------欢迎使用健身日志管理系统----------" << endl;
cout << " 1. 我的锻炼日志" << endl;
cout << " 2. 我的个人数据" << endl;
cout << " 3. BMI计算器" << endl;
cout << " ————设计 by 1720541班 石家俊" << endl;
cout << "--------------------------------------------" << endl;
cout << "选择序号,进行操作:";
cin >> choice;
switch (choice)
{
case 1: Mytrain(); break;
case 2: Mydata(); break;
case 3:BMI(); break;
default:cout << "请重新输入!" << endl; break;
}
}
system("pause");
return 0;
}

浙公网安备 33010602011771号