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

下載本文檔

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

文檔簡介

1、<p><b>  課程設計報告</b></p><p>  題 目 學籍管理系統 </p><p>  課 程 名 稱 面向對象程序設計課程設計 </p><p>  院 部 名 稱 軟件學院 </p><p>  專 業 數

2、字媒體技術</p><p>  班 級 </p><p>  學 生 姓 名 </p><p>  學 號 </p><p>  課程設計地點 &l

3、t;/p><p>  課程設計學時 </p><p>  指 導 教 師 </p><p><b>  一 需求分析</b></p><p>  隨著計算機的發展,越來越多的學校有自己的學籍管理系統。這樣更方便數據的長期保存,更適用于數據的集中處理。通過

4、這個簡單的學籍管理系統,可以添加新成員的基本信息,通過其姓名,性別,科目,分數等信息查詢這個人的基本信息??梢院芊奖愕倪M行數據修改,以及數據刪除。本系統主要是通過二進制的文件讀取,進行輸入,輸出,以及修改,刪除等基本功能。用結構體實行學生的基本信息。</p><p>  結構體student</p><p><b>  數據成員:</b></p><

5、;p><b>  姓名 name</b></p><p><b>  學號 num</b></p><p>  語文 Chinese</p><p><b>  數學 math</b></p><p><b>  .二 概要設計</b></p

6、><p>  struct student</p><p><b>  {</b></p><p>  char name[60];</p><p>  char num[20];</p><p>  int score;</p><p>  char sex[30];<

7、/p><p><b>  };</b></p><p>  這個結構體設計的很簡單,里面有四個數據成員。包括了學生的基本信息,姓名name用多字符來保存,學好num用多字符類型,分數score用整數定義,性別用多字符類定義。</p><p>  為了可以對數據進行操作,處理。我們這里用了很多函數。</p><p>  int

8、 dq(struct student st[]);</p><p>  void xianshi();//顯示主界面</p><p>  void bc(struct student st[]);//保存學生信息</p><p>  void add(); //添加學生的信息</p><p>  void select();//查看學生信息&

9、lt;/p><p>  void chazhao();//查找</p><p>  void xhcz();//學號查找</p><p>  void xmcz();//姓名查找</p><p>  void del();//刪除,里面提供了兩個函數實現按學號void xhsc();或是姓名void xmsc();查找來刪除</p>

10、<p>  void xmsc();//姓名刪除</p><p>  void xhsc();//學號刪除</p><p>  void tj();//統計分數,求出總分和平均分</p><p>  void px();//排序</p><p>  void bjg();</p><p>  void bc

11、a();//打印出文件的保存字樣</p><p>  void fh();//文件顯示提醒</p><p>  struct student st[300]; //這個數組用來保存所有的學生信息 和文件里面的一致</p><p>  int Number=0; //記錄總的學生人數 也就是數組/文件里面的學生人數</p><p><b&

12、gt;  主函數的流程圖:</b></p><p><b>  .三 詳細的設計。</b></p><p>  主函數void main()</p><p>  這里默認的查查在F盤是否有一個文件,student。如果有就直接在原有的基礎上添加或是修改信息。沒有就建立一個文件在磁盤中 。編輯主頁面的鏈接。</p>&l

13、t;p><b>  主要有八個功能:</b></p><p><b>  1添加學生的信息</b></p><p><b>  2查看學生的信息</b></p><p><b>  3查找學生的信息</b></p><p><b>  4刪

14、除學生的信息</b></p><p>  5統計(總成績和平均分)</p><p>  6輸出前N名學生的成績</p><p><b>  7保存文件</b></p><p><b>  0退出系統</b></p><p>  用switch語句來實現對應的鏈接&

