鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 未灭时间

[已解决]问一个用visual studio 2017实现模块化编程的问题

[复制链接]
发表于 2018-2-24 16:59:24 | 显示全部楼层
sakuya.h
#pragma once
#include<iostream>
#include<string>
#include<fstream>

class Human
{
public:
        std::string name;
        std::int32_t age;
        std::float_t height;//因为不能用普通的float ,又查不到这几个float的用法,极可能出错。
        std::float_t welght;//体重

        void interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght);
};
class FileOperate
{
public:
        FileOperate();
        ~FileOperate();
        int project();
        void OpenWriteIn();//打开可写入
        void OpenReadable();//打开可读

};
class Housemaid:public Human, public FileOperate//女仆类 继承了Human
{
public:
        int order();
        void sweep();
        void CookDinner();


};
//void FileOperate::OpenWriteIn()
//{
//
//        std::string filename;
//
//        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
//        std::cin >> filename;
//
//
//        std::ofstream out(filename, std::ios::app);
//        if (!out)
//        {
//                std::cout << "文件打开失败" << std::endl;
//        }
//        std::cout << "请输入您要写入的内容";
//        std::string content;//内容变量
//        std::cin >> content;
//        out << content;
//        out.close();
//        std::cout << "写入成功";
//        std::cin.ignore(100, '\n');
//        std::cout << "\n输入任何字符结束程序" << std::endl;
//        std::cin.get();
//}
//void FileOperate::OpenReadable()
//{
//        std::string filename;
//        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
//        std::cin >> filename;
//        std::ifstream in(filename, std::ios::in);
//        if (!in)
//        {
//                std::cout << "文件打开失败" << std::endl;
//        }
//        std::string content;//内容变量
//        while (in >> content)
//        {
//                std::cout << content;
//        }
//        in.close();
//        std::cin.ignore(100, '\n');
//        std::cout << "\n输入任何字符结束程序" << std::endl;
//        std::cin.get();
//
//
//}
//FileOperate::FileOperate()
//{
//}
//
//FileOperate::~FileOperate()
//{
//}

//int FileOperate::project()
//{
//        int i;//i为获取的判断变量
//        std::cout << "1打开项目\n2打开或者新建文件" << "(格式:d:\\\\文件名\\文件名.后缀)";
//        std::cin >> i;
//        if (i == 1)
//        {
//                std::string filename;
//
//                //std::cin >> filename;
//                std::ofstream out("d:\\项目\\女仆程序\\工作日志.txt", std::ios::app);
//                //std::ofstream out(filename, std::ios::app);
//
//                if (!out)
//                {
//                        std::cout << "文件打开失败" << std::endl;
//                }
//                std::cout << "请输入您的日志\n";
//                std::string content;//内容变量
//                std::cin >> content;
//                out << "\n" << content;
//                out.close();
//                std::cout << "输入成功";
//                std::cin.ignore(100, '\n');
//                std::cout << "输入任何字符结束程序" << std::endl;
//                std::cin.get();
//        }
//        else if (i == 2)
//        {
//                std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
//                std::cin >> i;
//                switch (i)
//                {
//                case 1:
//                        OpenReadable();
//                        break;
//                case 2:
//                        OpenWriteIn();
//                        break;
//                default:
//                        std::cout << "主人,您输入的不是一个有效的数字";
//                        break;
//                }
//
//        }
//        else
//        {
//                std::cout << "主人,您输入的不是一个有效的数字";
//        }
//        return 0;
//}

//void Human::interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght)
//{
//        std::cout << "主人\n我的名字是" << Name << "\n我的年龄是" << Age << "岁\n我的身高是" << Height << "厘米\n我的体重是" << Welght << "斤\n" << std::endl;
//}
//
//void Housemaid::sweep()
//{
//        std::cout << "即将开始打扫\n" << std::endl;
//}
//void Housemaid::CookDinner()
//{
//        std::cout << "即将开始做饭\n" << std::endl;
//}
//int Housemaid::order()
//{
//        int i;//i为接收到的指令存储的变量
//        std::cout << "主人,请问您需要我做些什么\n 1.打扫\n 2.做饭\n 3.打开文件" << std::endl;
//        std::cin >> i;
//
//
//        switch (i)
//        {
//        case 1:sweep();
//                return 0;
//                break;
//        case 2:CookDinner();
//                return 0;
//                break;
//        case 3:project();
//                return 0;
//                break;
//        default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
//                order();
//                break;
//        }
//
//}


FileOperate.cpp
#include "sakuya.h"
#include<iostream>
#include<string>
#include<fstream>
FileOperate::FileOperate()
{
}

