萬年歷c語言課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p>  第一章 課程設(shè)計(jì)的目的和要求1</p><p>  第二章 課程設(shè)計(jì)內(nèi)容及要求2</p><p>  第三章 設(shè)計(jì)說明3</p><p>  第四章 課程設(shè)計(jì)心得體會(huì)5</p><p>  附錄1:參考文獻(xiàn)6</p

2、><p>  附錄2:程序代碼7</p><p>  第一章 課程設(shè)計(jì)的目的和要求</p><p>  C語言課程設(shè)計(jì)的主要目的是培養(yǎng)學(xué)生綜合運(yùn)用C語言程序設(shè)計(jì)課程所學(xué)到的知識(shí),編寫C程序解決實(shí)際問題的能力,以及嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度和良好的程序設(shè)計(jì)習(xí)慣。</p><p>  通過課程設(shè)計(jì)的訓(xùn)練,學(xué)生應(yīng)該能夠了解程序設(shè)計(jì)的基本開發(fā)過程,掌握編寫、調(diào)

3、試和測試C語言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計(jì)的基本方法。</p><p>  C語言程序設(shè)計(jì)的主要任務(wù)是要求學(xué)生遵循軟件開發(fā)過程的基本規(guī)范,運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的方法,按照課程設(shè)計(jì)的題目要求,分析、設(shè)計(jì)、編寫、調(diào)試和測試C語言程序及編寫設(shè)計(jì)報(bào)告。</p><p><b>  本課程設(shè)計(jì)的目標(biāo)</b></p><p>  1鞏固和加深學(xué)生對(duì)

4、c++語言課程的基本知識(shí)的理解和掌握</p><p>  2 掌握c++語言編程的和程序調(diào)試的基本技能</p><p>  3 掌握利用c++語言進(jìn)行程序軟件設(shè)計(jì)的方法</p><p>  4 提高書寫程序設(shè)計(jì)說明文檔的能力</p><p>  5 提高運(yùn)用c語言解決實(shí)際問題得能力</p><p><b> 

5、 基本要求</b></p><p>  1 分析課程設(shè)計(jì)題目得要求</p><p>  2 對(duì)系統(tǒng)功能模塊進(jìn)行分析,寫出詳細(xì)設(shè)計(jì)說明文檔</p><p>  3 編寫程序代碼,調(diào)試程序使能正確運(yùn)行</p><p>  4 設(shè)計(jì)完成的軟件要便于操作和使用 </p><p>  5 設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告&

6、lt;/p><p>  第二章 課程設(shè)計(jì)內(nèi)容及要求</p><p><b>  設(shè)計(jì)背景:</b></p><p>  隨著高科技時(shí)代的到來,人們?cè)絹碓较硎苤娮有畔⒓夹g(shù)給人生活帶來的便捷與高效。人們也漸漸不能滿足于傳統(tǒng)的掛式日歷。傳統(tǒng)掛式日歷得使用方式較為繁瑣,而且每天都要去手動(dòng)翻頁。因此電子萬年歷漸漸地興起了。</p><p

7、><b>  設(shè)計(jì)要求:</b></p><p>  模仿現(xiàn)實(shí)生活中的掛歷,以當(dāng)前頁系統(tǒng)當(dāng)前日期的月份為準(zhǔn)顯示當(dāng)前月的每一天(顯示出日及對(duì)應(yīng)的星期幾)。前系統(tǒng)日期變到下一月時(shí),系統(tǒng)自動(dòng)翻頁到下一個(gè)月。</p><p><b>  第三章 設(shè)計(jì)說明</b></p><p><b>  系統(tǒng)模塊圖</b&

8、gt;</p><p><b>  流程圖:</b></p><p><b>  運(yùn)行某次截圖如下:</b></p><p>  圖3.3某次程序運(yùn)行圖</p><p>  第四章 課程設(shè)計(jì)心得體會(huì)</p><p>  進(jìn)過三周的課程設(shè)計(jì),我獨(dú)立完成了一個(gè)較大的C語言程序的設(shè)

