c++数据结构学生管理系统方案

上传人:彩*** 文档编号:96560383 上传时间:2022-05-25 格式:DOCX 页数:22 大小:157.70KB
收藏 版权申诉 举报 下载
c++数据结构学生管理系统方案_第1页
第1页 / 共22页
c++数据结构学生管理系统方案_第2页
第2页 / 共22页
c++数据结构学生管理系统方案_第3页
第3页 / 共22页
资源描述:

《c++数据结构学生管理系统方案》由会员分享,可在线阅读,更多相关《c++数据结构学生管理系统方案(22页珍藏版)》请在装配图网上搜索。

1、.C+数据结构学生管理系统单链表实现用模板类实现,实现操作符的重载非常详细的代码及其操作1、Student.hprivate:2、string name;/ 姓名string ID;/ 学号string sex;/ 性别string major;/ 专业string brithday;/ 生日int ave;/ 均分Student();void SetName(string& strname);void SetSex(string& strsex);void SetBrith(string& strbrith);void SetID(string& strID);void SetMajor(s

2、tring& strmajor);void EditPerson();bool operator !=(Student& stu);bool operator(Student& stu);friend ostream& operator(ifstream& ost,Student& stu);friend ofstream& operator(ofstream& ost,Student& stu);string GetName();2、核心代码ostream& operator(ostream& ost,Student& stu)ostNamestu.nameendl;ostSexstu.se

3、xendl;ostBrithday stu.brithdayendl;ostIDstu.IDendl;ostMajorstu.major(ifstream& ost,Student& stu)oststu.name;oststu.sex;oststu.brithday;oststu.ID;oststu.major;return ost;ofstream& operator (ofstream& ost,Student& stu)oststu.nameendl;oststu.sexendl;oststu.brithdayendl;oststu.IDendl;oststu.major(Studen

4、t& stu1)if(stu1.aveave)return true;return false;3、测试代码.Casea:system(cls);/stu.EditPerson();cout 请输入学生的姓名name;stu.SetName(name);cout 请输入学生的性别sex;stu.SetSex(sex);cout 请输入学生的生日brithday;stu.SetBrith(brithday);cout 请输入学生的学号ID;stu.SetID(ID);cout 请输入学生的专业major;stu.SetMajor(major);cout 请输入平均成绩ave;stu.SetAve

5、(ave);list.Insert(1,stu);list.Save(Student.txt);cout h ) : endl;break;caseb:system(cls);list.PrintLinkList();cout h ) : endl;break;.casec:cout 当前链表的长度为:endl;length=list.ListLength();cased:system(cls);cout 现有学生的名字:endl;list.DisplayName();coutendl;cout 请输入学生的姓名name;stu.SetName(name);delstu=list.Find(s

6、tu);.cased:cout 现有学生的名字:endl;list.DisplayName();coutendl;cout 请输入学生的姓名name;stu.SetName(name);delstu=list.Find(stu);coutdelstu;3、 源代码.casef:system(cls);cout 现有学生的名字:endl;list.DisplayName();cout 请输入修改的学生的姓名:name;tu.SetName(name);delstu=list.Find(stu);pos=list.Locate(stu);list.Delete(pos);cout 请输入学生的新的

7、信息:endl;coutendl;cout 请输入学生的姓名name;stu.SetName(name);cout 请输入学生的性别sex;stu.SetSex(sex);cout 请输入学生的生日brithday;stu.SetBrith(brithday);cout 请输入学生的学号ID;stu.SetID(ID);cout 请输入学生的专业major;.cout 请输入平均成绩ave;stu.SetAve(ave);.caseg:list.Sort();list.PrintLinkList();LinkList.h#ifndef LinkList_H#define LinkList_H.

8、#include #includeusing namespace std;templatestruct NodeT data;/ 元素自身的信息,数据域Node *next;/ 后继元素存储地址,地址域;templateclass LinkListNode *head;/ 单链表的头指针public:LinkList();LinkList(T a,int n);void SetLinList(T a,int n);LinkList();int ListLength();/ 求链表的长度T Get(int pos);/ 按位查找,取单链表中第POS个节点的元素值T Find(T item);/

