版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、程序設計實踐報告學號 110342245 ;姓名 周宇桔 ;題目來源及序號 2010年題6-2 ;難度等級 B 一、題目第2題 日期格式處理a.程序功能簡介:一個處理日期格式得程序。b.設計要求:(1)解決程序運行中會出現(xiàn)非法操作的問題。(2)在源程序基礎上增加一個中文格式,使之能夠?qū)崿F(xiàn)中文日期的處理功能。(3)增加可以從文件中輸入日期的功能。(4)如有可擴充的好主意,請自行設計到程序中。二、問題分析及求解基本思路 該題目需要解決的功能較多,所以采用switch語句進行功能選擇,每個功能之間不影響。使用類更加方便。通過訪問類的成員函數(shù)來進行基本幾項的格式轉(zhuǎn)換。而從文件輸入這個功能,通過輸入輸出
2、流操作來達到目的;最后的日期計算則采用基本加減計算來達到目的。三、問題求解的整體框架結構 程序流程圖如圖1所示:Switch顯示可選功能并選擇定義類輸入路徑,打開文件失敗顯示失敗,成功則顯示其中日期內(nèi)容輸入日期輸入日期輸入日期輸入今天的年月日結束調(diào)用類的成員函數(shù)來轉(zhuǎn)換成為需要的格式調(diào)用類的成員函數(shù)來轉(zhuǎn)換成為需要的格式關閉文件開始是否非法是否非法是否非法是否閏年是,計算周幾否,計算周幾 否 否 否 是 是 是調(diào)用類的成員函數(shù)來轉(zhuǎn)換成為需要的格式圖1.程序流程圖四、主要算法算法1:輸入日期; 將日期分別賦值給對應變量yy,mm,dd; 輸出yy年mm月dd日。算法2: 從文件輸入日期并顯示打開(“
3、請輸入你需要打開的文件的路徑:”); 如果(打開路徑失?。┹敵?quot;文件不能打開。"; 當(打開文件路徑成功),獲取文件中的日期字符,輸出日期字符; 關閉文件。算法3: 計算某個日期是星期幾?從鍵盤輸入任意日期; 計算輸入日期與1972年間的閏年個數(shù)d; 計算輸入日期與1972年相距天數(shù):u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+本年已過天數(shù); 如果是閏年,2月29天; 如果非閏年,2月28天; 計算周幾:i=(u+5)%7 程序代碼:#include<iostream>#include <fst
4、ream>using namespace std;class Date /定義日期類Date。private:int year,month,day;public:void setDate(int y=2013,int m=5 ,int d=16); /聲明3個成員函數(shù)void showDate1();void showDate2();void Date:setDate(int y,int m,int d) /獲得待轉(zhuǎn)換前的日期year=y;month=m;day=d;void Date:showDate1()/以"年.月.日"形式輸出日期 cout<<ye
5、ar<<"."if (month<10) cout<<'0'cout<<month<<"."if (day<10) cout<<'0'cout<<day<<endl;void Date:showDate2()/以*年*月*日的形式輸出日期cout<<"轉(zhuǎn)換后的日期格式是:"cout<<year<<"年"cout<<month<<&
6、quot;月"cout<<day<<"日"<<endl; int main()Date a,b,c; /定義a,b,c3個以Date定義的對象int year,month,day; /人性化界面int input;cout<<"請選擇需要的功能:"<<endl;cout<<"1.將yy-mm-dd格式的日期轉(zhuǎn)換成yy.mm.dd格式"<<endl;cout<<"2.將yy-mm-dd和yy.mm.dd格式的日期轉(zhuǎn)換成為y
7、y年mm月dd日的格式"<<endl;cout<<"3.將yy年mm月dd日格式的日期轉(zhuǎn)換成為yy.mm.dd格式"<<endl;cout<<"4.從文件輸入日期并顯示"<<endl;cout<<"5.計算一個日期后一個天數(shù)是周幾:"<<endl;cout<<"6.退出"<<endl;cin>>input;loop:switch(input) /功能選擇 case 1:cout<&
8、lt;"請輸入一個日期,yy-mm-dd格式:"<<endl; cin>>year>>month>>day;if(month>=13|day>=32) cout<<"*輸入非法*"<<endl; /輸入非法 goto loop; /返回上一步輸入操作a.setDate(year,month,day);cout<<"您輸入的日期是:"cout<<year<<"-"<<month<&
9、lt;"-"<<day<<endl;cout<<"轉(zhuǎn)換后的日期格式是:"a.showDate1();break;case 2:cout<<"請輸入一個日期,yy-mm-dd格式:"<< endl;cin>>year>>month>>day;if(month>=13|day>=32) cout<<"*輸入非法*"<<endl; goto loop;b.setDate(year,month
10、,day); cout<<"您輸入的日期是:" cout<<year<<"-"<<month<<"-"<<day<<endl; cout<<"轉(zhuǎn)換后的日期格式是:"b.showDate2();break;case 3:cout<<"請輸入一個日期,yy年mm月dd日格式:(yy mm dd)"<<endl;cin>>year>>month>>
11、day;if(month>=13|day>=32) cout<<"*輸入非法*"<<endl; goto loop;c.setDate(year,month,day);cout<<"您輸入的日期是:"cout<<year<<"年"<<month<<"月"<<day<<endl;cout<<"轉(zhuǎn)換后的格式是:"c.showDate1();cout<<yea
12、r<<"-"<<month<<"-"<<day<<endl;break;case 4:char *j=new char10; cout<<"請輸入你需要打開的文件的路徑:"<<endl; cin>>j; ifstream in(j); char ch; if(!in) cout<<"文件不能打開。"<<endl; return -1;cout<<"該文件中的日期是:"
13、; while(in) in.get(ch); if(in) cout<<ch; in.close(); break;case 5:int w,e,t,i,u;cout<<"請輸入一個日期,起始日期最早是1973.01.01:"<<endl;int c,v,b; c=w%4; v=w%400; b=w%100;cin>>w>>e>>t;switch(e) case 1: u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t; break; case
14、 2:u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+31;break; case 3: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+60; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+59; break; case 4: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w
15、-1973)/100+(w-1973)/400)+t+91; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+90; break; case 5: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+121; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+120; break; case 6: if(c=4) if(v=400)
16、if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+152; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+151; break; case 7: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+182; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+
17、t+181; break; case 8: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+213; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+212; break; case 9: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+244; else u=u=(w-1972)*36
18、5+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+243; break; case 10: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+273; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+272; break; case 11: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+304; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+303; b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《肺特殊CT征象》課件
- 《電能計量技術》課件
- 《家具的加工工藝》課件
- 第19課 七七事變與全民族抗戰(zhàn)(解析版)
- 《衛(wèi)生經(jīng)濟管理系統(tǒng)》課件
- 寒假自習課 25春初中道德與法治八年級下冊教學課件 第一單元 大單元整體設計
- 銀行宣傳推廣總結
- 《皮膚生理學》課件
- 素描藝術探索
- 風險監(jiān)測與追蹤培訓
- 醫(yī)院院長年終工作總結報告精編ppt
- 大連市小升初手冊
- 《自然辯證法》課后習題答案自然辯證法課后題答案
- 造價咨詢結算審核服務方案
- 中國人民財產(chǎn)保險股份有限公司機動車綜合商業(yè)保險條款
- 燃氣工程監(jiān)理實施細則(通用版)
- E車E拍行車記錄儀說明書 - 圖文-
- 人才梯隊-繼任計劃-建設方案(珍貴)
- 《健身氣功》(選修)教學大綱
- 王家?guī)r隧道工程地質(zhì)勘察報告(總結)
- 《昆明的雨》優(yōu)質(zhì)課一等獎(課堂PPT)
評論
0/150
提交評論