面向对象程序设计寒假作业2
这个作业属于哪个课程 | 面向对象程序设计
:-😐:-|-:
这个作业要求在哪里| 面向对象程序设计寒假作业2
这个作业的目标|1.实践题:新建GitHub仓库,并将作业上传至该仓库 2.编程题:优化代码、编写脚本、添加功能能够读取TXT文档
参考文献|(GitHub Desktop)的下载和使用(这个是参考同学的博客文章)
使用.gitignore文件忽略不要上传的文件
命名规范
[windows bat脚本编写]( https://www.cnblogs.com/micro-chen/p/5694423.html"windows bat脚本编写")
第二次作业
继续完成编程题
新建一个github仓库,并把作业推送到该仓库。
发布博客
实践题
新建一个github仓库,使用git,或者github desktop把接下去的编程题的代码及测试脚本传到这个仓库。
请使用.gitignore文件忽略不要上传的文件。用法自行百度
作业过程
我先询问了同学,从群中下载了GitHub Desktop,再参考了一位同学的博客,建立了仓库
将其上传
————————————————————————————————————————————————————————————————————————————————————————
编程题(请使用C语言或者C++完成以下题目):
继续完成作业一的编程题。
优化架构,一般要求每个函数长度不超过15行。
优化规范,尤其是命名规范。
制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。
进行单元测试,即测试每一个函数,并制作一个测试脚本,运行该脚本可以进行测试,并显示测试结果。
在作业一编程题的基础上添加以下功能:
通过命令行读取一个文件,然后运行这个文件。如我的程序叫lang,lang 1.txt代表我要运行1.txt这个文本中的代码。
假设我的1.txt内容如下:
整数 钱包 等于 零
钱包 增加 四
钱包 减少 三
看看 钱包
输入lang 1.txt后,命令行输出一。
编程题要求:
读题,提取出题目的要求。
分解需求,把需求分解为几个你觉得不太相关的模块。
思考每个模块怎么写,可以从简单的模块开始写。
对于不会的问题进行查阅资料。
对于每一个模块设计测试用例。
详细记录下以上每一步,并写在博客中。
不要求完全做出来,但要求记录详细。
建议博客长度不少于1000字(不包含代码)。
作业过程
我先学习了一下命名的规律QAQ,发现自己以前命名的太不标准了,我就修改了一下 参考文献:https://blog.csdn.net/look_poet_of_water/article/details/81868860
命名法分为:
一、匈牙利命名法:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
二、驼峰命名法:驼峰命名法,正如它的名称所表示的那样,指的是混合使用大小写字母来构成标识符的名字。其中第一个单词首字母小写,余下的单词首字母大写。
三、帕斯卡(Pascal)命名法:帕斯卡命名法则是第一个单词首字母大写。因此这种命名法也有人称之为“大驼峰命名法”
四、下划线命名法。:下划线法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。
函数的命名修改如下
void Shuzi(int sum);//将数字转换成汉字 ```
###上次的代码,我是用罗列的方法,写了0-40的可能,但是这样子太过繁琐,所以这次我学习了一下别的同学的代码,改了改自己的一些不足之处
###大致思路是分成10以内,整十,10-99,一百的几种情况
##修改如下
![](https://img2018.cnblogs.com/blog/1925129/202002/1925129-20200205202939853-347474680.png)
![](https://img2018.cnblogs.com/blog/1925129/202002/1925129-20200205203041643-482326012.png)
###我还大致调整了函数的内容
![](https://img2018.cnblogs.com/blog/1925129/202002/1925129-20200205203306643-519527873.png)
![](https://img2018.cnblogs.com/blog/1925129/202002/1925129-20200205203348866-234684076.png)
##以下是完整代码
#include <stdio.h>
#include <string.h>
int main()
{
int Hangzi(char m[20]);//将汉字转换成数字
void Shuzi(int sum);//将数字转换成汉字
int sum,u;
char a[20], b[20], n[20], m[20],t[20],f[20],g[20],h[20];
scanf("%s %s %s %s %s",a,b,n,m,t);
if (strcmp("整数", a) == 0 && strcmp("钱包", b) == 0 && strcmp("等于", n) == 0)
sum = Hangzi(m);
for(;strcmp("钱包", t) == 0;)
{
scanf("%s %s", f, g);
if (strcmp("增加", f) == 0)
sum +=Hangzi(g);
else
{
sum -=Hangzi(g);
}
scanf("%s", t);
}
if (strcmp("看看", t) == 0)
{
scanf("%s", h);
if (strcmp("钱包", h) == 0)
{
if(sum<0)//sum<0时的输出
printf("error");
else
{
if(sum<=10)//sum为个位数时的输出
{
Shuzi(sum);
}
if(sum>10&&sum<=19)// sum为10-19的输出
{
u=sum;
u=u%10;
printf("十");
Shuzi(u);
}
if(sum>=20&&sum<=99)
{
if(sum%10==0) //sum为整十的输出
{
u=sum;
u=u/10;
Shuzi(u);
printf("十");
}
else//sum为20-99之间(除了整十)的输出
{
u=sum;
u=u/10;
Shuzi(u);
printf("十");
u=sum;
u=u%10;
Shuzi(u);
}
}
if(sum==100)//sum为100的输出
{
printf("一百");
}
}
}
}
}
void Shuzi(int sum)//数字转换成汉字
{
switch (sum)
{
case 0:printf("零"); break;
case 1:printf("一"); break;
case 2:printf("二"); break;
case 3:printf("三"); break;
case 4:printf("四"); break;
case 5:printf("五"); break;
case 6:printf("六"); break;
case 7:printf("七"); break;
case 8:printf("八"); break;
case 9:printf("九"); break;
case 10:printf("十"); break;
}
}
int Hangzi(char m[])//汉字转换成数字
{
int c;
if (strcmp("零", m) == 0)
c = 0;
if (strcmp("一", m) == 0)
c = 1;
if (strcmp("二", m) == 0)
c = 2;
if (strcmp("三", m) == 0)
c = 3;
if (strcmp("四", m) == 0)
c = 4;
if (strcmp("五", m) == 0)
c = 5;
if (strcmp("六", m) == 0)
c = 6;
if (strcmp("七", m) == 0)
c = 7;
if (strcmp("八", m) == 0)
c = 8;
if (strcmp("九", m) == 0)
c = 9;
if (strcmp("十", m) == 0)
c = 10;
return (c);
}
##接下来就是编写脚本,进行测试(我看了看windows bat脚本编写)觉得有些云里雾里,就请教了一下同学,然后然后。。。。我试了好久
##一直新建文档失败。。。好不容易成功。。。结果
![](https://img2018.cnblogs.com/blog/1925129/202002/1925129-20200205213252650-227281315.png)
![](https://img2018.cnblogs.com/blog/1925129/202002/1925129-20200205211950153-1255898891.png)
##后来又请教了同学,我的路径未添加
![](https://img2018.cnblogs.com/blog/1925129/202002/1925129-20200205213426583-1903549323.png)
##但是还是不行。。。(不知道哪里的问题,我再研究研究。。。)
##接下来是增加功能
##使用freopen函数 参考:https://blog.csdn.net/jacky_chenjp/article/details/70237418
![](https://img2018.cnblogs.com/blog/1925129/202002/1925129-20200205215803074-1385583523.png)