c++課程設(shè)計(jì)--學(xué)生成績(jī)表_第1頁(yè)
已閱讀1頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  學(xué)生成績(jī)表</b></p><p>  課題設(shè)計(jì)內(nèi)容、具備的功能:</p><p><b>  [系統(tǒng)功能]</b></p><p>  1)新增學(xué)生數(shù)據(jù)的添加:學(xué)號(hào),姓名,性別,3門課程成績(jī),計(jì)算總成績(jī)并顯示。</p><p>  2)修改學(xué)生成績(jī)數(shù)據(jù):輸入學(xué)號(hào),根據(jù)

2、學(xué)號(hào),修改該生的3項(xiàng)成績(jī)數(shù)據(jù)計(jì)算總成績(jī)并顯示。</p><p>  3)刪除一個(gè)學(xué)生:輸入學(xué)號(hào),根據(jù)學(xué)號(hào)刪除該生。</p><p>  4)根據(jù)學(xué)號(hào)查詢:輸入學(xué)號(hào),查找該生并顯示學(xué)生數(shù)據(jù)。</p><p>  5)顯示全部學(xué)生數(shù)據(jù)。</p><p>  6)根據(jù)學(xué)號(hào)從小到大排序?qū)W生數(shù)據(jù)。</p><p>  7)根據(jù)總

3、成績(jī)從大到小排序?qū)W生數(shù)據(jù)。</p><p>  8)退出:保存學(xué)生總數(shù)文件及學(xué)生數(shù)據(jù)文件,然后結(jié)束程序運(yùn)行。</p><p><b>  [系統(tǒng)設(shè)計(jì)要求]</b></p><p>  1)在Visual C++控制臺(tái)應(yīng)用程序方式下設(shè)計(jì)課題。</p><p>  2)設(shè)計(jì)的程序要求規(guī)定的功能。</p><

4、;p>  3)程序應(yīng)具有一定的健壯性。即程序必須具有必要的檢查和出錯(cuò)處理,如在新增學(xué)生數(shù)據(jù)時(shí)檢查輸入的學(xué)號(hào)是否相同。刪除、查詢學(xué)生時(shí)檢查輸入的學(xué)號(hào)是否存在等。</p><p>  模塊(函數(shù))的劃分、各模板(函數(shù))的功能:</p><p>  int EnterChoice();//輸入選項(xiàng)</p><p>  void Init();

5、//數(shù)據(jù)文件初始化</p><p>  void Add(); //增加一個(gè)學(xué)生</p><p>  void Update();//修改學(xué)生成績(jī)</p><p>  void Delete();//刪除一個(gè)學(xué)生</p>

6、<p>  void Query();//查詢學(xué)生數(shù)據(jù)</p><p>  void Display();//顯示全部學(xué)生</p><p>  void Display(Student*); //顯示全部學(xué)生</p><p>  void SortNo();//按學(xué)號(hào)排序(從

7、小到大)</p><p>  void SortScore();//按成績(jī)排序(從大到小)</p><p>  void SaveTxt();//以二進(jìn)制形式保存數(shù)據(jù)</p><p>  int CheckNo(char *);//輸入學(xué)號(hào)</p><p>  void PrintTitl

8、e();//顯示表頭</p><p>  void GetData(Student*);//讀取學(xué)生成績(jī)數(shù)據(jù)</p><p>  采用的自定義的數(shù)據(jù)類型:</p><p>  1) 建立student工程</p><p>  2) 在頭文件中,設(shè)計(jì)Student結(jié)構(gòu)類型,成員為</p><

9、p>  char No[5] 學(xué)號(hào)</p><p>  char Name[8]姓名</p><p>  char Gender[7]性別</p><p>  int Score[4]3門課程成績(jī)及總成績(jī)</p><p>  程序設(shè)計(jì)過程、調(diào)試中過程中所用的測(cè)試用例、測(cè)試方法,程序運(yùn)行的結(jié)果:</p>&l

10、t;p>  程序運(yùn)行的結(jié)果通過截圖來顯現(xiàn)。下面的程序是顯示的九個(gè)功能:</p><p>  程序運(yùn)行后的菜單顯示:</p><p><b>  增加學(xué)生信息界面:</b></p><p><b>  修改學(xué)生信息:</b></p><p><b>  刪除學(xué)生信息界面:</b&

