課程設(shè)計說明--萬年歷程序設(shè)計_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《高級語言程序設(shè)計》</p><p><b>  課程設(shè)計說明書</b></p><p>  設(shè)計題目:萬年歷程序設(shè)計</p><p><b>  班 級: </b></p><p>  學(xué) 號: </p><p>  姓 名:

2、 </p><p><b>  完成日期: </b></p><p><b>  一:課程設(shè)計目的</b></p><p>  《高級語言程序設(shè)計》課程設(shè)計是電子信息、光信息專業(yè)以及物理學(xué)專業(yè)集中實踐性環(huán)節(jié)之一,是學(xué)習完《高級語言程序設(shè)計》課程后進行的一次全面的綜合練習,其目的在于加深對程序設(shè)計基本知識的理

3、解,掌握使用C語言進行模塊化軟件設(shè)計的基本方法,提高通過編寫程序解決實際問題的能力,為今后從事設(shè)計工作和后續(xù)各種編程課程的學(xué)習打好基礎(chǔ)。</p><p><b>  二:需求分析</b></p><p><b>  題目:</b></p><p>  要求:輸入年份和月份,自動輸出該月的日歷,清楚的顯示每一天是星期幾,輸入

4、年份,月份和具體日期能確定某天是星期幾。</p><p>  萬年歷是采用數(shù)字電路實現(xiàn)對.時,分,秒.數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們常生活中不可少的必需品,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠遠超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。</p><p>  

5、諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,但是所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究萬年歷及擴大其應(yīng)用,有著非?,F(xiàn)實的意義。它可以對年、月、日、周日、時、分、秒進行計時,對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、日、周日、時、分、秒等信息,還具有時間校準等功能。</p><p>  綜上所述此萬年歷具

6、有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。</p><p><b>  三:概要設(shè)計</b></p><p><b>  1-判斷是否為閏年</b></p><p>  計算所輸入的年份是否可被4整除,若不能被整除,為平年。若可被4整除,計算此年份能否被1

7、00整除,不能被100整除則為閏年。既能被4整除,也能被100整除的年份,若也能被400整除,則為閏年,否則為平年。閏年366天,平年365天</p><p><b>  2-主要設(shè)計思路</b></p><p><b>  四:詳細設(shè)計</b></p><p>  源程序:#include <stdio.h>

8、</p><p>  #include <stdlib.h></p><p>  void DayOfWeek() </p><p><b>  { </b></p><p>  int rtnDay;</p><p>  int y,m,d;</p><p

