c語言背單詞課程設計報告_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  計算機高級語言編程訓練</p><p><b>  設計報告</b></p><p> ?。?013-2014學年第一學期)</p><p><b>  題目:背單詞</b></p><p>  班級:電子1122班</p><p>  設計人員:

2、 </p><p><b>  學號: </b></p><p><b>  聯(lián)系電話: </b></p><p><b>  指導教師: </b></p><p>  日期:2013-12-24</p><p><b>  評閱

3、意見:</b></p><p>  成績: 日期: 評閱教師:</p><p>  題目描述該系統(tǒng)是幫助單詞背誦單詞的軟件,要求用戶可以選擇背誦的詞庫,并可以編輯自己的詞庫,系統(tǒng)可以給出中文,讓單詞輸入其英文意思,也可輸出英文讓單詞輸入中文意思。并判定詞義是否正確。如不正確給出提示并要求用戶重新輸入。如正確給以鼓勵。還應有詞語預覽功能?;?/p>

4、本功能:詞庫的維護課程預覽顯示中文用戶輸入英文的背誦方法顯示英文用戶輸入中文的背誦方法背誦成績的記錄。</p><p><b>  課程設計目的:</b></p><p>  是綜合訓練單詞用C語言編程解決問題和處理問題的能力,鞏固其對C語言課程內容和知識的掌握。</p><p>  對課程設計的基本要求: </p&g

5、t;<p>  1、盡量多的應用C語言中所學到的知識和語句</p><p>  2、課程設計前應書寫開題報告主要內容包括(對題目的分析和對該課程設計的概要設計)</p><p>  3、課程設計后應交《課程設計報告》,和軟件原代碼及編譯后的應用軟件</p><p>  4、課程設計最后一次上機實驗時檢查題目的完成情況</p><p&

6、gt;  5、課程設計中必須用到的內容為</p><p><b>  a) 文件的存取</b></p><p><b>  b) 結構體的使用</b></p><p><b>  c) 數(shù)組的使用</b></p><p><b>  d) 指針操作</b>

7、</p><p><b>  一、開題報告</b></p><p>  1:變量和結構體說明 </p><p>  單詞信息的結構體如下:</p><p>  typedef struct word</p><p><b>  //單詞的結構體</b></p>

8、<p><b>  {</b></p><p>  char en[MAX_CHAR]; // 英文形式</p><p>  char no[MAX_CHAR]; //中文形式</p><p><b>  }word;</b></p><p>  2)存放單詞的信息的變量如下:&l

9、t;/p><p>  word s[MAX_NUM]; //單詞數(shù)組</p><p>  int num; //單詞個數(shù)</p><p><b>  2: 概要設計</b></p><p>  定義結構體數(shù)組用來存放單詞的信息</p><p>  單詞信息存放在data.tx

10、t中,文件格式如下:</p><p>  單詞個數(shù)—長度為4個字節(jié)</p><p>  第1個單詞的信息-----長度為sizeof(word)</p><p>  第2個單詞的信息-----長度為sizeof(word)</p><p><b>  。。。。。。</b></p><p>  第n

11、個單詞的信息-----長度為sizeof(word)</p><p>  讀文件data.txt的過程如下:</p><p>  先讀取單詞個數(shù),然后逐個讀取單詞的信息,采用fread函數(shù)</p><p>  寫文件data.txt的過程如下:</p><p>  先寫入單詞個數(shù),然后逐個寫入單詞的信息,采用fwrite函數(shù)</p>

12、;<p>  5)刪除單詞和修改單詞信息的時候,都需要先輸入英文,從該英文找到單詞的位置</p><p>  6)程序采用菜單的形式顯示,用戶可以輸入選擇進行操作</p><p><b>  3:樹型結構模塊圖</b></p><p><b>  功能模塊圖如下:</b></p><p&g

13、t;<b>  4課程流程圖</b></p><p><b>  5: 操作說明</b></p><p>  本程序需要目錄下存在“data.txt”文件</p><p><b>  系統(tǒng)的菜單如下:</b></p><p>  添加單詞信息的功能操作方法如下:</p&g