11、gt;</p><p><b>  查詢學(xué)生信息:</b></p><p><b>  顯示所有學(xué)生信息:</b></p><p><b>  按學(xué)生學(xué)號(hào)排序:</b></p><p><b>  按學(xué)生分?jǐn)?shù)排序:</b></p><p

12、>  結(jié)束操作界面:結(jié)束操作界面:</p><p>  在課程設(shè)計(jì)中遇到的問題和解決的方法,還沒有能解決的問題:</p><p>  1)特別注意各種C++代碼的運(yùn)用。</p><p>  2)按照規(guī)范的步驟進(jìn)行,程序調(diào)試好之后,由于實(shí)驗(yàn)環(huán)境不同,需要重新建立工程及文件,在新建.h文件時(shí),要注意文件名要與.cpp文件中定義的頭文件一致,否則程序因找不到正確的.

13、h文件而無法正常運(yùn)行。</p><p>  3)在程序運(yùn)行出現(xiàn)問題時(shí)積極地詢問老師或查詢資料。</p><p>  4)在運(yùn)行中出現(xiàn)一些不細(xì)心導(dǎo)致的小問題,經(jīng)過同學(xué)討論都一一解決。</p><p>  六、 通過課程設(shè)計(jì)的體會(huì)、收獲:</p><p>  在為期不到兩周的課程設(shè)計(jì)中,我體會(huì)頗多,學(xué)到很多東西。利用這次課程設(shè)計(jì)的機(jī)會(huì),我加

14、強(qiáng)了對(duì)C++的認(rèn)識(shí),復(fù)習(xí)了自己以前的知識(shí),自己的邏輯思考能力也提高不少。從而對(duì)Microsoft Visual C++ 6.0又有了更深入的認(rèn)識(shí)!總之,通過這次課程設(shè)計(jì),我收獲頗豐,相信會(huì)為自己以后的學(xué)習(xí)和工作帶來很大的好處。最重要的還是激發(fā)了我編程的興趣和熱情,讓我從一個(gè)只懂理論變成了能做一些小型程序,讓我對(duì)編程更加熱愛了。整體地評(píng)價(jià)這次課程設(shè)計(jì),我認(rèn)為收獲很大,正如上面所說的那樣,通過課程設(shè)計(jì),既復(fù)習(xí)了以前的舊知識(shí),又學(xué)到了一些新的

15、知識(shí);設(shè)計(jì)增強(qiáng)了我們用所學(xué)知識(shí)去解決具體問題的能力,進(jìn)一步培養(yǎng)了我們獨(dú)立思考問題和解決問題的能力。當(dāng)然,老師的悉心指導(dǎo)和同學(xué)的幫助也是不可忽視的,在此感謝本次課程設(shè)計(jì)中所有輔導(dǎo)老師對(duì)我的關(guān)心和幫助,誠(chéng)心誠(chéng)意感謝他們對(duì)我的鼓勵(lì)與教導(dǎo),是她在我迷茫的時(shí)候給了我些許提示,激發(fā)了我編程的靈感;還有,我在此也十分感謝本次課程設(shè)計(jì)中同學(xué)們對(duì)我的幫助,盡管本次不是團(tuán)隊(duì)合作,但是他們也給了我不少的提示和幫助,是他們讓我有信心堅(jiān)持做下來,在此感謝他們!理

16、論的擁有并不能代表我們的實(shí)力和能力,一</p><p>  七、 源程序代碼:</p><p> ?。?)//結(jié)構(gòu)定義文件</p><p>  //Student.h</p><p>  #ifndef STUDENT_H</p><p>  #define STUDENT_H</p><p&

17、gt;  Struct Student</p><p><b>  {</b></p><p>  Char No[9];</p><p>  Char Name[9];</p><p>  Char Gender[7];</p><p>  Int Score[4];</p>&l

18、t;p><b>  };</b></p><p><b>  #endif</b></p><p>  (2)//函數(shù)實(shí)現(xiàn)文件</p><p>  // student.cpp</p><p>  #include<iostream></p><p>  #

19、include<iomanip></p><p>  #include<fstream></p><p>  #include<cstring></p><p>  #include"student.h"</p><p>  using namespace std;</p>

20、<p>  int EnterChoice();</p><p>  void Init();</p><p>  void Add();</p><p>  void Update();</p><p>  void Delete();</p><p>  void Query();</p>

