c++課程設計報告(學生學籍管理系統(tǒng))_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  C++課程設計</b></p><p><b>  實驗報告</b></p><p>  課題名稱:學生學籍管理系統(tǒng)</p><p><b>  班 級:</b></p><p>  學 院:資源與安全工程學院</p>&

2、lt;p><b>  指導老師:</b></p><p><b>  姓 名:</b></p><p><b>  第1章 概述</b></p><p>  1.1 系統(tǒng)實現(xiàn)的目標 </p><p><b>  課程設計的任務:</b><

3、;/p><p>  制作一個小型的學生學籍管理系統(tǒng),要求制作一個菜單,實現(xiàn)數(shù)據(jù)的錄入,數(shù)據(jù)的顯示,數(shù)據(jù)查找,數(shù)據(jù)的刪除,數(shù)據(jù)的保存,數(shù)據(jù)的修改,系統(tǒng)的退出。系統(tǒng)的設計要求用到C++面向?qū)ο蟮某绦蛟O計,要求用到類來實現(xiàn),同時每一個功能用到一個函數(shù)。</p><p><b>  基本功能:</b></p><p>  學生基本信息(學號,姓名,性別,班

4、級,聯(lián)系方式,出生日期)</p><p><b>  擴展功能:</b></p><p>  學生數(shù)據(jù)的添加、修改、與刪除</p><p>  學生數(shù)據(jù)的讀取與存儲</p><p><b>  系統(tǒng)特點:</b></p><p>  系統(tǒng)數(shù)據(jù)的錄入為手工錄入;系統(tǒng)統(tǒng)計學生的基

5、本信息較全面,包括學號,姓名,學號,姓名,性別,班級,聯(lián)系方式,出生日期;程序中查找運用了兩種查找方式即班級查找和姓名查找。</p><p>  1.2 系統(tǒng)實現(xiàn)方案</p><p>  第一步:分析題目,建立類并派生出它的子類,畫出類圖。 </p><p>  第二步:畫出流程,根據(jù)流程圖編寫程序清單 </p><p>  第三步:上機調(diào)試

6、程序(使用單步調(diào)試,設置斷點、分塊調(diào)試的方法)。 </p><p>  第五步:及時整理資料,撰寫課程設計報告中有關(guān)這個題目的內(nèi)容。 </p><p><b>  第2章 系統(tǒng)分析</b></p><p><b>  2.1 調(diào)查</b></p><p>  程序?qū)W生學籍的數(shù)據(jù)處理要求</

7、p><p>  能夠輸入并瀏覽學生的基本信息;</p><p>  能夠?qū)崿F(xiàn)對學生信息的查詢和修改;;</p><p>  能夠?qū)W生的信息進行保存;</p><p><b>  現(xiàn)行的系統(tǒng)功能:</b></p><p>  資料維護:系統(tǒng)維護包括對各學生信息的錄入操作。</p><

8、;p>  資料維護:對數(shù)據(jù)表中的信息進行瀏覽。</p><p>  系統(tǒng)查詢:可以對不同班級的學生進行信息查詢。</p><p><b>  2.2現(xiàn)行系統(tǒng)分析</b></p><p>  現(xiàn)行系統(tǒng)組織結(jié)構(gòu)圖:</p><p><b>  第3章 系統(tǒng)設計</b></p><

9、;p>  3.1 系統(tǒng)功能設計</p><p><b>  系統(tǒng)功能結(jié)構(gòu)圖:</b></p><p><b>  3.2 類設計</b></p><p>  類:student </p><p><b>  數(shù)據(jù)成員</b></p><p>  學

10、號,姓名,性別,班級,聯(lián)系方式,出生日期</p><p><b>  類:school</b></p><p><b>  成員函數(shù)</b></p><p>  錄入函數(shù)Input():輸入學生信息;</p><p>  查詢函數(shù)found():按學號或姓名查找學生的信息;</p>&

11、lt;p>  修改函數(shù)mend():按學號或姓名修改學生的信息;</p><p>  刪除函數(shù)del():刪除指定學號學生記錄;</p><p>  輸出函數(shù)show():輸出班級所有學生信息;</p><p><b>  UML圖:</b></p><p>  3.3 輸入輸出的設計</p><

12、;p><b>  1.界面的設計</b></p><p><b>  ①、界面設計</b></p><p>  程序運行后會出現(xiàn)一個簡捷的窗口,便于用戶查詢數(shù)據(jù)。</p><p><b>  ②、功能設計</b></p><p>  通過主窗體調(diào)用其他窗體,具體實現(xiàn)可以參

