同學(xué)錄系統(tǒng)vc++課程設(shè)計_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  選題2名稱: 同學(xué)錄系統(tǒng)</p><p><b>  目 錄</b></p><p><b>  課題目標(biāo)</b></p><p>  1.1 程序功能簡介</p><p>  1.2 課程設(shè)計要求</p><p>  1.3 評定難易級別</p

2、><p><b>  具體實現(xiàn)</b></p><p>  2.1 程序總體方案</p><p><b>  2.1.1開發(fā)平臺</b></p><p>  2.1.2程序結(jié)構(gòu)或流程圖</p><p>  2.2 關(guān)鍵代碼及注釋</p><p><

3、;b>  程序截圖</b></p><p><b>  調(diào)試報告</b></p><p> ?。ㄔ谠O(shè)計和實現(xiàn)過程所遇到的問題和解決,請如實填寫)…</p><p><b>  總體小結(jié)</b></p><p>  (在整個設(shè)計過程中的心得體會)</p><p&g

4、t;<b>  分工介紹</b></p><p> ?。ㄊ仟毩⑼瓿蛇€是合作完成,若為合作完成,說明合作者以及之間的具體分工)…</p><p><b>  一、課題目標(biāo)</b></p><p>  1.1 程序功能簡介</p><p>  此程序是一個簡單的同學(xué)錄系統(tǒng),具有導(dǎo)入同學(xué)信息,存儲,顯示、

5、新增、刪除、查詢、修改同學(xué)信息等功能,最主要的是,它是用雙向鏈表實現(xiàn)的,所以新增和刪除的效率非常的高。</p><p>  其菜單分為:顯示所有同學(xué)錄信息、新增一個同學(xué)錄信息、刪除一個同學(xué)錄信息、查詢系統(tǒng)、修改同學(xué)錄信息,尋求幫助等。</p><p>  1.2 課程設(shè)計要求</p><p>  用雙向鏈表完成一個同學(xué)錄系統(tǒng)</p><p>

6、  實現(xiàn)同學(xué)錄所該有的功能,并方便用戶的使用!</p><p>  1.3 評定難易級別</p><p><b>  A組</b></p><p><b>  二、具體實現(xiàn)</b></p><p>  2.1 程序總體方案</p><p><b>  2.1.1開

7、發(fā)平臺</b></p><p>  操作系統(tǒng):Windows 7</p><p>  開發(fā)工具:visual studio 2010</p><p>  2.1.2程序結(jié)構(gòu)或流程圖</p><p><b>  主函數(shù)的流程圖:</b></p><p>  2.2 所做改進 </

8、p><p><b>  2.2.1改進一</b></p><p>  2.2.1.1 改進方案</p><p>  基本上這個程序都是自己寫的,改進也只是對原有要求的添加而已。</p><p>  先說說這個程序怎么實現(xiàn)所有功能的吧。</p><p>  2.2.1.2 具體實現(xiàn)</p>

9、<p>  進入程序,首先是讀取txt文件的信息,然后顯示的是菜單。再然后一目了然的有各種功能。</p><p>  總體是用雙向鏈表做的。</p><p>  新增結(jié)點信息:即添加一個鏈表結(jié)點信息。</p><p>  顯示所有信息:是先根據(jù)學(xué)號排序,然后從頭至尾分屏顯示所有信息,鏈表依次讀取。</p><p>  刪除操作:

10、 即鏈表操作,刪除一個結(jié)點.</p><p>  查詢操作: 按要求進行各種情況查詢,總體思想是線性的比較,如果有匹配的字符串就輸出(這里面用的是string.find函數(shù))。</p><p>  修改同學(xué)錄: 先根據(jù)查找操作找到這個信息,再修改當(dāng)前結(jié)點信息</p><p>  尋求幫助: 作為一些運用該程序的說明而存在。可以對用戶一些較常見的疑問

11、做出回答。</p><p>  退出程序: 退出前會保存所有的信息至txt文件。</p><p><b>  2.2.2改進二</b></p><p>  2.2.2.1 改進方案</p><p>  為了使我的查詢更完善,我的程序做到了部分字符串匹配的查詢方式,即比如在輸入姓名查詢的時候,如果輸入的是姓名的姓或者

