database类
下面展示一些 内联代码片
。
public class DataBase {
List<Students>studentsList=new ArrayList<>();
List<Users>usersList=new ArrayList<>();
public DataBase(){
Users users=new Users("admin","123");
usersList.add(users);
studentsList.add(new Students("whj","1",99,99,99,99));
studentsList.add(new Students("yr","2",66,66,66,66));
studentsList.add(new Students("jhd","3",100,100,99,99));
studentsList.add(new Students("yl","4",88,88,88,88));
}
public List<Students> getStudentsList() {
return studentsList;
}
public List<Users> getUsersList() {
return usersList;
}
students类
```javascript
public class Students {
private String name;
private String number;
private int grade1;
private int grade2;
private int grade3;
private int grade4;
public Students(String name, String number, int grade1, int grade2, int grade3, int grade4) {
this.name = name;
this.number = number;
this.grade1 = grade1;
this.grade2 = grade2;
this.grade3 = grade3;
this.grade4 = grade4;
}
public void setName(String name) {
this.name = name;
}
public void setNumber(String number) {
this.number = number;
}
public void setGrade1(int grade1) {
this.grade1 = grade1;
}
public void setGrade2(int grade2) {
this.grade2 = grade2;
}
public void setGrade3(int grade3) {
this.grade3 = grade3;
}
public void setGrade4(int grade4) {
this.grade4 = grade4;
}
public String getName() {
return name;
}
public String getNumber() {
return number;
}
public int getGrade1() {
return grade1;
}
public int getGrade2() {
return grade2;
}
public int getGrade3() {
return grade3;
}
public int getGrade4() {
return grade4;
}
}
users类
public class Users {
private String account;
private String code;
public void setAccount(String account) {
this.account = account;
}
public void setCode(String code) {
this.code = code;
}
public Users(String account, String code) {
this.account = account;
this.code = code;
}
public String getAccount() {
return account;
}
public String getCode() {
return code;
}
}
dao类
studentdao
public class StudentDao {
private DataBase dataBase;
public StudentDao(DataBase dataBase) {
this.dataBase = dataBase;
}
//对全部学生信息打印
public void print() {
System.out.println("学生学号:\t" + "学生姓名\t" + " 科目一:\t" + "科目二:\t" + "科目三:\t" + "科目四:\t");
for (Students students : dataBase.getStudentsList()) {
System.out.println("\t"+students.getNumber() + "\t " + students.getName() + "\t " + students.getGrade1()
+ "\t " + students.getGrade2() + "\t " + students.getGrade3() + "\t " + students.getGrade4());
}
}
//添加新的学生
public void add() {
String number;
String name;
int grade1;
int grade2;
int grade3;
int grade4;
Scanner scanner = new Scanner(System.in);
System.out.println("输入添加学生的学号:\n");
number = scanner.next();
System.out.println("输入添加学生的姓名:\n");
name = scanner.next();
System.out.println("输入添加学生的科目一:\n");
grade1 = scanner.nextInt();
System.out.println("输入添加学生的科目二:\n");
grade2 = scanner.nextInt();
System.out.println("输入添加学生的科目三:\n");
grade3 = scanner.nextInt();
System.out.println("输入添加学生的科目四:\n");
grade4 = scanner.nextInt();
Students students = new Students(name, number, grade1, grade2, grade3, grade4);
List<Students> studentsList = dataBase.getStudentsList();
studentsList.add(students);
}
//输入姓名或者学号来查询学生信息
public void find() {
Scanner scanner = new Scanner(System.in);
System.out.println("1.输入学号来查询信息\t输入名字来查询信息\n");
int choice = scanner.nextInt();
switch (choice) {
case 1:
findbynumber();
break;
case 2:
findbyname();
break;
}
}
//通过输入学号来查询信息
public void findbynumber() {
Scanner scanner = new Scanner(System.in);
System.out.println("输入添加学生的学号:\n");
String number = scanner.next();
for (Students students : dataBase.getStudentsList()) {
if (students.getNumber().equals(number)) {
System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
+ "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
+ "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
}
}
}
///通过输入姓名来查询信息
public void findbyname() {
Scanner scanner = new Scanner(System.in);
System.out.println("输入添加学生的姓名:\n");
String name = scanner.next();
for (Students students : dataBase.getStudentsList()) {
if (students.getName().equals(name)) {
System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
+ "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
+ "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4() + "\n");
}
}
}
public void findstudent() {
System.out.println("输入1按照学号查询,输入2按照姓名查询\n");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
if (choice == 1) {
findbynumber();
} else if (choice == 2) {
findbyname();
}
}
//通过学号来修改科目成绩
public void changegrade1() {
Scanner scanner = new Scanner(System.in);
System.out.println("输入学号:");
String number = scanner.next();
Students students = null;
for (Students a : dataBase.getStudentsList()) {
if (a.getNumber().equals(number)) {
students = a;
}
}
if (students != null) {
System.out.println("查找成功!");
System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
+ "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
+ "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
System.out.println("输入要修改的科目一的成绩:");
int grade1 = scanner.nextInt();
System.out.println("输入要修改的科目二的成绩:");
int grade2 = scanner.nextInt();
System.out.println("输入要修改的科目三的成绩:");
int grade3 = scanner.nextInt();
System.out.println("输入要修改的科目四的成绩:");
int grade4 = scanner.nextInt();
students.setGrade1(grade1);
students.setGrade2(grade2);
students.setGrade3(grade3);
students.setGrade4(grade4);
System.out.println("修改完成!");
System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
+ "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
+ "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
} else {
System.out.println("未找到匹配的学生!");
}
}
//通过名字来修改科目成绩
public void changegrade2() {
Scanner scanner = new Scanner(System.in);
System.out.println("输入学号:");
String name = scanner.next();
Students students = null;
for (Students a : dataBase.getStudentsList()) {
if (a.getName().equals(name)) {
students = a;
}
}
if (students != null) {
System.out.println("查找成功!");
System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
+ "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
+ "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
System.out.println("输入要修改的科目一的成绩:");
int grade1 = scanner.nextInt();
System.out.println("输入要修改的科目二的成绩:");
int grade2 = scanner.nextInt();
System.out.println("输入要修改的科目三的成绩:");
int grade3 = scanner.nextInt();
System.out.println("输入要修改的科目四的成绩:");
int grade4 = scanner.nextInt();
students.setGrade1(grade1);
students.setGrade2(grade2);
students.setGrade3(grade3);
students.setGrade4(grade4);
System.out.println("修改完成!");
System.out.println("学生学号:" + students.getNumber() + "学生姓名:" + students.getName()
+ "科目一:" + students.getGrade1() + "科目二:" + students.getGrade2()
+ "科目三:" + students.getGrade3() + "科目四:" + students.getGrade4());
} else {
System.out.println("未找到学生信息!");
}
}
//交换链表两个位置的数据
public void swap(int i, int j) {
List<Students> studentsList = dataBase.getStudentsList();
Students studentsi = studentsList.get(i);
Students studentsj = studentsList.get(j);
studentsList.set(j, studentsi);
studentsList.set(i, studentsj);
}
//双向冒泡排序
public void bub() {
int len = dataBase.getStudentsList().size()-1;
int preindex = 1;
int backindex = len;
while (preindex < backindex) {
preSort(len, preindex);
preindex++;
if (preindex >= backindex) break;
backSort(len, backindex);
backindex--;
}
}
//从前向后排序
public void preSort(int length, int preindex) {
List<Students> studentsList = dataBase.getStudentsList();
for (int i = preindex + 1; i <= length; i++) {
int gradeIndex = studentsList.get(preindex).getGrade1() + studentsList.get(preindex).getGrade2() +
studentsList.get(preindex).getGrade3() + studentsList.get(preindex).getGrade4();
int gradeI = studentsList.get(i).getGrade1() + studentsList.get(i).getGrade2()
+ studentsList.get(i).getGrade3() + studentsList.get(i).getGrade4();
if (gradeI > gradeIndex) {
swap(i, preindex);
}
}
}
//从后往前排序
public void backSort(int length, int backindex) {
List<Students> studentsList = dataBase.getStudentsList();
for (int i = backindex - 1; i > 0; i--) {
int gradeIndex = studentsList.get(backindex).getGrade1() + studentsList.get(backindex).getGrade2() +
studentsList.get(backindex).getGrade3() + studentsList.get(backindex).getGrade4();
int gradeI = studentsList.get(i).getGrade1() + studentsList.get(i).getGrade2()
+ studentsList.get(i).getGrade3() + studentsList.get(i).getGrade4();
if (gradeI < gradeIndex) {
swap(i, backindex);
}
}
}
//快速排序
public void shellSort() {
List<Students> list = dataBase.getStudentsList();
Students student = null;
Students student1 = null;
int j;
for (int gap = list.size() / 2; gap > 0; gap /= 2) {
for (int i = gap; i < list.size(); i++) {
student = list.get(i);
int tmp = student.getGrade1() + student.getGrade2() + student.getGrade3() + student.getGrade4();
for (j = i; j >= gap && tmp > list.get(j - gap).getGrade1() + list.get(j - gap).getGrade2() + list.get(j - gap).getGrade3() + list.get(j - gap).getGrade4(); j -= gap) {
list.set(j, list.get(j - gap));
}
list.set(j, student);
}
}
}
//快速排序
public void quickSort1(int left,int right) {
List<Students>studentsList=dataBase.getStudentsList();
if (left < right) {
int i = left, j = right;
Students student = studentsList.get(left);
int x = student.getGrade1()+student.getGrade2()+student.getGrade3()+student.getGrade4();
while (i < j) {
while ((i < j) && (studentsList.get(j).getGrade1()+studentsList.get(j).getGrade2()+studentsList.get(j).getGrade3()+studentsList.get(j).getGrade4()< x)) {
j--;
}
if (i < j) {
studentsList.set(i, studentsList.get(j));
i++;
}
while ((i < j) && (studentsList.get(i).getGrade1()+ studentsList.get(i).getGrade2()+studentsList.get(i).getGrade3()+studentsList.get(i).getGrade4()> x)) {
i++;
}
if (i < j) {
studentsList.set(j, studentsList.get(i));
j--;
}
}
studentsList.set(i, student);
quickSort1( left, i - 1);
quickSort1(i + 1, right);
}
}
//堆排序
public void heapSort(){
List<Students> list=dataBase.getStudentsList();
int len = list.size();
buildMaxHeap(list, len);
for (int i = len - 1; i > 0; i--) {
swap(0,i);
len--;
heapify(list, 0, len);
}
}
private void buildMaxHeap(List<Students> studentList, int len) {
for (int i = (int) Math.floor(len / 2); i >= 0; i--) {
heapify(studentList, i, len);
}
}
private void heapify(List<Students> studentList, int i, int len) {
int left = 2 * i + 1;
int right = 2 * i + 2;
int largest = i;
if (left < len && studentList.get(left).getGrade1()+studentList.get(left).getGrade2()+studentList.get(left).getGrade3()+studentList.get(left).getGrade4()
< studentList.get(largest).getGrade1()+studentList.get(largest).getGrade2()+studentList.get(largest).getGrade3()+studentList.get(largest).getGrade4()) {
largest = left;
}
if (right < len && studentList.get(right).getGrade1()+ studentList.get(right).getGrade2()+ studentList.get(right).getGrade3()+ studentList.get(right).getGrade4()
< studentList.get(largest).getGrade1()+studentList.get(largest).getGrade2()+studentList.get(largest).getGrade3()+studentList.get(largest).getGrade4()) {
largest = right;
}
if (largest != i) {
swap( i, largest);
heapify(studentList, largest, len);
}
}
}
userdao
public class UserDao {
private DataBase dataBase;
public UserDao(DataBase dataBase){
this.dataBase=dataBase;
}
//判断密码和账号是否正确(如果有用户名为输入的用户名,返回User类,否者返回为空)
public Users Judge_account(String account){
Users users =null;
for(Users a:dataBase.getUsersList()){
if(a.getAccount().equals(account))users=a;
}
return users;
}
//欢迎界面
public void welcome(){
Scanner scanner=new Scanner(System.in);
String account;
String code;
System.out.println("---------------欢迎进入学生管理系统---------------");
System.out.println("请输入账号:\n");
account =scanner.next();
System.out.println("请输入密码:\n");
code=scanner.next();
Users users=Judge_account(account);
if(users!=null){
if(users.getCode().equals(code)){
System.out.println("登录成功!\n");
System.out.println("-----------------------------------------");
}
else{
System.out.println("密码错误,重新登录!\n");
welcome();
}
}
else{
System.out.println("账号错误,重新登录!");
welcome();
}
}
}
service类
public class StudentService {
private StudentDao studentDao;
private UserDao userDao;
private DataBase dataBase;
public StudentService(DataBase dataBase) {
studentDao = new StudentDao(dataBase);
userDao = new UserDao(dataBase);
this.dataBase = dataBase;
}
public void login(){
userDao.welcome();
start();
}
public void start() {
Scanner scanner = new Scanner(System.in);
System.out.println("\t2.添加新学生\n");
System.out.println("\t3.打印所有学生的信息\n");
System.out.println("\t4.修改对应学生的四门课成绩\n");
System.out.println("\t5.对学生的成绩由高到低排序\n");
System.out.println("\t6.输入学号或者姓名来查询学生信息\n");
int choice = scanner.nextInt();
switch (choice) {
case 2:
addx();break;
case 3:
studentDao.print();
start();
break;
case 4:
changegradex();break;
case 5:
System.out.println("1.冒泡排序");
System.out.println("2.希尔排序");
System.out.println("3.快速排序");
System.out.println("4.堆排序");
System.out.println("输入0返回菜单");
int a=scanner.nextInt();
switch (a){
case 1:
bubx();
break;
case 2:
shellSortx();
break;
case 3:
quickSortx();
break;
case 4:
heapSortx();
break;
case 0:start();
break;
}
break;
case 6:
findstudentx();break;
}
}
public void bubx(){
studentDao.bub();
studentDao.print();
start();
}
public void shellSortx(){
studentDao.shellSort();
studentDao.print();
start();
}
public void quickSortx(){
studentDao.quickSort1(0,dataBase.getStudentsList().size()-1);
studentDao.print();
start();
}
public void heapSortx(){
studentDao.heapSort();
studentDao.print();
start();
}
public void findstudentx(){
studentDao.findstudent();
System.out.println("输入0返回上一菜单,输入1继续查询\n");
Scanner scanner=new Scanner(System.in);
int choice=scanner.nextInt();
if(choice==1){
findstudentx();
}else if(choice==0){
start();
}
}
public void changegradex(){
changegrade();
System.out.println("输入0 返回上一菜单,输入1继续改变成绩!");
Scanner scanner=new Scanner(System.in);
int choice =scanner.nextInt();
if(choice==1){
changegrade();
}
if(choice==0){
start();
}
}
public void changegrade(){
Scanner scanner=new Scanner(System.in);
System.out.println("输入0返回上一菜单,输入1按照学号来修改成绩,输入2按照姓名来修改成绩:\n");
int choice=scanner.nextInt();
if(choice==1){
studentDao.changegrade1();
}else if(choice==2){
studentDao.changegrade2();
}else if(choice==0){
start();
}
else{
System.out.println("输入错误,");
}
}
//调用添加学生的函数,来
public void addx(){
studentDao.add();
Scanner scanner=new Scanner(System.in);
System.out.println("输入0返回上级菜单,输入1继续添加!");
int choice=scanner.nextInt();
if(choice==1){
addx();
} else if(choice==0){
start();
}
}
}