13、照系統(tǒng)分析相關(guān)內(nèi)容。應用系統(tǒng)主控界面包括學生信息錄入,查找等功能模塊。學生信息錄入功能完成學生信息的輸入。記錄查詢功能可以對數(shù)據(jù)各分類的記錄進行查詢。</p><p><b>  2.數(shù)據(jù)輸出設計</b></p><p><b>  系統(tǒng)主界面:</b></p><p><b>  錄入界面:</b>

14、</p><p><b>  顯示界面:</b></p><p><b>  查找界面:</b></p><p><b>  1.按班級查找:</b></p><p><b>  2.按姓名查找:</b></p><p><b

15、>  刪除界面:</b></p><p><b>  修改界面:</b></p><p><b>  按班級修改</b></p><p><b>  按姓名修改</b></p><p><b>  第4章 系統(tǒng)實現(xiàn)</b></p&g

16、t;<p><b>  1.代碼</b></p><p>  #include<iostream></p><p>  #include<string></p><p>  #include<fstream></p><p>  #include<iomanip&g

17、t; </p><p>  using namespace std;</p><p>  class student </p><p><b>  {</b></p><p>  protected: </p

18、><p><b>  int num;</b></p><p>  char name[20];</p><p>  char sex[6];</p><p>  char Class[20];</p><p>  char birth[20];</p><p>  char

19、tel[10];</p><p>  public: </p><p>  student *next; </p><p>  student(){ } </p><p>  ~student(){ }

20、 </p><p>  char* getname(){ return name;} </p><p>  char* getClass(){ return Class;}</p><p>  void input()</p><p><b>  {</b>

21、;</p><p><b>  int e=1;</b></p><p>  cout<<"\t\t\t按提示輸入:"<<endl;</p><p>  cout<<"\t\t輸入學號: ";</p><p><b>  cin>

22、>num;</b></p><p>  cout<<"\t\t輸入姓名: ";</p><p>  cin>>name;</p><p><b>  do</b></p><p><b>  {</b></p><p&

23、gt;  cout<<"\t\t輸入性別: ";</p><p><b>  cin>>sex;</b></p><p>  if(strcmp(sex,"男")==0 || strcmp(sex,"女")==0)</p><p><b>  {<

24、;/b></p><p>  cout<<"\t\t輸入出生日期: ";</p><p>  cin>>birth;</p><p>  cout<<"\t\t輸入聯(lián)系電話: ";</p><p><b>  cin>>tel;</b

25、></p><p>  cout<<"\t\t輸入班級: ";</p><p>  cin>>Class;</p><p><b>  e=0;</b></p><p><b>  }</b></p><p><b>

26、;  else</b></p><p><b>  {</b></p><p>  cout<<"\t\t\t無此類型性別!重新輸入!"<<endl;</p><p><b>  e=1;</b></p><p><b>  }<

27、;/b></p><p>  }while(e);</p><p><b>  return ;</b></p><p><b>  }</b></p><p>  void input(ifstream & is) </p><p><b>  {&

28、lt;/b></p><p>  is>>num>>name>>sex>>birth>>tel>>Class;</p><p>  is.get(); </p><p><b>  }</b></p><p>  void output()&l

29、t;/p><p><b>  {</b></p><p>  cout<<" 學生基本信息如下:"<<endl;</p><p>  cout<<" 學號:"<<num</p><p>  <<" 姓名:"

30、<<name</p><p>  <<" 性別:"<<sex</p><p>  <<" 出生日期:"<<birth</p><p>  <<" 聯(lián)系電話:"<<tel<<endl</p><

31、p>  <<" 班級:"<<Class<<endl<<endl;</p><p><b>  }</b></p><p>  void output(ofstream & os) </p><p><b>  {</b&

32、gt;</p><p>  os<<setw(20)<<"學號:"<<num</p><p>  <<setw(20)<<"姓名:"<<name</p><p>  <<setw(20)<<"性別:"<&l

33、t;sex</p><p>  <<setw(20)<<"出生日期:"<<birth</p><p>  <<setw(20)<<"聯(lián)系電話:"<<tel</p><p>  <<setw(20)<<"班級:"&

34、lt;<Class<<endl;</p><p><b>  }</b></p><p><b>  };</b></p><p>  class school </p><p><b>  {</b><

35、;/p><p>  public: </p><p>  school(){ head=new student; head->next=NULL; key=0; }</p><p>  ~school(){ delete head; } </p><p

36、>  void input();</p><p>  void mend();</p><p>  void del();</p><p>  int find(student **p,char *pm="^^",char *pn="^");</p><p>  void found();<

37、/p><p>  void show();</p><p>  void save();</p><p>  void begin();</p><p>  void clear();</p><p>  char mainmenu();</p><p>  int getkey(){ return

38、 key;}</p><p>  void setkey(int k){ key=k; }</p><p>  private: </p><p>  student *head; </p><p><b>  int key;<

39、;/b></p><p><b>  };</b></p><p><b>  //錄入函數(shù)</b></p><p>  void school::input()</p><p><b>  {</b></p><p>  student *p,*

