版權(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)告-設(shè)計(jì)人:賈偉濤學(xué)號(hào):2013010912班級(jí):13 電信應(yīng)電班指導(dǎo)老師:張偉萬(wàn)年歷日期:2014 年 6 月 9 日內(nèi) 容 提 要通過(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)了,大家拭目以待吧!目 錄1、 系統(tǒng)功能和數(shù)據(jù)說(shuō)明 -2、 問(wèn)題分析 -3、 程序總體設(shè)計(jì)及功能結(jié)構(gòu)框圖 -4、 程序流程圖-5、 源程序代碼-1、
3、使用說(shuō)明 -7、 個(gè)人心得 -8、 參考文獻(xiàn) -一、系統(tǒng)功能和數(shù)據(jù)說(shuō)明(一)功能簡(jiǎn)介在日常生活中能接觸到很多不同類(lèi)型的日歷,在日歷上我們通常希望它能簡(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) 輸入年月,打印出本月的日歷另新增:(1) 對(duì)輸入指令錯(cuò)誤的提示(2) 加入了調(diào)用系統(tǒng)時(shí)間函數(shù)(3) 還添加了歡迎界面并進(jìn)行界面優(yōu)化(二)程序中的數(shù)據(jù)說(shuō)明int days12
4、 = 31, 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)中。其中 days1=28,是將閏年二月的天數(shù)28 天作為初始元素存入。在經(jīng)過(guò) yearmonth 函數(shù)后就可以給 days1中存入正確的 月天數(shù)。 tm *tp;char *week= 一,二,三,四,五,六,日;這兩組數(shù)據(jù)設(shè)計(jì)都利用了指針定義,利用指針可以提高程序的可讀性,可以更方便使用。這兩個(gè)數(shù)組的作用是用于調(diào)用系統(tǒng)時(shí)間,而定義的星期數(shù)組*week和年月日變量*tp,由于還沒(méi)學(xué)到指針,在這
5、里查閱了很多資料,并也借鑒了前輩們的很 多程序。二、問(wèn)題分析對(duì)于閏年的判斷,能被 4 整除但不能被 100 整除,或者能被 400 整除的年份為閏年,否則為平年。日期的查詢,就是直接打印改天所在月份的月歷。程序難點(diǎn)在于判斷星期,但根據(jù)公式,我們可以很容易地用年月日推斷出星 期:weekday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;其中 year:要查詢的年份day:從該年的一月一日起到該天的天數(shù)weekday:得出的星期數(shù)。在打印月歷時(shí),只要知道第一天的星期,就可以依次輸入后面的日期,通過(guò)一定長(zhǎng)度輸出日期,在遇到
6、某天時(shí)星期天時(shí),就換行輸出,因此可以按照月歷的 格式輸出。對(duì)于初始輸入當(dāng)前系統(tǒng)時(shí)間,可以通過(guò)中的 time 和 localtime 函 數(shù)取出系統(tǒng)時(shí)間進(jìn)行初始化。判斷日期是否合法,if(year=3000|year=12|month=31|day=0)system(cls);printf(輸入錯(cuò)誤,系統(tǒng)及即將返回!);sleep(3000);goto tz;可以先判斷年月日是否有小于 0 的值,月和日是否有超出最大值 12 和 31 ,如果通過(guò)此判斷合法,再判斷是否時(shí)閏年,如果時(shí)閏年,則判斷二月份是否滿足要求,閏年二月份不能超過(guò) 29 天,平年二月份不能超過(guò) 28 天。在查詢過(guò)程中,如果發(fā)現(xiàn)輸
7、入不合法或者不滿足輸入要求,則提示錯(cuò)誤,并返回主菜單。三、程序總體設(shè)計(jì)及功能結(jié)構(gòu)框圖(一)功能結(jié)構(gòu)框圖閏 年 判星 期 查輸 出 年輸 出 月(二)程序設(shè)計(jì)頭文件:#include/標(biāo)系準(zhǔn)統(tǒng)輸時(shí)入間輸顯出函數(shù)#include/清屏函數(shù) system()#include/延時(shí)函數(shù) sleep()#include / 調(diào)用系統(tǒng)時(shí)間函數(shù) time()在程序中運(yùn)用了大量的自定義函數(shù),都涉及為了使程序更簡(jiǎn)介明了。其中有:int isleapyear(int year)/ 判斷是否為閏年void hy()/歡迎信息;void time() /獲取系統(tǒng)時(shí)間;int whichweekday(int year
8、, int month, int day)/判斷某天為星期幾; void yearmonth(int year, int month)/ 打印某年某月的月歷;void monthday(int year)/ 輸入年份,打出個(gè)月歷;void menu()/ 主菜單;void main()/ 主函數(shù);這些函數(shù)的定義及其相應(yīng)的內(nèi)部程序共同構(gòu)筑起了這個(gè)萬(wàn)年歷查詢系統(tǒng)的總程序。其中 isleapyear 函數(shù)是用來(lái)判斷輸入的年份是否為閏年,實(shí)現(xiàn)了預(yù)計(jì)功能的第一個(gè)方面;whichweekday 函數(shù)則是為了實(shí)現(xiàn)判斷星期而編寫(xiě)的;yearmonth函數(shù)則是為了實(shí)現(xiàn)月歷而編寫(xiě)的;time()函數(shù)則是為調(diào)用系統(tǒng)
9、時(shí)間而編寫(xiě),該 time()函數(shù)采用指針形式定義了*week數(shù)組和*tp 變量;yearmonth,monthday 這兩個(gè) 函數(shù)的共同使用就能夠完成輸出年歷的功能。四、程序流程圖(一)總流程圖按鍵計(jì)算是否為閏計(jì)算星期數(shù)計(jì)算編輯接收輸 出 是輸 出 星 期輸 出 具 體按 鍵(二)算法說(shuō)明1. 總天數(shù)的算法:isleapyear 函數(shù)的使用,判斷出了輸入年份是否為閏年的信息。判斷一年是否為閏年的方法是:該年分而能被 4 整除但不能被 100 整除,或者是能被 400 整除。判斷是否為閏年的流程圖:2. 輸入日期計(jì)算星期幾:利用 whichweekday 函數(shù)可以判斷出星期,然后對(duì)于輸入的日期可
10、以通過(guò)公式weekday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7 計(jì) 算 就可以輸出相應(yīng)的星期數(shù)。int whichweekday(int year, int month, int day)/ 判斷某天為星期幾int weekday;if (month = 1 | month = 2)/ 公式中要把月和月?lián)Q成是上一年的月和 月month += 12;year -= 1;weekday=(day+2*month+3*(month+1)/5+year+year/4- year/100+year/400)%7; / 計(jì)算
11、星期的公式return weekday+1;3. 對(duì)輸入信息的匯總:void yearmonth(int year, int month)/ 打 印 某 年 某 月 的 月 歷 , voidmonthday(int year)/輸入年份,打出個(gè)月歷;通過(guò)這兩個(gè)函數(shù)可以將輸入數(shù)據(jù)的 具體信息通過(guò)完整日歷的形式表示出來(lái)。void yearmonth(int year, int month)/ 打印某年某月的月歷int i,j=0;int weekday; /計(jì)算這個(gè)月第一天是星期幾weekday = whichweekday(year, month, 1);printf(nprintf(print
12、f(%d 年%d 月n,year,month);-n);星期一星期二星期三星期四星期五星期六星期天n);if(isleapyear(year) & month = 2)days1 = days1 + 1;printf();for(i = 1; i weekday; i +)printf( );for(i = 0; i 8 - weekday; i +)printf(%6d, i+1);printf( );printf(n );for(i = 9-weekday; i = daysmonth-1; i +,j+)if(j = 7)j = 0;printf(n );printf(%6d , i);
13、printf(n -n);void monthday(int year)/ 輸入年份,打出個(gè)月歷int i;for(i = 0; i 12; i +)yearmonth(year,i+1);printf(nn);五、源程序代碼#include/標(biāo)準(zhǔn)輸入輸出函數(shù)#include/清屏函數(shù) system()#include/延時(shí)函數(shù) sleep()#include / 調(diào)用系統(tǒng)時(shí)間函數(shù) time()int days12=31,28,31,30,31,30,31,31,30,31,30,31;/ 每月的天數(shù),閏年 二月要加int isleapyear(int year)/ 判斷是否為閏年if(yea
14、r%4 = 0 & year%100 != 0 | year%400 = 0)return 1;elsereturn 0;void hy()/歡迎信息printf(nsleep(700);/延時(shí)毫秒printf(sleep(1000);printf(sleep(1000);printf(歡迎使用萬(wàn)年歷查詢系統(tǒng)nn);祝您每天好心情! nnn);版本:v2.0nnn);正在進(jìn)入功能菜單,請(qǐng)稍候n);sleep(5000);/延時(shí)秒void time() /獲取系統(tǒng)時(shí)間time_t t;struct tm *tp;static char *week=一,二,三,四,五,六,日;t=time(nul
15、l);tp=localtime(&t);printf(t n);printf(tt系 統(tǒng) 時(shí) 間 日 期 :%d年 %d月 %d日,tp-tm_year+1900,tp-tm_mon+1,tp-tm_mday);printf( %d:%d:%d ,tp-tm_hour,tp-tm_min,tp-tm_sec);printf(星期%sn,week(tp-tm_wday)-1);printf(t n);int whichweekday(int year, int month, int day)/ 判斷某天為星期幾int weekday;if (month = 1 | month = 2)/ 公式中
16、要把月和月?lián)Q成是上一年的月和 月month += 12;year -= 1;weekday=(day+2*month+3*(month+1)/5+year+year/4- year/100+year/400)%7; / 計(jì)算星期的公式return weekday+1;void yearmonth(int year, int month)/ 打印某年某月的月歷int i,j=0;int weekday; /計(jì)算這個(gè)月第一天是星期幾weekday = whichweekday(year, month, 1);printf(nprintf(printf(%d 年%d 月n,year,month);-
17、n);星期一星期二星期三星期四星期五星期六星期天n);if(isleapyear(year) & month = 2)days1 = days1 + 1;printf();for(i = 1; i weekday; i +)printf( );for(i = 0; i 8 - weekday; i +)printf(%6d, i+1);printf( );printf(n );for(i = 9-weekday; i = daysmonth-1; i +,j+)if(j = 7)j = 0;printf(n );printf(%6d , i);printf(n -n);void monthda
18、y(int year)/ 輸入年份,打出個(gè)月歷int i;for(i = 0; i =3000|year=3000|year=12|month=31|day=3000|year=3000|year=12|month0)system(cls);printf(sleep(3000);goto tz;輸入錯(cuò)誤,系統(tǒng)及即將返回!);yearmonth(year,month);if(isleapyear(year) & month = 2)/如果年份為閏年,則月加天days1 = days1 + 1;printf(提示:n 如繼續(xù)運(yùn)行請(qǐng)按n 如回首菜單請(qǐng)按n 如退出請(qǐng)按n 請(qǐng)選擇:);ch=getch();if(ch=1)goto t4;if(ch=2)goto tz;if(ch=0)exit(0);break;case 5:printf(nprintf(是否確定退出?n);確定請(qǐng)按,取消請(qǐng)按);ch=getch();if(ch = 2)goto tz;elseprintf( );exit(0);/退出break;default:system(cls);printf(您的輸入的指令有誤,請(qǐng)重新輸入!nn);printf(提示:
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2163-2024漆膜劃格器校準(zhǔn)規(guī)范
- 2024年度隔墻板市場(chǎng)推廣與銷(xiāo)售合同
- 2024年企業(yè)合規(guī)管理與風(fēng)險(xiǎn)評(píng)估服務(wù)合同
- 2024人工智能在金融服務(wù)中的應(yīng)用合同
- 2024年度品牌授權(quán)合同:知名品牌授權(quán)使用合同
- 句子改寫(xiě)課件教學(xué)課件
- 2024年度云計(jì)算服務(wù)帶寬擴(kuò)展及維護(hù)合同
- 2024年度吊車(chē)保險(xiǎn)合同:保險(xiǎn)責(zé)任與賠償限額
- 2024中小企業(yè)貸款及還款細(xì)節(jié)合同
- 2024年應(yīng)急響應(yīng):消防設(shè)施建設(shè)與維護(hù)合同
- 新課標(biāo)下小學(xué)生運(yùn)算能力的培養(yǎng)研究的開(kāi)題報(bào)告
- 餐飲行業(yè)初期投資預(yù)算分析
- 遼寧省重點(diǎn)高中沈陽(yáng)市郊聯(lián)體2023-2024學(xué)年高三上學(xué)期期中生物試題(解析版)
- 剪映:手機(jī)短視頻制作-配套課件
- 西氣東輸二線25標(biāo)段山嶺隧道內(nèi)管道安裝技術(shù)
- 防校園欺凌-課件(共28張PPT)
- 第6章 智能網(wǎng)聯(lián)汽車(chē)測(cè)評(píng)技術(shù)
- 單向板結(jié)構(gòu)設(shè)計(jì)
- 普通高等學(xué)校學(xué)生轉(zhuǎn)學(xué)申請(qǐng)表
- 房租、水、電費(fèi)(專(zhuān)用)收據(jù)Excel模板
評(píng)論
0/150
提交評(píng)論