基于LINUX系统下c语言学生管理系统stu.docx
《基于LINUX系统下c语言学生管理系统stu.docx》由会员分享,可在线阅读,更多相关《基于LINUX系统下c语言学生管理系统stu.docx(14页珍藏版)》请在冰豆网上搜索。
![基于LINUX系统下c语言学生管理系统stu.docx](https://file1.bdocx.com/fileroot1/2023-1/7/4a744d11-a34c-4692-bd32-7de36576073d/4a744d11-a34c-4692-bd32-7de36576073d1.gif)
基于LINUX系统下c语言学生管理系统stu
/***********文件包含***************************/
#include"stu.h"
#include"common.h"
#include"tooler.h"
/*******************学生按学号查看自己的信息***************************/
/**
*说明:
先查找,然后将查找到的学生结点摘下来放进一个新结点
*/
linkstustu_searchmyinfo(linkstuphead,intnum,int*index)
{
linkstup=phead,s;
(*index)=0;
s=(linkstu)malloc(sizeof(nodestu));
if(s==NULL)
{
printf("mallocerror!
\n");
returnNULL;
}
s->stu_info.num=num;
if(p==NULL)
{
printf("无学生信息!
\n");
returnNULL;
}
else
{(*index)=1;
while(p!
=NULL)
{
if(p->stu_info.num==s->stu_info.num)
{
strcpy(s->stu_info.name,p->stu_info.name);
s->stu_info.sex=p->stu_info.sex;
s->stu_info.age=p->stu_info.age;
s->class=p->class;
s->chi=p->chi;
s->math=p->math;
s->eng=p->eng;
strcpy(s->password,p->password);
s->rank=p->rank;
s->next=NULL;
returns;
}
p=p->next;
(*index)++;
}
}
returnNULL;
}
/**********************************************/
/*
*说明:
先查找,将查找到的结点返回
**/
linkstustu_searchmyinfo_1(linkstuphead,intnum)
{
linkstup=phead;
if(p==NULL)
{
printf("无学生信息!
\n");
returnNULL;
}
else
{
while(p!
=NULL)
{
if(p->stu_info.num==num)
returnp;
p=p->next;
}
}
returnNULL;
}
/**************************************按序号查找学生************************************************/
linkstustu_searchbyindex(linkstuphead,intindex)
{
linkstup=phead;
inti;
if(phead==NULL||index>link_getlen(phead)||index<1)
returnNULL;
for(i=1;ip=p->next;
returnp;
}
/*********************************学生修改自己的密码*********************************************/
voidstu_modmypass(linkstumod_p)
{
chara[10],b[10];
if(mod_p!
=NULL)
{
printf("Oldpassword:
%s\n",mod_p->password);
while
(1)
{
printf("请输入新密码:
");
scanf("%s",b);
printf("请再次确认输入的新密码:
");
scanf("%s",a);
if(strcmp(b,a)==0)
{
strcpy(mod_p->password,a);
printf("修改成功!
\n");
break;
}
else
printf("两次输入不一样,修改失败,请重新输入!
\n");
getchar();
}
}
}
/**************************************************创建学生信息链表********************************************/
/***创建形式:
尾插
**功能:
返回头指针
**
*/
linkstustu_link_creat()
{
linkstus=NULL,phead=NULL,r;
intflag=1;
intnum,age,class,chi,math,eng;
charname[10],sex;
charsym;
while
(1)
{
printf("请输入学号(务必输入1000-4000之间的数):
");
scanf("%d",&num);
if(num>=1001&&num<4000)
break;
else
printf("输入有误,重新输入!
\n");
}
printf("请输入姓名:
");
scanf("%s",name);
getchar();//************************************************吸收掉输入姓名后敲入的回车
while
(1)
{
printf("请输入性别(f,F或者m,M):
");
scanf("%c",&sex);
if(sex=='f'||sex=='F'||sex=='m'||sex=='M')
break;
else
{
printf("输入有误,重新输入!
\n");
getchar();
}
}
while
(1)
{
printf("请输入年龄(务必输入20-30之间的数):
");
scanf("%d",&age);
if(age>=20&&age<=30)
break;
else
printf("输入有误,重新输入!
\n");
}
while
(1)
{
printf("请输入班级(务必输入1-3之间的整数):
");
scanf("%d",&class);
if(class>=1&&class<=3)
break;
else
printf("输入有误,重新输入!
\n");
}
while
(1)
{
printf("请输入语文成绩(0-100之间的数):
");
scanf("%d",&chi);
if(chi>=0&&chi<=100)
break;
else
printf("输入有误,重新输入!
\n");
}
while
(1)
{
printf("请输入数学成绩:
");
scanf("%d",&math);
if(math>=0&&math<=100)
break;
else
printf("输入有误,重新输入!
\n");
}
while
(1)
{
printf("请输入英语成绩:
");
scanf("%d",&eng);
if(eng>=0&&eng<=100)
break;
else
printf("输入有误,重新输入!
\n");
}
while(flag)
{
s=(linkstu)malloc(sizeof(nodestu));
if(s==NULL)
{
printf("mallocerror!
%s,%d",__FILE__,__LINE__);
returnNULL;
}
s->stu_info.num=num;
strcpy(s->stu_info.name,name);//***************字符串不能直接赋给字符串,需要用此方式赋值
s->stu_info.sex=sex;
s->stu_info.age=age;
s->class=class;
s->chi=chi;
s->math=math;
s->eng=eng;
if(phead==NULL)
{
s->next=NULL;
phead=s;
r=s;
}
else
{
s->next=NULL;
r->next=s;
r=s;
}
getchar();
printf("DoYouWantcontinue?
Y/N");
while
(1)
{
sym=getchar();
if(sym=='y'||sym=='Y')
{
flag=1;
while
(1)
{
printf("请输入学号(务必输入1000-4000之间的数):
");
scanf("%d",&num);
if(num>=1001&&num<4000)
break;
else
printf("输入有误,重新输入!
\n");
}
printf("请输入姓名:
");
scanf("%s",name);
getchar();//******************************************吸收掉输入姓名后敲入的回车
while
(1)
{
printf("请输入性别(f,F或者m,M):
");
scanf("%c",&sex);
if(sex=='f'||sex=='F'||sex=='m'||sex=='M')
break;
else
{
printf("输入有误,重新输入!
\n");
getchar();
}
}
while
(1)
{
printf("请输入年龄(务必输入20-30之间的数):
");
scanf("%d",&age);
if(age>=20&&age<=30)
break;
else
printf("输入有误,重新输入!
\n");
}
while
(1)
{
printf("请输入班级(务必输入1-3之间的整数):
");
scanf("%d",&class);
if(class>=1&&class<=3)
break;
else
printf("输入有误,重新输入!
\n");
}
while
(1)
{
printf("请输入语文成绩(0-100之间的数):
");
scanf("%d",&chi);
if(chi>=0&&chi<=100)
break;
else
printf("输入有误,重新输入!
\n");
}
while
(1)
{
printf("请输入数学成绩:
");
scanf("%d",&math);
if(math>=0&&math<=100)
break;
else
printf("输入有误,重新输入!
\n");
}
while
(1)
{
printf("请输入英语成绩:
");
scanf("%d",&eng);
if(eng>=0&&eng<=100)
break;
else
printf("输入有误,重新输入!
\n");
}
break;
}
elseif(sym=='n'||sym=='N')
{
flag=0;
break;
}
else
printf("输入有误,重新输入!
");
}
}
returnphead;
}
/******************************************求学生链表长度**************************************************/
intlink_getlen(linkstuphead)
{
intlen=0;
linkstup=phead;
while(p!
=NULL)
{
len++;
p=p->next;
}
returnlen;
}
/*****************************************************************************************/
/********************************打印学生信息的函数*************************************/
voidlink_stu_print(linkstuphead)
{
linkstup=phead;
if(p==NULL)
{
printf("无任何学生信息!
\n");
return;
}
printf("\n\t\t\t\t学生成绩信息\n\n");
printf("学号\t姓名\t性别\t年龄\t班级\t语文成绩数学成绩英语成绩\n");
while(p!
=NULL)
{
printf("%d\t%s\t%c\t%d\t%d\t%d\t%d\t\t%d\n",p->stu_info.num,p->stu_info.name,p->stu_info.sex,p->stu_info.age,p->class,p->chi,p->math,p->eng);
p=p->next;
}
printf("End\n");
}
/**********************************************初始化学生的登录密码123**********************************************/
voidinitial_stu_password(linkstuphead)
{
linkstup=phead;
if(p==NULL)
{
printf("emptylink!
\n");
return;
}
while(p!
=NULL)
{
strcpy(p->password,"123");
p=p->next;
}
}
/*************************************学生输入密码登录****************************************************/
intstu_login(linkstuphead)
{
intq=0,fre=0;
charpassword[10];
linkstup;
while
(1)
{
p=phead;
fre++;
printf("\n请输入学生学号:
");
scanf("%d",&stu_num);
getchar();
printf("请输入学生密码:
");
scanf("%s",password);
getchar();
while(p!
=NULL)
{
if(p->stu_info.num==stu_num&&(strcmp(p->password,password)==0))
{
q=1;
break;
}
else
p=p->next;
}
if(q==1)
{
printf("登录成功!
\n");
sleep
(2);
break;
}
if(fre==3)
{
printf("登录失败!
退出系统\n");
break;
}
else
printf("输入有误,请重新输入:
");
}
if(q==1)
return1;
else
return-1;
}