14、t;<p>  刪除單詞信息的功能操作方法如下:</p><p>  修改單詞信息的功能操作方法如下:</p><p>  顯示單詞背誦(中至英)功能操作方法如下:</p><p>  顯示單詞背誦(英至中)功能操作方法如下:</p><p>  6: 課程詳細代碼:</p><p>  #includ

15、e <stdio.h></p><p>  #include <string.h></p><p>  #include <stdlib.h></p><p>  #define MAX_CHAR 20 // 最大字符</p><p>  #define MAX_NUM 100 // 單詞的最大個數(shù)

16、</p><p>  typedef struct word</p><p><b>  //單詞的結構體</b></p><p><b>  {</b></p><p>  char en[MAX_CHAR]; // 英文形式</p><p>  char no[MAX

17、_CHAR]; //中文形式</p><p><b>  }word;</b></p><p>  word s[MAX_NUM]; //單詞數(shù)組</p><p>  int num; //單詞個數(shù)</p><p>  void read_from_file()</p>&l

18、t;p>  //從文件中讀取單詞的信息</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p><b>  int i=0;</b></p><p>  fp=fopen("data.txt",&

19、quot;rb");</p><p><b>  if(!fp)</b></p><p><b>  {</b></p><p>  printf("打開文件data.txt失敗!\n");</p><p><b>  return ;</b>&l

20、t;/p><p><b>  }</b></p><p>  fread(&num,1,sizeof(num),fp); //先讀取單詞的個數(shù)</p><p>  for(i=0;i<num;i++)</p><p>  fread(&s[i],1,sizeof(word),fp); //讀取每個單詞的

21、信息存放到結構體 </p><p>  fclose(fp);//關閉文件</p><p><b>  }</b></p><p>  void write_to_file()</p><p>  //從文件中讀取單詞的信息</p><p><b>  {</b>

22、;</p><p><b>  FILE *fp;</b></p><p><b>  int i=0;</b></p><p>  fp=fopen("data.txt","wb+");</p><p><b>  if(!fp)</b>

23、;</p><p><b>  {</b></p><p>  printf("打開文件data.txt失敗!\n");</p><p><b>  return ;</b></p><p><b>  }</b></p><p> 

24、 fwrite(&num,1,sizeof(num),fp); //先寫入單詞的個數(shù)</p><p>  for(i=0;i<num;i++)</p><p>  fwrite(&s[i],1,sizeof(word),fp); //寫入每個單詞的信息</p><p>  fclose(fp);//關閉文件</p><p&g

25、t;<b>  }</b></p><p>  void add_infor()//添加單詞信息</p><p><b>  {</b></p><p>  int a,i=num;</p><p>  printf("請輸入單詞的英文形式:");</p><

26、p>  scanf("%s",s[i].en);</p><p>  printf("請輸入單詞的中文形式:");</p><p>  scanf("%s",s[i].no);</p><p><b>  num++;</b></p><p>  prin

27、tf("您輸入的信息為: 英文: %s 中文: %s \n Enter 0 繼續(xù)輸入; Enter 1 返回主菜單",s[i].en,s[i].no);</p><p><b>  }</b></p><p>  void del_infor()//刪除單詞信息</p><p><b>  {</b>

28、;</p><p>  int i=0,j=0;</p><p>  char no[MAX_CHAR]; //中文形式</p><p>  printf("請輸入你要刪除的單詞中文形式:");</p><p>  scanf("%s",no);</p><p>  fo

29、r(i=0;i<num;i++)//先找到該中文形式對應的序號</p><p>  if(strcmp(s[i].no,no)==0)</p><p><b>  {</b></p><p>  for(j=i;j<num-1;j++)</p><p>  s[j]=s[j+1];</p>&l

30、t;p>  num--; //數(shù)量減少 1</p><p><b>  return;</b></p><p><b>  }</b></p><p>  printf("沒有這個單詞!");</p><p>  printf("Enter Enter 1 返

31、回主菜單");</p><p><b>  }</b></p><p>  void modify_infor()//修改單詞信息</p><p><b>  {</b></p><p><b>  int i=0;</b></p><p> 

