vc++課程設(shè)計(jì)--工資管理_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  VC++課程設(shè)計(jì)</b></p><p><b>  —5.1工資管理</b></p><p><b>  院系:自動(dòng)化學(xué)院</b></p><p>  班級(jí):09101902</p><p><b>  姓名:劉凱強(qiáng)</b>

2、</p><p>  學(xué)號(hào):0910190231</p><p><b>  實(shí)驗(yàn)內(nèi)容:工資管理</b></p><p>  1.1 程序功能介紹:</p><p>  這是一個(gè)員工工資管理程序。工資管理的數(shù)據(jù)文件中存儲(chǔ)有員工姓名和工資,該程序可以錄入、顯示、修改、刪除、查找員工姓名和工資。</p><

3、;p>  1.2 程序設(shè)計(jì)要求:</p><p>  用類的形式改寫程序,將程序中工資數(shù)據(jù)用鏈表的形式存放,定義一個(gè)鏈表類,封裝主要的操作函數(shù)。</p><p>  顯示、修改、刪除數(shù)據(jù)項(xiàng)時(shí)大小寫通用。</p><p>  工資數(shù)據(jù)按工資值的大小進(jìn)行排序存放。</p><p>  修改、刪除數(shù)據(jù)前增加提示信息,用戶確認(rèn)后才能進(jìn)一步操作,

4、否則操作取消</p><p>  增加程序的文件輸入輸出功能,在執(zhí)行程序中首先將工資數(shù)據(jù)從文件中讀出再進(jìn)行管理,在程序結(jié)束時(shí)能將工資數(shù)據(jù)保存在原文件中。</p><p>  源程序結(jié)構(gòu)流程框圖與說(shuō)明</p><p><b>  基本數(shù)據(jù)結(jié)構(gòu)</b></p><p><b>  類:</b></

5、p><p>  class CList //定義鏈表類</p><p><b>  {</b></p><p>  protected:</p><p>  CNode *pHead; //鏈表頭結(jié)點(diǎn)指針</p><p><b>  public:</b></p>

6、<p>  CList(){pHead=0;} //賦值</p><p>  ~CList(){DeleteList();} //析構(gòu)函數(shù)</p><p>  void AddNode(CNode *pnode); //在首部添加結(jié)點(diǎn)</p><p>  CNode *DeleteNode(CNode *); //刪除一個(gè)指定的結(jié)點(diǎn),返回該結(jié)點(diǎn)

7、的指針</p><p>  CNode *LookUp(CSalary &); //查找一個(gè)指定的數(shù)據(jù),返回該數(shù)據(jù)所在結(jié)點(diǎn)在鏈表中的指針,若沒(méi)找到返回0</p><p>  void ShowList(); //打印整個(gè)鏈表</p><p>  void DeleteList(); //刪除整個(gè)鏈表</p><p>  CNode

8、 *GetListHead(){return pHead;} //返回鏈表首結(jié)點(diǎn)</p><p>  CNode *GetListNextNode(CNode *); //返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)</p><p>  void Insert(CNode *); //按工資的順序插入一個(gè)結(jié)點(diǎn)</p><p><b>  };</b>&l

9、t;/p><p>  class CNode //定義結(jié)點(diǎn)類</p><p><b>  {</b></p><p><b>  private:</b></p><p>  CSalary * pData; //用于指向數(shù)據(jù)類的指針,這是每個(gè)數(shù)據(jù)的不同部分</p><p>

10、  CNode *pNext; //指向鏈表的指針</p><p><b>  public:</b></p><p>  CNode(){pData=0;pNext=0;} //結(jié)點(diǎn)類構(gòu)造函數(shù)</p><p>  CNode(CNode &node) //用于拷貝的構(gòu)造函數(shù)</p><p><b&g

11、t;  {</b></p><p>  pData=node.pData; //私有成員的互相賦值</p><p>  pNext=node.pNext; //私有成員的互相賦值</p><p><b>  }</b></p><p>  void InputData(CSalary *pSal){pDa

12、ta=pSal;} //輸入數(shù)據(jù)</p><p>  void ShowNode(){pData->Show();}</p><p>  CSalary *GetData(){return pData;} //返回工資地址</p><p>  friend class CList; //定義鏈表類為友元類</p><p><

