#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
struct Student{
int num;
char name[10];
int score[3];
double ave;
};
void input(struct Student *student,int number);
void show(struct Student *student,int number);
void search(struct Student *student,int number);
void swap(struct Student *student,int number);
void add(struct Student *student,int n1);
int main(){
printf("*****************学生成绩管理系统*****************\n");
printf("* *\n");
printf("* 1、成 绩 录 入 *\n");
printf("* 2、成 绩 显 示 *\n");
printf("* 3、成 绩 查 询 *\n");
printf("* 4、成 绩 排 序 *\n");
printf("* 5、成 绩 添 加 *\n");
printf("* 6、保 存 退 出 *\n");
printf("* *\n");
printf("**************************************************\n");
int n=0,i,j,number;
FILE *fp,*fpd;
while(n!=6)
{
printf("请输入你需要进行的操作:");
scanf("%d",&n);
if(n==1)//成绩记录入模块
{
printf("请输入您要录入学生的个数:");
scanf("%d",&number);
struct Student *student=(struct Student *)malloc(sizeof(struct Student)*number);//分配录入内存
if(((fp=fopen("data.txt","wb"))==NULL)||((fpd=fopen("number.txt","wb"))==NULL))
{
printf("error");
exit(0);
}
input(student,number);
if(fwrite(&number,sizeof(int ),1,fpd)!=1)
printf("error");
for(j=0;j<number;j++)
if(fwrite(&student[j],sizeof(struct Student),1,fp)!=1)
printf("error");
fclose(fp);
fclose(fpd);
free(student);
}
if(n==2)//成绩显示模块
{
if(((fp=fopen("data.txt","rb"))==NULL)||((fpd=fopen("number.txt","rb"))==NULL))
{
printf("error");
exit(0);
}
fread(&number,sizeof(int),1,fpd);
struct Student *student1=(struct Student *)malloc(sizeof(struct Student)*number);//分配显示内存
for(i=0;i<number;i++)
fread(&student1[i],sizeof(struct Student),1,fp);
show(student1,number);
printf("\n");
fclose(fp);
fclose(fpd);
free(student1);
}
if(n==3)//成绩查询模块
{
if(((fp=fopen("data.txt","rb"))==NULL)||((fpd=fopen("number.txt","rb"))==NULL))
{
printf("error");
exit(0);
}
fread(&number,sizeof(int),1,fpd);
struct Student *student2=(struct Student *)malloc(sizeof(struct Student)*number);//分配查询内存
for(i=0;i<number;i++)
fread(&student2[i],sizeof(struct Student),1,fp);
search(student2,number);
fclose(fp);
fclose(fpd);
free(student2);
}
if(n==4)//成绩排序模块
{
if(((fp=fopen("data.txt","rb"))==NULL)||((fpd=fopen("number.txt","rb"))==NULL))
{
printf("error");
exit(0);
}
fread(&number,sizeof(int),1,fpd);
struct Student *student3=(struct Student *)malloc(sizeof(struct Student)*number);//分配排序内存
for(i=0;i<number;i++)
fread(&student3[i],sizeof(struct Student),1,fp);
swap(student3,number);
fclose(fp);
fclose(fpd);
free(student3);
}
if(n==5)//成绩添加模块
{
int n1,numberx;
printf("请输入您要添加的学生的个数:");
scanf("%d",&n1);
if(((fp=fopen("data.txt","a"))==NULL)||((fpd=fopen("number.txt","w+"))==NULL))
{
printf("error");
exit(0);
}
fread(&number,sizeof(int),1,fpd);
numberx=number+n1;
struct Student *student4=(struct Student *)malloc(sizeof(struct Student)*n1);//分配排序内存
add(student4,n1);
if(fwrite(&numberx,sizeof(int),1,fpd)!=1)
printf("error");
for(j=0;j<n1;j++)
if(fwrite(&student4[j],sizeof(struct Student),1,fp)!=1)
printf("error");
fclose(fp);
fclose(fpd);
free(student4);
}
printf("**************************************************\n");
}
printf("保存成功......\n");
exit(0);
return 0;
}
void input(struct Student *student,int number)//成绩录入函数
{
int i,z=0;
printf("请输入学号、姓名、英语成绩、C语言成绩以及高数成绩:\n");
for(i=0;i<number;i++)
{
scanf("%d %s %d %d %d",&student[i].num,student[i].name,&student[i].score[0],&student[i].score[1],&student[i].score[2]);
student[i].ave=(student[i].score[0]+student[i].score[1]+student[i].score[2])/3.0;
}
}
void show(struct Student *student,int number)//成绩显示函数
{
int i=0;
printf("学号 姓名 英语成绩 C语言成绩 高数成绩 平均成绩\n");
for(i=0;i<number;i++)
printf(" %-d%8s%7d%11d%10d%12.2lf\n",student[i].num,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2],student[i].ave);
}
void search(struct Student *student,int number)//成绩查询函数
{
int sid,i;
printf("请输入您要查询的学生的学号:");
scanf("%d",&sid);
printf("学号 姓名 英语成绩 C语言成绩 高数成绩 平均成绩\n");
for(i=0;i<number;i++)
{
if(sid==student[i].num)
printf(" %-d%8s%7d%11d%10d%12.2lf\n",student[i].num,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2],student[i].ave);
}
}
void swap(struct Student *student,int number)//成绩排序函数
{
int i,j;
struct Student temp;
for(i=1;i<number;i++)
{
for(j=0;j<number-i;j++)
{
if(student[i].ave>student[i-1].ave)
{
temp=student[i];
student[i]=student[i-1];
student[i-1]=temp;
}
}
}
printf("学号 姓名 英语成绩 C语言成绩 高数成绩 平均成绩\n");
for(i=0;i<number;i++)
printf(" %-d%8s%7d%11d%10d%12.2lf\n",student[i].num,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2],student[i].ave);
}
void add(struct Student *student,int n1)//成绩添加函数
{
int i;
printf("请输入要添加的学生的学号、姓名、英语成绩、C语言成绩以及高数成绩:\n");
for(i=0;i<n1;i++)
{
scanf("%d %s %d %d %d",&student[i].num,student[i].name,&student[i].score[0],&student[i].score[1],&student[i].score[2]);
student[i].ave=(student[i].score[0]+student[i].score[1]+student[i].score[2])/3.0;
}
}
C语言—学生成绩管理系统
5星 · 超过95%的资源 需积分: 38 167 浏览量
2018-11-30
15:18:34
上传
评论 43
收藏 249KB ZIP 举报
ScienceBomb
- 粉丝: 22
- 资源: 4
最新资源
- tensorflow-2.7.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp39-cp39-manylinux2010-x86-64.whl
- Python版本快速排序源代码
- Python 语言版的快速排序算法实现
- 450815388207377安卓_base.apk
- 超微主板 X9DRE-TF+ bios 支持 nvme启动
- 基于Python通过下载气象数据和插值拟合离散数据曲线实现对寒潮过程的能量分析
- 健身房系统的设计与实现论文Java项目
- 使用TCP实现的搜索可用服务器
- 使用贪心算法解决会议时间安排问题的 Java 示例代码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