人人范文网 范文大全

学生管理系统学生链表

发布时间:2020-03-03 20:41:38 来源:范文大全 收藏本文 下载本文 手机版

#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 error\\n\");

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 student\\n\");

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 error\\n\");

return; } while(p!=NULL) {

flag=fwrite(p,sizeof(STU),1,fp);

if(flag!=1)

{

printf(\"write error\\n\");

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(\"%d\\t%s\\t%s\\t%d\\t%d\\t%d\\t%d\\t%d\\t%d\\n\",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(\"%d\\t%s\\t%s\\t%d\\t%d\\t%d\\t%d\\t%d\\t%d\\n\",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(\"%d\\t%s\\t%s\\t%d\\t%d\\t%d\\t%d\\t%d\\t%d\\n\",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(\"%d\\t%s\\t%s\\t%d\\t%d\\t%d\\t%d\\t%d\\t%d\\n\",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->numnum)

{

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(\"%d\\t%s\\t%s\\t%d\\t%d\\t%d\\t%d\\t%d\\t%d\\n\",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(\"%d\\t%s\\t%s\\t%d\\t%d\\t%d\\t%d\\t%d\\t%d\\n\",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);

学生管理系统

通讯录管理系统 (c 和 链表)

学生管理系统实验报告

学生籍贯管理系统

学生成绩管理系统

学生考勤管理系统

学生在校管理系统

学生管理系统总结

学生通讯录管理系统

学生管理系统使用说明

学生管理系统学生链表
《学生管理系统学生链表.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档