C新闻信息管理系统.doc
《C新闻信息管理系统.doc》由会员分享,可在线阅读,更多相关《C新闻信息管理系统.doc(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 C+新闻信息管理系统报告2015年 3月 6 日一 课程设计题目与要求包括题目与系统功能要求 已知一个日期类 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、数。 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);
3、/计算并返回 date 和当前调用对象相差的天数 ;Date operator+(int days); /计算当前对象加上 days 天数的日期,并返回结果 5)定义并实现一个类 Date 的友元函数, 声明和功能如下 friend ostream & operator”的重载、输出“mm_month-1是否成立来判断,除了第一次成功是days=days-(mmonth-1-m_day)-1外;后面的都是days-=mm_month-1;days=1;这样就可以实现实现对days的减小;具体的内容就不在这儿详述了;而对于“-”,我则是使用了判断的形式,具体不详述。 2.输入输出的重载在题目的要
4、求中,这两个重载函数都是必须声明为友元函数,所以严格意义上来讲这两个函数是不属于Date类的成员的函数;输入输出都有两个形参,一个是功能对象,一个是待处理对象(Date);Date类对象都必须是引用类型,而在输出函数中更必须是const引用,返回值则是另外定义的那个形参。 3.基本函数 默认构造函数:即程序员自己编写一个构造函数,给每个数据成员附上初始值 析构函数:自己给出,便于了解编译器的内在运行。 4.功能函数:getDayssofYear(); /返回一个日期在当年中的天数。这一个函数的设计 本来是十分简单的,先使用一个数据,在其中写入每个月的天数,在二月份加入一 个判断就行,然后用一个
5、for(int i=1;im_month;i+)循环将所有的月份的值加 起来;最后加上m_day的值结束;而我却使用了if判断嵌套循环;考虑的情况十分 多不说,好容易出错。getRemainingDaysofYear(); /返回一个日期在当年中的余下 的天数;这一个函数使用365- getDayssofYear()即可;日期的大小比较使用if条件判 断即可; inline bool isleapYear(); /内联函数,判断year是否为闰年;因为这里必 须是内联函数,所以判断必须简单,不能有嵌套的判断语句出现,所以只能使用条 件语句:m_year % 4= 0 & m_year % 10
6、0 != 0 | m_year % 400 = 0 ? 1。 2. 新闻类(News): 大纲:数据成员: m_date; m_order; m_type; m_content;m_place;m_title; 函数成员: 接口函数;默认构造函数;重载复制运算函数。 实现:接口函数返回数据成员的应用。 默认构造函数赋给数据成员初始值。 重载“=”函数;使用const引用;返回this指针。3. 管理类(Management): 大纲:数据成员:vector stu; 函数成员:各种功能函数。实现:1.void input();/从文本中读入数据并输出到屏幕;由于我是用的是中文文本;所以输 入较
7、为简单;每遇见一次空格就是一种数据成员输入完毕,接着是下一种类型。注意 刚开始要有一个判断,那便是是否成功打开文件。 2.void show();/将信息显示在屏幕上 ;使用一个for循环就可以完成输出工作。这里 面我们需要考虑的是是输出文本中的内容还是vector容器中的内容;输出文本中的内 容这个函数只能使用一次,而输出vector中的内容则可以多次。所以,我采用了第二 种。 3.void identifier();/对新闻进行编号;使用一个for循环就可以实现对新闻的编号; 编号后将其可入一个新建的文本文件,然后使用show()函数对其结果输出展示。 4. void store();/对
8、新闻进行特定格式的储存;此函数用于使新闻在文本文件中的储存 格式与题目要求的一致。 void lookUp();/计算某段时间内某种类型新闻发生的次数;先输入新闻类型和时间 段;然后使用for循环查找这一类型的新闻,找到后放在一个新的vector容器中;然 后在这个新的容器中找到满足条件的新闻,计数。 5.后面的各种功能函数情况比较复杂,就不具体说明。五 测试,包括对各功能模块的测试1. 菜单显示:2. 自动编号且按规定格输出并储存3. 输出某种新闻在某段时间内发生的次数继续查找:4. 根据特定的关键词搜索新闻5. 统计每条新闻的字数继续统计:6. 增加或删减新闻 (1) 增加新闻:输入后:(
9、2) 删除新闻: 删除前如上图: 删除查找: 删除后:再次删除新输入的新闻:7. 输出某日期后一段日期报道的新闻 第一次查找:第二次查找:8. 计算两个日期相差的时间 瑞年同一年份: 平年同一年份: 不同年份:9. 某个日期加上输入天数后的日期 瑞年: 平年: 计算结果跨年分的:10.比较两日期的大小 同一年份的:同一天的:不同年份的:六 结论,对系统开发的总结,设计的亮点,存在的不足,需要改进的地方 系统的开发涉及到各种类和函数的关联,虽然本次作业的要求较为简单,但作为初学者,我还是不那么得心应手。设计的亮点:1. 按照要求,此次的新闻管理系统我们至少要写两个类,一个时间Date类,一个时间
10、News类。新闻是一个整体,想要管理新闻新闻的话是需要一整则新闻进行,所以,在News类中书写管理的功能函数会使得过程十分的棘手,所以,我就采用第三个类,管理类Management;在定义一个容器vector使得操作大大的简化。2. 在对新闻按照要求格式进行输出并储存到文本文件中时,在每个数据成员前面都会加上说明符;如date:2012/2/2; ID:15等等,像这样的格式无论是输出到文本还是屏幕都只能使用string类的对象类操作。在后面的功能函数中我们又必须将其转化为数字,然后才能进行各种运算,这样会很麻烦。所以我在开始的时候就将其分开,不让他们成为一个整体,这样将不会在后面进行转换,具
11、体过程见源代码。3. 再设计show()函数时,这里我们需要考虑的是是输出文本中的内容还是vector容器中的内容。输出文本中的内容这个函数只能使用一次,而输出vector中的内容则可以多次。所以,我采用了第二种。存在的不足: 作为一个新手,我对于代码的驾驭能力还是不够,不能灵活应用。比如对于应用和指针的应用,对于循环的应用。在这里面,最需要说的对于循环的应用,当然,简单的循环我还是会,但遇到复杂的循环就存在各种问题。如,在对加减法进行重载的时候,刚开始,我没有想到使用数组后循环加判断,这样问题就十分的简单,但我却只使用if条件判断,造成过程超级繁琐,过程超级麻烦,代码十分冗长。后来,我修改了
12、加法的重载,但减法还是没有修改。对于数组的应用也存在不熟练的问题,比如getDayssofYear(); /返回一个日期在当年中的天数。这一个函数的设计本来是十分简单的,先使用一个数据,在其中写入每个月的天数,在二月份加入一个判断就行,然后用一个for(int i=1;im_month;i+)循环将所有的月份的值加起来;最后加上m_day的值结束;而我却使用了if判断嵌套循环;考虑的情况十分多不说,好容易出错。 对于关键词查找,我也是一带而过,不知应该怎么办。如果使用find()函数查找的话,这样就不叫关键词查找了,而如果要提前写好关键词的话,这样工作量也就太大了吧,而且还要考虑各种相近的近义
13、词等等。所以对于这个我也是存在一定问题的。七 附录程序源代码,关键代码要做注释*mian函数*#includemanagement.hint main()cout * endl;cout *欢迎进入新闻信息管理系统* endl;cout * endl;int i = 0; Management m; Date n;m.input(); m.identifier();while (i != 10)cout n 请输入你想要进行的功能前所对应的数字 endl;cout 1:对已实现自动编号且自动按照要求格式储存的新闻输出 endl;cout 2:输出某类型新闻在某段时间内发生的次数 endl;co
14、ut 3:根据特定的关键词搜索新闻 endl;cout 4:统计每条新闻的字数 endl;cout 5:增加或删减新闻 endl;cout 6:输出某日期后一段日期报道的新闻 endl;cout 7:计算两个日期相差的时间 endl;cout 8:某个日期加上输入天数后的日期 endl;cout 9:比较两日期的大小 endl;cout 10:结束 i;if (i10)cout 你输入的指令是错误的,请重新选选择并输入 endl;switch (i)case 1:m.show(); break;case 2:m.lookUp(); break;case 3:m.find(); break;ca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新闻 信息管理 系统
限制150内