项目练习2

简介: 项目练习2

定义一个或多个类,来描述以下需求:

       定义一个类,来表示某模拟养成游戏中人物:

       每个人物,有呢称、年龄、性别、配偶、朋友,

       支持的活动有:结婚、离婚、交友、断交、询问呢称、询问性别、询问年龄、简介等。


代码如下:

头文件声明代码:

#pragma once
#include <iostream>
#include <Windows.h>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
typedef enum
{
  MAN,//男人
  WOMAN//女人
}gender_t;
class Human
{
public:
  Human();
  Human(const string& name, int age, gender_t gender);
  ~Human();
  string getName();
  int getAge();
  gender_t getGender();
  string description();
  Human* getSpouse();
  vector<Human*> getFriends();
  void marry(Human &other);
  void divorce();
  void addFriends(Human& other);
  void delFriends(const Human &other);
private:
  string name;
  int age;
  gender_t gender;
  Human* spouse;//聚合关系
  vector<Human*> friends;
};

Human.cpp文件代码:

#include "Human.h"
Human::Human()
{
}
Human::Human(const string& name, int age, gender_t gender)
{
  this->name = name;
  this->age = age;
  this->gender = gender;
}
Human::~Human()
{
}
string Human::getName()
{
  return name;
}
int Human::getAge()
{
  return age;
}
gender_t Human::getGender()
{
  return gender;
}
string Human::description()
{
  stringstream des;
  des << "姓名:" << name << "性别:" << (gender == 0 ? "男" : "女") << endl;
  return des.str();
}
Human* Human::getSpouse()
{
  return spouse;
}
vector<Human*> Human::getFriends()
{
  return friends;
}
void Human::marry(Human& other)
{
  if (gender == other.gender)
  {
    return;
  }
  this->spouse = &other;
  other.spouse = this;
}
void Human::divorce()
{
  if (this->spouse == NULL)
  {
    return;
  }
  spouse->spouse = NULL;
  spouse = NULL;
}
void Human::addFriends(Human& other)
{
  friends.push_back(&other);
}
void Human::delFriends(const Human& other)
{
  for (auto it = friends.begin(); it != friends.end();)
  {
    if (*it == &other)
    {
      it = friends.erase(it);
    }
    else
    {
      it++;
    }
  }
}

主函数代码:

#include "Human.h"
Human::Human()
{
}
Human::Human(const string& name, int age, gender_t gender)
{
  this->name = name;
  this->age = age;
  this->gender = gender;
}
Human::~Human()
{
}
string Human::getName()
{
  return name;
}
int Human::getAge()
{
  return age;
}
gender_t Human::getGender()
{
  return gender;
}
string Human::description()
{
  stringstream des;
  des << "姓名:" << name << "性别:" << (gender == 0 ? "男" : "女") << endl;
  return des.str();
}
Human* Human::getSpouse()
{
  return spouse;
}
vector<Human*> Human::getFriends()
{
  return friends;
}
void Human::marry(Human& other)
{
  if (gender == other.gender)
  {
    return;
  }
  this->spouse = &other;
  other.spouse = this;
}
void Human::divorce()
{
  if (this->spouse == NULL)
  {
    return;
  }
  spouse->spouse = NULL;
  spouse = NULL;
}
void Human::addFriends(Human& other)
{
  friends.push_back(&other);
}
void Human::delFriends(const Human& other)
{
  for (auto it = friends.begin(); it != friends.end();)
  {
    if (*it == &other)
    {
      it = friends.erase(it);
    }
    else
    {
      it++;
    }
  }
}
相关文章
|
4月前
|
Java Maven
给项目添加chechstyle
给项目添加chechstyle
48 2
|
7月前
项目章程
项目章程
38 0
项目章程
|
10月前
|
搜索推荐 开发者
关于AskBlog项目存在的问题
关于AskBlog项目存在的问题
54 0
|
10月前
|
C++
项目练习1
项目练习1
|
10月前
|
IDE Java Linux
tbfetcher项目小结
tbfetcher项目小结
52 0
|
Ubuntu 编译器 开发工具
ShiftMediaProject项目介绍
ShiftMediaProject项目介绍
146 0
|
缓存 前端开发 大数据
第一次项目总结
第一次项目总结
|
NoSQL Java 数据库
完成项目的一点思考
在新公司搞一个项目练练手,熟悉流程。到现在大体流程也熟悉了一遍,做东西的时候有点思考。 毕竟自己读书少,大部分时间花在写代码上,如果写代码的时候再不思考,那就和咸鱼没什么区别了。
1051 0
|
测试技术
老蒋开枪项目
1.第一步:搭建大概的程序框架 创建一个老蒋对象 创建一个敌人 创建子弹对象 创建弹夹对象 创建枪的对象 把子弹压到弹夹中 把弹夹装载到枪中 老蒋拿起枪 老蒋开枪杀敌人 2.
938 0
|
敏捷开发 程序员

热门文章

最新文章