用C++实现一个简易的高校学籍管理系统。
答案:2 悬赏:0
解决时间 2021-12-28 21:10
- 提问者网友:伪善人独行者
- 2021-12-28 10:09
基本要求
1.采用单链表存储方式。
2.提供建立、查询、删除、增加、修改的功能。
3.main()函数中使用菜单选择各项功能。
-----------------------------------------------
以下是前面代码。
-----------------------------------------------
#include
#include
class list //建学生链表类
{
public:
int num,score;
char name[10];
class list *next;
};
typedef class list node;
typedef node *link;
link r,head,s; //声明头指针、工作指针、新结点指针
void create() //创建单链表
{
s=new node; //建立新节点,用s指针指向她
cout<<"请输入学号:"; // 输入节点内容
cin>>s->num ;
cout<<"请输入姓名:";
cin>>s->name ;
cout<<"请输入学分:";
cin>>s->score ;
r->next=s; // 把新节点连到链表上
r=s;
}
void linklist() //遍历单链表
{
r=head->next;
while(r)
{
cout<<"学号:"<num< cout<<"姓名:"<name< cout<<"成绩:"<score< r=r->next ;
}
}
void main()
{int i;
head=new node; //建立头指针
r=head; //工作指针指向头指针
cout<<"请建立学生档案链表:"<for(i=1;i<=3;i++)
create();
linklist();
//遍历单链表
}
-----------------------------------------------
在此谢谢,本人在线等 高手百度hi我。很急、、明天结束问题。。。。
最佳答案
- 二级知识专家网友:怪咖小青年
- 2021-12-28 10:27
#include
#include
class list //建学生链表类
{
public:
int num,score;
char name[10];
class list *next;
};
typedef class list node;
typedef node *link;
link r,head,s; //声明头指针、工作指针、新结点指针
void create() //创建单链表
{
link p;
s=new node; //建立新节点,用s指针指向她
cout<<"请输入学号:"; // 输入节点内容
cin>>s->num ;
cout<<"请输入姓名:";
cin>>s->name ;
cout<<"请输入学分:";
cin>>s->score ;
s->next=NULL;
if(!head->next)
head->next=s;
else
{
p=head->next;
while(p->next)
p=p->next;
p->next=s;
}
}
void linklist() //遍历单链表
{
link q=head->next;
if(!q)
cout<<"没有学生信息!"<
{
while(q)
{
cout<<"学号:"<num<
cout<<"姓名:"<name<
cout<<"成绩:"<score<
q=q->next ;
}
}
}
void show_node(link q)
{
cout<<"学号:"<num<
cout<<"姓名:"<name<
cout<<"成绩:"<score<
}
link search_node(int num) //学号查找
{
link q=head->next;
while(q)
{
if(q->num==num)
return q;
else
q=q->next ;
}
return NULL;
}
void delete_node(int num)
{
link p=head,q=head->next;
while(q)
{
if(q->num==num)
{
p->next=q->next;
delete q;
q=NULL;
}
else
{
p=q;
q=q->next ;
}
}
}
void modify_name(char a[],char b[])
{
for(int i=0;i<10;i++)
a[i]=b[i];
}
void modify(int num,link p)
{
link q=head->next;
while(q)
{
if(q->num==num)
{
q->num=p->num;
modify_name(q->name,p->name);
q->score=p->score;
break;
}
else
q=q->next ;
}
}
void main()
{
head=new node; //建立头指针
head->next=NULL;
cout<<"1、添加学生信息"<
cout<<"2、显示学生信息"<
cout<<"3、查询学生信息"<
cout<<"4、修改学生信息"<
cout<<"5、删除学生信息"<
int choice;
while(true)
{
cout<<"输入您的命令代号:";
cin>>choice;
switch(choice)
{
case 1:create();break;
case 2:
{
cout<<"学生信息为:"<
linklist();
};break;
case 3:{
int code;
link q=NULL;
cout<<"输入要查询的学号:";
cin>>code;
q=search_node(code);
if(!q)
cout<<"您查找的学生不存在!"<
else
{
cout<<"查找结果为:"<
show_node(q);
}
};break;
case 4:{
int code;
link q=NULL;
cout<<"输入要修改的学生学号:";
cin>>code;
q=search_node(code);
if(!q)
cout<<"您查找的学生不存在!"<
else
{
link p=new node;
p->num=code;
cout<<"输入新的信息:"<
cout<<"姓名:";
cin>>p->name;
cout<<"学分:";
cin>>p->score;
modify(q->num,p);
cout<<"修改后的学生信息为:"<
show_node(p);
}
};break;
case 5:{
int code;
link q=NULL;
cout<<"输入要删除的学号:";
cin>>code;
q=search_node(code);
if(!q)
cout<<"您要删除的学生不存在!"<
else
{
delete_node(q->num);
cout<<"删除后的结果为:"<
linklist();
}
};break;
}
}
}
全部回答
- 1楼网友:青春如此荒謬
- 2021-12-28 10:39
我要举报
大家都在看
推荐资讯