萬年歷課程設計報告_第1頁
萬年歷課程設計報告_第2頁
萬年歷課程設計報告_第3頁
萬年歷課程設計報告_第4頁
萬年歷課程設計報告_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上西安文理學院軟件學院課程設計報告設計名稱: 程序語言課程設計 設計題目: 萬年歷 學生學號: 專業(yè)班級: 軟件工程一班 學生姓名: 羅強強 學生成績: 指導教師(職稱): 張慶剛 課題工作時間: 2012.11.15 至 2012.11.29 軟件學院課程設計任務書學生姓名羅強強學號專業(yè)班級軟件工程一班設計題目萬年歷內容概要: 設計用的計算機環(huán)境 :WindowsXP,Turboc2.0 和 Microsoft Visual C+ 6.0設計所運用的語言:C語言算法中涉及的知識點:定義整型,字符型,指針變量,字符型數組和指針數組。數組的初始化和引用和指針的使用。設計所

2、包含的基本功能:模仿現實生活中的掛歷.當前頁以系統(tǒng)當前日期的月份為準顯示當前月的每一天(顯示出日及對應的星期幾). 當系統(tǒng)日期變到下一月時,系統(tǒng)自動翻頁到下一月,每頁的顏色都不相同。文獻資料:譚浩強. C 程序設計(第三版)M.北京:清華大學出版社.2005譚浩強. C 程序設計題解與上機指導 (第三版)M .北京: 清華大學出版社.2005戴建鵬譯 C 語言大全(第三版)M .北京:電子工業(yè)大學出版社.1994設計要求:一設計內容及功能要求:模仿現實生活中的掛歷.當前頁以系統(tǒng)當前日期的月份為準顯示當前月的每一天(顯示出日及對應的星期幾). 當系統(tǒng)日期變到下一月時,系統(tǒng)自動翻頁到下一月. 二設

3、計完成后提交的文件和圖表 文件:萬年歷系統(tǒng)文件,及源代碼圖表: 1, 進入萬年歷系統(tǒng) 2, 任意鍵進入菜單 3, 當輸入非法字符時,提示錯誤,重新輸入4, 進入選項 1,日歷顯示 5, 進入選項 2,日歷查詢6, 當查詢輸入非法字符時,提示錯誤,返回主菜單 當查詢輸入非法字符時, 提示錯誤7, 進入選項 3,退出工作期限:設計工作自2012年11月15日至2012年11月29日止。指導教師: 院長: 日 期:2012年11月15日摘 要本程序是一個萬年歷程序,模仿現實生活中的掛歷. 當前頁以系統(tǒng)當前日期的月為準顯示當前月的每一天(顯示出日及對應的星期幾). 當系統(tǒng)日期變到下一月時,系統(tǒng)自動翻頁

4、到下一月,還可以在程序中任意的輸入公元年份,月,日進行日期查詢,當輸入完成后,用戶圖形界面出現相應年月簡易的日歷表,并且是以星期的格式出現。而且每個運行界面的顏色都不相同。在本程序中主要運用了定義整型,字符型,指針變量,字符型數組和指針數組,數組的初始化和引用和指針的使用,達到 c 語言程序編寫所體現的方便快捷的功效。專心-專注-專業(yè)目 錄摘 要 II第一章 緒論. .21.1 課題的背景.21.2 課題的目的.213 課題的意義2第二章設計簡介及設計方案論述 .32.1 實現的功能.32.2 結構模塊分析.3第三章詳細設計.43.1 設計思路.43.2 功能模塊.43. 3 各模塊函數詳細說

5、明.5第四章運行結果. .94.1 系統(tǒng)使用說明.94.2 系統(tǒng)運行結果接截圖.9總 結 .12參考文獻 .13 附錄 主要程序代碼 .14第一章 緒論1.1 課題的背景在現代信息社會里,人們越來越重視時間的有效利用,而萬年歷也成了工作生活中 必不可少的一部分,方便實用的萬年歷對于提高現代人的時間觀念,優(yōu)化時間使用效率 具有重要意義。同時,隨著個人電腦的普及,簡單的桌面萬年歷成為人們日常作息及重 要事件提醒記錄的重要工具。簡易萬年歷可以運行在電腦桌面上,使用者可以通過各種 不同的標記對重要時間及節(jié)假日和備忘事件等方面進行有效的查詢和管理。1.2課題的目的通過顯示年日歷程序的設計,培養(yǎng)我們綜合利

