c++數(shù)據(jù)結(jié)構(gòu)學(xué)生管理系統(tǒng)方案_第1頁(yè)
c++數(shù)據(jù)結(jié)構(gòu)學(xué)生管理系統(tǒng)方案_第2頁(yè)
已閱讀5頁(yè),還剩19頁(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、C+數(shù)據(jù)結(jié)構(gòu)學(xué)生管理系統(tǒng)單鏈表實(shí)現(xiàn)用模板類實(shí)現(xiàn),實(shí)現(xiàn)操作符的重載非常詳細(xì)的代碼及其操作1、Stude nt.hprivate:string name; 姓名 string ID;/ 學(xué)號(hào) string sex;/ 性別 string major;/專業(yè) string brithday;/ 生日 int ave;/ 均分Stude nt();void SetName(stri ng& strn ame);void SetSex(stri ng& strsex);void SetBrith(stri ng& strbrith);void SetID(stri ng& strID);void Set

2、Major(stri ng& strmajor);void EditPers on();bool operator !=(Stude nt& stu);bool operator(Stude nt& stu);friend ostream& operator(ostream& ost,Stude nt& stu);friend ifstrea m& operator(ifstream& ost,Stude nt& stu);friend ofstream& operator(ofstream& ost,Stude nt& stu);-string GetName();-2、核心代碼ostrea

3、m& operator(ostrea m& ost,Stude nt& stu) ostName stu .n amee ndl; ostSexstu.sexe ndl;ostBrithday stu.brithdaye ndl; ostIDstu.IDendl;ostMajorstu.majore ndl;return ost;ifstream& operator(ifstream& ost,Stude nt& stu)oststu .n ame;oststu.sex; oststu.brithday; oststuD;oststu.major;return ost;2、Lfstrea m&

4、 operator (ofstrea m& ost,Stude nt& stu) oststu .n amee ndl; oststu.sexe ndl;oststu.brithdaye ndl; ostst u.I De ndl; oststu.major(Student& stu1) if(stu1.aveave)return true;return false;3、測(cè)試代碼system(cls);/stu.EditPerso n();cout請(qǐng)輸入學(xué)生的姓名sex;stu.SetSex(sex);cout請(qǐng)輸入學(xué)生的生日 brithday;stu.SetBrith(brithday);c

5、out請(qǐng)輸入學(xué)生的學(xué)號(hào) ID;stu.SetlD(ID);cout請(qǐng)輸入學(xué)生的專業(yè)endl; cinm ajor;stu.SetMajor(major);cout請(qǐng)輸入平均成績(jī) ave;stu.SetAve(ave);list.I nsert(1,stu);list.Save(Stude nt.txt);cout h ) : endl;break;男1996-10-104物理85system(cls);list.Pri ntL in kList();cout h ) : n n LaLah h c cd d g g f fsrEsrE Q Q -1-1a ;es a ccout請(qǐng)輸入學(xué)生的性別

6、e ndl;NaneSexBrltlida*;ajorveragecaseb:casec:cout當(dāng)前鏈表的長(zhǎng)度為:e ndl;len gth=list.ListLe ngth();當(dāng)前犍表的長(zhǎng)度貴;length=4請(qǐng)礙人選擇(幫助選項(xiàng)一h ):cased:system(cls);cout現(xiàn)有學(xué)生的名字:e ndl;list.DisplayName();coute ndl;cout請(qǐng)輸入學(xué)生的姓名e ndl; cinname;stu.SetName( name);SexBrithdayID Major flveirasfeName SexBrithdayID Major AuerageName

7、SexBpithdayIDMajOPRUE取Name SexBj*ithda.yIDajoruepae男4物理&5小張 男l(wèi)?95-10-i0英語(yǔ)S2女語(yǔ)文78嚴(yán)1994-10-101數(shù)學(xué)99delstu=list.Fi nd(stu);I庫(kù)入學(xué)生的姓名小楊Ge z男Dr-itID4Major物理請(qǐng)輸入選擇(幫助選項(xiàng)-h)=cased:cout現(xiàn)有學(xué)生的名字:e ndl;list.DisplayName();coute ndl;cout請(qǐng)輸入學(xué)生的姓名e ndl; cinn ame;stu.SetName( name);delstu=list.Fi nd(stu); coutdelstu;3、

8、源代碼小張m1795-10-10玉語(yǔ)S2小李女1?9S-10-10備文78f王1994-10-10casef:system(cls);cout現(xiàn)有學(xué)生的名字:e ndl;list.DisplayName();cout請(qǐng)輸入修改的學(xué)生的姓名:e ndl;cinn ame;tu.SetName( name);delstu=list.Fi nd(stu);pos=list.Locate(stu);list.Delete(pos);cout請(qǐng)輸入學(xué)生的新的信息:e ndl;coute ndl;cout請(qǐng)輸入學(xué)生的姓名e ndl;cinn ame;stu.SetName( name);cout請(qǐng)輸入學(xué)生

9、的性別 sex;stu.SetSex(sex);cout請(qǐng)輸入學(xué)生的生日 brithday;stu.SetBrith(brithday);cout請(qǐng)輸入學(xué)生的學(xué)號(hào) ID;stu.SetID(ID);cout請(qǐng)輸入學(xué)生的專業(yè)endl;cinm ajor;stu.SetMajor(major);.cout請(qǐng)輸入平均成績(jī) ave;stu SetAve(ave);請(qǐng)輸入學(xué)生的新的信息乗婁入學(xué)生的姓名 賞入學(xué)生的性別書輸入學(xué)生的生日1?6-10-10請(qǐng)輸入學(xué)生的學(xué)號(hào) 祓入學(xué)生的專業(yè)請(qǐng)輸入平均成績(jī)Caseg:list.Sort();list .Prin tLin kList();LinkList h#if

10、ndef Lin kList_H#define Lin kList_HBitbdayIDNaneSex:IDMajorAuerageManeSexBp-ithdavIDlaLjoi* uer-ajgre1996-10-10花學(xué)980王1994- 10-101數(shù)學(xué)小張男1995- 10-10黃語(yǔ)S5#in elude #in clude using n amespace std;template struct Node T data;Node *n ext;template class Lin kListNode *head;public:Li nkList();Li nkList(T a,i

11、nt n);void SetLinList(T a,int n);Li nkList();int ListLe ngth();T Get(i nt pos);元素值T Fi nd(T item); int Locate(T item);素的序號(hào)void PrintLin kList(); void Insert(inti,T item); T Delete(int i);個(gè)值void In vert();friend void Merge(LinkList &L1,void DisplayNode(i nt i);void Save(char fname);voidOpen(charfname

12、);voidDisplayName();void Sort();/元素自身的信息,數(shù)據(jù)域/后繼元素存儲(chǔ)地址,地址域/單鏈表的頭指針/求鏈表的長(zhǎng)度/按位查找,取單鏈表中第 POS 個(gè)節(jié)點(diǎn)的/查找函數(shù),以 T 類型的數(shù)據(jù)作為參數(shù)/按值查找,求單鏈表中值為 item 的元/在 i 的位置插入元素 item/在單鏈表中刪除第 i 個(gè)節(jié)點(diǎn),并返回這/逆置函數(shù) &L2);/歸并鏈表/保存/顯示名字/排序;#en difLin kList.cpp#i ncludeL in kList.htemplate/用于創(chuàng)建一個(gè)帶有頭結(jié)點(diǎn)的空鏈表Lin kList:LinkList()head=new Node; 私有

13、head-next=NULL;template/*用于創(chuàng)建一個(gè)帶有頭結(jié)點(diǎn)的空鏈表*/Lin kList:Li nkList(T a,i nt n)尾插法Node *rear;rear=head; 指向當(dāng)前單鏈表的最后一個(gè)節(jié)點(diǎn)for(i nt i=O;i n; i+)Node *s;s=new Node;s-data=ai;rear- n ext=s;/rear=head rear=s;/rear一直是指向單鏈表的最后一項(xiàng)rear-next=NULL; 單鏈表創(chuàng)建結(jié)束,最后一個(gè)節(jié)點(diǎn)的指針置為空templatevoid LinkList:SetLinList(T a,int n)head=new

14、Node;Node *rear=head;for(i nt i=0;i n; i+)Node *s;s=new Node;s-data=ai;rear-n ext=s;rear=s;rear- next=NULL; 單鏈表創(chuàng)建結(jié)束,最后一個(gè)節(jié)點(diǎn)的指針置為空templateint Li nkList:ListLe ngth()int num=0;Node *p; p=head-n ext;while(p)p=p-n ext;nu m+; return num;templateT Lin kList:Get(i nt pos)Node *p;int j=1;p=head- next;/p指向頭結(jié)點(diǎn)

15、的下一個(gè)節(jié)點(diǎn)while(p&jn ext;j+;if(!p|jpos)coutdata;templateT LinkList:Find(T item)Node *p;p=head-n ext;while(p&p-data!=item)p=p-n ext;if(!p)coutdata;templateint Lin kList:Locate(T item)Node *p; p=head-n ext;int j=1;while(p&p-data!=item)p=p-n ext;j+;if(p)return j;else return 0;templatevoid Lin kList:Pri ntL

16、i nkList()Node *p; p=head-n ext;while(p)coutdatan ext;templatevoid Lin kList:I nsert(i nt i,T item) Node *p; p=head; int j=0;while(p&jn ext;j+; if(!p)cerr插入位置非法; exit(1);elseNode *s=new Node;s-data=item;s-n ext=p-n ext;p_n ext=s;templateT Lin kList:Delete(i nt i)Node *p,*q;T x;p=head;int j=0;while(p

17、&jn ext;j+;if(!p|!p- next)cerrn ext;x=q-data;p_n ext=q _n ext;delete q;return x;/*利用頭插法*/templatevoid Lin kList:I nvert()Node *p;p=head-n ext;head- next=NULL;將逆置后的單鏈表初始化為空表while(p!=NULL)Node *q=p;p=p-n ext;q-n ext=head-n ext;head-n ext=q;templateLin kList:Li nkList()Node *q=new Node;while(head!=NULL

18、)q=head;head=head-n ext;delete q;templatevoid Merge(LinkList &L1 ,LinkList &L2)Node *p1,*p2,*p3;p 仁 L1.head- next;/指向第一個(gè)數(shù)據(jù)的節(jié)點(diǎn)p2=L2.head-n ext;p3=L1.head; 指向 L1 的頭結(jié)點(diǎn) while(p1!=NULL)&(p2!=NULL)if(p1-data)data)p3-n ext=p1;p1=p1- n ext;p3=p3-n ext;elsep3-n ext=p2;p2=p2-n ext;p3=p3-n ext;if(p1!=NULL)/p2

19、為空的時(shí)候p3-n ext=p1;if(p2!=NULL)p3-n歸并鏈表ext=p2;delete L2.head;L2.head=NULL;templatevoid Li nkList:Save(char fname) ofstream fout(fname); foutListLe ngth()e ndl; Node *p;p=head-n ext; while(p!=NULL)foutdatan ext;fout.close();templatevoid Lin kList:Ope n( char fname) ifstream fin( fname);int n;finn;T ite

20、m;for(i nt i=0;i n; i+)/Node *p=new Node;/fin p_data;fin item;In sert(i+1,item);fin. close();templatevoid Lin kList:DisplayName()Node *p;p=head-n ext;while(p)coutdata.GetName()n ext;templatevoid Li nkList:Sort()Node *p;int len=ListLe ngth();for(i nt i=1;in ext;for(i nt j=O;jdatap-n ext-data)T temp=p

21、-data; p-data=p-n ext-data; p-next-data=temp;p=p-n ext;Stude nt.h#i ncludeL in kList.h#in clude#in cludeusing n amespace std;class Stude nt;ostrea m& operator(ifstream& ost,Stude nt& stu); ofstream& operator (Stude nt& stu);friend ostrea m& operator(ifstream& ost,Stude nt& stu);friend ofstream& oper

22、ator(ofstrea m& ost,Stude nt& stu); stri ngGetName();Stude nt.cpp#i ncludeStude nt.h#in cludeusing n amespace std;ostrea m& operator(ostream& ost,Stude nt& stu)ostName stu .n amee ndl;ostSexstu.sexe ndl;ostBrithday stu.brithdaye ndl; ostIDstu.IDe ndl;ostMajor stu.majore ndl; ostAverage stu.ave(ifstr

23、eam& ost,Stude nt& stu)oststu .n ame;oststu.sex;oststu.brithday; oststuD;oststu.major; oststu.ave;return ost;ofstream& operator (ofstream& ost,Stude nt& stu) oststu .n amee ndl;oststu.sexe ndl; oststu.brithdaye ndl; ostst u.I De ndl;oststu.majore ndl; oststu.ave(Stude nt& stu1)if(stu1.aveave)return

24、true;return false;string Stude nt:GetName()return n ame;void Stude nt:EditPerso n()Test.cpp#i ncludeLi nkList.cpp#i ncludeStude nt.h#in clude#in clude#in cludeusing n amespace std;void menu()couta、增加一個(gè)學(xué)生信息 endl; coutb、打印鏈表endl;coutc、獲取當(dāng)前鏈表的長(zhǎng)度 endl; coutd、查詢學(xué)生的信息endl;coute、刪除學(xué)生信息endl; coutf、修改學(xué)生的信息en

25、dl;coutg、按平均成績(jī)進(jìn)行排序endl;couth、幫助endl;couto、退出endl;void mai n()char ch;LinkList list;list.Ope n(Stude nt.txt);string name,sex,ID,brithday,major,newname; int len gth,pos,ave;Stude nt stu,delstu;men u();couti npute ndl;doch=getchar();switch(ch)caseh:system(cls);men u();break;casea:system(cls);/stu.EditP

26、erso n();cout請(qǐng)輸入學(xué)生的endl; cinn ame;stu.SetName( name);cout請(qǐng)輸入學(xué)生的性別 sex;stu.SetSex(sex);cout請(qǐng)輸入學(xué)生的生日 brithday;stu.SetBrith(brithday);cout請(qǐng)輸入學(xué)生的學(xué)號(hào) ID;stu.SetlD(ID);cout請(qǐng)輸入學(xué)生的專業(yè)endl; cinm ajor;stu.SetMajor(major);cout請(qǐng)輸入平均成績(jī) ave;stu.SetAve(ave);list.I nsert(1,stu);list.Save(Stude nt.txt);cout h ) : endl; break;caseb:system(cls);list.Pri ntL in kList();cout h ) : endl; break;casec:system(cls);cout當(dāng)前鏈表的長(zhǎng)度為:endl;len gth=list.ListLe ngth();coutle ngth=le ngthe ndl;cout h ) : endl; break;cased:system(cls);cout現(xiàn)有學(xué)生的名字:endl;list.DisplayName();coute ndl;cout請(qǐng)輸入學(xué)生的endl;cinn ame;stu.

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論