12、名,那么與之匹配的所有信息都會顯示,而不是顯示結(jié)果不存在。</p><p>  同樣的,還可以根據(jù)自己一開始對該同學(xué)的評價做查詢。</p><p>  另外,我設(shè)置了幫助選項,可以為用戶解答很多常見的疑問。可以方便用戶。</p><p>  2.2.2.2 具體實現(xiàn)</p><p>  運用STL string類里面的find( )函數(shù);把我

13、的成員全都定義成string類的,最后再讓用戶輸入所需查找的字符串(也是一個string類),然后從到之為用find函數(shù)查,如njust[i].name.find(temp)!=string::npos;則加入到輸出。</p><p>  在所有的查詢方式里使用相同的方法,即可實現(xiàn),所有的查詢都帶有子串查找功能。</p><p><b>  STL確實方便</b>&l

14、t;/p><p><b>  三、程序運行截圖</b></p><p><b>  進入程序:</b></p><p><b>  進入菜單:</b></p><p><b>  分屏顯示</b></p><p><b>  

15、查詢界面:</b></p><p><b>  修改同學(xué)錄信息:</b></p><p><b>  幫助界面:</b></p><p><b>  四、調(diào)試報告</b></p><p>  調(diào)試還算順利,只是一開始容錯方面做得比較簡陋。后來改好了。再又就是一開始功

16、能比較少,后來慢慢一步步完善,變成現(xiàn)在這樣,還算可以用用的程序。</p><p><b>  五、總體小結(jié)</b></p><p>  經(jīng)過這么多天的編程,我了解到了要想完成一個比較大的程序,需要先根據(jù)程序的要求,確定設(shè)計思路,畫出流程圖,把想要用到的函數(shù)都寫出其函數(shù)原型說明。然后根據(jù)自己已經(jīng)寫好的函數(shù)原型說明。一步步把函數(shù)都實現(xiàn)。即分別寫出每一個功能所需要的具體的函

17、數(shù)。</p><p>  這樣,有一個清晰的思路,就比較有調(diào)理,有了調(diào)理,也不容易忘記一些想要實現(xiàn)的東西。然后,才會有一個層次分明,客戶友好的程序。</p><p>  另外,類的封裝和雙向鏈表弄起來還是比較繁瑣的。但是,把問題一個個搞清楚以后,問題就自然而然的被簡化了。</p><p>  另外編程序還要注重細(xì)節(jié),任意一個看似細(xì)微的的錯誤,都可能會引起一連串的er

18、ror,所以每次從鍵盤讀入數(shù)據(jù)或者數(shù)據(jù)的處理的環(huán)節(jié)都要注意合法性的檢查。</p><p>  最后不得不提的是,我加入ACM隊,在暑假做了大量的題目聯(lián)系,所以在調(diào)試方面沒有出現(xiàn)什么打問題,都算是比較輕松的過關(guān)了。熟練的寫程序,對我們著實是非常重要的!</p><p><b>  六、分工介紹</b></p><p><b>  獨立完

19、成。</b></p><p>  #pragma once</p><p>  #include"student.h"</p><p>  struct node //鏈表node結(jié)點</p><p><b>  {</b></p><

