将所有学生的课程成绩保留在一个二维数组中,每一行代表一个学生的成绩,每一列代表一门课程的成绩;将每门课程的名称保留在一个一维数组中(课程的下标序号与二维数组的列号匹配);将每个学生的姓名保留在一个一维数组中(学生的下标序号与二维数组的行号匹配);要求编写程序实现成绩的查询,要求程序运行时从命令行输入统计命令及参数,程序则输出结果,例如: AVG corejava:统计课程corejava的平均分。 AVG张三:统计学生张三的平均分。 SORT sum:列出总分的排序。
SORT corejava:列出corejava课程的成绩的排序。 SUM 张三:统计学生张三的总分。
GET 张三 corejava:统计张三的corejava课程的成绩。
代码如下:
import java.util.Scanner; import java.util.Arrays;
public class Scms { static String[] students = { \"McGRADY\
static String[] courses = { \"corejava\static double stu_cou[][] = {
{ 82, 83, 87, 90 }, { 77, 87, 84, 86 }, { 88, 82, 80, 80 }, { 83, 80, 81, 88 } };
public static void main(String[] args) { System.out
.println(\"============================================================\");
System.err.println(\"\\欢迎使用学生成绩管理系统\"); System.out.println(\"本系统提供如下功能:\");
System.out.println(\"AVG corejava:统计课程corejava的平均分.\"); System.out.println(\"AVG 张三:统计学生张三的平均分\");
System.out.println(\"SORT sum:列出总分的排序.\");
System.out.println(\"SORT corejava:列出corejava课程的成绩的排序.\"); System.out.println(\"SUM 张三:统计学生张三的总分.\");
System.out.println(\"GET 张三 corejava:统计张三的corejava课程的成绩.\"); System.out
System.out.println(\" * 本系统中有以下同学:\" + Arrays.toString(students) + \" *\"); System.out
.println(\"============================================================\");
.println(\"============================================================\"); System.out.println(\" * 本系统中有以下课程:\" + Arrays.toString(courses) + \" *\"); System.out
.println(\"============================================================\");
while (true) { System.out.println(\"请输入您要查询的命令:\"); String key1 = null; String key2 = null;
String key3 = null;
Scanner scan = new Scanner(System.in); key1 = scan.next();
if (\"avg\".equalsIgnoreCase(key1)) { key2 = scan.next();
if (isExistStu(key2)) { System.out.println(key2 + \"同学的平均分是:\" + avg(key2)); } else if (isExistCou(key2)) { System.out.println(key2 + \"课程的平均分是:\" + avg(key2));
} else { System.out.println(\"不存在\" + key2 + \"同学或着课程,请您重新输
入...\");
}
} else if (\"sum\".equalsIgnoreCase(key1)) {
key2 = scan.next(); if (isExistStu(key2)) {
System.out.println(key2 + \"同学的总分是:\" + sum(key2)); } else if (isExistCou(key2)) { System.out.println(key2 + \"课程的总分是:\" + sum(key2));
}
} else {
System.out.println(\"不存在\" + key2 + \"同学或着课程,请您重新输
入...\");
}
} else if (\"sort\".equalsIgnoreCase(key1)) {
key2 = scan.next();
System.out.println(key2 + \"课的成绩降序排列为:\");
sort(key2);
} else if (\"get\".equalsIgnoreCase(key1)) {
key2 = scan.next(); key3 = scan.next(); if (isExistStu(key2)) {
if (isExistCou(key3)) { System.out.println(key2 + \"同学的\" + key3 + \"成绩是:\" }
+ get(key2, key3));
入!\");
}
} else { System.out.println(\"输入的\" + key2 + \"和\" + key3 + \"有误,请重新输
}
} else if (\"exit\".equalsIgnoreCase(key1)) {
System.out.println(\"欢迎使用学生成绩管理系统,谢谢!\"); break; } else { System.out.println(\"本系统不支持 \" + key1 + \" 这种操作\"); }
/**
* 查看学生数组里面是否存在指定学员 *
* @param stu
* 指定学员
* @return 若果存在返回true,否则返回false */
public static boolean isExistStu(String stu) { if (stu.length() == 0 || stu == null) {
}
return false;
for (int i = 0; i < students.length; i++) { if (stu.equals(students[i])) { return true;
}
}
}
return false;
/**
* 查看学生数组里面是否存在指定学员 *
* @param cou
* 指定课程
* @return 若果存在返回true,否则返回false */
public static boolean isExistCou(String cou) { if (cou.length() == 0 || cou == null) { } /**
* 求出指定学生或者课程的平均分 *
* @param source
* 指定的学生或者课程 * @return 平均分
*/
public static double avg(String source) { } /**
double avg = 0.0f; if (isExistStu(source)) {
avg = sum(source) / courses.length; return avg;
avg = sum(source) / students.length; return avg; }
return false;
for (int j = 0; j < courses.length; j++) { if (cou.equals(courses[j])) { return true; }
}
return false;
} else if (isExistCou(source)) {
}
return 0.0f;
* 求出指定学生或者课程的总分 *
* @param source
* 指定的学生或者课程 * @return 总分
*/
public static double sum(String source) { }
double total = 0;
if (isExistStu(source)) {
for (int i = 0; i < students.length; i++) {
if (source.equals(students[i])) { }
for (int j = 0; j < courses.length; j++) { }
total += stu_cou[i][j];
return total;
}
} else if (isExistCou(source)) { for (int j = 0; j < courses.length; j++) { }
}
if (source.equals(courses[j])) { for (int i = 0; i < students.length; i++) { }
total += stu_cou[i][j]; }
return total;
return 0.0f;
/**
* 对于指定内容进行降序排序 *
* @param source
* 指定的内容(sum,课程名称) * */
public static void sort(String source) {
if(isExistCou(source)) {
for(int i=0;i for(int j=0;j double temp=stu_cou[j][i]; stu_cou[j][i]=stu_cou[largeIndex][i]; stu_cou[largeIndex][i]=temp; String temp1=students[j]; students[j]=students[largeIndex]; if(stu_cou[j][i] students[largeIndex]=temp1; } for(int j=0;j 分数是:\"+stu_cou[j][i]); } } } }else { double total[]=new double[students.length]; for(int i=0;i } for(int i=0;i } { } double temp=total[i]; total[i]=total[largeIndex]; total[largeIndex]=temp; String temp1=students[i]; students[i]=students[largeIndex]; students[largeIndex]=temp1; for(int i=0;i } } } /** * 获取指定学生指定课程成绩 * * @param stu * 指定学员 * @param cour * 指定课程 * @return 返回该学生该课程的成绩 */ public static double get(String stu, String cou) { } /** * * 对给定数组进行排序 * * * * */ for (int i = 0; i < students.length; i++) { if (stu.equals(students[i])) { } for (int j = 0; j < courses.length; j++) { if (cou.equals(courses[j])) return stu_cou[i][j]; } } return 0.0f; } 因篇幅问题不能全部显示,请点此查看更多更全内容