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

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上上海電機學院課 程 設(shè) 計20142015學年第一學期課程名稱 程序設(shè)計 設(shè)計題目 萬年歷 院(系) 高職學院 專業(yè) 計算機應(yīng)用技術(shù) 班級 計算機1401 學號 36 學生姓名 茅曄豪 設(shè)計時間 2015.1.12 指導教師 唐政 提交日期 2015.1.15 目 錄-10112-15專心-專注-專業(yè)1. 選題的意義(1) 通過萬年歷的設(shè)計,使我們掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編寫、測試等基本方法。 (2)通過萬年歷的設(shè)計,熟練掌握C+中的分支、循環(huán)、數(shù)組、函數(shù)、文件操作等應(yīng)用。2. 總體設(shè)計2.1 系統(tǒng)分析2.2系統(tǒng)概述:該程序可以實現(xiàn)系統(tǒng)當前日期所在月

2、份的日歷顯示功能,日期查詢功能,程序的初始日期設(shè)定功能,還有把給定年份的萬年歷輸出到txt文檔中的功能。2.3 系統(tǒng)的構(gòu)成:1日歷查詢功能 2日期查詢、閏年判斷功能。3支持通過鍵盤的操作調(diào)整年份、月份、和日期。并顯示調(diào)整后的日期。4 輸入任意年份,將該年份每月的日歷輸入文件。2.4 各模塊的功能及分析1、定義全局變量及數(shù)組。2、程序共由十一個函數(shù)組成,其功能分別為:a.showtime()顯示系統(tǒng)日期所在月份的日歷。b.refer()查詢?nèi)掌诓@示所在年份是否為閏年。c.setdate()設(shè)定系統(tǒng)的初始日期。d.print()打印指定年份的每月日歷并寫入文件。 e.nowday()提取系統(tǒng)所在

3、日。 f.nowmoth()提取系統(tǒng)所在月。g.nowyear()提取系統(tǒng)所在年。h.isleap()判斷給定年份是否為閏年。i.isweek()判斷給定日期是星期幾,周六到周日分別為0到6。j.errortest()判斷輸入的日期是否合法并給出提示。k.main()主函數(shù),程序開始運行并跳轉(zhuǎn)到showtime()函數(shù)。 3系統(tǒng)的運行流程圖4. 功能測試4.1 本系統(tǒng)的主界面1. 萬年歷系統(tǒng)。本系統(tǒng)的主要功能有:1. 輸入年月日計算星期幾。2. 打印任意日歷。4. 任意年份,判斷是否為閏年。3. 退出系統(tǒng),謝謝使用!2. 用戶可根據(jù)系統(tǒng)提示和用戶需要輸入14的操作數(shù)字。(程序主界面)3.當用戶

4、輸入的選項不符合要求時,系統(tǒng)將驗證并重新選擇(輸入報錯界面)4.2 輸入1.輸入選項1進入“輸入年月日計算星期幾?!惫δ埽斯δ芟驴梢暂斎肴掌?。2.輸入日期為:2015-1-143. 此處如果輸入日期不符合要求的話,系統(tǒng)將報錯并提示錯誤并重新選擇。4.3 打印任意日歷1. 輸入選項2進入“打印任意日歷”功能,此功能下可以打印日歷(輸入日期界面)2. 輸入日期:2015-1-14 3. 打印成功,并返回。4.4 判斷是否為閏年1. 輸入選項3進入“任意年份,判斷是否為閏年功能”功能。2. 輸入年份:20153. 輸出判斷并返回。4.5 使用完畢,退出系統(tǒng)1. 輸入選項2進入“退出系統(tǒng)”功能。2.

5、使用任意鍵退出系統(tǒng) 5設(shè)計小結(jié)本次我課程設(shè)計的題目是萬年歷系統(tǒng)。根據(jù)課程設(shè)計的要求,需要我用本學期所學的C+面向過程的知識來編寫程序。利用面向過程的方法以及C+的編程思想來完成系統(tǒng),以及參考了網(wǎng)上的一些C語言程序。在設(shè)計的過程中,我參考了大量的書籍資料、和網(wǎng)上的資料,我們的指導老師也一直都在鼓舞和幫助我,最后我終于通過努力完成此次得課程設(shè)計。通過這次的課程能夠設(shè)計學習,讓我對C+語言的編程有了更深層的認識和理解。我主要負責打印任意日歷的部分,一開始還很沒有頭緒,但經(jīng)過思考和查找資料后,我很好的完成了我的任務(wù)。在這次課程設(shè)計中,我們首先對系統(tǒng)的整體功能進行了構(gòu)思,然后用結(jié)構(gòu)化分析方法進行分析,將