13、b>  };</b></p><p>  class CSalary //定義數(shù)據(jù)類</p><p><b>  {</b></p><p><b>  private:</b></p><p>  char szName[20]; //存放姓名</p><

14、;p>  double dlSalary; //工資</p><p><b>  public:</b></p><p>  CSalary(){ strcpy(szName,"\0");dlSalary=0.0;} //數(shù)據(jù)初始化</p><p>  CSalary(char *name,double salar

15、y) //構(gòu)造函數(shù)重載</p><p><b>  {</b></p><p>  strcpy(szName,name);dlSalary=salary; //賦值</p><p><b>  }</b></p><p>  void SetSalary(char *,double); //

16、置工資與姓名</p><p>  double GetSal(){return dlSalary;} //返回工資</p><p>  int Compare(CSalary &); //比較姓名,供查找用,比較結(jié)果為1,0</p><p>  void Show(); //顯示工資</p><p><b>  };&

17、lt;/b></p><p><b>  成員函數(shù): </b></p><p>  void AddNode(CNode *pnode); //在首部添加結(jié)點(diǎn)</p><p>  Node *DeleteNode(CNode *); //刪除一個(gè)指定的結(jié)點(diǎn),返回該結(jié)點(diǎn)的指針</p><p>  CNode *L

18、ookUp(CSalary &); //查找一個(gè)指定的數(shù)據(jù),返回該數(shù)據(jù)所在結(jié)點(diǎn)在鏈表中的指針,若沒(méi)找到返回0</p><p>  void ShowList(); //打印整個(gè)鏈表</p><p>  void DeleteList(); //刪除整個(gè)鏈表</p><p>  CNode *GetListHead(){return pHead;} //

19、返回鏈表首結(jié)點(diǎn)</p><p>  CNode *GetListNextNode(CNode *); //返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)</p><p>  void Insert(CNode *); //按工資的順序插入一個(gè)結(jié)點(diǎn)</p><p>  void AddSalary(CList &SalaryList) //將記錄添加到鏈表中,鏈表是唯一的&

20、lt;/p><p>  void DeleteData(CList &list)//根據(jù)姓名找到要?jiǎng)h除的結(jié)點(diǎn),再進(jìn)行刪除結(jié)點(diǎn)操作</p><p>  void LookUpData(CList &list) //尋找所要找的姓名的結(jié)點(diǎn)</p><p>  int OpenFile(CList&list)//打開(kāi)文件并建立有序鏈表對(duì)文件中的數(shù)據(jù)進(jìn)行

21、排序,最后輸出</p><p>  void main(void)//主函數(shù)</p><p>  void Outfun(void)//輸出主菜單</p><p>  int SaveFile(CList & List)//輸入結(jié)點(diǎn),保存文件</p><p>  void SetNewData(CList &list)//修改

22、工資數(shù)據(jù)</p><p>  void ShowSalary(CList &list)//輸出鏈表中的數(shù)據(jù),顯示員工的工資數(shù)據(jù)</p><p><b>  四.程序設(shè)計(jì)思想</b></p><p>  數(shù)據(jù)管理類程序的數(shù)據(jù)用鏈表的形式存儲(chǔ),將鏈表定義成一個(gè)類,將結(jié)點(diǎn)視為類中的數(shù)據(jù)成員,也即將結(jié)點(diǎn)視為一個(gè)整體,涉及結(jié)點(diǎn)的插入、輸出、刪除等

23、操作。將結(jié)點(diǎn)也定義成一個(gè)類,涉及結(jié)點(diǎn)數(shù)據(jù)的輸入和輸出、復(fù)制等。在結(jié)點(diǎn)中,涉及較多的是具體數(shù)據(jù)的形式,所以將具體的數(shù)據(jù)形式定義成數(shù)據(jù)類型的指針,所有針對(duì)數(shù)據(jù)的操作都轉(zhuǎn)換為對(duì)指針的操作,在數(shù)據(jù)類再具體實(shí)現(xiàn)。結(jié)點(diǎn)的操作也像鏈表一樣通用。將數(shù)據(jù)具體形式定義成一個(gè)類,涉及數(shù)據(jù)的輸入、輸出、比較等。那么,針對(duì)不同的數(shù)據(jù)管理,只要改動(dòng)這部分就可以了。這樣,就實(shí)現(xiàn)程序的結(jié)構(gòu)化。</p><p><b>  關(guān)于程序的思

