Java学生成绩管理系统控制台版本
源码:https://download.csdn.net/download/weixin_46683845/15232755
students类
Java集合进行排序有两种方法,这里使用实现comparable接口,重写其compareTo()方法实现
package com.llt.model;
import com.sun.org.apache.regexp.internal.recompile;
/**
* 学生管理系统
* Comparable实现排序
*
*
*/
public class Students implements Comparable<Students>{
private int id; // 主键
private String classes; //班级
private String number; // 学号
private String name; // 姓名
private String subject; // 科目
private int schoolYear; // 学年
private int grades; // 成绩
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public int getSchoolYear() {
return schoolYear;
}
public void setSchoolYear(int schoolYear) {
this.schoolYear = schoolYear;
}
public int getGrades() {
return grades;
}
public void setGrades(int grades) {
this.grades = grades;
}
public Students() {
}
public Students(int id, String classes, String number, String name, String subject, int schoolYear, int grades) {
this.id = id;
this.classes = classes;
this.number = number;
this.name = name;
this.subject = subject;
this.schoolYear = schoolYear;
this.grades = grades;
}
@Override
public String toString() {
return " [序号=" + id + " 班级=" + classes + " 学号=" + number + " 姓名=" + name + ", 科目="
+ subject + " 学年=" + schoolYear + " 成绩=" + grades + "]"+"\n";
}
/**
* 重写排序方法
*/
@Override
public int compareTo(Students o) {
return (int)(o.grades-this.grades);
}
}
StudentDao类
package com.llt.dao;
import java.util.List;
import com.llt.model.Students;
public interface StudentsDao {
/**
* 显示学生信息
* @return
*/
// 查询列表
List<Students> findStudentsAll();
// 添加学生信息
int addStudents(Students students);
// 查询序列号是否已经存在
int IdIsExist(int id);
// 根据学号查询学生信息
Students selectByNumber(String number);
// 查询姓名是否已经存在
int nameIsExist(String name);
// 根据学号删除学生信息
int deleteByNumber(String number);
// 修改学生信息
int updaStudents(String sub,int grade,String number);
// 排序
List<Students> ordList();
}
StudentDaoImpl类
package com.llt.dao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import com.llt.model.Students;
import com.sun.org.apache.regexp.internal.recompile;
import com.sun.xml.internal.bind.v2.model.core.ID;
public class StudentsDaoImpl implements StudentsDao{
static List<Students> students=new ArrayList<>();
static{
students.add(new Students(1, "软工18级", "20180100177", "黎明", "理论", 2020, 80));
students.add(new Students(2, "软工18级", "20180100198", "刘德华", "机试", 2020, 82));
students.add(new Students(3, "软工18级", "20180100199", "陈岚", "理论", 2020, 78));
students.add(new Students(4, "软工18级", "20180100190", "吴峰", "机试", 2020, 90));
}
/**
* 返回学生信息列表
*/
@Override
public List<Students> findStudentsAll() {
return students;
}
/**
* 添加学生信息
*/
public int addStudents(Students student) {
if(student!=null) {
students.add(student);
return 1;
}
return 0;
}
/**
* 根据学号查询学生
*/
@Override
public Students selectByNumber(String number) {
for(Students stu : students) {
if (stu.getNumber().equals(number)) {
return stu;
}
}
return null;
}
/**
* 根据学号删除学生
*/
public int deleteByNumber(String number) {
for(Students stu : students) {
if (stu.getNumber().equals(number)) {
students.remove(stu);
return 1;
}
}
return 0;
}
/**
* 查询姓名是否存在,默认为不存在返回1,如果存在则返回零
*/
@Override
public int nameIsExist(String name) {
for(Students stu : students) {
if (stu.getName().equals(name)) {
return 0;
}
}
return 1;
}
/**
* 查询序列号是否存在,默认为不存在返回1,如果存在则返回零
*/
@Override
public int IdIsExist(int id) {
for(Students stu : students) {
if (stu.getId()==id) {
return 0;
}
}
return 1;
}
/**
* 修改学生信息
*/
@Override
public int updaStudents(String sub,int grade,String number) {
for(Students stu : students) {
if (stu.getNumber().equals(number)) {
stu.setSubject(sub);
stu.setGrades(grade);
return 1;
}
}
return 0;
}
/**
* 对成绩进行降序排序
*/
@Override
public List<Students> ordList() {
Collections.sort(students);
return students;
}
}
测试类
```java
package com.llt.test;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import com.llt.dao.StudentsDao;
import com.llt.dao.StudentsDaoImpl;
import com.llt.model.Students;
import java.util.Scanner;
/**
* 学生管理测试类
* @author LENOVO
*
*/
public class StudentsTest{
static Scanner in=new Scanner(System.in);
public static void main(String[] args) {
StudentsDao studentsDao=new StudentsDaoImpl();
while (true) {
System.out.println(studentsDao.findStudentsAll());
System.out.println("请选择:添加 1 删除2 修改3 查询4 排序5 退出6");
int input=in.nextInt();
if(input==6){
System.out.println("退出系统");
System.exit(0);
}
switch(input){
case 1:add();break;//添加学生信息
case 2:delete();break;//删除学生信息
case 3:change();break;//修改学生信息
case 4:select();break;//查询学生信息
case 5:order();break;//排序
}
}
}
/**
* 排序
*/
private static void order() {
StudentsDao stuD=new StudentsDaoImpl();
List<Students> sList= stuD.ordList();
for(Students stu:sList) {
System.out.println(stu.toString());
}
}
/**
* 根据学号查询学生信息
*/
private static void select() {
System.out.println("----查询学生信息-----");
System.out.println("请输入要查询的学生学号");
String inputNumber=in.next();
StudentsDao stuD=new StudentsDaoImpl();
// 调用dao层中的selectByNumber方法进行查询
Students stu = stuD.selectByNumber(inputNumber);
System.out.println("学生信息如下:");
System.out.println(stu.toString());
}
/**
* 修改学生
* 因为序号跟学号姓名固定,故不可修改
*/
private static void change() {
System.out.println("----修改学生信息-----");
System.out.println("请输入要修改的学生学号");
String inputNumber=in.next();
// 根据学号查询学生信息
StudentsDao stuD=new StudentsDaoImpl();
Students stu = stuD.selectByNumber(inputNumber);
System.out.println("该学生的信息如下:");
System.out.println(stu.toString());
// 查询该学生的姓名
String oldName = stu.getName();
System.out.println("----请输入科目与成绩-----");
String sub=in.next();//科目
int grade=in.nextInt();//成绩
Students student = new Students();
student.setSubject(sub);
student.setGrades(grade);
int res = stuD.updaStudents(sub,grade,inputNumber);
if (res>0) {
System.out.println("修改姓名:"+oldName+"学号:"+inputNumber+"的成绩信息成功");
System.out.println("修改后的科目与成绩信息为:"+student.getSubject()+"\t"+student.getGrades());
}else {
System.out.println("修改姓名:"+oldName+"学号:"+inputNumber+"失败");
}
}
/**
* 删除学生
*/
private static void delete() {
String no;
System.out.println("---删除学生---");
System.out.println("请输入要删除的学生学号");
String inputNumber=in.next();
System.out.println("该学生信息如下");
StudentsDao stuD=new StudentsDaoImpl();
Students stu = stuD.selectByNumber(inputNumber);
if (stu!=null) {
int id = stu.getId();
String number = stu.getNumber();
int res = stuD.deleteByNumber(number);
if (res>0) {
System.out.println("删除学生学号为:"+stu.getNumber()+"姓名为:"+stu.getName()+"成功");
}else {
System.out.println("删除学生学号为:"+stu.getNumber()+"姓名为:"+stu.getName()+"失败");
}
}
}
/**
* 因为同一个学号只能有同一个姓名,故不允许有重名
*/
private static void add() {
System.out.println("添加学生信息");
System.out.println("----请输入学生信息(序号 班级 学号 姓名 科目 学年 成绩(中间用空格隔开))-----");
int id=in.nextInt();//序号
String tClass=in.next();//班级
String number=in.next();//学号
String name=in.next();//姓名
String sub=in.next();//科目
int year=in.nextInt();//学年
int grade=in.nextInt();//成绩
Students student = new Students(id, tClass, number, name, sub, year, grade);
StudentsDaoImpl studentsDaoImpl = new StudentsDaoImpl();
int nameIsExist = studentsDaoImpl.nameIsExist(name);
int idIsExist = studentsDaoImpl.IdIsExist(id);
if (nameIsExist>0&&idIsExist>0) {
int addCount=studentsDaoImpl.addStudents(student);
System.out.println(addCount>0?"添加姓名\t"+name+"\t学号\\t"+number+"成功":"添加"+name+"失败");
}else if (nameIsExist<=0||idIsExist<=0) {
System.out.println(name+"或"+id+"已经存在");
}
}
}
版权声明:本文为weixin_46683845原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。