双链表课程设计学生信息管理系统Word格式.docx

上传人:b****5 文档编号:21455702 上传时间:2023-01-30 格式:DOCX 页数:25 大小:19.77KB
下载 相关 举报
双链表课程设计学生信息管理系统Word格式.docx_第1页
第1页 / 共25页
双链表课程设计学生信息管理系统Word格式.docx_第2页
第2页 / 共25页
双链表课程设计学生信息管理系统Word格式.docx_第3页
第3页 / 共25页
双链表课程设计学生信息管理系统Word格式.docx_第4页
第4页 / 共25页
双链表课程设计学生信息管理系统Word格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

双链表课程设计学生信息管理系统Word格式.docx

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

双链表课程设计学生信息管理系统Word格式.docx

\t\t││\t3\t修改学生信息││\n"

\t\t││\t4\t删除学生信息││\n"

\t\t││\t5\t显示学生信息││\n"

\t\t││\t6\t学生信息排序││\n"

\t\t││\t7\t退出系统││\n"

\t\t││请选择[1]\\[2]\\[3]\\[4]\\[5]\\[6]\\[7]││\n"

printf("

\t\t│╰─────────────────╯│\n"

\t\t╰───────────────────╯"

}//菜单说明

EB*info_Lead()

{intlen=0;

EB*head,*p1,*p2;

FILE*fp;

head=NULL;

fp=fopen("

file.dat"

"

r"

if(fp==NULL)

{printf("

不能打开文件按任意键退出!

"

getchar();

exit

(1);

}

p1=p2=(EB*)malloc(LEN);

fscanf(fp,"

%s\n%s\n%s\n%s\n%s\n%s"

p1->

name,p1->

num,p1->

ID,p1->

sex,p1->

birth,p1->

NP);

while(!

feof(fp))

{len++;

if(len==1){head=p1;

head->

prior=NULL;

else{

p2->

next=p1;

p1->

prior=p2;

}

p2=p1;

p1=(EB*)malloc(LEN);

fscanf(fp,"

next=NULL;

free(p1);

fclose(fp);

returnhead;

//导入信息函数

voidinfoprint(EB*p)

\t│%-8s"

p->

name);

│%-8s"

num);

│%-18s"

ID);

│%-4s"

sex);

│%-10s"

birth);

│%-10s\n"

}//打印学生信息函数

voidINPUT(EB*p)

输入姓名:

scanf("

%s"

输入学号:

输入身份证号:

输入性别:

输入生日:

输入籍贯:

\n"

}//输入学生信息函数

voiddisplay(EB*head)

