第八周实验报告(二)
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.}
相关文章推荐
- 第八周实验报告
- 第八周实验报告任务1 实现复数类中的运算符重载
- 第八周实验报告任务3 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除,求反,比较6种关系的运算。
- 第八周实验报告 任务三(改)
- 第八周实验报告4
- 第八周实验报告4
- 第八周实验报告4
- 第一学期第八周实验报告
- 第八周实验报告1
- 第八周实验报告(一)《方案二》用类的友元函数
- 第八周实验报告1——成员函数
- 第八周实验报告4
- 第八周实验报告(1-2)
- 第八周实验报告 任务四(改)
- 第八周实验报告任务3
- 第八周实验报告2
- 第八周实验报告3
- 第八周实验报告1
- 第八周实验报告2
- 第八周实验报告任务4 实现分数类中的运算符重载,分数类中的对象可以和整数型进行四则运算,且运算符合交换律。