20、;p>  student &stu;</p><p>  node *next;</p><p>  node *prev;</p><p>  node(student & s)</p><p><b>  :stu(s)</b></p><p><b>  {&

21、lt;/b></p><p><b>  }</b></p><p><b>  };</b></p><p>  class guanli</p><p><b>  {</b></p><p><b>  public:</b&

22、gt;</p><p>  node * head_ptr;</p><p>  node *tail_ptr;</p><p>  node * current_ptr;</p><p>  guanli(void);</p><p>  ~guanli(void);</p><p>  vo

23、id UserChoice(int);//用戶選擇</p><p>  void InsertRecord();//插入信息</p><p>  void InsertNode(node *);//插入新結(jié)點</p><p>  void InsertNodeAtHead(node*);//插入頭結(jié)點</p><p>  void Inser

24、tNodeAtEnd(node*);//插入尾結(jié)點</p><p>  void ShowList();//顯示所有信息</p><p>  void ShowSortedList1();//顯示排序后鏈表1</p><p>  void ShowSortedList2();//顯示排序后鏈表2</p><p>  void DeleteRe

25、cord();//刪除某條記錄</p><p>  void DeleteNodeAtHead();//刪除頭結(jié)點</p><p>  void DeleteNodeAtEnd();//刪除尾結(jié)點</p><p>  void DeleteNodeAtMiddle();//在中間刪除</p><p>  void DeleteNode();/

26、/刪除某個節(jié)點</p><p>  void ChangeMes();//修改信息函數(shù)</p><p>  bool VerifyDelete();//確認(rèn)刪除</p><p>  void DeleteList();//釋放鏈表,保存至文件</p><p>  void SearchChoice();//選擇查找方式</p>

27、<p>  void ASearchByName();//A方式中的名字查找</p><p>  void ASearchByStuNum();//A方式中的學(xué)號查找</p><p>  void ASearchByDormNum();//A方式中的整個宿舍查找</p><p>  void BSearchByStuNum();//B方式,按學(xué)號顯示個人詳

28、細(xì)信息</p><p>  void LoadFile();//讀取文件</p><p>  void SaveFile();//存至文件</p><p>  void Help();//幫助提示函數(shù)</p><p>  void UserInput();//用戶輸入備用</p><p><b>  };&l

29、t;/b></p><p>  #include "guanli.h"</p><p>  #include<iostream></p><p>  using namespace std;</p><p>  guanli::guanli(void)</p><p><b&

30、gt;  {</b></p><p><b>  }</b></p><p>  guanli::~guanli(void)</p><p><b>  {</b></p><p><b>  }</b></p><p>  void gua

31、nli::UserChoice(int t)</p><p><b>  {</b></p><p><b>  switch(t)</b></p><p><b>  {</b></p><p><b>  case 0:</b></p>

32、<p>  InsertRecord();//添加結(jié)點(OK)</p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  ShowList();//顯示所有結(jié)點信息(OK)</p><p><b>  break;&

33、lt;/b></p><p><b>  case 2:</b></p><p>  DeleteRecord();//刪除記錄 (OK)</p><p><b>  break;</b></p><p><b>  case 3:</b></p><

34、p>  SearchChoice();//查找記錄(OK)</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  ChangeMes();</p><p><b>  break;</b></p&g

35、t;<p><b>  case 5:</b></p><p>  Help();//幫助文件</p><p><b>  break;</b></p><p><b>  case 6:</b></p><p>  SaveFile();</p>

36、<p>  if(head_ptr!=NULL)</p><p>  DeleteList();</p><p><b>  break;</b></p><p><b>  default :</b></p><p>  cout<<"選擇無效,請重新輸入: &qu

37、ot;;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void guanli::InsertRecord()</p><p><b>  

38、{</b></p><p>  char tt[15];</p><p>  char temp_memory[300];</p><p>  student *s=new student;</p><p>  node * new_ptr=new node(*s);</p><p>  if(new_pt

39、r!=NULL)</p><p><b>  {</b></p><p>  system("cls");</p><p>  cout<<"同學(xué)姓名: ";</p><p>  cin>>new_ptr->stu.fri_name;</p>

40、;<p>  cout<<"郵箱:";</p><p>  cin>>new_ptr->stu.e_mail;</p><p>  cout<<"性別:";</p><p>  cin>>new_ptr->stu.sex;</p><

41、p>  cout<<"電話號碼:";</p><p>  cin>>new_ptr->stu.phone_num;</p><p>  cout<<"珍貴回憶有(請輸入一句話,不含空格,可用逗號分隔):";</p><p>  cin>>new_ptr->stu

42、.memory;</p><p>  InsertNode(new_ptr);</p><p>  cin.ignore(20,'\n');</p><p>  cout<<"是否繼續(xù)添加?Y/N"<<endl;</p><p>  char te[30];</p>

43、<p>  cin.getline(te,30);</p><p>  if(!strcmp(te,"Y")||!strcmp(te,"y"))InsertRecord();</p><p><b>  }</b></p><p><b>  else</b></p

44、><p>  cout<<"申請內(nèi)存空間失敗,不能創(chuàng)建新結(jié)點??!\n";</p><p>  //system("cls");</p><p><b>  }</b></p><p>  void guanli::InsertNode(node *new_ptr)<

45、/p><p><b>  {</b></p><p>  //system("cls");</p><p>  node * temp_ptr;</p><p><b>  //若鏈表為空</b></p><p>  if(head_ptr==NULL)<

46、;/p><p><b>  {</b></p><p>  new_ptr->next=new_ptr;</p><p>  new_ptr->prev=new_ptr;</p><p>  head_ptr=new_ptr;</p><p>  tail_ptr=new_ptr;<

47、/p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  //只有一個節(jié)點</b></p><p>  if(head_ptr->next==head_ptr)</p><p><b&g

48、t;  {</b></p><p>  if(new_ptr->stu.fri_name<head_ptr->stu.fri_name)</p><p>  InsertNodeAtHead(new_ptr);</p><p><b>  else </b></p><p>  Insert

49、NodeAtEnd(new_ptr);</p><p><b>  return ;</b></p><p><b>  }</b></p><p>  //多個節(jié)點,自動按姓名排序插入</p><p>  if(head_ptr->next!=head_ptr)</p><

50、;p><b>  {</b></p><p>  current_ptr=head_ptr->next;</p><p>  while((new_ptr->stu.fri_name>current_ptr->stu.fri_name)//比較姓名進行排序</p><p>  &&(current_

51、ptr!=head_ptr))//并且當(dāng)前結(jié)點不是頭結(jié)點(雙向鏈表的頭尾是相連的)</p><p>  current_ptr=current_ptr->next;//繼續(xù)向后拓展結(jié)點</p><p>  if(current_ptr==head_ptr)</p><p>  InsertNodeAtEnd(new_ptr);//插入在鏈表尾</p>

52、;<p><b>  else</b></p><p><b>  {</b></p><p>  temp_ptr=current_ptr->prev;//此時,插入的結(jié)點在current結(jié)點和temp結(jié)點之間</p><p>  temp_ptr->next=new_ptr;</p>

53、;<p>  new_ptr->prev=temp_ptr;</p><p>  current_ptr->prev=new_ptr;</p><p>  new_ptr->next=current_ptr;</p><p><b>  }</b></p><p><b>  }

54、</b></p><p><b>  }</b></p><p>  void guanli::InsertNodeAtEnd(node*new_ptr)</p><p><b>  {</b></p><p>  new_ptr->next=head_ptr;</p>

55、<p>  tail_ptr->next=new_ptr;</p><p>  new_ptr->prev=tail_ptr;</p><p>  head_ptr->prev=new_ptr;</p><p>  tail_ptr=new_ptr;</p><p><b>  }</b>

56、</p><p>  void guanli::InsertNodeAtHead(node *new_ptr)</p><p><b>  {</b></p><p>  new_ptr->next=head_ptr;</p><p>  new_ptr->prev=tail_ptr;</p>

57、<p>  head_ptr->prev=new_ptr;</p><p>  tail_ptr->next=new_ptr;</p><p>  tail_ptr=new_ptr;</p><p><b>  }</b></p><p>  #include "guanli.h&quo

58、t;</p><p>  #include<iostream></p><p>  #include<iomanip></p><p>  using namespace std;</p><p>  void guanli::ShowList()</p><p><b>  {<

59、;/b></p><p>  system("cls");</p><p><b>  int n;</b></p><p>  cout<<"\t\t\t下面將顯示所有同學(xué)錄信息\n\n\t\t\t請輸入每屏幕顯示學(xué)生的個數(shù)\n\n\t\t\t每顯示一屏幕暫停一次\n\n\t\t\t輸入的數(shù)不大

60、于20:\n";</p><p><b>  cin>>n;</b></p><p>  system("cls");</p><p><b>  int i;</b></p><p>  current_ptr=head_ptr;</p>&

61、lt;p>  if(current_ptr!=NULL)</p><p><b>  do</b></p><p><b>  { </b></p><p><b>  i=1;</b></p><p>  cout<<setw(14)<<&quo

62、t;姓名"<<setw(8)<<"性別"<<setw(30)<<"郵箱"<<setw(20)<<"電話號碼"<<endl<<endl;</p><p><b>  do</b></p><p><b

63、>  {</b></p><p>  cout<<setw(14)<<current_ptr->stu.fri_name<<setw(8)<<current_ptr->stu.sex;</p><p>  cout<<setw(30)<<current_ptr->stu.e_mail

64、<<setw(20)<<current_ptr->stu.phone_num<<endl;</p><p>  current_ptr=current_ptr->next;</p><p><b>  i++;</b></p><p>  }while(current_ptr!=head_ptr&

65、amp;&i<=n);</p><p>  cout<<endl<<endl;</p><p>  if(current_ptr!=head_ptr)</p><p><b>  {</b></p><p>  system("pause");</p>

66、<p>  system("cls");</p><p><b>  }</b></p><p>  else cout<<"文件結(jié)束!"<<endl;</p><p>  }while(current_ptr!=head_ptr);</p><p

67、><b>  else</b></p><p><b>  {</b></p><p>  cout<<"同學(xué)錄為空!"<<endl;</p><p><b>  }</b></p><p>  system("pau

68、se");</p><p>  system("cls");</p><p><b>  }</b></p><p>  void guanli::SearchChoice()</p><p><b>  {</b></p><p><b&

69、gt;  char n;</b></p><p>  cout<<endl<<"輸入數(shù)字鍵選擇你所要進行的操作:"<<endl<<endl;</p><p>  cout<<"\t\t\t1:姓名查詢"<<endl<<endl;</p>&l

70、t;p>  cout<<"\t\t\t2:姓名缺省查詢(姓氏,名字部分查詢)"<<endl<<endl;</p><p>  cout<<"\t\t\t3:記憶片段查詢"<<endl<<endl;</p><p>  cout<<"\t\t\t4:退出

71、查詢"<<endl<<endl;</p><p>  cout<<"輸入你的選擇:"<<endl;</p><p><b>  cin>>n;</b></p><p>  while(n!='4')</p><p&g

72、t;<b>  {</b></p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case '1':</p><p>  ASearchByStuNum();</p><

73、p><b>  break;</b></p><p><b>  case '2':</b></p><p>  ASearchByName();</p><p><b>  break;</b></p><p><b>  case '

74、3':</b></p><p>  ASearchByDormNum();</p><p><b>  break;</b></p><p><b>  default :</b></p><p>  cout<<"對不起,您輸入的查詢方式尚未做出,請重新輸

75、入: ";</p><p><b>  break;</b></p><p><b>  }</b></p><p>  cout<<"輸入0顯示菜單,輸入5退出查詢,其他任意鍵繼續(xù)查詢:"<<endl;</p><p><b> 

76、 char pp;</b></p><p><b>  cin>>pp;</b></p><p>  if(pp=='0')</p><p><b>  {</b></p><p>  cout<<endl<<"輸入數(shù)字鍵選擇

77、你所要進行的操作:"<<endl<<endl;</p><p>  cout<<"\t\t\t1:姓名查詢"<<endl<<endl;</p><p>  cout<<"\t\t\t2:姓名缺省查詢(姓氏,名字部分查詢)"<<endl<<endl

78、;</p><p>  cout<<"\t\t\t3:記憶片段查詢"<<endl<<endl;</p><p>  cout<<"\t\t\t4:退出查詢"<<endl<<endl;</p><p>  cout<<"輸入你的選擇:&

79、quot;<<endl;</p><p><b>  cin>>n;</b></p><p><b>  }</b></p><p>  else if(pp=='4')n='4';</p><p>  system("cls&qu

80、ot;);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void guanli::ASearchByStuNum()</p><p><b>  {</b></p><p>  system(&qu

81、ot;cls");</p><p>  bool nFlag=0;</p><p>  string search_str;</p><p>  current_ptr=head_ptr;</p><p>  if(current_ptr==NULL)</p><p>  cout<<"

82、;學(xué)生記錄為空"<<endl;</p><p><b>  else</b></p><p><b>  {</b></p><p>  cin.ignore(20,'\n');</p><p>  cout<<"\n輸入你要搜索的同學(xué)姓名

83、:";</p><p>  cin>>search_str;</p><p>  if(current_ptr->stu.fri_name==search_str)</p><p><b>  {</b></p><p><b>  nFlag=1;</b></p&

84、gt;<p>  cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p><p>  cout<<"\t電話:"<<current_ptr->stu.phon

85、e_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p><p>  cout<<"珍貴回憶:\n"<<current_ptr->stu.memory<<endl;</p><p><b>  }</b>

86、;</p><p><b>  else</b></p><p><b>  {</b></p><p>  current_ptr=current_ptr->next;</p><p>  while(current_ptr!=head_ptr)</p><p>&l

87、t;b>  {</b></p><p>  if(current_ptr->stu.fri_name==search_str)</p><p><b>  {</b></p><p><b>  nFlag=1;</b></p><p>  cout<<"

88、;姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p><p>  cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<

89、;<current_ptr->stu.e_mail<<endl;</p><p>  cout<<"珍貴回憶:\n"<<current_ptr->stu.memory<<endl;</p><p><b>  break;</b></p><p><b&

90、gt;  }</b></p><p>  current_ptr=current_ptr->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(!nFlag)//搜索完所有結(jié)點都沒發(fā)現(xiàn)</p><

91、p><b>  {</b></p><p>  cout<<"無記錄!"<<endl;</p><p>  system("pause");</p><p>  system("cls");</p><p><b>  

92、}</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void guanli::ASearchByName()</p><p><b>  {</b></p><p>  system

93、("cls");</p><p>  bool nFlag=0;</p><p>  string search_str;</p><p>  current_ptr=head_ptr;</p><p>  if(current_ptr==NULL)</p><p>  cout<<&

94、quot;同學(xué)錄為空"<<endl;</p><p><b>  else</b></p><p><b>  {</b></p><p>  cin.ignore(20,'\n');</p><p>  cout<<"\n輸入你要搜索的同

95、學(xué)的姓或名或其中的一部分:";</p><p>  cin>>search_str;</p><p>  if(current_ptr->stu.fri_name.find(search_str)!=string::npos)</p><p><b>  {</b></p><p>  if(

96、!nFlag)cout<<"找到記錄\n";</p><p><b>  nFlag=1;</b></p><p>  cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr-&

97、gt;stu.sex;</p><p>  cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p><p>  cout<<"珍貴回憶:\n

98、"<<current_ptr->stu.memory<<endl<<endl;</p><p><b>  }</b></p><p>  current_ptr=current_ptr->next;</p><p>  while(current_ptr!=head_ptr)</

99、p><p><b>  {</b></p><p>  if(current_ptr->stu.fri_name.find(search_str)!=string::npos)</p><p><b>  {</b></p><p>  if(!nFlag)cout<<"找到

100、記錄\n";</p><p><b>  nFlag=1;</b></p><p>  cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p><

101、p>  cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p><p>  cout<<"珍貴回憶:\n"<<current_ptr-&

102、gt;stu.memory<<endl<<endl;</p><p><b>  }</b></p><p>  current_ptr=current_ptr->next;</p><p><b>  }</b></p><p>  if(!nFlag)//搜索完所有

103、結(jié)點都沒發(fā)現(xiàn)</p><p><b>  {</b></p><p>  cout<<"無記錄!"<<endl;</p><p>  system("pause");</p><p>  system("cls");</p>

104、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void guanli::ASearchByDormNum()</p><p><b>  {</b><

105、/p><p>  system("cls");</p><p>  bool nFlag=0;</p><p>  string search_str;</p><p>  current_ptr=head_ptr;</p><p>  if(current_ptr==NULL)</p>

106、<p>  cout<<"學(xué)生記錄為空"<<endl;</p><p><b>  else</b></p><p><b>  {</b></p><p>  cin.ignore(20,'\n');</p><p>  co

107、ut<<"\n輸入你對那個同學(xué)的記憶(即你當(dāng)初輸入的一句話里面的幾個詞語):";</p><p>  cin>>search_str;</p><p>  if(current_ptr->stu.memory.find(search_str)!=string::npos)</p><p><b>  {&l

108、t;/b></p><p>  if(!nFlag)cout<<"找到記錄\n";</p><p><b>  nFlag=1;</b></p><p>  cout<<"姓名:"<<current_ptr->stu.fri_name<<&quo

109、t;\t性別:"<<current_ptr->stu.sex;</p><p>  cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p>&l

110、t;p>  cout<<"珍貴回憶:\n"<<current_ptr->stu.memory<<endl<<endl;</p><p><b>  }</b></p><p>  current_ptr=current_ptr->next;</p><p> 

111、 while(current_ptr!=head_ptr)</p><p><b>  {</b></p><p>  if(current_ptr->stu.memory.find(search_str)!=string::npos)</p><p><b>  {</b></p><p>

112、  if(!nFlag)cout<<"找到記錄\n";</p><p><b>  nFlag=1;</b></p><p>  cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_

113、ptr->stu.sex;</p><p>  cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p><p>  cout<<"珍貴

114、回憶:\n"<<current_ptr->stu.memory<<endl<<endl;</p><p><b>  }</b></p><p>  current_ptr=current_ptr->next;</p><p><b>  }</b></p&g

115、t;<p>  if(!nFlag)//搜索完所有結(jié)點都沒發(fā)現(xiàn)</p><p><b>  {</b></p><p>  cout<<"無記錄!"<<endl;</p><p>  system("pause");</p><p>  sy

116、stem("cls");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  #include "guanli.h"</p><p

117、>  #include<iostream></p><p>  #include<iomanip></p><p>  using namespace std;</p><p>  void guanli::DeleteRecord()</p><p><b>  {</b></p&g

118、t;<p>  system("cls");</p><p>  string search_string;</p><p>  node *previous_ptr=NULL;</p><p>  current_ptr=head_ptr;</p><p>  if(current_ptr==NULL)&l

119、t;/p><p><b>  {</b></p><p>  cout<<"沒有你要刪除的記錄!"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p

120、>  cin.ignore(20,'\n');</p><p>  int nFlag=0;</p><p>  bool ask=0;</p><p>  char n[30];</p><p>  cout<<"\t\t是否需要先根據(jù)查找來查看所要刪除的同學(xué)完整姓名?Y/N"<&

121、lt;endl;</p><p>  cin.getline(n,30);</p><p>  if(!strcmp(n,"y")||!strcmp(n,"Y"))SearchChoice();</p><p>  cout<<"\n輸入你要刪除的同學(xué)完整姓名:\n";</p>&

122、lt;p>  cin>>search_string;</p><p>  while((current_ptr->stu.fri_name==search_string)&&head_ptr!=NULL)</p><p><b>  {</b></p><p><b>  nFlag=1;<

123、;/b></p><p>  cout<<"\n找到記錄\n";</p><p>  cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p>&l

124、t;p>  cout<<"\t郵箱:"<<current_ptr->stu.e_mail<<"\t電話:"<<current_ptr->stu.phone_num<<endl;</p><p>  cout<<"珍貴回憶:\n"<<current_ptr

125、->stu.memory<<endl;</p><p>  if(VerifyDelete()) //向用戶詢問是否真的要刪除</p><p><b>  {</b></p><p>  DeleteNode();</p><p>  cout<<"\n記錄已刪除!\n&quo

126、t;;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cout<<"姓名為:"<<current_ptr->stu.fri_na

127、me<<"\t的記錄沒有刪除"<<endl;</p><p>  current_ptr=current_ptr->next;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  do

128、</b></p><p><b>  {</b></p><p>  if(current_ptr->stu.fri_name==search_string)</p><p><b>  {</b></p><p><b>  nFlag=1;</b><

129、/p><p>  cout<<"\n找到記錄\n";</p><p>  cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p><p>  co

130、ut<<"\t郵箱:"<<current_ptr->stu.e_mail<<"\t電話:"<<current_ptr->stu.phone_num<<endl;</p><p>  cout<<"珍貴回憶:\n"<<current_ptr->stu.me

131、mory<<endl;</p><p>  if(VerifyDelete()) //向用戶詢問是否真的要刪除</p><p><b>  {</b></p><p>  DeleteNode();</p><p>  cout<<"\n記錄已刪除!\n";</p&g

132、t;<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cout<<"姓名為:"<<current_ptr->stu.fri_name<<&

133、quot;\t的記錄沒有刪除"<<endl;</p><p><b>  }</b></p><p><b>  }</b></p><p>  current_ptr=current_ptr->next;</p><p>  }while(current_ptr!=he

134、ad_ptr||head_ptr==NULL);</p><p>  if(!nFlag)cout<<"\n沒有找到相符的記錄也沒有刪除記錄。\n";</p><p>  cin.get();</p><p>  system("cls");</p><p><b>  }<

135、/b></p><p>  void guanli::Help()</p><p><b>  {</b></p><p><b>  help:</b></p><p>  char choice2;</p><p>  system("cls")

136、;</p><p>  cout<<"歡迎使用“幫助”,請輸入幫助類型:\n";</p><p>  cout<<"1:此程序有哪些功能?"<<endl;</p><p>  cout<<"2:如何一次性刪除所有記錄?"<<endl;</p&

137、gt;<p>  cout<<"3:此程序關(guān)閉后我的記錄存在哪里?為什么我修改的記錄沒有被保存?"<<endl;</p><p>  cout<<"4:為什么有時候我的程序會突然死掉?"<<endl;</p><p>  cout<<"5:何時會有更完善的版本出現(xiàn)?&

138、quot;<<endl;</p><p>  cout<<"6:此程序的作者信息?"<<endl;</p><p>  cout<<"7:退出幫助。"<<endl;</p><p>  cin>>choice2;</p><p> 

139、 switch(choice2)</p><p><b>  {</b></p><p><b>  case '1':</b></p><p>  cout<<"此程序為一個同學(xué)錄系統(tǒng),由雙向鏈表實現(xiàn)。"<<endl;</p><p> 

140、 cout<<"具體的話可以查看菜單。"<<endl;</p><p>  cout<<"謝謝您使用本程序!"<<endl;</p><p>  system("pause");</p><p>  system("cls");</p

141、><p>  goto help;</p><p><b>  break;</b></p><p><b>  case '2':</b></p><p>  cout<<"請退出本程序后手動刪除一個名為xuejiguanli.txt的文件,謝謝~"&l

142、t;<endl;</p><p>  system("pause");</p><p>  system("cls");</p><p>  goto help;</p><p><b>  break;</b></p><p><b>  

143、case '3':</b></p><p>  cout<<"在一個名為xuejiguanli.txt的文件里面"<<endl;</p><p>  cout<<"只有正常關(guān)閉才會保存,在運行途中強行關(guān)閉,程序?qū)⒉粚υ形募鋈魏涡薷?quot;<<endl;</p>&

144、lt;p>  system("pause");</p><p>  system("cls");</p><p>  goto help;</p><p><b>  break;</b></p><p><b>  case '4':</b&

145、gt;</p><p>  cout<<"目前本程序在輸入有誤方面的容錯處理可能還不夠完善,有時輸入太多非法數(shù)據(jù)可能導(dǎo)致程序死機";</p><p>  cout<<"所以,請規(guī)范您的操作,并注意輸入的正確,謝謝您的配合。"<<endl;</p><p>  system("pau

146、se");</p><p>  system("cls");</p><p>  goto help;</p><p><b>  break;</b></p><p><b>  case '5':</b></p><p>  

147、cout<<"下一屆課程設(shè)計必然有更強大的學(xué)弟學(xué)妹來完善它。"<<endl;</p><p>  system("pause");</p><p>  system("cls");</p><p>  goto help;</p><p><b> 

148、 break;</b></p><p><b>  case '6':</b></p><p>  cout<<"Author:計科三班,孫健波。\n學(xué)號:0906840330\n";</p><p>  cout<<"謝謝您的使用~~"<<

149、endl;</p><p>  system("pause");</p><p>  system("cls");</p><p>  goto help;</p><p><b>  break;</b></p><p><b>  defaul

150、t:</b></p><p>  system("pause");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  bo

151、ol guanli::VerifyDelete()</p><p><b>  {</b></p><p>  char v[100];</p><p>  cout<<"\n確認(rèn)?(Y/N)";</p><p>  scanf("%s",v);</p>

152、<p>  cin.ignore(20,'\n');</p><p>  if(!strcmp(v,"y")||!strcmp(v,"Y"))return true;</p><p>  else return false;</p><p><b>  }</b></p&g

153、t;<p>  void guanli::DeleteNode()</p><p><b>  {</b></p><p>  if(current_ptr==head_ptr)</p><p>  DeleteNodeAtHead();</p><p><b>  else</b>&

154、lt;/p><p>  if(current_ptr->next==head_ptr)</p><p>  DeleteNodeAtEnd();</p><p><b>  else</b></p><p>  DeleteNodeAtMiddle();</p><p><b>  }

155、</b></p><p>  void guanli::DeleteNodeAtHead()</p><p><b>  {</b></p><p>  if(head_ptr->next!=head_ptr)</p><p><b>  {</b></p><

溫馨提示

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

評論

0/150

提交評論