9、計(jì),以及認(rèn)真完成了課程設(shè)計(jì)的設(shè)計(jì)報(bào)告。</p><p>  回憶著三周的時(shí)間,我的收獲很大。首先,通過這次課程設(shè)計(jì),我熟練的掌握并運(yùn)用了所學(xué)的知識(shí)進(jìn)行了編程,而且取得了成功,這大大激發(fā)了我對(duì)編程的興趣;其次,在涉及的過程中所遇到的困難,我都認(rèn)真的去思考,和同學(xué)以及老師交流,或者利用網(wǎng)上資源來獲取幫助,了解解決辦法。通過各種渠道,完善所學(xué)到的東西。最后,我了解到了軟件開發(fā)的答題過程和各個(gè)必要的步驟,這對(duì)我將來的學(xué)習(xí)

10、和應(yīng)用都是很有幫助的。</p><p>  對(duì)于計(jì)算機(jī)專業(yè)的大學(xué)生來說,積累實(shí)戰(zhàn)經(jīng)驗(yàn)是一項(xiàng)極其重要的內(nèi)容,很可能成為將來就業(yè)的敲門磚。而程序設(shè)計(jì)綜合課程設(shè)計(jì)就是積累實(shí)戰(zhàn)經(jīng)驗(yàn)的一個(gè)過程,雖然程序的規(guī)模不是很大,但是能夠讓我們盡早的認(rèn)識(shí)軟件開發(fā)的重要性和必要性,為將來的就業(yè)打下堅(jiān)實(shí)的基礎(chǔ)。</p><p><b>  附錄1:參考文獻(xiàn)</b></p><

11、;p>  譚浩強(qiáng):C程序設(shè)計(jì),清華大學(xué)出版社,2005年7月第三版</p><p>  譚浩強(qiáng):C++程序設(shè)計(jì),清華大學(xué)出版社,2004年6月第一版</p><p><b>  附錄2:程序代碼</b></p><p>  #include<iostream></p><p>  #include<

12、;malloc.h></p><p>  #include<string.h></p><p>  #include<stdlib.h></p><p>  typedef struct</p><p><b>  {</b></p><p>  unsigned c

13、har day;</p><p>  unsigned char month;</p><p>  unsigned short year;</p><p><b>  }</b></p><p>  T_MFW_DATE;</p><p>  typedef struct</p>

14、<p><b>  {</b></p><p>  T_MFW_DATE date; /*記錄的日期*/</p><p><b>  }</b></p><p>  t_cldrecord;</p><p>  typedef struct</p><p><

15、;b>  {</b></p><p>  T_MFW_DATE today_date; </p><p>  T_MFW_DATE cursor_date;</p><p>  int days_map[6][7]; /*日期地圖*/</p><p><b>  }</b></p>

