题目一:学生成绩档案管理系统

Database

import java.util.ArrayList;
import java.util.List;

public class Database implements java.io.Serializable{
    List<Accounts>accountsList=new ArrayList<>();
    List<Student>studentList=new ArrayList<>();
    AccountsInOut accountsInOut=new AccountsInOut();
    InAndOut inAndOut=new InAndOut();
    public Database(){
        try{
            accountsList=accountsInOut.inPut();
            studentList=inAndOut.inPut();
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
    }
    public void accountOut(List<Accounts>list){
        accountsInOut.outPut(list);
    }
    public void studentOut(List<Student>list){
        inAndOut.outPut(list);
    }
    public List<Student> getStudentList() {
        return studentList;
    }

    public void setStudentList(List<Student> studentList) {
        this.studentList = studentList;
    }
    public List<Accounts> getAccountsList() {
        return accountsList;
    }

    public void setAccountsList(List<Accounts> accountsList) {
        this.accountsList = accountsList;
    }
}

Accounts

Accounts

public class Accounts implements java.io.Serializable{
    private String userName;
    private String passWord;

    public Accounts(String userName, String passWord) {
        this.userName = userName;
        this.passWord = passWord;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
}

AccountsInOut

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class AccountsInOut  {
    public  void outPut(List<Accounts> list)
    {
        try {
            FileOutputStream outputStream = new FileOutputStream("G:\\Accounts.txt");
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
            objectOutputStream.writeObject(list);
            objectOutputStream.flush();
            objectOutputStream.close();
            outputStream.close();
        }catch (Exception e){
        }
    }
    public  List<Accounts> inPut ()
    {
        List<Accounts>list=new ArrayList<>();
        try
        {
            FileInputStream inputStream=new FileInputStream("G:\\Accounts.txt");
            ObjectInputStream objectInputStream=new ObjectInputStream(inputStream);
            list=(List<Accounts>)objectInputStream.readObject();
            objectInputStream.close();
            inputStream.close();
            return list;
        }catch (Exception e){
            return list;
        }
    }
}

Student

Student

public class Student implements java.io.Serializable{
    private String num;
    private String name;
    private String major;
    private double class1Score;
    private double class2Score;
    private double class3Score;
    private double class4Score;
    private double sum;
    private int place;

    public Student(String num, String name, String major, double class1Score, double class2Score, double class3Score, double class4Score) {
        this.num = num;
        this.name = name;
        this.major = major;
        this.class1Score = class1Score;
        this.class2Score = class2Score;
        this.class3Score = class3Score;
        this.class4Score = class4Score;
        this.sum=class1Score+class2Score+class3Score+class4Score;
    }

    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public double getClass1Score() {
        return class1Score;
    }

    public void setClass1Score(double class1Score) {
        this.class1Score = class1Score;
    }

    public double getClass2Score() {
        return class2Score;
    }

    public void setClass2Score(double class2Score) {
        this.class2Score = class2Score;
    }

    public double getClass3Score() {
        return class3Score;
    }

    public void setClass3Score(double class3Score) {
        this.class3Score = class3Score;
    }

    public double getClass4Score() {
        return class4Score;
    }

    public void setClass4Score(double class4Score) {
        this.class4Score = class4Score;
    }

    public double getSum() {
        return sum;
    }

    public void setSum(double sum) {
        this.sum = sum;
    }

    public int getPlace() {
        return place;
    }