6、用 C語言進行程序設計的能 力,加強函數的運用及學生對軟件工程方法的初步認識,提高軟件系統(tǒng)分析能力 和程序文檔建立、歸納總結的能力,培養(yǎng)學生利用系統(tǒng)提供的標準函數及典型算 法進行設計。通過本項課程設計,可以培養(yǎng)獨立思考、綜合運用所學有關相應知識的能力,能更好的鞏固C語言程序設計課程學習的內容,掌握工程軟件設計的基本 方法,強化上機動手編程能力,闖過理論與實踐相結合的難關!更加了解了 C語言的好處和其可用性!同時增加了同學之間的團隊合作精神!更加也體會到以 后在工作中團隊合作的重要性和必要性! 通過 C語言課程設計,使我們了解高級程序設計語言的結構,掌握基本的 程序設計過程和技巧,掌握基本的分析

7、問題和利用計算機求解問題的能力,具備初步的高級語言程序設計能力。為后續(xù)各門計算機課程的學習和畢業(yè)設計打下堅實基礎。1.3 課題的意義掌握一種編程工具和面向對象程序設計的基本思想和方法, 培養(yǎng)我們學生綜合利用 某種語言進行程序設計的能力,培養(yǎng)我們學生利用系統(tǒng)提供的功能進行創(chuàng)新設計的能 力,培養(yǎng)我們學生充分利用計算機的功能和特點分析實際問題及解決實際問題的能力。 為我們提供一個綜合運用所學知識解決實際問題的機會, 增強我們學生的實踐動手能力和工程實踐能力,并培養(yǎng)和鍛煉我們學生的自學創(chuàng)新能力。為了能更好地了解 C語言,因此開設了此次課程設計,程序設計教學課程的目的不是為了單獨的課堂學習,而是要讓我們

8、學生掌握程序設計的基本思想及方法。一方面,在課程設計過程中,可以明確的指導為什么而學,還能對所學知識得到應用,更重要的是可以讓我們學生掌握一些基本函數的用法,從而不在對編程序感到茫然,經過設計,可以讓我們熟悉簡單程序的設計方法和編寫,對程序設計及該門課程設計語言的應用得到理解。第二章 設計簡介及設計方案論述2.1實現功能簡易萬年歷主要實現以下幾個功能: 日歷顯示; 日歷查詢 ; 退出程序2.2內部結構模塊分析萬年歷主程序萬年歷獲取系統(tǒng)日期判斷是否是閏年取得星期打印月歷查詢日歷退出程序萬年歷內部程序分六部分:獲取系統(tǒng)日期、判斷是否是閏年、取得星期、打印月歷、查詢日歷、退出程序。第三章 詳細設計3

9、.1 設計思路3.1.1 設計語言語言選擇:本系統(tǒng)選擇C語言來編寫3.1.2設計程序流程圖開始程序進入顯示當前日歷獲取系統(tǒng)日期判斷閏年是 否輸出日歷 二月29天 二月28天1. 日歷顯示2. 日歷查詢3. 退出程序1.日歷顯示2.日歷查詢輸入年月日正確判斷輸入的年月日格式3.退出程序 錯誤結束萬年歷系統(tǒng)3.2功能模塊退出日歷查詢天星期日歷顯示3.3各模塊函數詳細說明3.3.1從系統(tǒng)取當前日期struct tm*getDay()time_t timer; struct tm* gmt; time(&timer); gmt=localtime(&timer); return gmt

