数据结构学生信息管理系统.docx

上传人:b****5 文档编号:7249457 上传时间:2023-01-22 格式:DOCX 页数:16 大小:16.73KB
下载 相关 举报
数据结构学生信息管理系统.docx_第1页
第1页 / 共16页
数据结构学生信息管理系统.docx_第2页
第2页 / 共16页
数据结构学生信息管理系统.docx_第3页
第3页 / 共16页
数据结构学生信息管理系统.docx_第4页
第4页 / 共16页
数据结构学生信息管理系统.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数据结构学生信息管理系统.docx

《数据结构学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构学生信息管理系统.docx(16页珍藏版)》请在冰豆网上搜索。

数据结构学生信息管理系统.docx

数据结构学生信息管理系统

//该程序健壮性不强,使用时请注意输入在链表以外的数值会发生错误!

谨记

#include

#include

#include

typedefstructstudent

{

intage;

intscore;

charname[10];

structstudent*next;

}st1;

voidcreat(st1*head);//创建链表

voidprint(st1*head);//打印链表

st1*find(st1*head,intindex);//链表查找

st1*insert(st1*head);//插入信息

voidinterface();//主菜单

voiddele(st1*head);//删除信息

voidchange(st1*head);//修改信息

voidreverse(st1*head);//反序输入信息

voidsort(st1*head);//链表排序(用值交换的方式)

voidinterface()

