数据结构课程设计学生信息管理系统Word格式.docx
《数据结构课程设计学生信息管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计学生信息管理系统Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
建立单向链表,组织循环,将学生的信息依次录入。
②:
查找学生信息:
a.按学号查找,find1()函数;
b.按姓名查找,find2()函数;
③.删除学生信息,del()函数:
建立指针,在链表中寻找要删除信息的学生的学号,找到后p->
next=p->
next->
next,将其删除。
④.插入学生信息,insert()函数;
输入要插入的信息,建立指针,寻找要插入的节点。
⑤.显示学生信息,print()函数;
将以存在的学生信息输出
⑥.按某科成绩对学生进行排序,sort()函数;
五、详细设计及运行结果
1.菜单:
2.creat()函数.
3.find()函数.
find1():
find2():
3.del()函数.
4.insert()函数.
5.print()函数.
6.sort()函数.
六、调试情况,设计技巧及体会
通过这次课程设计,我对这门课又有了一个新的理解,最大的喜悦不是写出程序,而是从中学会了怎么去写,该如何去写,在老师的严格监督下,自己也养成了独立思考的习惯,真的从中得到了很多好处,从思想到着手,所有都是程序化的,必须踏踏实实的来。
通过学生信息管理系统的设计,使我对链表有了更深的了解,也懂得了如何用链表进行输入,插入,排序等操作,两个礼拜的实习很快就过去了,这一次真的学到了很多东西,我也将会将自己所学到的东西用到自己以后的学习中去。
七、参考文献
C语言程序设计--------------科学出版社
数据结构(C语言描述)-----清华大学出版社
数据结构(使用C语言)-----电子科技大学出版社
八、附录:
源代码
#include<
stdio.h>
string.h>
stdlib.h>
#defineNsizeof(structstu)
voidclearscreen()/*清屏函数*/
{getchar();
system("
cls"
);
}
structdate/*定义出生年月日的结构体*/
{intyear;
intmouth;
intday;
};
structstu/*定义学生信息的结构体*/
{intnumber;
charname[30];
charsex[5];
structdatebirthday;
charmail[30];
charphone[30];
intcscore,mscore;
structstu*next;
/*输出函数*/
intprint(structstu*p)
{
while(p!
=NULL)/*如果P所指的结点不为空执行循环*/
{printf("
学号姓名性别出生日期E-mail电话C成绩数学成绩\n"
printf("
%2d%6s%6s%8d-%2d-%2d%11s%11s%6d%8d\n"
p->
number,p->
name,p->
sex,p->
birthday.year,p->
birthday.mouth,p->
birthday.day,p->
mail,p->
phone,p->
cscore,p->
mscore
);
p=p->
next;
}
\n\n按回车键返回\n\n"
getchar();
return0;
/*创建链表*/
structstu*creat()
{structstu*p,*head;
inti,k;
请输入学生的数:
\n"
scanf("
%d"
&
k);
p=head=(structstu*)malloc(N);
请输入学号\n"
p->
number);
姓名\n"
%s"
name);
性别\n"
sex);
出生日期\n"
%d-%d-%d"
birthday.year,&
birthday.mouth,&
birthday.day);
E-mail\n"
mail);
电话\n"
phone);
c成绩\n"
cscore);
数学成绩\n"
mscore);
if(k>
1)
for(i=1;
i<
k;
i++)
{p->
next=(structstu*)malloc(N);
请输入学号\n"
p->
next=NULL;
returnhead;
/*查找链表*/
structstu*find1(structstu*p)
{intnumber;
if(p==NULL)
{
\n提示:
没有资料可以查询!
请输入要查找的学生学号:
"
=NULL)
if(p->
number==number)
{
return(p);
break;
}
else
p=p->
returnNULL;
structstu*find2(structstu*p)
{
请输入要查找的学生姓名:
name);
if(strcmp(p->
name,name)==0)
else
p=p->
/*删除链表*/
intdel(structstu**h)
intnumber;
structstu*p,*p0;
if(*h==NULL)
return0;
请输入要删除的学号\n"
p0=*h;
if(p0->
number==number)
*h=p0->
free(p0);
return1;
p=p0->
p0->
free(p);
return1;
p0=p;
\n按回车键返回\n"
/*插入链表*/
intinsert(structstu**h)
p=(structstu*)malloc(N);
请输入要插入的学号\n"
%ld"
number==p->
number)
%d%d%d"
if(*h==NULL)
*h=p;
number>
p->
next=*h;
while(p0->
next!
=NULL&
&
p0->
number<
p0=p0->
next==NULL)
p0->
next=p;
next=p0->
p0->
return1;
/*排序*/
structstu*sort(structstu*p0)
{
structstu*t,*p,*q,*z;
if(p0==NULL)
printf("
没有学生信息可排序!
}
if((p0==NULL)||(p0->
next==NULL))/*当节点不存在或者只有一个节点时*/
returnp0;
t=p0;
p=t->
t->
/*将头节点孤立出来*/
while(p)/*t始终指向头节点*/
q=p->
cscore>
t->
cscore)/*用头节点的后一个节点与头节点进行比较*/
{
p->
next=t;
/*将分数大的放在前面*/
t=p;
/*t始终指向当前第一个节点*/
}
z=t;
while(z->
next&
z->
=p->
cscore)
z=z->
next=z->
z->
p=q;
p0=t;
returnp0;
voidmain()
structstu*head,*p;
inta;
intb;
*****************************西安邮电学院学生管理系统***************************\n"
要进入系统请按任意键\n"
*****************************欢迎您!
您已进入管理系统***************************\n"
*********************************学生成绩管理系统*******************************\n"
do
clearscreen();
学生纪录操作:
1:
输入学生信息\n"
2:
查找学生信息\n"
3:
删除学生信息\n"
4:
插入学生信息\n"
5:
显示学生信息\n"
6:
按C语言成绩排序\n"
0:
退出系统\n"
请选择(0~6):
scanf("
b);
switch(b)
case1:
head=creat();
print(head);
break;
case2:
printf("
请输入要查找的种类:
如为学号请输1,如为姓名请输2:
a);
switch(a)
{
case1:
p=find1(head);
break;
case2:
p=find2(head);
}
if(p)
{printf("
找到情况如下:
getchar();
printf("
学号:
%d姓名:
%s性别:
%s出生日期:
%d-%d-%dE-mail:
%s电话:
%sC成绩:
%d数学成绩:
%d\n"
}
else
没有找到!
break;
case3:
if(del(&
head))
已正确删除!
else
要删除的结点不存在!
case4:
if(insert(&
已成功插入!
else
此学生已存在,插入失败!
case5:
print(head);
case6:
p=sort(head);
print(p);
case0:
default:
输入错误!
请重新输入!
}while(b!
=0);