10、; 3.3.2判斷是否是閏年int runYear(int year)/判斷是否是閏年 int run=0; if(year%400=0|(year%4=0&&year%100!=0) run=1; return run; int chaxunday(int year,int month,int day)/檢查正確if(year<=0&&year>=10000|month<1&&month>12|day<1|day>31) return 0;switch(month) case 1:case 3:case 5:

11、case 7:case 8:case 10:case 12: if(day>31)return 0;break; case 4:case 6:case 9:case 11: if(day>30)return 0;break; default: if(runYear(year)&&day>29) return 0; else if(runYear(year)=0&&day>28) return 0;return 1; 3.3.3取得星期int qudeDay(int year,int month,int day)/取得星期int nday=

12、0,nDay,i,x;for(i=0;i<month-1;i+)nday+=daysOfMonthrunYear(year)i; nday+=day;nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday;x=nDay%7; return x; void printrili(int year,int month,int day)/打印月歷 int i; char wday74="日","一","二","三","四","五&quo

13、t;,"六 "printf(" %d 年%d 月%d 日n",year,month,day);for(i=0;i<7;i+) printf("%5s",wdayi);printf("n");int w; int nowDay=1; w=qudeDay(year,month,nowDay);/找到第一天的星期int n;n=daysOfMonthrunYear(year)month-1;switch(w) /放置第一天case 0:printf("%5d",nowDay);break; ca

14、se 1:printf("%10d",nowDay);break; case 2:printf("%15d",nowDay);break; case 3:printf("%20d",nowDay);break; case 4:printf("%25d",nowDay);break; case 5:printf("%30d",nowDay);break; default:printf("%35dn",nowDay);nowDay+; for(i=1;i<n;i+)w=qu

15、deDay(year,month,nowDay); printf("%5d",nowDay); if(w=6) /如果是星期六則換行打印puts("n");nowDay+; 3.3.4查詢日歷void checkrili() system("cls");printf("請輸入你要查詢的日期(如 2012 11 20):");scanf("%d%d%d",&year,&month,&day);while(!chaxunday(year,month,day) /如果日期輸入不

16、正確,則重新輸入printf("請重新輸入");scanf("%d%d%d",&year,&month,&day); system("cls"); if(runYear(year) printf("n 閏年nn");else printf("n 平年nn");printrili(year,month,day); 3.3.5返回主菜單void backMenu()int x; printf("請按任意字符鍵返回主菜單:"); scanf("%d

17、",&x); system("cls"); char menu100;/定義數組int flag=0;do int f=0; do f=0; printf("n 請輸入相應數字:");scanf("%s",menu);if(strlen(menu)>2)f=1; /測量字符串長度。數字字符串長while(f=1);switch(*menu) case '1': system("cls"); /清屏 printrili(year,month,day); backMenu();

18、/實現任意鍵返回主菜單mainMenu(year,month,day);break;case '2': system("cls"); checkrili();backMenu(); mainMenu(year,month,day); break; case'3':system("cls");printf("程序已退出! ""cls");exit(0);default:printf("%c 輸入錯誤!n",7);flag=1;while(flag); 第四章 設計結

19、果及分析4.1 系統(tǒng)使用說明這個程序是用 C 語言編寫的,在軟件 Microsoft Visual C+上運行,首先打開 Visual C+,創(chuàng)建文件夾保存,新建文件,然后編入代碼,編譯,如果沒有錯誤的話運行。運行界面上有五個選項,根據需求選擇選項,首頁最上面是顯示的運行當時的本地時間。4.2 系統(tǒng)運行結果及截圖4.2.1系統(tǒng)運行顯示當前日期4.2.2顯示主菜單4.2.3查詢日期4.2.4顯示所查詢的日期4.2.5退出程序4.2.6輸入錯誤總結 本次用 C 語言編寫的萬年歷系統(tǒng)主要實現了當天日歷的顯示、日歷的查詢和退出程序三大功能,是一次成功的課程設計。在設計初期,首先溫習了課本內容,再次熟悉

20、了 C 程序,然后廣泛的查找有關萬年歷的資料,并結合查找到的資料,整理出設計的主要思路,畫出流程圖,最終完成了源程序代碼的編寫。在實驗中,碰到了不少問題,其中包括如何獲取系統(tǒng)時間,如何改變界面的顏色,通過查閱資料和詢問同學得到了解決。當然, 由于時間和能力的原因,顯示農歷的功能沒有實現。 在本次課程設計中,我深深體會到查找資料的重要性,因為本次課程設計需要比較全面的 C 語言知識,需要從書本中查找大量的幫助資料,培養(yǎng)了自己的自主學習能力和分析問題的能力,使我受益匪淺。參考文獻譚浩強. C 程序設計(第三版)M.北京:清華大學出版社.2005譚浩強. C 程序設計題解與上機指導 (第三版)M .

21、北京: 清華大學出版社.2005戴建鵬譯 C 語言大全(第三版)M .北京:電子工業(yè)大學出版社.1994附錄 主要程序代碼#include<stdio.h>#include<time.h> #include<math.h>#include<windows.h>int year,month,day; /全局變量記錄時間int daysOfMonth212=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31; void main()system("c

22、olor 4a");int runYear(int year);struct tm* getDay();/從系統(tǒng)取得當前時間,結構體,在函數中指定int chaxunday(int year,int month,int day);/檢查日期是否正確int qudeDay(int year,int month,int day);/取得星期void printrili(int year,int month,int day);/打印月歷 void checkrili();/查詢日歷void backMenu();void mainMenu(int &year,int &mo

23、nth,int &day);/主菜單 struct tm *gmt=getDay();/用系統(tǒng)時間進行初始化,year=gmt->tm_year+1900;month=gmt->tm_mon+1;day=gmt->tm_mday;printrili(year,month,day);/打印當前月歷backMenu();mainMenu(year,month,day); struct tm*getDay()/從系統(tǒng)取得當前時間time_t timer; struct tm* gmt; time(&timer); gmt=localtime(&timer);

24、 return gmt; int runYear(int year)/判斷是否是閏年 int run=0; if(year%400=0|(year%4=0&&year%100!=0) run=1; return run; int chaxunday(int year,int month,int day)/檢查正確if(year<=0&&year>=10000|month<1&&month>12|day<1|day>31) return 0;switch(month) case 1:case 3:case 5:c

25、ase 7:case 8:case 10:case 12: if(day>31)return 0;break; case 4:case 6:case 9:case 11: if(day>30)return 0;break; default: if(runYear(year)&&day>29) return 0; else if(runYear(year)=0&&day>28) return 0;return 1; int qudeDay(int year,int month,int day)/取得星期int nday=0,nDay,i,x

26、;for(i=0;i<month-1;i+)nday+=daysOfMonthrunYear(year)i; nday+=day;nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday;x=nDay%7; return x; void printrili(int year,int month,int day)/打印月歷 int i; char wday74="日","一","二","三","四","五","六

27、 "printf(" %d 年%d 月%d 日n",year,month,day);for(i=0;i<7;i+) printf("%5s",wdayi);printf("n");int w; int nowDay=1; w=qudeDay(year,month,nowDay);/找到第一天的星期int n;n=daysOfMonthrunYear(year)month-1;switch(w) /放置第一天case 0:printf("%5d",nowDay);break; case 1:print

28、f("%10d",nowDay);break; case 2:printf("%15d",nowDay);break; case 3:printf("%20d",nowDay);break; case 4:printf("%25d",nowDay);break; case 5:printf("%30d",nowDay);break; default:printf("%35dn",nowDay);nowDay+; for(i=1;i<n;i+)w=qudeDay(year

29、,month,nowDay); printf("%5d",nowDay); if(w=6) /如果是星期六則換行打印puts("n");nowDay+; void checkrili()/查詢日歷 system("color 0a"); system("cls");printf("請輸入你要查詢的日期(如 2012 11 20):");scanf("%d%d%d",&year,&month,&day);while(!chaxunday(year,mon

30、th,day) /如果日期輸入不正確,則重新輸入printf(" 請重新輸入");scanf("%d%d%d",&year,&month,&day); system("cls"); if(runYear(year) printf("n 閏年nn");else printf("n 平年nn");printrili(year,month,day); void backMenu()int x; printf("請按任意字符鍵返回主菜單:"); scanf(&

31、quot;%d",&x); system("cls"); void mainMenu(int &year,int &month,int &day)/主菜單 system("color 1e");printf(" *n");printf(" * *主菜單* *n");printf(" * 1.日歷顯示 *n");printf(" * 2.日歷查詢 *n");printf(" * 3.退出 *n");printf(" *n");char menu100;/定義數組int flag=0;do int f=0; do f=0; printf("n 請輸入相應數字:");scanf("%s",menu);if(strlen(menu)>2)f=1; /測量字符串長度。數

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論