9、><b>  char ch;</b></p><p><b>  while (1)</b></p><p><b>  {</b></p><p>  printf("請輸入年月日(xxxx,xx,xx): ");</p><p>  scanf(

10、"%d,%d,%d", &y, &m, &d);</p><p>  fflush(stdin);</p><p>  rtnDay = (3*y-(7*(y+(m+9)/12))/4+(23*m)/9+d+17-((y+(m<3?-1:0))/100+1)*3/4) % 7;</p><p>  printf(&q

11、uot;%04d年%02d月%02d日 是 星期%d\n", y, m, d, rtnDay?rtnDay:7);</p><p>  printf("繼續(xù)查詢(y/n)");</p><p>  ch = getchar();</p><p>  if(ch != 'y' && ch != 'Y

12、')</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void GetMonth(int D, int md, int n)</p><p>&

13、lt;b>  {</b></p><p>  int N ,m,d,y,c,Wd;</p><p>  int i,maxday,i1; </p><p>  if(md>=13||md<=0) </p><p>  printf("HAVE WRONG!"); </p><

14、;p><b>  else</b></p><p><b>  {</b></p><p>  for(i1=0;;md++,i1++) </p><p><b>  {</b></p><p>  if(md==0) </p><p><b

15、>  { </b></p><p><b>  md=12; </b></p><p><b>  D-=1; </b></p><p><b>  } </b></p><p><b>  else </b></p>&l

16、t;p>  if(md==13) </p><p><b>  {</b></p><p><b>  md=1; </b></p><p><b>  D+=1; </b></p><p><b>  } </b></p><p

17、><b>  m=md; </b></p><p>  printf("\n============%d,%2d============\n",D,md); </p><p>  if(0<m&&m<=12) </p><p><b>  { </b></p>

18、;<p>  switch(m) </p><p><b>  { </b></p><p>  case 1:maxday=31;break; </p><p>  case 2:if(D%4==0&&D%100!=0||D%400==0) </p><p>  maxday=29; &l

19、t;/p><p><b>  else </b></p><p>  maxday=28; </p><p><b>  break; </b></p><p>  case 3:maxday=31;break; </p><p>  case 4:maxday=30;break

20、; </p><p>  case 5:maxday=31;break; </p><p>  case 6:maxday=30;break; </p><p>  case 7:maxday=31;break; </p><p>  case 8:maxday=31;break; </p><p>  case 9:

21、maxday=30;break; </p><p>  case 10:maxday=31;break; </p><p>  case 11:maxday=30;break; </p><p>  case 12:maxday=31;break; </p><p>  default:printf("HAVE WRONG"

22、;); </p><p><b>  } </b></p><p>  if(0<m&&m<=2) </p><p><b>  { </b></p><p><b>  N=D-1; </b></p><p><b&g

23、t;  m=m+10; </b></p><p><b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p><b>  N=D; </b></p><

24、p><b>  m=m-2; </b></p><p><b>  } </b></p><p><b>  c=N/100; </b></p><p><b>  y=N%100; </b></p><p>  Wd=((1+(13*m-1)/5+

25、y+y/4+c/4-2*c)%7+7)%7; </p><p>  printf(" SUN MOU TUE WED TUR FRI SAT\n"); </p><p>  for(i=0;i<Wd;i++) </p><p>  printf("%4c",' '); </p><p&

26、gt;  for(d=1;d<=maxday;d++) </p><p><b>  { </b></p><p>  printf("%4d",d); </p><p>  Wd=(Wd+1)%7; </p><p>  if(Wd==0) </p><p>  pri

27、ntf("\n"); </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  else </b></p><p>  printf("HAVE WRONG!"); </p&g

28、t;<p>  if(i1==n) </p><p><b>  break; </b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  }</b></p><

29、;p>  void MonthOfYear()</p><p><b>  {</b></p><p><b>  char ch;</b></p><p><b>  int y, m;</b></p><p><b>  while (1)</b>

30、;</p><p><b>  {</b></p><p>  printf("請輸入年月(xxxx,xx): ");</p><p>  scanf("%d,%d", &y, &m);</p><p>  fflush(stdin);</p><

31、;p>  GetMonth(y, m, 0);</p><p>  printf("\n繼續(xù)查詢(y/n)");</p><p>  ch = getchar();</p><p>  if(ch != 'y' && ch != 'Y')</p><p><b&g

32、t;  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void GetYear()</p><p><b>  {</b></p><p><b>  ch

33、ar ch;</b></p><p><b>  int y;</b></p><p><b>  while (1)</b></p><p><b>  {</b></p><p>  printf("請輸入年: ");</p>

34、<p>  scanf("%d", &y);</p><p>  fflush(stdin);</p><p>  GetMonth(y, 1, 11);</p><p>  printf("\n繼續(xù)查詢(y/n)");</p><p>  ch = getchar();</p&

35、gt;<p>  if(ch != 'y' && ch != 'Y')</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

36、;  int main() </p><p><b>  {</b></p><p><b>  char ch;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>

37、;  system("cls");</p><p>  printf("1.查詢星期\n");</p><p>  printf("2.查詢月份\n");</p><p>  printf("3.顯示一年\n");</p><p>  printf("4

38、.退出程序\n");</p><p>  ch = getchar();</p><p>  fflush(stdin);</p><p>  switch(ch)</p><p><b>  {</b></p><p><b>  case '1':</

39、b></p><p>  DayOfWeek();</p><p><b>  break;</b></p><p><b>  case '2':</b></p><p>  MonthOfYear();</p><p><b>  brea

40、k;</b></p><p><b>  case '3':</b></p><p>  GetYear();</p><p><b>  break;</b></p><p><b>  case '4':</b></p>

41、;<p>  printf("是否退出(y/n)");</p><p>  ch = getchar();</p><p>  fflush(stdin);</p><p>  if(ch == 'y' || ch == 'Y')</p><p><b>  exit

42、(0);</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>

43、;  五:運行效果及分析</b></p><p><b>  1 登錄界面</b></p><p>  輸入3,通過輸入年份可顯示一年每個月份的日歷;輸入2,通過輸入年份和月份(中間以空格分開)可顯示該月的日歷;若輸入1,通過輸入年份月份和日期(中間以逗號分開)可顯示該日的星期;輸入4,則退出查詢系統(tǒng)</p><p><b&g

44、t;  2查詢星期</b></p><p>  輸入1后回車,然后輸入具體的年月日可查出該天為星期幾</p><p><b>  3查詢月歷</b></p><p>  輸入2回車,然后輸入年月可顯示該月月歷</p><p><b>  4顯示一年</b></p><

45、p>  輸入3后回車,輸入一個有效年份可顯示該年的十二個月的月歷。</p><p><b>  六:課程設(shè)計心得</b></p><p>  通過本次課程設(shè)計我第一次通過自己的實踐對書本上的知識進行了與生活相關(guān)的運用。在這個程序中,主要應(yīng)用了這學(xué)期所學(xué)習的循環(huán),條件語句,數(shù)組以及調(diào)用函數(shù)。這些知識的應(yīng)用使我對課本內(nèi)容的認識得到了加深。</p>&l

46、t;p>  在編寫程序的過程中,也出現(xiàn)了很多錯誤。比如程序語句錯誤導(dǎo)致檢測時連續(xù)報錯;函數(shù)語句編寫錯誤導(dǎo)致輸出結(jié)果與實際不符等。出現(xiàn)這些情況后,通過對一些新知識的學(xué)習和對網(wǎng)上相關(guān)資料的閱覽,我發(fā)現(xiàn)了自己的程序的問題所在并進行了改正。最后得到了正確的結(jié)果。</p><p>  在程序的編寫完成后,我按照要求對程序進行了拓展。在輸出年歷的基礎(chǔ)上增加了月歷及確定日期的輸出。經(jīng)過這一次的課程設(shè)計我再一次清楚地認識到

47、了編譯的重要性,雖然課程結(jié)業(yè)了,但我們?nèi)匀灰粩嗟膶W(xué)習這一方面的知識,只有這樣我們才能夠成為一個出色的大學(xué)生!</p><p>  參考文獻:《c語言程序設(shè)計教程》第三版 譚浩強</p><p>  《C語言程序設(shè)計》.北京:清華大學(xué)出版社. 李澤中孫紅艷主編.</p><p>  《.C語言程序設(shè)計教程[M]》清華大學(xué)出

溫馨提示

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

評論

0/150

提交評論