16、<p>  t_cldmain_data;</p><p>  t_cldmain_data *cldmain_data;</p><p>  void cldmain_get_days_map(void);</p><p>  void main(void)</p><p><b>  {</b></p

17、><p><b>  int i,j;</b></p><p>  cldmain_data = (t_cldmain_data*)malloc(sizeof(t_cldmain_data));</p><p>  cldmain_data->cursor_date.day = 20;</p><p><b>

18、;  while(1)</b></p><p><b>  {</b></p><p>  char buf[20];</p><p><b>  char *p;</b></p><p>  memset(buf,0,20);</p><p>  printf(

19、"year month:");</p><p>  gets(buf);</p><p>  if(buf[0] == 'q')break;</p><p>  cldmain_data->cursor_date.year = strtod(buf,&p);</p><p><b>

20、  p ++;</b></p><p>  cldmain_data->cursor_date.month = strtod(p,&p);</p><p>  printf("yea%d\nmonth%d\n",(cldmain_data->cursor_date.year),(cldmain_data->cursor_date.m

21、onth));</p><p>  cldmain_get_days_map();</p><p>  printf(" mo tu w th fr sa su\n");</p><p>  for(j = 0; j < 6; j ++)</p><p><b>  {</b></p>

22、;<p>  printf("\t");</p><p>  for(i = 0; i < 7; i ++)</p><p><b>  {</b></p><p>  printf("%i\t",cldmain_data->days_map[j][i]);</p>

23、<p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  getchar();</p><p>&l

24、t;b>  }</b></p><p>  /*檢查日期是否合法合法返回1,否則返回0*/</p><p>  int check_date(T_MFW_DATE date)</p><p><b>  {</b></p><p>  char month_days[] = {31,29,31,30,3

25、1,30,31,31,30,31,30,31};</p><p>  /*大于2000年,小于2100年,月份合法*/</p><p>  if(date.year < 2000 || date.year >= 2100 || date.month < 1 || date.month > 12)</p><p><b>  {<

26、;/b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  /*day合法*/</b></p><p>  if(date.day < 1)return 0;</p><p

27、>  if(date.day > month_days[date.month - 1])return 0;</p><p>  if(date.month == 2)</p><p><b>  {</b></p><p>  if(date.year % 4 != 0)</p><p><b> 

28、 {</b></p><p>  if(date.day == 29)return 0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return 1;</b></p><p>

29、<b>  }</b></p><p>  /*功能:得到每個(gè)月第一天是星期幾星期 一 二 三 四 五 六 日</p><p>  返回值:1 2 3 4 5 6 7如果返回為0,則出錯(cuò)*/</p><p>  int get_weekday_of_month(T_MFW_DATE cursor_date)</p>&

30、lt;p><b>  {</b></p><p><b>  int day;</b></p><p>  /*參照1997年1月1日,參數(shù)cursor_date從2000年1月1日到2099年1月1日*/</p><p>  char month_days[] = { 31, 28, 31, 30, 31, 3

31、0, 31, 31, 30, 31, 30, 31};</p><p>  int this_year_days[] ={ 0, 31, 59, 90, 120, 151,181, 212, 243, 273, 304, 334};</p><p>  int cursor_year_days = this_year_days[cursor_date.month - 1] +

32、(cursor_date.day = 1);</p><p>  int comp_days = (cursor_date.year - 1997)*365 + cursor_year_days;</p><p>  int i = (cursor_date.year - 1997)/4;</p><p>  comp_days = comp_days + i *

33、1;</p><p>  if(cursor_date.month > 2)</p><p><b>  {</b></p><p>  if( cursor_date.year % 4 == 0 )</p><p><b>  {</b></p><p>  comp

34、_days += 1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(cursor_date.day > 2098)return 0;</p><p>  day = comp_days % 7;</p><p&g

35、t;  /*1997年1月1日是星期三*/</p><p>  day = (day + 2) % 7;</p><p>  if(day == 0)day = 7;</p><p>  return day;</p><p><b>  }</b></p><p>  /*根據(jù)參數(shù)的值,得到該年

36、該月有多少天.返回值:該月的天數(shù)*/</p><p>  int count_days_of_month(T_MFW_DATE cursor_date)</p><p><b>  {</b></p><p>  char month_days[] = {31,28,31,30,31,30,31,31,30,31,30,31};</p&g

37、t;<p>  unsigned char day = cldmain_data->cursor_date.day;</p><p>  unsigned char month = cldmain_data->cursor_date.month;</p><p>  unsigned short year = cldmain_data->cursor_dat

38、e.year;</p><p>  if(month != 2)</p><p><b>  {</b></p><p>  return month_days[month -1];</p><p><b>  }</b></p><p><b>  else<

39、;/b></p><p><b>  {</b></p><p>  if(year%4 != 0)</p><p><b>  {</b></p><p>  return 28;</p><p><b>  }</b></p>&

40、lt;p>  if(year%4 == 0)</p><p><b>  {</b></p><p>  if(year%100 == 0)</p><p><b>  {</b></p><p>  if(year %400 == 0)</p><p><b&g

41、t;  {</b></p><p>  return 29;</p><p><b>  }</b></p><p>  return 28;</p><p><b>  }</b></p><p>  return 29;</p><p>

42、;<b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*得到日期地圖,保存到全局結(jié)構(gòu)變量cldmain_data的成員數(shù)組變量days_map中.*/</p><p>  void cldmain_get

43、_days_map(void)</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  int day;</b></p><p>  T_MFW_DATE cursor_date = cldmain_data->

44、;cursor_date;</p><p>  int *map_p = cldmain_data->days_map[0];</p><p>  int days_count;</p><p>  int weekday;</p><p>  for(i = 0; i < 6*7; i++)</p><p&g

45、t;<b>  {</b></p><p>  map_p[i] = 0;</p><p><b>  }</b></p><p>  if(check_date(cldmain_data->cursor_date) == 0)return;</p><p>  days_count = co

46、unt_days_of_month(cldmain_data->cursor_date);</p><p>  weekday = get_weekday_of_month(cldmain_data->cursor_date);</p><p><b>  day = 1;</b></p><p>  for(i = weekday

47、-1; i < days_count + weekday - 1; i++)</p><p><b>  {</b></p><p>  map_p[i] = day;</p><p><b>  day ++;</b></p><p><b>  }</b></p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論