鱼C论坛

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

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

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

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

  12.         void interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght);
  13. };
  14. class FileOperate
  15. {
  16. public:
  17.         FileOperate();
  18.         ~FileOperate();
  19.         int project();
  20.         void OpenWriteIn();//打开可写入
  21.         void OpenReadable();//打开可读

  22. };
  23. class Housemaid:public Human, public FileOperate//女仆类 继承了Human
  24. {
  25. public:
  26.         int order();
  27.         void sweep();
  28.         void CookDinner();


  29. };
  30. //void FileOperate::OpenWriteIn()
  31. //{
  32. //
  33. //        std::string filename;
  34. //
  35. //        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
  36. //        std::cin >> filename;
  37. //
  38. //
  39. //        std::ofstream out(filename, std::ios::app);
  40. //        if (!out)
  41. //        {
  42. //                std::cout << "文件打开失败" << std::endl;
  43. //        }
  44. //        std::cout << "请输入您要写入的内容";
  45. //        std::string content;//内容变量
  46. //        std::cin >> content;
  47. //        out << content;
  48. //        out.close();
  49. //        std::cout << "写入成功";
  50. //        std::cin.ignore(100, '\n');
  51. //        std::cout << "\n输入任何字符结束程序" << std::endl;
  52. //        std::cin.get();
  53. //}
  54. //void FileOperate::OpenReadable()
  55. //{
  56. //        std::string filename;
  57. //        std::cout << "主人,请输入您要打开的文件地址" << std::endl;
  58. //        std::cin >> filename;
  59. //        std::ifstream in(filename, std::ios::in);
  60. //        if (!in)
  61. //        {
  62. //                std::cout << "文件打开失败" << std::endl;
  63. //        }
  64. //        std::string content;//内容变量
  65. //        while (in >> content)
  66. //        {
  67. //                std::cout << content;
  68. //        }
  69. //        in.close();
  70. //        std::cin.ignore(100, '\n');
  71. //        std::cout << "\n输入任何字符结束程序" << std::endl;
  72. //        std::cin.get();
  73. //
  74. //
  75. //}
  76. //FileOperate::FileOperate()
  77. //{
  78. //}
  79. //
  80. //FileOperate::~FileOperate()
  81. //{
  82. //}

  83. //int FileOperate::project()
  84. //{
  85. //        int i;//i为获取的判断变量
  86. //        std::cout << "1打开项目\n2打开或者新建文件" << "(格式:d:\\\\文件名\\文件名.后缀)";
  87. //        std::cin >> i;
  88. //        if (i == 1)
  89. //        {
  90. //                std::string filename;
  91. //
  92. //                //std::cin >> filename;
  93. //                std::ofstream out("d:\\项目\\女仆程序\\工作日志.txt", std::ios::app);
  94. //                //std::ofstream out(filename, std::ios::app);
  95. //
  96. //                if (!out)
  97. //                {
  98. //                        std::cout << "文件打开失败" << std::endl;
  99. //                }
  100. //                std::cout << "请输入您的日志\n";
  101. //                std::string content;//内容变量
  102. //                std::cin >> content;
  103. //                out << "\n" << content;
  104. //                out.close();
  105. //                std::cout << "输入成功";
  106. //                std::cin.ignore(100, '\n');
  107. //                std::cout << "输入任何字符结束程序" << std::endl;
  108. //                std::cin.get();
  109. //        }
  110. //        else if (i == 2)
  111. //        {
  112. //                std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
  113. //                std::cin >> i;
  114. //                switch (i)
  115. //                {
  116. //                case 1:
  117. //                        OpenReadable();
  118. //                        break;
  119. //                case 2:
  120. //                        OpenWriteIn();
  121. //                        break;
  122. //                default:
  123. //                        std::cout << "主人,您输入的不是一个有效的数字";
  124. //                        break;
  125. //                }
  126. //
  127. //        }
  128. //        else
  129. //        {
  130. //                std::cout << "主人,您输入的不是一个有效的数字";
  131. //        }
  132. //        return 0;
  133. //}

  134. //void Human::interact(std::string Name, std::int32_t Age, std::float_t Height, std::float_t Welght)
  135. //{
  136. //        std::cout << "主人\n我的名字是" << Name << "\n我的年龄是" << Age << "岁\n我的身高是" << Height << "厘米\n我的体重是" << Welght << "斤\n" << std::endl;
  137. //}
  138. //
  139. //void Housemaid::sweep()
  140. //{
  141. //        std::cout << "即将开始打扫\n" << std::endl;
  142. //}
  143. //void Housemaid::CookDinner()
  144. //{
  145. //        std::cout << "即将开始做饭\n" << std::endl;
  146. //}
  147. //int Housemaid::order()
  148. //{
  149. //        int i;//i为接收到的指令存储的变量
  150. //        std::cout << "主人,请问您需要我做些什么\n 1.打扫\n 2.做饭\n 3.打开文件" << std::endl;
  151. //        std::cin >> i;
  152. //
  153. //
  154. //        switch (i)
  155. //        {
  156. //        case 1:sweep();
  157. //                return 0;
  158. //                break;
  159. //        case 2:CookDinner();
  160. //                return 0;
  161. //                break;
  162. //        case 3:project();
  163. //                return 0;
  164. //                break;
  165. //        default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
  166. //                order();
  167. //                break;
  168. //        }
  169. //
  170. //}
