2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩18頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《程序設計基礎(C語言)》</p><p><b>  課程設計</b></p><p><b>  學 院:</b></p><p>  班 級: </p><p><b>  學 號: </b></p><

2、;p><b>  姓 名: </b></p><p><b>  日 期: </b></p><p><b>  課程設計要求:</b></p><p>  1.本課程設計作為《程序設計基礎(C語言)》的期末考查,占學期總成績的70%。</p><p>  2

3、.本課程設計的題目有老師指定或學生自選。</p><p>  3.知識點要求包括:</p><p> ?。?)文件常用操作(打開,讀/寫數據,關閉等);</p><p><b> ?。?)選擇結構;</b></p><p><b> ?。?)循環結構;</b></p><p>

4、;<b> ?。?)自定義函數;</b></p><p><b> ?。?)數組的使用;</b></p><p> ?。?)指針的定義與引用;</p><p> ?。?)在相應的代碼處注釋出以上知識點;</p><p>  4.課程設計的主體包括題目名稱,算法分析,流程設計,代碼設計及運行結果。&l

5、t;/p><p>  題目名稱: 學生信息管理系統 </p><p><b>  算法分析:</b></p><p>  1功能分析:顯示系統的主界面,有“1、添加記錄”“ 2、修改記錄”“ 3、瀏覽記錄”“ 4、分類查找記錄”“ 5、刪除記錄”“ 6、從文件讀取記錄”“0、退出”按鈕。通過輸入相應序號來實現相應功能。&

6、lt;/p><p>  2程序分析:第三行:struct woker定義一個woker的結構體 分別聲明“學號”“姓名”“性別”“出生年月”“籍貫”“政治面貌”“家庭收入”。第18行struct node *next;建立一個鏈表void Add(Node *woker)添加記錄.第27行void Add()為自定義函數,來實現添加記錄功能。第58行void change()實現修改學生已經錄入的信息。第106行vo

7、id Disp()實現顯示學生已經錄入的信息。第123行void Tongji()自定義函數,實現查找統計的學生信息。第214行void save()實現對文件的保存,該文件為“學生管理系統.txt”。第236行void dismiss()實現學生系統的刪除工作。到此為7個自定義函數。第264行至299行為主函數,由while循環結構、switch選擇結構構成,主函數于自定義函數由指針鏈接,并在主函數中排版,實現主頁面。</p&g

8、t;<p><b>  流程設計:</b></p><p><b>  輸入1</b></p><p>  2 3 4 5</p><p>  0 0 0 0 0</p><p><b>  代碼設計:</b

9、></p><p>  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  #include <string.h></p><p>  struct s //定義一個s的結構體</p><p&

10、gt;<b>  {</b></p><p>  char num[11];</p><p>  char name[15];</p><p>  char sex[15];</p><p>  char birthday[15]; </p><p>  char a

11、ddress[10]; </p><p>  char position[10]; </p><p>  char money[10]; </p><p><b>  }; </b></p><p>  typedef struct node //聲明了一個struct no

