数据结构课程设计学生信息管理系统Word格式.docx

上传人:b****4 文档编号:17034447 上传时间:2022-11-28 格式:DOCX 页数:19 大小:131.91KB
下载 相关 举报
数据结构课程设计学生信息管理系统Word格式.docx_第1页
第1页 / 共19页
数据结构课程设计学生信息管理系统Word格式.docx_第2页
第2页 / 共19页
数据结构课程设计学生信息管理系统Word格式.docx_第3页
第3页 / 共19页
数据结构课程设计学生信息管理系统Word格式.docx_第4页
第4页 / 共19页
数据结构课程设计学生信息管理系统Word格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据结构课程设计学生信息管理系统Word格式.docx

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

数据结构课程设计学生信息管理系统Word格式.docx

建立单向链表,组织循环,将学生的信息依次录入。

②:

查找学生信息:

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);

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

当前位置:首页 > 经管营销 > 金融投资

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

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