版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、日期類設(shè)計(jì)報(bào)告1. 設(shè)計(jì)題目設(shè)計(jì)一個(gè)日期類,(學(xué)號(hào)尾號(hào)2、5、8完成)要求:2. 設(shè)計(jì)要求l 重載帶參數(shù)構(gòu)造函數(shù)(int year ,int month, int day)和默認(rèn)構(gòu)造函數(shù),前者要求不合要求的數(shù)據(jù)(年月日超出范圍)拋出異常l 計(jì)算出該日是星期幾,(網(wǎng)上找公式)。l 重載“+”操作,一個(gè)日期對(duì)象和天數(shù)相加(符合交換律)。l 重載“-”操作,兩天日期對(duì)象相減返回相差天數(shù)。 l 重載“+=”操作當(dāng)前日期加天數(shù)l 重載輸入輸出操作。3. 設(shè)計(jì)分析由題中要求可以知道,首先要設(shè)計(jì)一個(gè)日期類(class Cdate),還要有構(gòu)造函數(shù),明白函數(shù)的帶參與不帶參的區(qū)別;而且在日期類之中需要設(shè)計(jì)正確的
2、日期格式,若不正確則實(shí)現(xiàn)拋出異常,C+中對(duì)異常的處理分為拋出異常、捕獲異常、處理異常;在此處只要求拋出異常即可,接下來(lái)的實(shí)現(xiàn)輸入日期計(jì)算星期幾的代碼,。由題可以進(jìn)行網(wǎng)上的搜索,這個(gè)應(yīng)該行對(duì)簡(jiǎn)單!之后就是重載的操作啦!4. 設(shè)計(jì)主要模塊(代碼實(shí)現(xiàn))1. 定義一個(gè)日期類class CDatepublic:CDate()CDate(int y,int m,int d);void fun();void display();friend CDate operator + (int d,CDate dt);friend CDate operator - (CDate &dt1,CDate &
3、;dt2);friend CDate &operator += (CDate &a1,int d);friend std:ostream& operator<< ( std:ostream& os, CDate& dt );friend std:istream& operator>> ( std:istream& is, CDate& dt );bool isleapyear();/ 潤(rùn)年的判定bool status;bool check();void gettian();private:int year,
4、month,day,day1;int d,D,D1,D2,D3;CDate:CDate (int y,int m,int d):year(y),month(m),day(d)2. 實(shí)現(xiàn)計(jì)算星期幾:#include <iostream>using namespace std;class Dateint year,month,day;bool isleap(int i) constreturn i%400=0|i%4=0&&i%100!=0;/閏年的判定public:Date(int y, int m, int d): year(y), month(m), day(d)
5、 void print() constchar* s = "星期日,"星期一","星期二","星期三","星期四","星期五","星期六"int d13 = 0,31,28,31,30,31,30,31,31,30,31,30;int sum = 0;int i;if(isleap(year)d2 +;for(i=1;i<year;i+)sum += 365 + isleap(i);for(i=1;i<month;i+)sum += di;sum +=
6、day;cout << ssum%7 << endl;int main()int year,month,day;while(cin >> year >> month >> day && year + month + day)Date d(year,month,day);d.print();3. 重載日期加減的操作:CDate operator - (CDate &dt1,CDate &dt2) /重載-計(jì)算兩日期對(duì)象的天數(shù)差;CDate dt3;if(dt1.year%4=0&&dt1.
7、year%100!=0|dt1.year%400=0)mon_day1=29;if(dt2.year%4=0&&dt2.year%100!=0|dt2.year%400=0)mon_day1=29; dt1.D =(dt1.year-1)*365+(dt1.year-1)/4-(dt1.year-1)/100+(dt1.year-1)/400+dt1.D1 +dt1.day ; for(int i=0;i<=dt1.month -1;i+)dt1.D1 +=mon_dayi;dt2.D2 =(dt2.year -1)*365+(dt2.year-1)/4-(dt2.yea
8、r-1)/100+(dt2.year-1)/400+dt2.D3 +dt2.day ;for(int j=0;j<=dt2.month -1;j+)dt2.D3 +=mon_dayj;dt3.d =dt1.D -dt2.D2 ; return dt3;4. 調(diào)試運(yùn)行圖示1.判斷日期格式是否正確2,輸入日期并且計(jì)算星期幾,返回與系統(tǒng)中初始設(shè)定日期的相差天數(shù):5. 源代碼附錄:#include <iostream>#include <stdio.h>#include <string.h>using namespace std;class CDate; /聲
9、明類;CDate operator + (int d,CDate dt); /必須在此先聲明重載 CDate operator -(CDate &dt1,CDate &dt2);CDate &operator += (CDate &a1,int d);CDate &operator << (CDate &a1,int d);std:ostream& operator<< ( std:ostream& os, CDate& dt );std:istream& operator>>
10、( std:istream& is, CDate& dt );char *week="星期日","星期一","星期二","星期三","星期四","星期五","星期六" /指針數(shù)組,保存星期;int mon_day=31,28,31,30,31,30,31,31,30,31,30,31; /數(shù)組,保存每月天數(shù);class CDatepublic:CDate()CDate(int y,int m,int d);void fun();void d
11、isplay();friend CDate operator + (int d,CDate dt);friend CDate operator - (CDate &dt1,CDate &dt2);friend CDate &operator += (CDate &a1,int d);friend std:ostream& operator<< ( std:ostream& os, CDate& dt );friend std:istream& operator>> ( std:istream& is
12、, CDate& dt );bool isleapyear();/ 潤(rùn)年的判定bool status;bool check();void gettian();private:int year,month,day,day1;int d,D,D1,D2,D3;CDate:CDate (int y,int m,int d):year(y),month(m),day(d)void CDate:gettian ()cout<<"兩天日期對(duì)象相減返回相差天數(shù):"<<d<<endl;bool CDate:isleapyear()return (
13、year % 4) = 0) && (year % 100) != 0) | (year % 400) = 0);bool CDate:check()if (year < 0)status = false;return status;if (month < 1) | (month > 12)status = false;return status;switch (month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:if (day < 1) | (day> 31)status = fals
14、e;break;case 2:if (isleapyear()if (day < 1) | (day > 29)status = false;elseif (day < 1) | (day > 28)status = false;break;case 4:case 6:case 9:case 11:if (day < 1) | (day> 30)status = false;break;default:status = false;if (status)cout<<year<<"/"<<month<
15、;<"/"<<day<<endl;cout<<"恭喜日期正確了!"<<endl;return status;void CDate:fun ()int C,W,y;cout<<"請(qǐng)輸入日期!"<<endl;cout<<"年份:"cin>>year;cout<<"月份:"cin>>month;cout<<"日期:"cin>>day;
16、if(year<=0|month<=0|month>12|day<=0|day>31)cout<<"請(qǐng)輸入正確的日期!"<<endl;elseif(month=1|month=2)month+=12;-year;elseC=year/100;y=year%100;W=(C/4)-2*C+y+(y/4)+(13*(month+1)/5)+day-1)+700)%7;cout<<"今天是"<<weekW<<endl;void CDate:display ()if(yea
17、r<=0|month<=0|month>12|day<=0|day>31)cout<<"請(qǐng)輸入正確的日期!"<<endl;else cout<<year<<"/"<<month<<"/"<<day<<endl;CDate operator + (int d,CDate dt)dt.day=dt.day+d;while(dt.day>mon_daydt.month-1)if(dt.year%4=0&
18、&dt.year%100!=0|dt.year%400=0)mon_day1=29;dt.day-=mon_daydt.month-1;if(+dt.month=13)dt.month=1;dt.year+;return dt;CDate operator - (CDate &dt1,CDate &dt2) /重載-計(jì)算兩日期對(duì)象的天數(shù)差;CDate dt3;if(dt1.year%4=0&&dt1.year%100!=0|dt1.year%400=0)mon_day1=29;if(dt2.year%4=0&&dt2.year%100!=
19、0|dt2.year%400=0)mon_day1=29; dt1.D =(dt1.year-1)*365+(dt1.year-1)/4-(dt1.year-1)/100+(dt1.year-1)/400+dt1.D1 +dt1.day ; for(int i=0;i<=dt1.month -1;i+)dt1.D1 +=mon_dayi;dt2.D2 =(dt2.year -1)*365+(dt2.year-1)/4-(dt2.year-1)/100+(dt2.year-1)/400+dt2.D3 +dt2.day ;for(int j=0;j<=dt2.month -1;j+)d
20、t2.D3 +=mon_dayj;dt3.d =dt1.D -dt2.D2 ; return dt3;CDate &operator += (CDate &a1,int d)if(a1.year%4=0&&a1.year%100!=0|a1.year%400=0)mon_day1=29;a1.day+=d;while(a1.day>mon_daya1.month-1)a1.day-=mon_daya1.month-1;if(+a1.month=13)a1.month=1;a1.year+;return a1;std:ostream& operato
21、r<< ( std:ostream& os, CDate& dt ) os << dt.year << '/' << dt.month << '/' << dt.day ; return os;std:istream& operator>> ( std:istream& is, CDate& dt ) is >> dt.year >> dt.month >> dt.day ; return is;int
22、_tmain(int argc, _TCHAR* argv)CDate b2(2021,2,29);b2.check ();CDate b5(2021,6,9);b5.check ();/b2.display (); / CDate b1(-1231,10,17);/b1.display ();/cout<<"*"<<endl;/b1.fun ();/CDate b3(1992,10,17); / CDate b4;/b4=12+b3;/b4.display (); /CDate dt1(2021 ,1,1);/CDate dt2(2021 ,1,1
23、);/CDate dt3;/dt3=dt1-dt2;/dt3.gettian ();/CDate a1(1992,10,17);/a1+=2;/a1.display ();/CDate dt( 1992,10,17); /std:cout << dt<<endl;/cout<<"請(qǐng)輸入日期:"/std:cin>>dt;/cout<<endl;return 0; 公司印章管理制度一、目的 公司印章是公司對(duì)內(nèi)對(duì)外行使權(quán)力的標(biāo)志,也是公司名稱的法律體現(xiàn), 因此,必須對(duì)印章進(jìn)行規(guī)范化、合理化的嚴(yán)格管理,以保證公司各項(xiàng)業(yè)務(wù)的正常運(yùn)作,由公司指定專人負(fù)責(zé)管理。二、印章的種類1、 公章,是按照政府規(guī)定,由主管部門批準(zhǔn)刻制的代表公
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 無(wú)線崗位高級(jí)工復(fù)習(xí)測(cè)試題
- 集訓(xùn)04 世界古代史選擇題100題(原卷版)
- 我的家鄉(xiāng)梅州
- 空芯光纖太赫茲波理論探索與實(shí)踐
- 量子失協(xié)噪聲信道解析
- 小學(xué)教學(xué)樓電梯安裝合同
- 服裝設(shè)計(jì)師聘用合同模板
- 2024年雨傘出口購(gòu)銷合同樣本3篇
- 2024年食堂肉類產(chǎn)品冷鏈物流配送服務(wù)合同2篇
- 二零二五年城市廣場(chǎng)護(hù)欄美化升級(jí)合同3篇
- 無(wú)人駕駛 物流行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 浙江省寧波市慈溪市2023-2024學(xué)年高二上學(xué)期期末考試 數(shù)學(xué) 含解析
- 代理記賬有限公司簡(jiǎn)介(5個(gè)范本)
- 1646 法律職業(yè)倫理
- 2024年安徽安慶宜秀區(qū)國(guó)企業(yè)招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 8年級(jí)上冊(cè)(人教版)物理電子教材-初中8~9年級(jí)物理電子課本
- 不動(dòng)產(chǎn)登記申請(qǐng)表
- 2024年中國(guó)中鐵十局招聘高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 項(xiàng)目資金管理統(tǒng)籌實(shí)施方案
- 高中英語(yǔ)新課程標(biāo)準(zhǔn)解讀課件
- 國(guó)家開(kāi)放大學(xué)電大《金融市場(chǎng)》教學(xué)考一體化網(wǎng)考形考試題及答案-圖文
評(píng)論
0/150
提交評(píng)論