学生管理系统学生链表_链表学生管理系统
学生管理系统学生链表由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“链表学生管理系统”。
#include #include #include
typedef struct student { int num;char name[10];char pawd[6];int age;int cla;int math;int clan;int chinese;int mingci;struct student *next;}STU,*pstu;
pstu stu_numsort(pstu head);pstu stu_sumsort(pstu head);pstu stu_mathsort(pstu head);pstu stu_chisort(pstu head);pstu stu_clansort(pstu head);pstu stu_searchbynum(pstu head,int num);pstu stu_searchbyname(pstu head,char name[]);pstu stu_searchbycla(pstu head,int cla);pstu stu_create(){
pstu head=NULL;pstu s=NULL;int num;char name[10];char pawd[6];int age;int cla;int math;int clan;int chinese;int mingci;printf(“请输入任意一个数非0的数继续 :”);scanf(“%d”,&num);while(num!=0){
s=(pstu)malloc(sizeof(STU));
if(s==NULL)
{
printf(“nmalloc errorn”);
return NULL;
}
printf(“输入学生学号:”);
scanf(“%d”,&s->num);
printf(“请输入学生姓名:”);
scanf(“%s”,s->name);
printf(“请输入登陆密码:”);//学生权限(error)
scanf(“%s”,s->pawd);
printf(“请输入学生年龄:”);
scanf(“%d”,&s->age);
printf(“请输入学生班级:”);
scanf(“%d”,&s->cla);
printf(“请输入数学成绩:”);
scanf(“%d”,&s->math);
printf(“请输入c语言成绩:”);
scanf(“%d”,&s->clan);
printf(“请输入语文成绩:”);
scanf(“%d”,&s->chinese);
printf(“enter next studentn”);
if(head==NULL)
{
s->next=NULL;
head=s;
}
else
{
s->next=NULL;
s->next=head;
head=s;
}
scanf(“%d”,&num);} return head;} //保存
void stu_write(pstu head){ int flag=0;FILE *fp=NULL;pstu p=head;fp=fopen(“num”,“w”);if(fp==NULL){
printf(“open errorn”);
return;} while(p!=NULL){
flag=fwrite(p,sizeof(STU),1,fp);
if(flag!=1)
{
printf(“write errorn”);
return;
}
p->next;} fclose(fp);} //读函数
pstu stu_read(){ FILE *fp=NULL;pstu head=NULL;pstu s=NULL;fp=fopen(“num”,“r”);s=(pstu)malloc(sizeof(STU));while(fread(s,sizeof(STU),1,fp)==1){
if(head==NULL)
{
s->next=NULL;
head=s;
}
else
{
s->next=NULL;
s->next=head;
head=s;
}
s=(pstu)malloc(sizeof(STU));} fclose(fp);return head;} //删除学生信息(学号)pstu stu_del(pstu head,int num){ pstu p=head;pstu q=NULL;printf(“输入删除的学号:”);scanf(“%d”,&num);if(head->num==num){
head=head->next;} else {
while(p->next!=NULL)
{
if(p->next->num==num)
{
q=p->next;
p->next=q->next;
free(q);
q=NULL;
break;
}
p=p->next;
} } return head;}
pstu stu_searchbynum();//按学号修改学生信息
void stu_changebynum(pstu head){ pstu p=head;int num;char name[10];char pawd[6];int age;int cla;int math,chinese,clan;int n;printf(“请输入查找的学号:”);scanf(“%d”,&num);while(p!=NULL){
if(p->num==num)
{
printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,p->num,p->name,p->pawd,p->age,p->cla,p->math,p->clan,p->chinese,p->mingci);
break;
}
p=p->next;}
printf(“请选择需要修改的学生信息:n”);printf(“-------------------------n”);printf(“1:姓名n”);printf(“2:密码n”);printf(“3:年龄n”);printf(“4:班级n”);printf(“5:数学成绩n”);printf(“6:c成绩n”);printf(“7:语文成绩n”);printf(“0:退出”);printf(“---------------------------n”);printf(“请输入需要修改的信息:”);scanf(“%d”,&n);switch(n){
case 0:
return;
case 1:
printf(“请输入新的姓名:”);
scanf(“%s”,p->name);
break;
case 2:
printf(“请输入新的密码:”);
scanf(“%s”,p->pawd);
break;
case 3:
printf(“请输入新的年龄:”);
scanf(“%d”,&p->age);
break;
case 4:
printf(“请输入新的班级:”);
scanf(“%d”,&p->cla);
break;
case 5:
printf(“请输入新的数学成绩:”);
scanf(“%d”,&p->math);
break;
case 6:
printf(“请输入新的c语言成绩:”);
scanf(“%d”,&p->clan);
break;
case 7:
printf(“请输入新的语文成绩:”);
scanf(“%d”,&p->chinese);
break;
default:
printf(“n无效选项n”);
break;} printf(“修改成功!n”);printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,p->num,p->name,p->pawd,p->age,p->cla,p->math,p->clan,p->chinese,p->mingci);} //按学生姓名修改
void stu_changebyname(pstu head){ pstu p=head;int num;char name[10];char pawd[6];int age;int cla;int math,chinese,clan;int n;printf(“请输入查找的姓名:”);scanf(“%s”,name);while(p!=NULL){
if(strcmp(p->name,name)==0)
{
printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,p->num,p->name,p->pawd,p->age,p->cla,p->math,p->clan,p->chinese,p->mingci);
break;} p=p->next;} printf(“请选择需要修改的学生信息:n”);printf(“-------------------------n”);printf(“1:学号n”);printf(“2:密码n”);printf(“3:年龄n”);printf(“4:班级n”);printf(“5:数学成绩n”);printf(“6:c成绩n”);printf(“7:语文成绩n”);printf(“0:退出”);printf(“---------------------------n”);printf(“请输入需要修改的信息:”);scanf(“%d”,&n);switch(n){ case 0:
return;case 1:
printf(“请输入新的学号:”);
scanf(“%d”,&p->num);
break;case 2:
printf(“请输入新的密码:”);
scanf(“%s”,p->pawd);
break;case 3:
printf(“请输入新的年龄:”);
scanf(“%d”,&p->age);
break;case 4:
printf(“请输入新的班级:”);
scanf(“%d”,&p->cla);
break;case 5:
printf(“请输入新的数学成绩:”);
scanf(“%d”,&p->math);
break;case 6:
printf(“请输入新的c语言成绩:”);
scanf(“%d”,&p->clan);
break;
case 7:
printf(“请输入新的语文成绩:”);
scanf(“%d”,&p->chinese);
break;
default:
printf(“n无效选项n”);
break;} printf(“修改成功!n”);printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,p->num,p->name,p->pawd,p->age,p->cla,p->math,p->clan,p->chinese,p->mingci);
} void change_printf(pstu head){ pstu p=head;int n;printf(“请选择修改学生信息的方式:n”);printf(“-------n”);printf(“1:按学生学号修改n”);printf(“2:按学生姓名修改n”);printf(“0:退出n”);printf(“---------n”);scanf(“%d”,&n);switch(n){
case 1:
stu_changebynum(head);
printf(“显示全部学生信息:”);
break;
case 2:
stu_changebyname(head);
printf(“显示全部学生信息:”);
break;
case 3:
return;} } //查找学生信息
void search_printf(pstu head){ pstu p=head;int n;int num;char name[10];int cla;printf(“请选择查找学生信息的方式:n”);printf(“-------n”);printf(“1:按学生学号查找n”);printf(“2:按学生姓名查找n”);printf(“3:按班级群体查找n”);printf(“0:退出n”);printf(“---------n”);scanf(“%d”,&n);switch(n){
case 1:
stu_searchbynum(head,num);
break;
case 2:
stu_searchbyname(head,name);
break;
case 3:
stu_searchbycla(head,cla);
break;
case 0:
return;} } //1:学号查找
pstu stu_searchbynum(pstu head,int num){ pstu p=head;printf(“请输入查找的学号:”);scanf(“%d”,&num);while(p!=NULL){
if(p->num==num)
break;
p=p->next;} return p;} //2:按姓名查找 pstu stu_searchbyname(pstu head,char name[]){ pstu p=head;printf(“请输入要查找的姓名:”);scanf(“%s”,name);while(p!=NULL){
if(strcmp(name,p->name)==0)
break;
p=p->next;} return p;} //班级群体查找
pstu stu_searchbycla(pstu head,int cla){ pstu p=head;printf(“请输入要查找的班级:”);scanf(“%d”,&cla);while(p!=NULL){
if(p->cla==cla)
break;
p=p->next;} return p;}
//显示所有学生信息列表
void sort_printf(pstu head){ pstu p=head;int n;printf(“请选择显示学生信息的方式:n”);printf(“-----n”);printf(“1:按学号顺序显示n”);printf(“2:按名次显示n”);printf(“3:按数学成绩显示n”);printf(“4:按c语言成绩显示n”);printf(“5:按语文成绩显示n”);printf(“--------n”);printf(“请输入你要选择的操作:”);scanf(“%d”,&n);switch(n){
case 1:
stu_numsort(head);
printf(“显示学生信息n”);
break;
case 2:
stu_sumsort(head);
printf(“显示学生信息n”);
break;
case 3:
stu_mathsort(head);
printf(“显示学生信息n”);
break;
case 4:
stu_clansort(head);
printf(“显示学生信息n”);
break;
case 5:
stu_chisort(head);
printf(“显示学生信息n”);
break;
case 6:
return;
default:
printf(“输入错误n”);
break;} }
int stu_len(pstu head){ pstu p=head;int len=0;while(p!=NULL){
len++;
p=p->next;} return len;} //1:按学号顺序显示
pstu getnummax(pstu head){ pstu pmax=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmax->num
num)
{
pmax=p;
}
p=p->next;} return pmax;} pstu removefromold(pstu head,pstu pmax){ pstu p=head;if(head==pmax){
head=head->next;} else {
while(p!=NULL)
{
if(p->next==pmax)
{
p->next=pmax->next;
break;
}
}
p=p->next;} return head;} pstu add(pstu pnew,pstu pmax){ pmax->next=pnew;pnew=pmax;return pnew;} pstu stu_numsort(pstu head){ pstu pold=head;pstu pmax=NULL;pstu pnew=NULL;while(pold!=NULL){
pmax=getnummax(pold);
pold=removefromold(pold,pmax);
pnew=add(pnew,pmax);} return pnew;} //按名次显示
pstu getsummin(pstu head){ pstu pmin=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmin->math+pmin->clan+pmin->chinese>p->math+p->clan+p->chinese)
{
pmin=p;
}
p=p->next;} return pmin;} pstu removefromtold(pstu head,pstu pmin){ pstu p=head;if(head==pmin){
head=head->next;} else {
while(p!=NULL)
{
if(p->next==pmin)
p->next=pmin->next;
break;
}
p=p->next;} return head;} pstu addt(pstu pnew,pstu pmin){ pmin->next=pnew;pnew=pmin;return pnew;} pstu stu_sumsort(pstu head){ pstu pold=head;pstu pmin=NULL;pstu pnew=NULL;int i=stu_len(head);while(pold!=NULL){
pmin=getsummin(pold);
pold=removefromtold(pold,pmin);
pnew=addt(pnew,pmin);
pnew->mingci=i--;} return pnew;} //按数学成绩显示
pstu getmathmin(pstu head){ pstu pmin=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmin->math>p->math)
{
pmin=p;
}
p=p->next;} return pmin;} pstu stu_mathsort(pstu head){ int i=stu_len(head);pstu pold=head;pstu pmin=NULL;pstu pnew=NULL;while(pold!=NULL){
pmin=getmathmin(pold);
pold=removefromold(pold,pmin);
pnew=add(pnew,pmin);
pnew->mingci=i--;} return pnew;} //按c语言成绩显示
pstu getclanmin(pstu head){ pstu pmin=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmin->clan>p->clan)
{
pmin=p;
}
p=p->next;} return pmin;} pstu stu_clansort(pstu head){ int i=stu_len(head);pstu pold=head;pstu pmin=NULL;pstu pnew=NULL;while(pold!=NULL){
pmin=getclanmin(pold);
pold=removefromtold(pold,pmin);
pnew=addt(pnew,pmin);
pnew->mingci=i--;} return pnew;} //按语文成绩显示
pstu getchimin(pstu head){ pstu pmin=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmin->chinese>p->chinese)
{
pmin=p;
}
p=p->next;} return pmin;} pstu stu_chisort(pstu head){ int i=stu_len(head);pstu pold=head;pstu pmin=NULL;pstu pnew=NULL;while(pold!=NULL){
pmin=getchimin(pold);
pold=removefromtold(pold,pmin);
pnew=addt(pnew,pmin);
pnew->mingci=i--;} return pnew;} void stu_printf(pstu head){ pstu tmp=head;printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);while(tmp!=NULL){
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,tmp->num,tmp->name,tmp->pawd,tmp->age,tmp->cla,tmp->math,tmp->clan,tmp->chinese,tmp->mingci);
tmp=tmp->next;} printf(“n”);} void stun_printf(pstu head){ pstu tmp=head;printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);while(tmp!=NULL){
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,tmp->num,tmp->name,tmp->pawd,tmp->age,tmp->cla,tmp->math,tmp->clan,tmp->chinese,tmp->mingci);
break;} printf(“n”);}
//2: int main(){ // int m;int num;int cla;int len;char name[10];pstu head=stu_create();stu_printf(head);len=stu_len(head);// pstu p=stu_del(head, num);// stu_printf(p);/* pstu k=stu_searchbynum(head,num);if(k!=NULL)
stun_printf(k);else
printf(“no find”);
pstu l=stu_searchbyname(head,name);
// // // // // //
// // // // // //
} if(l!=NULL)stun_printf(l);else printf(“no find”);pstu h=stu_searchbycla(head,cla);if(h!=NULL)stun_printf(h);else printf(“no find”);*/ stu_changebynum(head);printf(“显示全部学生信息:”);stu_printf(head);stu_changebyname(head);printf(“显示全部学生信息:”);stu_printf(head);search_printf(head);stun_printf(head);change_printf(head);stu_printf(head);pstu p1=stu_numsort(head);stu_printf(p1);pstu p2=stu_sumsort(head);stu_printf(p2);pstu p3=stu_mathsort(head);stu_printf(p3);sort_printf(head);stu_printf(head);