21、<p>  void SortScore();</p><p>  void Display();</p><p>  void Display(Student*);</p><p>  void SortNo();</p><p>  void SaveTxt();</p><p>  int Check

22、No(char*);</p><p>  void PrintTitle();</p><p>  void GetData(Student*);</p><p>  extern const int MaxNum=100;</p><p>  extern int CurNum;</p><p>  extern S

23、tudent student[MaxNum];</p><p><b>  //輸入選擇函數(shù)</b></p><p>  int EnterChoice()</p><p><b>  {</b></p><p>  cout<<"\nEnter your Choice\n&q

24、uot;</p><p>  <<"1:add student 2:update student\n"</p><p>  <<"3:delete student 4:query student\n"</p><p>  <<"5:displa

25、y students 6:Sort student by NO\n"</p><p>  <<"7:Sort student by score 8:end\n";</p><p>  int Choice;</p><p>  cin>>Choice;</p><p> 

26、 return Choice;</p><p><b>  }</b></p><p><b>  //初始化函數(shù)</b></p><p>  void Init()</p><p><b>  {</b></p><p>  ifstream inCo

27、unt,inStudent;</p><p>  ofstream outCount,outStudent;</p><p>  inCount.open("count.txt",ios::in);</p><p>  if(!inCount)</p><p><b>  {</b></p>

28、;<p>  inCount.close();</p><p>  outCount.open("count.txt",ios::out);</p><p>  outCount<<CurNum;</p><p>  outCount.close();</p><p><b>  }&l

29、t;/b></p><p><b>  else</b></p><p><b>  {</b></p><p>  inCount>>CurNum;</p><p>  inCount.close();</p><p><b>  }</b

30、></p><p>  if(CurNum)</p><p><b>  {</b></p><p>  inStudent.open("student.txt",ios::in);</p><p>  for(int i=0;i<CurNum;i++)</p><p&

31、gt;<b>  {</b></p><p>  inStudent>>(student+i)->No;</p><p>  inStudent>>(student+i)->Name;</p><p>  inStudent>>(student+i)->Gender;</p>

32、<p>  inStudent>>(student+i)->Score[0];</p><p>  inStudent>>(student+i)->Score[1];</p><p>  inStudent>>(student+i)->Score[2];</p><p>  inStudent>

33、>(student+i)->Score[3];</p><p><b>  }</b></p><p>  inStudent.close();</p><p><b>  }</b></p><p><b>  else</b></p><p&

34、gt;<b>  {</b></p><p>  outStudent.open("Student.txt",ios::out);</p><p>  outStudent.close();</p><p><b>  }</b></p><p><b>  }<

35、/b></p><p><b>  //增加一個(gè)學(xué)生</b></p><p>  void Add()</p><p><b>  {</b></p><p>  char no[9];</p><p>  cout<<"No=";<

36、;/p><p><b>  cin>>no;</b></p><p>  int i=CheckNo(no);</p><p><b>  if(i>=0)</b></p><p>  cout<<"No.repeated,input again"<

37、;<endl;</p><p><b>  else</b></p><p><b>  {</b></p><p>  strcpy(student[CurNum].No,no);</p><p>  cout<<"Name=";</p><

38、;p>  cin>>(student+CurNum)->Name;</p><p>  cout<<"Gender=";</p><p>  cin>>(student+CurNum)->Gender;</p><p>  GetData(student+CurNum);</p>

39、<p>  PrintTitle();</p><p>  Display(student+CurNum);</p><p><b>  CurNum++;</b></p><p><b>  }</b></p><p><b>  }</b></p>

40、<p>  按學(xué)生號(hào)從小到大冒泡排序,并顯示</p><p>  void SortNo()</p><p><b>  {</b></p><p>  Student temp;</p><p><b>  int flag;</b></p><p>  for

41、(int i=0;i<CurNum-1;i++)</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p>  for(int j=0;j<CurNum-1-i;j++)</p><p><b>  {</b><

42、;/p><p>  if(strcmp(student[j+1].No,student[j].No)<0)</p><p><b>  {</b></p><p><b>  flag=0;</b></p><p>  temp=student[j+1];student[j+1]=student[

43、j];student[j]=temp;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag)break;</p><p><b>  }</b></p><p>  Display();&l

44、t;/p><p><b>  }</b></p><p><b>  //顯示表頭</b></p><p>  void PrintTitle()</p><p><b>  {</b></p><p>  cout<<setiosflags(i

