




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
xxxxxxxx
電子工程系
C語言
課程設計報告
題目名稱:年歷顯示設計
學生姓名:―XXXXXX
學號:XXXXXXXXXXXXX
專業(yè):電子信息工程
同組成員:XXXXXXXXXXX
2013年12月制成績:
、設計題目:題目五,年歷顯示設計
二、設計任務及自己所承擔部分
設計任務:
(1)輸入一個年份,輸出是在屏幕上顯示該年的日歷。假定輸入的年份在
1950-2050年之間。
(2)輸入年月,輸出該月的日歷。
(3)輸入年月日,輸出距今天還有多少天,星期兒,是否是公歷節(jié)日。
自己所承擔部分:程序的測試以及運行
三、總體設計(程序設計組成框圖、流程圖)
程序組成框圖:
年歷顯示設計
輸輸輸
出出出
年月詳
日日細
歷歷信
息
流程圖:
開始
點擊進入功能選項
查查
詢
詢
詳
年
細
II信
歷息
輸出年日輸出詳細
歷信息
顯示結(jié)果
是否繼續(xù)
四、詳細設計(模塊功能說明,如函數(shù)功能、入口及出口參數(shù)說明,
函數(shù)調(diào)用關(guān)系描述等)
當我們輸入年份任意公元后的年份year時,可以通過一個for語句,算出從
公元一年到y(tǒng)ear-1年的總天數(shù),這其中要注意平年與閏年的區(qū)別,平年365天,
閏年是366天,把這一部分用how()函數(shù)表示。算出總天數(shù)Z后,用Z除以7余
數(shù)是d,則year這一年的一月一日便是星期d。如此則一月的日歷可表示出來。
然后把Z加上一月的天數(shù)tian得到的新值賦給Z,再用Z除以7,重新得到新的
余數(shù)d,如此可知二月的第一天是星期幾,可表示出二月的日歷。依次循環(huán),用
for(i=0;i〈12;i++)語句可表示出該年的日歷。注意閏年二月是29天,平年是
28天。
模塊功能說明:
A.大體框架:對于所給出的萬年歷要滿足三個功能即查詢某一年的年歷表,某
一年單月的月歷,某一年某一月某一日具體的信息包含星期幾,是否有公歷
節(jié)日,距離當前時間所差的天數(shù)三個小的功能。
a.功能A:查詢某一年的年歷表。主題思想將一年每個月的天數(shù)存放在一個數(shù)
組中以方便調(diào)用,其次年歷要判斷所查詢的年份是否為閏年或者是平年由條
件if((y%4==0&&y%100!=0)||y/400==0)來確定,如果是閏年則二月份輸出29
天此由條件語句給出。對于年里中的星期兒由公歷算法
b.判斷某一年的第一天也就是元旦為星期幾,利用循環(huán)語句依次累加排列出該
月的月歷,滿足條件(j*10+k)>=(10+w)就累加否則=輸出空格。
c.功能B:查詢某一年某一月的月歷,和上面一樣需要判斷是否為閏年,不同
之處是星期數(shù)由w=(y-l+(y-1)/4-(y-1)/100+(y-1)/400+s+l)%7給出。
d.功能C:查詢某一年某一月某一天的具體信息。利用s來計算出當前與你所
要查詢某一天所想差的天數(shù),具體思想為:兩個都利用了for循環(huán)語句,循
環(huán)起點同為0,也就是他們開始記年的時間相同,先計算整年之間所相差的
天數(shù)yl并判斷循環(huán)之間的年份是否為閏年,如果是加366否則加365.然后
判斷月份的天數(shù),也是利用for循環(huán)通過調(diào)用數(shù)組中的滿足條件的元素累加
月分所經(jīng)過的天數(shù)ml.則suml=yl+ml+dl.和上面一樣計算所要查詢的天數(shù)總
和sum=y+m,s=suml-sum,判斷這一天的星期數(shù)由公式
w=(y-l+(y-1)/4-(y-1)/100+(y-1)/400+s)%7判斷。公歷信息應提前輸入一
個公歷信息庫,利用條件語句判斷如果滿足輸出該節(jié)日。
要解決的主要問題為:
(1)找到日期和星期幾之間的對應關(guān)系。
(2)閏年的判斷可以構(gòu)造一個函數(shù)來實現(xiàn):intIsLeapYear(intyear);每
月對應的天數(shù)可以利用一個一維數(shù)組month_day□來存儲;為顯示一年當中的各
個月份可用switch-case分支結(jié)構(gòu)。
五、調(diào)試與測試:調(diào)試方法,測試結(jié)果的分析與討論,測試過程中遇
到的主要問題及采取的解決措施
測試方法:運用C++語言程序運行。具體步驟:編譯,組建,執(zhí)行
測試遇到的問題:
(1)函數(shù)的調(diào)用與套用,具體來說就是如何在一個構(gòu)造的函數(shù)中調(diào)用另一
個構(gòu)造函數(shù)。
(2)把每月的日歷設計的美觀,如何讓星期和下面的數(shù)字對齊。
(3)如何把握日歷的前幾天的空格,使每月的第一天正好對在它應該的星
期下。
測試結(jié)果:剛開始未能出來正確結(jié)果,有很多錯誤,但是我們根據(jù)c語言程
序中的提示一步步的解決,找到問題出來的地方,再不行的地方大家一起討論,
實在不行的我們就上網(wǎng)查資料,仿照別人的程序和思路進行修改,最終取得成功。
六、運行結(jié)果
程序界面
?C:\Users\lenovo\Desktop\Debug\Lexe^一回x
,歡迎來到萬年歷查詢系統(tǒng),
功能選項:
A:查詢1950-2050年的年歷表.
B:查物基年某月4日歷舂
C:輸入年月日查詢當天在息、.
情輸入你所要查詢的選項(輸入A或者B或者C):
程序功能A:輸出年日歷
~-4^-Jp-I「計用,杏一目N7充“
功能選項:
A(查詢1950-2050年的年歷表.
B.查詢某年某月的日歷君
C:輸入年月日查詢當天棺息.
請卷入,
清輸入,:A
..............2013年公歷表..............
NNTUEUFR
Su
M013
678912
202122232526
24
282930
27
==H==---Bs--
-
suNTuEFRTSAT
THU4
1
程序功能B:輸出月日歷
曰
想繼
詢
查
0不1:Z
入
N)者
逐
詢
疇
或
?/金\
的fB:B
青
豚
^噂s'i7
道
月
的
例\
^年13312
20127:
2013年12月
SUNMONTUEWEDTHUFRISAT
123456?
891011121314
15161718192021
22232425262728
293031
是否想繼續(xù)查詢(Y/N)
程序功能c:輸出詳細信息
是否想繼續(xù)查詢(Y/N):Y
簿輸入你臍襄查詢的選項(輸入A或者B或者C):C
請輸入今去的日期年月白(2013121):2013121
請輸入你薪要查詢的年月日:20i31231
你所查詢的2013年i2月31日的信息如下:
「噩百蒜Fl。芫二
;露曾新年;
SiSiSSS-Ev/NF?--
七、教師評語
程序代碼:
#include<stdio.h>
main()
(
inty,m,d,w,k,s,i,j;
inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};
charp,q;
printf("查詢項目A:查詢1940-2040年的年歷表.\n");
printf(〃查詢項目B:查詢某年某月的日歷表.\n");
printf("查詢項目C:輸入年月日查詢當天信息.\n\n");
do
{printf(“請輸入你所要查詢的項目(輸入A或者B或者C)");
scanf("%c",&p);
if(p==,A,)
/*打印某年的年歷表
printf("請輸入你想知道的年份:");
scanf("%d",&y);
printf('\n");
printf(/,============%d年公歷表============\n\n",y);
w=(y+(y-1)/4-(y-1)/100+(y-l)/400)%7;
if((y%4==0&&y%100!=0)||y%400==0)
a[l]=29;
for(i=0;i<12;i++)
(
d=0;
printf("================%2d月================\n",i+1);
printfCSUNMONTUEWEDTHUFRISAT\n");
for(j=l;j<=6;j++)
for(k=0;k<=6;k++)
{
if((j*10+k)>=(10+w))
(
d=d+l;
if(d>a[i])
(
printf("\n");
break;
)
elseprintf("%5d”,d);
w=k+l;
if(w==7)
(
w=0;
printf('\n");
)
)
elseprintf("");
printf("===================================\n");
)
/*打印某年某月的日歷表
if(p==,B')
printf("請輸入你想知道的年月:“);
scanf("%d%d”,&y,&m);
printf("\n");
printfC=============%d年/d月=============\n\n”,y,m);
if((y%4==0&&y%100!=0)||y%400==0)
a[l]=29;
s=0;
for(i=0;i<m-l;i++)
s=s+a[i];
w=(y-l+(y-1)/4-(y-1)/100+(y-1)/400+s+l)%7;
printfCSUNMONTUEWEDTHUFRISAT\n");
d=0;
for(j=l;j<=6;j++)
for(k=0;k<=6;k++)
(
if((j*10+k)>=(10+w))
{
d=d+l;
if(d>a[i])
{
printf('\n");
break;
)
elseprintf("%5d”,d);
w=k+l;
if(w==7)
{
w=0;
printf("\n");
elseprintf(z/");
}
printf("===================================\n");
)
/*某年某月某日的信息查詢
if(p==C')
(
/*計算這天距今天多少天
intyl,ml,dl,sumy,sumyl,summ,summl,sum,suml;
sumy=0;
sumyl=0;
summ=0;
summl=0;
sum=0;
suml=O;
printf(〃請輸入今天的日期:年月日〃);
scanfC/%d%d%dz,,&yl,&ml,&dl);
printf(〃請輸入你所要查詢的年月日〃);
scanf(〃%d%d%d”,&y,&m,&d);
printf(〃\n〃);
printf("你所查詢的%(1年%(1月%d日的信息如下:\n〃,y,m,d);
printf(z,===============================\n;
for(i=0;i<yl;i++)
(
if((i%4==0&&i%100!=0)||i%400==0)
sumyl=sumy1+366;
elsesumyl=sumy1+365;
)
for(j=0;j++)
summl=summl+a[j];
suml=sumyl+summl+dl;
for(i=0;i<y;i++)
(
if((i%4==0&&i%100!=0)||i%400==0)
sumy=sumy+366;
elsesumy=sumy+365;
)
for(j=0;j<m-l;j++)
summ=summ+a[j];
sum=sumy+summ+d;
s=suml-sum;
if(s>0)printf(z,距離今天已過%-8d天1\n”,s);
if(s<0)printf。|距離今天還有%-8d天1\nz,,-s);
if(s==0)printf(z/1你所查詢的就是今天1\n");
/*計算要查詢的這一天是星期兒
s=0;
for(i=0;i<m-l;i++)
s=s+a[i];
s=s+d;
w=(y-l+(y-1)/4-(y-l)/100+(y-1)/400+s)%7;
switch(w)
{case1:printf(z,星期一\n/z);break;
case2:printfC1星期二|\n〃);break;
case3:printfC星期三I\n〃);break;
case4:printf(z,|星期四|\n〃);break;
case5:printf(z,星期五|\n〃);break;
case6:printf(,z星期六I\n〃);break;
case0:printf(,z|星期天I\n〃);break;
/*查看該日是否有節(jié)日
/
^r**T**v**7**r**r*^v*^r**?**7**T**T**r**7**1**r**T**7**!**7^^v*^7**p*T^*T**7**1^<p<p*p<p/
if(m==2&&d==2)printf(/z|世界濕地日I\n");
if(m==2&&d==13)printf("|明天情人節(jié)了|\n");
if(m==2&&d==14)printf("|今天是情人節(jié)了I\n");
if(m==3&&d==l)printf("z|國際海豹曰I\n");
if(m==3&&d==3)printf(z/1全國愛耳日I'n");
if(m==3&&d==8)printf(z/!3.8婦女節(jié)I\n");
if(m==3&&d==12)printf("|植樹節(jié)I\n");
if(m==3&&d==14)printf("國際警察日I\n");
if(m==3&&d==15)printf(z/|消費者權(quán)益日I\n");
if(m==3&&d==17)printf(,?|國際航海日I\n");
if(m==3&&d==21)printfC|世界森林日I\n");
if(m==3&&d==23)printfC|世界氣象日|\n");
if(m==3&&d==24)printfC|世界防治結(jié)核病日|\n");
if(m==4&&d==l)printf("|愚人節(jié),小心上當I\n");
if(m==4&&d==7)printfC|世界衛(wèi)生日|\n");
if(m==4&&d==8)printf(/z復活節(jié)I'n");
if(m==4&&d==13)printf("|黑色星期五I\n");
if(m==5&&d==l)printf(z/1勞動節(jié)放假|(zhì)\n/z);
if(m==5&&d==4)printf("|青年節(jié)I\n");
if(m==5&&d==8)printf("|世界紅十字日I\n");
if(m==5&&d==12)printf(,z|國際護士節(jié)I\n");
if(m==5&&d==5)printfC|近日注意母親節(jié)|\n");
if(m==5&&d==15)printf(/z|國際家庭日I\n");
if(m==5&&d==31)printf(/?|世界無煙日|\nz/);
if(m==6&&d==l)printf("|國際兒童節(jié)I\n");
if(m==6&&d==5)printf("|世界環(huán)境日I'n");
if(m==6&&d==26)printf("|國際禁毒日I'n");
if(m==6&&d==6)printf("|全國愛眼日|\n");
if(m==6&&d==13)printfC|近期注意父親節(jié)|\n");
if(m==7&&d==l)printf("|香港回歸紀念日|\n/z);
if(m==7&&d==7)printfC(抗日戰(zhàn)爭紀念日|\n");
if(m==7&&d==ll)printf("世界人口日I'n");
if(m==8&&d==l)printf(z/八一建軍節(jié)I'n");
if(m==8&&d==8)printf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年毫州a2貨運從業(yè)資格證考試
- 客戶開發(fā)居間合同
- 商業(yè)地產(chǎn)開發(fā)作業(yè)指導書
- 羅馬柱安裝工程合同
- 國際海上貨物運輸合同概述
- 手房個人裝修合同
- 合伙人股權(quán)協(xié)議8篇
- 2025年陽江貨運從業(yè)資格證考試題庫答案
- 2023年全國乙卷高考真題化學試卷解析版
- 2025年高中化學新教材同步 必修第一冊 第3章 章末檢測試卷(三)
- 川教版四年級《生命.生態(tài).安全》下冊全冊 課件
- 專題06 無機物的轉(zhuǎn)化與應用-五年(2020-2024)高考化學真題分類匯編(原卷版)
- TFT-LCD顯示原理介紹
- 2024年中國心力衰竭診斷和治療指南2024版
- 摩托車過戶委托別人代辦的委托書
- 現(xiàn)代家政導論-課件 4.2.2國外家庭教育
- 金波讀書樂課件
- 2《中國老年糖尿病診療指南(2024年版)》解讀
- 2024年北京中考地理試卷
- 四川蜀道集團筆試題
- 電氣自動化工程師考試題庫
評論
0/150
提交評論