c语言程序设计学生管理系统.docx
- 文档编号:28693251
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:23
- 大小:89.61KB
c语言程序设计学生管理系统.docx
《c语言程序设计学生管理系统.docx》由会员分享,可在线阅读,更多相关《c语言程序设计学生管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
c语言程序设计学生管理系统
c语言程序设计学生管理系统
LT
voidsave(structstudent*head);
voidread();
voidtotalsort(structstudent*head);
voidaversort(structstudent*head);
voidBfindsort();
intall=0;
voidmain()
{
inti,n,m,num;
charord[10]="student",ord_1[10];
structstudent*p;
for(i=0;i<=3;i++)
{
if(i==3)
exit(0);
printf("请第%d次输入进入系统的指令:
",i+1);
scanf("%s",ord_1);
if(strcmp(ord,ord_1)!
=0)
printf("输入的指令有误请重新输入。
\n");
if(strcmp(ord,ord_1)==0)
break;
}
p=NULL;
loop_2:
printf("输入系统的功能:
\n0、建立一个数据库;\n1、添加与保存学生数据;\n2、删除与保存学生数据;\n3、修改与保存学生数据;\n4、显示数据库的记录;\n5、将数据进行排序;\n6、查询指定成绩的人数:
");
loop:
scanf("%d",&n);
if(n<0||n>6)
{
printf("\n输入的选择有误请重新输入:
");
gotoloop;
}
if(n==2)
{
printf("输入删除学生数据的学号:
");
scanf("%d",&num);
}
switch(n)
{
case0:
p=creat();save(p);read();break;
case1:
p=add();save(p);read();break;
case2:
p=del(num);save(p);read();break;
case3:
p=alter();save(p);read();break;
case4:
read();break;
case5:
{
printf("输入选择排序的功能1、根据平均成绩;2、根据总成绩:
");
loop_1:
scanf("%d",&m);
if(m<1||m>2)
{
printf("\n输入的选择有误请重新输入:
");
gotoloop_1;
}
switch(m)
{
case1:
aversort(p);break;
case2:
totalsort(p);break;
}
}break;
case6:
Bfindsort();break;
}
loop_5:
printf("输入你要进行的步骤:
1、返回上一菜单菜单;2、退出程序。
\n");
scanf("%d",&n);
if(n<1||n>2)
{
printf("输入的选择有误,请重新输入:
");
gotoloop_5;
}
switch(n)
{
case1:
gotoloop_2;break;
case2:
break;
}
}
structstudent*creat(void)
{
inti,n;
structstudent*head,*p,*q,*tail;
printf("输入学生的个数:
");
scanf("%d",&n);
head=NULL;
for(i=0;i { all++; p=(structstudent*)malloc(sizeof(structstudent)); if(head==NULL) head=p; else tail->next=p; tail=p; p->next=NULL; q=head; printf("输入学生的学号、名字、年级、专业、三门成绩: "); scanf("%d%s%d%s%f%f%f",&p->num,&p->name,&p->grade,&p->major,&p->score_1,&p->score_2,&p->score_3); loop: while(q->next! =NULL) { if(q->num==p->num) { printf("输入的学生号错误请重新输入学生学号: "); scanf("%d",&p->num); gotoloop; } q=q->next; } p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3; } return(head); } voidsave(structstudent*head) { structstudent*p; FILE*fp; if((fp=fopen("student.txt","wb"))==NULL) { printf("打开文件失败。 \n"); exit(0); } p=head; while(p! =NULL) { fwrite(p,sizeof(structstudent),1,fp); p=p->next; } fclose(fp); } structstudent*del(intnum) { inti,n=0; structstudent*p,*q,*head; FILE*fp; if(all==0) { printf("数据库为空。 \n"); head=NULL; return(head); } p=(structstudent*)malloc(sizeof(structstudent)); if((fp=fopen("student.txt","rb"))==NULL) { printf("打开student.txt文件失败\n"); exit(0); } for(i=0;p! =NULL;i++) { p=(structstudent*)malloc(sizeof(structstudent)); fread(p,sizeof(structstudent),1,fp); if(i==0) head=p; if(num==p->num) { if(p==head) head=p->next; else q->next=p->next; n++; all--; } q=p; } if(n==0) printf("没有%d这一学生号的学生! \n",num); return(head); } structstudent*add() { inti,j,m,n=0; FILE*fp; structstudent*p,*q,*temp,*head,*tail; if(all==0) { head=NULL; } else { if((fp=fopen("student.txt","rb"))==NULL) { printf("打开student.txt文件失败\n"); exit(0); } p=(structstudent*)malloc(sizeof(structstudent)); fread(p,sizeof(structstudent),1,fp); head=p; tail=p; while(p->next! =NULL) { p=(structstudent*)malloc(sizeof(structstudent)); fread(p,sizeof(structstudent),1,fp); tail->next=p; tail=p; } tail->next=NULL; fclose(fp); } printf("输入需要输入学生的个数: "); scanf("%d",&j); for(i=0;i { all++; p=(structstudent*)malloc(sizeof(structstudent)); printf("输入学生的学号、名字、年级、专业、三门成绩: "); scanf("%d%s%d%s%f%f%f",&p->num,&p->name,&p->grade,&p->major,&p->score_1,&p->score_2,&p->score_3); temp=head; loop_1: while(temp! =NULL) { if(temp->num==p->num) { printf("输入的学生号错误请重新输入学生学号: "); scanf("%d",&p->num); gotoloop_1; } temp=temp->next; } p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3; if(head==NULL) { head=p; p->next=NULL; } else { q=head; n=1; while(q->next! =NULL) { q=q->next; n++; } printf("该链表一共有节点个数%d。 \n",n); loop: printf("输入将数据插入第几个节点后面。 \n"); scanf("%d",&m); if(m<0||m>n) { printf("输入有误,请重新输入。 \n"); gotoloop; } q=head; if(m==0) { p->next=head; head=p; } else { while((m-1)! =0) { q=q->next; m--; } p->next=q->next; q->next=p; } } } return(head); } structstudent*alter() { intm,num,gra,n; charmaj[10],name[10]; floatscore_1,score_2,score_3; structstudent*p,*q,*head; FILE*fp; if(all==0) { printf("数据库为空。 \n"); head=NULL; return(head); } if((fp=fopen("student.txt","rb"))==NULL) { printf("打开student.txt文件失败\n"); exit(0); } p=(structstudent*)malloc(sizeof(structstudent)); fread(p,sizeof(structstudent),1,fp); head=p; q=p; loop_1: printf("输入修改学生数据的姓名: "); scanf("%s",&name); while(strcmp(name,p->name)! =0) { p=p->next; if(p==NULL) { printf("没有该学生。 \n"); return(head); } } loop: printf("请选择修改学生的具体数据: \n1、学号;2、年级;3、专业;\n4、成绩1;5、成绩2;6、成绩3: "); scanf("%d",&m); if(m<1||m>6) { printf("\n输入的选择有误请重新输入: "); gotoloop; } switch(m) { case1: printf("输入新的学号: ");loop_2: scanf("%d",&num); while(q! =NULL) { if(q->num==num) { printf("输入的学生号错误请重新输入学生学号: "); gotoloop_2; } q=q->next; } p->num=num;break; case2: printf("输入新的年级: ");scanf("%d",&gra);p->grade=gra;break; case3: printf("输入新的专业: ");scanf("%s",&maj);strcpy(p->major,maj);break; case4: printf("输入新的成绩: ");scanf("%f",&score_1);p->score_1=score_1; p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3;break; case5: printf("输入新的成绩: ");scanf("%f",&score_2);p->score_2=score_2; p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3;break; case6: printf("输入新的成绩: ");scanf("%f",&score_3);p->score_3=score_3; p->aver=(p->score_1+p->score_2+p->score_3)/3; p->total=p->score_1+p->score_2+p->score_3;break; } printf("选择你要执行的内容: \n1、返回上一菜单\n2、返回主菜单\n3、修改另一学生的数据"); loop_5: scanf("%d",&n); if(n<1||n>3) { printf("输入的选择有误,请重新输入: "); gotoloop_5; } switch(n) { case1: gotoloop;break; case2: break; case3: gotoloop_1;break; } return(head); } voidread() { structstudent*p,*head; FILE*fp; if(all==0) { printf("系统没有学生数据。 \n"); return; } if((fp=fopen("student.txt","rb"))==NULL) { printf("打开文件失败。 \n"); exit(0); } p=(structstudent*)malloc(sizeof(structstudent)); fread(p,sizeof(structstudent),1,fp); head=p; printf("打开student.txt文件的学生数据。 \n"); printf("listnumnamegrademajorscore_1score_2score_3avertotal\n"); while(p! =NULL) { printf("student%-3d%-4s%-5d%-5s%-7.2f%-7.2f%-7.2f%-4.2f%-5.2f\n", p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p->aver,p->total); p=p->next; } fclose(fp); } voidaversort(structstudent*head) { inttemp; floattemp_1; chartemp_2[10]; structstudent*p,*q,*i; FILE*fp; p=head; while(p->next! =NULL) { q=p; i=p->next; while(i! =NULL) { if(i->aver>q->aver) q=i; i=i->next; } if(q! =p) { temp=p->num;p->num=q->num;q->num=temp; strcpy(temp_2,p->name);strcpy(p->name,q->name);strcpy(q->name,temp_2); temp=p->grade;p->grade=q->grade;q->grade=temp; strcpy(temp_2,p->major);strcpy(p->major,q->major);strcpy(q->major,temp_2); temp_1=p->score_1;p->score_1=q->score_1;q->score_1=temp_1; temp_1=p->score_2;p->score_2=q->score_2;q->score_2=temp_1; temp_1=p->score_3;p->score_3=q->score_3;q->score_3=temp_1; temp_1=p->aver;p->aver=q->aver;q->aver=temp_1; temp_1=p->total;p->total=q->total;q->total=temp_1; } p=p->next; } if((fp=fopen("student_1.txt","wb+"))==NULL) { printf("打开student_1.txt文件失败\n"); exit(0); } p=head; while(p! =NULL) { fwrite(p,sizeof(structstudent),1,fp); p=p->next; } p=head; rewind(fp); printf("读出由平均成绩排序出来的文件student_1.txt。 \n"); printf("listnumnamegrademajorscore_1score_2score_3avertotal\n"); while(p! =NULL) { fread(p,sizeof(structstudent),1,fp); printf("student%-3d%-4s%-5d%-5s%-7.2f%-7.2f%-7.2f%-4.2f%-5.2f\n", p->num,p->name,p->grade,p->major,p->score_1,p->score_2,p->score_3,p->aver,p->total); p=p->next; } fclose(fp); } voidtotalsort(structstudent*head) { inttemp; floattemp_1; chartemp_2[10]; structstudent*p,*q,*i; FILE*fp; p=head; while(p->next! =NULL) { q=p; i=p->next; while(i! =NULL) { if(i->total>q->total) q=i; i=i->next; } if(q! =p) { temp=p->num;p->num=q->num;q->num=temp; strcpy(temp_2,p->name);strcpy(p->name,q->name);strcpy(q->name,temp_2); temp=p->grade;p->grade=q->grade;q->grade=temp; strcpy(temp_2,p->major);strcpy(p->major,q->major);strcpy(q->major,temp_2); temp_1=p->score_1;p->score_1=q->score_1;q->score_1=temp_1; temp_1=p->score_2;p->score_2=q->score_2;q->score_2=temp_1; temp_1=p->score_3;p->score_3=q->score_3;q->score_3=temp_1; temp_1=p->aver;p->aver=q->aver;q->aver=temp_1; temp_1=p->total;p->total=q->total;q->total=temp_1; } p=p->next; } if((fp=fopen("student_1.txt","wb+"))==NULL) { printf("打开student_1.txt文件失败\n"); exit(0); } p=head; while(p! =NULL) { fwrite(p,sizeof(structstudent),1,fp); p=p->next; } p=head; rewind(fp); printf("读出由平均成绩排序出来的文件student_1.txt。 \n"); pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 学生 管理 系统