面向对象程序设计作业(4)
第四次作业
GitHub:pullself
基本信息
在主函数中加入了命令行判断。以及一个简陋的菜单。
代码行数 | 调试bug | 编码时间 |
---|---|---|
1032行 | 暂无 | 2h |
程序总共由5个文件组成:
main.cpp
:主函数,程序的入口。elevator.h
:定义了电梯类,包含两个电梯成员的封闭类以及两个派生类。elevator.cpp
:电梯类方法的实现。ask.h
:定义了请求类。ask.cpp
:请求类方法的实现。
编码过程
简介
- 再稍微了解命令行之后,大致觉得命令行的处理就是对字符串的处理,通过字符串来引导程序的运行。
- 在实现作业给出的两种输入之外,加入了一个循环的系统来引导提示输入,确保程序的输入输出目录合理。
问题
1.命令行的处理是一定要放在main函数中吗?说实话这是个疑问。
bug修复
暂无
具体代码与效果
功能介绍
- 在直接只输入input地址,会在input地址下生成三个output文件来存储。
- 直接输入input地址以及任意(3以下)output地址,按照给的地址输入输出,未给出的output地址默认input目录。
- 输入任意其他内容,会给出相应提示,并且进入引导状态。
- 具有五个功能:1.input地址输入。2.output地址输入。3.run:程序运行。4.view:查看四个文件地址。5.end:中止程序。
具体代码
if (argc == 2)
{
if (strcmp(argv[1], "run") == 0)
{
cout << " 错误:缺少input文件地址" << endl;
cout << " 需要更多帮助请输入help" << endl;
error = 1;
}
else if (strcmp(argv[1], "help") == 0)
{
cout << " *:\\****\\input.txt:输入input文件地址" << endl;
cout << " *:\\****\\outputi.txt:输入output文件地址,i=1,2,3,若不给出默认为input文件目录" << endl;
cout << " run:运行程序" << endl;
cout << " view:查看文件地址" << endl;
cout << " end:中止程序" << endl;
error = 1;
}
else if (strcmp(argv[1], "view") == 0)
{
cout << " input:缺失" << endl;
cout << " output1:当前目录" << endl;
cout << " output2:当前目录" << endl;
cout << " output3:当前目录" << endl;
error = 1;
}
else if (strcmp(argv[1], "end") == 0)
{
cout << " 运行终止" << endl;
return -1;
}
else if (strstr(argv[1], "input") != NULL)
{
address_change(address[1], argv[1]);
for (int i = 2; i < 5; i++)
{
address_copy(address[i], address[1], i - 1);
}
run_fun();
cout << " 运行结束" << endl;
return 0;
}
else if (strstr(argv[1], "output") != NULL)
{
cout << " 错误:缺少input文件地址" << endl;
out_change(argv[1]);
cout << " output地址已存储" << endl;
cout << " 需要更多帮助请输入help" << endl;
error = 1;
}
else
{
cout << " 错误:非法输入" << endl;
cout << " 需要更多帮助请输入help" << endl;
error = 1;
}
}
else
{
if (argc == 1)
{
strcpy_s(address[1], "input.txt");
strcpy_s(address[2], "output1.txt");
strcpy_s(address[3], "output2.txt");
strcpy_s(address[4], "output3.txt");
run_fun();
cout << " 运行结束" << endl;
return 0;
}
else if (argc > 2)
{
if (strstr(argv[1], "input") == NULL)
{
cout << " 错误:非法输入" << endl;
cout << " 需要更多帮助请输入help" << endl;
error = 1;
}
else
{
address_change(address[1], argv[1]);
for (int i = 2; i < 5; i++)
{
address_copy(address[i], address[1], i - 1);
}
for (int i = 2; i < argc; i++)
{
out_change(argv[i]);
}
run_fun();
cout << " 运行结束" << endl;
return 0;
}
}
}
while (error == 1)
{
cin >> order;
if (strcmp(order, "run") == 0)
{
if (address[1][0] == '\0')
{
cout << " 错误:缺少input文件地址" << endl;
cout << " 需要更多帮助请输入help" << endl;
}
else
{
for (int i = 2; i < 5; i++)
{
if (address[i][0] == '\0') address_copy(address[i], address[1], i - 1);
}
run_fun();
cout << " 运行结束" << endl;
return 0;
}
}
else if (strcmp(order, "help") == 0)
{
cout << " *:\\****\\input.txt:输入input文件地址" << endl;
cout << " *:\\****\\outputi.txt:输入output文件地址,i=1,2,3,若不给出默认为input文件目录" << endl;
cout << " run:运行程序" << endl;
cout << " view:查看文件地址" << endl;
cout << " end:中止程序" << endl;
}
else if (strcmp(order, "view") == 0)
{
if (address[1][0] == '\0') cout << " input:缺失" << endl;
else cout << " input:" << address[1] << endl;
for (int i = 2; i < 5; i++)
{
if (address[i][0] == '\0') cout << " output" << i - 1 << ":当前目录" << endl;
else cout << " output" << i - 1 << ":" << address[i] << endl;
}
}
else if (strcmp(order, "end") == 0)
{
cout << " 运行终止" << endl;
return -1;
}
else if (strstr(order, "input") != NULL)
{
address_change(address[1], order);
for (int i = 2; i < 5; i++)
{
if (address[i][0] == '\0')
{
address_copy(address[i], address[1], i - 1);
}
}
cout << " 已获取input地址,程序可运行" << endl;
}
else if (strstr(order, "output") != NULL)
{
out_change(order);
cout << " output地址已存储" << endl;
if (address[1][0] == '\0') cout << " 警告:缺少input文件地址" << endl;
}
else
{
cout << " 错误:非法输入" << endl;
cout << " 需要更多帮助请输入help" << endl;
}
}
- run_fun:程序运行的入口。
- address_change:处理地址函数。
- address_copy:output复制函数。
- out_change:output处理函数。
实现效果
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单