FileOperate::~FileOperate()
{
}
void FileOperate::OpenWriteIn()
{

        std::string filename;

        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
        std::cin >> filename;


        std::ofstream out(filename, std::ios::app);
        if(!out)
        {
                std::cout << "文件打开失败" << std::endl;
        }
        std::cout << "请输入您要写入的内容";
        std::string content;//内容变量
        std::cin >> content;
        out << content;
        out.close();
        std::cout << "写入成功";
        std::cin.ignore(100, '\n');
        std::cout << "\n输入任何字符结束程序" << std::endl;
        std::cin.get();
}
void FileOperate::OpenReadable()
{
        std::string filename;
        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
        std::cin >> filename;
        std::ifstream in(filename, std::ios::in);
        if(!in)
        {
                std::cout << "文件打开失败" << std::endl;
        }
        std::string content;//内容变量
        while(in >> content)
        {
                std::cout << content;
        }
        in.close();
        std::cin.ignore(100, '\n');
        std::cout << "\n输入任何字符结束程序" << std::endl;
        std::cin.get();


}
int FileOperate::project()
{
        int i;//i为获取的判断变量
        std::cout << "1打开项目\n2打开或者新建文件" << "(格式:d:\\\\文件名\\文件名.后缀)";
        std::cin >> i;
        if(i == 1)
        {
                std::string filename;

                //std::cin >> filename;
                std::ofstream out("d:\\项目\\女仆程序\\工作日志.txt", std::ios::app);
                //std::ofstream out(filename, std::ios::app);

                if(!out)
                {
                        std::cout << "文件打开失败" << std::endl;
                }
                std::cout << "请输入您的日志\n";
                std::string content;//内容变量
                std::cin >> content;
                out << "\n" << content;
                out.close();
                std::cout << "输入成功";
                std::cin.ignore(100, '\n');
                std::cout << "输入任何字符结束程序" << std::endl;
                std::cin.get();
        }
        else if(i == 2)
        {
                std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
                std::cin >> i;
                switch(i)
                {
                case 1:
                        OpenReadable();
                        break;
                case 2:
                        OpenWriteIn();
                        break;
                default:
                        std::cout << "主人,您输入的不是一个有效的数字";
                        break;
                }

        }
        else
        {
                std::cout << "主人,您输入的不是一个有效的数字";
        }
        return 0;
}

Housemaid.cpp
#include<iostream>
#include<string>
#include<fstream>

#include "sakuya.h"

void Housemaid::sweep()
{
        std::cout << "即将开始打扫\n" << std::endl;
}
void Housemaid::CookDinner()
{
        std::cout << "即将开始做饭\n" << std::endl;
}
int Housemaid::order()
{
        int i;//i为接收到的指令存储的变量
        std::cout << "主人,请问您需要我做些什么\n 1.打扫\n 2.做饭\n 3.打开文件" << std::endl;
        std::cin >> i;


        switch(i)
        {
        case 1:sweep();
                return 0;
                break;
        case 2:CookDinner();
                return 0;
                break;
        case 3:project();
                return 0;
                break;
        default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
                order();
                break;
        }
        return 0;
}

Human.cpp
#include "sakuya.h"
#include<iostream>
#include<string>
#include<fstream>
void Human::interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght)
{
        std::cout << "主人\n我的名字是" << Name << "\n我的年龄是" << Age << "岁\n我的身高是" << Height << "厘米\n我的体重是" << Welght << "斤\n" << std::endl;
}

main.cpp
#include "sakuya.h"

int main(void)
{
        Housemaid sakuya;
        sakuya.name = "咲夜";
        sakuya.height = 170;
        sakuya.age = 17;
        sakuya.welght = 80;
        sakuya.interact(sakuya.name, sakuya.age, sakuya.height, sakuya.welght);
        sakuya.order();

        std::cin.ignore(100, '\n');
        std::cout << "输入任何字符结束程序" << std::endl;
        std::cin.get();
        return 0;

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 17:00:38 | 显示全部楼层
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-28 16:43:42 | 显示全部楼层
人造人 发表于 2018-2-24 16:57
好吧,没有其他问题,就真的只是 你把main函数写在了 头文件中

太感谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-28 16:47:28 | 显示全部楼层
人造人 发表于 2018-2-24 16:57
好吧,没有其他问题,就真的只是 你把main函数写在了 头文件中

还有一个小问题,就是我现在的代码分成了多个cpp文件,如何把他们统一保存起来,还是要一个一个保存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 17:22:55 | 显示全部楼层
未灭时间 发表于 2018-2-28 16:47
还有一个小问题,就是我现在的代码分成了多个cpp文件,如何把他们统一保存起来,还是要一个一个保存

"统一保存" 指的是什么?
不明白你想问什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-28 19:44:11 | 显示全部楼层
人造人 发表于 2018-2-28 17:22
"统一保存" 指的是什么?
不明白你想问什么

就是我直接另存为的话,只会保存到一个cpp文件,以前是所有代码放在一起的所以没关系,现在要一个一个保存吗,还是可以一键全部保存到一个文件夹里,打开的时候也可以一键全部打开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 19:51:55 | 显示全部楼层
未灭时间 发表于 2018-2-28 19:44
就是我直接另存为的话,只会保存到一个cpp文件,以前是所有代码放在一起的所以没关系,现在要一个一个保 ...

在vs中直接 Ctrl+S 保存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-28 19:53:09 | 显示全部楼层
未灭时间 发表于 2018-2-28 19:44
就是我直接另存为的话,只会保存到一个cpp文件,以前是所有代码放在一起的所以没关系,现在要一个一个保 ...


打开的时候
在vs中点
无标题.png

或者双击
无标题1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-28 22:03:49 | 显示全部楼层
人造人 发表于 2018-2-28 19:53
打开的时候
在vs中点

好的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表