32、 char no[MAX_CHAR]; //中文形式</p><p>  printf("請輸入你要修改的單詞中文形式:");</p><p>  scanf("%s",no);</p><p>  for(i=0;i<num;i++)//先找到該中文形式對應的序號</p><p>  i

33、f(strcmp(s[i].no,no)==0)</p><p><b>  {</b></p><p>  printf("請輸入單詞正確的英文形式:");</p><p>  scanf("%s",s[i].en);</p><p>  printf("請輸入此單詞正

34、確的的中文形式:");</p><p>  scanf("%s",s[i].no);</p><p><b>  return;</b></p><p><b>  }</b></p><p>  printf("沒有這個單詞!");</p&g

35、t;<p>  printf("Enter Enter 1 返回主菜單");</p><p><b>  }</b></p><p>  void show_infor()</p><p>  {int i=0;</p><p>  printf("單詞: 英文

36、 中文 \n");</p><p>  for(i=0;i<num;i++)</p><p>  printf(" %10s%10s\n",s[i].en,s[i].no);</p><p>  printf("Enter Enter 1 返回主菜單");</p>

37、<p><b>  }</b></p><p>  void search_infor()//查詢單詞</p><p><b>  {</b></p><p><b>  int i=0;</b></p><p>  char no[MAX_CHAR]; //中

38、文形式</p><p>  printf("請輸入你要查詢的單詞中文形式:");</p><p>  scanf("%s",no);</p><p>  for(i=0;i<num;i++)//先找到該中文形式對應的序號</p><p>  if(strcmp(s[i].no,no)==0)&l

39、t;/p><p><b>  {</b></p><p>  printf("英文形式 中文形式 \n");</p><p>  printf("%10s%12s\n",s[i].en,s[i].no);</p><p><b>  retur

40、n;</b></p><p><b>  }</b></p><p>  printf("沒有這個中文形式!");</p><p>  printf("Enter Enter 1 返回主菜單");</p><p><b>  }</b><

41、/p><p>  void zy_infor()</p><p><b>  {</b></p><p>  char b1[20];</p><p>  int z,d=0,c=0;</p><p><b>  int i;</b></p><p>

42、;  i = rand()%num;</p><p>  printf("【%s】請輸入英文單詞:",s[i].no);</p><p>  scanf("%s",b1);</p><p>  for(z=0;strcmp(b1,s[i].en)!=0;z=z)</p><p>  {printf(&q

43、uot;輸入錯誤??!請重新輸入:");scanf("%s",b1);c=c+1;}</p><p>  printf("\n恭喜你,回答正確,加10分!\n\n");d=d+1;</p><p>  printf("Enter 2 繼續(xù)輸入; Enter 1 返回主菜單",s[i].en,s[i].no);</p

44、><p><b>  }</b></p><p>  void yz_infor()</p><p><b>  {</b></p><p>  char b1[20];</p><p>  int z,x=41,d=0,c=0;</p><p><

45、b>  int i;</b></p><p>  i = rand()%num;</p><p>  printf("【%s】請輸入中文意思:",s[i].en);</p><p>  scanf("%s",b1);</p><p>  for(z=0;strcmp(b1,s[i]

46、.no)!=0;z=z)</p><p>  {printf("輸入錯誤!!請重新輸入:");scanf("%s",b1);c=c+1;}</p><p>  printf("\n恭喜你,回答正確,加10分!\n\n");d=d+1;</p><p>  printf("\n Enter 3 繼

47、續(xù)輸入; Enter 1 返回主菜單",s[i].en,s[i].no);</p><p><b>  }</b></p><p>  void chengji_infor()</p><p><b>  {</b></p><p><b>  int c,d;</b&g

48、t;</p><p>  printf("\n共計輸入錯誤:%d次**每次扣10分**\n",c);</p><p>  printf("共計輸入正確:%d次**每次加10分**\n",d);</p><p>  printf("你的總得分為:%d分\n\n",10*d-10*c);</p&

49、gt;<p>  printf("Enter Enter 1 返回主菜單");</p><p><b>  }</b></p><p>  void show_main_menu()</p><p><b>  {</b></p><p>  printf(&q

50、uot;\n");</p><p>  printf(" ●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●\n");</p><p>  printf(" ◎ ◎\n");

51、</p><p>  printf(" ● 背 單 詞 系 統(tǒng) ●\n");</p><p>  printf(" ◎ ◎\n&

52、quot;);</p><p>  printf(" ● 作者 : 凌通 ●\n");</p><p>  printf(" ◎

53、 ◎\n");</p><p>  printf(" ●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●\n");</p><p>  printf(" ◎ ◎\n");&

54、lt;/p><p>  printf(" ● 1、添加單詞信息 2、刪除單詞信息 ●\n");</p><p>  printf(" ◎ ◎\n");<

55、;/p><p>  printf(" ● 3、修改單詞信息 4、顯示單詞信息 ●\n");</p><p>  printf(" ◎ ◎\n");</

56、p><p>  printf(" ● 5、背誦(中至英) 6、背誦(英至中) ●\n");</p><p>  printf(" ◎ ◎\n");</

57、p><p>  printf(" ● 7、查詢成績 8、退出 ●\n");</p><p>  printf(" ◎ ◎\n");&

58、lt;/p><p>  printf(" ●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●\n"); //用戶界面</p><p>  printf("\n");</p><p>  printf(" 請選擇您需要的操作序號(1-8)按回車確認:

59、");</p><p><b>  }</b></p><p>  int main()</p><p><b>  {</b></p><p>  int a,choose=0;</p><p>  num=0;//初始化單詞個數(shù)為0</p><

60、;p>  read_from_file(); //讀取文件</p><p>  show_main_menu();</p><p>  scanf("%d",&choose);</p><p>  printf("\n");</p><p>  while(choose!=8)</

61、p><p><b>  {</b></p><p>  switch(choose)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  add_infor();break;</p>

62、<p><b>  case 2:</b></p><p>  del_infor();break; </p><p><b>  case 3:</b></p><p>  modify_infor();break;</p><p><b>  case 4:</b>

63、;</p><p>  show_infor();break;</p><p><b>  case 5:</b></p><p>  zy_infor();break;</p><p><b>  case 6:</b></p><p>  yz_infor();break

64、;</p><p><b>  case 7:</b></p><p>  chengji_infor();break;</p><p><b>  }</b></p><p>  while (a<10000){scanf("%d",&a);</p>

65、<p><b>  if(a==0){</b></p><p>  write_to_file(); </p><p>  add_infor();}</p><p>  if(a==1) </p><p>  {printf("\n");</p><p>  

66、write_to_file();</p><p><b>  main();</b></p><p>  printf("\n");}</p><p><b>  if(a==2)</b></p><p><b>  {</b></p><

67、;p>  write_to_file();</p><p>  zy_infor();}</p><p><b>  if(a==3)</b></p><p><b>  {</b></p><p>  write_to_file(); </p><p>  yz_i

68、nfor();}</p><p><b>  if(a>3)</b></p><p><b>  {break;}</b></p><p><b>  }</b></p><p>  write_to_file();//寫入文件</p><p>&

69、lt;b>  }</b></p><p>  printf(" ***************謝謝使用單詞背誦系統(tǒng)!再見!*************** \n"); </p><p>  getchar();</p><p><b>  return 1;</b></

70、p><p><b>  }</b></p><p><b>  7: 心得體會</b></p><p>  通過本次C語言課程設計,是我對C語言的文件的存取、結構體的使用、數(shù)組的使用和指針操作有了更深的理解。</p><p>  還充分體會了從事軟件開發(fā)工作需要特別嚴謹認真的態(tài)度和作風,一點都馬虎不得

71、。每一個細微的細節(jié)都必須十分的注意,如果不認真思考決策,就會出現(xiàn)或大或小的錯誤,如果早期的錯誤隱藏下來,對后面的工作影響就會很大,甚至有時要推倒很多前面做的工作重來。有時候,我自己覺得我寫的程序非常的正確,但是就是編譯通不過,在查找錯誤的過程中,面臨著否認自己的過程,非常的痛苦,而且由于自己的經驗及各方面的能力的不足,所以進展的速度非常的緩慢,往往幾天的時間還沒有一點進展。這時候,我一般是先自己通過書本,手冊和資料找解決辦法,實在沒轍了

溫馨提示

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

評論

0/150

提交評論