45、os_base::left);</p><p>  cout<<setw(6)<<"No"<<setw(8)<<"Name"<<setw(10)<<"Gender"<<setw(10)<<"Score1"<<setw(10)&l

46、t;<"Score2"<<setw(10)<<"Score3"<<setw(10)<<"SCore"<<endl;</p><p><b>  }</b></p><p><b>  //顯示學(xué)生情況</b></p&

47、gt;<p>  void Display()</p><p><b>  {</b></p><p>  if(CurNum)</p><p><b>  {</b></p><p>  PrintTitle();</p><p>  for(int i=0;

48、i<CurNum;i++)</p><p>  Display(student+i);</p><p><b>  }</b></p><p><b>  else</b></p><p>  cout<<"The list empty!"<<end

49、l;</p><p><b>  }</b></p><p>  //顯示一個(gè)學(xué)生情況</p><p>  void Display(Student* stu)</p><p><b>  {</b></p><p>  cout<<setiosflags(ios

50、_base::left);</p><p>  cout<<setw(6)<<stu->No;</p><p>  cout<<setw(8)<<stu->Name;</p><p>  cout<<setw(6)<<stu->Gender;</p><p&

51、gt;  cout<<resetiosflags(ios_base::left);</p><p>  cout<<setw(10)<<stu->Score[0];</p><p>  cout<<setw(10)<<stu->Score[1];</p><p>  cout<<se

52、tw(10)<<stu->Score[2];</p><p>  cout<<setw(10)<<stu->Score[3]<<endl;</p><p><b>  }</b></p><p>  //保存學(xué)生數(shù)據(jù)到文本文件</p><p>  void Sa

53、ve()</p><p><b>  {</b></p><p>  ofstream outCount,outStudent;</p><p>  outCount.open("count.txt",ios::out);</p><p>  outCount<<CurNum;</p

54、><p>  outCount.close();</p><p>  outStudent.open ("student.txt",ios::out);</p><p>  for(int i=0;i<CurNum;i++)</p><p><b>  {</b></p><p&

55、gt;  outStudent<<(student+i)->No<<" ";</p><p>  outStudent<<(student+i)->Name<<" ";</p><p>  outStudent<<(student+i)->Gender<<&qu

56、ot; ";</p><p>  outStudent<<(student+i)->Score[0]<<" ";</p><p>  outStudent<<(student+i)->Score[1]<<" ";</p><p>  outStudent&l

57、t;<(student+i)->Score[2]<<" ";</p><p>  outStudent<<(student+i)->Score[3]<<" ";</p><p>  outStudent<<endl;</p><p><b>  }&l

58、t;/b></p><p>  outStudent.close();</p><p><b>  }</b></p><p>  //檢查學(xué)號(hào)是否存在,找到返回所在數(shù)組下標(biāo),找不到返回-1</p><p>  int CheckNo(char* no)</p><p><b> 

59、 {</b></p><p>  for(int i=0;i<CurNum;i++)</p><p>  if(strcmp(student[i].No,no)==0)</p><p><b>  return i;</b></p><p>  return -1;</p><p&g

60、t;<b>  }</b></p><p><b>  讀入學(xué)生3項(xiàng)成績(jī)</b></p><p>  void GetData(Student* stu)</p><p><b>  {</b></p><p>  for(int i=0;i<3;i++)</p&g

61、t;<p><b>  {</b></p><p>  cout<<"Score"<<i<<"= ";</p><p>  cin>>stu->Score[i];</p><p><b>  }</b></p&

62、gt;<p>  stu->Score[3]=stu->Score[0]+stu->Score[1]+stu->Score[2];</p><p><b>  }</b></p><p>  按學(xué)生總成績(jī)從大到小排序</p><p>  void SortScore()</p><p&g

