#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED

struct Course
{
int id;
std::string name;
};

const int LEN = 7;
void print_help();
void print_all_course(Course* courses[LEN]);
void print_course_count(Course* courses[LEN]);
void print_maxlength(Course* courses[LEN]);
bool remove_last_course(Course* courses[LEN]);

#endif // MAIN_H_INCLUDED

#include <iostream>
#include "main.h"
using namespace std;

int main()
{
Course* courses[LEN] =
{
new Course{1,"Linux"},
new Course{2,"C++"},
new Course{3,"HTML"},
new Course{4,"NodeJS"},
new Course{5,"Shell"},
new Course{6,"Python"},
new Course{7,"C#"}
};

while(true)
{
char input = std::cin.get();
switch(input)
{
case '0':
print_help();
break;
case '1':
print_all_course(courses);
break;

case '2':
print_course_count(courses);
break;

case '3':
print_maxlength(courses);
break;

case '4':
{
bool ret = remove_last_course(courses);
if(ret)
print_all_course(courses);
else
cout << "there is no course any more !";
break;
}
case '5':
goto exit;
break;
}
}
exit:
cout << "bye !";
return 0;
}

void print_help()
{
cout << "操作命令输入0,打印出程序帮助信息,即每个操作命令的作用" << endl;
cout << "操作命令输入1,打印出程序中存储的所有课程ID和课程名" << endl;
cout << "输入2,打印出课程数量" << endl;
cout << "输入3,打印出名字最长的课程信息,如果有多个相同长度的课程名请都打印出" << endl;
cout << "输入4,删除最后一个课程,如果没有课程需要返回错误信息" << endl;
cout << "输入5,退出程序" << endl;
}

void print_all_course(Course* courses[LEN])
{
for(int i = 0; i < LEN; i++)
{
if(courses[i] != NULL)
cout << "id : " << (*courses[i]).id << "; name : " << (*courses[i]).name << endl;
}
}

void print_course_count(Course* courses[LEN])
{
int num;
for(num = 0; num < LEN; num++)
{
if(courses[num] == NULL)
break;
}
cout << "the count of course is : " << num << endl;
}

void print_maxlength(Course* courses[LEN])
{

int maxLen = 0;
for(int i = 0; i < LEN; i++)
{
if((*courses[i]).name.length() > maxLen)
maxLen = (*courses[i]).name.length();
}

cout << "the longest name of the courses : " << endl;

for(int i = 0; i < LEN; i++)
{
if((*courses[i]).name.length() == maxLen)
cout << (*courses[i]).name << endl;
}
}

bool remove_last_course(Course* courses[LEN])
{
for(int i = LEN - 1 ; i >= 0 ; i--)
{
if(courses[i] != NULL)
{
delete(courses[i]);
courses[i] = NULL;
return true;
}
}
return false;
}

最新文章

  1. iOS自定义model排序
  2. kvm 使用入门详解
  3. .NET MVC控制器分离到类库的方法
  4. thinkphp框架中“关联操作”的完整定义详解
  5. JavaDate类
  6. mysql索引补充
  7. 汇编debug 截图3
  8. MAT(2)安装Memory Analyzer
  9. DictoryInfo.GetFiles
  10. HTML5动态分页效果代码
  11. js isArray小结
  12. Chapter 2 Open Book——33
  13. css块级标签、行内标签、行内块级标签
  14. POJ 2524 Ubiquitous Religions 解题报告
  15. Linux文件管理_1
  16. C# 程序员最常犯的 10 个错误(转)
  17. 【转载】在linux下别用zip 用tar来压缩文件 zip解压后还是utf-8 window10是GBK
  18. Unity3d之表情动画--眨眼
  19. Spring Boot(十七):使用Spring Boot上传文件
  20. CentOS6.5安装MySQL5.7详细教程(本人6.3也行)

热门文章

  1. C#算法之判断一个字符串是否是对称字符串
  2. Winform 窗体单例
  3. jQuery插件编写规范
  4. WPF 大数据加载过程中的等待效果——圆圈转动
  5. [译]Node.js - Event Loop
  6. 如何在HTML中加载Flash(2种实现方法)_HTML/Xhtml_网页制作
  7. FP 某段SQL语句执行时间超过1个小时,并报错:ORA-01652: 无法通过 128 (在表空间 TEMPSTG 中) 扩展
  8. Linux下如何查看系统启动时间和运行时间
  9. lucene和ElasticSearch基本概念
  10. C# 委托和事件 与 观察者模式(发布-订阅模式)讲解 by天命