学生管理数组文件C语言c.docx
- 文档编号:13760326
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:17
- 大小:16.10KB
学生管理数组文件C语言c.docx
《学生管理数组文件C语言c.docx》由会员分享,可在线阅读,更多相关《学生管理数组文件C语言c.docx(17页珍藏版)》请在冰点文库上搜索。
学生管理数组文件C语言c
#include
#include
#include
#include
/*定义学生结构体*/
typedefstruct//Student
{
charID[20];
charName[20];
floatMath;
floatEnglish;
floatComputer;
floatAverage;
floatSum;
}Student;
/*声明学生数组及学生数量*/
Studentstudents[1000];
intnum=0;
/*求平均值*/
floatAvg(Studentstu)
{
return(stu.Math+stu.English+stu.Computer)/3;
}
/*求总成绩*/
floatSum(Studentstu)
{
return(stu.Math+stu.English+stu.Computer);
}
/*通过学号返回数组下标*/
intStudent_SearchByIndex(charid[])
{
inti;
for(i=0;i { if(strcmp(students[i].ID,id)==0) { returni; } } return-1; } /*显示单条学生记录*/ voidStudent_DisplaySingle(intindex) { printf("%-8s%-8s%-10s%-10s%-15s%-10s%-10s\n","学号","姓名","数学成绩","英语成绩","计算机成绩","平均成绩","总成绩"); printf("---------------------------------------------------------------------------\n"); printf("%-8s%-8s%-10.2f%-10.2f%-15.2f%-10.2f%-10.2f\n",students[index].ID,students[index].Name, students[index].Math,students[index].English,students[index].Computer,students[index].Average,students[index].Sum); } /*查找学生信息*/ voidStudent_Search() { charid[20]; intindex; printf("请输入要查找的学生的学号: "); scanf("%s",&id); getchar(); index=Student_SearchByIndex(id); Student_DisplaySingle(index); } /*插入学生信息*/ voidStudent_Append() { while (1) { printf("请输入学号: "); scanf("%s",&students[num].ID); getchar(); printf("请输入姓名: "); scanf("%s",&students[num].Name); getchar(); printf("请输入数学成绩: "); scanf("%f",&students[num].Math); getchar(); printf("请输入英语成绩: "); scanf("%f",&students[num].English); getchar(); printf("请输入计算机成绩: "); scanf("%f",&students[num].Computer); getchar(); students[num].Average=Avg(students[num]); students[num].Sum=Sum(students[num]); num++; printf("是否继续? (y/n)"); if(getchar()=='n'||getchar()=='N') { break; } } } /*修改学生信息*/ voidStudent_Modify() { floatMath,English,Computer; while (1) { charid[20]; intindex; printf("请输入要修改的学生的学号: "); scanf("%s",&id); getchar(); index=Student_SearchByIndex(id); if(index==-1) { printf("学生不存在! \n"); } else { printf("你要修改的学生信息为: \n"); Student_DisplaySingle(index); printf("--请输入新值--\n"); printf("请输入学号: "); scanf("%s",&students[index].ID); getchar(); printf("请输入姓名: "); scanf("%s",&students[index].Name); getchar(); printf("请输入成绩: "); scanf("%f",&students[index].Math); getchar(); printf("请输入成绩: "); scanf("%f",&students[index].English); getchar(); printf("请输入成绩: "); scanf("%f",&students[index].Computer); getchar(); students[index].Average=Avg(students[index]); students[index].Sum=Sum(students[index]); } printf("是否继续? (y/n)"); if(getchar()=='n'||getchar()=='N') { break; } } } /*删除学生信息*/ voidStudent_Delete() { inti; while (1) { charid[20]; intindex; printf("请输入要删除的学生的学号: "); scanf("%s",&id); getchar(); index=Student_SearchByIndex(id); if(index==-1) { printf("学生不存在! \n"); } else { printf("你要删除的学生信息为: \n"); Student_DisplaySingle(index); printf("是否真的要删除? (y/n)"); if(getchar()=='y') { for(i=index;i { students[i]=students[i+1]; } num--; } getchar(); } printf("是否继续? (y/n)"); if(getchar()=='n'||getchar()=='N') { break; } } } /*按总成绩降排序*/ voiddescending_order_by_sum() { inti,j; Studenttmp; for(i=0;i { for(j=1;j { if(students[j-1].Sum { tmp=students[j-1]; students[j-1]=students[j]; students[j]=tmp; } } } } /*按总成绩升排序*/ voidascending_order_by_sum() { inti,j; Studenttmp; for(i=0;i { for(j=1;j { if(students[j-1].Sum { tmp=students[j-1]; students[j-1]=students[j]; students[j]=tmp; } } } } /*按学号降排序*/ voiddescending_order_by_num() { inti,j; Studenttmp; for(i=0;i { for(j=1;j { if(strcmp(students[j-1].ID,students[j].ID)<0) { tmp=students[j-1]; students[j-1]=students[j]; students[j]=tmp; } } } } /*按学号升排序*/ voidascending_order_by_num() { inti,j; Studenttmp; for(i=0;i { for(j=1;j { if(strcmp(students[j-1].ID,students[j].ID)<0) { tmp=students[j-1]; students[j-1]=students[j]; students[j]=tmp; } } } } /*显示学生信息*/ voidStudent_List() { inti; printf("%-8s%-8s%-10s%-10s%-15s%-10s%-10s\n","学号","姓名","数学成绩","英语成绩","计算机成绩","平均成绩","总成绩"); printf("---------------------------------------------------------------------------\n"); for(i=0;i { printf("%-8s%-8s%-10.2f%-10.2f%-15.2f%-10.2f%-10.2f\n",students[i].ID,students[i].Name, students[i].Math,students[i].English,students[i].Computer,students[i].Average,students[i].Sum); } } /*将学生信息从文件读出*/ voidRead_File() { FILE*fp; inti; if((fp=fopen("Database.txt","rb"))==NULL) { printf("不能打开文件! \n"); return; } if(fread(&num,sizeof(int),1,fp)! =1) { num=-1; } else { for(i=0;i { fread(&students[i],sizeof(Student),1,fp); } } fclose(fp); } /*将学生信息写入文件*/ voidWrite_File() { FILE*fp; inti; if((fp=fopen("Database.txt","wb"))==NULL) { printf("不能打开文件! \n"); return; } if(fwrite(&num,sizeof(int),1,fp)! =1) { printf("写入文件错误! \n"); } for(i=0;i { if(fwrite(&students[i],sizeof(Student),1,fp)! =1) { printf("写入文件错误! \n"); } } fclose(fp); } //初始化 voidinitialize(void) { inti=0; Read_File(); for(i=0;i<1000;i++) { Read_File(); strcpy(students[i].ID,""); strcpy(students[i].Name,""); students[i].Math=0.0; students[i].English=0.0; students[i].Computer=0.0; students[i].Average=0.0; students[i].Sum=0.0; } } /*主程序*/ intmain(void) { charchoice='\0',yes_no='\0'; initialize(); while (1) { system("cls"); /*主菜单*/ printf("\nManagementforStudents'scores\n"); printf("\n-----------------------------------------------\n"); printf("|1.Appendrecord|\n"); printf("|2.Listrecord|\n"); printf("|3.Deleterecord|\n"); printf("|4.Modifyrecord|\n"); printf("|5.Searchrecord|\n"); printf("|6.SortScoreindescendingorderbysum|\n"); printf("|7.SortScoreinascendingorderbysum|\n"); printf("|8.SortScoreindescendingorderbynum|\n"); printf("|9.SortScoreinascendingorderbynum|\n"); printf("|W.WritetoaFile|\n"); printf("|R.ReadfromaFile|\n"); printf("|0.Exit|\n"); printf("-----------------------------------------------\n"); printf("PleaseInputyourchoice: \n"); choice=getche(); switch(choice) { case'1': printf("\n"); Student_Append(); break; case'2': printf("\n"); Student_List(); break; case'3': Student_Delete(); break; case'4': printf("\n"); Student_Modify(); break; case'5': printf("\n"); Student_Search(); break; case'6': printf("\n"); descending_order_by_sum(); Student_List(); break; case'7': printf("\n"); ascending_order_by_sum(); Student_List(); break; case'8': printf("\n"); descending_order_by_num(); Student_List(); break; case'9': printf("\n"); ascending_order_by_num(); Student_List(); break; case'w': case'W': Write_File(); break; case'r': case'R': Read_File(); break; case'0': break; default: printf("%c为非法项! \n",choice); break; } if(choice=='0') break; printf("\n要继续选择吗? (Y/N)? \n"); do { yes_no=getch(); }while(yes_no! ='Y'&&yes_no! ='y'&&yes_no! ='N'&&yes_no! ='n'); }while(yes_no=='Y'||yes_no=='y'); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 管理 数组 文件 语言