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