版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計</b></p><p> 課程名稱: C語言 </p><p> 設(shè)計課題: 日期工具
2、 </p><p> 專業(yè): 班級: </p><p> 姓名: 學(xué)號:
3、 </p><p> 評分: 指導(dǎo)老師(簽字): </p><p> 20 年 月 日</p
4、><p><b> 目錄:</b></p><p> 要求分析.........................................................................</p><p> 概要設(shè)計......................................................
5、..................</p><p> 詳細設(shè)計.........................................................................</p><p> 調(diào)試分析.........................................................................&l
6、t;/p><p> 用戶使用說明.................................................................</p><p> 6.測試結(jié)果.........................................................................</p><p> 7.源
7、程序.............................................................................</p><p><b> 要求分析:</b></p><p> 日期工具(難度系數(shù):A)</p><p><b> 要求實現(xiàn)以下功能:</b></p&g
8、t;<p><b> 創(chuàng)建日期</b></p><p><b> 日期差計算</b></p><p> 判斷某個日期為星期幾</p><p><b> 按格式輸出日期</b></p><p><b> 系統(tǒng)變量(基本)</b><
9、;/p><p> Struct date{</p><p><b> Int year,</b></p><p> Int month,</p><p><b> Int day,</b></p><p><b> Int hour,</b><
10、;/p><p> Int minute,</p><p> Int second</p><p><b> }</b></p><p> (2) 待實現(xiàn)的方法(基本)</p><p><b> 2.概要設(shè)計:</b></p><p> a.數(shù)據(jù)
11、類型:int,F(xiàn)ILE。</p><p> b.標準函數(shù)名稱和自定義函數(shù)名稱:</p><p><b> scanf函數(shù)</b></p><p><b> printf函數(shù)</b></p><p><b> gettime函數(shù)</b></p><p&
12、gt; int get_weekday(struct dat);</p><p> int datdiff(struct dat);</p><p> int compare(struct dat,struct dat);</p><p> int runnian(int x);</p><p><b> 3.詳細設(shè)計:&
13、lt;/b></p><p><b> 4.調(diào)試分析:</b></p><p><b> a.遇到的問題:</b></p><p> switch語句中漏了break,</p><p> 子函數(shù)中漏了右括號,</p><p> 自定義的結(jié)構(gòu)體struct da
14、te與時間函數(shù)的date同名導(dǎo)致沖突</p><p> 創(chuàng)建文件時指針fp寫錯</p><p><b> b.解決方案:</b></p><p> 對應(yīng)地方加上break和括號</p><p> 把自定義的結(jié)構(gòu)體名稱改為struct dat</p><p> 統(tǒng)一并修改文件指針fp<
15、;/p><p><b> c.經(jīng)驗與體會:</b></p><p> 要熟練地掌握c語言開發(fā)環(huán)境,明確函數(shù)與函數(shù)間的調(diào)用</p><p> 寫代碼時盡量認真避免出現(xiàn)小錯誤</p><p> 學(xué)習(xí)獨立完成程序的編寫過程,在修改和整理中了解c語言中常常出現(xiàn)的錯誤,并找到其改正方法</p><p>
16、 只有多寫代碼才可以讓自己真正學(xué)好c語言</p><p><b> 5.用戶使用說明:</b></p><p> a..編譯完了之后,首先屏幕上會顯示當(dāng)前時間,并提示用戶請輸入一個日期包括年月日時分秒</p><p> b.輸入六個數(shù)據(jù)后它會以規(guī)定格式輸出剛才所輸入的日期,并顯示剛才輸入日期為星期幾,同時提示用戶輸入兩個日期,即十二個數(shù)
17、據(jù)。</p><p> c.屏幕上會顯示這兩個日期的差,同時提示用戶再一次輸入兩個日期,即十二個數(shù)據(jù)。</p><p> d.運行后屏幕上會顯示兩個日期的比較結(jié)果</p><p> e.之后,文件進行保存,可以顯示剛才的操作。</p><p><b> 6.測試結(jié)果:</b></p><p&g
18、t;<b> 7.源程序:</b></p><p> #include<stdio.h></p><p> #include<time.h></p><p> #include<dos.h></p><p> #include<math.h></p>
19、<p> struct dat</p><p><b> {</b></p><p><b> int year;</b></p><p> int month;</p><p><b> int day;</b></p><p>
20、<b> int hour;</b></p><p> int minute;</p><p> int second;</p><p><b> };</b></p><p> int get_weekday(struct dat);</p><p> int
21、datdiff(struct dat);</p><p> int compare(struct dat,struct dat);</p><p> int runnian(int x);</p><p> void main()</p><p><b> {</b></p><p>&l
22、t;b> int y;</b></p><p> int p,q,o,m,n,l;</p><p><b> int z;</b></p><p> struct dat a;</p><p> struct dat dat1;</p><p> struct dat
23、 dat2;</p><p> struct dat dat3;</p><p> struct dat dat4;</p><p> struct time dt,dt2;</p><p><b> FILE *fp;</b></p><p> if((fp=fopen("y
24、ulewen.txt","a+"))==NULL)</p><p> {printf("cannot open file sum!!! strike any key exit");</p><p><b> getch();</b></p><p><b> exit(1);}&
25、lt;/b></p><p> gettime(&dt);</p><p> printf("current time is %d %d %d\n",dt.ti_hour,dt.ti_min,dt.ti_sec);</p><p> printf("please input six numbers!\n")
26、; scanf("%d%d%d%d%d%d",&a.year,&a.month,&a.day,&a.hour,&a.minute,&a.second); printf("the date you input is\n");</p><p> fprintf(fp,"the date you input is\n&
27、quot;);</p><p> printf("%dnian,%dyue,%dri,%ddian,%dfen,%dmiao\n",a.year,a.month,a.day,a.hour,a.minute,a.second);</p><p> fprintf(fp,"%d,%d,%d,%d,%d,%d\n",a.year,a.month,a.d
28、ay,a.hour,a.minute,a.second);</p><p> y=get_weekday(a);</p><p> printf("the date is xingqi %d\n",y);</p><p> printf("please input twelve numbers!to caculate their
29、distance!\n");</p><p> scanf("%d%d%d%d%d%d,%d%d%d%d%d%d",&dat1.year,&dat1.month,&dat1.day,&dat1.hour,&dat1.minute,&dat1.second,&dat2.year,&dat2.month,&dat
30、2.day,&dat2.hour,&dat2.minute,&dat2.second);</p><p> fprintf(fp,"please input twelve numbers!to caculate their distance!\n");</p><p> fprintf(fp,"%d,%d,%d,%d,%d,%d
31、\n%d,%d,%d,%d,%d,%d\n",dat1.year,dat1.month,dat1.day,dat1.hour,dat1.minute,dat1.second,dat2.year,dat2.month,dat2.day,dat2.hour,dat2.minute,dat2.second);</p><p> p=datdiff(dat1);</p><p>
32、 q=datdiff(dat2);</p><p> o=fabs(p-q);</p><p> m=fabs(dat1.hour-dat2.hour);</p><p> n=fabs(dat1.minute-dat2.minute);</p><p> l=fabs(dat1.second-dat2.second);</p&
33、gt;<p> printf("the distance is %d tian,%dxiaoshi,%dfenzhong,%dmiao\n",o,m,n,l);</p><p> printf("please input twelve numbers again!in order to compare which is big!\n");</p>
34、;<p> scanf("%d%d%d%d%d%d,%d%d%d%d%d%d",&dat3.year,&dat3.month,&dat3.day,&dat3.hour,&dat3.minute,&dat3.second,&dat4.year,&dat4.month,&dat4.day,&dat4.hour,&da
35、t4.minute,&dat4.second);</p><p> fprintf(fp,"please input twelve numbers again!in order to compare which is big!\n");</p><p> fprintf(fp,"%d,%d,%d,%d,%d,%d\n%d,%d,%d,%d,%d,
36、%d\n",dat3.year,dat3.month,dat3.day,dat3.hour,dat3.minute,dat3.second,dat4.year,dat4.month,dat4.day,dat4.hour,dat4.minute,dat4.second);</p><p> z=compare(dat3,dat4);</p><p><b> if
37、(z>0)</b></p><p> printf("qian zhe da yu hou zhe!\n");</p><p> else if(z<0)</p><p> printf("qian zhe xiao yu hou zhe!\n");</p><p><
38、;b> else</b></p><p> printf("liang zhe xiang tong!");</p><p> fclose(fp);</p><p><b> }</b></p><p> int get_weekday(struct dat a)<
39、/p><p><b> {</b></p><p> int A,B,D,E,F,G,i;</p><p> int C=0,s=0;</p><p> if(a.year==2000)</p><p><b> {</b></p><p>
40、switch(a.month)</p><p><b> {</b></p><p> case 1:s=s+a.day-1;break;</p><p> case 2:s=s+30+a.day;break;</p><p> case 3:s=s+30+29+a.day;break;</p>&
41、lt;p> case 4:s=s+30+29+31+a.day;break;</p><p> case 5:s=s+30+29+31+30+a.day;break;</p><p> case 6:s=s+30+29+31+30+31+a.day;break;</p><p> case 7:s=s+30+29+31+30+31+30+a.day;b
42、reak;</p><p> case 8:s=s+30+29+31+30+31+30+31+a.day;break;</p><p> case 9:s=s+30+29+31+30+31+30+31+31+a.day;break;</p><p> case 10:s=s+30+29+31+30+31+30+31+31+30+a.day;break;<
43、/p><p> case 11:s=s+30+29+31+30+31+30+31+31+30+31+a.day;break;</p><p> case 12:s=s+30+29+31+30+31+30+31+31+30+31+30+a.day;break;</p><p><b> }</b></p><p><
44、;b> A=s%7;</b></p><p><b> switch(A)</b></p><p><b> {</b></p><p> case 0:B=6;break;</p><p> case 1:B=7;break;</p><p>
45、 case 2:B=1;break;</p><p> case 3:B=2;break;</p><p> case 4:B=3;break;</p><p> case 5:B=4;break;</p><p> case 6:B=5;break;</p><p><b> }</b>
46、;</p><p><b> return B;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> for(i=2000;i&
47、lt;a.year;i++)</p><p><b> {</b></p><p> if(runnian(i)==1)</p><p><b> C=C+366;</b></p><p><b> else</b></p><p><b&
48、gt; C=C+365;</b></p><p><b> }</b></p><p><b> D=C%7;</b></p><p><b> switch(D)</b></p><p><b> {</b></p>
49、<p> case 0:E=6;break;</p><p> case 1:E=7;break;</p><p> case 2:E=1;break;</p><p> case 3:E=2;break;</p><p> case 4:E=3;break;</p><p> case 5:E=
50、4;break;</p><p> case 6:E=5;break;</p><p><b> }</b></p><p> if(runnian(a.year)==1)</p><p><b> {</b></p><p> switch(a.month)<
51、;/p><p><b> {</b></p><p> case 1:F=a.day-1;break;</p><p> case 2:F=30+a.day;break;</p><p> case 3:F=30+29+a.day;break;</p><p> case 4:F=30+29
52、+31+a.day;break;</p><p> case 5:F=30+29+31+30+a.day;break;</p><p> case 6:F=30+29+31+30+31+a.day;break;</p><p> case 7:F=30+29+31+30+31+30+a.day;break;</p><p> case
53、 8:F=30+29+31+30+31+30+31+a.day;break;</p><p> case 9:F=30+29+31+30+31+30+31+31+a.day;break;</p><p> case 10:F=30+29+31+30+31+30+31+31+30+a.day;break;</p><p> case 11:F=30+29+31+
54、30+31+30+31+31+30+31+a.day;break;</p><p> case 12:F=30+29+31+30+31+30+31+31+30+31+30+a.day;break;</p><p><b> }</b></p><p><b> G=F%7;</b></p><p&
55、gt;<b> switch(G)</b></p><p><b> {</b></p><p> case 0:return E;</p><p> case 1:if(E+G==7)</p><p><b> return 7;</b></p>&l
56、t;p><b> else</b></p><p> return ((E+G)%7);</p><p> case 2:if(E+G==7)</p><p><b> return 7;</b></p><p><b> else</b></p>
57、<p> return ((E+G)%7);</p><p> case 3:if(E+G==7)</p><p><b> return 7;</b></p><p><b> else</b></p><p> return ((E+G)%7);</p>&l
58、t;p> case 4:if(E+G==7)</p><p><b> return 7;</b></p><p><b> else</b></p><p> return ((E+G)%7);</p><p> case 5:if(E+G==7)</p><p
59、><b> return 7;</b></p><p><b> else</b></p><p> return ((E+G)%7);</p><p> case 6:if(E+G==7)</p><p><b> return 7;</b></p>
60、;<p><b> else</b></p><p> return ((E+G)%7);</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p>
61、<p><b> {</b></p><p> switch(a.month)</p><p><b> {</b></p><p> case 1:F=a.day-1;break;</p><p> case 2:F=30+a.day;break;</p>&l
62、t;p> case 3:F=30+28+a.day;break;</p><p> case 4:F=30+28+31+a.day;break;</p><p> case 5:F=30+28+31+30+a.day;break;</p><p> case 6:F=30+28+31+30+31+a.day;break;</p><
63、p> case 7:F=30+28+31+30+31+30+a.day;break;</p><p> case 8:F=30+28+31+30+31+30+31+a.day;break;</p><p> case 9:F=30+28+31+30+31+30+31+31+a.day;break;</p><p> case 10:F=30+28+31
64、+30+31+30+31+31+30+a.day;break;</p><p> case 11:F=30+28+31+30+31+30+31+31+30+31+a.day;break;</p><p> case 12:F=30+28+31+30+31+30+31+31+30+31+30+a.day;break;</p><p><b> }<
65、;/b></p><p><b> G=F%7;</b></p><p><b> switch(G)</b></p><p><b> {</b></p><p> case 0:return E;</p><p> case 1:if
66、(E+G==7)</p><p><b> return 7;</b></p><p><b> else</b></p><p> return ((E+G)%7);</p><p> case 2:if(E+G==7)</p><p><b> ret
67、urn 7;</b></p><p><b> else</b></p><p> return ((E+G)%7);</p><p> case 3:if(E+G==7)</p><p><b> return 7;</b></p><p><b&
68、gt; else</b></p><p> return ((E+G)%7);</p><p> case 4:if(E+G==7)</p><p><b> return 7;</b></p><p><b> else</b></p><p> r
69、eturn ((E+G)%7);</p><p> case 5:if(E+G==7)</p><p><b> return 7;</b></p><p><b> else</b></p><p> return ((E+G)%7);</p><p> case
70、 6:if(E+G==7)</p><p><b> return 7;</b></p><p><b> else</b></p><p> return ((E+G)%7);</p><p><b> }</b></p><p><b&
71、gt; }</b></p><p><b> }</b></p><p><b> }</b></p><p> int datdiff(struct dat a)</p><p><b> {</b></p><p><b&
72、gt; int i;</b></p><p><b> int c=0;</b></p><p> for(i=0;i<a.year;i++)</p><p><b> {</b></p><p> if(runnian(i)==1)</p><p&g
73、t;<b> c=c+366;</b></p><p><b> else</b></p><p><b> c=c+365;</b></p><p><b> }</b></p><p> if(runnian(a.year)==1)</
74、p><p><b> {</b></p><p> switch(a.month)</p><p><b> {</b></p><p> case 1:c=c+a.day;break;</p><p> case 2:c=c+31+a.day;break;</p
75、><p> case 3:c=c+31+29+a.day;break;</p><p> case 4:c=c+31+29+31+a.day;break;</p><p> case 5:c=c+31+29+31+30+a.day;break;</p><p> case 6:c=c+31+29+31+30+31+a.day;break;
76、</p><p> case 7:c=c+31+29+31+30+31+30+a.day;break;</p><p> case 8:c=c+31+29+31+30+31+30+31+a.day;break;</p><p> case 9:c=c+31+29+31+30+31+30+31+31+a.day;break;</p><p&g
77、t; case 10:c=c+31+29+31+30+31+30+31+31+30+a.day;break;</p><p> case 11:c=c+31+29+31+30+31+30+31+31+30+31+a.day;break;</p><p> case 12:c=c+31+29+31+30+31+30+31+31+30+31+30+a.day;break;</p&g
78、t;<p><b> }</b></p><p><b> return c;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>&l
79、t;/p><p> switch(a.month)</p><p><b> {</b></p><p> case 1:c=c+a.day;break;</p><p> case 2:c=c+31+a.day;break;</p><p> case 3:c=c+31+28+a.day;
80、break;</p><p> case 4:c=c+31+28+31+a.day;break;</p><p> case 5:c=c+31+28+31+30+a.day;break;</p><p> case 6:c=c+31+28+31+30+31+a.day;break;</p><p> case 7:c=c+31+28+
81、31+30+31+30+a.day;break;</p><p> case 8:c=c+31+28+31+30+31+30+31+a.day;break;</p><p> case 9:c=c+31+28+31+30+31+30+31+31+a.day;break;</p><p> case 10:c=c+31+28+31+30+31+30+31+31+
82、30+a.day;break;</p><p> case 11:c=c+31+28+31+30+31+30+31+31+30+31+a.day;break;</p><p> case 12:c=c+31+28+31+30+31+30+31+31+30+31+30+a.day;break;</p><p><b> }</b></
83、p><p><b> return c;</b></p><p><b> }</b></p><p><b> }</b></p><p> int compare(struct dat dat3,struct dat dat4)</p><p>
84、<b> {</b></p><p> if(dat3.year>dat4.year)</p><p><b> return 1;</b></p><p> else if(dat3.year<dat4.year)</p><p> return -1;</p>
85、<p> else if(dat3.month>dat4.month)</p><p><b> return 1;</b></p><p> else if(dat3.month<dat4.month)</p><p> return -1;</p><p> else if(dat3
86、.day>dat4.day)</p><p><b> return 1;</b></p><p> else if(dat3.day<dat4.day)</p><p> return -1;</p><p> else if(dat3.hour>dat4.hour)</p>&
87、lt;p><b> return 1;</b></p><p> else if(dat3.hour<dat4.hour)</p><p> return -1;</p><p> else if(dat3.minute>dat4.minute)</p><p><b> retur
88、n 1;</b></p><p> else if(dat3.minute<dat4.minute)</p><p> return -1;</p><p> else if(dat3.second>dat4.second)</p><p><b> return 1;</b></p
89、><p> else if(dat3.second<dat4.second)</p><p> return -1;</p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</
90、b></p><p> int runnian(int x)</p><p><b> {</b></p><p> if((x%4==0&&x%100!=0)||(x%100==0&&x%400==0))</p><p><b> return 1;</b&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計——日期類設(shè)計報告
- 【課程設(shè)計】c語言課程設(shè)計
- c語言課程設(shè)計
- c語言課程設(shè)計
- c語言課程設(shè)計
- c語言課程設(shè)計--c語言投票程序
- c語言課程設(shè)計課程報
- c語言課程設(shè)計題目
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計--迷宮
- c語言課程設(shè)計 (2)
- c語言課程設(shè)計范例
- c語言課程設(shè)計報告
- c語言程序課程設(shè)計
- c語言課程設(shè)計報告
- c語言課程設(shè)計---c語言小車動畫程序
- c語言語言課程設(shè)計報告
- 匯編語言課程設(shè)計顯示系統(tǒng)當(dāng)前時間與日期
- c語言課程設(shè)計--圖像處理
評論
0/150
提交評論