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;
}

 

posted @ 2018-12-27 22:00  心碎人俱乐部  阅读(26)  评论(0)    收藏  举报