您的位置:首页 > 其它

第八周实验报告(二)

2012-04-18 18:09 302 查看
01.#include <iostream>  
02.  
03.using namespace std;  
04.  
05.class CTime  
06.{  
07.private:  
08.  
09.    unsigned short int hour;    // 时  
10.  
11.    unsigned short int minute;  // 分  
12.  
13.    unsigned short int second;  // 秒  
14.  
15.public:  
16.  
17.    CTime ( int h = 0 , int m = 0 , int s = 0 ) ;  
18.  
19.    void setTime ( int h ,int m ,int s ) ;  
20.  
21.    void display ( ) ;  
22.  
23.    //比较运算符(二目)的重载  
24.  
25.    bool operator > ( CTime &t );  
26.  
27.    bool operator < ( CTime &t );  
28.  
29.    bool operator >= ( CTime &t );  
30.  
31.    bool operator <= ( CTime &t );  
32.  
33.    bool operator == ( CTime &t );  
34.  
35.    bool operator != ( CTime &t );  
36.  
37.    //二目运算符的重载  
38.  
39.    CTime operator + ( CTime &c );              //返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15  
40.  
41.    CTime operator - ( CTime &c );              //对照+理解  
42.  
43.    CTime operator + ( int s );                 //返回s秒后的时间  
44.  
45.    CTime operator - ( int s);                  //返回s秒前的时间  
46.  
47.    //一目运算符的重载  
48.  
49.    CTime operator ++ ( int );                  //后置++,下一秒  
50.  
51.    CTime operator ++();                        //前置++,下一秒  
52.  
53.    CTime operator -- ( int );                  //后置--,前一秒  
54.  
55.    CTime operator --( );                       //前置--,前一秒  
56.  
57.    //赋值运算符的重载   
58.  
59.    CTime operator += ( CTime &c );  
60.  
61.    CTime operator -= ( CTime &c );  
62.  
63.    CTime operator += ( int s );                //返回s秒后的时间  
64.  
65.    CTime operator -= ( int s );                //返回s秒前的时间  
66.  
67.};  
68.//下面实现所有的运算符重载代码。  
69.  
70.CTime::CTime ( int h, int m, int s )  
71.  
72.{  
73.  
74.    hour = h;  
75.  
76.    minute = m;  
77.  
78.    second = s;  
79.  
80.}    
81.  
82.void CTime::display()  
83.  
84.{  
85.  
86.    cout << hour << ':' << minute << ':' << second << endl;  
87.  
88.}    
89.  
90.    //比较运算符(二目)的重载  
91.  
92.bool CTime::operator > ( CTime &t )  
93.  
94.{  
95.  
96.    if ( hour > t.hour )  
97.  
98.    {  
99.  
100.        return true;  
101.  
102.    }  
103.    if ( minute > t.minute )  
104.  
105.    {  
106.  
107.        return true;  
108.  
109.    }  
110.    if ( second > t.second )  
111.  
112.    {  
113.  
114.        return true;  
115.  
116.    }  
117.    else  
118.  
119.    {  
120.  
121.        return false;  
122.  
123.    }  
124.  
125.}  
126.  
127.  
128.bool CTime::operator < ( CTime &t )  
129.  
130.{  
131.  
132.    if ( hour < t.hour )  
133.  
134.        return true;  
135.  
136.    if ( minute < t.minute )  
137.  
138.        return true;  
139.  
140.    if ( second < t.second )  
141.  
142.        return true;  
143.  
144.    else  
145.  
146.        return false;  
147.  
148.}  
149.bool CTime::operator >= ( CTime &t )  
150.  
151.{  
152.  
153.    if ( operator < ( t ) == 0 )  
154.  
155.        return true;  
156.  
157.    else  
158.  
159.        return false;  
160.  
161.}  
162.bool CTime::operator <= ( CTime &t )  
163.  
164.{  
165.  
166.    if ( operator > ( t ) == 0 )  
167.  
168.        return true;  
169.  
170.    else  
171.  
172.        return false;  
173.  
174.}  
175.bool CTime::operator == ( CTime &t )  
176.  
177.{  
178.  
179.    if( operator > ( t ) == 0 && operator < ( t ) == 0 )  
180.  
181.        return true;  
182.  
183.    else  
184.  
185.        return false;  
186.  
187.}  
188.bool CTime::operator != ( CTime &t )  
189.  
190.{   
191.    if ( operator == ( t ) == 0 )  
192.  
193.        return true;  
194.  
195.    else  
196.  
197.        return false;  
198.  
199.}  
200.  
201.    //二目运算符的重载  
202.  
203.//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15  
204.  
205.CTime CTime::operator + ( CTime &c )  
206.  
207.{  
208.  
209.    CTime t;  
210.  
211.    t.hour = hour + c.hour;  
212.  
213.    t.minute = minute + c.minute;  
214.  
215.    t.second = second + c.second;  
216.  
217.    if ( t.second >= 60 )  
218.  
219.    {  
220.  
221.        t.second -= 60;  
222.  
223.        ++ t.minute;  
224.  
225.    }  
226.    else if ( t.minute >= 60 )  
227.  
228.    {  
229.  
230.        t.minute -= 60;  
231.  
232.        ++ t.hour;  
233.  
234.    }  
235.  
236.    else if ( t.hour >= 24 )  
237.  
238.    {  
239.  
240.        t.hour -= 24;  
241.  
242.    }  
243.  
244.    return t;  
245.  
246.}  
247.  
248.//对照+理解  
249.  
250.CTime CTime::operator - ( CTime &c )  
251.  
252.{  
253.  
254.    CTime t;  
255.  
256.    t.hour = hour - c.hour;  
257.  
258.    t.minute = minute - c.minute;  
259.  
260.    t.second = second - c.second;  
261.  
262.    if ( t.second >= 60 )  
263.  
264.    {  
265.  
266.        t.second -= 60;  
267.  
268.        ++ t.minute;  
269.  
270.    }  
271.  
272.    else if ( t.minute >= 60 )  
273.  
274.    {  
275.  
276.        t.minute -= 60;  
277.  
278.        ++ t.hour;  
279.  
280.    }  
281.  
282.    else if ( t.hour >= 24 )  
283.  
284.    {  
285.  
286.        t.hour -= 24;  
287.  
288.    }  
289.  
290.    return t;  
291.  
292.}  
293.  
294.//返回s秒后的时间  
295.  
296.CTime CTime::operator + ( int s )  
297.  
298.{  
299.  
300.    *this = *this + s;  
301.  
302.    return *this;  
303.  
304.}   
305.  
306.//返回s秒前的时间  
307.  
308.CTime CTime::operator - ( int s )  
309.  
310.{  
311.  
312.    CTime t;  
313.  
314.    t.second = second - s;  
315.  
316.    if ( t.second >= 60 )  
317.  
318.    {  
319.  
320.        t.second -= 60;  
321.  
322.        -- t.minute;  
323.  
324.    }  
325.  
326.    else if ( t.minute >= 60 )  
327.  
328.    {  
329.  
330.        t.minute -= 60;  
331.  
332.        -- t.hour;  
333.  
334.    }  
335.  
336.    else if ( t.hour >= 24 )  
337.  
338.    {  
339.  
340.        t.hour -= 24;  
341.  
342.    }  
343.  
344.    return t;  
345.  
346.}  
347.  
348.    //一目运算符的重载  
349.  
350.//后置++,下一秒  
351.  
352.CTime CTime :: operator ++ ( int )  
353.  
354.{  
355.  
356.    CTime temp ( *this );  
357.  
358.    second ++;  
359.  
360.    if ( second >= 60 )  
361.  
362.    {  
363.  
364.        second -= 60;  
365.  
366.        ++ minute;  
367.  
368.    }  
369.  
370.    else if ( minute >= 60 )  
371.  
372.    {  
373.  
374.        minute -= 60;  
375.  
376.        ++ hour;  
377.  
378.    }  
379.  
380.    else if ( hour >= 24 )  
381.  
382.    {  
383.  
384.        hour -= 24;  
385.  
386.    }  
387.  
388.    return temp;  
389.  
390.}  
391.  
392.//前置++,下一秒  
393.  
394.CTime CTime::operator ++ ( )  
395.  
396.{  
397.  
398.    CTime temp ( *this );  
399.      
400.    if ( ++ second >= 60 )  
401.  
402.    {  
403.  
404.        second -= 60;  
405.  
406.        ++ minute;  
407.  
408.    }  
409.  
410.    else if ( minute >= 60 )  
411.  
412.    {  
413.  
414.        minute -= 60;  
415.  
416.        ++ hour;  
417.  
418.    }  
419.  
420.    else if ( hour >= 24 )  
421.  
422.    {  
423.  
424.        hour -= 24;  
425.  
426.    }  
427.  
428.    return temp;  
429.  
430.}  
431.  
432.//后置--,前一秒  
433.  
434.CTime CTime::operator -- ( int )  
435.  
436.{  
437.  
438.    CTime temp ( *this );  
439.  
440.    second --;  
441.  
442.    if ( second >= 60 )  
443.  
444.    {  
445.  
446.        second -= 60;  
447.  
448.        -- minute;  
449.  
450.    }  
451.  
452.    else if ( minute >= 60 )  
453.  
454.    {  
455.  
456.        minute -= 60;  
457.  
458.        -- hour;  
459.  
460.    }  
461.  
462.    else if ( hour >= 24 )  
463.  
464.    {  
465.  
466.        hour -= 24;  
467.  
468.    }  
469.  
470.    return temp;  
471.  
472.}  
473.  
474.//前置--,前一秒  
475.  
476.CTime CTime::operator --( )  
477.  
478.{  
479.  
480.    CTime temp ( *this );  
481.      
482.    if ( --second >= 60 )  
483.  
484.    {  
485.  
486.        second -= 60;  
487.  
488.        -- minute;  
489.  
490.    }  
491.  
492.    else if ( minute >= 60 )  
493.  
494.    {  
495.  
496.        minute -= 60;  
497.  
498.        -- hour;  
499.  
500.    }  
501.  
502.    else if ( hour >= 24 )  
503.  
504.    {  
505.  
506.        hour -= 24;  
507.  
508.    }  
509.  
510.    return temp;  
511.  
512.}  
513.  
514.  
515.    //赋值运算符的重载    
516.  
517.CTime CTime::operator += ( CTime &c )  
518.  
519.{  
520.  
521.    CTime t;  
522.  
523.    t.hour = hour + c.hour;  
524.  
525.    t.minute = minute + c.minute;  
526.  
527.    t.second = second + c.second;  
528.  
529.    if ( t.second >= 60 )  
530.  
531.    {  
532.  
533.        t.second -= 60;  
534.  
535.        ++ t.minute;  
536.  
537.    }  
538.  
539.    else if ( t.minute >= 60 )  
540.  
541.    {  
542.  
543.        t.minute -= 60;  
544.  
545.        ++ t.hour;  
546.  
547.    }  
548.  
549.    else if ( t.hour >= 24 )  
550.  
551.    {  
552.  
553.        t.hour -= 24;  
554.  
555.    }  
556.  
557.    return t;  
558.  
559.}  
560.  
561.CTime CTime::operator -= ( CTime &c )  
562.  
563.{  
564.  
565.    CTime t;  
566.  
567.    t.hour = hour - c.hour;  
568.  
569.    t.minute = minute - c.minute;  
570.  
571.    t.second = second - c.second;  
572.  
573.    if ( t.second >= 60 )  
574.  
575.    {  
576.  
577.        t.second -= 60;  
578.  
579.        -- t.minute;  
580.  
581.    }  
582.  
583.    else if (t.minute >= 60 )  
584.  
585.    {  
586.  
587.        t.minute -= 60;  
588.  
589.        -- t.hour;  
590.  
591.    }  
592.  
593.    else if ( t.hour >= 24 )  
594.  
595.    {  
596.  
597.        t.hour -= 24;  
598.  
599.    }  
600.  
601.    return t;  
602.  
603.}  
604.  
605.//返回s秒后的时间  
606.  
607.CTime CTime::operator += ( int s )  
608.  
609.{  
610.  
611.    CTime t ( *this );  
612.  
613.    t.second = second + s;  
614.  
615.    if ( t.second >= 60 )  
616.  
617.    {  
618.        t.second -= 60;  
619.  
620.        ++ t.minute;  
621.  
622.    }  
623.  
624.    else if ( t.minute >= 60 )  
625.  
626.    {  
627.  
628.        t.minute -= 60;  
629.  
630.        ++ t.hour;  
631.  
632.    }  
633.  
634.    else if ( t.hour >= 24 )  
635.  
636.    {  
637.  
638.        t.hour -= 24;  
639.  
640.    }  
641.  
642.    return t;  
643.  
644.}  
645.  
646.//返回s秒前的时间  
647.  
648.CTime CTime::operator -= ( int s )  
649.  
650.{  
651.  
652.    CTime t ( *this );  
653.  
654.    t.second = second - s;  
655.  
656.    if ( t.second >= 60 )  
657.  
658.    {  
659.  
660.        t.second -= 60;  
661.  
662.        -- t.minute;  
663.  
664.    }  
665.  
666.    else if ( t.minute >= 60 )  
667.  
668.    {  
669.  
670.        t.minute -= 60;  
671.  
672.        -- t.hour;  
673.  
674.    }  
675.  
676.    else if ( t.hour >= 24 )  
677.  
678.    {  
679.  
680.        t.hour -= 24;  
681.  
682.    }  
683.  
684.    return t;  
685.  
686.}  
687.  
688.//为简化编程,请注意通过调用已有函数,利用好各函数之间的关系  
689.  
690.void main ( )  
691.  
692.{  
693.  
694.    CTime t1( 8, 20, 25 ),t2 ( 11, 20, 50 ), t;  
695.  
696.    cout << "t1为:";  
697.  
698.    t1.display ( );  
699.  
700.    cout << "t2为:";  
701.  
702.    t2.display ( );  
703.  
704.    cout << "下面比较两个时间大小:\n";  
705.  
706.    if ( t1 > t2 ) cout << "t1>t2" << endl;  
707.  
708.    if ( t1 < t2 ) cout << "t1<t2" << endl;  
709.  
710.    if ( t1 == t2 ) cout << "t1=t2" << endl;  
711.  
712.    if ( t1 != t2 ) cout << "t1≠t2" << endl;  
713.  
714.    if ( t1 >= t2 ) cout << "t1≥t2" << endl;  
715.  
716.    if ( t1 <= t2 ) cout << "t1≤t2" << endl;  
717.  
718.    cout << endl;  
719.  
720.    system ( "pause" );  
721.  
722.}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: