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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

-.zc語言課程設(shè)計報告書電子萬年歷及記事本一設(shè)計目的本程序旨在呈現(xiàn)一個由公元元年開場的電子萬年歷。該系統(tǒng)在初始時能夠根據(jù)系統(tǒng)當前時間顯示當前年月情況,包括日期,星期,月份,年份。并可由用戶通過直接輸入年份和月份重復(fù)查找指定月份的詳細情況。此外,用戶可根據(jù)需要在日歷的任意日期內(nèi)寫入文字作為待辦事項或紀錄并在需要時可以通過調(diào)用已保存的文件觀察或?qū)ζ溥M展修改。本程序的目的在于幫助使用者方便地查詢當前日期并能夠較好的管理和規(guī)劃時間,提高工作效率。二程序組成圖〔上層圖〕萬年歷日期顯示函數(shù)文擋編譯函數(shù)總?cè)掌谟嬎愫瘮?shù)月份顯示函數(shù)文字輸入函數(shù)文本調(diào)用輸出函數(shù)三函數(shù)流程圖1日期顯示函數(shù)用戶輸入年月計算輸出月份圖重新輸入年月2文檔編譯函數(shù)用戶選擇日期輸入文本調(diào)用文本輸入函數(shù)保存調(diào)用\修改四詳細設(shè)計主要函數(shù)說明及調(diào)用日期顯示函數(shù)〔主函數(shù)〕為一個循環(huán)體,以便屢次查找日期。在首次執(zhí)行循環(huán)時調(diào)用系統(tǒng)時間函數(shù)輸出當前日期為默認值并調(diào)用月份顯示函數(shù)〔月份對應(yīng)名稱〕顯示指定月份并輸出月歷。而后將用戶指定日期傳遞給日期計算函數(shù)〔判別閏年并從公元1年開場疊加〕計算從元年至當前年份總天數(shù)。并對給定年份是否為潤年進展判定,顯示月歷。文檔輸入、讀取函數(shù)于主函數(shù)中調(diào)用,由用戶在主函數(shù)給出的日歷內(nèi)選取日期并調(diào)用輸入函數(shù)并可以在其中寫入文檔并在關(guān)閉程序時儲存在DATA文件中。此后,當用戶需要顯示文檔時系統(tǒng)能夠通過調(diào)用硬盤中的文檔顯示文本,并可由用戶修改文檔并再次儲存于硬盤中。五調(diào)試與測試調(diào)試過程主要是根據(jù)程序的設(shè)計目的帶入數(shù)據(jù)以檢驗程序的功能完整性和程序穩(wěn)定性。經(jīng)過測試,數(shù)據(jù)完全符合預(yù)期,程序運行根本穩(wěn)定。但是在文件輸入過程中有一定幾率自動跳過第一步的操作,以至于無法寫入日記。經(jīng)過反復(fù)嘗試我通過添加了讓用戶在輸入日記前鍵入回車的方法解決了這個問題。并在測試后改善了文件顯示時無法分行顯示的問題,使得日記更加美觀。六程序清單及注釋*include<graphics.h>*include<stdio.h>*include<conio.h>*include<stdlib.h>*include<time.h>intIsLeapYear(int);intmonth_vis(intmonth,intyear);intclendar(void);voidfilewright(FILE*fp);voidfileread(FILE*fp);inti;intday;intyear;inttemp;intmonth;inttemp_i;longintYear_days=0;intYear_Start=1;intPer_Year_Days;intmonth_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29};/*每月日期數(shù)組*/structtm*aa;FILE*fp;structlogdata{longlogid;charlogdate[100];};voidmain()/*主函數(shù)*/{te*tbackground(7);/*設(shè)置程序背景*/te*tcolor(0);clrscr();clendar();getch();}intclendar(void)/*日歷輸出函數(shù)*/{charchoice;intdaynum;time_tt;time(&t);/*調(diào)用系統(tǒng)當前日期*/aa=gmtime(&t);year=aa->tm_year+1900;month=aa->tm_mon+1;day=aa->tm_mday;do/*循環(huán)輸出日歷*/{Year_days=0;Year_Start=1;month_vis(month,year);printf("MonTueWedThuFriSatSun\n");while(Year_Start<year){if(IsLeapYear(Year_Start))Per_Year_Days=366;elsePer_Year_Days=365;Year_days=Year_days+Per_Year_Days;Year_Start++;}for(temp=1;temp<=12;temp++){if(temp==month){i=Year_days%7;if(i!=0)for(temp_i=0;temp_i<i;temp_i++)printf("");}/*輸入起點空格*/day=1;if(IsLeapYear(year)&&temp==2)/*二月的情況*/while(day<=month_day[12]){if(temp==month){if(day>1)if(Year_days%7==0)printf("\n");if(day>=10)printf("%d",day);elseprintf("%d",day);}Year_days++;day++;}elsewhile(day<=month_day[temp-1])/*非二月*/{if(temp==month){if(day>1)if(Year_days%7==0)printf("\n");if(day>=10)printf("%d",day);elseprintf("%d",day);}Year_days++;day++;}}printf("\n");sign1:printf("Input'1'toinputtheyearandmonth\nInput'2'towrightnote\nInput'3'toreadthenote\nOthertoe*it\n");/*菜單*/choice=getch();if(choice!='1'&&choice!='2'&&choice!='3')e*it(0);elseif(choice=='2'){clrscr();filewright(fp);/*調(diào)用寫文件函數(shù)*/gotosign1;}elseif(choice=='3'){clrscr();fileread(fp);/*調(diào)用讀文件函數(shù)*/gotosign1;}clrscr();printf("Pleaseenteryearandmonth:");scanf("%d%d",&year,&month);if(year<=0||month<=0){if(year<=0&&month>=0){printf("Theyeariswrong!\n");}if(year>=0&&month<=0){printf("Themonthiswrong!\n");}if(year<=0&&month<=0)printf("Theyearandmontharewrong!\n");gotosign1;}}while(1);}intmonth_vis(intmonth,intyear)/*月份顯示函數(shù)*/{switch(month){case1:printf("January(%d)\n",year);break;case2:printf("February(%d)\n",year);break;case3:printf("March(%d)\n",year);break;case4:printf("April(%d)\n",year);break;case5:printf("May(%d)\n",year);break;case6:printf("June(%d)\n",year);break;case7:printf("July(%d)\n",year);break;case8:printf("August(%d)\n",year);break;case9:printf("September(%d)\n",year);break;case10:printf("October(%d)\n",year);break;case11:printf("November(%d)\n",year);break;case12:printf("December(%d)\n",year);break;}return0;}intIsLeapYear(intyear)/*計算是否為閏年*/{if((year%4==0)&&(year%100!=0)||(year%400==0))return1;elsereturn0;}voidfilewright(FILE*fp)/*寫日記函數(shù)*/{chara[]={"},note[80]={"},date[20]={"},space[]={""},sign[]={":"};if((fp=fopen("data.t*t","a+"))==NULL){printf("\nFilecannotopen!");e*it(0);}printf("Nowyoucaninputthenote\nPressenter\n");gets(a);/*防止可能出現(xiàn)的無法輸入日記的bug*/clrscr();printf("Inputthedate:");gets(date);printf("Inputthenote:\n");gets(note);fputc('\n',fp);fputs(date,fp);fputs(sign,fp);fputs(note,fp);fputs(space,fp);fclose(fp);printf("Pressanykeytogoback:\n");getch();clrscr();}voidfileread(FILE*fp)/*讀日記函數(shù)*/{c

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論