    public void setPlace(int place) {
        this.place = place;
    }
}

StudentSys

import DAO.AccountsDao;
import DAO.StudentDao;

import java.util.List;
import java.util.Scanner;

public class StudentSys {
    Database database;
    StudentDao studentDao;
    AccountsDao accountsDao;
    Scanner scanner=new Scanner(System.in);
    public StudentSys(Database database){
        this.database=database;
        studentDao=new StudentDao(database);
        accountsDao=new AccountsDao(database);
    }
    public void loginPage(){
        System.out.println("学生成绩档案管理系统");
        System.out.println("1.登录");
        System.out.println("2.注册");
        System.out.println("3.退出系统");
        System.out.println("请输入你的选择:");
        String input=scanner.next();
        switch (input){
            case "1":login();
                break;
            case "2":register();loginPage();
                break;
            case "3":System.out.println("系统已经退出");
                break;
            default:{
                System.out.println("非法输入,请重新输入");
                loginPage();
            }
        }
    }
    public void login(){
        Accounts accounts1=null;
        Boolean find=false;
        System.out.println("请输入账号");
        String userName=scanner.next();
        List<Accounts> list=database.getAccountsList();
        for(Accounts accounts:list){
            if(userName.equals(accounts.getUserName()))
            {
                accounts1=accounts;
                find=true;
                break;
            }
        }
        if(find==true){
            System.out.println("请输入密码");
            String passWord=scanner.next();
            if(passWord.equals(accounts1.getPassWord())){
                System.out.println("登录成功");
                mainPage();
            }
            else{
                System.out.println("密码错误,请重新登录");
                login();
            }
        }
        else {
            System.out.println("账号不存在");
            loginPage();
        }
    }
    public void register(){
        System.out.println("请输入账号");
        String userName=scanner.next();
        System.out.println("请输入密码");
        String passWord=scanner.next();
        accountsDao.add(new Accounts(userName,passWord));
        System.out.println("注册成功");
        database.accountOut(database.getAccountsList());
    }
    public void mainPage(){
        System.out.println("1.新增学生信息");
        System.out.println("2.浏览学生信息");
        System.out.println("3.查找学生信息");
        System.out.println("4.删除学生信息");
        System.out.println("5.退出登录");
        System.out.println("请输入你的选择:");
        String choose=scanner.next();
        switch (choose){
            case "1":add();mainPage();
                break;
            case "2":showInformation();mainPage();
                break;
            case "3":search();
                break;
            case "4":delete();mainPage();
                break;
            case "5":database.studentOut(database.getStudentList());loginPage();
                break;
            default:System.out.println("非法输入,请重新选择");mainPage();
        }
    }
    public void add(){
        System.out.println("学生学号:");
        String num=scanner.next();
        System.out.println("学生姓名:");
        String name=scanner.next();
        System.out.println("学生专业:");
        String major=scanner.next();
        System.out.println("课程1成绩:");
        double class1Score=scanner.nextDouble();
        System.out.println("课程2成绩:");
        double class2Score=scanner.nextDouble();
        System.out.println("课程3成绩:");
        double class3Score=scanner.nextDouble();
        System.out.println("课程4成绩:");
        double class4Score=scanner.nextDouble();
        studentDao.add(new Student(num,name,major,class1Score,class2Score,class3Score,class4Score));
    }
    public void showInformation(){
        List<Student> list=null;
        studentDao.show();
        System.out.println("选择排序方法:");
        System.out.println("1.双向冒泡排序");
        System.out.println("2.希尔排序");
        System.out.println("3.快速排序");
        System.out.println("4.堆排序");
        System.out.println("5.返回上一级");
        System.out.println("请输入你的选择");
        String choose=scanner.next();
        switch (choose){
            case "1":
                list=studentDao.doubleBubbleSort(database.getStudentList());
                studentDao.showPlace(list);
                break;
            case "2":
                list=studentDao.shellSort(database.getStudentList());
                studentDao.showPlace(list);
                break;
            case "3":
                list=studentDao.quickSort(database.getStudentList());
                studentDao.showPlace(list);
                break;
            case "4":
                list=studentDao.heapSort(database.getStudentList());
                studentDao.showPlace(list);
                break;
            case "5":
                break;
        }
    }
    public void search(){
        studentDao.show();
        System.out.println("1.按学号查找");
        System.out.println("2.按姓名查找");
        System.out.println("3.返回上一级");
        System.out.println("请输入选项:");
        String choose=scanner.next();
        switch (choose){
            case "1":searchByNum();
                break;
            case "2":searchByName();
                break;
            case "3":mainPage();
                break;
            default:
                System.out.println("非法输入,请重新输入");
                search();
        }
    }
    public void delete(){
        studentDao.show();
        System.out.println("要删除的学号:");
        String num=scanner.next();
        Student student=studentDao.searchByNum(num);
        studentDao.delete(student);
        System.out.println("删除成功");
    }
    public void searchByName(){
        System.out.println("请输入要查找的姓名:");
        String name=scanner.next();
        Student student;
        student=studentDao.searchByName(name);
        System.out.println(" 学号:"
                +student.getNum()+" 姓名:"
                +student.getName()
                +" 专业:"+student.getMajor()
                +" 课程1成绩:"+student.getClass1Score()
                +" 课程2成绩:"+student.getClass2Score()
                +" 课程3成绩:"+student.getClass3Score()
                +" 课程4成绩:"+student.getClass4Score());
        System.out.println("是否修改成绩(Y\\N)");
        String choose=scanner.next();
        if(choose.equals("Y")){
            System.out.println("修改第几门课成绩:");
            String input=scanner.next();
            double score;
            switch (input){
                case "1":score=scanner.nextDouble();student.setClass1Score(score);
                    break;
                case "2":score=scanner.nextDouble();student.setClass2Score(score);
                    break;
                case "3":score=scanner.nextDouble();student.setClass3Score(score);
                    break;
                case "4":score=scanner.nextDouble();student.setClass4Score(score);
                    break;
                default:System.out.println("输入错误");
                    searchByName();
            }
            student.setSum(student.getClass1Score()+student.getClass2Score()+student.getClass3Score()+student.getClass4Score());
            mainPage();
        }
        else{
            mainPage();
        }
    }
    public void searchByNum(){
        System.out.println("请输入要查找的学号:");
        String num=scanner.next();
        Student student;
        student=studentDao.searchByNum(num);
        System.out.println(" 学号:"
                +student.getNum()+" 姓名:"
                +student.getName()
                +" 专业:"+student.getMajor()
                +" 课程1成绩:"+student.getClass1Score()
                +" 课程2成绩:"+student.getClass2Score()
                +" 课程3成绩:"+student.getClass3Score()
                +" 课程4成绩:"+student.getClass4Score());
        System.out.println("是否修改成绩(Y\\N)");
        String choose=scanner.next();
        if(choose.equals("Y")){
            System.out.println("修改第几门课成绩:");
            String input=scanner.next();
            double score;
            switch (input){
                case "1":score=scanner.nextDouble();student.setClass1Score(score);
                    break;
                case "2":score=scanner.nextDouble();student.setClass2Score(score);
                    break;
                case "3":score=scanner.nextDouble();student.setClass3Score(score);
                    break;
                case "4":score=scanner.nextDouble();student.setClass4Score(score);
                    break;
                default:System.out.println("输入错误");
                    searchByNum();
            }
            student.setSum(student.getClass1Score()+student.getClass2Score()+student.getClass3Score()+student.getClass4Score());
            mainPage();
        }
        else{
            mainPage();
        }
    }
}

DAO

AccountsDao

import system.Accounts;
import system.Database;

public class AccountsDao {
    Database database;
    public AccountsDao(Database database){
        this.database=database;
    }
    public void add(Accounts accounts){
        database.getAccountsList().add(accounts);
    }
}

StudentDao

import system.Database;
import system.Student;

import java.util.List;

public class StudentDao {
    Database database;
    public StudentDao(Database database){
        this.database=database;
    }
    public void add(Student student){
        database.getStudentList().add(student);
    }
    public void show(){
        List<Student> list=database.getStudentList();
        int n=1;
        for(Student student:list){
            System.out.println("编号"+n+" 学号:"
                    +student.getNum()+" 姓名:"
                    +student.getName()
                    +" 专业:"+student.getMajor()
                    +" 课程1成绩:"+student.getClass1Score()
                    +" 课程2成绩:"+student.getClass2Score()
                    +" 课程3成绩:"+student.getClass3Score()
                    +" 课程4成绩:"+student.getClass4Score()
                    +" 总分:"+student.getSum());
            n++;
        }
    }
    public void delete(Student student){
        Student student1=null;
        for(Student each:database.getStudentList()){
            if(student.getNum().equals(each.getNum())){
                student1=each;
            }
        }
        database.getStudentList().remove(student1);
    }
    public Student searchByNum(String num){
        Student student=null;
        for(Student each:database.getStudentList()){
            if(num.equals(each.getNum())){
                student=each;
            }
        }
        return student;
    }
    public Student searchByName(String name){
        Student student=null;
        for(Student each:database.getStudentList()){
            if(name.equals(each.getName())){
                student=each;
            }
        }
        return student;
    }
    public List<Student> doubleBubbleSort(List<Student> studentList){
        List<Student> list=studentList;
        Student student=null;
        int left=0,right=studentList.size()-1;
        while(left<right)
        {
            for(int i=left+1;i<=right;i++){
                if(list.get(left).getSum()<list.get(i).getSum()){
                    student=list.get(i);
                    list.set(i,list.get(left));
                    list.set(left,student);
                }
            }
            left++;
            for(int i=right-1;i>=left;i--){
                if(list.get(right).getSum()>list.get(i).getSum()){
                    student=list.get(i);
                    list.set(i,list.get(right));
                    list.set(right,student);
                }
            }
            right--;
        }
        return list;
    }
    public List<Student> quickSort(List<Student> studentList){
        List<Student> list=studentList;
        quickSort1(list,0,list.size()-1);
        return list;
    }
    public void quickSort1(List<Student> studentList,int left,int right){
        if(left<right){
            int i=left,j=right;
            Student student=studentList.get(left);
            double x=student.getSum();
            while(i<j){
                while((i<j)&&(studentList.get(j).getSum()<x)){
                    j--;
                }
                if(i<j){
                    studentList.set(i,studentList.get(j));
                    i++;
                }
                while((i<j)&&(studentList.get(i).getSum()>x)){
                    i++;
                }
                if(i<j){
                    studentList.set(j,studentList.get(i));
                    j--;
                }
            }
            studentList.set(i,student);
            quickSort1(studentList,left,i-1);
            quickSort1(studentList,i+1,right);
        }
    }
    public List<Student> shellSort(List<Student> studentList){
        List<Student> list=studentList;
        Student student=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);
                double tmp=student.getSum();
                for (j = i; j >= gap && tmp>list.get(j-gap).getSum(); j -= gap) {
                    list.set(j,list.get(j-gap));
                }
                list.set(j,student);
            }
        }
        return list;
    }
    public List<Student> heapSort(List<Student> studentList){
        List<Student> list=studentList;
        int len = list.size();

        buildMaxHeap(list, len);

        for (int i = len - 1; i > 0; i--) {
            swap(list, 0, i);
            len--;
            heapify(list, 0, len);
        }
        return list;
    }

    private void buildMaxHeap(List<Student> studentList, int len) {
        for (int i = (int) Math.floor(len / 2); i >= 0; i--) {
            heapify(studentList, i, len);
        }
    }

    private void heapify(List<Student> studentList, int i, int len) {
        int left = 2 * i + 1;
        int right = 2 * i + 2;
        int largest = i;

        if (left < len && studentList.get(left).getSum() < studentList.get(largest).getSum()) {
            largest = left;
        }

        if (right < len && studentList.get(right).getSum() < studentList.get(largest).getSum()) {
            largest = right;
        }

        if (largest != i) {
            swap(studentList, i, largest);
            heapify(studentList, largest, len);
        }
    }

    private void swap(List<Student> studentList, int i, int j) {
        Student student=studentList.get(i);
        studentList.set(i,studentList.get(j));
        studentList.set(j,student);
    }
    public void showPlace(List<Student> studentList){
        for(int i=0;i<studentList.size();i++){
            studentList.get(i).setPlace(i+1);
        }
        int i=1;
        for(Student each:studentList){
            System.out.println(i+"."+" 姓名 "+each.getName()+" 专业 "+each.getMajor()+" 总分 "+each.getSum()+" 名次 "+each.getPlace());
            i++;
        }
    }
}

InAndOut

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class InAndOut {
    public  void outPut(List<Student>list)
    {
        try {
            FileOutputStream outputStream = new FileOutputStream("G:\\test.txt");
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
            objectOutputStream.writeObject(list);
            objectOutputStream.flush();
            objectOutputStream.close();
            outputStream.close();
        }catch (Exception e){
        }
    }
    public  List<Student> inPut()
    {
        List<Student>list=new ArrayList<>();
        try
        {
            FileInputStream inputStream=new FileInputStream("G:\\test.txt");
            ObjectInputStream objectInputStream=new ObjectInputStream(inputStream);
           list=(List<Student>)objectInputStream.readObject();
            objectInputStream.close();
            inputStream.close();
            return list;
        }catch(IOException i)
        {
            return list;
        }catch(ClassNotFoundException c)
        {
            return list;
        }catch (Exception e){
            return list;
        }
    }
}

Main

public class Main {
    public static void main(String[]args){
        Database database = new Database();
        StudentSys studentSys=new StudentSys(database);
        studentSys.loginPage();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值