12、de 類型</p><p><b>  {</b></p><p>  struct s data;</p><p>  struct node *next; //定義1個struct node類型的指針,它可以指向相應類型的變量。</p><p><b>  }Node;</b></p&g

13、t;<p>  void Add(Node *student) //自定義函數</p><p><b>  {</b></p><p>  Node *p,*r,*s; </p><p>  char n[11]; </p><p>  r=student;</

14、p><p>  s=student->next; </p><p>  while(r->next!=NULL) //這個循環的作用是使r為最后一個結點</p><p>  r=r->next; //將指針置于最末尾</p>

15、<p><b>  while(1)</b></p><p><b>  { </b></p><p>  printf("************************** 輸入0 返回主菜單!\n");</p><p>  printf("\n請你輸入學號號:");

16、 </p><p>  scanf("%s",n); </p><p>  if(strcmp(n,"0")==0) break; </p><p>  p=(Node *)malloc(sizeof(Node)); //申請si

17、zeof(Node)大小的空間 </p><p>  strcpy(p->data.num,n);</p><p>  printf("\n請輸入姓名:");</p><p>  scanf("%s",&p->data.name

18、); </p><p>  printf("\n請輸入性別:");</p><p>  scanf("%s",&p->data.sex);</p><p>  printf("\n請輸入出生年月:");</p><p>  scanf("%s

19、",&p->data.birthday);</p><p>  printf("\n請輸入籍貫:");</p><p>  scanf("%s",&p->data.address);</p><p>  printf("\n請輸入政治面貌:"); </p>

20、<p>  scanf("%s",&p->data.position);</p><p>  printf("\n請輸入家庭收入:");</p><p>  scanf("%s",&p->data.money);</p><p>  printf("提示:

21、已經完成一條記錄的添加。\n");</p><p>  p->next=NULL;</p><p>  r->next=p; </p><p>  r=p; </p><p><b>  }</b></p><p><b>  }<

22、/b></p><p>  void change(Node *student) </p><p><b>  {</b></p><p><b>  Node *p;</b></p><p>  char find[20];</p><p>  if(!studen

23、t->next)</p><p><b>  {</b></p><p>  printf("\n************************** 沒有資料可以修改!\n");</p><p>  fflush(stdin);</p><p>  getchar();</p>

24、<p><b>  return;</b></p><p><b>  }</b></p><p>  printf("請輸入要修改的學號:"); </p><p>  scanf("%s",find); </p><p>  p=student

25、->next; </p><p>  while(p!=NULL) </p><p><b>  {</b></p><p>  if(strcmp(p->data.num,find)==0) </p><p><b>  break; </b></p><

26、;p>  p=p->next;</p><p><b>  }</b></p><p>  if(p)</p><p><b>  {</b></p><p><b>  int x;</b></p><p><b> 

27、 while(1)</b></p><p><b>  {</b></p><p>  printf("完成修改請輸入0\n輸入任意數再進行修改:");</p><p>  scanf("%d",&x);</p><p><b>  if(x==0)&

28、lt;/b></p><p><b>  {break;} </b></p><p>  printf("請輸入新學號(原來是 %s ):",p->data.num);</p><p>  scanf("%s",p->data.num);</p><p>  pr

29、intf("請輸入新學生姓名(原來是 %s ):",p->data.name);</p><p>  scanf("%s",p->data.name);</p><p>  printf("請輸入新學生性別(原來是 %s ):",p->data.sex);</p><p>  scanf(

30、"%s",p->data.sex); </p><p>  printf("請輸入新出生年月(原來是 %s ):",p->data.birthday);</p><p>  scanf("%s",p->data.birthday); </p><p>  printf("請輸

31、入新學生籍貫(原來是 %s ):",p->data.address);</p><p>  scanf("%s",p->data.address); </p><p>  printf("請輸入新政治面貌(原來是 %s ):",p->data.position);</p><p>  scanf(&

32、quot;%s",p->data.position); </p><p>  printf("請輸入新家庭收入(原來是 %s ):",p->data.money);</p><p>  scanf("%s",p->data.money); </p><p>  printf("\n****

33、********************** 該項記錄資料已經成功修改! \n");</p><p>  fflush(stdin);</p><p>  getchar();</p><p><b>  }</b></p><p><b>  }</b></p>&

34、lt;p>  else printf("\n**************************你要修改的信息不存在!\n");</p><p>  fflush(stdin);</p><p>  getchar();</p><p><b>  } </b></p><p>  void

35、 Disp(Node *student)</p><p><b>  {</b></p><p><b>  Node *p;</b></p><p>  p=student->next;</p><p><b>  if(!p)</b></p><

36、;p><b>  {</b></p><p>  printf("\n************************** 沒有記錄可以顯示!\n");</p><p>  fflush(stdin);</p><p>  getchar();</p><p><b>  return

37、;</b></p><p><b>  }</b></p><p>  printf("\t\t\t\t顯示結果\n"); </p><p>  printf("學號 學生姓名 性別 學生生日 學生籍貫 政治面貌 家庭收入\n"); &l

38、t;/p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.num,p->data.name,p->data.sex,p-&

39、gt;data.birthday,p->data.address,p->data.position,p->data.money);</p><p>  p=p->next;</p><p>  getchar();</p><p><b>  }</b></p><p>  getchar();&

40、lt;/p><p><b>  }</b></p><p>  void Tongji(Node *student)</p><p><b>  {</b></p><p><b>  Node *p;</b></p><p><b>  int

41、sel;</b></p><p>  int flag2=0,ha=0;</p><p>  char find[20]; </p><p>  p=student->next; </p><p>  if(!student->next)</p><p><b>  {&l

42、t;/b></p><p>  printf("\n************************** 資料數為零!\n");</p><p>  getchar();</p><p><b>  return;</b></p><p><b>  }</b></p

43、><p>  printf("************************** \n******0退出\n******1按學號統計\n******2按學生姓名統計\n");</p><p>  scanf("%d",&sel);</p><p>  if(sel==1)</p><p><

44、b>  {</b></p><p>  printf("\n輸入你要統計分類的學號:");</p><p>  scanf("%s",find);</p><p><b>  while(p)</b></p><p><b>  { </b>

45、;</p><p>  if(strcmp(p->data.num,find)==0)</p><p><b>  {</b></p><p><b>  flag2++;</b></p><p><b>  } </b></p><p>  if

46、(flag2==1&&ha!=flag2)</p><p><b>  {</b></p><p>  printf("學號 學生姓名 學生性別 學生生日 學生籍貫 政治面貌 家庭收入\n");</p><p>  printf("\n%-13s%-11s%-7s%-10s%

47、-13s%-10s%-5s\n",p->data.num,p->data.name,p->data.sex,p->data.birthday,p->data.address,p->data.position,p->data.money);</p><p><b>  ha=flag2;</b></p><p><

48、;b>  }</b></p><p>  else if(flag2>ha)</p><p><b>  {</b></p><p>  printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.num,p->data.name,p-&g

49、t;data.sex,p->data.birthday,p->data.address,p->data.position,p->data.money);</p><p><b>  ha=flag2;</b></p><p><b>  }</b></p><p>  p=p->next;&l

50、t;/p><p><b>  }</b></p><p><b>  if(flag2)</b></p><p><b>  {</b></p><p>  printf("\n*************************按設備號%s統計分類的有%d條記錄:****

51、*********************\n\n",find,flag2);</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  printf("\n按學號%s

52、統計的結果為0個\n\n",find);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(sel==2)</p><p><b>  {</b></p><p>  print

53、f("\n輸入你要統計分類的學姓名:");</p><p>  scanf("%s",find);</p><p><b>  while(p)</b></p><p><b>  { </b></p><p>  if(strcmp(p->data.

54、name,find)==0)</p><p><b>  {</b></p><p><b>  flag2++;</b></p><p><b>  } </b></p><p>  if(flag2==1&&ha!=flag2)</p>&

55、lt;p><b>  { </b></p><p>  printf("學號 學生姓名 學生性別 學生生日 政治面貌 政治面貌 家庭收入\n");</p><p>  printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.num,p-&g

56、t;data.name,p->data.sex,p->data.birthday,p->data.address,p->data.position,p->data.money);</p><p><b>  ha=flag2;</b></p><p><b>  }</b></p><p> 

57、 else if(flag2>ha)</p><p><b>  {</b></p><p>  printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.num,p->data.name,p->data.sex,p->data.birthday,p->data

58、.address,p->data.position,p->data.money);</p><p><b>  ha=flag2;</b></p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b>

59、</p><p><b>  if(flag2)</b></p><p><b>  {</b></p><p>  printf("\n\n\n共查找到%d條記錄:\n\n",flag2);</p><p><b>  }</b></p>&

60、lt;p>  else {printf("\n按學生姓名%s統計分類的結果為0個\n\n",find);}</p><p><b>  }</b></p><p>  else if(sel==0)return;</p><p>  fflush(stdin);</p><p>  getcha

61、r();</p><p><b>  }</b></p><p>  void save(Node *student)</p><p><b>  {</b></p><p><b>  int n;</b></p><p><b&g

62、t;  Node *p;</b></p><p>  FILE *fp; //定義指向FILE類型文件的指針變量</p><p>  printf("需要保存文件嗎?(按1保存,按0不保存)");</p><p>  scanf("%d",&n);</p><p&

63、gt;<b>  if(n==1)</b></p><p><b>  {</b></p><p>  if(student->next==NULL)</p><p>  printf("無記錄");</p><p>  else p=student->next;&l

64、t;/p><p>  if((fp = fopen("學生信息.txt", "wb")) == NULL) //打開輸出文件,并使fp指向此文件</p><p>  printf("無法打開文件\n");</p><p>  while(p!=NULL)</p><p

65、><b>  {</b></p><p>  fprintf(fp,"%s %s %s %s %s %s %s",&p->data.num,&p->data.name,&p->data.sex,&p->data.birthday,&p->data.address,&p->data.p

66、osition,&p->data.money);</p><p>  p=p->next;</p><p><b>  }</b></p><p>  fclose(fp); //關閉文件 </p><p><b>  }</

67、b></p><p>  fflush(stdin);</p><p>  getchar();</p><p><b>  }</b></p><p>  void dismiss(Node *student)</p><p><b>  {</b><

68、;/p><p>  Node *p,*r,*s;</p><p>  char find[10];</p><p>  if(!student->next) </p><p><b>  { </b></p><p>  printf("\n**********************

69、**** 沒有資料可以顯示!\n"); </p><p>  getchar();</p><p><b>  return;</b></p><p><b>  }</b></p><p>  printf("\n************************** 請輸入您要

70、刪除的學號!\n");</p><p>  scanf("%s",find);</p><p>  p=student->next;</p><p>  while(p!=NULL) </p><p><b>  { </b></p><p>  if(str

71、cmp(p->data.num,find)==0)</p><p><b>  break; </b></p><p>  p=p->next; </p><p><b>  }</b></p><p><b>  if(!p)</b></p>

72、<p>  printf("\n************************** 找不到您想刪除的學號!\n");</p><p><b>  else</b></p><p><b>  {</b></p><p>  r=student;</p><p> 

73、 while(r->next!=p)</p><p>  r=r->next;</p><p>  s=r->next;</p><p>  r->next=r->next->next; //刪除節點</p><p><

74、;b>  }</b></p><p>  getchar();</p><p><b>  }</b></p><p>  void main()</p><p><b>  { </b></p><p><b>  int a;</b>

75、;</p><p>  Node *student;</p><p><b>  Node *p;</b></p><p>  student=(Node*)malloc(sizeof(Node));

76、//通過malloc申請sizeof(Node)大小的一段連續內存空間,</p><p>  student->next=NULL; //指向的下一個結點</p><p>  p=student;</p

77、><p><b>  while(1)</b></p><p><b>  {</b></p><p>  printf("\n");</p><p>  printf("\t\t\t\t學生信息管理系統\n");</p><p>  pr

78、intf("\n\t*********************************************************************");</p><p>  printf("\n\t1、添加記錄\n");</p><p>  printf("\n\t2、修改記錄\n");</p><

79、p>  printf("\n\t3、瀏覽記錄\n");</p><p>  printf("\n\t4、分類查找記錄\n");</p><p>  printf("\n\t5、刪除記錄\n");</p><p>  printf("\n\t0、退出\n");</p>

80、<p>  printf("\n\n輸入序號:");</p><p>  scanf("%d",&a);</p><p>  switch(a) //選擇結構</p><p><b>  {</b></p>&

81、lt;p>  case 0: return;break;</p><p>  case 1: Add(student);save(student);break;</p><p>  case 2: change(student);break;</p><p>  case 3: Disp(student);break;

82、</p><p>  case 4: Tongji(student);break;</p><p>  case 5: dismiss(student);break;</p><p>  default: printf("\n************************** 輸入錯誤!\n"); break

83、;</p><p>  }system("cls");</p><p><b>  }</b></p><p>  fflush(stdin);</p><p>  getchar();</p><p><b>  }</b></p><

84、;p><b>  運行結果:</b></p><p><b>  首界面</b></p><p>  輸入1 添加記錄</p><p><b>  輸入2 修改記錄</b></p><p><b>  輸入3 瀏覽記錄</b></p&g

溫馨提示

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

評論

0/150

提交評論