复制代码



FileOperate.cpp

  1. #include "sakuya.h"
  2. #include<iostream>
  3. #include<string>
  4. #include<fstream>
  5. FileOperate::FileOperate()
  6. {
  7. }

  8. FileOperate::~FileOperate()
  9. {
  10. }
  11. void FileOperate::OpenWriteIn()
  12. {

  13.         std::string filename;

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


  16.         std::ofstream out(filename, std::ios::app);
  17.         if(!out)
  18.         {
  19.                 std::cout << "文件打开失败" << std::endl;
  20.         }
  21.         std::cout << "请输入您要写入的内容";
  22.         std::string content;//内容变量
  23.         std::cin >> content;
  24.         out << content;
  25.         out.close();
  26.         std::cout << "写入成功";
  27.         std::cin.ignore(100, '\n');
  28.         std::cout << "\n输入任何字符结束程序" << std::endl;
  29.         std::cin.get();
  30. }
  31. void FileOperate::OpenReadable()
  32. {
  33.         std::string filename;
  34.         std::cout << "主人,请输入您要打开的文件地址" << std::endl;
  35.         std::cin >> filename;
  36.         std::ifstream in(filename, std::ios::in);
  37.         if(!in)
  38.         {
  39.                 std::cout << "文件打开失败" << std::endl;
  40.         }
  41.         std::string content;//内容变量
  42.         while(in >> content)
  43.         {
  44.                 std::cout << content;
  45.         }
  46.         in.close();
  47.         std::cin.ignore(100, '\n');
  48.         std::cout << "\n输入任何字符结束程序" << std::endl;
  49.         std::cin.get();


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

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

  62.                 if(!out)
  63.                 {
  64.                         std::cout << "文件打开失败" << std::endl;
  65.                 }
  66.                 std::cout << "请输入您的日志\n";
  67.                 std::string content;//内容变量
  68.                 std::cin >> content;
  69.                 out << "\n" << content;
  70.                 out.close();
  71.                 std::cout << "输入成功";
  72.                 std::cin.ignore(100, '\n');
  73.                 std::cout << "输入任何字符结束程序" << std::endl;
  74.                 std::cin.get();
  75.         }
  76.         else if(i == 2)
  77.         {
  78.                 std::cout << "1打开一个可读取的文件\n2打开或者新建一个可写入的文件\n";
  79.                 std::cin >> i;
  80.                 switch(i)
  81.                 {
  82.                 case 1:
  83.                         OpenReadable();
  84.                         break;
  85.                 case 2:
  86.                         OpenWriteIn();
  87.                         break;
  88.                 default:
  89.                         std::cout << "主人,您输入的不是一个有效的数字";
  90.                         break;
  91.                 }

  92.         }
  93.         else
  94.         {
  95.                 std::cout << "主人,您输入的不是一个有效的数字";
  96.         }
  97.         return 0;
  98. }
复制代码


Housemaid.cpp
  1. #include<iostream>
  2. #include<string>
  3. #include<fstream>

  4. #include "sakuya.h"

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


  18.         switch(i)
  19.         {
  20.         case 1:sweep();
  21.                 return 0;
  22.                 break;
  23.         case 2:CookDinner();
  24.                 return 0;
  25.                 break;
  26.         case 3:project();
  27.                 return 0;
  28.                 break;
  29.         default:std::cout << "主人,没有这个命令哦,请输入1—2" << std::endl;
  30.                 order();
  31.                 break;
  32.         }
  33.         return 0;
  34. }
复制代码


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


main.cpp
  1. #include "sakuya.h"

  2. int main(void)
  3. {
  4.         Housemaid sakuya;
  5.         sakuya.name = "咲夜";
  6.         sakuya.height = 170;
  7.         sakuya.age = 17;
  8.         sakuya.welght = 80;
  9.         sakuya.interact(sakuya.name, sakuya.age, sakuya.height, sakuya.welght);
  10.         sakuya.order();

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

  15. }

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-24 17:00:38 | 显示全部楼层
无标题.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

太感谢了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

还有一个小问题,就是我现在的代码分成了多个cpp文件,如何把他们统一保存起来,还是要一个一个保存
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

"统一保存" 指的是什么?
不明白你想问什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

就是我直接另存为的话,只会保存到一个cpp文件,以前是所有代码放在一起的所以没关系,现在要一个一个保存吗,还是可以一键全部保存到一个文件夹里,打开的时候也可以一键全部打开
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

在vs中直接 Ctrl+S 保存
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

或者双击
无标题1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 00:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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