資源簡介
實驗題目
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);????????????????????????????????????
評論
共有 條評論