学生管理系统学生链表_链表学生管理系统

2020-02-28 其他范文 下载本文

学生管理系统学生链表由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“链表学生管理系统”。

#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);

《学生管理系统学生链表.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
学生管理系统学生链表
点击下载文档
相关专题 链表学生管理系统 学生 学生管理 链表 链表学生管理系统 学生 学生管理 链表
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文