24、考</b></p><p>  輸入密碼的時(shí)候是不是可以把輸入的字符都顯示為“*”。</p><p>  還要想想和其他函數(shù)間的關(guān)系,有的函數(shù)可以調(diào)用,那就很方便,少編一些代碼,還會(huì)減少出錯(cuò)的幾率。</p><p>  整個(gè)過(guò)程中對(duì)類的封裝性進(jìn)行了充分了解,特別是在調(diào)試的時(shí)候,對(duì)象成員的調(diào)用、參數(shù)的傳遞、函數(shù)的銜接遇到了不少麻煩。鏈表部分還是不太清楚。&

25、lt;/p><p>  要輸入數(shù)字的地方輸入字母會(huì)出現(xiàn)錯(cuò)誤。</p><p><b>  附源程序</b></p><p>  #include<string.h></p><p>  #include<iostream.h></p><p>  #include<fst

26、ream.h></p><p>  #include<stdlib.h></p><p>  void Menu(void) </p><p><b>  {</b></p><p>  cout<<"**************************************\n

27、";</p><p>  cout<<"* 歡迎使用工資管理程序 *\n";</p><p>  cout<<"* *\n";</p><p>  cout<<"*

28、 請(qǐng)選擇以下功能 *\n";</p><p>  cout<<"* *\n";</p><p>  cout<<"* a:新增工資記錄 *\n";</p><

29、;p>  cout<<"* l:查看工資記錄 *\n";</p><p>  cout<<"* f:按姓名查詢工資 *\n";</p><p>  cout<<"* d:按姓名刪除工資 *\

30、n";</p><p>  cout<<"* e:按姓名修改工資 *\n";</p><p>  cout<<"* q:退出系統(tǒng) *\n";</p><p>  cout<<"******

31、********************************\n";</p><p>  cout<<" 0910190231 劉凱強(qiáng) \n";</p><p>  cout<<"\n";</p><p>  cout<<"請(qǐng)輸入

32、功能代碼:";</p><p><b>  }</b></p><p><b>  //數(shù)據(jù)類:</b></p><p>  class CSalary //定義數(shù)據(jù)類</p><p><b>  {</b></p><p><b&g

33、t;  private:</b></p><p>  char szName[20]; //存放姓名</p><p>  double dlSalary; //工資</p><p><b>  public:</b></p><p>  CSalary(){ strcpy(szName,"\0&

34、quot;);dlSalary=0.0;} //數(shù)據(jù)初始化</p><p>  CSalary(char *name,double salary) //構(gòu)造函數(shù)重載</p><p><b>  {</b></p><p>  strcpy(szName,name);dlSalary=salary; //賦值</p><

35、p><b>  }</b></p><p>  void SetSalary(char *,double); //置工資與姓名</p><p>  double GetSal(){return dlSalary;} //返回工資</p><p>  int Compare(CSalary &); //比較姓名,供查找用,比較

36、結(jié)果為1,0</p><p>  void Show(); //顯示工資</p><p><b>  };</b></p><p>  void CSalary::SetSalary(char *name,double salary=0.0)</p><p><b>  {</b></p&g

37、t;<p>  strcpy(szName,name); </p><p>  dlSalary=salary; </p><p><b>  }</b></p><p>  int CSalary::Compare(CSalary &Salary)</p><p><b>  {&l

38、t;/b></p><p>  CSalary sal1,sal2; </p><p>  strcpy(sal1.szName,szName); </p><p>  strcpy(sal2.szName,Salary.szName); </p><p>  strlwr(sal1.szName); </p>

39、<p>  strlwr(sal2.szName); </p><p>  if (strcmp(sal1.szName,sal2.szName)==0 ) </p><p><b>  {</b></p><p>  Salary.dlSalary=dlSalary; </p><p><b&g

40、t;  return 1;</b></p><p><b>  }</b></p><p>  else return 0;</p><p><b>  }</b></p><p>  void CSalary::Show()</p><p><b> 

41、 {</b></p><p>  cout<<"姓名: "<<szName<<'\n'<<"工資: "<<dlSalary<<endl; </p><p><b>  }</b></p><p><

