这个作业属于哪个课程 | 2020面向对象程序设计 |
---|---|
这个作业要求在哪里 | 面向对象程序设计寒假作业2 |
这个作业的目标 | 1.继续完成编程题 |
2.新建一个github仓库,并把作业推送到该仓库 | |
3.发布博客 | |
作业正文 | 实践题 |
编程题 | |
其他参考文献 | ... |
编程题
1.继续完成作业一的编程题。
2.优化架构,一般要求每个函数长度不超过15行。
3.优化规范,尤其是命名规范。
4.制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。
代码优化
在上次作业完成后,我将自己的代码与其他同学进行对比,发现上次作业代码中缺少了对输入数据的要求判断函数。故本次作业代码较上次作业增加了检测用的函数。
#include <iostream> #include <string.h> using namespace std; const char jia[]="增加"; const char jian[]="减少"; const char check[]="看看"; const char wallet[]="钱包"; const char num[11][3]={"零","一","二","三","四","五","六","七","八","九","十"};//定义题设的常量汉字关键词 int w,*p=&w;//通过指针使“钱包”内累计值在函数内更新 int CHECK(char N[100])//新增检测数据合法性函数 { int flag=0; if(strlen(N)>2) flag=-1; else{ for(int i=0;i<=10;i++) { if(strcmp(num[i],N)==0) flag=1; } } return flag; } void defin() { char type[10],wa[10],op[10],start[10]; int i; cin>>type>>wa>>op>>start;//输入初始值 i=CHECK(start); if(i==1){ for(int i=0;i<=10;i++) { if(strcmp(num[i],start)==0) *p=i;//输入汉字在程序内部转化为阿拉伯数字 } } else { cout<<"Input Error"<<endl; defin(); } } void up(char number[10]) { int a; a=CHECK(number); if(a==1){ for(int i=0;i<=10;i++) { if(strcmp(num[i],number)==0) *p=*p+i;//寻找汉字对应阿拉伯数字,并对“钱包”内累计值做加法更新 } } else cout<<"Input Error"<<endl; } void down(char number[10]) { int a; a=CHECK(number); if(a==1){ for(int i=0;i<=10;i++) { if(strcmp(num[i],number)==0) *p=*p-i;//寻找汉字对应阿拉伯数字,并对“钱包”内累计值做减法更新 } } else cout<<"Input Error"<<endl; } void output() { if(w<=10){ cout<<num[w]; }//对10以内的数值直接输出 else if(w>=11&&w<20){ int ge; ge=w%10; cout<<"十"<<num[ge]; }//输出11至19之间的数值 else{ int ge,shi; ge=w%10; shi=w/10; if(ge) cout<<num[shi]<<"十"<<num[ge]; else cout<<num[shi]<<"十"; }//输出大等于20的数值 } int main() { defin();//调用初始定义模块函数 char object[10],order[10],number[10]; while(1)//对指令逐条处理 { cin>>object;//接收指令的首个关键词 if(strcmp(object,wallet)==0){ cin>>order>>number; if(strcmp(order,jia)==0) up(number); else down(number); }//对加减法指令判断 else{ cin>>order; output(); break; }//对输出指令判断并跳出循环 } return 0; }
制作编译脚本
脚本使用Windows批处理制作
exe文件生成成功
制作测试脚本
本次程序中函数模块分为5部分
- 纠错函数
- 定义函数
- 加法函数
- 减法函数
- 输出函数
但是其中,从单一函数测试就能客观看出效果的仅有纠错函数和输出函数,故本次测试仅对这两组函数进行测试。
#include <iostream> #include <string.h> using namespace std; const char num[11][3]={"零","一","二","三","四","五","六","七","八","九","十"}; const char tst[7][3]={"福","州","大","学","F","Z","U"}; int w,*p=&w; int CHECK(char N[100]) { int flag=0; if(strlen(N)>2) flag=-1; else{ for(int i=0;i<=10;i++) { if(strcmp(num[i],N)==0) flag=1; } } return flag; } void output() { if(w<=10){ cout<<num[w]; } else if(w>=11&&w<20){ int ge; ge=w%10; cout<<"十"<<num[ge]; } else{ int ge,shi; ge=w%10; shi=w/10; if(ge) cout<<num[shi]<<"十"<<num[ge]; else cout<<num[shi]<<"十"; } } int main() { cout<<"开始测试纠错函数"<<endl; int a; char dammy[10]; for(int i=0;i<=10;i++){ cout<<"试数"<<' '<<num[i]<<' '; strcpy(dammy,num[i]); a=CHECK(dammy); if(a==1) cout<<"PASS"; else cout<<"ERROR"; cout<<endl; } for(int i=0;i<=6;i++){ cout<<"试数"<<' '<<tst[i]<<' '; strcpy(dammy,tst[i]); a=CHECK(dammy); if(a==1) cout<<"PASS"; else cout<<"ERROR"; cout<<endl; } cout<<"开始测试输出函数"<<endl; for(int i=0;i<21;i++){ cout<<"试数"<<' '<<i<<' '; *p=i; output(); cout<<' '<<endl; } cout<<"测试结束"; return 0; }
@echo off set/p a= cd "%a%" set/p b= g++ "%b%" -o functest.exe functest.exe pause
脚本如上。
部分测试结果如上所图所示。
实践题
新建一个github仓库,使用git,或者github desktop把接下去的编程题的代码及测试脚本传到这个仓库。
请使用.gitignore文件忽略不要上传的文件。用法自行百度。
1.新建一个GitHub仓库
下载GitHub desktop并将新建仓库与本地同步,将文件导入其指定目录再发布即可。
来源:https://www.cnblogs.com/ExcaliburMorgan/p/12264722.html