15、lt;/p><p><b>  具體核心代碼如下:</b></p><p>  void main()</p><p><b>  {</b></p><p>  int choose=0;</p><p>  FILE *fp=NULL;</p><p>

16、;  char yesorno;</p><p>  if((fp=fopen("F://student.dat","rb"))==NULL)</p><p><b>  {</b></p><p>  cout<<("\n=========>提示:文件不存在,是否要創建一個?

17、(y/n)\n");</p><p>  cin>>yesorno;</p><p>  if(yesorno=='y'||yesorno=='Y')</p><p><b>  { </b></p><p>  //這里僅為了建立文件,默認的地址在F://stude

18、nt.dat</p><p>  fp=fopen("F://student.dat","wb");</p><p>  fclose(fp);</p><p><b>  }</b></p><p><b>  else</b></p><

19、;p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  Number=dq(st); //要是文件只能夠已經有數據

20、將數據初始化到數組中</p><p><b>  }</b></p><p>  system("cls");</p><p>  while(true) </p><p><b>  { </b></p><p>  xianshi();</p&g

21、t;<p>  cout<<" ====>請選擇:";</p><p>  scanf("%d",&choose);</p><p>  system("cls");</p><p>  switch(choose)</p><p><

22、;b>  {</b></p><p>  case 0: exit(0);</p><p><b>  //退出 </b></p><p><b>  break; </b></p><p>  case 1: add();</p><p>  fh();/

23、/增加學生成績</p><p><b>  break; </b></p><p>  case 2: select();</p><p>  fh();//查看學生成績</p><p><b>  break; </b></p><p>  case 3: chazhao(

24、);</p><p>  fh();// 查找 </p><p><b>  break;</b></p><p>  case 4: del(); </p><p>  fh();//刪除 </p><p><b>  break;</b></p><p

25、>  case 5: tj();</p><p><b>  fh();//統計</b></p><p><b>  break;</b></p><p>  case 6: px();</p><p>  fh();//排序 </p><p><b>  b

26、reak;</b></p><p>  case 7:bca();</p><p>  fh();//保存 </p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  break;

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

28、gt;<p><b>  }</b></p><p>  然后就要對對應的功能函數實現,里面有很多的代碼。</p><p>  首先是顯示主界面:讓操作的人一眼就能看到這系統有哪些功能 。我們根據界面的提示進入對應的數據操作</p><p><b>  主界面的流程圖:</b></p><

29、p>  void xianshi()</p><p><b>  {</b></p><p>  cout<<"===================================================";</p><p>  cout<<"

30、 * 學生成績管理系統 *"<<endl;</p><p>  cout<<"-- [1] 添加學生成績 ***************************"<<endl;</p><p>  cout<<"-- [2] 查看學生成績 ***********************

31、****"<<endl;</p><p>  cout<<"-- [3] 查找學生成績 ***************************"<<endl;</p><p>  cout<<"-- [4] 刪除學生成績 ***************************"<&l

32、t;endl;</p><p>  cout<<"-- [5] 統計(總成績和平均分) ******************"<<endl;</p><p>  cout<<"-- [6] 輸出前N名學生成績 *********************"<<endl;</p><

33、p>  cout<<"-- [7] 保存*************************************"<<endl;</p><p>  cout<<"** [0] 退出*************************************"<<endl;</p><p>  c

34、out<<"==================================================="<<endl;</p><p><b>  }</b></p><p>  有了這個主頁面。我們一個一個的來實現。</p><p>  第一個先把添加學生信息的函數編好,這樣我們就可以向

35、里面存學生的而信息了,先定義一個暫時的學生類保存,這里要注意的是我們添加的是很多學生信息,要用一個數組來實現。而且要把添加的學生信息保存到原有的文件中:</p><p><b>  具體的代碼如下:</b></p><p>  void add()//增加學生 </p><p><b>  {</b></p>

36、<p>  int numberTemp=0;</p><p><b>  int i=0;</b></p><p>  struct student temp; //臨時保存信息</p><p>  cout<<"請輸入要增加學生個數:";</p><p>  cin>

37、>numberTemp;</p><p>  for(i=0;i<numberTemp;i++)</p><p><b>  {</b></p><p>  cout<<"輸入第"<<i+1<<"個同學信息" <<endl;</p>

38、<p>  cout<<"姓名:";</p><p>  cin>>temp.name;</p><p>  cout<<"學號:";</p><p>  cin>>temp.num;</p><p>  cout<<"性

39、別:";</p><p>  cin>>temp.sex;</p><p>  cout<<"成績:"<<endl;</p><p>  cin>>temp.score;</p><p>  st[Number++]=temp; //將剛添加的寫入到數組</p

40、><p>  bc(&temp); //將剛添加的寫入到文件</p><p><b>  }</b></p><p>  cout<<"添加成功"<<endl;</p><p><b>  }</b></p><p>  第二個

41、是要查看學生的信息,這個很簡單,直接用一個for循環輸出在文件里的信息就好:</p><p>  void select()//查看學生 </p><p><b>  {</b></p><p><b>  int i=0;</b></p><p>  cout<<"以下是全部

42、學生成績"<<endl;</p><p>  cout<<"\t姓名\t學號\t性別\t成績\n";</p><p>  for(i=0;i<Number;i++)</p><p><b>  {</b></p><p>  cout<<st[i].

43、name<<"\t"<<st[i].num<<"\t"<<"\t"<<st[i].sex <<"\t"<<st[i].score<<endl ;</p><p><b>  }</b></p><p

44、><b>  }</b></p><p>  第三個是查找學生的信息,做這個時需要做第二個界面菜單??梢园磳W號或是姓名來查找。然后,比如按學號來查是,提示用戶輸入要查找的學生的學號,for循環和strcmp()函數查。當文件里面有這個學生時,輸出來給用戶;具體如下</p><p>  void chazhao()//查找學生 </p><p&

