中国地质大学
计算机高级语言课程设计报告
——新闻管理系统
班级:191142班 学号: 姓名: 日期:2015-3-3
一 课程设计题目与要求
已知一个日期类Date,其数据成员如下 class Date{ private:
int m_year,m_month,m_day; //分别代表一个日期中的年月日
int m_totalDaysYear; //年份m_year 中的总天数 };
1. 在此基础上,请完善以下成员函数声明和定义,要求声明为public 访问标识,且 成员函数在类外定义:
1) 默认的构造函数,要求具有三个默认值分别为2001(年),1(月)和1(日)
的形式参数,并在此构造函数内部根据m_year 的值,计算总天数。
2) 重载赋值操作符。 3) 析构函数。
4) 增加并实现以下类Date的成员函数,其功能和声明如下 int getDaysofYear();
//返回一个日期在当年中的天数,如2014/ 2/12 返回43 int getRemainingDaysofYear();
//返回一个日期在当年中的余下的天数,如2014/ 1/12 返回353 int compare(const Date &date);
//比较date 和当前对象的大小, 分别返回1,0 和-1 代表当前对象的日期大于, 等于或小于date
int operator-(const Date &date); //计算并返回date 和当前调用对象相差的天数 Date operator+(int days);
//计算当前对象加上days 天数的日期,并返回结果 5)定义并实现一个类Date 的友元函数, 声明和功能如下 friend ostream & operator<<(ostream & out, const Date & date);
//按照年/月/日格式输出, 如2014/ 1/12 6) 定义一个内联函数,其函数名和形式参数如下:
isLeapYear(int year ), 要求返回值为布尔类型,其功能为判断year 是否是闰
年,闰年返回true,非闰年返回false。
2. 在上题提基础上,设计一个新闻类,要求能够记录新闻发生的日期、编号(整数
从1 开始)、新闻类型、新闻标题、发生的地点以及新闻的内容。
该类的部分数据 成员声明如下: class News{ private:
string m_news; //存储新闻内容,假设单词间以空格隔开,无换行符和Tab符,
Date m_date; //新闻报道的时间 public: };
实现功能: 1) 实现每条新闻自动编号,编号从1 开始; 2) 某类型新闻在某段时间内发生的次数;如2013 年1 月1 日到2013 年12 月31 日期间体 育类的新闻数目。
3) 根据特定关键词搜索相关的新闻,并将其输出到屏幕,如anti-corruption
4) 统计每条新闻的英文单词数目
5) 可增加和删除新闻, 增加或删除的结果保存到本地文件中 6) 在某日期之后一段时间内报道的新闻,并将其输出到屏幕, 如在2013/1/14 的169 天 内报道的新闻 要求:
完善类的设计,实现相应功能,请加以说明你的设计。数据成员
以m_ 开头,如m_news ,
函数成员请用有意义的英文单词如上题getRemainingDaysofYear()。 假定新闻类型如下:
enum NewsType{ Education, Politic, Sport, Science, Weather}; 每条新闻按以下格式存储在本地文本文件中, ID: 123
Date: 2014/1/13 Type: Sport
Title: Australian Open 2014: Roger Federer 'can get back to his best'
Address:Australian
Content: Stefan Edberg believes he can help get Roger Federer back to his best. The Swedish
six-time Grand Slam winner will be a part of Federer's coaching team for 10 weeks in 2014,
starting with the Australian Open. Swiss Federer, 32, won the last of his 17 Grand Slams at Wimbledon in 2012.
类似上面的测试数据自己生成(可到www.bbc.co.uk 下载,新闻内容截取部分即可),至少
要20 条。所有的新闻按上述格式存储在本地文件中,文件名为