package score.manage;
import java.util.Scanner;
public class ScoreList {
int maxLength = 20;
int length;
Score[] data = new Score[maxLength];
Scanner input = new Scanner(System.in);
int L;
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 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();
}
}
/* 利用直接插入排序或者折半插入排序按照姓名进行排序; */
int flag = 0;// 2表示数据已经更新为姓名排序方案
// 姓名排序操作函数
public void SelectSort() {
if (length < 1) {
System.out.println(" 很遗憾,空表中没有任何记录可供显示!");
return;
}
System.out.println("在按姓名排序之前请先选择排序方法:1.直接插入排序 2.折半插入排序");
System.out.println("请选择序号1-2(默认选择1):");
int n = 0;
System.out.println("请确认记录是否按排序方式保存:1.直接显示排序记录 2.保存排序方案并显示记录");
System.out.println("请选择序号1-2(默认选择1):");
if (flag != 2) {// 按姓名排序方式直接显示记录
// 把数据拷贝至排序数组中
for (int i = 1; i <= length; i++)
;
if (n == 2)
BInsertSort();
else
InsertSort();
// 因为默认选择序号1,用户只能操作一次选择,选择错误即默认选择序号1
System.out.println("************ STUDENT ************");
System.out.println(" 编号 姓名 学号 成绩");
System.out.println("---------------------------------");
for (int i = 1; i <= length; i++) {
System.out.println(data[i].num + "\t" + data[i].name + "\t" + "\t" + data[i].score);
}
System.out.println("*********************************");
System.out.println("***操作成功***");
} else {// 按姓名排序方式改变记录排序方案并显示记录
if (n == 2)
BInsertSort();
else
InsertSort();
// 因为默认选择序号1,用户只能操作一次选择,选择错误即默认选择序号1
System.out.println("************ STUDENT ************");
System.out.println(" 编号 姓名 学号 成绩");
System.out.println("---------------------------------");
for (int i = 1; i <= length; i++) {
System.out.println(data[i].num + "\t" + data[i].name + "\t" + "\t" + data[i].score);
}
System.out.println("*********************************");
System.out.println("***操作成功***");
}
}
// 此处为直接插入排序。对姓名排序
// 此处为直接插入排序。对姓名排序
public void InsertSort() {
Name temp = new Name();
for (int i = 2; i <= length; i++)
if (Name(data[i].name, data[i - 1].name) < 0) {
data[0] = data[i];
data[i] = data[i - 1];
int j;
for (j = i - 2; strcmp(data[0].name, data[j].name) < 0; j--)
data[j + 1] = data[j];
data[j + 1] = data[0];
}
}
private int strcmp(String name, String name2) {
// TODO Auto-generated method stub
return 0;
}
private int Name(String name, String name2) {
// TODO Auto-generated method stub
return 0;
}
// 此处为折半插入排序。对姓名排序
public void BInsertSort() {
for (int i = 2; i <= length; i++) {
data[0] = data[i];
int low = 1, high = i - 1;
while (low <= high) {
int m = (low + high) / 2;
if (strcmp(data[0].name, data[m].name) < 0)
high = m - 1;
else
low = m + 1;
}
for (int j = i - 1; j >= high + 1; --j)
data[j + 1] = data[j];
data[high + 1] = data[0];
}
}
/* 利用快速排序按照学号进行排序 */
public int Partition(int low, int high) {// 对顺序表a中low..high进行一趟排序,返回枢轴位置
data[0] = data[low];
// int pivotkey=data[low].num;
while (low < high) {
while (low < high)
--high;
data[low] = data[high];
while (low < high)
++low;
data[high] = data[low];
}
data[low] = data[0];
return low;
}
// 快速排序,对学号进行排序
public void QSort(int low, int high) {// 调用前置初值:low=1;high=L.length;
// 对顺序表a中子序列low..high做快速排序
if (low < high) {
int pivotloc = Partition(low, high);
QSort(low, pivotloc - 1);
QSort(pivotloc + 1, high);
}
}
// 学号排序操作函数
public void QuickSort() {
if (length < 1) {
System.out.println(" 很遗憾,空表中没有任何记录可供显示!");
return;
}
System.out.println("请确认记录是否按排序方式保存:1.直接显示排序记录 2.保存排序方案并显示记录");
System.out.println("请选择序号1-2(默认选择1):");
// 把数据拷贝至排序数组中
if (flag != 2) {// 不改变原数据情况下排序并输出结果
for (int i = 1; i <= length; i++)
;
// 因为默认选择序号1,用户只能操作一次选择,选择错误即默认选择序号1
QSort(1, length);
System.out.println("************ STUDENT ************");
System.out.println(" 姓名 学号 成绩");
System.out.println("---------------------------------");
for (int i = 1; i <= length; i++) {
System.out.println(data[i].num + "\t" + data[i].name + "\t" + data[i].score);
}
System.out.println("*********************************");
System.out.println("***操作成功***");
flag = 1;
} else {
QSort(1, length);
System.out.println("************ STUDENT ************");
System.out.println(" 姓名 学号 成绩");
System.out.println("-----
没有合适的资源?快使用搜索试试~ 我知道了~
java实现学生成绩管理系统
共12个文件
java:5个
class:5个
project:1个
需积分: 33 117 下载量 176 浏览量
2019-01-05
14:27:06
上传
评论 29
收藏 13KB RAR 举报
温馨提示
java实现学生成绩管理系统。Java完成算法设计和程序设计并上机调试通过。程序添加适当的注释,程序的书写要采用缩进格式。程序具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。程序界面友好,在程序运行时用户可以根据相应的提示信息进行操作。
资源推荐
资源详情
资源评论
收起资源包目录
java实现学生成绩管理系统.rar (12个子文件)
十二组
student manage
bin
score
manage
Test.class 3KB
Num.class 384B
Name.class 389B
Score.class 659B
ScoreList.class 9KB
src
score
manage
ScoreList.java 13KB
Num.java 147B
Name.java 156B
Score.java 384B
Test.java 3KB
.project 383B
.classpath 232B
共 12 条
- 1
资源评论
tom_fn
- 粉丝: 18
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功