9、查找函数 , 以 T 类型的数据作为参数int Locate(T item);/ 按值查找,求单链表中值为item 的元素的序号void PrintLinkList();void Insert(int i,T item);/ 在 i 的位置插入元素itemT Delete(int i);/ 在单链表中删除第i 个节点,并返回这个值void Invert();/ 逆置函数friend void Merge(LinkList &L1,LinkList &L2);/归并链表void DisplayNode(int i);void Save(char fname);/ 保存void Open(char

10、 fname);void DisplayName();/ 显示名字void Sort();/ 排序;#endifLinkList.cpp#includeLinkList.htemplate/ 用于创建一个带有头结点的空链表LinkList:LinkList().head=new Node;/私有head-next=NULL;template/*用于创建一个带有头结点的空链表*/LinkList:LinkList(T a,int n)/尾插法Node *rear;rear=head;/指向当前单链表的最后一个节点for(int i=0;in;i+)Node *s;s=new Node;s-dat

11、a=ai;rear-next=s;/rear=headrear=s;/rear一直是指向单链表的最后一项rear-next=NULL;/单链表创建结束,最后一个节点的指针置为空templatevoid LinkList:SetLinList(T a,int n)head=new Node;Node *rear=head;for(int i=0;in;i+)Node *s;s=new Node;s-data=ai;rear-next=s;rear=s;rear-next=NULL;/单链表创建结束,最后一个节点的指针置为空templateint LinkList:ListLength()int

