学生系统.docx
- 文档编号:24047410
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:19
- 大小:18.03KB
学生系统.docx
《学生系统.docx》由会员分享,可在线阅读,更多相关《学生系统.docx(19页珍藏版)》请在冰豆网上搜索。
学生系统
#include
#include
#include
#include
#include
usingnamespacestd;
//学生信息类
classstudent
{
public:
stringnum;//学生学号
stringname;//学生姓名
stringsex;//学生性别
stringnation;//学生民族
stringplace;//学生籍贯
stringbirth;//学生出生日期
stringparty;//学生政治面貌
stringid;//学生身份证号码
};
//Node链表
classNode//定义Node类
{
public:
studentstu;//定义student类对象stu
Node*next;//定义指向Node类型数据的指针变量next
};
//node链表
classnode//定义node类
{
public:
voidinput_stu(student);//声明添加函数
voiddelete_stu(string);//声明清除函数
Node*get_head();//声明返回值为指向Node类型数据的指针的函数
node(){_node=newNode;_node->next=NULL;};//定义构造函数
~node(){delete_node;};//定义析构函数
private:
Node*_node;//建立Node指针
};
//添加函数
voidnode:
:
input_stu(studentNew)//类外定义添加函数
{
Node*p1=newNode;//定义指向Node类型数据的指针变量p1,p1指向Node的新空间
Node*p2=_node;//定义指向Node类型数据的指针变量p2,p2指向_node
p1->stu=New;//使p1指向student类新建立的对象
p1->next=NULL;//p1所指向的next成员不存放其它结点的地址
while(p2->next!
=NULL)
//循环条件,p2指向的下一个结点不为空
p2=p2->next;//p2指向下一个结点
p2->next=p1;//将p1复制给p2所指的下一个结点
}
//清除函数
voidnode:
:
delete_stu(stringnumber)//类外定义清除函数
{
Node*p1;//定义指向Node类型数据的指针变量p1
Node*p2=_node;//定义指向Node类型数据的指针变量p2,使p2指向_node
while(!
(number==p2->next->stu.num))//按编号查找需要删除的student
{
p2=p2->next;
}//执行玩循环后p2指针指向该设备
p1=p2->next;
p2->next=p1->next;
deletep1;//删除该指针指向的设备
}
Node*node:
:
get_head()//返回新的链表
{
return_node;//返回新的链表
}
//学生信息管理类
classschool
{
private:
node*sch;
Node*node_read;
public:
~school();
school();
charchoise();
voidinput_sch();
voidmend_sch();
voidprint_sch();
voidcount();
voidfind();
voiddel();
};
//school构造函数
school:
:
school()
{
fstreamfs;
sch=newnode;
node_read=newNode;
fs.open("学生学籍.txt",ios:
:
in);
if(fs.is_open())
while(!
fs.eof())
{
if(fs>>node_read->stu.num>>node_read->stu.name
>>node_read->stu.sex>>node_read->stu.nation
>>node_read->stu.place>>node_read->stu.birth
>>node_read->stu.party>>node_read->stu.id)
sch->input_stu(node_read->stu);
}
fs.close();
}
//school析构函数
school:
:
~school()
{
fstreamfs;
Node*_node=sch->get_head();
fs.open("学生学籍.txt",ios:
:
out|ios:
:
trunc);
if(fs.is_open())
while(_node->next!
=NULL)
{
_node=_node->next;
fs<<_node->stu.num<<"\n"<<_node->stu.name<<"\n"
<<_node->stu.sex<<"\n"<<_node->stu.nation<<"\n"
<<_node->stu.place<<"\n"<<_node->stu.birth<<"\n"
<<_node->stu.party<<"\n"<<_node->stu.id<<"\n";
}
deletesch;
deletenode_read;
}
//输入函数
voidschool:
:
input_sch()
{
system("cls");
Node*_node=sch->get_head();
stringnumber;
inta=1;
cout<<"\t\t请输入新学生学号:
";
cin>>number;
while(a==1)
{
Node*_node=sch->get_head();
while(_node!
=NULL)
{
if(number==_node->stu.num)
{
a=1;
_node=NULL;
}
else{_node=_node->next;a=0;}
}
if(a==1)
{
cout<<"\t\t该学号学生已存在,请重新输入:
";
cin>>number;
}
else
{
a=0;
}
}
node_read->stu.num=number;
cout<<"\t\t请输入学生名称:
";
cin>>node_read->stu.name;
cout<<"\t\t请输入学生性别:
";
cin>>node_read->stu.sex;
cout<<"\t\t请输入学生民族:
";
cin>>node_read->stu.nation;
cout<<"\t\t请输入学生籍贯:
";
cin>>node_read->stu.place;
cout<<"\t\t请输入学生出生日期:
";
cin>>node_read->stu.birth;
cout<<"\t\t请输入学生政治面貌:
";
cin>>node_read->stu.party;
cout<<"\t\t请输入学生身份证:
";
cin>>node_read->stu.id;
sch->input_stu(node_read->stu);
}
//修改函数
voidschool:
:
mend_sch()
{
Node*_node=sch->get_head();
stringnumber;
inta=0;
boolz;
cout.width(10);
system("cls");
cout<<"\t\t请输入要修改的学生的学号:
";
cin>>number;
while(_node)
{
if(number==_node->stu.num)
{
cout< < < cout< < < < cout<<"\t\t是否修改该学生信息? 修改为1,不修改为0: "; cin>>z; if(z==1) { sch->delete_stu(number); input_sch(); _node=NULL; } else { _node=NULL; } a=1; } else { _node=_node->next; } } if(a==0) { cout<<"\t\t未找到该学生。 "; } cout<<"\t\t按任意键继续...."; getch(); } //输出函数 voidschool: : print_sch() { Node*_node=sch->get_head(); cout.width(10); system("cls"); while(_node->next! =NULL) { _node=_node->next; cout< < < cout< < < < } cout<<"按任意键继续"; getch(); } //统计函数 voidschool: : count() { Node*_node=sch->get_head(); intflag=0,count=0; charcz; stringname; stringplace; system("cls"); cout<<"\t\t************************\n"; cout<<"\t\t1.查找同姓名的学生\n"; cout<<"\t\t2.查找同籍贯的学生\n"; cout<<"\t\t************************\n"; cout<<"请选择你的需要: "; cin>>cz; switch(cz) { case'1': { cout<<"输入你要查找的学生名: "; cin>>name; while(_node) { if(name==_node->stu.name) { cout< cout< < < cout< < < < < count++; } _node=_node->next; } if(count==0) { cout<<"\t未找到此姓名的学生。 \n"; } else { cout<<"\n共有以上"< } };break; case'2': { cout<<"请输入你要查找的籍贯: "; cin>>place; while(_node) { if(place==_node->stu.place) { cout< < < cout< < < < < count++; } _node=_node->next; } if(count==0) { cout<<"\t未找到此籍贯的学生。 \n"; } else { cout<<"共有以上"< } };break; default: cout<<"您的输入有误,请输入1或2。 \n"; } cout<<"按任意键继续......"; getch(); } //查找函数 voidschool: : find()//在类外定义查找函数 { Node*_node=sch->get_head();//使每次循环时头指针都为第一个 stringnumber;//定义字符串变量number inta=0;//定义整型变量a,并给a赋初值为0 system("cls");//清屏 cout<<"\t\t\t请输入你要查询的学生的学号: "; cin>>number;//输入学生学号 while(_node->next! =NULL)//循环条件,_node指向的下一个节点不为空 { _node=_node->next;//将_node所指向的下一个结点的地址赋给_node if(number==_node->stu.num) { cout< < < cout< < < < a=1; } } if(a==0) { cout<<"\t\t\tsorry,未找到该学号的学生。 \n"; } cout<<"按任意键继续....."; getch(); } //删除函数 voidschool: : del() { Node*_node=sch->get_head();//使每次循环时头指针都为第一个 stringnumber;//定义字符串变量number intx=0;//定义整型变量x,并给x赋初值为0 boola;//判断作用 system("cls");//清屏 cout<<"\t\t请输入要删除的学生的学号: "; cin>>number;//输入学号 while(_node)//循环条件 { if(number==_node->stu.num) { cout< cout< < < cout< < < < cout<<"\t\t是否删除该学生信息? 删除为1,不删除为0: "; cin>>a; if(a==1) { sch->delete_stu(number);//删除该学生所有信息 cout<<"\n\t\t操作成功,学号为"< } _node=NULL; x=1; } else { _node=_node->next; } } if(x==0) { cout<<"\t\t未找到该学号的学生.\n"; } cout<<"\t\t按任意键继续...."; getch(); } //主选菜单函数 charschool: : choise() { chari; system("cls"); cout<<"☆☆☆欢迎进入学籍管理系统☆☆☆"< cout<<"*****"< cout<<"*********"< cout<<"***********"< cout<<"***1: 输入学生信息***"< cout<<"****2: 修改学生信息****"< cout<<"*****3: 分类学生信息*****"< cout<<"*****4: 显示所有学生记录*****"< cout<<"**5: 学生信息查询**"< cout<<"**6: 删除学生信息**"< cout<<"**0: 退出系统**"< cout<<"**************************"< cout<<"**************************"< cout<<"\n\t\t请输入要执行的操作(0-6): "; cin>>i; returni; } //主函数 intmain() { schoolone;//建立一个school类变量 intn=1; while(n)//循环选择界面直到用户选择退出 { switch(one.choise())//多选择结构 { case'0': n=0; break;//退出条件 case'1': one.input_sch();//执行学生信息添加函数 break; case'2': one.mend_sch();//执行学生信息修改函数 break; case'3': one.count();//执
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 系统