63、t;<b>  {</b></p><p>  Student temp;</p><p>  int i,j,max;</p><p>  for(i=0;i<CurNum-1;i++)</p><p><b>  { max=i;</b></p><p>  fo

64、r(j=i;j<CurNum;j++)</p><p>  if(student[max].Score[3]<student[j].Score[3])</p><p><b>  max=j;</b></p><p>  if(max!=i){</p><p>  temp=student[max];<

65、/p><p>  student[max]=student[i];</p><p>  student[i]=temp;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Display();</p><p&g

66、t;<b>  }</b></p><p>  //根據(jù)輸入的學(xué)生號(hào),刪除該學(xué)生</p><p>  void Update()</p><p><b>  {</b></p><p>  char no[9];char c;</p><p>  cout<<&q

67、uot;input no:";</p><p><b>  cin>>no;</b></p><p>  int i=CheckNo(no);</p><p><b>  if(i<0)</b></p><p>  cout<<"The number

68、 dose not exist!\n";</p><p><b>  else{</b></p><p>  cout<<"Update Score[0]?(y/n)\n";</p><p><b>  cin>>c;</b></p><p> 

69、 if(c=='y'||c=='Y')</p><p><b>  {</b></p><p>  cout<<"Input Score[0]:";</p><p>  cin>>student[i].Score[0];</p><p><

70、b>  }</b></p><p>  cout<<"Update Score[1]?(y/n)\n";</p><p><b>  cin>>c;</b></p><p>  if(c=='y'||c=='Y')</p><p&g

71、t;<b>  {</b></p><p>  cout<<"Input Score[1]:";</p><p>  cin>>student[i].Score[1];</p><p><b>  }</b></p><p>  cout<<&

72、quot;Update Score[2]?(y/n)\n";</p><p><b>  cin>>c;</b></p><p>  if(c=='y'||c=='Y')</p><p><b>  {</b></p><p>  cout<

73、;<"Input Score[2]:";</p><p>  cin>>student[i].Score[2];</p><p><b>  }</b></p><p>  student->Score[3]=student->Score[0]+student->Score[1]+stud

74、ent->Score[2];</p><p><b>  }</b></p><p>  PrintTitle();</p><p>  Display(student+i);</p><p><b>  }</b></p><p>  //根據(jù)輸入的號(hào),查找該生并顯示

75、</p><p>  void Query()</p><p><b>  {</b></p><p>  char no[9];</p><p>  cout<<"input no:";</p><p><b>  cin>>no;</

76、b></p><p>  int i=CheckNo(no);</p><p><b>  if(i<0)</b></p><p>  cout<<"The nunber dose not exist! \n";</p><p><b>  else</b>

77、;</p><p><b>  {</b></p><p>  PrintTitle();</p><p>  Display(student+i);</p><p><b>  }</b></p><p><b>  }</b></p>

78、<p><b>  //主函數(shù)文件</b></p><p>  //main.cpp</p><p>  #include <iostream></p><p>  #include <fstream></p><p>  #include <iomanip></p&g

79、t;<p>  #include <string></p><p>  #include "Student.h"</p><p>  using namespace std;</p><p>  int EnterChoice();</p><p>  void Init();

80、</p><p>  void Add();</p><p>  void Display();</p><p>  void DisplayOne(Student*);</p><p>  void SortNo();</p><

81、;p>  void Save (); </p><p>  int CheckNo(char *);</p><p>  void PrintTitle();</p><p>  void GetData(Student*);</p><p>  void Update();

82、</p><p>  void Delete();</p><p>  void Query();</p><p>  void SortScore();</p><p><b>  enum </b></p><p>  Choices

83、{ADD=1,UPDATE,DELETE,QUERY,DISPLAY,SORTNO,SORTSCORE,END};</p><p>  const int MaxNum=100;</p><p>  int CurNum;</p><p>  Student student[MaxNum];</p><p> 

84、 void main()</p><p><b>  {</b></p><p><b>  Init();</b></p><p>  int choice;</p><p>  while((choice=EnterChoice())!=END)</p><p><

85、b>  {</b></p><p>  switch(choice){</p><p><b>  case ADD:</b></p><p><b>  Add();</b></p><p><b>  break;</b></p><p

86、>  case UPDATE:</p><p><b>  Update();</b></p><p><b>  break;</b></p><p>  case DELETE:</p><p><b>  Delete();</b></p><p

87、><b>  break;</b></p><p>  case QUERY:</p><p><b>  Query();</b></p><p><b>  break;</b></p><p>  case DISPLAY:</p><p>

88、  Display();</p><p><b>  break;</b></p><p>  case SORTNO:</p><p><b>  SortNo();</b></p><p><b>  break;</b></p><p>  cas

89、e SORTSCORE:</p><p>  SortScore();</p><p><b>  break;</b></p><p><b>  default:</b></p><p>  cerr<<"Incorrect choice\n";}</p&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論