这个作业属于哪个课程 | 数学与计算机科学学院2020年面向对象程序设计. |
---|---|
这个作业要求在哪里 | 面向对象程序设计寒假作业2 |
这个作业的目标 | 1.继续完成编程题 2.新建一个github仓库,并把作业推送到该仓库 3.发布博客 |
其他参考文献 | https://www.cnblogs.com/zouzou-1/p/12253815.html windows下如何将创建bat批处理脚本? 环境变量如何修改 |
实践题
编程题(请使用C语言或者C++完成以下题目):
继续完成作业一的编程题。
1.优化架构,一般要求每个函数长度不超过15行。
2.优化规范,尤其是命名规范。
3.制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。
编程题要求:
1.读题,提取出题目的要求。
2.分解需求,把需求分解为几个你觉得不太相关的模块。
3.思考每个模块怎么写,可以从简单的模块开始写。
4.对于不会的问题进行查阅资料。
5.对于每一个模块设计测试用例。
6.详细记录下以上每一步,并写在博客中。
7.不要求完全做出来,但要求记录详细。
8.建议博客长度不少于1000字(不包含代码)。
示例脚本:
gcc 1.cpp -o lang.exe
进行单元测试,即测试每一个函数,并制作一个测试脚本,运行该脚本可以进行测试,并显示测试结果。
示例脚本:
gcc 1.cpp test.cpp -o test.exe
test
-在作业一编程题的基础上添加以下功能:
-通过命令行读取一个文件,然后运行这个文件。如我的程序叫lang,lang 1.txt代表我要运行1.txt这个文本中的代码。
-假设我的1.txt
内容如下:
整数 钱包 等于 零
钱包 增加 四
钱包 减少 三
看看 钱包
输入lang 1.txt
后,命令行输出一
。
因为要把函数长度缩减到十五行以内,故借鉴了其他同学的代码
为了规范命名,我搜索了一下,大致如下:
1.变量全部小写,单词之间可以加_,也可以不加,不要大小写混合
全局变量可以加前缀g_以与局部变量区分
2.函数分为普通函数和存取函数
普通函数以大写字母开头,每个单词首字母大写,无下划线
存取函数:要求与变量名匹配(TODO)
3.类
包含头文件的顺序:C系统文件,C++系统文件,第三方头文件
举个例子,写OpenCV工程的时候,先写 这些C++系统头文件,然后再包含(现在还看不懂是什么东西)
所以,我的代码中包含了4个函数,分布用于将汉字转化为数字进行计算,判断加或减的操作,将数字转化为汉字输出,主函数用于输入输出及错误判断:
int Transform(string s)
void Operate(string a,string b)
void Output()
int main()
首先定义一个包含零到十几个汉字的字符串用于转换,相比于之前枚举的方法,极大的减少了代码量;
string chinese[11] = { "零","一","二","三","四","五","六","七","八","九","十" };
int Transform(string s)
{
int i;
for (i = 0; i <= 10; i++)
{
if (s == chinese[i])
break;
}
return i;
}
其次用一个函数判断增加或减少,在我看来和之前用strcmp(···)==0的方法差不多,但是写起来简便得多
void Operate(string a,string b)
{
if (a == "增加")
g_sum = g_sum + Transform(b);
else if (a == "减少")
g_sum = g_sum - Transform(b);
}
然后用一个函数将数字转化为汉字输出,考虑到平时说话习惯,把1~99分为1~10,10n,10+m(1<=m<=9)和10n+m(1 最后写主函数用于输入输出,还要针对错误的输入设置特别的输出,最后超出了几行 加上头文件和定义的全局变量等,完整代码如下: 不过这个代码只能支持输入0~10,输出0~99,且不能同时出现多个变量同时进行运算 接下来要制作一个编译脚本,运行该脚本可以编译我的代码 根据windows下如何将创建bat批处理脚本? -看到群里说到需要设置环境变量,path里其中一个文件地址必须指向安装的目录mingw32/bin下,要把gcc程序所在的目录加到环境变量,虽然不知道为什么要这样,这样有什么用处,但是还是百度了一下环境变量如何修改 根据网上所说,环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等。这点有点类似于DOS时期的默认路径,当你运行某些程序时除了在当前文件夹中寻找外,还会到设置的默认路径中去查找。简单地说这里的“Path”就是一个变量,里面存储了一些常用命令所存放的目录路径。void Output()
{
int i,m=g_sum%10,n=g_sum/10;
if (g_sum < 0)
cout << "出现财政赤字" << endl;
else if (g_sum >= 0 && g_sum <= 10)
cout << chinese[g_sum] << endl;
else if (g_sum > 10 && m == 0)
cout << chinese[n] << "十" << endl;
else if (g_sum >= 11 && g_sum <= 19)
cout << "十" << chinese[m] << endl;
else if (g_sum > 20 && m != 0)
cout << chinese[n] << "十" << chinese[m] << endl;
}
int main()
{
string s1, s2, s3, s4, s5, s6, s7;
cin >> s1 >> s2 >> s3 >> s4;
if (s1 == "整数" && s3 == "等于")
g_sum = Transform(s4);
do {
cin >> s5 >> s6;
if (s5 == s2 && s6 == "增加" || s5 == s2 && s6 == "减少")
{
cin >> s7;
Operate(s6, s7);
}
else if (s5 == "看看" && s6 == s2)
{
Output();
break;
}
else //if (s5 == "看看" && s6 != s2)
cout << "error!" << endl;
} while (1);
}
#include
我选择了Windows批处理
首先要在指定文件夹下新建一个文本文档
用文本编辑器打开该文本,在该文本中输入命令,然后将该文件重命名为以bat为扩展名
可见该文件类型已变成Windows批处理文件
双击即可运行
然后再path中新建了一个,将这个目录输入了进去
(然后就不知道要怎么办了......还没有学会)