You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

204 lines
7.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package edu.course_text;
import java.util.Scanner;
public class System_stu {
private static final int MaxNum=100;
private static Score[] scoreStudent=new Score[MaxNum];
private static int numStudent=0;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("*************************");
System.out.println("***欢迎使用学生成绩管理系统***");
System.out.println("*************************");
ABC: while(true){
System.out.println("以下是菜单栏");
System.out.println("1-查看、2-添加");
System.out.println("3-修改、4-删除");
System.out.println("5-统计、6-查找");
System.out.println("7-排序、0-退出");
System.out.println("请输入你的选项:");
String choose=sc.next();
switch (choose){
case "1" : displayScore();break;
case "2" : AddScore(sc);break;
case "3" : updateScore(sc);break;
case "4" : deleteScore(sc);break;
case "5" : sumScore(sc);break;
case "6" : searchScore(sc);break;
case "7" : sortScore(sc);break;
case "0" : System.out.println("退出成功!");break ABC;
default :System.out.println("没有此选项");
}
}
}
private static void displayScore(){//查询
if(numStudent==0){
System.out.println("尚未添加学生,请返回菜单首页添加");
return;
}
System.out.println("下面为您展示学生成绩单");
System.out.println("序号\t\t学生姓名\t学生学号\t课程名称\t课程成绩");
for(int i=0;i<numStudent;i++){
Score s=scoreStudent[i];
System.out.print(s.id);
System.out.print(s.stuName);
System.out.print(s.stu_id);
System.out.print(s.scoreName);
System.out.print(s.score);
System.out.println();
}
}
private static void AddScore(Scanner scanner){//增加
System.out.println("请输入添加的人数");
int temp=scanner.nextInt();
int j=numStudent;
for(int i=j;i<j+temp;i++){
//先创建具体数组的对象
scoreStudent[i]=new Score();
while(true){
System.out.println("输入学号");
String stu_id=scanner.next();
boolean flag=contains(stu_id);
if(flag){
System.out.println("学号重复,请重新输入");
//bug多组输入出问题,bug解决原因是循环内num没有改变
}
else{
scoreStudent[i].stu_id=stu_id;
break;
}
}
System.out.println("请输入该学生的序号");
int id=scanner.nextInt();
scoreStudent[i].id=id;
System.out.println("输入学生姓名");
String name= scanner.next();
scoreStudent[i].stuName=name;
System.out.println("课程名称");
String scoreName=scanner.next();
scoreStudent[i].scoreName=scoreName;
System.out.println("成绩");
int score=scanner.nextInt();
scoreStudent[i].score=score;
numStudent++;
}
System.out.println("现在有"+numStudent+"人");
}
private static void searchScore(Scanner scanner){//查询信息
System.out.println("请输入查询该学生的学号");
String stu_id=scanner.next();
boolean flag=true;
for(int i=0;i<numStudent;i++){
Score s=scoreStudent[i];
if(s.stu_id.equals(stu_id)){
System.out.println("该学生的名字为:"+s.stuName);
System.out.println("该学生的学号为:"+s.stu_id);
System.out.println("该学生的序号为:"+s.id);
System.out.println("该学生的所选课程为:"+s.scoreName);
System.out.println("该学生的课程成绩为:"+s.score);
flag=false;
}
}
if(flag){
System.out.println("没有该学生的信息,请重新输入");
}
}
private static boolean contains(String stu_id){//判断是否重复
for(int i=0;i<numStudent;i++){
Score s=scoreStudent[i];
if(s.stu_id.equals(stu_id)){
return true;
}
}
return false;
}
private static void updateScore(Scanner sc){//修改
System.out.println("请输入该同学的学号");
String stu_id=sc.next();
if(!contains(stu_id)){
System.out.println("该同学学号不存在!");
return;
}
for(int i=0;i<numStudent;i++){
Score s=scoreStudent[i];
if(s.stu_id.equals(stu_id)){
System.out.println("您要修改的同学的姓名为"+s.stuName);
System.out.println("请输入该同学的新成绩");
scoreStudent[i].score=sc.nextInt();
}
}
}
private static void deleteScore(Scanner sc){
int k=0;
System.out.println("请输入您有删除的学生学号");
String stu_id=sc.next();
if(!contains(stu_id)){
System.out.println("您输入的学号不存在");
return;
}
for(int i=0;i<numStudent;i++){
Score s=scoreStudent[i];
if(s.stu_id.equals(stu_id)){
k=i;
System.out.println("您要删除的是"+s.stuName+"同学");
System.out.println("是否删除输入Y或N,Y代表删除N代表不删除");
String temp=sc.next();
if(temp.equals("N")||temp.equals("n")){
System.out.println("信息没有删除");
return;
}
}
}
for(int i=k;i<numStudent;i++){//循环判断条件-1或不减1无太大差别
scoreStudent[i]=scoreStudent[i+1];
}
numStudent--;
System.out.println("信息删除成功!");
}
private static void sumScore(Scanner sc){
System.out.println("一共有"+numStudent+"人");
int max=scoreStudent[0].score;
int min=scoreStudent[0].score;
double sum=0;
for (int i = 0; i < numStudent; i++) {
if(scoreStudent[i].score>max){
max=scoreStudent[i].score;
}
if(scoreStudent[i].score<min){
min=scoreStudent[i].score;
}
sum+=scoreStudent[i].score;
}
System.out.println("最高分为"+max);
System.out.println("最低分为"+min);
System.out.printf("平均分%.2f",sum/numStudent);
}
private static void sortScore(Scanner sc){
for (int i = numStudent; i >0 ; i--) {
for(int j=0;j<i-1;j++){
Score s=new Score();
if(scoreStudent[j].score>scoreStudent[j+1].score){
s=scoreStudent[j];
scoreStudent[j]=scoreStudent[j+1];
scoreStudent[j+1]=s;
}
}
}
System.out.println("展示排序后结果");
displayScore();
}
}
class Score{
int id;//序号
String stuName;//学生姓名
String stu_id;//学生学号
String scoreName;//课程名称
int score;//分数
public String toString(){
return "序号:"+id+",学号"+stu_id
+",姓名:"+stuName+",课程名称:"+scoreName+",分数:"+score;
}
}