面向对象程序设计第二次作业

这个作业属于哪个课程 2020春福大面向对象程序设计
这个作业要求在哪里 寒假作业2
这个作业的目标 使用git,建立github仓库,优化架构,优化命名规范,制作编译脚本,进行单元测试,添加功能
作业正文 第二次作业
其他参考文献 github desktop的简易使用 windows批处理 powershell的使用

实践题:

新建一个github仓库,使用git,或者github desktop把接下去的编程题的代码及测试脚本传到这个仓库。请使用.gitignore文件忽略不要上传的文件。用法自行百度。

仓库的创建方法

打开已经下载好的github desktop,选择File选项中的new repository,填写仓库的名称和介绍,以及地址,然后点击Create repository即可

在publish repository的时候要记得把keep this code private的选项取消了,如果忘了就到网页里去修改。

往仓库里传文件

  • 先把自己的仓库clone下来。方法:file->clone repository,要记得clone到的地址
  • 接着找到刚刚用来clone的文件夹,例如我的是C++ vacation homework 2
  • 在里面直接贴上要上传的文件
  • 回到github desktop,就可以看到更改,点击commit to master
  • 然后点击push origin,就是下图的深蓝色框

就可以在网页版看到上传的文件了。

git的安装

根据此链接里的提示下载并安装git。安装git完成后,在开始菜单中搜索git,找到一个叫Git Bash的应用,如果打开后可以跳出如下图所示的一个小黑窗口。就说明git安装成功。

编程题

  • 继续完成作业一的编程题。
  • 优化架构,一般要求每个函数长度不超过15行。
  • 优化规范,尤其是命名规范。
  • 制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。
  • 进行单元测试,即测试每一个函数,并制作一个测试脚本,运行该脚本可以进行测试,并显示测试结果。
  • 在作业一编程题的基础上添加以下功能
  • 通过命令行读取一个文件

关于windows批处理

如何把txt文件保存成.bat文件

  • 先打开一个存有bat语句的文本文件,或者在记事本中编写,
  • 点击记事本的文件菜单,然后选择“另存为”选项,
  • 然后输入要另存为的文件名,比如“test.bat”,注:文件名必须要以.bat结尾
  • 接下来在“保存类型”下拉列表中选择“所有文件”
  • 点击“保存”按钮即可

第一次尝试

如图所示编辑了一个记事本后,按上述方法另存为一个.bat文件。双击下图所示的批处理文件,即可开始运行并得到结果

查询命令含义的方法

例如下图所示,是查询echo命令的用处,方法是先输入命令的名字,再加一个空格,和/?符号,回车后就可以看到对应命令的用处。

关于编译脚本

方法一:按照大佬提交的内容做了.bat文件

@echo off
echo 请输入文件所在磁盘
set /p a=
echo 正在转移到该磁盘
cd "%a%"
echo 请输入文件所在路径
set /p b=
echo 转移到文件路径
cd "%b%"
echo 请输入文件名
set /p c=
echo 编译开始
gcc "%c%" -o try.exe
if exist "try.exe" echo 编译成功
if not exist "try.exe" echo 编译失败
Pause

正确运行后可以得到如下结果

遇到的问题和解决方法

一开始出现的编译失败如下图所示。解决方法:先找到gcc的位置,我的是C:\Program Files (x86)\Dev-Cpp\MinGW64\bin,然后打开控制面板->系统->高级系统设置->环境变量->双击path,把gcc的地址添加到列表里就可以了

随后出现了如下图所示的新问题,提示找不到文件。解决方法:在文件名后面加上.cpp即可。

方法二:按照示例脚本
记事本中的内容是

gcc CCC.cpp -o lang.exe
pause

运行后可以生成一个名字是lang的.exe文件,就说明编译成功

关于测试脚本

我们先来测试change函数,下面是测试程序的设计

#include<stdio.h>
#include<string.h>
int change(char shu[])
{
    if(strcmp(shu,"一")==0) return 1;
    else if(strcmp(shu,"二")==0) return 2;
    else if(strcmp(shu,"三")==0) return 3;
    else if(strcmp(shu,"四")==0) return 4;
    else if(strcmp(shu,"五")==0) return 5;
    else if(strcmp(shu,"六")==0) return 6;
    else if(strcmp(shu,"七")==0) return 7;
    else if(strcmp(shu,"八")==0) return 8;
    else if(strcmp(shu,"九")==0) return 9;
    else if(strcmp(shu,"零")==0) return 0;
    else if(strcmp(shu,"十")==0) return 10;
    else return -1;
}
int main()
{
	char a[11][10]={"零","一","二","三","四","五","六","七","八","九","十"}; 
	char b[8][10]={"皮","卡","丘","与","天","线","宝","宝"};
	int i,m;
	for(i=0;i<11;i++)
		{printf("输入 %s   ",a[i]);
		 m=change(a[i]);
		 if(m!=-1)
		 	printf("pass\n");
		 else
		 	printf("error\n");
		}
	printf("下面是错误测试\n");
	for(i=0;i<8;i++)
		{printf("输入 %s   ",b[i]);
		 m=change(b[i]);
		 if(m!=-1)
		 	printf("pass\n");
		 else
		 	printf("error\n");
		}
}

然后编写测试脚本,文档内的内容如下

@echo off
cd d:
echo 开始测试
CCC1.exe
echo 测试结束
Pause

转成bat格式打开后,就可以得到测试结果如下

关于通过命令行读取一个文件

关于freopen函数

定义:freopen是被包含于C标准库头文件<stdio.h>中的一个函数,用于重定向输入输出流。
使用方法:freopen("in.txt","r",stdin);第一个引号内是文件的名字,后面的内容不做改动。

  • 先在记事本里写下可以用来测试的内容

  • 在main里添加以下语句:

printf("请输入文件名\n"); 
 char s[10];
 scanf("%s",s);
 freopen(s,"r",stdin);

编译后在框里输入文件名即可运行产生结果,效果如下图所示

这次的作业确实有点费肝

posted @ 2020-02-04 14:41  瑞图恩灵  阅读(320)  评论(0编辑  收藏  举报