您的位置:首页 > 其它

第九周实验报告二

2012-05-07 19:05 363 查看
/* (程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生

* All rights reserved.

* 文件名称:

* 作 者: 鲍增凯

* 完成日期: 2012 年 5 月 7 日

* 版 本 号:

01.#include<iostream.h>   
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.    friend istream& operator >> (istream&, CTime&);//运算符重载为友元函数   
20.      
21.    friend ostream& operator << (ostream&, CTime&);//运算符重载为友元函数   
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所规定的时·分·秒后的时间   
40.      
41.    CTime operator-(CTime &c);  
42.      
43.    CTime operator+(int s);  
44.      
45.    CTime operator-(int 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);  
64.      
65.    CTime operator -=(int s);  
66.};  
67.  
68.istream& operator >> (istream& input, CTime& c)  
69.{  
70.    char f1, f2;  
71.      
72.    while(1)  
73.    {  
74.        cout << "请输入需要操作的时间(格式:(小时:分钟:秒钟)):";  
75.          
76.        input >> c.hour >> f1 >> c.minute >> f2 >> c.second;  
77.          
78.        if(c.hour > 24 || c.hour < 0 || c.minute > 60 || c.minute < 0 || c.second > 60 || c.second < 0 )  
79.        {  
80.            cout << "输入时间有误!!!"<< endl;  
81.        }  
82.          
83.        else  
84.        {  
85.            if(f1 != ':' || f2 != ':')  
86.                cout << "输入格式有误!!!" << endl;  
87.              
88.            else  
89.                break;  
90.        }  
91.    }  
92.      
93.    return input;  
94.}  
95.  
96.ostream& operator << (ostream& output, CTime& c)  
97.{  
98.    output << c.hour << ":" << c.minute << ":" << c.second <<endl;  
99.      
100.    return output;  
101.}  
102.  
103.CTime::CTime(int h , int m, int s)  
104.{  
105.    hour = h;  
106.      
107.    minute = m;  
108.      
109.    second = s;  
110.}  
111.  
112.bool CTime::operator >(CTime &t)  
113.{  
114.    if(hour > t.hour)  
115.    {  
116.        return true;  
117.    }  
118.    else  
119.    {  
120.        if(minute > t.minute)  
121.        {  
122.            return true;  
123.        }  
124.        else  
125.        {  
126.            if(second > t.second)  
127.            {  
128.                return true;  
129.            }  
130.            else  
131.            {  
132.                return false;  
133.            }  
134.        }  
135.    }  
136.}  
137.  
138.bool CTime::operator <(CTime &t)  
139.{  
140.    if(hour < t.hour)  
141.    {  
142.        return true;  
143.    }  
144.    else  
145.    {  
146.        if(minute < t.minute)  
147.        {  
148.            return true;  
149.        }  
150.        else  
151.        {  
152.            if(second < t.second)  
153.            {  
154.                return true;  
155.            }  
156.            else  
157.            {  
158.                return false;  
159.            }  
160.        }  
161.    }  
162.}  
163.  
164.bool CTime::operator >=(CTime &t)//{if(*this < t)return false; else return true;}   
165.{  
166.    if(hour < t.hour)  
167.    {  
168.        return false;  
169.    }  
170.    else  
171.    {  
172.        if(minute < t.minute)  
173.        {  
174.            return false;  
175.        }  
176.        else  
177.        {  
178.            if(second < t.second)  
179.            {  
180.                return false;  
181.            }  
182.        }  
183.    }  
184.}  
185.  
186.bool CTime::operator <=(CTime &t)//{if(*this > t)return false; else return true;}   
187.{  
188.    if(hour > t.hour)  
189.    {  
190.        return false;  
191.    }  
192.    else  
193.    {  
194.        if(minute > t.minute)  
195.        {  
196.            return false;  
197.        }  
198.        else  
199.        {  
200.            if(second > t.second)  
201.            {  
202.                return false;  
203.            }  
204.        }  
205.    }  
206.}  
207.  
208.bool CTime::operator ==(CTime &t)  
209.{  
210.    if(hour != t.hour)  
211.    {  
212.        return false;  
213.    }  
214.    else  
215.    {  
216.        if(minute != t.minute)  
217.        {  
218.            return false;  
219.        }  
220.        else  
221.        {  
222.            if(second != t.second)  
223.            {  
224.                return false;  
225.            }  
226.        }  
227.    }  
228.}  
229.  
230.  
231.bool CTime::operator !=(CTime &t)  
232.{  
233.    if(hour != t.hour)  
234.    {  
235.        return true;  
236.    }  
237.    else  
238.    {  
239.        if(minute != t.minute)  
240.        {  
241.            return true;  
242.        }  
243.        else  
244.        {  
245.            if(second != t.second)  
246.            {  
247.                return true;  
248.            }  
249.            else  
250.            {  
251.                return false;  
252.            }  
253.        }  
254.    }  
255.}  
256.  
257.CTime CTime::operator +(CTime &c)  
258.{  
259.    CTime c1;  
260.      
261.    c1.hour = hour + c.hour;  
262.      
263.    c1.minute = minute + c.minute;  
264.      
265.    c1.second = second + c.second;  
266.      
267.    if(c1.second >= 60)  
268.    {  
269.        c1.second = c1.second - 60;  
270.          
271.        c1.minute = c1.minute + 1;  
272.    }  
273.      
274.    if(c1.minute >= 60)  
275.    {  
276.        c1.minute = c1.minute - 60;  
277.          
278.        c1.hour = c1.hour + 1;  
279.    }  
280.      
281.    if(c1.hour >= 24)  
282.    {  
283.        c1.hour = c1.hour -24;  
284.    }  
285.      
286.    return c1;  
287.}  
288.  
289.CTime CTime::operator -(CTime &c)  
290.{  
291.    CTime c1;  
292.      
293.    c1.hour = hour - c.hour;  
294.      
295.    c1.minute = minute - c.minute;  
296.      
297.    c1.second = second - c.second;  
298.      
299.    if(c1.second < 0)  
300.    {  
301.        c1.second = 60 + c1.second;  
302.          
303.        c1.minute = c1.minute - 1;  
304.    }  
305.      
306.    if(c1.minute < 0)  
307.    {  
308.        c1.minute =60 + c1.minute;  
309.          
310.        c1.hour = c1.hour -1;  
311.    }  
312.      
313.    if(c1.hour < 0)  
314.    {  
315.        c1.hour = 24 + c1.hour;  
316.    }  
317.      
318.    return c1;  
319.}  
320.  
321.CTime CTime::operator +(int s)  
322.{  
323.    CTime c1;  
324.      
325.    c1.hour = hour;  
326.      
327.    c1.minute = minute;  
328.      
329.    c1.second = second + s;  
330.      
331.    if(c1.second >= 60)  
332.    {     
333.        c1.minute = c1.minute + (c1.second / 60);  
334.          
335.        c1.second = c1.second % 60;           
336.    }  
337.      
338.    if(c1.minute >= 60)  
339.    {  
340.        c1.hour = c1.hour + (c1.minute / 60);  
341.          
342.        c1.minute = c1.minute % 60;  
343.    }  
344.      
345.    if(c1.hour >= 24)  
346.    {  
347.        c1.hour = c1.hour % 24;  
348.    }  
349.      
350.    return c1;  
351.}  
352.  
353.CTime CTime::operator -(int s)  
354.{  
355.    CTime c1;  
356.      
357.    c1.hour = hour;  
358.      
359.    c1.minute = minute;  
360.      
361.    c1.second = second - s;  
362.      
363.    if(c1.second < 0)  
364.    {     
365.        c1.minute = c1.minute - 1 - (-c1.second / 60);  
366.          
367.        c1.second = 60 + c1.second % 60;              
368.    }  
369.      
370.    if(c1.minute < 0)  
371.    {  
372.        c1.hour = c1.hour - 1 - (-c1.minute / 60);  
373.          
374.        c1.minute = 60 + c1.minute % 60;  
375.    }  
376.      
377.    if(c1.hour < 0)  
378.    {  
379.        c1.hour = 24 + c1.hour;  
380.    }  
381.      
382.    return c1;  
383.}  
384.  
385.CTime CTime::operator ++(int)//定义后置自增运算符 "++"重载函数   
386.{  
387.    CTime temp(* this);  
388.      
389.    second ++;  
390.      
391.    if(second >= 60)  
392.    {  
393.        second = second -60;  
394.          
395.        ++ minute;  
396.    }  
397.    if(minute >= 60)  
398.    {  
399.        minute = minute - 60;  
400.          
401.        ++ hour;  
402.    }  
403.    if(hour >= 24)  
404.    {  
405.        hour = hour - 24;  
406.    }  
407.      
408.    return temp;  
409.}  
410.  
411.CTime CTime::operator ++()//定义前置自增运算符"++"重载函数   
412.{  
413.    if(++ second >= 60)  
414.    {  
415.        second = second -60;  
416.          
417.        ++ minute;  
418.          
419.        if(minute >= 60)  
420.        {  
421.            minute = minute -60;  
422.              
423.            ++ hour;  
424.              
425.            if(hour >= 24)  
426.            {  
427.                hour = hour - 24;  
428.            }  
429.        }  
430.    }  
431.      
432.    return * this;  
433.}  
434.  
435.CTime CTime::operator --(int)//定义后置自减运算符 "--"重载函数   
436.{  
437.    CTime temp(* this);  
438.      
439.    second --;  
440.      
441.    if(second < 0)  
442.    {  
443.        second = 60 + second;  
444.          
445.        -- minute;  
446.    }  
447.      
448.    if(minute < 0)  
449.    {  
450.        minute = 60 + minute;  
451.          
452.        -- hour;  
453.    }  
454.      
455.    if(hour < 0)  
456.    {  
457.        hour = 24 + hour;  
458.    }  
459.      
460.    return temp;  
461.}  
462.  
463.CTime CTime::operator --()//定义前置自减运算符"--"重载函数{*this = *this -1; return *this;}   
464.{  
465.    if(-- second <= 0)  
466.    {  
467.        second = 60 + second;  
468.          
469.        -- minute;  
470.    }  
471.      
472.    if(minute < 0)  
473.    {  
474.        minute = 60 + minute;  
475.          
476.        -- hour;  
477.    }  
478.      
479.    if(hour < 0)  
480.    {  
481.        hour = 24 + hour;  
482.    }  
483.      
484.    return * this;  
485.}  
486.  
487.CTime CTime::operator +=(CTime &c)//{*this = *this + c;return *this;}   
488.{  
489.      
490.      
491.    hour = hour + c.hour;  
492.      
493.    minute = minute + c.minute;  
494.      
495.    second = second + c.second;  
496.      
497.    if(second >= 60)  
498.    {  
499.        second = second - 60;  
500.          
501.        minute = minute + 1;  
502.    }  
503.      
504.    if(minute >= 60)  
505.    {  
506.        minute = minute - 60;  
507.          
508.        hour = hour + 1;  
509.    }  
510.      
511.    if(hour >= 24)  
512.    {  
513.        hour = hour -24;  
514.    }  
515.      
516.    return * this;//从定义前置"++" 来的灵感··int   
517.}  
518.  
519.CTime CTime::operator -=(CTime &c)  
520.{     
521.    hour = hour - c.hour;  
522.      
523.    minute = minute - c.minute;  
524.      
525.    second = second - c.second;  
526.      
527.    if(second < 0)  
528.    {  
529.        second = 60 + second;  
530.          
531.        minute = minute - 1;  
532.    }  
533.      
534.    if(minute < 0)  
535.    {  
536.        minute =60 + minute;  
537.          
538.        hour = hour -1;  
539.    }  
540.      
541.    if(hour < 0)  
542.    {  
543.        hour = 24 + hour;  
544.    }  
545.      
546.    return * this;  
547.}  
548.  
549.CTime CTime::operator +=(int s)  
550.{  
551.    hour = hour;  
552.      
553.    minute = minute;  
554.      
555.    second = second + s;  
556.      
557.    if(second >= 60)  
558.    {     
559.        minute = minute + (second / 60);  
560.          
561.        second = second % 60;             
562.    }  
563.      
564.    if(minute >= 60)  
565.    {  
566.        hour = hour + (minute / 60);  
567.          
568.        minute = minute % 60;  
569.    }  
570.      
571.    if(hour >= 24)  
572.    {  
573.        hour = hour % 24;  
574.    }  
575.      
576.    return * this;  
577.}  
578.  
579.CTime CTime::operator -=(int s)  
580.{  
581.    hour = hour;  
582.      
583.    minute = minute;  
584.      
585.    second = second - s;  
586.      
587.    if(second < 0)  
588.    {     
589.        minute = minute - 1 - (-second / 60);  
590.          
591.        second = 60 + second % 60;            
592.    }  
593.      
594.    if(minute < 0)  
595.    {  
596.        hour = hour - 1 - (-minute / 60);  
597.          
598.        minute = 60 + minute % 60;  
599.    }  
600.      
601.    if(hour < 0)  
602.    {  
603.        hour = 24 + hour;  
604.    }  
605.      
606.    return * this;  
607.}  
608.  
609.int main()  
610.{  
611.    CTime c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c0, c00, c000,c0000;  
612.      
613.    cout << "1,实现时间与具体秒数的相减" << endl;  
614.      
615.    cin >> c1;  
616.      
617.    cout << "c1 = " << c1;  
618.      
619.    c000 = c1 - 240;  
620.      
621.    cout << "c1 - 240 = " << c000 ;  
622.      
623.    cout << "2,实现时间与具体秒数的相加" << endl;  
624.      
625.    cin >> c2;  
626.      
627.    cout << "c2 = " << c2;  
628.      
629.    c0000 = c2 + 234;  
630.      
631.    cout << "c2 + 234 = " << c0000 ;  
632.      
633.    cout << "3.实现两时间的各种比较" << endl;  
634.      
635.    cout << "c1 > c2" << (c1.operator >(c2)?" 成立":" 不成立") << endl;  
636.      
637.    cout << "c1 >= c2" << (c1.operator >=(c2)?" 成立":" 不成立") << endl;  
638.      
639.    cout << "c1 == c2" << (c1.operator ==(c2)?" 成立":" 不成立") << endl;  
640.      
641.    cout << "4.实现两时间的各种比较" << endl;  
642.      
643.    cin >> c3;  
644.      
645.    cout << "c3 = " << c3;  
646.      
647.    cin >> c4;  
648.      
649.    cout << "c4 = " << c4;  
650.      
651.    cout << "c3 < c4" << (c3.operator <(c4)?" 成立":" 不成立") << endl;  
652.      
653.    cout << "c3 <= c4" << (c3.operator <=(c4)?" 成立":" 不成立") << endl;  
654.      
655.    cout << "c3 != c4" << (c3.operator !=(c4)?" 成立":" 不成立") << endl;  
656.      
657.    cout << "5.实现两时间的相加减" << endl;  
658.      
659.    cin >> c5;  
660.      
661.    cout << "c5 = " << c5;  
662.      
663.    c0 = c1 + c5;  
664.      
665.    cout << "c1 + c5 = " << c0 ;  
666.      
667.    c00 = c1 - c5;  
668.      
669.    cout << "c1 - c5 = " << c00 ;  
670.      
671.    cout << "6.实现时间的后置自加运算" << endl;  
672.      
673.    cin >> c6;  
674.      
675.    cout << "c6 = " << c6;  
676.      
677.    c6  ++;  
678.      
679.    cout << "c6++ = " << c6;  
680.      
681.    cout << "7.实现时间的前置自加运算" << endl;  
682.      
683.    cin >> c7;  
684.      
685.    cout << "c7 = " << c7;  
686.      
687.    ++ c7;  
688.      
689.    cout << "++c7 = " << c7;  
690.      
691.    cout << "8.实现时间的后置自减运算" << endl;  
692.      
693.    cin >> c8;  
694.      
695.    cout << "c8 = " << c8;  
696.      
697.    c8 --;  
698.      
699.    cout << "c8-- = " << c8;  
700.      
701.    cout << "9.实现时间的前置自减运算" << endl;  
702.      
703.    cin >> c9;  
704.      
705.    cout << "c9 = " << c9;  
706.      
707.    -- c9;  
708.      
709.    cout << "--c9 = " << c9;  
710.      
711.    cout << "10.实现时间与时间的+=运算" << endl;  
712.      
713.    cin >> c10;  
714.      
715.    cout << "c10 = " << c10;  
716.      
717.    cin >> c11;  
718.      
719.    cout << "c11 = " << c11;  
720.      
721.    c10 += c11;  
722.      
723.    cout << "(c10 += c11) = " << c10;  
724.      
725.    cout << "11.实现时间与时间的-=运算" << endl;  
726.      
727.    cin >> c12;  
728.      
729.    cout << "c12 = " << c12;  
730.      
731.    cin >> c13;  
732.      
733.    cout << "c13 = " << c13;  
734.      
735.    c12 -= c13;  
736.      
737.    cout << "(c12 -= c13) = " << c12;  
738.      
739.    cout << "12.实现时间与具体秒数的+=运算" << endl;  
740.      
741.    cin >> c14;  
742.      
743.    cout << "c14 = " << c14;  
744.      
745.    c14 += 18;  
746.      
747.    cout<< "(c14 += 18) = " << c14;  
748.      
749.    cout << "13.实现时间与具体秒数的-=运算" << endl;  
750.      
751.    cin >> c15;  
752.      
753.    cout << "c15 = " << c15;  
754.      
755.    c15 -= 15;  
756.      
757.    cout << "(c15 -= 15) = " << c15;  
758.      
759.    //system("pause");   
760.      
761.    return 0;  
762.}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: