c++数据结构学生管理系统方案_第1页
c++数据结构学生管理系统方案_第2页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+数据结构学生管理系统单链表实现用模板类实现,实现操作符的重载非常详细的代码及其操作1、Stude nt.hprivate:string name; 姓名 string ID;/ 学号 string sex;/ 性别 string major;/专业 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、测试代码system(cls);/stu.EditPerso n();cout请输入学生的姓名sex;stu.SetSex(sex);cout请输入学生的生日 brithday;stu.SetBrith(brithday);c

5、out请输入学生的学号 ID;stu.SetlD(ID);cout请输入学生的专业endl; cinm ajor;stu.SetMajor(major);cout请输入平均成绩 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请输入学生的性别

6、e ndl;NaneSexBrltlida*;ajorveragecaseb:casec:cout当前链表的长度为:e ndl;len gth=list.ListLe ngth();当前犍表的长度貴;length=4请礙人选择(帮助选项一h ):cased:system(cls);cout现有学生的名字:e ndl;list.DisplayName();coute ndl;cout请输入学生的姓名e ndl; cinname;stu.SetName( name);SexBrithdayID Major flveirasfeName SexBrithdayID Major AuerageName

7、SexBpithdayIDMajOPRUE取Name SexBj*ithda.yIDajoruepae男4物理&5小张 男l?95-10-i0英语S2女语文78严1994-10-101数学99delstu=list.Fi nd(stu);I庫入学生的姓名小杨Ge z男Dr-itID4Major物理请输入选择(帮助选项-h)=cased:cout现有学生的名字:e ndl;list.DisplayName();coute ndl;cout请输入学生的姓名e ndl; cinn ame;stu.SetName( name);delstu=list.Fi nd(stu); coutdelstu;3、

8、源代码小张m1795-10-10玉语S2小李女1?9S-10-10备文78f王1994-10-10casef:system(cls);cout现有学生的名字:e ndl;list.DisplayName();cout请输入修改的学生的姓名:e ndl;cinn ame;tu.SetName( name);delstu=list.Fi nd(stu);pos=list.Locate(stu);list.Delete(pos);cout请输入学生的新的信息:e ndl;coute ndl;cout请输入学生的姓名e ndl;cinn ame;stu.SetName( name);cout请输入学生

9、的性别 sex;stu.SetSex(sex);cout请输入学生的生日 brithday;stu.SetBrith(brithday);cout请输入学生的学号 ID;stu.SetID(ID);cout请输入学生的专业endl;cinm ajor;stu.SetMajor(major);.cout请输入平均成绩 ave;stu SetAve(ave);请输入学生的新的信息乗婁入学生的姓名 賞入学生的性别書输入学生的生日1?6-10-10请输入学生的学号 祓入学生的专业请输入平均成绩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花学980王1994- 10-101数学小张男1995- 10-10黄语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);素的序号void PrintLin kList(); void Insert(inti,T item); T Delete(int i);个值void In vert();friend void Merge(LinkList &L1,void DisplayNode(i nt i);void Save(char fname);voidOpen(charfname

12、);voidDisplayName();void Sort();/元素自身的信息,数据域/后继元素存储地址,地址域/单链表的头指针/求链表的长度/按位查找,取单链表中第 POS 个节点的/查找函数,以 T 类型的数据作为参数/按值查找,求单链表中值为 item 的元/在 i 的位置插入元素 item/在单链表中删除第 i 个节点,并返回这/逆置函数 &L2);/归并链表/保存/显示名字/排序;#en difLin kList.cpp#i ncludeL in kList.htemplate/用于创建一个带有头结点的空链表Lin kList:LinkList()head=new Node; 私有

13、head-next=NULL;template/*用于创建一个带有头结点的空链表*/Lin kList:Li nkList(T a,i nt n)尾插法Node *rear;rear=head; 指向当前单链表的最后一个节点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一直是指向单链表的最后一项rear-next=NULL; 单链表创建结束,最后一个节点的指针置为空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; 单链表创建结束,最后一个节点的指针置为空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指向头结点

15、的下一个节点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;/指向第一个数据的节点p2=L2.head-n ext;p3=L1.head; 指向 L1 的头结点 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、为空的时候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、增加一个学生信息 endl; coutb、打印链表endl;coutc、获取当前链表的长度 endl; coutd、查询学生的信息endl;coute、删除学生信息endl; coutf、修改学生的信息en

25、dl;coutg、按平均成绩进行排序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请输入学生的endl; cinn ame;stu.SetName( name);cout请输入学生的性别 sex;stu.SetSex(sex);cout请输入学生的生日 brithday;stu.SetBrith(brithday);cout请输入学生的学号 ID;stu.SetlD(ID);cout请输入学生的专业endl; cinm ajor;stu.SetMajor(major);cout请输入平均成绩 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当前链表的长度为:endl;len gth=list.ListLe ngth();coutle ngth=le ngthe ndl;cout h ) : endl; break;cased:system(cls);cout现有学生的名字:endl;list.DisplayName();coute ndl;cout请输入学生的endl;cinn ame;stu.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论