




免費(fèi)預(yù)覽已結(jié)束,剩余13頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 1 頁(yè) 共 18 頁(yè) 1 C+C+課程設(shè)計(jì)課程設(shè)計(jì) -日歷的設(shè)計(jì)(良好組)日歷的設(shè)計(jì)(良好組) 專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 完成時(shí)間: 2020 年 1 月 31 日 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 2 頁(yè) 共 18 頁(yè) 2 目錄目錄 前言 .2 正文 .2 2.1 設(shè)計(jì)程序的目的和思想 .2 2.1.1 設(shè)計(jì)程序的目的: .2 2.1.2 設(shè)計(jì)程序的思想: .2 2.2 設(shè)計(jì)環(huán)境 .3 2.3 設(shè)計(jì)目的 .3 2.4 設(shè)計(jì)流程 .3 2.5 設(shè)計(jì)內(nèi)容和設(shè)計(jì)思想.4 2.5.1 大月和小月的定義.4 2.5.2 閏年與非閏年二月的定義 .4 2.5.3 日歷表的輸出.5 2.6 關(guān)鍵技術(shù).6 總結(jié) .6 效果圖 .6 致謝 .8 參考文獻(xiàn) .8 附錄 A.9 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 3 頁(yè) 共 18 頁(yè) 3 前言前言 C+是美國(guó) AT else if (i=2) if(isleapyear() /判斷閏年 return 29; /是的話(huà)返回 29 天 else return 28;/不是閏年返回 28 天 計(jì)算輸入的年份和幾點(diǎn) 年份之間相差的天數(shù) 計(jì)算輸入年份的 1 月 1 號(hào)是星期幾 依次遞增,按照每月 的天數(shù)按照要求排列 用兩種方式 輸出日歷 居中豎向輸出 橫向輸出,每三 月為一行 主菜單選擇,整 合程序 結(jié)束 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 6 頁(yè) 共 18 頁(yè) 6 else return 30; 運(yùn)用簡(jiǎn)單的 if 語(yǔ)句來(lái)設(shè)定大小月。 If 語(yǔ)句是 c+中常用且簡(jiǎn)單的判斷語(yǔ)句,用途相當(dāng)廣泛,使用起來(lái)簡(jiǎn)單易懂,易操作。 2.5.2 閏年與非閏年二月的定義 int isleapyear() if(year%4=0 else return 0; 構(gòu)造閏月的判斷函數(shù),用返回值 1 和 0 來(lái)表示是否為閏年,對(duì)于后來(lái)的函數(shù)調(diào)用起來(lái)簡(jiǎn)單不容易 出錯(cuò),如果出現(xiàn) bug,修改起來(lái)也簡(jiǎn)單。 2.5.3 兩種不同的輸出方法 1.居中輸出 void display2() int n=judgeweek(); for(int i=1;i=12;i+) /總共 12 個(gè)月份 int t=1; coutendlsetw(40) setw(5)year年setw(5)i月份endl; coutsetw(30) *endl; coutsetw(30) ; for(int j=0;j7;j+) coutsetw(5)weekdayj; coutendlsetw(30) *endl; coutsetw(30) ; for(int k=1;kn;k+,t+) coutsetw(5) ; /輸入每月第一天的起始位置,即該天為星期幾,用空格補(bǔ)充 for(int d=1;d=monthday(i);d+,t+) coutsetw(5)d; if(t=7) coutendlsetw(30) ; /控制每行只輸出 7 個(gè)數(shù)字 t=0; /控制一行輸出到星期日,如果到星期日則重新計(jì)數(shù) n=t%7; if(n=0) /輸出完一個(gè)月后,記錄這個(gè)月的最后一天在哪里,尋找下個(gè)月第一天的起始位置 n=7; coutendlsetw(30) *endl; 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 7 頁(yè) 共 18 頁(yè) 7 設(shè)計(jì)這種輸出方法主要運(yùn)用 for 語(yǔ)句,多重循環(huán),以每個(gè)月為單位循環(huán),將一個(gè)月劃分為 7 列, 控制每行不超過(guò) 7 個(gè)數(shù)字,月頭和月尾分別用空格補(bǔ)齊,如此循環(huán)而得。 2.橫向輸出方法 void display1() coutsetw(35)” ”year”年日歷”; print(1) ; print(2) ; print(3) ; print(4) ; 橫向輸出相對(duì)居中輸出有難度,所以在設(shè)計(jì)橫向輸出時(shí)將其劃分為兩個(gè)函數(shù),display1 為橫向總 的輸出函數(shù),它的作用主要是輸出日歷的頭和調(diào)用下面的 print 函數(shù)。 void print(int x) char *a,*b,*c; int fm,sm,tm,modf,mods,modt,dof,dos,dot,i,j; int total=0; total=(year-2000)*365+(year-2001)/4-(year-2001)/100+(year-2001)/400; swtich(x) case 1:a=”一月”,b=”二月”,c=”三月”; fm=31,tm=31; if(islearpyear() sm=29; else sm=28; modf=total%7; mods=(modf+31)%7; if(islearpyear() modt=(mods+29)%7; else modt=(mods+28)%7; break; case 2:a=”四月”,b=”五月”,c=”六月”; fm=30,sm=31,tm=30; if(islearpyear() modf=(total+91)%7; else modf=(total+90)%7; mods=(modf+30)%7; modt=(mods+31)%7; break; case 3:a=”七月”,b=”八月”,c=”九月”; fm=31,sm=31,tm=30; if(islearpyear() modf=(total+182)%7; fm 和 tm 和 sm 分別代表一組中三 個(gè)月依次的天數(shù),modf 等代表每 個(gè)月依次的第一天的位置,dof 等 分別用來(lái)表示每個(gè)月從第一天到最 后一天. 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 8 頁(yè) 共 18 頁(yè) 8 else modf=(total+181)%7; mods=(modf+31)%7; modt=(mods+31)%7; break; case 4:a=”十月”,b=”十一月”,c=”十二月”; fm=31,sm=30,tm=31; if(islearpyear() modf=(total+274)%7; else modf=(total+273)%7; mods=(modf+31)%7; modt=(mods+30)%7; break; default:cout”數(shù)據(jù)溢出”; break; coutsetw(12) asetw(17) bsetw(18) cendlendl; cout setw(3) 日 setw(3) 一 setw(3) 二 ; cout setw(3) 三 setw(3) 四 setw(3) 五 ; cout setw(3) 六; cout setw(3) 日 setw(3) 一 setw(3) 二 ; cout setw(3) 三 setw(3) 四 setw(3) 五 ; cout setw(3) 六 ; cout setw(3) 日 setw(3) 一 setw(3) 二 ; cout setw(3) 三 setw(3) 四 setw(3) 五 ; cout setw(3) 六 endl; for (i=1;i=modf;i+) coutsetw(3) ; for(dof=1;dof=7-modf;dof+) coutsetw(3)dof; for (i=1;i=mods;i+) coutsetw(3) ; for(dos=1;dos=7-mods;dos+) coutsetw(3)dos; for (i=1;i=modt;i+) coutsetw(3) ; for(dot=1;dot=7-modt;dot+) 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 9 頁(yè) 共 18 頁(yè) 9 coutsetw(3)dot; coutendl; for(j=1;j=5;j+) for(i=1;ifm)coutsetw(3) ; else coutsetw(3)dof; dof+; for(i=1;ism)coutsetw(3) ; else coutsetw(3)dos; dos+; for(i=1;itm)coutsetw(3) ; else coutsetw(3)dot; dot+; coutendl; coutendl; 從寫(xiě)的程序來(lái)看橫向輸出要難的多,但主要思想不變,還是依賴(lài)多重循環(huán),因?yàn)樽罱K要求三個(gè)月 為一組輸出,所以在設(shè)計(jì)時(shí)便將每三月作為一個(gè)整體,最后有四組,因?yàn)槊總€(gè)月按 7 列最多可排列 5 行,所以在一組中僅計(jì)算天數(shù)又有 7 列五行,如以上所標(biāo)注的那樣。 3.主函數(shù)的設(shè)計(jì) int main() Date a; coutsetw(6)萬(wàn)年歷查詢(xún)endl; cout*endl; int choose; w:while(choose!=0) cout1 以橫向模式顯示該年萬(wàn)年歷 endl; cout”2 以豎向模式顯示該年萬(wàn)年歷“endl; cout3 查詢(xún)某天對(duì)應(yīng)的星期數(shù)endl; cout4 退出系統(tǒng)endl; coutchoose; switch(choose) /功能選擇 case 1:a.getyear();a.display1();break; case 2:a.getyear();a.display2();break; case 3:a.getday();a.searchday();break; case 4:cout謝謝使用萬(wàn)年歷系統(tǒng),請(qǐng)關(guān)閉!endl;exit(0);break; default:cout您輸入有誤,請(qǐng)重新輸入endl;goto w; return 0; 主函數(shù)主要包括,日歷的主界面,主菜單,上面各種函數(shù)的調(diào)用,其中選擇使用 while 和 switc 函數(shù)兩者結(jié)合,主函數(shù)是一個(gè)總結(jié)過(guò)程,將程序從頭到尾整理依次運(yùn)行。 2.6 關(guān)鍵技術(shù) 就本程序使用的技術(shù)有方面。都是使用的是簡(jiǎn)單的如 if 語(yǔ)句,switch 語(yǔ)句,for 循環(huán)語(yǔ)句, 輸入和輸出,變量的定義,等。 總結(jié)總結(jié) 通過(guò)實(shí)踐的學(xué)習(xí),我認(rèn)到學(xué)好計(jì)算機(jī)要重視實(shí)踐操作,不僅僅是學(xué)習(xí) C+,還是其它的語(yǔ)言, 以及其它的計(jì)算機(jī)方面的知識(shí)都要重在實(shí)踐,所以后在學(xué)習(xí)過(guò)程中,我會(huì)更加注視實(shí)踐操作,使 自己便好地學(xué)好計(jì)算機(jī)。 效果圖效果圖 剛運(yùn)行時(shí)如:圖 1 圖 1 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 11 頁(yè) 共 18 頁(yè) 11 輸入 2012 時(shí),如:圖 2 圖 2 橫向輸出圖 3 圖 3 程序結(jié)束 圖 4 致謝致謝 經(jīng)過(guò)兩周的不懈努力,很高興能完成一個(gè) C+編程,緊張的心終于可以平靜了。從中體會(huì)到 以及學(xué)習(xí)到很多關(guān)于 C+的很大方面的只是,是我更加了解了 C+,并更加熟練了 C+。 在此次設(shè)計(jì)中我也遇到了很多的問(wèn)題,都是經(jīng)過(guò)查看老師所給的關(guān)于課程設(shè)計(jì)書(shū)和圖書(shū)館借 的書(shū)才明白所用函數(shù)的用法,更重要的是上課時(shí)老師的細(xì)心教學(xué),使我們學(xué)會(huì)了許多關(guān)于 C+的 基礎(chǔ)知識(shí),為本次的課程設(shè)計(jì)打好了很好的基礎(chǔ)。從而使我能夠順利完成這次課程設(shè)計(jì)。 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 12 頁(yè) 共 18 頁(yè) 12 在本次做課程設(shè)計(jì)過(guò)程中,要感謝陸建鋒老師的悉心關(guān)照,一直陪伴我們,并為大家講解不 懂的地方,很是辛苦,也很是忙碌。還要感謝學(xué)院為我們此次課程設(shè)計(jì)提供機(jī)房,讓我們有了良 好的學(xué)習(xí)環(huán)境可以利用所學(xué)做課程設(shè)計(jì),從很大的程度上增強(qiáng)了我們對(duì)于 C+學(xué)習(xí)的興趣。和小 組成員一塊討論,多聽(tīng)聽(tīng)別人的想法,想辦法改進(jìn)自己,這是我受益匪淺。只有比較才知道自己 的不足。我們一定要好好的改正自己的不足之處,完善自己。不做最好,只做更好!努力在老師 規(guī)定的時(shí)間內(nèi)完成老師所規(guī)定的任務(wù)。 結(jié)束課設(shè)的時(shí)侯,心里就有一種很渴望但又很害怕的感覺(jué),明白了自己與實(shí)際所需的距離, 因?yàn)楝F(xiàn)在畢業(yè)求職難,特別是對(duì)于像自己一般的人,更多的時(shí)侯是社會(huì),職業(yè)選擇自己,而不是 更多的自己去選擇職業(yè),所以更應(yīng)該把所學(xué)的知識(shí)靈活地用于實(shí)踐,這次課設(shè)就是對(duì)自己一個(gè)很 好的鍛煉機(jī)會(huì),無(wú)論任何的償試,都是自己以后很寶貴的經(jīng)驗(yàn),更是對(duì)自己的一種充實(shí)。 參考文獻(xiàn)參考文獻(xiàn) 1譚浩強(qiáng) 著.C+面向程序程序設(shè)計(jì).北京:清華大學(xué)出版社,2006.7 2吳乃陵,況迎輝,李海文 著.VC+程序設(shè)計(jì).北京:高等教育出版社,2003.8 3鄧宗明,張睿哲,張曉競(jìng),等編著.Visual C+ 6.0 編程實(shí)用技術(shù)與案例.北京:清華大學(xué) 出版社,2001.5 4李海文,吳乃陵 等編C+程序設(shè)計(jì)及實(shí)踐教程北京:高等教育出版社,2003.9 附錄 1: #include #include #include #include #include using namespace std; class Date public: void getyear(); /輸入想要查詢(xún)的年份 void getday(); /輸入想要查詢(xún)的日期 int isleapyear(); /判斷該年是否為閏年 int judgeweek(); /判斷該年的 1 月 1 日是星期幾 int monthday(int i);/判斷該年每個(gè)月的天數(shù) void display1(); /以橫向模式輸出結(jié)果 void display2(); /以居中模式輸出結(jié)果 void print(int x); /橫向輸出的計(jì)算 void putfile(); /結(jié)果存入文件 void searchday(); /判斷具體某天為星期幾 private: int year; 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 13 頁(yè) 共 18 頁(yè) 13 int month; int day; ; string weekday7= 一,二,三,四,五,六,”日”; /記錄星期一到星期日 void Date:getyear() coutyear; void Date:getday() coutyear; cinmonth; cinday; int Date:isleapyear() if(year%4=0 else return 0; int Date:judgeweek() int total=0; /以 01 年 1 月 1 日(星期一)為基點(diǎn) int n; total=(year-1)*365+(year-1)/4+(year-1)/400-(year-1)/100; /計(jì)算基點(diǎn)到輸入年份的天數(shù) n=total%7; if(n=0) return 0; else return n+1; /返回該年的 1 月 1 日為星期幾 int Date:monthday(int i) if(i=1|i=3|i=5|i=7|i=8|i=10|i=12) return 31; else if (i=2) if(isleapyear() return 29; else return 28; else return 30; void Date:display1() 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 14 頁(yè) 共 18 頁(yè) 14 coutsetw(35)” ”year”年日歷”; print(1) ; print(2) ; print(3) ; print(4) ; void Date:print(int x) char *a,*b,*c; int fm,sm,tm,modf,mods,modt,dof,dos,dot,i,j; int total=0; total=(year-2000)*365+(year-2001)/4-(year-2001)/100+(year-2001)/400; swtich(x) case 1:a=”一月”,b=”二月”,c=”三月”; fm=31,tm=31; if(islearpyear() sm=29; else sm=28; modf=total%7; mods=(modf+31)%7; if(islearpyear() modt=(mods+29)%7; else modt=(mods+28)%7; break; case 2:a=”四月”,b=”五月”,c=”六月”; fm=30,sm=31,tm=30; if(islearpyear() modf=(total+91)%7; else modf=(total+90)%7; mods=(modf+30)%7; modt=(mods+31)%7; break; case 3:a=”七月”,b=”八月”,c=”九月”; fm=31,sm=31,tm=30; if(islearpyear() modf=(total+182)%7; else modf=(total+181)%7; mods=(modf+31)%7; modt=(mods+31)%7; break; case 4:a=”十月”,b=”十一月”,c=”十二月”; 南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 第 15 頁(yè) 共 18 頁(yè) 15 fm=31,sm=30,tm=31; if(islearpyear() modf=(total+274)%7; else modf=(total+273)%7; mods=(modf+31)%7; modt=(mods+30)%7; break; default:cout”數(shù)據(jù)溢出”; break; coutsetw(12) asetw(17) bsetw(18) cendlendl; cout setw(3) 日 setw(3) 一 setw(3) 二 ; cout setw(3) 三 setw(3) 四 setw(3) 五 ; cout setw(3) 六; cout setw(3) 日 setw(3) 一 setw(3) 二 ; cout setw(3) 三 setw(3) 四 setw(3) 五 ; cout setw(3) 六 ; cout setw(3) 日 setw(3) 一 setw(3) 二 ; cout setw(3) 三 setw(3) 四 setw(3) 五 ; cout setw(3) 六 endl; for (i=1;i=modf;i+) coutsetw(3) ; for(dof=1;dof=7-modf;dof+) coutsetw(3)dof; for (i=1;i=mods;i+) coutsetw(3) ; for(dos=1;dos=7-mods;dos+) coutsetw(3)dos; for (i=1;i=modt;i+) coutsetw(3) ; for(dot=1;dot=7-modt;dot+) coutsetw(3)dot; coutendl; for(j=1;j=5;j+) for(i=1;ifm)coutsetw(3) ; else coutsetw(3)dof; dof+; for(i=1;ism)coutsetw(3) ; else coutsetw(3)dos; dos+; for(i=1;itm)coutsetw(3) ; else coutsetw(3)dot; dot+; coutendl; coutendl; void Date:display1() coutsetw(35)” ”year”年日歷”; print(1) ; print(2) ; print(3) ; print(4) ; void Date:display2() int n=judgeweek(); for(int i=1;i=12;i+) /總共 12 個(gè)月份 int t=1; coutendlsetw(40) setw(5)year年setw(5)i月份endl; coutsetw(30) *endl; coutsetw(30) ; for(int j=0;j7;j+) coutsetw(5)weekdayj; coutendlsetw(30) *endl; coutsetw(30) ; for(int k=1;kn;k+,t+) coutsetw(5) ; /輸入每月第一天的起始位
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 楊開(kāi)慧故居活動(dòng)方案
- 未來(lái)書(shū)香閱讀活動(dòng)方案
- 暑假美容院活動(dòng)方案
- 杭州掃墓活動(dòng)策劃方案
- 本地過(guò)年活動(dòng)方案
- 杭州云鯨公司活動(dòng)方案
- 智慧家族年會(huì)活動(dòng)方案
- 最美黨員評(píng)比活動(dòng)方案
- 暑假工作線(xiàn)上活動(dòng)方案
- 村民舉辦特色活動(dòng)方案
- 40000平方米人民醫(yī)院項(xiàng)目監(jiān)理招標(biāo)文件
- 華東師大版數(shù)學(xué)七年級(jí)上冊(cè)教案全冊(cè)
- 數(shù)字資產(chǎn)監(jiān)管框架優(yōu)化
- 醫(yī)患之間暴力行為預(yù)防與處理管理制度
- 2022年版初中物理課程標(biāo)準(zhǔn)解讀-課件
- MOOC 大學(xué)物理實(shí)驗(yàn)-鄭州大學(xué) 中國(guó)大學(xué)慕課答案
- 眼科臨床路徑培訓(xùn)記錄課件
- 術(shù)后病人燙傷不良事件PDCA循環(huán)分析課件
- 學(xué)校作業(yè)檢查總結(jié)匯報(bào)
- 骨科手術(shù)后的康復(fù)輔助器具和輔助裝置
- 學(xué)校課程體系建設(shè)與調(diào)整情況匯報(bào)
評(píng)論
0/150
提交評(píng)論