版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、目 錄一 引言.2二 系統(tǒng)功能和數(shù)據(jù)說明.3一功能簡介3二程序中的數(shù)據(jù)說明3三 程序總體設(shè)計及流程圖.4一應(yīng)用到的c語言4二程序的總框架5四 功能模塊設(shè)計及調(diào)試.5 一算法說明51. 總天數(shù)的算法.52. 計算輸入日期是星期幾.63. 對輸入信息的匯總.84. .界面的控制.10二調(diào)試結(jié)果.11五 程序清單12六 結(jié)束語17一 引言通過大一上學(xué)期對C語言的學(xué)習(xí),了解到了很多C語言的相關(guān)知識。學(xué)習(xí)的過程有很多困惑但是當(dāng)自己能夠獨立的看懂,能過獨立的完成一個簡單的程序時,心中就會收獲無限的喜悅和成就感。我可以里喲哦那個它看懂一些簡單的程序,編寫一些簡單的計算程序,更多的是學(xué)會了一種思想編程,它讓我
2、在去思考很多日常生活中的事物是怎么樣通過一個個小小的函數(shù)實現(xiàn)功能的,激發(fā)我對探究的興趣。C語言是近年在國內(nèi)外得到迅速推廣應(yīng)用的一種語言。C語言功能豐富,表達能力強,使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,既具有高級語言的優(yōu)點,又具有低級語言的許多特點。因此,C語言特別適合于編寫各種軟件。在這次的課程設(shè)計中我將把日常生活中最經(jīng)常接觸的日期的查詢利用C語言的程序編成一個簡單的日歷。通過這個小小的日歷可以實現(xiàn)很多功能。在程序中你能看到很多熟悉的C語言關(guān)鍵字,同時也參加了很多自己課外了解到的一些關(guān)鍵字。在不斷的調(diào)試中最終才獲得最為完整的程序。接下來就是我的C語言課程設(shè)計的具體內(nèi)容來了二 系
3、統(tǒng)功能和數(shù)據(jù)說明一功能簡介 在我們的日常生活中能接觸到很多不同類型的日歷,在日歷上我們通常希望它能簡介明了的給我們最想要的日期信息。在我的萬年歷當(dāng)中,就是將日歷,月歷做的簡單明了,很方便我們的使用。下面是它要實現(xiàn)的一些根本功能:用C語言編寫萬年歷 1、輸入年份,判斷是否為閏年 2、輸入年月日,判斷改日為星期幾 3、輸入年份,打出12個月歷,輸入月份,打出該月的日歷 4、要求用多個函數(shù)實現(xiàn) 名稱萬年歷 修改1、對輸入的日期進行容錯處理 2、增加和修改為英文的月份和星期顯示 3、采用指針形式的weeks和month數(shù)組二程序中的數(shù)據(jù)說明int days12 = 31, 28, 31, 30, 31
4、, 30, 31, 31, 30, 31, 30, 31; 這是定義的關(guān)于每個月天數(shù)的數(shù)組,根據(jù)大小月以及二月分的特殊情況將每個月的天數(shù)最為數(shù)組中的元素存入數(shù)組當(dāng)中。其中days1=28,是將閏年二月的天數(shù)28天作為初始元素存入。在經(jīng)過theWeek函數(shù)后就可以給days1中存入正確的月天數(shù)。char *weeks7 ="Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturda
5、y" char *months12 = "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "DeCember" 這兩組數(shù)據(jù)都設(shè)計利用了指針定義的。這兩個數(shù)組的作用是存入每個月,每個
6、星期的地址。利用指針可以提高程序的可讀性,可以更方便使用。三 程序總體設(shè)計及流程圖一應(yīng)用到的C語言頭文件:stdio.h /*/ conio.h /*/ stdlib.h /*/采用指針形式定義了*weeks和*months兩組數(shù)組指針變量在程序中運用了大量的自定義函數(shù),都涉及為了使程序更簡介明了。其中有:isLeap/*判斷是否為閏年*/theLeap/*輸入輸出改年是否為閏年的信息*/ Zeller/*判斷星期的自定義函數(shù)*/ theWeek()/*對于輸入的日期輸出該天是星期幾*/ printCalendar/*輸出日期詳情及表格*/ details /*月歷詳情函數(shù)*/ theCale
7、ndar/*翻開相應(yīng)的詳情*/ Menu()/*程序的主菜單*/ Select()/*按鍵的控制函數(shù)*/這些函數(shù)的定義極其相應(yīng)的內(nèi)部程序共同構(gòu)筑起了這個萬年歷總程序。其中的isLeap函數(shù)是用來判斷輸入的年份是否為閏年,實現(xiàn)了預(yù)計功能的第一個方面;theWeek函數(shù)那么是為了實現(xiàn)判斷星期而編寫的;printCalendar , details , theCalendar這三個函數(shù)的共同使用就能夠完成第三個功能。二程序的總框架開始計算是否為閏年計算星期數(shù)按鍵1?按鍵2?按鍵3?輸出是否為閏年輸出星期數(shù)計算編輯接收到的數(shù)據(jù)輸出具體月歷按鍵0?是是是是計算是否為閏年計算星期數(shù)按鍵1?按鍵2?按鍵3?
8、是是是計算是否為閏年計算星期數(shù)按鍵1?按鍵2?按鍵3?是是計算是否為閏年計算星期數(shù)按鍵1?按鍵3?是是結(jié)束 退出四 功能模塊函數(shù)設(shè)計和調(diào)試一.算法說明1. 總天數(shù)的算法:isLeap和theLeap函數(shù)的共同使用,一起判斷出了輸入年份是否為閏年的信息。判斷一年是否為閏年的方法是:該年分而能被四整除但不能被100整除,或者是能被400整除。流程圖二:是否為閏年的判斷2. 計算輸入日期是星期幾:利用Zeller函數(shù)可以判斷出星期,然后對于輸入的日期可以通過theWeek() 函數(shù)對Zeller進行一次調(diào)用然后就可以輸出相應(yīng)的星期數(shù)。int Zeller(int year, int month, i
9、nt day) /by theWeek(); printCalendar();/*判斷星期的函數(shù)*/ int C, y, m, d, w; if( month < 3) year -= 1; month += 12; c = year / 100; y = year % 100; m = month; d = day; w = y + y/4 + C/4 - 2*C + 26*(m+1)/10 + d - 1; w %= 7; return (w >= 0 ? w : w+7);void theWeek() /by Select();/*對于輸入的日期輸出該天是星期幾*/ int
10、year, month, day, w; printf("n"); do printf("Please input the date(YYYY-MM-DD): "); scanf("%d-%d-%d", &year, &month, &day); if( isLeap( year ) ) days1 = 29; /是否閏年 else days1 = 28; while(!( (month > 0 && month < 13) && (day > 0 &&
11、amp; day <= daysmonth - 1) ) ); w = Zeller(year, month, day); printf("nThis day %d-%02d-%02d is %s.", year, month, day, weeksw); getch();3. 對輸入信息的匯總:theCalendar/*翻開相應(yīng)的詳情*/ ,details /*月歷詳情函數(shù)*/ ,printCalendar /*輸出日期詳情及表格*/,通過這三個函數(shù)可以將輸入數(shù)據(jù)的具體信息通過完整日歷的形式表示出來。void printCalendar(int year, int
12、month) /by details(); theCalendar();/*輸出日期詳情及表格*/ int w, d; w = Zeller(year, month, 1); printf("%28s", monthsmonth - 1); printf("n -%02d-n", month); printf(" SUN MON TUE WED THU FRI SATn"); for(d = 0; d < w; d+) printf(" "); for(month-, d = 1; d <= daysm
13、onth; d+) printf("%4d", d); if( (d + w)%7 = 0 && d != daysmonth) printf("n"); printf("n=n");例: 1946, January SUN MON JUE WED THU FRI SAT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31=void details(int year) /by theCalendar();
14、/*月歷詳情函數(shù)*/ int month; while(true) do system("cls"); printf("Press '0' to exit.n"); printf("Please input the month: "); scanf("%d", &month); while(!(month >=0 && month <= 12); if(month != 0) printf("n"); printf("Calendar
15、 %dn", year); printCalendar(year, month); if( getch() = '0') break; else break; void theCalendar() /by Select(); int year, month; printf("nPlease input the year: "); scanf("%d", &year); if( isLeap( year ) ) days1 = 29; /是否閏年 else days1 = 28; system("cls"
16、;); printf("Calendar %dn", year); for(month = 1; month <= 12; month+) printCalendar(year, month); printf("More details of each month ?Y/N"); if( tolower(getch() = 'y' ) details( year );4.界面的控制:主要表達在主菜單的選擇功能上。用到的是 Menu(), Select()兩個自定義函數(shù)。主菜單功能1 這年是否是閏年0 退出2 這一天天的星期數(shù)3 這一
17、年的月歷二調(diào)試結(jié)果五 程序清單*/#include <stdio.h>#include <conio.h> /getch(); tolower(); exit();#include <stdlib.h> /system();int days12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;char *weeks7 ="Sunday", "Monday", "Tuesday", "Wednesday", "Thursd
18、ay", "Friday", "Saturday"char *months12 = "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "Decembe
19、r"bool isLeap(int year) /by theLeap(); theCalendar();/*判斷是否為閏年*/ if(year%4 = 0 && year%100 != 0 | year%400 = 0) return 1; else return 0; void theLeap() /by Select();/*輸入輸出改年是否為閏年的信息*/ int year; printf("nPlease input the year: "); scanf("%d", &year); if( isLeap( y
20、ear ) ) printf("nThe year %d is leap year.", year); else printf("nThe year %d is not leap year.", year); getch();int Zeller(int year, int month, int day) /by theWeek(); printCalendar();/*判斷星期的自定義函數(shù)*/ int c, y, m, d, w; if( month < 3) year -= 1; month += 12; c = year / 100; y =
21、 year % 100; m = month; d = day; w = y + y/4 + C/4 - 2*C + 26*(m+1)/10 + d - 1; w %= 7; return (w >= 0 ? w : w+7);void theWeek() /by Select();/*對于輸入的日期輸出該天是星期幾*/ int year, month, day, w; printf("n"); do printf("Please input the date(YYYY-MM-DD): "); scanf("%d-%d-%d",
22、 &year, &month, &day); if( isLeap( year ) ) days1 = 29; /是否閏年 else days1 = 28; while(!( (month > 0 && month < 13) && (day > 0 && day <= daysmonth - 1) ) ); w = Zeller(year, month, day); printf("nThis day %d-%02d-%02d is %s.", year, month, day
23、, weeksw); getch();void printCalendar(int year, int month) /by details(); theCalendar();/*輸出日期詳情及表格*/ int w, d; w = Zeller(year, month, 1); printf("%28s", monthsmonth - 1); printf("n -%02d-n", month); printf(" SUN MON TUE WED THU FRI SATn"); for(d = 0; d < w; d+) pri
24、ntf(" "); for(month-, d = 1; d <= daysmonth; d+) printf("%4d", d); if( (d + w)%7 = 0 && d != daysmonth) printf("n"); printf("n=n");void details(int year) /by theCalendar();/*月歷詳情函數(shù)*/ int month; while(true) do system("Cls"); printf("Pr
25、ess '0' to exit.n"); printf("Please input the month: "); scanf("%d", &month); while(!(month >=0 && month <= 12); if(month != 0) printf("n"); printf("Calendar %dn", year); printCalendar(year, month); if( getch() = '0') bre
26、ak; else break; void theCalendar() /by Select(); int year, month; printf("nPlease input the year: "); scanf("%d", &year); if( isLeap( year ) ) days1 = 29; /是否閏年 else days1 = 28; system("Cls"); printf("Calendar %dn", year); for(month = 1; month <= 12; month+) printCalendar(year, month); printf("More details of each month ?Y/N"); if( tolower(getch() = 'y' ) details( year );void Menu() /by main();/*程序的主菜單*/ system("cls"); printf("1 -This year is leap year or notn"); printf("2 -This day is which
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國足爽祛臭劑數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國聚異氰酸酯膠數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國啪紐布帶數(shù)據(jù)監(jiān)測研究報告
- 2025年中國工業(yè)防爆型高壓清洗機市場調(diào)查研究報告
- 2025年度個人短期擔(dān)保借款合同范本(十八)
- 二零二五美容院美容院加盟店經(jīng)營管理指導(dǎo)合同3篇
- 2025年度住宅小區(qū)電梯智能化升級改造服務(wù)合同4篇
- 二零二五年度產(chǎn)業(yè)園區(qū)廠房租賃與人才引進服務(wù)合同3篇
- 二零二五版農(nóng)家樂生態(tài)農(nóng)業(yè)觀光園承包協(xié)議3篇
- 2025年度高校實習(xí)生就業(yè)保障服務(wù)勞動合同3篇
- 衛(wèi)生服務(wù)個人基本信息表
- 醫(yī)學(xué)脂質(zhì)的構(gòu)成功能及分析專題課件
- 高技能人才培養(yǎng)的策略創(chuàng)新與實踐路徑
- 廣東省湛江市廉江市2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2024年湖北省知名中小學(xué)教聯(lián)體聯(lián)盟中考語文一模試卷
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 生物 含解析
- 燃氣行業(yè)有限空間作業(yè)安全管理制度
- 數(shù)列練習(xí)題(含答案)基礎(chǔ)知識點
- 通用電子嘉賓禮薄
- 赤峰市海業(yè)礦產(chǎn)有限責(zé)任公司福合元礦區(qū)銅鉬礦2022年度礦山地質(zhì)環(huán)境治理與土地復(fù)墾方案
- 充電站監(jiān)理規(guī)劃
評論
0/150
提交評論