学生信息管理系统源程序正确呕心沥血整理版Word格式文档下载.docx
《学生信息管理系统源程序正确呕心沥血整理版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统源程序正确呕心沥血整理版Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
{
structstudentdata;
structnode*next;
}Node,*Link;
/*************************************************************************************/
voidmenu()
printf("
********************************************************************************”);
printf(”\t1登记学生资料\t\t\t\t\t2删除学生资料\n”);
printf(”\t3查询学生资料\t\t\t\t\t4修改学生资料\n”);
\t5保存学生资料\t\t\t\t\t0退出系统\n”);
printf(”********************************************************************************\n”);
}
/*************************************************************************************/
voidprintstart()
printf(”—————-—-----————-——————---------—---——--——————--—-—-———--——————-—-——---\n"
);
}
voidWrong()
printf(”\n=====〉提示:
输入错误!
\n”);
voidNofind()
printf(”\n=====>
提示:
没有找到该学生!
\n"
voidprintc()/*本函数用于输出中文*/
学号\t姓名性别\t电话\t出生年月\t年龄\t地址\n”);
/*************************************************************************************/
voidprinte(Node*p)/*本函数用于输出英文,即输出结构体中各个成员的值,注意是通过指向结构体的指针访问结构体的成员的数据域*/
%—10s%s\t%s\t%d\t%d\t%d\t%s\n"
,p—〉data。
num,p—>
data。
name,p-〉data.sex,p—>
tele,p-〉data。
birth,p—>
data.age,p—>
addr);
Node*Locate(Linkl,charfindmess[],charnameornum[])/*该函数用于定位连表中符合要求的接点,并返回该指针*/
Node*r;
if(strcmp(nameornum,"
num"
)==0)/*按学号查询*/
r=l—〉next;
while(r!
=NULL)
if(strcmp(r->
data.num,findmess)==0)
returnr;
r=r->
next;
elseif(strcmp(nameornum,”name"
)==0)/*按姓名查询*/
r=l-〉next;
while(r!
if(strcmp(r—>
name,findmess)==0)
returnr;
r=r—〉next;
return0;
/*************************************************************************************/
voidAdd(Linkl)/*增加学生*/
Node*p,*r,*s;
charnum[10];
r=l;
s=l->
while(r—〉next!
next;
/*将指针置于最末尾,通过循环指向最后一个结点*/
while
(1)
printf(”请你输入学号(以’0'
返回上一级菜单”);
scanf("
%s”,num);
if(strcmp(num,”0”)==0)
break;
while(s)
if(strcmp(s-〉data.num,num)==0)
=====>
学号为'
%s'
的学生已经存在,若要修改请你选择'
4修改’!
,num);
printstart();
printc();
printe(s);
);
return;
s=s—〉next;
p=(Node*)malloc(sizeof(Node));
strcpy(p—〉data.num,num);
printf(”请你输入姓名:
”);
%s”,p—〉data。
name);
getchar();
printf(”请你输入性别:
%s”,p-〉data。
sex);
/*输入数据到性别的data域中,注意字符数组和普通变量*/
请你输入年龄:
”);
scanf(”%d”,&
p—>
age);
printf(”请你输入出生年月:
scanf(”%d”,&p—〉data。
birth);
getchar();
请你输入电话:
%d”,&p—>
tele);
printf(”请输入地址:
"
scanf(”%s”,&p—>
addr);
/*信息输入已经完成*/
next=NULL;
r-〉next=p;
r=p;
shoudsave=1;
/*************************************************************************************/
voidQur(Linkl)/*查询学生*/
intsel;
charfindmess[20];
Node*p;
if(!
l—>
next)
提示:
没有资料可以查询!
return;
1按学号查找\n=====〉2按姓名查找\n”);
scanf(”%d"
,&sel);
if(sel==1)/*学号*/
printf(”请你输入要查找的学号:
scanf(”%s”,findmess);
p=Locate(l,findmess,”num"
if(p)
\t\t\t\t查找结果\n"
printe(p);
printstart();
else
Nofind();
elseif(sel==2)/*姓名*/
printf(”请你输入要查找的姓名:
%s”,findmess);
p=Locate(l,findmess,"
name"
\t\t\t\t查找结果\n”);
printe(p);
Wrong();
/*************************************************************************************/
voidDel(Linkl)/*删除*/
Node*p,*r;
charfindmess[20];
l->
\n=====>
没有资料可以删除!
printf(”\n=====〉1按学号删除\n=====>
2按姓名删除\n”);
scanf(”%d”,&
sel);
if(sel==1)
printf(”请你输入要删除的学号:
scanf(”%s"
findmess);
p=Locate(l,findmess,”num"
r=l;
while(r—〉next!
=p)
r=r—>
/*r指针指向后一个结点*/
r->
next=p—〉next;
/*删除p结点*/
free(p);
\n=====〉提示:
该学生已经成功删除!
elseif(sel==2)
printf(”请你输入要删除的姓名:
%s"
,findmess);
p=Locate(l,findmess,”name"
/*r指针指向后一个结点*/
r-〉next=p-〉next;
/*删除p结点*/
该学生已经成功删除!
Nofind();
Wrong();
/*************************************************************************************/
voidModify(Linkl)
Node*p;
charfindmess[20];
l-〉next)
printf(”\n=====〉提示:
没有资料可以修改!
请你输入要修改的学生学号:
scanf(”%s”,findmess);
p=Locate(l,findmess,"