{intn=0;

EB*p=head;

if(p==NULL)

{

文件中没有信息按任意键返回!

exit(0);

else

{printf("

\n\t\t\t\t打印结果如下\n"

printf("

\n-----------------------------------------------------------------------------"

\n记录│姓名\t│学号│身份证号│性别│生日│籍贯\n"

-----------------------------------------------------------------------------\n"

do{

n++;

data%d"

n);

infoprint(p);

printf("

p=p->

next;

}while(p!

=NULL);

}

}//显示所有学生信息函数

voidsave(EB*head)

{EB*p=head;

FILE*fp;

fp=fopen("

w"

if(fp==NULL)

{

exit

(1);

else

while(p!

=NULL)

{

fprintf(fp,"

%s\n"

fprintf(fp,"

fprintf(fp,"

birth);

}

\t\t\t成功保存\n"

}//文件保存函数

EB*creat_dlist(int*len)

{intm=1,n;

EB*head,*p1,*p2;

*len=0;

head=NULL;

\n\t\t输入初始信息\n"

\t\t你想输入多少信息\n\t\t数量:

%d"

&

n);

p1=p2=(EB*)malloc(LEN);

数据1\n"

INPUT(p1);

do

{

(*len)++;

if((*len)==1){head=p1;

p2->

if(m==n)

break;

数据%d\n"

++m);

INPUT(p1);

}while(*len<

}//双向链表创建函数

voidcopy(EB*p,EB*q){

strcpy(p->

name,q->

num,q->

ID,q->

sex,q->

birth,q->

NP,q->

}//复制学生信息函数且P中的数据被覆盖

voidexchange(EB*p,EB*q){

charu[10],v[20],w[20],x[10],y[10],z[30];

strcpy(u,p->

strcpy(v,p->

strcpy(w,p->

strcpy(x,p->

strcpy(y,p->

strcpy(z,p->

copy(p,q);

strcpy(q->

name,u);

num,v);

ID,w);

sex,x);

birth,y);

NP,z);

}//交换学生信息函数

EB*insert(EB*head,EB*q,intn,int*len)/*p表示头结点q(前后指针没有初始化)表示需要插入的数据n表示插入的位置len表示链表的长度*/

{inti;

EB*p=head;

q->

prior=q->

if(n==0){

next=p;

p->

prior=q;

returnq;

else

if(n==*len){

p=head;

for(i=0;

i<

n;

i++)

p=p->

p->

next=q;

q->

prior=p;

else

if(n>

=1||n<

=*len-1){

next=p->

(p->

next)->

elseprintf("

你的要求不能实现请检查!

exit(0);

}//插入学生信息函数

voidmodify(EB*p)//修改操作

{charc;

修改姓名?

\tY\\yorN\\n\t你的选择:

getchar();

c=getchar();

system("

cls"

if(c=='

Y'

||c=='

y'

{

姓名(MF):

}system("

修改学号?

getchar();

学号(MF):

修改身份证号?

getchar();

身份证号(MF):

修改性别?

性别(MF):

修改生日?

生日(MF):

修改籍贯?

籍贯(MF):

}getchar();

}//修改学生信息函数

EB*namesort(EB*head)

{intm=0,n=0;

charc;

EB*p1,*p2,*q1,*q2,*headq;

p2=p1=head;

if(p1->

next==NULL)

returnhead;

\n不需要排序按任意键退出"

排序方式\tU\\uorD\\d\t"

c=getchar();

getchar();

if(c=='

U'

u'

m=-1;

D'

d'

m=1;

\n输入有误按任意键退出!

q1=q2=(EB*)malloc(LEN);

while(p1!

{copy(q1,p2);

n++;

if(n==1)headq=q1;

else{

q2->

next=q1;

q1->

prior=q2;

if(strcmp(q1->

name,q2->

name)==m)

exchange(q1,q2);

q2=q1;

p1=p1->

free(p2);

q1=(EB*)malloc(LEN);

returnheadq;

}//姓名排序

EB*student_numbersort(EB*head)

\n不需要排序按任意键退出!

wayofsort\tU\\uorD\\d\t"

}//学号排序

EB*sort(EB*head)

{

charc;

EB*p;

\t\t\t╭────────╮"

\n\t\t\t│1\t根据姓名排序│\n"

\t\t\t│2\t根据学号排序│\n"

\t\t\t│\t请选择[1\\2]│\n"

printf("

\t\t\t╰─────────╯"

\n\t\t\t你的选择\t:

switch(c)

{

case'

1'

:

p=namesort(head);

returnp;

break;

2'

p=student_numbersort(head);

default:

输入有误按任意键返回!

returnhead;

break;

}

}//排序总函数

EB*IDsearch(EB*head,char*s)

intf=1;

\n文件中没有信息按任意键退出!

exit(0);

if(strcmp(p->

ID,s)==0)

f=-1;

returnp;

if(f)

nofound"

returnNULL;

}exit(0);

}//身份证查找函数

EB*birthsearch(EB*head,char*s){

charc,r[30];

EB*p,*q;

if(p==NULL)

{

}

所有生日是[%s]的学生如下:

\n"

s);

{

birth,s)==0)

姓名\t\t:

身份证号\t\t:

%s\n\n\n"

}

是否想精确查找?

\tY\\yorN\\n\t你的选择:

//进一步身份证精确查找

switch(c)

case'

输入你想查询学生身份证号:

r);

system("

getchar();

q=IDsearch(head,r);

returnq;

break;

N'

n'

default:

printf("

输入错误按任意键退出!

getchar();

}//出生年月查找函数分函数

EB*namesearch(EB*head,char*s){

所有姓名是[%s]的学生如下:

name,s)==0)

{

printf("

\n\t\t身份证号\t\t:

\t\t籍贯\t\t:

\n\n是否想精确查找?

getchar();

returnq;

break;

returnNULL;

错误输入按任意键退出!

}//姓名查找函数分函数

EB*sexsearch(EB*head,char*s){

\

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

当前位置:首页 > 高等教育 > 其它

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

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