42、b>  //結(jié)點(diǎn)類</b></p><p>  class CNode //定義結(jié)點(diǎn)類</p><p><b>  {</b></p><p><b>  private:</b></p><p>  CSalary * pData; //用于指向數(shù)據(jù)類的指針,這是每個(gè)數(shù)據(jù)的不

43、同部分</p><p>  CNode *pNext; //指向鏈表的指針</p><p><b>  public:</b></p><p>  CNode(){pData=0;pNext=0;} //結(jié)點(diǎn)類構(gòu)造函數(shù)</p><p>  CNode(CNode &node) //用于拷貝的構(gòu)造函數(shù)<

44、/p><p><b>  {</b></p><p>  pData=node.pData; //私有成員的互相賦值</p><p>  pNext=node.pNext; //私有成員的互相賦值</p><p><b>  }</b></p><p>  void Inpu

45、tData(CSalary *pSal){pData=pSal;} //輸入數(shù)據(jù)</p><p>  void ShowNode(){pData->Show();}</p><p>  CSalary *GetData(){return pData;} //返回工資地址</p><p>  friend class CList; //定義鏈表類為友元類&

46、lt;/p><p><b>  };</b></p><p><b>  //鏈表類</b></p><p>  class CList //定義鏈表類</p><p><b>  {</b></p><p>  protected:</p>

47、<p>  CNode *pHead; //鏈表頭結(jié)點(diǎn)指針</p><p><b>  public:</b></p><p>  CList(){pHead=0;} //賦值</p><p>  ~CList(){DeleteList();} //析構(gòu)函數(shù)</p><p>  void AddNode

48、(CNode *pnode); //在首部添加結(jié)點(diǎn)</p><p>  CNode *DeleteNode(CNode *); //刪除一個(gè)指定的結(jié)點(diǎn),返回該結(jié)點(diǎn)的指針</p><p>  CNode *LookUp(CSalary &); //查找一個(gè)指定的數(shù)據(jù),返回該數(shù)據(jù)所在結(jié)點(diǎn)在鏈表中的指針,若沒(méi)找到返回0</p><p>  void ShowL

49、ist(); //打印整個(gè)鏈表</p><p>  void DeleteList(); //刪除整個(gè)鏈表</p><p>  CNode *GetListHead(){return pHead;} //返回鏈表首結(jié)點(diǎn)</p><p>  CNode *GetListNextNode(CNode *); //返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)</p>

50、<p>  void Insert(CNode *); //按工資的順序插入一個(gè)結(jié)點(diǎn)</p><p><b>  };</b></p><p>  CNode *CList::DeleteNode(CNode *node)</p><p><b>  {</b></p><p>  C

51、Node *pnode,*p1,*p2; </p><p>  pnode=pHead; </p><p>  if(pHead==node) </p><p><b>  {</b></p><p>  p1=pHead; </p><p>  pHead=pHead->pNext

52、; </p><p>  delete p1->pData;delete p1; </p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  p2=p1=p

53、Head; </p><p>  while(p2!=node&&p2->pNext!=0) </p><p><b>  {</b></p><p><b>  p1=p2; </b></p><p>  p2=p2->pNext; </p>&l

54、t;p><b>  }</b></p><p>  if(p2==node) </p><p><b>  {</b></p><p>  p1->pNext=p2->pNext; </p><p>  delete p2->pData;delete p2; </

55、p><p><b>  }</b></p><p>  else cout<<"無(wú)節(jié)點(diǎn)"; </p><p><b>  }</b></p><p>  return node; </p><p><b>  }</b>&l

56、t;/p><p>  CNode *CList::LookUp(CSalary &salary)</p><p><b>  {</b></p><p>  CNode *pnode; </p><p>  pnode=pHead; </p><p>  while(pnode) <

57、;/p><p><b>  {</b></p><p>  if(pnode->pData->Compare(salary))return pnode;</p><p>  pnode=pnode->pNext;</p><p><b>  }</b></p><p

58、>  return 0; </p><p><b>  }</b></p><p>  void CList::ShowList()</p><p><b>  {</b></p><p>  CNode *plist; </p><p>  plist=pHead

59、; </p><p>  if(plist==0){ </p><p>  cout<<"沒(méi)有數(shù)據(jù),請(qǐng)先添加數(shù)據(jù)!\n";</p><p>  cout<<"\n";</p><p><b>  }</b></p><p>  w

60、hile(plist)</p><p><b>  { </b></p><p>  plist->ShowNode(); </p><p>  plist=plist->pNext; </p><p><b>  }</b></p><p><b&

61、gt;  }</b></p><p>  void CList::DeleteList()</p><p><b>  {</b></p><p>  CNode *P1,*P2; </p><p>  P2=pHead; </p><p><b>  while(P2)&

62、lt;/b></p><p><b>  {</b></p><p>  delete P2->pData; </p><p><b>  P1=P2; </b></p><p>  P2=P2->pNext; </p><p>  delete P1

63、;</p><p><b>  }</b></p><p><b>  }</b></p><p>  CNode * CList::GetListNextNode(CNode *pnode)</p><p><b>  {</b></p><p>  

64、return pnode->pNext; //返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)</p><p><b>  }</b></p><p>  void CList::Insert(CNode*node)</p><p><b>  {</b></p><p>  CNode *p1,*p2; &l

65、t;/p><p>  if(pHead==0) </p><p><b>  { </b></p><p>  pHead=node; </p><p>  node->pNext=0; </p><p><b>  return;</b></p>&

66、lt;p><b>  }</b></p><p>  if(pHead->pData->GetSal()>=node->pData->GetSal()) </p><p><b>  {</b></p><p>  node->pNext=pHead; </p>

67、<p>  pHead=node; </p><p><b>  return;</b></p><p><b>  }</b></p><p>  p2=p1=pHead; </p><p>  while(p2->pNext&&p2->pData->

68、;GetSal()<node->pData->GetSal()) </p><p><b>  {</b></p><p><b>  p1=p2; </b></p><p>  p2=p2->pNext; </p><p><b>  }</b>

69、</p><p>  if(p2->pData->GetSal()<node->pData->GetSal()) </p><p><b>  {</b></p><p>  p2->pNext=node; </p><p>  node->pNext=0; </p&g

70、t;<p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  node->pNext=p2; </p><p>  p1->pNext=node; </p&g

71、t;<p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  int OpenFile(CList&list)</p><p><b>  {</b>

72、;</p><p>  ifstream file("EMP.txt",ios::binary,ios::nocreate); //以二進(jìn)制讀取方式打開(kāi)已存在文件EMP.txt</p><p>  if(!file) //打開(kāi)文件發(fā)生錯(cuò)誤,程序退出</p><p><b>  {</b></p><p

73、>  cout<<" 打開(kāi)失敗!\n";</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  CNode *pnode; //定義一個(gè)結(jié)點(diǎn)類的對(duì)象指針</p><p>  CSalary *sal

74、ary; //定義一個(gè)數(shù)據(jù)類的對(duì)象</p><p>  long curpos, length; //記錄文件長(zhǎng)度的變量</p><p>  curpos=file.tellg(); //文件指針當(dāng)前位置(頭文件)</p><p>  file.seekg(0L,ios::end); //將文件指針移到文件尾</p><p&g

75、t;  length=file.tellg(); //文件指針當(dāng)前位置(文件尾),length為文件長(zhǎng)度</p><p>  file.seekg(0L,ios::beg); //文件指針移到文件頭</p><p>  long num=length/sizeof(*salary); //數(shù)據(jù)個(gè)數(shù)</p><p>  for(long l=0;l<

76、num;l++) //循環(huán)查找</p><p><b>  {</b></p><p>  pnode=new CNode; //動(dòng)態(tài)開(kāi)辟一個(gè)結(jié)點(diǎn)</p><p>  salary=new CSalary; //動(dòng)態(tài)開(kāi)辟一個(gè)數(shù)據(jù)類的對(duì)象</p><p>  file.read((char*)salary,sizeo

77、f(*salary)); //讀取數(shù)據(jù)salary</p><p>  pnode->InputData(salary); //結(jié)點(diǎn)賦值</p><p>  list.Insert(pnode); //把結(jié)點(diǎn)插入鏈表</p><p><b>  }</b></p><p>  file.close(); /

78、/關(guān)閉文件</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int SaveFile(CList & List)</p><p><b>  {</b></p><p>  

79、ofstream file("EMP.txt",ios::binary); //以二進(jìn)制寫入方式打開(kāi)文件EMP.txt</p><p>  if(!file) </p><p><b>  {</b></p><p>  cout<<"保存失敗!\n";</p><p&

80、gt;<b>  return 0;</b></p><p><b>  }</b></p><p>  CNode *pnode=List.GetListHead(); //將鏈表頭指針賦給pnode</p><p>  CSalary *salary; </p><p>  while(pn

81、ode) </p><p><b>  {</b></p><p>  salary=pnode->GetData(); //取出結(jié)點(diǎn)類指針</p><p>  file.write((char*)salary,sizeof(*salary)); //寫入數(shù)據(jù)salary</p><p>  pnode=Li

82、st.GetListNextNode(pnode); //取下一個(gè)結(jié)點(diǎn),形成循環(huán)</p><p><b>  }</b></p><p>  file.close(); </p><p>  cout<<"文件已保存!\n";</p><p><b>  return 1;&

83、lt;/b></p><p><b>  }</b></p><p>  void AddSalary(CList &SalaryList) </p><p><b>  {</b></p><p>  CNode *pNode; </p><p>  CS

84、alary *pSal; </p><p>  char szName[20]; </p><p>  double dlPlaceSalary; </p><p>  cout<<"添加工資記錄\n";</p><p>  cout<<"\n";</p>&

85、lt;p>  cout<<"姓名(輸入0結(jié)束): ";</p><p>  cin.getline(szName,20); </p><p>  while(strcmp(szName,"0")) </p><p><b>  {</b></p><p>

86、  cout<<"工資: ";</p><p>  cin>>dlPlaceSalary; </p><p>  cin.ignore(); </p><p>  pSal=new CSalary; </p><p>  pSal->SetSalary(szName,dlPlaceSal

87、ary); </p><p>  pNode=new CNode; </p><p>  pNode->InputData(pSal); </p><p>  SalaryList.Insert(pNode); </p><p>  cout<<"姓名(輸入0結(jié)束): ";</p>&

88、lt;p>  cin.getline(szName,20); </p><p><b>  }</b></p><p>  cout<<'\n';</p><p><b>  }</b></p><p>  void ShowSalary(CList &l

89、ist)</p><p><b>  {</b></p><p>  cout<<"顯示工資記錄\n";</p><p>  list.ShowList(); </p><p><b>  }</b></p><p>  void LookU

