c++数据结构学生管理系统Word文件下载.docx
《c++数据结构学生管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《c++数据结构学生管理系统Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。
strsex);
voidSetBrith(string&
strbrith);
voidSetID(string&
strID);
voidSetMajor(string&
strmajor);
voidEditPerson();
booloperator!
=(Student&
stu);
booloperator>
(Student&
friendostream&
operator<
<
(ostream&
ost,Student&
friendifstream&
operator>
>
(ifstream&
friendofstream&
(ofstream&
stringGetName();
2、核心代码
ostream&
stu)
{
ost<
"
Name"
stu.name<
endl;
Sex"
stu.sex<
Brithday"
stu.brithday<
ID"
stu.ID<
Major"
stu.major<
returnost;
}
3、测试代码
Case’a’:
case'
b'
:
system("
cls"
);
list.PrintLinkList();
cout<
请输入选择(帮助选项-->
h):
"
break;
cout<
当前链表的长度为:
length=list.ListLength();
c'
d'
system("
现有学生的名字:
list.DisplayName();
请输入学生的姓名"
cin>
name;
stu.SetName(name);
delstu=list.Find(stu);
delstu;
delstu=list.Find(stu);
3、源代码
f'
g'
list.Sort();
list.PrintLinkList();
LinkList.h
#ifndefLinkList_H
#defineLinkList_H
#include<
windows.h>
#include<
fstream>
usingnamespacestd;
template<
classT>
structNode
Tdata;
//元素自身的信息,数据域
Node<
T>
*next;
//后继元素存储地址,地址域
};
classLinkList
*head;
//单链表的头指针
public:
LinkList();
LinkList(Ta[],intn);
voidSetLinList(Ta[],intn);
~LinkList();
intListLength();
//求链表的长度
TGet(intpos);
//按位查找,取单链表中第POS个节点的元素值
TFind(Titem);
//查找函数,以T类型的数据作为参数
intLocate(Titem);
//按值查找,求单链表中值为item的元素的序号
voidPrintLinkList();
voidInsert(inti,Titem);
//在i的位置插入元素item
TDelete(inti);
//在单链表中删除第i个节点,并返回这个值
voidInvert();
//逆置函数
friendvoidMerge(LinkList<
&
L1,LinkList<
L2);
//归并链表
voidDisplayNode(inti);
voidSave(charfname[]);
//保存
voidOpen(charfname[]);
voidDisplayName();
//显示名字
voidSort();
//排序
#endif
LinkList.cpp
#include"
LinkList.h"
//用于创建一个带有头结点的空链表
LinkList<
LinkList()
head=newNode<
;
//私有
head->
next=NULL;
/*
用于创建一个带有头结点的空链表
*/
LinkList(Ta[],intn)//尾插法
*rear;
rear=head;
//指向当前单链表的最后一个节点
for(inti=0;
i<
n;
i++)
{
Node<
*s;
s=newNode<
s->
data=a[i];
rear->
next=s;
//rear=head
rear=s;
//rear一直是指向单链表的最后一项
}
rear->
//单链表创建结束,最后一个节点的指针置为空
voidLinkList<
SetLinList(Ta[],intn)
*rear=head;
intLinkList<
ListLength()
intnum=0;
*p;
p=head->
next;
while(p)
p=p->
num++;
returnnum;
TLinkList<
Get(intpos)
intj=1;
//p指向头结点的下一个节点
while(p&
&
j<
pos)
j++;
if(!
p||j>
cout<
查找位置非法"
exit
(1);
else
returnp->
data;
Find(Titem)
p->
data!
=item)
p)
Locate(Titem)
if(p)
returnj;
return0;
PrintLinkList()
data<
Insert(inti,Titem)
p=head;
intj=0;
i-1)
cerr<
插入位置非法"
*s=newNode<
data=item;
next=p->
p->
Delete(inti)
*p,*q;
Tx;
p||!
next)
位置非法"
q=p->
x=q->
next=q->
deleteq;
returnx;
/*利用头插法*/
Invert()
//将逆置后的单链表初始化为空表
while(p!
=NULL)
Node