printf(\:删除一个学生记录\\n\
printf(\:按姓名查询单个同学信息\\n\ printf(\:按学号排序\\n\ printf(\:浏览全班成绩\\n\ printf(\请选择(A-F):\ scanf(\ getchar();
switch(choice) {
case 'A': Student_Insert(); break; case 'B': Student_Modify(); break; case 'C': Student_Delete(); break; case 'D': Student_Select(); break; case 'E': Student_SortByID();break; case 'F': Student_Display(); break; case 'G': exit(0); }
IO_WriteInfo(); } }
2、Tol函数
Tol函数的功能是求学生总成绩,在求总成绩时会调用,但不会出现在主函数中。
/*求总成绩*/
float Tol(struct Student stu) {
return (stu.Math+stu.English+stu.Physics); }
3、Students_SearchByIndex函数
该函数的功能是来输入的学号来找到数组的下标,从而找到该学号对应的结构体的信息。不会在主函数中出现,但会被其他函数调用。
/*通过学号返回数组下标*/
int Student_SearchByIndex(char id[])
{ int i;
for (i=0;i if (strcmp(students[i].ID,id)==0) return i; return -1; } 4、Students_SearchByName函数 该函数的功能是来输入的姓名来找到数组的下标,从而找到该姓名对应 - 6 - 的结构体的信息。不会在主函数中出现,但会被其他函数调用。 /*通过姓名返回数组下标*/ int Student_SearchByName(char name[]) { int i; for (i=0;i if(strcmp(students[i].Name,name)==0) return i; return -1; } 5、Students_DisplaySingle函数 该函数的功能是来显示单个学生的信息,不会在主函数中出现,但会被其他函数调用。 /*显示单条学生记录*/ void Student_DisplaySingle(int index) { printf(\学号\姓名\年龄\数学\英语\物理\总成绩\ printf(\ printf(\ndex].Name,students[index].Age,students[index].Math,students[index].English,students[index].Physics,students[index].Total); } 6、Students_Insert函数 该函数的功能是来插入学生的信息(也可以说的登记学生的信息),它有调用Tol函数来实现求总成绩的功能。还有一个小功能,就是他可以避免重复输入学号,是通过循环来实现的。该函数在主函数中有出现。 /*插入学生信息*/ void Student_Insert() { int i; while(1) { printf(\请输入学号:\ scanf(\ getchar(); printf(\请输入姓名:\ scanf(\ getchar(); printf(\请输入年龄:\ scanf(\ getchar(); printf(\请输入数学:\ - 7 - scanf(\ getchar(); printf(\请输入英语:\ scanf(\ getchar(); printf(\请输入物理:\ scanf(\ getchar(); students[num].Total=Tol(students[num]); /*判断是否输入了相同学号*/ for (i=0;i if (strcmp(students[i].ID,students[num].ID)==0) { printf(\有相同学号\ break; } } if (i==num) num++; printf(\是否继续?(Y/N)\ if (getchar()=='N') { break; } } } 7、Students_Modify函数 该函数的功能是用来修改学生的信息,要求输入学号时,它通过调用Students_SearchByIndex函数来找到该学号对应的学生的信息,从而修改信息。同时也调用了Tol函数。它在主函数中有出现。 /*修改学生信息*/ void Student_Modify() { while(1) { char id[20]; int index; printf(\请输入要修改的学生的学号:\ scanf(\ getchar(); index=Student_SearchByIndex(id); if (index==-1) { - 8 - printf(\学生不存在!\\n\ } else { printf(\你要修改的学生信息为:\\n\ Student_DisplaySingle(index); printf(\请输入新值--\\n\ printf(\请输入学号:\ scanf(\ getchar(); printf(\请输入姓名:\ scanf(\ getchar(); printf(\请输入年龄:\ scanf(\ getchar(); printf(\请输入数学:\ scanf(\ getchar(); printf(\请输入英语:\ scanf(\ getchar(); printf(\请输入物理:\ scanf(\ getchar(); students[index].Total=Tol(students[index]); } printf(\是否继续?(Y/N)\ if (getchar()=='N') { break; } } } 8、Students_Delete函数 该函数的功能是用来删除没用的学生的信息,它通过调用Students_SearchByIndex函数来找到要删除的学生,然后通过调用Students_DisplaySingle函数显示要删除的学生的信息。它在主函数中有出现。 /*删除学生信息*/ void Student_Delete() { int i; while(1) - 9 - { char id[20]; int index; printf(\请输入要删除的学生的学号:\ scanf(\ 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') { break; } } } 9、Student_Select函数 该函数的功能是用来按姓名查找学生的信息。不在主函数中出现。 /*按姓名查询*/ void Student_Select() { while(1) { char name[20]; int index; - 10 -