实验目的与要求
实验目的:
1.掌握java的类与对象的基本概念;
2.掌握简单的信息管理系统的设计与实现。
实验要求:
1. 一人一组完成实验,提交编写的源代码和实验报告。
2. 所编写的程序要能成功运行,通过现场测试。
3. 从一个功能点出发,接着一个功能一个功能地扩充程序代码。
实验原理与内容
(一) 问题描述
要求采用java类与对象的基本知识,实现简单的学生成绩管理系统。
(二) 实验要求
- 实现定义学生成绩记录,记录包括字段有:序号、学生姓名、学号、课程名称、成绩。
- 实现学生成绩管理系统的菜单管理功能,允许查看、添加、修改、删除、统计、查找和排序等操作;
- 实现查看学生成绩单功能,能显示所有学生成绩记录;
- 实现添加学生成绩记录功能,输入某位学生某门课的成绩,能保存到成绩表里面;
- 实现修改学生成绩记录功能,根据学生学号修改课程成绩;
- 实现删除学生成绩记录功能,根据学生学号删除课程成绩;
- 实现统计某门课平均分、最高分和最低分的功能;
- 实现查找某位学生成绩功能,根据学生学号显示该学生的成绩;
- 实现按成绩从高往低排序,并输出。
实验设备与软件环境
- Windows系统或MacOS系统
- JDK作为运行支持环境
- Eclipse或IDEA作为开发工具
实验过程与结果
第一步-建立一个Score类
public class Score {
String id;
String name;
double score;
/*构造方法*/
public Score() {
}
/*set方法*/
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setScore(double score) {
this.score = score;
}
}
第二步-建立一个ScoreList类
public class ScoreList {
//实现查看学生成绩单功能
int maxLength = 100;
int length = 0;
Score[] data = new Score[maxLength];
Scanner input = new Scanner(System.in);
/*构造函数*/
public ScoreList() {
}
//1.显示成绩单方法
public void showAll() {
System.out.println("姓名\t\t\t学号\t\t\t成绩");
int i;
for(i = 0; i < length; i++) {
System.out.println(data[i].name + "\t\t\t" + data[i].id + "\t\t\t" + data[i].score);
}
/*如果没有学生成绩记录,输出提醒*/
if(i == 0) {
System.out.println("成绩记录为空,请添加后再次查询");
}
}
//2.实现添加学生成绩记录功能
public void addScore() {
if(length <= maxLength) {
data[length] = new Score();
System.out.println("请输入学生的学号:");
//写入学生学号
data[length].setId(input.next());
System.out.println("请输入学生的姓名:");
//写入学生姓名
data[length].setName(input.next());
System.out.println("请输入学生的课程名称:");
//写入成绩
data[length].setScore(input.nextDouble());
length++;
System.out.println("添加成功!");
} else {
System.out.println("添加失败!");
}
}
//实现修改学生成绩记录功能
public void updateScore() {
System.out.println("请输入你要修改信息的学生学号:");
String number1 = input.next();
int i;
for(i = 0; i < length; i++) {
/*查询判断成绩单是否有该学号*/
if(number1.equals(data[i].id)) {
System.out.println("请输入该学生新的学号,姓名和成绩:");
data[i].setId(input.next());
data[i].setName(input.next());
data[i].setScore(input.nextDouble());
System.out.println("修改成功!\n");
break;
}
}
if(i == length) {
System.out.println("查无此人!请核对后重新输入学号\n");
updateScore();
}
}
//实现删除学生成绩记录功能
public void deleteScore() {
System.out.println("请输入你要删除信息的学生的学号");
String number2 = input.next();
int i, flag = length;
for(i = 0; i < length; i++) {
if(number2.equals(data[i].id)) {
flag = i;
break;
}
}
if(i == length) {
System.out.println("查无此人!请核对后重新输入\n");
deleteScore();
} else {
for(int j = flag; j < length; j++) {
data[j] = data[j + 1];
}
System.out.println("删除成功!\n");
length -= 1; //删除成功后对数组减1 不然会导致数组越界
}
}
//实现统计某门课平均分
public void avgScore() {
double sum = 0.0;
double max = 0.0;
double min = 100.0;
for(int i = 0; i < length; i++) {
sum += data[i].score;
/*使用三目运算符判断最大值*/
max = max > data[i].score ? max : data[i].score;
min = min < data[i].score ? min : data[i].score;
}
System.out.println("这门课的平均成绩为:\n" + sum / length);
System.out.println("最高分为:" + max + "\n" + "最低分为:" + min + "\n");
}
//实现查找某位学生成绩功能
public void queryScore() {
System.out.println("请输入你要查看信息的学生的学号");
String number3 = input.next();
int i;
for(i = 0; i < length; i++) {
if(number3.equals(data[i].id)) {
System.out.println("========================================");
System.out.println("学号\t\t\t姓名\t\t\t成绩");
System.out.println(data[i].id + "\t\t" + data[i].name + "\t\t" + data[i].score + "\n");
System.out.println("========================================\n");
break;
}
}
if(i == length) {
System.out.println("查无此人!请核对后重新输入学号:\n");
queryScore();
}
}
//实现按成绩从高往低排序
public void sortScore() {
Score score = new Score();
for(int i = 1; i < length; i++) {
for(int j = 0; j < length - i; j++) {
if(data[j].score < data[j + 1].score) { //使用冒泡排序法
score = data[j];
data[j] = data[j + 1];
data[j + 1] = score;
}
}
}
}
}
最后一步,建立一个ScoreTest类:
public class ScoreTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String choice = "1";
ScoreList studentScoreList = new ScoreList();
System.out.println("***********学生成绩管理系统************");
while(choice.equals("0") == false) {
System.out.println("1.查看学生成绩单");
System.out.println("2.添加学生成绩记录");
System.out.println("3.修改学生成绩记录");
System.out.println("4.删除学生成绩记录");
System.out.println("5.统计这门课平均分、最高分和最低分");
System.out.println("6.查看某位学生成绩记录");
System.out.println("7.按成绩从高到低排序");
System.out.println("0.退出程序");
System.out.println("Enter your Choice:");
choice = input.next();
switch(choice) {
/*退出程序*/
case "0":
System.out.println("谢谢您的使用,欢迎下次光临!\n" + "*******按任意键结束程序********");
break;
/*查看学生成绩单*/
case "1":
studentScoreList.showAll();
System.out.println("请问您还需要什么服务?\n");
break;
/*添加学生成绩记录*/
case "2":
int i = 1;
/*当i==1时,继续添加*/
do {
studentScoreList.addScore();
System.out.println("\n是否继续添加?" + "\n" + "0.否" + "\n" + "1.是");
i = input.nextInt();
} while(i == 1);
studentScoreList.showAll();
System.out.println("请问您还需要什么服务?\n");
break;
/*修改学生成绩记录*/
case "3":
studentScoreList.updateScore();
studentScoreList.showAll();
System.out.println("请问您还需要什么服务?\n");
break;
/*删除学生成绩记录*/
case "4":
studentScoreList.deleteScore();
studentScoreList.showAll();
System.out.println("请问您还需要什么服务?\n");
break;
/*统计这门课平均分、最高分和最低分*/
case "5":
studentScoreList.avgScore();
System.out.println("请问您还需要什么服务?\n");
break;
/*查看某位学生成绩记录*/
case "6":
studentScoreList.queryScore();
System.out.println("请问您还需要什么服务?\n");
break;
/*按成绩从高到低排序*/
case "7":
studentScoreList.sortScore();
studentScoreList.showAll();
System.out.println("请问您还需要什么服务?\n");
break;
default:
System.out.println("Invalid input! Please enter again.");
break;
}
}
}
}