{

inti;

printf("\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

printf("*学生信息管理系统*\n");

printf("\n");

printf("请选择你的操作\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

printf("\n");

for(i=0;i<3;i++)

printf("");

for(i=0;i<7;i++)

printf("*****");

printf("\n");

printf("*1.初始化系统信息*\n");

printf("*2.插入学生信息*\n");

printf("*3.删除学生信息*\n");

printf("*4.修改学生信息*\n");

printf("*5.查找学生信息*\n");

printf("*6.显示所有学生信息*\n");

printf("*7.逆序显示学生信息*\n");

printf("*0.退出系统*\n");

for(i=0;i<3;i++)

printf("");

for(i=0;i<7;i++)

printf("*****");

printf("\n");

printf("\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

printf("请输入以上序号(0-7):

");

}

intmain()

{

intk;

inta;

inti;

intindex;//用于选择

intexit=1;

intchoose;//用于判断

st1*head=NULL,*p;

head=(st1*)malloc(sizeof(st1));//分配头指针空间

do

{

system("cls");

interface();

scanf("%d",&a);

system("cls");

if(a==0)//退出系统

{

for(k=1;k>0;k--)

{system("cls");

printf("正在退出系统,请稍等");

for(i=0;i<89999999;i++)

{};

printf("....");

for(i=0;i<89999999;i++)

{};

}

printf("\n\n");

printf("是否退出系统(1/0):

");

scanf("%d",&choose);

if(choose==1)

{system("cls");

exit=0;

for(i=0;i<3;i++)

printf("");

printf("\n\n\n\n");

for(i=0;i<89999999;i++)

{};

printf("欢迎下次使用学生信息管理系统!

!

!

!

\n\n\n");

}

}

switch(a)//选择7以内的数字进行链表操作system("cls");

{

case1:

//创建链表

printf("\n");

for(i=0;i<20;i++)

printf("====");

printf("\n*初始化系统信息*\n\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

creat(head);

printf("\n初始化信息完毕!

,请输入1返回主菜单:

");

scanf("%d",&choose);

while(choose!

=1)

{

printf("请输入1返回主菜单:

");

scanf("%d",&choose);

}

break;

case2:

//插入学生信息

printf("\n");

for(i=0;i<20;i++)

printf("====");

printf("\n*插入学生信息*\n\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

insert(head);

printf("\n插入学生信息完毕!

,请输入1返回主菜单:

");

scanf("%d",&choose);

while(choose!

=1)

{

printf("请输入1返回主菜单:

");

scanf("%d",&choose);

}

break;

case3:

//删除学生信息

printf("\n");

for(i=0;i<20;i++)

printf("====");

printf("\n*删除学生信息*\n\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

dele(head);

printf("\n删除信息完毕,请输入1返回主菜单:

");

scanf("%d",&choose);

while(choose!

=1)

{

printf("请输入1返回主菜单:

");

scanf("%d",&choose);

}

break;

case4:

//修改信息

printf("\n");

for(i=0;i<20;i++)

printf("====");

printf("\n*修改学生信息*\n\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

change(head);

printf("\n修改信息完毕!

,请输入1返回主菜单:

");

scanf("%d",&choose);

while(choose!

=1)

{

printf("请输入1返回主菜单:

");

scanf("%d",&choose);

}

break;

case5:

//查找学生信息

printf("\n");

for(i=0;i<20;i++)

printf("====");

printf("\n*查找学生信息*\n\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

printf("输入你要查找第几位学生:

");

scanf("%d",&index);

p=find(head,index);//查找学生信息并返回地址

printf("姓名:

%s年龄:

%d分数:

%d\n",p->name,p->age,p->score);

printf("\n查找信息完毕!

,请输入1返回主菜单:

");

scanf("%d",&choose);

while(choose!

=1)

{

printf("请输入1返回主菜单:

");

scanf("%d",&choose);

}

break;

case6:

//排序

printf("\n");

for(i=0;i<20;i++)

printf("====");

printf("\n*显示所有学生信息*\n\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

sort(head);

print(head);//打印排序后的学生信息

printf("\n信息输出完毕!

,请输入1返回主菜单:

");

scanf("%d",&choose);

while(choose!

=1)

{

printf("请输入1返回主菜单:

");

scanf("%d",&choose);

}

break;

case7:

//链表反转

printf("\n");

for(i=0;i<20;i++)

printf("====");

printf("\n*逆序显示学生信息*\n\n");

for(i=0;i<20;i++)

printf("====");

printf("\n");

reverse(head);

printf("\n信息输出完毕!

,请输入1返回主菜单:

");

scanf("%d",&choose);

while(choose!

=1)

{

printf("请输入1返回主菜单:

");

scanf("%d",&choose);

}

break;

default:

break;

}

}while(1&&exit);

}

voidcreat(st1*head)

{

inti;

intn;

st1*p,*q;

printf("输入学生人数:

");

scanf("%d",&n);

for(i=0;i

{

printf("输入第%d个学生信息:

\n",i+1);

p=(st1*)malloc(sizeof(st1));

printf("输入姓名:

");

scanf("%s",&p->name);

printf("输入年龄:

");

scanf("%d",&p->age);

printf("输入分数:

");

scanf("%d",&p->score);

printf("输入第%d个学生信息完成",i+1);

printf("\n\n");

if(0==i)

{

head->next=p;

}

else

{

q->next=p;

}

q=p;

}

p->next=NULL;

}

voidprint(st1*head)

{

st1*x;

x=head->next;

printf("学生信息如下:

\n");

while(x)

{

printf("姓名:

%s年龄:

%d分数:

%d\n",x->name,x->age,x->score);

x=x->next;

}

printf("\n");

}

st1*find(st1*head,intidex)

{

st1*p;

inti=1;

p=head->next;

while(p)

{

if(i

{

p=p->next;

i++;

}

else

returnp;

}

returnp;

}

st1*insert(st1*head)

{

st1*newst,*p;

inti=1;

intindex;

printf("要插入的位置:

");

scanf("%d",&index);//所要插入第几位学生信息

p=head->next;

newst=(st1*)malloc(sizeof(st1));

printf("输入姓名:

");

scanf("%s",&newst->name);

printf("输入年龄:

");

scanf("%d",&newst->age);

printf("输入分数:

");

scanf("%d",&newst->score);

printf("输入学生信息完成\n\n");

if(1==index)

{

st1*q=head->next;

head->next=newst;

newst->next=q;

}

else

while(p)

{

if(i==(index-1))

{

st1*q=p->next;

p->next=newst;

newst->next=q;

}

p=p->next;

i++;

}

returnp;

}

voiddele(st1*head)

{

st1*p,*q;

inti=1;

intindex;

printf("输入删除第几位学生信息:

");

scanf("%d",&index);//所要删除第几位学生信息

p=head->next;

if(1==index)

{

p=head->next;

head->next=p->next;

free(p);

p=NULL;

}

else

while(p)

{

if(i==(index-1))

{

q=p->next;

p->next=q->next;

free(q);

}

p=p->next;

i++;

}

printf("第%d位学生信息已经删除\n",index);

}

voidchange(st1*head)

{

st1*p=NULL;

inta;

printf("输入修改第几位学生信息:

\n");

scanf("%d",&a);

p=find(head,a);//修改之前调用find函数找到该学生信息

printf("输入姓名:

");

scanf("%s",&p->name);

printf("输入年龄:

");

scanf("%d",&p->age);

printf("输入分数:

");

scanf("%d",&p->score);

printf("输入学生信息完成\n");

}

voidreverse(st1*head)

{

st1*p=head->next,*q;

head->next=NULL;

while(p!

=NULL)

{

q=p->next;

p->next=head->next;

head->next=p;

p=q;

}

print(head);//打印学生信息

}

voidsort(st1*head)

{

st1*p,*q;

intm;

inttemp;//交换score临时变量

inttemp1;//交换age临时变量

chartemp2[10];//交换name临时变量

printf("选择1.按成绩2.按年龄排序\n");

scanf("%d",&m);

switch(m)

{

case1:

for(p=head;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->score>q->score)

{

temp=q->score;

q->score=p->score;

p->score=temp;

temp1=q->age;

q->age=p->age;

p->age=temp1;

strcpy(temp2,q->name);

strcpy(q->name,p->name);

strcpy(p->name,temp2);

}

}

}

break;

case2:

for(p=head;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->age>q->age)

{

temp=q->score;

q->score=p->score;

p->score=temp;

temp1=q->age;

q->age=p->age;

p->age=temp1;

strcpy(temp2,q->name);

strcpy(q->name,p->name);

strcpy(p->name,temp2);

}

}

}

break;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1