c语言学生管理系统.docx
- 文档编号:5268334
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:30
- 大小:18.42KB
c语言学生管理系统.docx
《c语言学生管理系统.docx》由会员分享,可在线阅读,更多相关《c语言学生管理系统.docx(30页珍藏版)》请在冰豆网上搜索。
c语言学生管理系统
#include
#include
#include
typedefstructlink
{
intnumber;
charname[10];
charsex[4];
intscore[10];
floatsum;
floatave;
structlink*next;
}link;
intm,n;
link*h;
//菜单
voidmenu()
{
printf("\n\n\n\t\t\t*************菜单*************\n");
printf("\n\t\t\t\t1从文件读取学生信息\n");
printf("\t\t\t\t2显示所有学生信息\n");
printf("\t\t\t\t3进入成绩管理系统\n");
printf("\t\t\t\t4进入学生信息维护系统\n");
printf("\t\t\t\t5显示菜单\n");
printf("\t\t\t\t6将学生信息写入新的文件\n");
printf("\t\t\t\t7返回主菜单\n");
printf("\t\t\t\t8退出系统\n");
}
//排序菜单
voidmenupx()
{
printf("\n\n\n\t\t\t\*************排序*************\n");
printf("\n\t\t\t\t1按总分顺序排序\n");
printf("\t\t\t\t2按总分降序排序\n");
printf("\t\t\t\t3按一门课成绩顺序排序\n");
printf("\t\t\t\t4按一门课成绩降序排序\n");
printf("\t\t\t\t5返回上级菜单\n");
printf("\t\t\t\t6返回主系统\n");
}
//按某门课成绩排序菜单
voidmenupx3()
{
inti;
for(i=1;i<=n;i++)
printf("*%d按科目%d的成绩排序\n",i,i);
}
//学生信息维护菜单
voidmenuxxwh()
{
printf("\n\n\n\t\t\t\*************学生信息维护*************\n");
printf("\n\t\t\t\t1显示所有学生信息\n");
printf("\t\t\t\t2计算每个学生的总分和平均分\n");
printf("\t\t\t\t3按学号查找一个同学\n");
printf("\t\t\t\t4按姓名查找一个同学\n");
printf("\t\t\t\t5按学号删除一个同学的信息\n");
printf("\t\t\t\t6按姓名删除一个同学的信息\n");
printf("\t\t\t\t7添加一个同学的信息\n");
printf("\t\t\t\t8修改一个同学的信息\n");
printf("\t\t\t\t9返回上级菜单\n");
printf("\t\t\t\t10返回主系统\n");
}
//链表
link*creat()
{
link*head,*p;
inti,j=0;
FILE*fp1;
head=NULL;
p=(link*)malloc(sizeof(link));
if(p==NULL)
printf("申请内存出错!
!
!
");
else
head=p;
printf("已正确读取文件\n",m,n);
fp1=fopen("输入.txt","r");
if(fp1==NULL)
printf("读取文件失败!
!
!
");
while(j { j++; fscanf(fp1,"%d%s%s",&p->number,p->name,p->sex); for(i=0;i { fscanf(fp1,"%d",&p->score[i]); } p->next=(link*)malloc(sizeof(link)); if(p->next==NULL) printf("申请内存出错! ! ! "); if(j==m) p->next=NULL; else p=p->next; } fclose(fp1); returnhead; } //信息输入到文件 voidfscan(link*head) { FILE*fp; link*t; inti,j; t=head; fp=fopen("输出.txt","w+"); if(fp==NULL) { printf("文件处理错误! ! ! "); } else { fprintf(fp,"学号姓名性别"); for(j=1;j<=n;j++) { fprintf(fp,"科目%d",j); } fprintf(fp,"\n"); while(t! =NULL) { fprintf(fp,"%4d%s%s",t->number,t->name,t->sex); for(i=0;i fprintf(fp,"%4d",t->score[i]); fprintf(fp,"\n"); t=t->next; } fclose(fp); printf("信息已写入文件! ! "); } } /*//链表复制 link*copcreat(link*head) { link*p,*q,*h,*t=NULL; inti; p=head; h=NULL; q=(link*)malloc(sizeof(link)); if(q==NULL) printf("申请内存出错! ! ! "); else h=q; while(p! =NULL) { q->ave=p->ave; q->number=p->number; for(i=0;i { q->score[i]=p->score[i]; } q->sum=p->sum; strcpy(q->name,p->name); strcpy(q->sex,p->sex); q->next=(link*)malloc(sizeof(link)); if(q->next==NULL) printf("申请内存出错! ! ! "); else {p=p->next; t=q; q=q->next; } } t->next=NULL; returnh; } */ //显示学生信息 voidprint(link*head) { inti,j; link*t,*h; t=h=head; printf(""); for(j=1;j<=n;j++) { printf("****"); } printf("学生信息"); for(j=1;j<=n;j++) { printf("****"); } printf("\n"); printf("学号姓名性别"); for(j=1;j<=n;j++) { printf("科目%d",j); } printf("\n"); while(t! =NULL) { printf("%4d%s%s",t->number,t->name,t->sex); for(i=0;i printf("%4d",t->score[i]); printf("\n"); t=t->next; } } //计算每个同学的总分、平均分 link*sum(link*head) { link*p; inti; p=head; while(p! =NULL) { p->sum=0; p->ave=0; for(i=0;i p->sum+=p->score[i]; p->ave=p->sum/n; p=p->next; } returnhead; } //输出成绩、总分、平均分 voidprint1(link*head) { inti,j; link*t,*h; t=h=head; printf(""); for(j=1;j<=n;j++) { printf("*****"); } printf("学生成绩和总分"); for(j=1;j<=n;j++) { printf("*****"); } printf("\n"); printf("学号姓名性别"); for(j=1;j<=n;j++) { printf("科目%d",j); } printf("总分平均分\n"); while(t! =NULL) { printf("%4d%s%s",t->number,t->name,t->sex); for(i=0;i printf("%4d",t->score[i]); printf("%.2f",t->sum); printf("%.2f",t->ave); printf("\n"); t=t->next; } } //排序 //按总分顺序排序 link*sumsxpx(link*head) { inti; link*p,*q,*temp; temp=(link*)malloc(sizeof(link)); for(p=head;p! =NULL;p=p->next) { for(q=p->next;q! =NULL;q=q->next) { if(p->sum>q->sum) { temp->sum=p->sum; temp->ave=p->ave; temp->number=p->number; for(i=0;i { temp->score[i]=p->score[i]; } strcpy(temp->name,p->name); strcpy(temp->sex,p->sex); p->sum=q->sum; p->ave=q->ave; p->number=q->number; for(i=0;i { p->score[i]=q->score[i]; } strcpy(p->name,q->name); strcpy(p->sex,q->sex); q->sum=temp->sum; q->ave=temp->ave; q->number=temp->number; for(i=0;i { q->score[i]=temp->score[i]; } strcpy(q->name,temp->name); strcpy(q->sex,temp->sex); } } } returnhead; } //按总分降序排序 link*sumjxpx(link*head) { inti; link*p,*q,*temp; temp=(link*)malloc(sizeof(link)); for(p=head;p! =NULL;p=p->next) { for(q=p->next;q! =NULL;q=q->next) { if(p->sum { temp->sum=p->sum; temp->ave=p->ave; temp->number=p->number; for(i=0;i { temp->score[i]=p->score[i]; } strcpy(temp->name,p->name); strcpy(temp->sex,p->sex); p->sum=q->sum; p->ave=q->ave; p->number=q->number; for(i=0;i { p->score[i]=q->score[i]; } strcpy(p->name,q->name); strcpy(p->sex,q->sex); q->sum=temp->sum; q->ave=temp->ave; q->number=temp->number; for(i=0;i { q->score[i]=temp->score[i]; } strcpy(q->name,temp->name); strcpy(q->sex,temp->sex); } } } returnhead; } //按一门课顺序排序 link*scoresxpx(link*head) { link*h=head; link*p,*q,*temp; inta,i; printf("请选择一门课科目: "); scanf("%d",&a); temp=(link*)malloc(sizeof(link)); for(p=head;p! =NULL;p=p->next) { for(q=p->next;q! =NULL;q=q->next) { if(p->score[a-1]>q->score[a-1]) { temp->sum=p->sum; temp->ave=p->ave; temp->number=p->number; for(i=0;i { temp->score[i]=p->score[i]; } strcpy(temp->name,p->name); strcpy(temp->sex,p->sex); p->sum=q->sum; p->ave=q->ave; p->number=q->number; for(i=0;i { p->score[i]=q->score[i]; } strcpy(p->name,q->name); strcpy(p->sex,q->sex); q->sum=temp->sum; q->ave=temp->ave; q->number=temp->number; for(i=0;i { q->score[i]=temp->score[i]; } strcpy(q->name,temp->name); strcpy(q->sex,temp->sex); } } } returnhead; } //按一门课降序排序 link*scorejxpx(link*head) { link*h=head; link*p,*q,*temp; inta,i; printf("请选择一门课科目: "); scanf("%d",&a); temp=(link*)malloc(sizeof(link)); for(p=head;p! =NULL;p=p->next) { for(q=p->next;q! =NULL;q=q->next) { if(p->score[a-1] { temp->sum=p->sum; temp->ave=p->ave; temp->number=p->number; for(i=0;i { temp->score[i]=p->score[i]; } strcpy(temp->name,p->name); strcpy(temp->sex,p->sex); p->sum=q->sum; p->ave=q->ave; p->number=q->number; for(i=0;i { p->score[i]=q->score[i]; } strcpy(p->name,q->name); strcpy(p->sex,q->sex); q->sum=temp->sum; q->ave=temp->ave; q->number=temp->number; for(i=0;i { q->score[i]=temp->score[i]; } strcpy(q->name,temp->name); strcpy(q->sex,temp->sex); } } } returnhead; } //按学号查找一个同学信息 link*findxh(link*head) { intx; link*h,*t=NULL; printf("请输入学生的学号\n"); scanf("%d",&x); for(h=head;h! =NULL;h=h->next) { if(x==h->number) { t=h; break; } } returnt; } //按姓名查找一个同学 link*findxm(link*head) { charstr[10]; link*h,*t=NULL; printf("请输入学生的姓名\n"); getchar(); gets(str); for(h=head;h! =NULL;h=h->next) { if(strcmp(h->name,str)==0) { t=h; break; } } returnt; } //按学号删除一个同学 link*delxh(link*head) { intkey,k=0; link*h,*t,*p; h=t=p=head; printf("请输入要删除的学生的学号: "); scanf("%d",&key); for(;p! =NULL;p=p->next) { k++; if(k>2) { t=t->next; } if((key==p->number)&&(k==1)) { h=p->next; } elseif(key==p->number&&k>1) { t->next=p->next; } elseif(key==p->number&&p->next==NULL) { t=NULL; } } returnh; } //按姓名删除一个同学 link*delxm(link*head) { intk=0; charstr[10]; link*h,*t,*p; h=t=p=head; printf("请输入要删除的学生的姓名: "); getchar(); gets(str); for(;p! =NULL;p=p->next) { k++; if(k>2) { t=t->next; } if((strcmp(p->name,str)==0)&&(k==1)) { h=p->next; } elseif(strcmp(p->name,str)==0&&k>1) { t->next=p->next; } elseif(strcmp(p->name,str)==0&&p->next==NULL) { t=NULL; } } returnh; } //添加一个学生信息 link*add(link*head) { link*h,*h1; inti,k=0; h1=(link*)malloc(sizeof(link)); printf("请输入要添加学生的信息: \n"); printf("学号姓名性别"); for(i=0;i { printf("科目%d",i+1); } printf("\n"); scanf("%d%s%s",&h1->number,h1->name,h1->sex); for(i=0;i { scanf("%d",&h1->score[i]); } h1->next=head; h=h1; returnh; } //修改一个同学的信息 link*xg(link*t) { link*p=t; inti; printf("请输入这个同学的所有信息: \n"); scanf("%d%s%s",&p->number,p->name,p->sex); for(i=0;i { scanf("%d",&p->score[i]); } returnp; } //主函数 main() { inta,b,c,i,j; link*h,*t,*d; link*f,*p; L: printf("\n\n\n\n\n\n\t\t\t\********欢迎使用学生信息管理系统********\n"); printf("\n\n\t\t\t\t制作人: "); printf("\n\n\t\t\t\t请输入学生数和科目数: "); scanf("%d%d",&m,&n); H: system("cls"); menu(); while (1) { scanf("%d",&a); switch(a) { case1: { h=creat(); } break; case2: { print(h); }break; case3: {system("c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 管理 系统