6、整個系統(tǒng)清楚的劃分為幾個模塊,再根據(jù)每個模塊的功能編寫代碼。而且盡可能的將模塊細分,最后在進行函數(shù)的調(diào)用。我們在函數(shù)的編寫過程中,我們不僅用到了for循環(huán)、while循環(huán)和switch語句,還用到了函數(shù)之間的調(diào)用(包括遞歸調(diào)用)。由于我們是分工編寫代碼,最后需要將每個人的代碼放到一起進行調(diào)試。因為我們每個人寫的函數(shù)的思想不都一樣,所以在調(diào)試的過程中也遇到了困難,但經(jīng)過我們耐心的修改,終于功夫不負有心人,我們成功了!  參 考 文 獻 1 李龍澍C+程序設(shè)計實訓 清華大學出版社,2003年2 伍俊良VISUAL C+課程設(shè)計與系統(tǒng)開發(fā)案例,清華大學出版社2003年3烏尼爾 Visual

7、 C+經(jīng)典例程分析中國電力出版社,2000年4 張曜VISUAL C+程序開發(fā)案例解析清華大學出版社,1999年5 宋曉宇、王永會VISUAL C+高級編程技術(shù)與實例 中國水利水電出版社,2003年附錄:源代碼清單#include <stdio.h> #include <iostream.h>#include <stdlib.h> #include <ctype.h> int leap (int year); /判斷是否為閏年int days_month (int month,int year); /判斷這個月的天數(shù)int firstday(in

8、t month,int year);/顯示本月第一天是星期幾int menu_select(); void f() int day,month,year,sum,leap,S; printf("n *請輸入年 月 日*n"); scanf("%d%d%d",&year,&month,&day); switch(month) case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break;

9、case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; sum=sum+day; if(year%400=0|(year%4=0&&year%100!=0) leap=1; else leap=0; if(leap=1&&am

10、p;month>2) sum+; S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7;/X表示年份,C是該年份元旦開始到這一日的天數(shù)/S/7的系數(shù)就是星期數(shù)/01printf("%d",S); switch(S) case 1:printf("星期一n");break; case 2:printf("星期二n");break; case 3:printf("星期三n");break; case 4:printf("星期四n");bre

11、ak; case 5:printf("星期五n");break; case 6:printf("星期六n");break; case 0:printf("星期日n");break; void g() int i,j=1,k=1,a,b,month,year; printf("n 輸入年月:n"); scanf("%d%d",&year,&month); b=days_month(month,year); a=firstday (month,year); printf("

12、*n"); printf(" Sun Mon Tue Wed Thu Fri Sat n"); if(a=7) for(i=1;i<=b;i+) printf("%4d",i); if(i%7=0) printf("n"); if(a!=7) while (j<=4*a) printf(" "); j+; for(i=1;i<=b;i+) printf("%4d",i); if(i=7*k-a) printf("n"); k+; printf(&q

13、uot;n*n"); printf("n"); int leap (int year) if(year%4=0&&year%100!=0|year%400=0) return 1; else return 0; int days_month (int month,int year) if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) return 31; if(month=4|month=6|month=9|month=11) return 30; if(month=2&

14、;&leap(year)=1) return 29; else return 28; int firstday(int month,int year) int w; w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1; return w; int h() int year; bool leap; cout<<" " cin>>year; if(year%4=0) if(year%100=0) if(year%400=0) leap=true; else leap=fals

15、e; else leap=true;else leap=false;if(leap) cout<<year<<" is 閏年"else cout<<year<<" is not 閏年"cout<<" "<<endl;return 1; void main() for(;) switch(menu_select() case 1: f(); break; case 2: printf("打印任意日歷n");g(); break;case 3:printf(" *輸入年份*n ");h();break; case 4: printf("謝謝使用!n"); exit(0); int menu_select() char s; int cn; printf("nn n 1.輸入年月日計算星期幾n "); printf("2.打印任意日歷 n "); printf("3.判斷是否為閏年 n ");printf("4.退出系統(tǒng),謝謝使用! n "); printf("n 輸入 1-4:n"); do

溫馨提示

  • 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

提交評論