




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言課程設(shè)計(jì)報(bào)告 -萬(wàn)年歷設(shè)計(jì)人:賈偉濤 學(xué)號(hào):2013010901班級(jí):13電信應(yīng)電班指導(dǎo)老師:張偉日期:2014年6月11日內(nèi)容提要(這個(gè)你最好自己寫(xiě))通過(guò)大一下學(xué)期對(duì)C語(yǔ)言的學(xué)習(xí),了解到了很多C語(yǔ)言的相關(guān)知識(shí)。學(xué)習(xí)的過(guò)程雖然有很多困惑,但是當(dāng)自己能夠獨(dú)立的看懂和獨(dú)立的完成一個(gè)簡(jiǎn)單的程序時(shí),心中就會(huì)收獲無(wú)限的喜悅和成就感。我雖然可以看懂一些簡(jiǎn)單的程序,編寫(xiě)一些簡(jiǎn)單的計(jì)算程序,更多的是學(xué)會(huì)了一種思想編程,它讓我在去思考很多日常生活中的事物是怎么樣通過(guò)一個(gè)個(gè)小小的函數(shù)實(shí)現(xiàn)功能的,激發(fā)我對(duì)c語(yǔ)言的興趣。C語(yǔ)言是近年在國(guó)內(nèi)外得到迅速推廣應(yīng)用的一種機(jī)器語(yǔ)言。C語(yǔ)言功能豐富,表達(dá)能力強(qiáng),使用靈活方便
2、,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,既具有高級(jí)語(yǔ)言的優(yōu)點(diǎn),又具有低級(jí)語(yǔ)言的許多特點(diǎn)。因此,C語(yǔ)言特別適合于編寫(xiě)各種軟件。在這次的課程設(shè)計(jì)中我將把日常生活中最經(jīng)常接觸的日歷的查詢,利用C語(yǔ)言的程序編成一個(gè)簡(jiǎn)單的萬(wàn)年歷查詢系統(tǒng)。通過(guò)這個(gè)小小的系統(tǒng)可以實(shí)現(xiàn)很多功能。在程序中你能看到很多熟悉的C語(yǔ)言關(guān)鍵字,同時(shí)也加入了很多自己課外了解到的一些關(guān)鍵字。在不斷的調(diào)試中最終才獲得最為完整的程序。接下來(lái)就是我的C語(yǔ)言課程設(shè)計(jì)的具體內(nèi)容來(lái)了,大家拭目以待吧!目錄一、 系統(tǒng)功能和數(shù)據(jù)說(shuō)明-二、 問(wèn)題分析-三、 程序總體設(shè)計(jì)及功能結(jié)構(gòu)框圖-四、 程序流程圖-五、 源程序代碼-六、使用說(shuō)明-七、個(gè)人心得-八、參考
3、文獻(xiàn)-一、系統(tǒng)功能和數(shù)據(jù)說(shuō)明(一)功能簡(jiǎn)介在日常生活中能接觸到很多不同類型的日歷,在日歷上我們通常希望它能簡(jiǎn)單明了的給我們最想要的日期信息。在我的萬(wàn)年歷系統(tǒng)當(dāng)中,就是將日歷,月歷做的簡(jiǎn)單明了,很方便我們的查詢使用。下面是它要實(shí)現(xiàn)的一些基本功能:C語(yǔ)言編寫(xiě)萬(wàn)年歷查詢系統(tǒng):(1)輸入年份,判斷是否為閏年(2)輸入年月日,判斷是星期幾(3)輸入年份,打印出12個(gè)月的月歷(4)輸入年月,打印出本月的日歷(5)輸入指令錯(cuò)誤的提示(二)程序中的數(shù)據(jù)說(shuō)明unsigned int run12 =31,29,31,30,31,30,31,31,30,31,30,31;unsigned int ping12=31
4、,28,31,30,31,30,31,31,30,31,30,31;這是定義的關(guān)于每個(gè)月天數(shù)的數(shù)組,根據(jù)大小月以及二月份的特殊情況將每個(gè)月的天數(shù)變?yōu)閿?shù)組中的元素存入數(shù)組當(dāng)中。其中run1=29,是將閏年二月的天數(shù)28天作為初始元素存入。另一個(gè)ping1=28,是將平年二月的天數(shù)28天作為初始元素存入。 char month_str10="一月","二月","三月","四月","五月","六月","七月","八月","九月&qu
5、ot;,"十月","十一月","十二月" 這個(gè)數(shù)組是定義12個(gè)月份的數(shù)組。二、問(wèn)題分析對(duì)于閏年的判斷,能被4整除但不能被100整除,或者能被400整除的年份為閏年,否則為平年。日期的查詢,就是直接打印改天所在月份的月歷。程序難點(diǎn)在于判斷星期,但根據(jù)公式,我們可以很容易地用年月日推斷出星期:c=days+day; w=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+c)%7;/求星期公式其中year:要查詢的年份day:從該年的一月一日起到該天的天數(shù)w:得出的星期數(shù)。在打印月歷時(shí),只要知道第一天
6、的星期,就可以依次輸入后面的日期,通過(guò)一定長(zhǎng)度輸出日期,在遇到某天時(shí)星期天時(shí),就換行輸出,因此可以按照月歷的格式輸出。判斷日期是否合法,if(nian>6000)|(nian=0)|(yue>12)|(yue=0)|(ri>31)|(ri=0)printf("輸入錯(cuò)誤,請(qǐng)重新輸入n");goto zailai;可以先判斷年月日是否有小于0的值,月和日是否有超出最大值12和31 ,如果通過(guò)此判斷合法,再判斷是否是閏年,如果是閏年,則判斷二月份是否滿足要求,閏年二月份不能超過(guò)29天,平年二月份不能超過(guò)28天。在查詢過(guò)程中,如果發(fā)現(xiàn)輸入不合法或者不滿足輸入要求,
7、則提示錯(cuò)誤,并返回主菜單。三、程序總體設(shè)計(jì)及功能結(jié)構(gòu)框圖(一)功能結(jié)構(gòu)框圖主菜單閏年判斷輸出年歷輸出月歷星期查詢(二)程序設(shè)計(jì)頭文件:#include<stdio.h>/基本輸入輸出函數(shù)#include <stdlib.h>/調(diào)用清屏函數(shù)#include<windows.h>/調(diào)用延時(shí)函數(shù)在程序中運(yùn)用了大量的自定義函數(shù),都涉及為了使程序更簡(jiǎn)介明了。其中有:int menu()/選擇菜單void nian_yue()/輸入年月函數(shù)void in_nian()/只輸入年函數(shù)void _in()/年,月,日輸入,范圍判別int _nian2(int year)/判
8、斷是否為閏年int yue_day(int year,int month)/計(jì)算某年某月有多少天函數(shù)int xingqi_(int year,int month,int day)/判斷某年某月某日是星期幾的函數(shù)void _4(int year,int month)/ 第四功能:顯示某月的月歷int _3( int year)/ 第三功能:顯示某年的月歷void _2()/第二功能:計(jì)算某年是否為閏年void _1()/第一功能:計(jì)算某年某月某日是星期幾這些函數(shù)的定義及其相應(yīng)的內(nèi)部程序共同構(gòu)筑起了這個(gè)萬(wàn)年歷查詢系統(tǒng)的總程序。其中int _nian2函數(shù)是用來(lái)判斷輸入的年份是否為閏年,實(shí)現(xiàn)了預(yù)計(jì)功
9、能的第一個(gè)方面;int xingqi函數(shù)則是為了實(shí)現(xiàn)判斷星期而編寫(xiě)的;void _4函數(shù)則是為了實(shí)現(xiàn)單個(gè)月的月歷而編寫(xiě)的,int _3函數(shù)則是為了實(shí)現(xiàn)某年的月歷而編寫(xiě)的。 四、程序流程圖(一)總流程圖開(kāi)始計(jì)算是否為閏年計(jì)算星期數(shù)按鍵1?按鍵3和44輸出星期數(shù)輸出是否為閏年計(jì)算編輯接收到的數(shù)據(jù)輸出具體年歷和月歷按鍵1?是是是是計(jì)算是否為閏年計(jì)算星期數(shù)按鍵2?是是是計(jì)算星期數(shù)計(jì)算是否為閏年是是是是結(jié)束 退出(二)算法說(shuō)明1. 總天數(shù)的算法:int _nian2函數(shù)的使用,判斷出了輸入年份是否為閏年的信息。判斷一年是否為閏年的方法是:該年分而能被4整除但不能被100整除,或者是能被400整除。判斷是
10、否為閏年的流程圖:2.輸入日期計(jì)算星期幾:利用int xingqi_函數(shù)可以判斷出星期,然后對(duì)于輸入的日期可以通過(guò)公式c=days+day;w=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+c)%7計(jì)算就可以輸出相應(yīng)的星期數(shù)。/*判斷某年某月某日是星期幾的函數(shù),返回星期對(duì)應(yīng)的數(shù)字,如返回對(duì)應(yīng)星期天*/int xingqi_(int year,int month,int day) int c,i,days=0,t,w; for(i=1;i<month;i+)/月份循環(huán) t=yue_day(year,i);/調(diào)用求某年某月有多少天函數(shù) days+=
11、t; c=days+day; w=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+c)%7;/求星期公式 return w;3. 對(duì)輸入信息的匯總:void _4(int year,int month)/打印某年某月的月歷,int _3( int year) /打印某年的月歷。/*-第四功能:顯示某月的月歷-*/void _4(int year,int month) int i,temp,k;temp=xingqi_(year,month,1);/調(diào)用判斷某年某月某日是星期幾的函數(shù)printf("n %d-%dn",year,mon
12、th);printf("n0 1 2 3 4 5 6n");printf("nS M T W T F Sn");/*以下是月歷排版*/for(i=1;i<=temp;i+)printf(" ");for(k=1;k<=yue_day(year,month);k+,i+) printf("%-2d ",k); if(i%7=0) printf("n");/*-第三功能:顯示某年的月歷-*/int _3( int year)int temp;int i,j,k;printf("
13、nn%d 年n",year);for(i=1;i<=12;i+)printf("nn%s(%d)n",month_stri-1,i);printf("0 1 2 3 4 5 6n");printf("S M T W T F S nn");temp=xingqi_(year,i,1);/調(diào)用判斷某年某月某日是星期幾的函數(shù)/*以下是月歷排版*/for(j=1;j<=temp;j+)printf(" " );for(k=1;k<=yue_day(year,i);j+,k+) printf(&q
14、uot;%-2d ",k); if(j%7=0) printf("n");五、 源程序代碼#include<stdio.h>/基本輸入輸出函數(shù)#include <stdlib.h>/調(diào)用清屏函數(shù)#include<windows.h>/調(diào)用延時(shí)函數(shù)unsigned int nian,yue,ri;/全局變量unsigned int run12 =31,29,31,30,31,30,31,31,30,31,30,31;unsigned int ping12=31,28,31,30,31,30,31,31,30,31,30,31;ch
15、ar month_str10="一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"/*-選擇菜單-*/int menu()int a;printf("nn - 萬(wàn)年歷系統(tǒng)-nnn");printf("1.計(jì)算某年某月某日是星期幾n");printf(
16、"2.計(jì)算某年是否為閏年n");printf("3.顯示某年的月歷n");printf("4.顯示某月的日歷n");printf("5.退出系統(tǒng)nn");printf("請(qǐng)輸入相應(yīng)的數(shù)字,并回車請(qǐng)輸入");scanf("%d",&a);printf("您輸入的是%d n",a);printf("請(qǐng)稍后,正在執(zhí)行.");Sleep(1000);/延時(shí)秒system("cls");/清屏return(a);/返回
17、值/*-輸入年月函數(shù)-*/void nian_yue()printf("請(qǐng)輸入要顯示的年,月并以逗號(hào)隔開(kāi)n");printf("n例如:n");printf("要顯示2014年月則輸入: 2014,6回車n");printf("請(qǐng)輸入");scanf ("%d,%d",&nian,&yue);/*-只輸入年函數(shù)-*/void in_nian()printf("請(qǐng)輸入年份,并回車n");printf("請(qǐng)輸入");scanf("%d
18、",&nian);/*-年,月,日輸入,范圍判別-*/void _in()zailai:/跳轉(zhuǎn)標(biāo)志printf("請(qǐng)輸入要計(jì)算的年份,輸入的年,月,日請(qǐng)以逗號(hào)隔開(kāi)n");printf("n例如:n");printf("要計(jì)算年月日輸入格式為:2014,6,11 回車nn");printf("請(qǐng)輸入:");scanf("%d,%d,%d",&nian,&yue,&ri);if(nian>6000)|(nian=0)|(yue>12)|(yue=
19、0)|(ri>31)|(ri=0)printf("輸入錯(cuò)誤,請(qǐng)重新輸入n");goto zailai;/*-判斷是否為閏年 方式二,是返回,否則返回-*/int _nian2(int year) if(year%400=0|year%4=0&&year%100!=0)/計(jì)算閏年return 1 ;elsereturn 0;/*-求某年某月有多少天-*/int yue_day(int year,int month)int mon_day=31,28,31,30,31,30,31,31,30,31,30,31;if(_nian2(year)&&am
20、p;month=2)/如果為閏年,月加return 29;elsereturn(mon_daymonth-1);/*判斷某年某月某日是星期幾的函數(shù),返回星期對(duì)應(yīng)的數(shù)字,如返回對(duì)應(yīng)星期天*/int xingqi_(int year,int month,int day) int c,i,days=0,t,w; for(i=1;i<month;i+)/月份循環(huán) t=yue_day(year,i);/調(diào)用求某年某月有多少天函數(shù) days+=t; c=days+day; w=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+c)%7;/求星期公式 retur
21、n w;/*-第四功能:顯示某月的月歷-*/void _4(int year,int month) int i,temp,k;temp=xingqi_(year,month,1);/調(diào)用判斷某年某月某日是星期幾的函數(shù)printf("n %d-%dn",year,month);printf("n0 1 2 3 4 5 6n");printf("nS M T W T F Sn");/*以下是月歷排版*/for(i=1;i<=temp;i+)printf(" ");for(k=1;k<=yue_day(yea
22、r,month);k+,i+) printf("%-2d ",k); if(i%7=0) printf("n");/*-第三功能:顯示某年的月歷-*/int _3( int year)int temp;int i,j,k;printf("nn%d 年n",year);for(i=1;i<=12;i+)printf("nn%s(%d)n",month_stri-1,i);printf("0 1 2 3 4 5 6n");printf("S M T W T F S nn")
23、;temp=xingqi_(year,i,1);/調(diào)用判斷某年某月某日是星期幾的函數(shù)/*以下是月歷排版*/for(j=1;j<=temp;j+)printf(" " );for(k=1;k<=yue_day(year,i);j+,k+) printf("%-2d ",k); if(j%7=0) printf("n");/*-第二功能:計(jì)算某年是否為閏年-*/void _2()in_nian();/輸入年函數(shù)printf("nn");if(_nian2(nian)=1)printf("%d年是閏
24、年n",nian);elseprintf("%d年是平年n",nian);/*-第一功能:計(jì)算某年某月某日是星期幾-*/void _1()_in();/輸入年月日函數(shù)printf("nn");printf("%d年%d月%d日是星期%dnn",nian,yue,ri,xingqi_(nian,yue,ri);/*-主函數(shù)-*/void main()int x;system("cls");/清屏star:/菜單重選跳轉(zhuǎn)標(biāo)志switch (menu()case 1:G1:/G1跳轉(zhuǎn)標(biāo)志_1();/啟動(dòng)第一功能
25、計(jì)算某年某月某日是星期幾printf("輸入1 并回車,返回主菜單n");printf("輸入2 并回車,重新輸入n");printf("輸入其他則退出程序n");printf("請(qǐng)輸入");scanf("%d",&x);system("cls");/清屏if(x=1)goto star;/goto語(yǔ)句跳轉(zhuǎn)到菜單重選跳轉(zhuǎn)標(biāo)志if(x=2)goto G1;/goto語(yǔ)句跳轉(zhuǎn)到G1break;case 2:G2:/G2跳轉(zhuǎn)標(biāo)志_2();/第二功能:計(jì)算某年是否為閏年pri
26、ntf("輸入1 并回車,返回主菜單n");printf("輸入其他則退出程序n");printf("輸入2 并回車,重新輸入n");printf("請(qǐng)輸入");scanf("%d",&x);system("cls");/清屏if(x=1)goto star;/goto語(yǔ)句跳轉(zhuǎn)到菜單重選跳轉(zhuǎn)標(biāo)志if(x=2)goto G2;/goto語(yǔ)句跳轉(zhuǎn)到G2break;case 3:G3:/G3跳轉(zhuǎn)標(biāo)志in_nian();/輸入年_3(nian);/啟動(dòng)第三功能printf(&
27、quot;nn");printf("輸入1 并回車,返回主菜單n");printf("輸入2 并回車,重新輸入n");printf("輸入其他則退出程序n");printf("請(qǐng)輸入");scanf("%d",&x);system("cls");/清屏if(x=1)goto star;/goto語(yǔ)句跳轉(zhuǎn)到菜單重選跳轉(zhuǎn)標(biāo)志if(x=2)goto G3;/goto語(yǔ)句跳轉(zhuǎn)到G3break;case 4: G4:/G4跳轉(zhuǎn)標(biāo)志nian_yue();/輸入年月_4(nian,yue);/啟動(dòng)第四功能printf("nn");printf("輸入1 并回車,返回主菜單n");printf("輸入2 并回車,重新輸入n");printf("輸入其他則退出程序n");pri
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工作服定做合同協(xié)議
- 冷鏈物流體系建設(shè)與維護(hù)合同
- 承包韻達(dá)快遞業(yè)務(wù)合同書(shū)
- 路面硬化施工合同協(xié)議書(shū)
- 抵押房屋借款合同
- 新能源研發(fā)及生產(chǎn)供應(yīng)合同
- 南京藝術(shù)學(xué)院《生物化學(xué)上實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 華南師范大學(xué)《護(hù)理學(xué)基礎(chǔ)實(shí)驗(yàn)(2)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西財(cái)貿(mào)職業(yè)技術(shù)學(xué)院《化學(xué)與創(chuàng)業(yè)》2023-2024學(xué)年第二學(xué)期期末試卷
- 煙臺(tái)工程職業(yè)技術(shù)學(xué)院《管理工程數(shù)學(xué)基礎(chǔ)一》2023-2024學(xué)年第二學(xué)期期末試卷
- 快遞運(yùn)營(yíng)實(shí)務(wù)項(xiàng)目2快遞網(wǎng)點(diǎn)業(yè)務(wù)管理課件
- 江蘇省蘇州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 電網(wǎng)公司項(xiàng)目管理標(biāo)準(zhǔn)手冊(cè)
- 影視文學(xué)教程整本書(shū)課件完整版電子教案全套課件最全教學(xué)教程ppt(最新)
- 防火門(mén)監(jiān)控系統(tǒng)調(diào)試、檢測(cè)、驗(yàn)收記錄
- 2016年七里塘電站1號(hào)機(jī)組C級(jí)檢修方案
- “大水利”概念及其意義
- (完整word版)SAS-Base認(rèn)證考試(70真題+答案詳解)
- 東華協(xié)同辦公系統(tǒng)簡(jiǎn)介
- 三年級(jí)上冊(cè)數(shù)學(xué)應(yīng)用題大全98715
- 最新版結(jié)婚函調(diào)報(bào)告表.doc
評(píng)論
0/150
提交評(píng)論