C#面向对象编程1

创建一个Time类,具有以下成员:
(1)int类型字段hour, minute, second;
(2)int类型属性Hour, Minute, Second,其中,要求在set访问器对用户提供的值进行校验,Hour在0-23之间,Minute和Second均在0-59之间。被赋其它值时抛出异常,抛出方法:
throw new ArgumentOutOfRangeException(nameof(value), value,
$"{nameof(Hour)} must be 0 - 23");
(3)编写无参构造函数和三参构造函数。无参构造函数调用三参构造函数。为参数提供默认值0;
(4)编写Time Next(int hour, int minute, int second)函数,在现有时间上加上参数指定时间段后,返回新的时间信息;
(5)编写string ToUniversalString()方法,输出24时制的时分秒信息;
(6)编写string ToString()方法,加上override修饰,输出12时制的时间信息,并添加AM和PM后缀。
测试代码和输出如下所示:

var t1 = new Time2();
var t2 = new Time2(2);
var t3 = new Time2(21, 34);
var t4 = new Time2(12, 25, 42);
var t5 = new Time2(t4);
t5.Hour = 15;
var t6 = t5.Next(10, 40, 0);
Console.WriteLine("t1:");
Console.WriteLine($"{t1.ToUniversalString()}");
Console.WriteLine($"{t1.ToString()}\n");
Console.WriteLine("t2:");
Console.WriteLine($"{t2.ToUniversalString()}");
Console.WriteLine($"{t2.ToString()}\n");
Console.WriteLine("t3:");
Console.WriteLine($"{t3.ToUniversalString()}");
Console.WriteLine($"{t3.ToString()}\n");
Console.WriteLine("t4:");
Console.WriteLine($"{t4.ToUniversalString()}");
Console.WriteLine($"{t4.ToString()}\n");
Console.WriteLine("t5:");
Console.WriteLine($"{t5.ToUniversalString()}");
Console.WriteLine($"{t5.ToString()}\n");
Console.WriteLine("t6:");
Console.WriteLine($"{t6.ToUniversalString()}");
Console.WriteLine($"{t6.ToString()}\n");	

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp9
{
    public class Time
    {
        int hour, minute, second;
        public int Hour
        {
            get { return hour; }
            set
            {
                if (value >= 0 && value <= 23)
                {
                    hour = value;
                }
                else
                {
                    throw new ArgumentOutOfRangeException(nameof(value), value, $"{nameof(Hour)} must be 0 - 23");
                }

            }
        }
        public int Minute
        {
            get { return minute; }
            set
            {
                if (value >= 0 && value <= 59)
                {
                    minute = value;
                }
                else
                {
                    throw new ArgumentOutOfRangeException(nameof(value), value, $"{nameof(Minute)} must be 0 - 59");
                }

            }
        }
        public int Second
        {
            get { return second; }
            set
            {
                if (value >= 0 && value <= 59)
                {
                    second = value;
                }
                else
                {
                    throw new ArgumentOutOfRangeException(nameof(value), value, $"{nameof(Second)} must be 0 - 59");
                }

            }
        }
        public Time(int h=0, int m=0, int s=0)
        {
            hour = h;
            minute = m;
            second = s;
        }
        public Time() : this(0, 0, 0) { }

        public Time(Time t) : this(t.hour,t.minute,t.second) { }

        //在现有时间上加上参数指定时间段后,返回新的时间信息;
        public Time Next(int hour1, int minute1, int second1)
        {
            if (Second + second1 <= 59)
            {
                second1 = Second + second1;

                if (Minute + minute1 <= 59)
                {
                    minute1 = Minute + minute1;

                    if (Hour + hour1 <= 23)
                    {
                        hour1 = Hour + hour1;
                    }
                    else
                        hour1 = Hour + hour1 - 24;
                }
                else
                {
                    minute1 = Minute + minute1 - 60;
                    if (Hour + hour1 <= 23)
                    {
                        hour1 = Hour + hour1 + 1;
                    }
                    else
                    {
                        hour1 = Hour + hour1 + 1 - 24;
                    }
                }
            }
            else 
            {
                second1 = Second + second1 - 60;
                if (Minute + minute1 <= 59)
                {
                    minute1 = Minute + minute1 + 1;
                    if (Hour + hour1 <= 23)
                    {
                        hour1 = Hour + hour1;
                    }
                    else
                        hour1 = Hour + hour1 - 24;
                }
                else
                {
                    minute1 = Minute + minute1 +1 - 60;
                    if (Hour + hour1 <= 23)
                    {
                        hour1 = Hour + hour1 + 1;
                    }
                    else
                    {
                        hour1 = Hour + hour1 + 1 - 24;
                    }
                }
            }
            Time T = new Time(hour1, minute1, second1);
            return T;
        }

        //输出24时制的时分秒信息
        public string ToUniversalString() =>
            $"{Hour,02}:{Minute,02}:{Second,02}";//02意思是占两位

        //输出12时制的时间信息,并添加AM和PM后缀
        public override string ToString()
        {
            if (hour < 12)
            {
                return $"{Hour,02}:{Minute,02}:{Second,02}AM";
            }
            else if (hour == 12)
            {
                return $"{Hour,02}:{Minute,02}:{Second,02}PM";
            }
            else
            {
                return $"{Hour - 12,02}:{Minute,02}:{Second,02}PM";
            }
        }

        static void Main(string[] args)
        {
            var t1 = new Time();
            var t2 = new Time(2);
            var t3 = new Time(21, 34);
            var t4 = new Time(12, 25, 42);
            var t5 = new Time(t4);
            t5.Hour = 15;
            var t6 = t5.Next(10, 40, 0);
            Console.WriteLine("t1:");
            Console.WriteLine($"{t1.ToUniversalString()}");
            Console.WriteLine($"{t1.ToString()}\n");
            Console.WriteLine("t2:");
            Console.WriteLine($"{t2.ToUniversalString()}");
            Console.WriteLine($"{t2.ToString()}\n");
            Console.WriteLine("t3:");
            Console.WriteLine($"{t3.ToUniversalString()}");
            Console.WriteLine($"{t3.ToString()}\n");
            Console.WriteLine("t4:");
            Console.WriteLine($"{t4.ToUniversalString()}");
            Console.WriteLine($"{t4.ToString()}\n");
            Console.WriteLine("t5:");
            Console.WriteLine($"{t5.ToUniversalString()}");
            Console.WriteLine($"{t5.ToString()}\n");
            Console.WriteLine("t6:");
            Console.WriteLine($"{t6.ToUniversalString()}");
            Console.WriteLine($"{t6.ToString()}\n");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值