文章标题
来源:互联网 发布:hexo博客绑定域名 编辑:程序博客网 时间:2024/06/05 16:21
C语言 学生成绩管理系统
#include<stdio.h>#include<string.h>typedef struct student{ char name[10]; int num; int score[3]; float ave; int sum;}STUD;void XMB(void); //显示主界面void add(STUD a[],int j); //添加若干条记录void delete(STUD a[],int j); //删除若干条记录void alt(STUD a[],int k); //修改若干条信息void view(STUD a[],int j); //按不同的方式查看所有信息void inqu(STUD a[],int k); //按不同的方式查找信息void viewave(STUD a[],int k); //查看符合平均值条件的信息int read(STUD a[]); //从文件中读入数据到数组,返回记录条数void sortd(STUD a[],int n); //降序排序void sortu(STUD a[],int j); //升序排序void sortu(STUD a[],int j); //按学号排序FILE *f1;STUD term;int main(void){ STUD a[100]; int m,n,j,k; char c; j=read(a); for(k=0;k<j;k++){ a[k].sum=a[k].score[0]+a[k].score[1]+a[k].score[2]; a[k].ave=a[k].sum/3.0; } do{ XMB(); scanf("%d",&n); switch(n){ case 1:view(a,j);break; case 2:add(a,j);break; case 3:delete(a,j);break; case 4:alt(a,j);break; case 5:inqu(a,j);break; case 6:viewave(a,j);break; default:printf("输入有误!\n"); } printf("\n按任意键继续,按0键结束\n\n"); j=read(a); c=getch(); } while(c!='0');}void XMB(void){ printf("|—-------欢迎使用学生成绩管理系统------|\n"); printf("| 1.显示所有学生信息 |\n"); printf("| 2.添加若干条信息 |\n"); printf("| 3.删除指定学生信息 |\n"); printf("| 4.修改指定学生信息 |\n"); printf("| 5.查找指定学生信息 |\n"); printf("| 6.查看符合平均值条件学生的信息 |\n"); printf("|---------------------------------------|\n\n"); printf("请选择(1-6):");}int read(STUD a[]){ int m=0; if( (f1=fopen("学生成绩.txt","r+"))==NULL){ printf("文件不存在,请检查!\n"); exit(1); } while(fscanf(f1,"%s %d %d %d %d %f %d",a->name,&a->num,&a->score[0], &a->score[1],&a->score[2],&a->ave,&a->sum)!=EOF){ a++; ++m; } rewind(f1); fclose (f1); return m;}void sortd (STUD a[],int j){ int p,q,k; for(p=0;p<j-1;p++){ k=p; for(q=p+1;q<j;q++){ if(a[k].ave>a[q].ave){ k=q; } } if(k!=p){ term=a[k]; a[k]=a[p]; a[p]=term; } }}void sortu (STUD a[],int j){ int p,q,k; for(p=0;p<j-1;p++){ k=p; for(q=p+1;q<j;q++){ if(a[k].ave<a[q].ave){ k=q; } } if(k!=p){ term=a[k]; a[k]=a[p]; a[p]=term; } }}void sortn(STUD a[],int j){ int p,q,k; for(p=0;p<j-1;p++){ k=p; for(q=p+1;q<j;q++){ if(a[k].num>a[q].num){ k=q; } } if(k!=p){ term=a[k]; a[k]=a[p]; a[p]=term; } }}void view(STUD a[],int j){ int i,k,m; m=j; STUD term; printf("*********************\n"); printf(" 1.按学号查看所有信息\n"); printf(" 2.按照平均值升序查看\n"); printf(" 3.按照平均值降序查看\n"); printf("*********************\n"); printf("请选择:"); scanf("%d",&i); switch(i) { case 1:{ sortn(a,m);break; } case 2:{ sortd(a,m);break; } case 3:{ sortu(a,m);break; } } printf(" 姓名 学号 成绩1 成绩2 成绩3 平均分 总分\n"); for(k=0;k<j;k++){ printf("%6s %6d %6d %6d %8d %9.2f %6d\n",a[k].name,a[k].num,a[k].score[0], a[k].score[1],a[k].score[2],a[k].ave,a[k].sum); }}void add(STUD a[],int j){ int n,k,i; printf("请输入需要添加的记录条数:"); scanf("%d",&n); for(k=j;k<n+j;k++){ printf("姓名:\n"); scanf("%s",a[k].name); printf("学号:\n"); scanf("%d",&a[k].num); printf("分数一:\n"); scanf("%d",&a[k].score[0]); printf("分数二:\n"); scanf("%d",&a[k].score[1]); printf("分数三:\n"); scanf("%d",&a[k].score[2]); a[k].sum=a[k].score[0]+a[k].score[1]+a[k].score[2]; a[k].ave=a[k].sum/3.0; if( (f1=fopen("学生成绩.txt","a+"))==NULL){ printf("文件不存在,请检查!\n"); exit(1); } fprintf(f1,"%s %d %d %d %d %f %d\n",a[k].name,a[k].num,a[k].score[0], a[k].score[1],a[k].score[2],a[k].ave,a[k].sum); printf("\n添加成功!\n"); } rewind(f1); fclose(f1);}void delete(STUD a[],int k){ char name[10]; int num,n,i,j,p,q; int flag=0; printf("请输入需要删除的记录条数:"); scanf("%d",&p); for(q=0;q<p;q++){ printf("**********************\n"); printf("1.根据姓名删除记录\n"); printf("2.根据学号删除记录\n"); printf("**********************\n"); printf("\n请选择\n"); scanf("%d",&n); if(n==1){ printf("请输入姓名:"); scanf("%s",name); printf("\n"); } else { printf("请输入学号:"); scanf("%d",&num); printf("\n"); } for(i=0;i<k;i++){ if(a[i].num==num||(strcmp(a[i].name,name)==0)){ if(i==k) k=k-1; else{ for(j=i;j<k-1;j++){ a[j]=a[j+1]; } } flag=1; } } if(flag==0){ printf("输入信息有误!请检查!\n"); } else{ if( (f1=fopen("学生成绩.txt","w+"))==NULL){ printf("文件不存在,请检查!\n"); exit(1); } for(i=0;i<k-1;i++){ fprintf(f1,"%s %d %d %d %d %.2f %d\n", a[i].name, a[i].num, a[i].score[0], a[i].score[1],a[i].score[2],a[i].ave,a[i].sum); } printf("\n删除成功!\n\n"); } } rewind(f1); fclose(f1);}void alt(STUD a[],int k){ int flag=0; char name[10]; int num,n,i,j,p,q; printf("请输入需要修改的记录条数:"); scanf("%d",&p); for(q=0;q<p;q++){ printf("**********************\n"); printf("1.根据姓名修改记录\n"); printf("2.根据学号修改记录\n"); printf("**********************\n"); printf("\n请选择\n"); scanf("%d",&n); if(n==1){ printf("请输入姓名:"); scanf("%s",name); printf("\n"); } else { printf("请输入学号:"); scanf("%d",&num); printf("\n"); } for(i=0;i<k;i++){ if(a[i].num==num||(strcmp(a[i].name,name)==0)){ printf("请输入新的信息:\n"); printf("姓名:\n"); scanf("%s",a[i].name); printf("学号:\n"); scanf("%d",&a[i].num); printf("分数一:\n"); scanf("%d",&a[i].score[0]); printf("分数二:\n"); scanf("%d",&a[i].score[1]); printf("分数三:\n"); scanf("%d",&a[i].score[2]); flag=1; break; } } if(flag==0) printf("输入信息有误!\n"); else { if( (f1=fopen("学生成绩.txt","w+"))==NULL){ printf("文件不存在,请检查!\n"); exit(1); } for(i=0;i<k;i++){ fprintf(f1,"%s %d %d %d %d %.2f %d\n", a[i].name, a[i].num, a[i].score[0], a[i].score[1],a[i].score[2],a[i].ave,a[i].sum); } printf("\n修改成功!\n\n"); } } rewind(f1); fclose(f1);}void inqu(STUD a[],int k){ char name[10]; int number=0,n,i,j; int flag=0; printf("**********************\n"); printf("1.根据姓名查找记录\n"); printf("2.根据学号查找记录\n"); printf("**********************\n"); printf("\n请选择\n"); scanf("%d",&n); if(n==1){ printf("请输入姓名:"); scanf("%s",name); printf("\n"); } else { printf("请输入学号:"); scanf("%d",&number); printf("\n"); } for(i=0;i<k;i++){ if(a[i].num==number||(strcmp(a[i].name,name)==0)){ printf(" 姓名 学号 成绩1 成绩2 成绩3 平均分 总分\n"); printf("%6s %6d %6d %6d %8d %9.2f %6d\n",a[i].name,a[i].num,a[i].score[0], a[i].score[1],a[i].score[2],a[i].ave,a[i].sum); } flag=1; break; } if(flag==0) printf("输入信息有误!\n"); }void viewave(STUD a[],int k){ int i,n; printf("***************************\n"); printf("1.查找平均值大于90的学生\n"); printf("2.查找平均值小于60的学生\n"); printf("***************************\n请选择:"); scanf("%d",&n); printf(" 姓名 学号 成绩1 成绩2 成绩3 平均分 总分\n"); if(n==1){ for(i=0;i<k;i++){ if(a[i].ave>90) printf("%6s %6d %6d %6d %8d %9.2f %6d\n",a[i].name,a[i].num,a[i].score[0], a[i].score[1],a[i].score[2],a[i].ave,a[i].sum); } } else { for(i=0;i<k;i++){ if(a[i].ave<60) printf("%6s %6d %6d %6d %8d %9.2f %6d\n",a[i].name,a[i].num,a[i].score[0], a[i].score[1],a[i].score[2],a[i].ave,a[i].sum); } }}
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- Qt中的置顶窗口
- Android Studio如何导出jar包
- 安装Ubuntu 16.04后要做的事
- Drawable
- @face-font调用服务器字体
- 文章标题
- 夕拾-数据结构-计数排序
- [python]Python2编码问题
- JSP
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- java观察者模式小demo
- JavaSE_12th_Object类及常用方法
- Children of the Candy Corn [bfs][dfs]
- URL链接