⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 第三题.txt

📁 学籍信息管理系统C语言编程
💻 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 + -