40、p2=NULL;</p><p>  p=head; </p><p><b>  int n=1;</b></p><p>  while(p->next)</p><p>  p=p->next;</p><p><b&

41、gt;  while(n)</b></p><p><b>  {</b></p><p>  p2=new student;</p><p>  p2->input();</p><p>  p->next=p2;</p><p>  p2->next=NULL;&

42、lt;/p><p>  p=p->next; </p><p>  school::setkey(1);</p><p>  cout<<"\t\t\t按1繼續(xù),按0返回 : ";</p><p><b>  cin>>n;</b>

43、</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //子查找函數(shù)</b></p><p>  int school::find(student **p1,char *pm,char *pn)</p>&l

44、t;p>  { student *p; p=head;</p><p>  while(p->next)</p><p><b>  {</b></p><p><b>  (*p1)=p;</b></p><p>  if( !strcmp( (p->next)->get

45、Class(),pm )||!strcmp( (p->next)->getname(),pn ) )</p><p>  return 1; p=p->next;</p><p><b>  }</b></p><p>  return 0; }</p><p><b>  //查找函數(shù)

46、</b></p><p>  void school::found()</p><p><b>  {</b></p><p>  student *p;</p><p><b>  int n=1;</b></p><p>  char Class[20]=&q

47、uot;^^";</p><p>  char name[20]="^";</p><p><b>  do</b></p><p><b>  {</b></p><p>  cout<<"\t\t1:按班級查找,2:按姓名查找,3:退出本菜單

48、";</p><p><b>  cin>>n;</b></p><p>  }while(n<1||n>3);</p><p><b>  if(n==1)</b></p><p><b>  {</b></p><p&g

49、t;  cout<<"\t\t\t輸入班級: ";</p><p>  cin>>Class;</p><p><b>  }</b></p><p>  else if(n==2)</p><p><b>  {</b></p><p

50、>  cout<<"\t\t\t輸入姓名: ";</p><p>  cin>>name;</p><p><b>  }</b></p><p>  else if(n==3)</p><p><b>  {</b></p><

51、p><b>  return;</b></p><p><b>  }</b></p><p>  if(!find(&p,Class,name) )</p><p><b>  {</b></p><p>  cout<<"\t\t找不到你

52、要查找的內(nèi)容!"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p>  (p->next)->output();</p><p><b>  }</b></p>

53、<p><b>  //刪除函數(shù)</b></p><p>  void school::del()</p><p><b>  {</b></p><p>  student *p,*p2;</p><p>  char Class[20]="^^";</p&

54、gt;<p>  char name[20]="^";</p><p>  cout<<"\t\t\t輸入姓名: ";</p><p>  cin>>name;</p><p>  if( !find(&p,Class,name) )</p><p><

55、;b>  {</b></p><p>  cout<<"\t\t找不到你要刪除的內(nèi)容!"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p>  (p->next

56、)->output();</p><p>  p2=p->next;</p><p>  p->next=p2->next;</p><p>  delete p2;</p><p>  school::setkey(1);</p><p><b>  }</b></

57、p><p><b>  //顯示函數(shù)</b></p><p>  void school::show()</p><p><b>  {</b></p><p>  student *p;</p><p><b>  p=head;</b></p>

58、;<p>  while(p->next)</p><p><b>  {</b></p><p>  (p->next)->output();</p><p>  p=p->next;</p><p><b>  }</b></p><p&

59、gt;<b>  }</b></p><p><b>  //修改函數(shù)</b></p><p>  void school::mend()</p><p><b>  {</b></p><p>  student *p;</p><p><b&g

60、t;  int n=1;</b></p><p>  char Class[20]="^^";</p><p>  char name[20]="^";</p><p><b>  do</b></p><p><b>  {</b></p&

61、gt;<p>  cout<<"\t\t1:按班級修改,2:按姓名修改: ";</p><p><b>  cin>>n;</b></p><p>  }while(n<1||n>2); //不符合要求的輸入要重新輸入</p><p><b>  if(n==1)&

62、lt;/b></p><p><b>  {</b></p><p>  cout<<"\t\t\t輸入班級: "; //輸入要修改的班級</p><p>  cin>>Class;</p><p><b>  }</b></p>&l

63、t;p><b>  if(n==2)</b></p><p><b>  {</b></p><p>  cout<<"\t\t\t輸入姓名: "; //輸入要修改的姓名</p><p>  cin>>name;</p><p><b> 

64、 }</b></p><p>  if( !find(&p,Class,name) ) //結(jié)果未找到</p><p><b>  {</b></p><p>  cout<<"\t\t找不到你要修改的內(nèi)容!"<<endl;</p><p><b>

65、;  return;</b></p><p><b>  }</b></p><p>  (p->next)->output();//輸出修改前的信息</p><p>  (p->next)->input();//輸入要修改的信息</p><p>  school::setkey(1)

66、;</p><p><b>  }</b></p><p><b>  //保存函數(shù)</b></p><p>  void school::save()</p><p><b>  {</b></p><p>  student *p;</p>

67、;<p><b>  p=head;</b></p><p>  ofstream os("student.txt",ios::out);</p><p>  if (school::getkey()==1)</p><p><b>  {</b></p><p>

68、  while(p->next)</p><p><b>  {</b></p><p>  (p->next)->output(os);</p><p>  p=p->next;</p><p><b>  }</b></p><p><b&g

69、t;  }</b></p><p>  cout<<"\t\t\t\t文件已保存! "<<endl;</p><p>  school::setkey(0);</p><p><b>  }</b></p><p><b>  //初始化函數(shù)</b&

70、gt;</p><p>  void school::begin()</p><p><b>  {</b></p><p>  student *p,*p2;</p><p><b>  p=head;</b></p><p><b>  clear();<

71、/b></p><p><b>  long t;</b></p><p>  ifstream is("student.txt",ios::in); </p><p><b>  if(!is)</b></p><p><b>  {</b><

72、/p><p>  ofstream os("student.txt",ios::out);</p><p>  os.close();</p><p><b>  return ;</b></p><p><b>  }</b></p><p>  int n

73、um=-1;</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  num=-1;</b></p><p>  t=is.tellg();</p><p><b>  is&g

74、t;>num;</b></p><p>  is.seekg(t);</p><p><b>  if(num<0)</b></p><p><b>  { </b></p><p>  is.close();</p><p><b> 

75、 return;</b></p><p><b>  }</b></p><p>  p2=new student;</p><p>  p2->input(is);</p><p>  p->next=p2;</p><p>  p2->next=NULL;<

76、/p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //清空函數(shù) </b></p><p>  void school::clear()</p>

77、<p><b>  {</b></p><p>  student *p,*p2;</p><p>  p=head->next;</p><p>  while( p )</p><p><b>  {</b></p><p><b>  p2

78、=p;</b></p><p>  p=p->next;</p><p>  delete p2;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //主選菜單函數(shù)</b>&l

79、t;/p><p>  char school::mainmenu()</p><p><b>  {</b></p><p>  char n[6];</p><p>  cout<<"\n\n 歡迎進入學籍管理系統(tǒng) "<<

80、endl<<endl</p><p>  <<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl</p><p>  <<" * * * * * * * * * * * * * * * * * * * * * * * *

81、 * * * *"<<endl</p><p>  <<" * * 1: 錄入學生信息 * *"<<endl</p><p>  <<" * * 2: 顯示學生信息

82、 * *"<<endl</p><p>  <<" * * 3: 查找學生信息 * *"<<endl</p><p>  <<" * * 4: 刪除學生信息

83、 * *"<<endl</p><p>  <<" * * 5: 修改學生信息 * *"<<endl</p><p>  <<" * * 6: 保存學生信息 *

84、 *"<<endl</p><p>  <<" * * 0: 退出系統(tǒng) * *"<<endl</p><p>  <<" * * * * * * * * * * * * * * * * * * * * * * * *

85、 * * * *"<<endl</p><p>  <<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl</p><p>  <<" 請選擇:";<

86、;/p><p><b>  cin>>n;</b></p><p>  return n[0];</p><p><b>  }</b></p><p><b>  //主函數(shù)</b></p><p>  void main()</p>

87、;<p><b>  {</b></p><p>  school pp;</p><p><b>  int k=1;</b></p><p><b>  char n;</b></p><p>  pp.begin();</p><p>

88、;  while(k==1)</p><p><b>  {</b></p><p>  n=pp.mainmenu();</p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case &#

89、39;1':pp.input(); break;</p><p>  case '2':pp.show(); break;</p><p>  case '3':pp.found(); break;</p><p>  case '4':pp.del(); break;</p><p>

90、  case '5':pp.mend(); break;</p><p>  case '6':pp.save(); break;</p><p><b>  case '0':</b></p><p>  if(pp.getkey()==1)</p><p><b&

91、gt;  {</b></p><p>  cout<<"\t\t\t是否保存? 1 : 保存 0:不保存 : ";</p><p><b>  cin>>k;</b></p><p><b>  if(k==1)</b></p><p>  p

92、p.save();</p><p><b>  }</b></p><p>  pp.clear();</p><p><b>  k=0;</b></p><p><b>  break; }</b></p><p><b>  }</

93、b></p><p><b>  }</b></p><p><b>  2.系統(tǒng)運行的結(jié)果</b></p><p><b>  結(jié)論</b></p><p>  本程序基本完成了題目要求的功能。</p><p>  程序在顯示學生信息時輸入過于繁

94、雜,不夠清晰明朗,若顯示成類似表格的形式就好了。解決辦法將輸出函數(shù)的輸出格式改一下,難點是計算輸出點的控制。</p><p><b>  后記:</b></p><p>  得知要做C++課設,心里很著急。最后一周就要做完很有壓力,既要追求速度,也要保證質(zhì)量,而且我基礎比較薄弱。不過還好,提早發(fā)了課設題目也分了組,這樣就能提前結(jié)束戰(zhàn)斗。當然,為了保證些程序時一氣呵成,

95、盡可能的少犯錯誤,所以我打算去圖書館借一本關(guān)于C++課設相關(guān)的書籍。這個竟爭的壓力還有點大,太多人去借了,幾乎都要借完了,最后勉強借到一本還算一般的書。我們粗略的看了一下相關(guān)知識后,然后一起開始討論著手編寫程序的相關(guān)事宜。然后根據(jù)所選課設題目中老師給的相關(guān)提示,我們在進行了一番激烈的討論過后,確定了編寫程序的一個基本思路,對程序畫了一個大概的結(jié)構(gòu)框架圖。</p><p>  有了大概的思路后,我們根據(jù)事先畫好的結(jié)

96、構(gòu)框圖開始正式著手編寫程序。我們采取各自編寫然后匯總的模式進行。經(jīng)過幾天的自力更生、艱苦奮斗,我們都已將程序?qū)懲辏o接著進行程序的匯總討論。發(fā)現(xiàn)我們編寫的程序的算法部分不相同,不過卻有異曲同工之妙,不同的方法,相同的結(jié)果。調(diào)試的過程是最煩人的了,各種問題都不斷的出現(xiàn),就像什么都沒學一樣,自己都不知道錯誤咋就那么多呢。逗號呀分號呀,大小括號呀,這些都是一些基本的小錯誤,由于我們的馬虎大意,數(shù)不勝數(shù),不計其數(shù)呀!弄得自己懷疑自己到底是怎么學

97、得,做事時怎么做得?有時這里的一點小錯誤弄好了吧,結(jié)果馬上出現(xiàn)更多的其他錯誤。頓時顯得好蒼白無力,真想早早解放,趕快回家去。于是,我們調(diào)動了手中一切可以利用的資源,靜下心來,慢慢的做,堅信明天會更好。比較高興的事,在經(jīng)過幾番的探索后,事實入我們所愿。當把程序做出來后,如釋重負呀,心中特別的高興,對一些知識點有了一定的復習。不過,還是有一些小遺憾,那就是我做完的部分錯誤最多而且做完時時候別人基本上都做完了,讓我感到很有壓力呀,看來還大大的

98、有待提升呀。接下來就是完善課程設計的相關(guān)要求和準備答辯。一想到老師和我們比較親近,</p><p>  通過完成本次C++程序設計的任務,使我熟練和掌握了這學期所學的有關(guān)visual c++中的一些主要知識點和應用點,如類的定義,類的實現(xiàn),對象的定義,類的繼承等等??梢运鶎W有所學,所有所用,不至于自己所學知識由于沒有經(jīng)歷可用過程,而放棄對它的興趣。我們遇到的問題這些問題,又都是課本上很少提到的、更深一層的知識領域

99、和應用領域。這些問題,并不是我們平時只靠課本,就可以輕易解決的。所以,鍛煉了我們面對難題,自己思索,自己探索,自己查資料發(fā)現(xiàn)問題、解決問題的獨斷能力。更使我加強了靈活應用理論知識的能力。 當然,此次任務的完成,也體現(xiàn)出同學之間的團結(jié)精神。所遇種種難以解決的問題,大家都會把它當作共同遇到的問題,在一起共同探討,共同發(fā)揮自己所學和所知,投入式的互相幫助和解決困難。</p><p><b>  參考文獻<

溫馨提示

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

評論

0/150

提交評論