双链表课程设计学生信息管理系统Word格式.docx
- 文档编号:21455702
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:25
- 大小:19.77KB
双链表课程设计学生信息管理系统Word格式.docx
《双链表课程设计学生信息管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《双链表课程设计学生信息管理系统Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
\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){
\
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 双链表 课程设计 学生 信息管理 系统