JAVA 实现简单的学生成绩管理系统
大家好,又见面了,我是你们的朋友全栈君。
一、实验目的
1.掌握java的类与对象的基本概念;
2.掌握简单的信息管理系统的设计与实现。
二、实验环境
实验建议在安装了以下软件的计算机上完成:
1. Windows xp/win7/win8/win10操作系统
2. JDK 1.6以上版本
3. Eclipse或NetBeans IDE或EditPlus或其它开发工具
三、实验内容与要求
(一) 问题描述
要求采用java类与对象的基本知识,实现简单的学生成绩管理系统。
(二) 实验要求
1. 实现定义学生成绩记录,记录包括字段有:学生姓名、学号、课程名称、成绩。
2. 实现学生成绩管理系统的菜单管理功能,允许查看、添加、修改、删除、统计、查找和排序等操作;
3. 实现查看学生成绩单功能,能显示所有学生成绩记录;
4. 实现添加学生成绩记录功能,输入某位学生某门课的成绩,能保存到成绩表里面;
5. 实现修改学生成绩记录功能,根据学生学号修改课程成绩;
6. 实现删除学生成绩记录功能,根据学生学号删除课程成绩;
7. 实现统计某门课平均分、最高分和最低分的功能;
8. 实现查找某位学生成绩功能,根据学生学号显示该学生的成绩;
9. 实现按成绩从高往低排序,并输出。
四、实现提示
1. 定义学生成绩记录类,把记录的字段作为类的属性,并定义该类的基本操作方法;
2. 采用一维数组实现学生成绩记录表,数组的数据类型为” 学生成绩记录类”。
第一步-建立一个Score类
package student.score.manage;
public class Score {
String num;
String name;
double score;
public Score(){
}
public void setNum(String num) {
this.num = num;
}
public void setName(String name) {
this.name = name;
}
public void setScore(double score) {
this.score = score;
}
}
第二步-建立一个ScoreList类
package student.score.manage;
import java.util.Scanner;
public class ScoreList {
int maxLength = 100;
int length = 0;
Score[] data = new Score[maxLength];
Scanner input = new Scanner(System.in);
public ScoreList() {
}
//添加记录方法
public void add() {
if(length < maxLength) {
data[length] = new Score();
System.out.print("请输入学生的学号: ");
data[length].setNum(input.next());
System.out.print("请输入学生的姓名:");
data[length].setName(input.next());
System.out.print("请输入学生的成绩:");
data[length].setScore(input.nextDouble());
length++;
System.out.println("添加成功!");
}
else {
System.out.println("添加失败!");
}
}
//显示成绩单方法
public void transcript() {
System.out.println("=====================================");
System.out.println(" 学号 姓名 成绩 ");
for(int i = 0; i < length; i++) {
System.out.println(data[i].num + "\t" + data[i].name + "\t" + "\t" + data[i].score);
}
System.out.println("=====================================\n");
}
//成绩从高往低排序方法
public void sort() {
Score temp = 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) { //冒泡法排序
temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp;
}
}
}
}
//平均分、最大最小值方法
public void average() {
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.printf("这门课的平均成绩为: %.2f\n", sum/length);
System.out.println("最高分为: " + max + "\n" + "最低分为: " + min + "\n");
}
//删除学生记录方法
public void delete() {
System.out.print("请输入您要删除信息的学生的学号: ");
String number1 = input.next();
int i, flag = length;
for(i = 0; i < length; i++) {
if(number1.equals(data[i].num)) {
flag = i; break;
}
}
if(i == length) {
System.out.println("查无此人!请核对后重新输入 \n");
delete();
}
else {
for(int j = flag; j < length; j++) {
data[j] = data[j + 1];
}
System.out.println("删除成功!\n");
length -= 1; //不减1会报数组越界的错误
}
}
//查询某个学生信息方法
public void inquire() {
System.out.print("请输入您要查询成绩的学生的学号:");
String number2 = input.next();
int i;
for(i = 0; i < length; i++) {
if(number2.equals(data[i].num)) {
System.out.println("====================================");
System.out.println(" 学号 姓名 成绩 ");
System.out.println(data[i].num + "\t" + data[i].name + "\t" + "\t" + data[i].score);
System.out.println("====================================\n");
break;
}
}
if(i == length) {
System.out.println("查无此人!请核对后重新输入学号 \n");
inquire();
}
}
//修改学生信息方法
public void recompose() {
System.out.print("请输入您要修改信息的学生的学号:");
String number3 = input.next();
int i;
for(i = 0; i < length; i++) {
if(number3.equals(data[i].num)) {
System.out.println("请输入该学生新的学号,姓名和成绩:");
data[i].setNum(input.next());
data[i].setName(input.next());
data[i].setScore(input.nextDouble());
System.out.println("修改成功!\n");
break;
}
}
if(i == length) {
System.out.println("查无此人!请核对后重新输入学号\n");
recompose();
}
}
}
最后一步,当然是建立一个Test类啦:
package student.score.manage;
import java.util.Scanner;
public class Test {
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.print("Enter your choice: ");
choice = input.next();
switch(choice) {
case "0":
System.out.println("谢谢您的使用,欢迎下次光临!\n" + "**********按任意键结束程序**********");
break;
case "1":
studentScoreList.transcript();
System.out.println("请问您还需要什么服务?\n");
break;
case "2":
int i = 1;
do {
studentScoreList.add();
System.out.println("\n是否继续添加?" + "\n" + "0.否" + "\n" + "1.是");
i = input.nextInt();
}while(i == 1);
System.out.println("请问您还需要什么服务?\n");
break;
case "3":
studentScoreList.recompose();
System.out.println("请问您还需要什么服务?\n");
break;
case "4":
studentScoreList.delete();
System.out.println("请问您还需要什么服务?\n");
break;
case "5":
studentScoreList.inquire();
System.out.println("请问您还需要什么服务?\n");
break;
case "6":
studentScoreList.average();
System.out.println("请问您还需要什么服务?\n");
break;
case "7":
studentScoreList.sort();
studentScoreList.transcript();
System.out.println("请问您还需要什么服务?\n");
break;
default:
System.out.println("Invalid input! Please enter again.");
break;
}
}
}
}
这里是初学Java的渣新,还请大佬轻喷,有错误的地方还请多多指教,至于为啥我这个渣新也敢发代码出来,还不是学校要求的!!!而且我想我这个渣新写的代码对于萌新来说也更好理解,谢谢支持了
鉴于很多人跟我要源码 我这里贴出github地址:https://github.com/ZenGx1n/student-score-manage
有需求的自行下载 谢谢
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158665.html原文链接:https://javaforall.cn
相关文章
- java random函数原理_详解JAVA中Random()函数的用法
- Java删除文件(delete file in java)[通俗易懂]
- java启动器_JAVA基础:Java 启动器如何查找类
- java 构造器 构造方法_Java构造器(构造方法/constructor)
- JAVA数据库连接池_java与数据库的连接怎么实现
- JAVA实验室设备管理系统代码_java做一个简单学生管理系统
- 【Java 集合】Java 集合的线程安全性 ( 加锁同步 | java.utils 集合 | 集合属性 | java.util.concurrent 集合 | CopyOnWrite 机制 )
- 数据库Java实现Oracle数据库监控(java监听oracle)
- 实现Linux上的Java环境:从安装到配置(linux安装java环境)
- Oracle转Java实现跨平台开发的奇妙之旅(oracle转java)
- 数据库实现Java程序与Oracle数据库的连接(java链接oracle)
- 环境的基础Linux:Java环境的支撑者(linux是java)
- 使用Redis优化Java开发的关键技巧(redis与java开发)
- Java与Linux:前景迷人的新科技(java和linux前景)
- 实现Java认证让你离Oracle更近一步(java认证oracle)
- Java编程与Oracle技术创造技术价值的奥秘(java编程oracle)
- Java导出Oracle数据提升数据分析流程效率(java导出oracle)
- Java存入Oracle数据库实现快速高效的数据存储(java存入oracle)
- 利用Redis锁实现Java程序并发控制(redis锁java实现)
- Redis实现Java语言下的遍历处理(redis遍历java)