学生管理系统

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;
    }
    }

Dao

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;
}

/**
 * 双向冒泡排序
 * @param studentList
 * @return
 */
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;
}

/**
 * 快速排序
 * @param studentList
 * @return
 */
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);
    }
}

/**
 * 希尔排序
 * @param studentList
 * @return
 */
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;
}

/**
 * 堆排序
 * @param studentList
 * @return
 */
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);
}

/**
 * 排名赋值并打印
 * @param studentList
 */
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++;
    }
}
 };

AccountDao

下面展示一些 内联代码片

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);
}
}

Student

stydents

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();
        }
    }
}

Account

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;
}
}

AccountSys

下面展示一些 内联代码片

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

public class AccountsInOut {
public  void outPut(List<Accounts> list)
{
    try {
        FileOutputStream outputStream = new FileOutputStream("D:\\学生成绩管理系统数据文件\\Accounts.txt");
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
        objectOutputStream.writeObject(list);
        objectOutputStream.flush();
        objectOutputStream.close();
        outputStream.close();
    }catch (Exception e){
    }
}
public  List<Accounts> inPut()
{
    try
    {
        FileInputStream inputStream=new FileInputStream("D:\\学生成绩管理系统数据文件\\Accounts.txt");
        ObjectInputStream objectInputStream=new ObjectInputStream(inputStream);
        List<Accounts>list=(List<Accounts>)objectInputStream.readObject();
        objectInputStream.close();
        inputStream.close();
        return list;
    }catch(IOException i)
    {
        return null;
    }catch(ClassNotFoundException c)
    {
        return null;
    }catch (Exception e){
        return null;
    }
}
}

InandOut

下面展示一些 内联代码片

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

public class InAndOut {
public  void outPut(List<Student>list)
{
    try {
        FileOutputStream outputStream = new FileOutputStream("D:\\学生成绩管理系统数据文件\\test.txt");
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
        objectOutputStream.writeObject(list);
        objectOutputStream.flush();
        objectOutputStream.close();
        outputStream.close();
    }catch (Exception e){
    }
}
public  List<Student> inPut()
{
    try
    {
        FileInputStream inputStream=new FileInputStream("D:\\学生成绩管理系统数据文件\\test.txt");
        ObjectInputStream objectInputStream=new ObjectInputStream(inputStream);
        List<Student>list=(List<Student>)objectInputStream.readObject();
        objectInputStream.close();
        inputStream.close();
        return list;
    }catch(IOException i)
    {
        return null;
    }catch(ClassNotFoundException c)
    {
        return null;
    }catch (Exception e){
        return null;
    }
}
}

Main

下面展示一些 内联代码片

public class Main {
public static void main(String[]args){
    Database database = new Database();
    StudentSys studentSys=new StudentSys(database);
    studentSys.loginPage();
}
}
技术特点:采用三层架构模式、数据分页、获取等均使用代码实现。注释详细、代码规范,非常适合学习和中小型学校使用。 功能描述: 一,可以导入和导出成绩,成绩单上的项目包括:姓名,学号,科目,班级,成绩,补考成绩,授课老师,考试日期。 其中成绩和补考成绩具体情况如下: 1,计算机课程:理论成绩,实践成绩,, 2,文化课:理论, 3,英语:考试成绩,平时成绩,总成绩 二,导入成绩后,系统会自动计算出该班级该科目的应考人数,实考人数,缺考人数,及格人数,不及格人数,平均分,通过率。 其中平均分和率具体情况如下: 1,计算机课程:理论成绩,实践成绩,总成绩(理论和实践各占50%) 2,文化课:理论, 3,英语:考试成绩,平时成绩,总成绩(考试成绩占80%,平时成绩占20%) 4,计算机课程: 理论平均分,通过率;实践平均分,通过率;总成绩的平均分,通过率。 5,文化课:理论成绩的平均分,通过率 6,英语:总成绩的平均分和通过率 三:查询: 1,可以通过班级,学号,姓名,科目,及格的人和不及格的人,授课老师进行查询, 2,可以查询该班的单科成绩,也可以查询该班的各科成绩汇总。 3,可以按月度查询该月所有考试的平均分和通过率,也可 以按年度查询该年度的平均分和通过率。 4,可以查询授课老师某一门的月度和年度平均分和通过率和该老师所授所有课程的月度和年度平均分和通过率。 四、成绩排序 可按照该班级某门课程的理论成绩,实践成绩、总成绩进行排序 五、任课教师的管理 任课教师基本信息,该门课程的授课教师 教务处: 学校全体成员的信息管理,对考试科目,时间及对所考科目的编号等进行具体的管理,并对任课老师等输入的信息进行管理,对学生的信息进行必要的维护,可打印学生的所有信息。 绝对是可用实际部署使用的。很实惠的。 注意事项:运行时请修改附加数据库并修改数据库连接字符串(在web.config里面)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值