资源简介

实验题目 1、设计程序求任意给定范围之间的素数。 2、模仿EXCEL中的自动筛选,设计完成班级学生信息的自动筛选程序。 实验要求 1.该实验的课内学时是4个课时。 2.题目1必须完成。 3.题目2完成如下基本功能: 1)自定义班级学生信息结构体,结构体的数据项超过5个(包含5个)。 2)输入班级的全部数据。 3)对每个数据项根据数据项的值进行筛选。 4)实现模糊筛选,例如可将姓名中包含“张”或姓“张”的学生列出。 5)输出筛选的结果。 4.题目2在完成上述基本功能的前提下,有能力的同学可以完成如下加强功能: 1)可以进行自定义的筛选。 2)班级的全部数据能够以文件方式保存。 3)筛选之后的数据

资源截图

代码片段和文件信息

#include 
#include 
#include 
typedef struct 
{
long int num;
char name[20];
float score[4];        //四门成绩分别为 语文、数学、英语、计算机 
float total;
} Student;
//输出函数 
void Export(Student stu[])
{int i;
printf(“\n%10s%20s%8s%8s%8s%8s%8s\n““学号““姓名““语文““数学““英语““计算机““总分“);
for(i=0;stu[i].num!=0;i++)
        if(strcmp(stu[i].name“#“))               //用 ‘#‘ 号来标记筛选过程中不需要的学生信息                   
printf(“%10ld%20s%8.1f%8.1f%8.1f%8.1f%8.1f\n“stu[i].numstu[i].namestu[i].score[0]stu[i].score[1]stu[i].score[2]stu[i].score[3]stu[i].total);
printf(“\n“);
}
// 输入函数
int Input(Student stu[])
{int i;
printf(“\n请先后输入学号,姓名,语文、数学、英语、计算机成绩:\n“);
printf(“输入0、0、0、0、0、0退出输入\n“);           // 用 0 来标记输出结束,同时后面用它来控制循环 
for(i=0;i<100;i++)
{
     while(scanf(“%ld%s%f%f%f%f“&stu[i].numstu[i].name&stu[i].score[0]&stu[i].score[1]&stu[i].score[2]&stu[i].score[3])!=6)
           fflush(stdin);
     stu[i].total=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
 if  (stu[i].num==0) break;                        // 遇到 0 说明已经全部输出 
}
}
//打印菜单 
int menu()
{int z;                                            
     printf(“\n\t\t每次筛选前必须读入筛选信息,可键盘输入或从文件中读取\n\n“); 
     printf(“\t\t===========班级学生信息筛选系统===========\n“);
     printf(“\t\t||\t1.输入学生信息\t\t\t||\n“);
     printf(“\t\t||\t2.从文件里读取学生信息\t\t||\n“);
     printf(“\t\t||\t3.输出学生信息\t\t\t||\n“);
     printf(“\t\t||\t4.保存学生信息到文件\t\t||\n“);
     printf(“\t\t||\t5.按学生成绩筛选学生信息\t||\n“);
     printf(“\t\t||\t6.对学生姓名模糊筛选\t\t||\n“); 
     printf(“\t\t||\t其他:退出. . .\t\t\t||\n“);
     printf(“\t\t==========================================\n“);
     printf(“请选择你要的操作:“);
     while(scanf(“%d“&z)!=1) fflush(stdin);            //判断是否正常接受到一个数值  否则 清楚缓存 继续输入 
     return z;
}
//保存学生信息到文件
void Save(Student stu[])
{FILE *fp;
    char filename[20];
int i;
printf(“请输入文件名(如file):“);
while(scanf(“%s“filename)!=1) fflush(stdin);         //判断是否接受到一个正常的字符串 否则就 清除缓存 继续输入 
if((fp=fopen(filename“wb“))==NULL)                                                    
    {printf(“不能打开该文件\n“);return; }
for(i=0;stu[i].num!=0;i++)
if(fwrite(&stu[i]sizeof(Student)1fp)!=1)
 printf(“文件写入错误\n“);
fclose(fp);
}
//按学生成绩进行筛选 并 输出 
void Score_filter(Student stu[]int Cnum)
{int iminmax; 
     printf(“请输入你要筛选科目成绩的范围(最小值、最大值):“);
     while(scanf(“%d%d“&min&max)!=2) fflush(stdin);
     if (Cnum==5)                                               // Cnum=5  对总分进行筛选 
        {for(i=0;stu[i].num!=0;i++)
        if(stu[i].totalmax)
        strcpy(stu[i].name“#“);
        } 
     else                                                      
         for(i=0;stu[i].num!=0;i++)
         if(stu[i].score[Cnum-1]max)  
         strcpy(stu[i].name“#“);                        //用 # 来标记筛选过程中剔除的 学生信息 
     Export(stu);                                    

评论

共有 条评论