12、num=0;.Node *p;p=head-next;while(p)p=p-next;num+;return num;templateT LinkList:Get(int pos)Node *p;int j=1;p=head-next;/p指向头结点的下一个节点while(p&jnext;j+;if(!p|jpos)coutdata;templateT LinkList:Find(T item)Node *p;p=head-next;while(p&p-data!=item)p=p-next;if(!p)coutdata;.templateint LinkList:Locate(T item

13、)Node *p;p=head-next;int j=1;while(p&p-data!=item)p=p-next;j+;if(p)return j;elsereturn 0;templatevoid LinkList:PrintLinkList()Node *p;p=head-next;while(p)coutdatanext;templatevoid LinkList:Insert(int i,T item)Node *p;p=head;int j=0;while(p&jnext;j+;if(!p)cerr 插入位置非法 ;exit(1);.elseNode *s=new Node;s-

14、data=item;s-next=p-next;p-next=s;templateT LinkList:Delete(int i)Node *p,*q;T x;p=head; int j=0; while(p&jnext; j+;if(!p|!p-next)cerrnext; x=q-data; p-next=q-next; delete q; return x;/* 利用头插法 */templatevoid LinkList:Invert()Node *p;p=head-next;head-next=NULL;/将逆置后的单链表初始化为空表.while(p!=NULL)Node *q=p;p

15、=p-next;q-next=head-next;head-next=q;templateLinkList:LinkList()Node *q=new Node;while(head!=NULL)q=head;head=head-next;delete q;templatevoid Merge(LinkList &L1,LinkList &L2)/归并链表Node *p1,*p2,*p3;p1=L1.head-next;/指向第一个数据的节点p2=L2.head-next;p3=L1.head;/指向 L1 的头结点while(p1!=NULL)&(p2!=NULL)if(p1-data)da

16、ta)p3-next=p1;p1=p1-next;p3=p3-next;elsep3-next=p2;p2=p2-next;p3=p3-next;if(p1!=NULL)/p2为空的时候p3-next=p1;.if(p2!=NULL)p3-next=p2;delete L2.head;L2.head=NULL;templatevoid LinkList:Save(char fname)ofstream fout(fname);foutListLength()endl;Node *p;p=head-next;while(p!=NULL)foutdatanext;fout.close();temp

17、latevoid LinkList:Open(char fname)ifstream fin(fname);int n;finn;T item;for(int i=0;in;i+)/ Node *p=new Node;/ finp-data; finitem; Insert(i+1,item);fin.close();templatevoid LinkList:DisplayName()Node *p;p=head-next;while(p).coutdata.GetName()next;templatevoid LinkList:Sort()Node *p;int len=ListLengt

18、h();for(int i=1;inext;for(int j=0;jdatap-next-data)T temp=p-data;p-data=p-next-data;p-next-data=temp;p=p-next;Student.h#includeLinkList.h#include#includeusing namespace std;class Student;ostream& operator(ifstream& ost,Student& stu);ofstream& operator (Student& stu);friend ostream& operator(ifstream

19、& ost,Student& stu);friend ofstream& operator(ofstream& ost,Student& stu);string GetName();Student.cpp#includeStudent.h#includeusing namespace std;ostream& operator(ostream& ost,Student& stu)ostNamestu.nameendl;ostSexstu.sexendl;ostBrithday stu.brithdayendl;ostIDstu.IDendl;ostMajorstu.majorendl;ostA

20、verage stu.ave(ifstream& ost,Student& stu)oststu.name;oststu.sex;oststu.brithday;oststu.ID;oststu.major;oststu.ave;return ost;.ofstream& operator (ofstream& ost,Student& stu)oststu.nameendl;oststu.sexendl;oststu.brithdayendl;oststu.IDendl;oststu.majorendl;oststu.ave(Student& stu1).if(stu1.aveave)ret

21、urn true;return false;string Student:GetName()return name;void Student:EditPerson()Test.cpp#includeLinkList.cpp#includeStudent.h#include#include#includeusing namespace std;void menu()couta 、增加一个学生信息endl;coutb 、打印链表 endl;coutc 、获取当前链表的长度endl;coutd 、查询学生的信息endl;coute 、删除学生信息endl;coutf、修改学生的信息endl;cout

22、g 、按平均成绩进行排序endl;couth 、帮助 endl;couto 、退出 endl;void main()char ch;LinkList list;list.Open(Student.txt);string name,sex,ID,brithday,major,newname;int length,pos,ave;Student stu,delstu;menu();coutinputendl;do.ch=getchar();switch(ch)caseh:system(cls);menu();break;casea:system(cls);/stu.EditPerson();cou

23、t 请输入学生的姓名name;stu.SetName(name);cout 请输入学生的性别sex;stu.SetSex(sex);cout 请输入学生的生日brithday;stu.SetBrith(brithday);cout 请输入学生的学号ID;stu.SetID(ID);cout 请输入学生的专业major;stu.SetMajor(major);cout 请输入平均成绩ave;stu.SetAve(ave);list.Insert(1,stu);list.Save(Student.txt);cout h) : endl;break;caseb:system(cls);list.Pr

24、intLinkList();cout h) : endl;break;casec:system(cls);cout 当前链表的长度为:endl;length=list.ListLength();coutlength=lengthendl;cout h) : endl;break;.cased:system(cls);cout 现有学生的名字:endl;list.DisplayName();coutendl;cout 请输入学生的姓名name;stu.SetName(name);delstu=list.Find(stu);coutdelstu;cout h) : endl;break;casee

25、:system(cls);cout 现有学生的名字:endl;list.DisplayName();coutname;stu.SetName(name);pos=list.Locate(stu);delstu=list.Delete(pos);coutendl;list.PrintLinkList();list.Save(Student.txt);cout h) : endl;break;casef:system(cls);cout 现有学生的名字:endl;list.DisplayName();cout 请输入修改的学生的姓名:name;stu.SetName(name);delstu=li

26、st.Find(stu);pos=list.Locate(stu);list.Delete(pos);cout 请输入学生的新的信息:endl;/ stu.EditPerson();coutendl;cout 请输入学生的姓名 name;stu.SetName(name);cout 请输入学生的性别 sex;.stu.SetSex(sex);cout 请输入学生的生日brithday;stu.SetBrith(brithday);cout 请输入学生的学号ID;stu.SetID(ID);cout 请输入学生的专业major;stu.SetMajor(major);cout 请输入平均成绩ave;stu.SetAve(ave);list.Insert(pos,stu);list.PrintLinkList();list.Save(Student.txt);cout h) : endl;break;caseg:list.Sort();list.PrintLinkList();caseo:exit(0);break;while(1);.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!