📄 第三题.txt
字号:
#include <stdio.h>
#include <string.h>
#define N 5
#define M 10
struct information
{
int num;
char name[20];
char sex[5];
char dornum[5];
char phone[10];
};
struct exam_information
{
int num;
char textnum[5];
char textname[20];
int xf;
int pscj;
int sycj;
int jmcj;
float zhcj;
float sdxf;
};
void main()
{
int i;
printf("\t\t\t学生学籍信息管理系统\n");
FILE *fp;
fp=fopen("A.TXT","w");
if((fp=fopen("A.TXT","w"))==NULL)
{
printf("无法打开文件\n");
return;
}
printf("下面进入数据录入功能:\n");
struct information stu[N];
printf("请输入学生成绩基本信息:\n学号 姓名 性别 宿舍号码 电话号码\n");
fprintf(fp,"学号 姓名 性别 宿舍号码 电话号码\n");
for(i=0;i<N;i++)
{
scanf("%d %s %s %s %s",&stu[i].num,stu[i].name,stu[i].sex,stu[i].dornum,stu[i].phone);
fprintf(fp,"%d %s %s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dornum,stu[i].phone);
}
fclose(fp);
fp=fopen("B.TXT","w");
if((fp=fopen("B.TXT","w"))==NULL)
{
printf("无法打开文件\n");
return;
}
struct exam_information score[M];
printf("请输入学生成绩基本信息:\n学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩\n");
for(i=0;i<M;i++)
{
scanf("%d %s %s %d %d %d %d",&score[i].num,score[i].textnum,score[i].textname,&score[i].xf,&score[i].pscj,&score[i].sycj,&score[i].jmcj);
int t;
if(score[i].sycj==-1) score[i].zhcj=(float)(score[i].pscj*0.3+score[i].jmcj*0.7);
else score[i].zhcj=float(score[i].pscj*0.15+score[i].sycj*0.15+score[i].jmcj*0.7);
t=int (score[i].zhcj/10);
switch(t)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: score[i].sdxf=(float)(score[i].xf*0.0);
printf("\n实得学分为:%f",score[i].sdxf);break;
case 6: score[i].sdxf=(float)(score[i].xf*0.6);
printf("\n实得学分为:%f",score[i].sdxf);break;
case 7: score[i].sdxf=(float)(score[i].xf*0.75);
printf("\n实得学分为:%f",score[i].sdxf);break;
case 8: score[i].sdxf=(float)(score[i].xf*0.8);
printf("\n实得学分为:%f",score[i].sdxf);break;
case 9: score[i].sdxf=(float)(score[i].xf*1.0);
printf("\n实得学分为:%f",score[i].sdxf);break;
case 10: score[i].sdxf=(float)(score[i].xf*1.0);
printf("\n实得学分为:%f",score[i].sdxf);break;
}
}
fprintf(fp,"学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分\n");
for(i=0;i<M;i++)
fprintf(fp,"%d %s %s %d %d %d %d %f %f\n",score[i].num,score[i].textnum,score[i].textname,score[i].xf,score[i].pscj,score[i].sycj,score[i].jmcj,score[i].zhcj,score[i].sdxf);
fclose(fp);
//学生基本情况查询
//学号
int n;
printf("\n下面进入学生基本情况查询功能:\n按学号查询:\n");
printf("请输入一个学号:\n");
scanf("%d",&n);
printf("此生的所有信息如下:\n");
for(i=0;i<N;i++)
if(n==stu[i].num)
printf("%d %s %s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dornum,stu[i].phone);
//姓名
printf("按姓名查询:\n");
char sn[20];
printf("请输入一个姓名:\n");
scanf("%s",sn);
printf("此生的所有信息如下:\n");
for(i=0;i<N;i++)
if(strcmp(sn,stu[i].name)==0)
printf("%d %s %s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dornum,stu[i].phone);
//宿舍号码
printf("按宿舍号码查询:\n");
char sdornum[5]; //用于输入宿舍号码
printf("请输入一个宿舍号码:\n");
scanf("%s",sdornum);
printf("本室所有学生的基本信息如下:\n");
for(i=0;i<N;i++)
{
if(strcmp(sdornum,stu[i].dornum)==0)
printf("%d %s %s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dornum,stu[i].phone);
}
//成绩查询
printf("成绩查询:\n");
printf("请输入一个学号:\n");
scanf("%d",&n);
printf("此生的所有课程情况如下:\n");
printf("学号:%d\n",n);
int t=0; //用于共修科数
float sdzxf=0; //用于计算总学分
for(i=0;i<M;i++)
if(n==score[i].num)
{
printf("课程编号:%s 课程名称:%s 综合成绩:%f 实得学分:%f\n",score[i].textnum,score[i].textname,score[i].zhcj,score[i].sdxf);
t+=1;
sdzxf+=score[i].sdxf;
}
printf("共修:%d科 实得总学分为:%f\n",t,sdzxf);
//排序功能
//按综合成绩
printf("下面进入排序功能:\n");
printf("按综合成绩降序排列:\n");
float zzhcj[N]={0.0};
float temp[N];
int j,k;
float x;
for(j=1;j<=N;j++)
{
for(i=0;i<M;i++)
if(score[i].num==j) zzhcj[j]+=score[i].zhcj;
}
j=1;
for(k=1;k<=N;k++)
temp[k]=zzhcj[j++];
for(i=1;i<N;i++)
{
for(k=i+1;k<=N;k++)
if(temp[k]>=temp[i]) {x=temp[k],temp[k]=temp[i];temp[i]=x;}
}
i=1;
for(k=1;k<=N;k++)
{
for(j=1;j<=N;j++)
if(zzhcj[j]==temp[k]) printf("第%d名: %d号\n",i++,j);
}
//按实得学分
printf("按实得学分降序排列如下:\n");
float sd[N]={0};
for(j=1;j<=N;j++)
{
for(i=0;i<M;i++)
if(score[i].num==j) sd[j]+=score[i].sdxf;
}
j=1;
for(k=1;k<=N;k++)
temp[k]=sd[j++];
for(i=1;i<N;i++)
{
for(k=i+1;k<=N;k++)
if(temp[k]>=temp[i]) {x=temp[k],temp[k]=temp[i];temp[i]=x;}
}
i=1;
for(k=1;k<=N;k++)
{
for(j=1;j<=N;j++)
if(sd[j]==temp[k]) printf("第%d名: %d号\n",i++,j);
}
//删除功能
printf("下面进入删除功能:\n");
int z;
printf("请输入你要删除学生的学号:\n");
scanf("%d",&n);
for(i=0;i<N;i++)
if(stu[i].num==n) z=i;
fp=fopen("A.TXT","w");
if((fp=fopen("A.TXT","w"))==NULL)
{
printf("无法打开文件\n");
return;
}
fprintf(fp,"学号 姓名 性别 宿舍号码 电话号码\n");
for(i=0;i<z;i++)
fprintf(fp,"%d %s %s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dornum,stu[i].phone);
for(i=z+1;i<N;i++)
fprintf(fp,"%d %s %s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dornum,stu[i].phone);
fclose(fp);
fp=fopen("B.TXT","w");
if((fp=fopen("B.TXT","w"))==NULL)
{
printf("无法打开文件\n");
return;
}
fprintf(fp,"学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分\n");
for(i=0;i<N;i++)
{
if(score[i].num==n)
{
z=i;
for(j=0;j<z;j++)
fprintf(fp,"%d %s %s %d %d %d %d %f %f\n",score[j].num,score[j].textnum,score[j].textname,score[j].xf,score[j].pscj,score[j].sycj,score[j].jmcj,score[j].zhcj,score[j].sdxf);
for(j=z+1;j<z+N;j++)
fprintf(fp,"%d %s %s %d %d %d %d %f %f\n",score[j].num,score[j].textnum,score[j].textname,score[j].xf,score[j].pscj,score[j].sycj,score[j].jmcj,score[j].zhcj,score[j].sdxf);
for(j=z+N+1;j<M;j++)
fprintf(fp,"%d %s %s %d %d %d %d %f %f\n",score[j].num,score[j].textnum,score[j].textname,score[j].xf,score[j].pscj,score[j].sycj,score[j].jmcj,score[j].zhcj,score[j].sdxf);
}
}
fclose(fp);
printf("删除后学生基本信息如下:\n");
printf("学号 姓名 性别 宿舍号码 电话号码\n");
for(i=0;i<z;i++)
printf("%d %s %s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dornum,stu[i].phone);
for(i=z+1;i<N;i++)
printf("%d %s %s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dornum,stu[i].phone);
printf("删除后学生的成绩基本信息如下:\n");
for(j=0;j<z;j++)
printf("%d %s %s %d %d %d %d %f %f\n",score[j].num,score[j].textnum,score[j].textname,score[j].xf,score[j].pscj,score[j].sycj,score[j].jmcj,score[j].zhcj,score[j].sdxf);
for(j=z+1;j<z+N;j++)
printf("%d %s %s %d %d %d %d %f %f\n",score[j].num,score[j].textnum,score[j].textname,score[j].xf,score[j].pscj,score[j].sycj,score[j].jmcj,score[j].zhcj,score[j].sdxf);
for(j=z+N+1;j<M;j++)
printf("%d %s %s %d %d %d %d %f %f\n",score[j].num,score[j].textnum,score[j].textname,score[j].xf,score[j].pscj,score[j].sycj,score[j].jmcj,score[j].zhcj,score[j].sdxf);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -