Boolan Homework——Date类

问题描述

为Date类实现如下成员: 
1. 构造器,可以初始化年、月、日。 
2. 大于、小于、等于(> 、< 、==)操作符重载,进行日期比较。 
3. print() 打印出类似 2015-10-1 这样的格式。

然后创建两个全局函数: 
1. 第1个函数 CreatePoints生成10个随机的Date,并以数组形式返回 
2. 第2个函数 Sort 对第1个函数CreatePoints生成的结果,将其按照从小到大进行排序。

最后在main函数中调用CreatePoints,并调用print将结果打印出来。然后调用Sort函数对前面结果处理后,并再次调用print将结果打印出来。

代码实现

date.h头文件

#ifndef _DATE_
#define _DATE_

#include <iostream>
using namespace std;

class Date;

void Sort(Date* date, const int& n);
void CreatePoints(Date* date, const int& n);
ostream& operator << (ostream& obj,const Date& date); 

class Date
{
    public:
        Date (int y = 0, int m = 0, int d = 0) : year(y), month(m), day(d) {} 

        bool operator == (const Date& date)
        {
            return year == date.year && month == date.month && day == date.day;
        }

        bool operator > (const Date& date)
        {
            if (year != date.year) return year > date.year;
            else if (month != date.month) return month > date.month;
            else if (day != date.day) return day > date.day;
            else return false;
        }

        bool operator < (const Date& date)
        {
            if (year != date.year) return year < date.year;
            else if (month != date.month) return month < date.month;
            else if (day != date.day) return day < date.day;
            else return false;
        }

        void Print()
        {
            cout << year << ‘-‘ << month << ‘-‘ << day << endl;
        }

    private:
        int year;
        int month;
        int day;

        friend void CreatePoints(Date* date, const int& n);
        friend ostream& operator << (ostream& obj,const Date& date);   /*作业没要求,自己重载<<运算符 */
};

#endif

  date.cpp实现文件

#include "date.h"
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

ostream& operator << (ostream& obj,const Date& date)
{
    return obj << date.year << ‘-‘ << date.month << ‘-‘ << date.day;
}

void CreatePoints(Date* date, const int& n)
{
    srand(time(NULL));   /*初始化种子*/
    /*没有考虑具体日期,如闰年、不同月份有不同天数等*/
    for (int i=0; i<n; ++i)
    {
        date[i].year = rand() % 2015 + 1;
        date[i].month = rand() % 12 + 1;
        date[i].day = rand() % 30 + 1;
    }
}

/*冒泡排序*/
void Sort(Date* date, const int& n)
{
    Date temp;
    for (int i=0; i<n; ++i)
    {
        for (int j=0; j<n-i-1; ++j)
        {
            if (date[j] > date[j+1])
            {
                temp = date[j];
                date[j] = date[j+1];
                date[j+1] = temp;
            }
        }
    }
}

  main.cpp主程序

#include <iostream>
#include "date.h"
#define NUM 10 

using namespace std;

int main(int argc, char** argv)
{
    Date *date = new Date[NUM];
    CreatePoints(date,NUM);
    cout << "before sort:" << endl;
    for (int i = 0; i < NUM; i++ )
    {
        date[i].Print();
        /*或cout << date[i] << endl;*/
    }

    Sort(date,NUM);
    cout << "after sort:" << endl;

    for (int i = 0; i < NUM; i++ )
    {
        date[i].Print();
        /*或cout << date[i] << endl;*/
    }   

    delete[] date;
    return 0;
}

 

时间: 2024-10-23 12:16:46

Boolan Homework——Date类的相关文章

Java基础之Date类

Date类表示特定的瞬间,精确到毫秒. 有2种方法可以创建Date对象(这里不考虑已过时的构造函数) 1.public Date()--分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒). 1 @Test 2 public void test1() { 3 Date date = new Date(); 4 System.out.println(date); 5 } Sun Oct 23 22:39:14 CST 2016 2.public Date(long date)--根

Java API —— Date类

1.Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 2.构造方法 public Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒). public Date(long date):分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数. 3.成员方法 public long getTime() public void setTime(long

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Date类,Calendar类package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; //Date类 public class DateTest { public static void main(String[] args) { Date

Date类

A:Date类的概述 类 Date 表示特定的瞬间,精确到毫秒. B:构造方法 public Date() public Date(long date) C:成员方法 public long getTime() public void setTime(long time)

java类Date类概述及其方法

1.Date类概述 类Date表示特定的瞬间,精确到毫秒 2.构造方法 public Date() public Date(long date) 3.成员方法 public long getTime() public void setTime(long time) package com; import java.util.Date; /**  * Date类概述  *  Date类表示特定的瞬间,精确到毫秒  *   * 构造方法  *  public Date()  *  public Da

Math类++Date类

package day06; /***** * Math类的演示 * Math类: * 1,Math类是final的 * 2,Math的构造方法是private的(不能手工new) * 3,Math提供的方法是静态的(全部都可以调用) * 常用的方法: * abs:绝对值 * sqrt:平方根 * pow(double a ,double b) a的b次幂 * log    自然对数 * exp    e为底的指数 * max(double a ,double b)    两个数求最大值 * m

java常用类————Date类

Date类在Java.util包中. 一.功能介绍:创建Date对象,获取时间,格式化输出的时间. 二.对象创建:1.使用Date类无参数的构造方法创建的对象可以获取本地时间.例如: Date nowTime=new Date(); 2.计算机时间的"公元"设置在1970年1月1日0时(格林尼治时间),可以根据这个使用Date类带参数的构造方法: Date(long time);来创建一个对象, 例如:Date date1=new Date(1000); Date date2=new

Java Date类和Calendar类的一个控制台打印日期的小程序

Java Date类和Calendar类的一个打印日期的小程序,可以直接用. package com.boy.Idate.calendar; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 控制台可视化日历 * @author 田硕 */ public class VisualCalendar {

包装类、Date类、SimpleDateFormat类(基本数据类型&lt;--&gt;String&lt;--&gt;日期/时间)

基本数据类型-->String "+"字符串连接符 基本数据类型<--String 基本数据类型 包装类 String-->xxx xxx parseXxx(String s) byte  Byte byte parseByte(String s) short   Short short parseShort(String s) int  Integer int parseInt(String s) long Long long parseLong(String s)