45、gt;<b>  {</b></p><p><b>  int n=0;</b></p><p>  cout<<endl<<"** 1 按姓名查找"<<endl;</p><p>  cout<<"** 2 按學號查找"; <

46、/p><p><b>  cin>>n;</b></p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1: xmcz();</p><p><b>  break

47、;</b></p><p>  case 2: xhcz();</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  cout<<"輸入有誤,結束!"<<endl;</

48、p><p><b>  break;</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  void xhcz()//按學號查找 ,這里運用了for循環和strcmp()查找學生。Strcmp()是一個比較函數,里面兩個參數相

49、等時入輸出結果。</p><p><b>  {</b></p><p>  char id[7];</p><p><b>  int i=0;</b></p><p>  cout<<"請輸入要查找學生學號:";</p><p><b

50、>  cin>>id;</b></p><p>  system("cls");</p><p>  printf("\t姓名\t學號\t性別\t成績\n");</p><p>  for (i=0;i<Number;i++)</p><p><b>  {

51、</b></p><p>  if (strcmp(id,st[i].num)==0)</p><p><b>  {</b></p><p>  cout<<st[i].name<<"\t"<<st[i].num<<"\t"<<&q

52、uot;\t"<<st[i].sex <<"\t"<<st[i].score<<endl ;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p

53、><p>  void xmcz()//按姓名查找 ,運用學號查找一樣的方法</p><p><b>  { </b></p><p>  char name[7];</p><p><b>  int i=0;</b></p><p>  cout<<"請

54、輸入要查找學生姓名:";</p><p>  cin>>name;</p><p>  system("cls");</p><p>  cout<<"\t姓名\t學號\t性別\t成績\n";</p><p>  for (i=0;i<Number;i++)<

55、;/p><p><b>  {</b></p><p>  if (strcmp(name,st[i].name)==0)</p><p><b>  {</b></p><p>  cout<<st[i].name<<"\t"<<st[i].nu

56、m<<"\t"<<"\t"<<st[i].sex <<"\t"<<st[i].score<<endl ;</p><p><b>  }</b></p><p><b>  }</b></p><

57、p><b>  }</b></p><p>  .第四個就是刪除學生的而信息,這個大體上跟查找學生的差不多,只是在查出學生后處理的方式不一樣。查找是把學生的信息數出來就好,而刪除時則需要刪除該學生。刪除的思想是用該學生后面一個一個學生往前面的覆蓋。這里要注意的是,刪除信息后就要把信息保存到原有的文件中。具體代碼如下:</p><p>  void del()//

58、刪除 </p><p><b>  {</b></p><p><b>  int n=0;</b></p><p>  cout<<"1 按姓名刪除"<<endl;</p><p>  cout<<"2 按學號刪除";&l

59、t;/p><p><b>  cin>>n;</b></p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1: xmsc();</p><p><b>  bre

60、ak;</b></p><p>  case 2: xhsc();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void xmsc()/

61、/按姓名刪除 </p><p><b>  {</b></p><p>  FILE *fp=NULL;</p><p>  char name[60];</p><p><b>  int i=0;</b></p><p><b>  int j=0;</b

62、></p><p>  printf("請輸入要刪除的學生姓名:");</p><p>  scanf("%s",name);</p><p>  for(i=0;i<Number;i++)</p><p><b>  {</b></p><p>

63、;  if (strcmp(name,st[i].name)==0) //如果查找到就刪除</p><p><b>  {</b></p><p>  for (j=i;j<Number-1;j++)</p><p><b>  {</b></p><p>  st[j]=st[j+1];&l

64、t;/p><p><b>  }</b></p><p><b>  Number--;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //將剩余數據寫入文件 重新一寫的方式

65、打開文件 把以前的數據擦除了</p><p>  fp=fopen("F://student.dat","wb");</p><p>  for (i=0;i<Number;i++)</p><p><b>  {</b></p><p>  fwrite(&st[i

66、],sizeof(struct student),1,fp);//寫入一個數據塊</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  cout<<"刪除成功;";</p><p><b>  }</b></p&

67、gt;<p>  void xhsc()//按學號刪除 </p><p><b>  {</b></p><p>  FILE *fp=NULL;</p><p>  char id[60];</p><p><b>  int i=0;</b></p><p>

68、;<b>  int j=0;</b></p><p>  cout<<"請輸入要刪除的學生學號:";</p><p><b>  cin>>id;</b></p><p>  for(i=0;i<Number;i++)</p><p><b&

69、gt;  {</b></p><p>  if (strcmp(id,st[i].num)==0) //如果查找到就刪除</p><p><b>  {</b></p><p>  for (j=i;j<Number-1;j++)</p><p><b>  {</b></p

70、><p>  st[j]=st[j+1];</p><p><b>  }</b></p><p><b>  Number--;</b></p><p><b>  }</b></p><p><b>  }</b></p>

71、;<p>  //將剩余數據寫入文件 重新一寫的方式打開文件 把以前的數據擦除了</p><p>  fp=fopen("F://student.dat","wb");</p><p>  for (i=0;i<Number;i++)</p><p><b>  {</b></p

72、><p>  fwrite(&st[i],sizeof(struct student),1,fp);//寫入一個數據塊</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  cout<<"刪除成功;";</p><p

73、><b>  }</b></p><p>  第五個是把學生的分數統計出來,這個也很好實現。就是把所有的學生的分數加在一起,然后把除以總數得出平均分:</p><p>  void tj()//統計 </p><p><b>  {</b></p><p><b>  int i=0

74、;</b></p><p>  double sum=0.0;</p><p>  for(i=0;i<Number;i++)</p><p><b>  {</b></p><p>  sum+=st[i].score;</p><p><b>  }</b&g

75、t;</p><p>  printf("全班總分為:%f\n",sum);</p><p>  printf("平均分為:%f\n",sum/Number); </p><p><b>  } </b></p><p>  第六個排序:把學生的信息按照分數的高低排序,然后可以輸

76、出前幾位學生的信息輸出。</p><p>  void px()//排序 </p><p><b>  {</b></p><p>  struct student temp;</p><p>  int wantNUmber=0;</p><p><b>  int i=0;</

77、b></p><p><b>  int j=0;</b></p><p>  for(i=0;i<Number-1;i++)</p><p><b>  {</b></p><p>  for(j=i;j<Number-1;j++)</p><p><

78、;b>  {</b></p><p>  if(st[j].score<st[j+1].score)//比較 學生的成績</p><p><b>  {</b></p><p>  temp=st[j];</p><p>  st[j]=st[j+1];</p><p> 

79、 st[j+1]=temp;</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  printf("你想輸出前幾名的成績:");</p><p>

80、  scanf("%d",&wantNUmber);;</p><p>  if (wantNUmber>Number)</p><p><b>  {</b></p><p>  wantNUmber=Number;</p><p><b>  }</b><

81、/p><p>  cout<<"\t姓名\t學號\t性別\t成績"<<endl;</p><p>  for(i=0;i<wantNUmber;i++)</p><p><b>  {</b></p><p>  cout<<st[i].name <<

82、;st[i].num <<st[i].sex <<st[i].score<<endl; </p><p><b>  } </b></p><p><b>  }</b></p><p><b>  第七個是保存文件:</b></p><p&

83、gt;  void bc(struct student *st)//保存</p><p><b>  {</b></p><p>  FILE *fp=NULL;</p><p>  fp=fopen("C://student.dat","ab+");</p><p>  fwri

84、te(st,sizeof(struct student),1,fp);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  最后就是退出系統了,這個在主程序就實現了,很簡單就用一個exit(0)。</p><p><b>  .四 測試主程序</b>

85、;</p><p>  void main()</p><p><b>  {</b></p><p>  int choose=0;</p><p>  FILE *fp=NULL;</p><p>  char yesorno;</p><p>  if((fp=fop

86、en("F://student.dat","rb"))==NULL)</p><p><b>  {</b></p><p>  cout<<("\n=========>提示:文件不存在,是否要創建一個?(y/n)\n");</p><p>  cin>>

87、yesorno;</p><p>  if(yesorno=='y'||yesorno=='Y')</p><p>  { //這里僅為了建立文件,默認的地址在F://student.dat</p><p>  fp=fopen("F://student.dat","wb");</p>

88、;<p>  fclose(fp);}</p><p><b>  else</b></p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  else</b></p>

89、;<p>  {Number=dq(st); //要是文件只能夠已經有數據 將數據初始化到數組中}</p><p>  system("cls");</p><p>  while(true) </p><p>  { xianshi();</p><p>  cout<<" ===

90、=>請選擇:";</p><p>  scanf("%d",&choose);</p><p>  system("cls");</p><p>  switch(choose)</p><p>  {case 0: exit(0);</p><p>&l

91、t;b>  //退出 </b></p><p><b>  break; </b></p><p>  case 1: add();</p><p>  fh();//增加學生成績</p><p><b>  break; </b></p><p>  ca

92、se 2: select();</p><p>  fh();//查看學生成績</p><p><b>  break; </b></p><p>  case 3: chazhao();</p><p>  fh();// 查找 </p><p><b>  break;</b&

93、gt;</p><p>  case 4: del(); </p><p>  fh();//刪除 </p><p><b>  break;</b></p><p>  case 5: tj();</p><p><b>  fh();//統計</b></p>

94、<p><b>  break;</b></p><p>  case 6: px();</p><p>  fh();//排序 </p><p><b>  break;</b></p><p>  case 7:bca();</p><p>  fh();//

95、保存 </p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  break;}</b></p><p>  fflush(stdin);</p><p>  getchar();

96、</p><p>  system("cls");}}</p><p><b>  部分測試數據如下:</b></p><p><b>  主界面</b></p><p><b>  添加數據</b></p><p><b>

97、;  查看所有學生:</b></p><p>  查找學生:選著1姓名查詢</p><p>  刪除學生:比如按姓名來刪除</p><p><b>  再次查看所有學生</b></p><p>  按6進行排序,查看前兩名學生的成績</p><p>  按7保存信息。最后可以按0退出系

98、統</p><p><b>  測試完畢。</b></p><p><b>  五 個人體會</b></p><p>  通過這次課程設計,我更加深刻的知道了我們學的c++和我們的生活密切相連,所以更應該注意平時上課各種小知識點的積累。然后上機具體操作的情況又與筆試有很大的不同,因為通過鍵盤操作,更容易出錯。所以我們平時在

99、學習的時候,就應該做到邊學邊編,如果很久沒有接觸到c++的編譯環境,就會出現不知道從何如手。</p><p>  另外,程序的變化太大拉,它需要我們拓展課外知識,所以僅靠在課堂上的時間學好它是不現實的。有很多小的技巧,以及編程思想需要我們自己去領悟,這要求我們要有很好的自學能力。比如說這次變成如果沒有掌握好文件輸入,打開的話,就很難編出能實現功能的程序,還有需要到網上去查很多資料,不懂就要借鑒。</p>

溫馨提示

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

評論

0/150

提交評論