90、pData(CList &list)</p><p><b>  {</b></p><p>  cout<<"根據(jù)姓名查找工資\n";</p><p>  char szName[20]; </p><p>  cout<<"請(qǐng)輸入要查找人的姓名(輸入0結(jié)

91、束): ";</p><p>  cin.getline(szName,20); </p><p>  while(strcmp(szName,"0")) </p><p><b>  {</b></p><p>  CNode *pNode; </p><p&g

92、t;  CSalary pSal; </p><p>  pSal.SetSalary(szName,0); </p><p>  pNode=list.LookUp(pSal); </p><p>  if(pNode) pNode->ShowNode(); </p><p>  else cout<<"

93、您要找的人不存在\n";</p><p>  cout<<"請(qǐng)輸入姓名(輸入0結(jié)束): ";</p><p>  cin.getline(szName,20); </p><p><b>  }</b></p><p><b>  }</b></p&

94、gt;<p>  void DeleteData(CList &list)</p><p><b>  {</b></p><p>  cout<<"根據(jù)姓名刪除工資\n";</p><p>  char name[20];</p><p>  cout<<

95、;"請(qǐng)輸入要?jiǎng)h除人的姓名(輸入0結(jié)束): ";</p><p>  cin.getline(name,20); </p><p>  while(strcmp(name,"0")) </p><p><b>  {</b></p><p>  CNode *pNode;

96、</p><p>  CSalary pSal; </p><p><b>  char a;</b></p><p>  pSal.SetSalary(name,0); </p><p>  pNode=list.LookUp(pSal); </p><p>  cout<<&

97、quot;是(Y)否(N)確定刪除?\n"; </p><p><b>  cin>>a; </b></p><p>  cin.get(); //跳過(guò)回車鍵</p><p>  if((a=='Y'||a=='y')&&pNode==0) cout<<&qu

98、ot;您要找的人不存在\n"; </p><p>  if((a=='Y'||a=='y')&&pNode!=0) </p><p><b>  { </b></p><p>  list.DeleteNode(pNode); </p><p>  pNode

99、=list.GetListNextNode(pNode); </p><p>  cout<<"數(shù)據(jù)已刪除!\n";</p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入姓名(輸入0結(jié)束): ";</p><p>  cin.g

100、etline(name,20); </p><p><b>  }</b></p><p><b>  }</b></p><p>  void SetNewData(CList &list)</p><p><b>  {</b></p><p&

101、gt;  cout<<"根據(jù)姓名修改工資\n";</p><p>  char name[20];</p><p><b>  char a;</b></p><p>  cout<<"請(qǐng)輸入要修改的人的姓名(輸入0結(jié)束): ";</p><p>  ci

102、n.getline(name,20); </p><p>  while(strcmp(name,"0")) </p><p><b>  {</b></p><p>  CNode *pNode; </p><p>  CSalary *pSal; </p><p&

103、gt;  pSal=new CSalary; </p><p>  pSal->SetSalary(name,0); </p><p>  pNode=list.LookUp(*pSal); </p><p>  cout<<"是(Y)否(N)確定修改?\n"; </p><p><b>

104、;  cin>>a; </b></p><p>  cin.get(); //跳過(guò)回車鍵</p><p>  if((a=='Y'||a=='y')&&pNode==0)cout<<"您要找的人不存在\n";</p><p>  if((a=='Y

105、9;||a=='y')&&pNode!=0)</p><p><b>  {</b></p><p>  list.DeleteNode(pNode); </p><p>  cout<<"請(qǐng)輸入新的工資:";</p><p>  double dlsal

106、;</p><p>  cin>>dlsal; </p><p>  cin.ignore(); //跳過(guò)回車鍵</p><p>  pSal->SetSalary(name,dlsal); </p><p>  pNode->InputData(pSal); </p><p>  l

107、ist.Insert(pNode); </p><p>  cout<<"修改已完成!\n";</p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入要修改的人的姓名(輸入0結(jié)束): ";</p><p>  cin.getlin

108、e(name,20); </p><p><b>  }</b></p><p><b>  }</b></p><p>  void main(void)</p><p><b>  {</b></p><p><b>  int co

109、de;</b></p><p><b>  int i=0;</b></p><p>  loop1:cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p

110、><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<

111、;'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<"\t\t請(qǐng)輸入操作密碼:\n";</p><p>  cin>>code;</p>

112、;<p>  if(code!=123)</p><p><b>  {</b></p><p>  cout<<"密碼錯(cuò)誤!\n";i++;</p><p>  if(i==4)exit(0);</p><p>  goto loop1;</p><p&

113、gt;<b>  }</b></p><p><b>  else</b></p><p>  {cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';<

114、/p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<&

115、lt;'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';}</p>

116、<p>  loop2:char c;</p><p>  CList list; </p><p>  if(!OpenFile(list))cout<<"沒(méi)有數(shù)據(jù)文件,請(qǐng)先添加數(shù)據(jù)!";</p><p><b>  do</b></p><p><b>  {

117、</b></p><p><b>  Menu(); </b></p><p><b>  cin>>c; </b></p><p>  cin.get(); </p><p>  cout<<"\n";</p><p&

118、gt;  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n'

119、;;</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cou

120、t<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p

121、><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<

122、;'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  cout<<'\n';</p><p>  switch(c) </p><p><b&g

123、t;  {</b></p><p>  case 'a':AddSalary(list); </p><p><b>  break;</b></p><p>  case 'l':ShowSalary(list); </p><p><b>  break;&l

124、t;/b></p><p>  case 'f':LookUpData(list); </p><p><b>  break;</b></p><p>  case 'd':DeleteData(list); </p><p><b>  break;</b&g

125、t;</p><p>  case 'e':SetNewData(list); </p><p><b>  break;</b></p><p><b>  case 'q':</b></p><p><b>  break; </b>&l

126、t;/p><p><b>  default:</b></p><p>  cout<<"選擇錯(cuò)誤!\n";</p><p><b>  }</b></p><p>  }while(c!='q'); </p><p>  cout

127、<<"\n是否保存文件?(y/n)\n";</p><p><b>  char x;</b></p><p><b>  cin>>x;</b></p><p>  if(x=='y'||x=='Y')</p><p> 

128、 SaveFile(list); //保存文件</p><p>  cout<<"\n是否繼續(xù)?(y/n)\n";</p><p><b>  cin>>x;</b></p><p>  if(x=='y'||x=='Y')</p><p> 

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論