java开发的简易学生成绩管理系统

经过1个月的紧张学习和应用,终于做出了这个简易的学生成绩管理系统。

wKiom1eBvNmjd-GZAAA8TJ9awB0298.png-wh_50

代码如下(仅供参考学习)

view包下的菜单

package com.xujulong.www.view;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.Scanner;


import com.xujulong.www.po.Manager;

import com.xujulong.www.po.Teacher;

import com.xujulong.www.service.ChooseFunction;




public class Menu {

private String idOrName;

private String password;

private BufferedReader br;        //可用于从字符输入流中读取文本

private Scanner input;

public Menu(){

input = new Scanner(System.in);

br = new BufferedReader(new InputStreamReader(System.in));

}


public void show(){

while(true){

System.out.println("请按下面信息提示输入数字");

System.out.println("1---管理员登陆   2---教师登录  3---退出");

int num = 0 ;

/**

* 检查用户输入的是否为数字

*/

boolean f = false; 

do{

try{

num = Integer.parseInt(br.readLine());       

    f =true;

}catch(NumberFormatException e){        //捕抓输入的内容不能转换成int型

System.out.println("输入错误,请重新输入数字");

}catch(IOException e){

e.printStackTrace();

}

}while(f == false);

 

   if(num==1)

this.managerMenue();

else if(num==2)

this.teacherMenue();

else if(num==3)

System.exit(0);

else

System.out.println("输入有误,请重新输入");

}

}

public void managerMenue() {

while (true){

   System.out.println("欢迎管理员登陆");

   System.out.println("请输账号或用户名");

   idOrName = input.next();

   System.out.println("请输密码");

    password = input.next();

   Manager m1 = new Manager("abc","TopView","123");

   Manager m2 = new Manager("123","安卓","abc");

   Manager[] mana = {m1,m2};

   for(Manager manager:mana){   //用for each 遍历来检查账号密码

                if((manager.getId().equals(idOrName) || manager.getUserName().equals(idOrName))&& manager.getPasswrod().equals(password)){                

                 System.out.println("登陆成功"); 

                 System.out.println(manager.getUserName()+"管理员您好");

                 this.managerGetIn();

                }

   }    

   System.out.println("账号或密码错误请重新输入");

     }

     }

 

public void teacherMenue() {

while (true){

   System.out.println("欢迎教师登陆");

   System.out.println("请输入账号或用户名");

   idOrName = input.next();

   System.out.println("请输入密码");

   password = input.next();

   Teacher t1 = new Teacher("123","TopView","123");

   Teacher t2 = new Teacher("abc","安卓","abc");

   Teacher[] teac = {t1,t2};

   for(Teacher teacher:teac){

                if((teacher.getId().equals(idOrName) || teacher.getUserName().equals(idOrName)) && teacher.getPasswrod().equals(password) ) {

                 System.out.println("登陆成功");

                 System.out.println(teacher.getUserName()+"老师您好");

                 this.teacherGetIn();

                }

   }

   

   System.out.println("账号或密码错误请重新输入");

     }

     } 

 

public void teacherGetIn(){  

ChooseFunction cho = new ChooseFunction();

while(true){

 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("6---查询具体科目成绩");

 System.out.println("7---返回上级菜单");

 int num = 0;

 boolean f = false; 

do{

try{

num = Integer.parseInt(br.readLine());

    f =true;

}catch(NumberFormatException e){

System.out.println("输入错误,请重新输入数字");

}catch(IOException e){

e.printStackTrace();

}

}while(f == false);

 

 if( num >=1 && num <= 7 )

 cho.teacherchoose(num);

 else

 System.out.println("输入错误请重新输入");

}

}

 

public void managerGetIn(){  

ChooseFunction cho = new ChooseFunction();

while(true){

 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("6---查询具体科目成绩");

 System.out.println("7---返回上级菜单");

 int num = 0;

     /**

      * 检查用户输入的是否为数字

      */

 boolean f = false; 

do{

try{

num = Integer.parseInt(br.readLine());

    f =true;

}catch(NumberFormatException e){

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("6---查询具体科目成绩");

System.out.println("7---返回上级菜单");

}catch(IOException e){

e.printStackTrace();

}

}while(f == false);

 

 if( num >=1 && num <= 7 )

 cho.managerchoose(num);

 else

 System.out.println("输入错误请重新输入");

}

}

}


po包下的各种对象

教师:

package com.xujulong.www.po;

public class Teacher {

private String id;

private String userName ;

private String passwrod ;

public Teacher(String id,String userName,String passwrod){

this.id = id;

this.userName = userName;

this.passwrod = passwrod;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPasswrod() {

return passwrod;

}

public void setPasswrod(String passwrod) {

this.passwrod = passwrod;

}

}

管理员:

package com.xujulong.www.po;


public class Manager {

private String id;

private String userName ;

private String passwrod ;

public Manager(String id,String userName,String passwrod){       //有参构造函数

this.id = id;

this.userName = userName;

this.passwrod = passwrod;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPasswrod() {

return passwrod;

}

public void setPasswrod(String passwrod) {

this.passwrod = passwrod;

}

}

学生:

package com.xujulong.www.po;


import java.io.Serializable;

import java.util.HashSet;

import java.util.Set;


public class Student implements Serializable{  //对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象

 private static final long serialVersionUID = 1L;           //实现序列化类的不同版本间的兼容性,即在版本升级时反序列化仍保持对象的唯一性

private String id;

private String name;

private String stuclass;

private String email;

private  Set<Course>course;             //通过set容器来装科目以便于增删查改

private double Average;

private double AllScore;

public String getId() {

return id;

}


public void setId(String id) {

this.id = id;

}


public String getName() {

return name;

}


public void setName(String name) {

this.name = name;

}


public String getStuclass() {

return stuclass;

}


public void setStuclass(String stuclass) {

this.stuclass = stuclass;

}


public String getEmail() {

return email;

}


public void setEmail(String email) {

this.email = email;

}


public Set<Course> getCourse() {

return course;

}


public void setCourse(Set<Course> course) {

this.course = course;

}


public double getAverage() {

return Average;

}


public void setAverage(double average) {

Average = average;

}


public double getAllScore() {

return AllScore;

}


public void setAllScore(double allScore) {

AllScore = allScore;

}




public Student(String id, String name, String stuclass, String email) {

this.id = id;

this.name = name;

this.stuclass = stuclass;

this.email = email;

this.course = new HashSet<Course>();

}


}

课程:

package com.xujulong.www.po;


import java.io.Serializable;


public class Course implements Serializable{

    /**

*/

private static final long serialVersionUID = 1L;

private String subjectName;

    private String mark;

    private String estimate;

      

    public String getEstimate() {

return estimate;

}


public void setEstimate(String estimate) {

this.estimate = estimate;

}


public String getSubjectName() {

return subjectName;

}


public void setSubjectName(String subjectName) {

this.subjectName = subjectName;

}


public String getMark() {

return mark;

}


public void setMark(String mark) {

this.mark = mark;

}


public Course(String name, String mark,String estimath) {

super();

this.subjectName = name;

this.mark = mark;

this.estimate = estimath;

}


}

教师功能:

package com.xujulong.www.po;


import java.io.BufferedReader;

import java.io.EOFException;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.ObjectInputStream;

import java.util.Iterator;

import java.util.Scanner;

import java.util.regex.Matcher;

import java.util.regex.Pattern;


import com.xujulong.www.view.Menu;

import com.xujulong.www.dao.ReadAndWrite;

import com.xujulong.www.po.Course;

import com.xujulong.www.po.Student;



public class TeacherChangeStudent {

private String id;

private String email;

private String Math;

private String English;

private String Physics;

//private String subject;

private String estimath;

private File stuInformation;

private BufferedReader br;

private Scanner input;

public TeacherChangeStudent(){

input = new Scanner(System.in);

stuInformation = new File("stuInformation.txt");

br = new BufferedReader(new InputStreamReader(System.in));       //创建一个输入缓冲区的缓冲字符输入流


}

     

public void addStuInformation() {

Student us = null;

    ObjectInputStream in = null;

   

    System.out.println("请输入要添加学生的个数");

    int m = 0;

    /**

    * 判断用户输入是否为数字

    */

   

    boolean f = false; 

    do{

   try{

   m = Integer.parseInt(br.readLine());             //判断用户输入的是否是数字

        f =true;

   }catch(NumberFormatException e){

   System.out.println("输入错误,请重新输入数字");

   }catch(IOException e){

   e.printStackTrace();

   }

    }while(f == false);

   

    for(int i = 1;i <= m;i++){                              //根据用户输入的个数循环m次

    System.out.println("这是第"+i+"个学生的信息");    

    while(true){  

    int b = 0;  

    System.out.println("学号:");  

    id = input.next();    

    try{    

    in = new ObjectInputStream(new FileInputStream(stuInformation));

    while(true){    

    us = (Student) in.readObject();

    if(id.equals(us.getId())){

    System.out.println("该学号已被占用");

    b = 1;

    break;

    }        

    }

    }catch(ClassNotFoundException e){

    e.printStackTrace();

    }catch(EOFException e){  

    System.out.println("该学号能用");   //避免学号相同

    }catch(IOException e){

    e.printStackTrace();

    }finally{

    try{

    if(in != null)              //关闭文件

    in.close();

    else

    in = null;

    }catch(IOException e){

    e.printStackTrace();

    }

    }  

   

         if(b == 1)

            continue;

            else

            break;

    }

   

    System.out.println("姓名:");  

    String name = input.next();

       

    System.out.println("班级");  

    String stuclass = input.next();  

     

    while(true){

        System.out.println("邮箱:");

        email = input.next();

        String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

                 Pattern regex = Pattern.compile(check);     //指定为字符串的正则表达式必须首先被编译为此类的实例

                 Matcher matcher = regex.matcher(email);     //匹配判断邮箱格式

        if(matcher.matches()==true){

        break;

        }

        else

        System.out.println("输入错误,请重新输入");

    }

   

        Student stu = new Student(id,name,stuclass,email);

   

    while(true){

    System.out.println("数学:");  

    Math = input.next();  

    System.out.println("评价:");

    estimath = input.next();

    try{

    if(Float.parseFloat(Math) >= 0 && Float.parseFloat(Math) <=100){  

    Course course1 = new Course("数学",Math,estimath);  

    stu.getCourse().add(course1);

      break;

    }

   

    else

    System.out.println("输入有误,请重新输入");   

    }catch(NumberFormatException e){

    System.out.println("输入错误,请输入数字");//捕抓输入的内容不能转换成数字时的异常

    }

    }

   

    while(true){

    System.out.println("英语:");  

    English = input.next();

    System.out.println("评价:");

estimath = input.next();

    try{

    if(Float.parseFloat(English) >= 0 && Float.parseFloat(English) <=100){  

    Course course1 = new Course("英语",English,estimath); 

    stu.getCourse().add(course1);

    break;

    }

    else

    System.out.println("输入有误,请重新输入"); 

    }catch(NumberFormatException e){

    System.out.println("输入错误,请输入数字");//捕抓输入的内容不能转换成数字时的异常

    }

    }

   

    while(true){

    System.out.println("物理:");  

     Physics = input.next();

     System.out.println("评价:");

  estimath = input.next();

     try{

    if(Float.parseFloat(Physics) >= 0 && Float.parseFloat(Physics) <=100){

    Course course1 = new Course("物理",Physics,estimath); 

    stu.getCourse().add(course1);

    break;

    }

    else

    System.out.println("输入有误,请重新输入");  

     }catch(NumberFormatException e){

     System.out.println("输入错误,请输入数字");//捕抓输入的内容不能转换成数字时的异常  

     }

    }


          ReadAndWrite wri = new ReadAndWrite();

     wri.write(stu);

      }      

    System.out.println("添加成功");

      Menu menu = new Menu();

       menu.teacherGetIn();

}

public void selectStuInformation(){

   Student us = null;

   ObjectInputStream in = null;

   try{

   System.out.println("请输入需要查询学生的学号或姓名");

   String snum = input.next();

   in = new ObjectInputStream(new FileInputStream(stuInformation));

   while(true){

   us = (Student) in.readObject();

   if(snum.equals(us.getId()) || snum.equals(us.getName())){

   System.out.println("学号:"+us.getId()+"\n姓名:"+us.getName()+"\n班级:"+us.getStuclass()+"\n邮箱:"+us.getEmail());

   Iterator<Course> ite = us.getCourse().iterator();     //set容器的迭代器

           while(ite.hasNext()){          //遍历迭代器里的元素

           Course cou = ite.next();      

           System.out.print(cou.getSubjectName());    

           System.out.print(":"+cou.getMark());

           System.out.println("  "+cou.getEstimate());

           }

   break;

   }

   }

   }catch(ClassNotFoundException e){

e.printStackTrace();

}catch(EOFException e){

   System.out.println("该学生不存在");

   try{

   if(in != null)

   in.close();

   else 

   in = null;

   }catch(IOException e1){

   e1.printStackTrace();

   }

   Menu menu = new Menu();

       menu.teacherGetIn();

   }catch(IOException e){

   e.printStackTrace();

   }finally{

   try{

   if(in != null)

   in.close();

   else 

   in = null;

   }catch(IOException e1){

   e1.printStackTrace();

   }

   }

   

  Menu menu = new Menu();

       menu.teacherGetIn();

}

public void selectClassInformation(){

Student us = null;

    ObjectInputStream in = null;

    try{

    System.out.println("请输入需要查询学生的班级");

    String stuclass = input.next();

    in = new ObjectInputStream(new FileInputStream(stuInformation));

    while(true){

    us = (Student) in.readObject();

    if(stuclass.equals(us.getStuclass())){

    System.out.println("学号:"+us.getId()+"\n姓名:"+us.getName()+"\n班级:"+us.getStuclass()+"\n邮箱:"+us.getEmail());

    Iterator<Course> ite = us.getCourse().iterator();     

           while(ite.hasNext()){          

           Course cou = ite.next();      

           System.out.print(cou.getSubjectName());    

           System.out.print(":"+cou.getMark());

           System.out.println("  "+cou.getEstimate());

           }    

    }

    }

    }catch(ClassNotFoundException e){

e.printStackTrace();

}catch(EOFException e){

    try{

    if(in != null)

    in.close();

    else 

    in = null;

    }catch(IOException e1){

    e1.printStackTrace();

    }

    Menu menu = new Menu();

       menu.teacherGetIn();

    }catch(IOException e){

    e.printStackTrace();

    }finally{

    try{

    if(in != null)

    in.close();

    else 

    in = null;

    }catch(IOException e1){

    e1.printStackTrace();

    }

}

}

public void selectSubjectInformation(){

Student us = null;

    ObjectInputStream in = null;

    try{

    System.out.println("请输入需要查询学生的学号或姓名");

    String snum = input.next();

    System.out.println("请输入查询的科目名称");

    String subject = input.next();

    in = new ObjectInputStream(new FileInputStream(stuInformation));

    while(true){

    us = (Student) in.readObject();

    if(snum.equals(us.getId()) || snum.equals(us.getName())){    

    Iterator<Course> ite = us.getCourse().iterator();     

           while(ite.hasNext()){          

           Course cou = ite.next();      

                      if(subject.equals(cou.getSubjectName()))

                      {

                      System.out.println(cou.getSubjectName()+"成绩");

                      System.out.println(cou.getMark());

                      System.out.println("评价:"+cou.getEstimate());

                      break;

                      }

           }  

    break;

    }

    }

    }catch(ClassNotFoundException e){

e.printStackTrace();

    }catch(EOFException e){

    System.out.println("该学生不存在");

    try{

    if(in != null)

    in.close();

    else 

    in = null;

    }catch(IOException e1){

    e1.printStackTrace();

    }

    Menu menu = new Menu();

       menu.teacherGetIn();

    }catch(IOException e){

    e.printStackTrace();

    }finally{

    try{

    if(in != null)

    in.close();

    else 

    in = null;

    }catch(IOException e1){

    e1.printStackTrace();

    }

    }

   

   Menu menu = new Menu();

       menu.teacherGetIn();

 }

public void deleteStuInformation() {   

System.out.println("请输入需要删除的学生学号"); 

String stnum = input.next();

ReadAndWrite raw = new ReadAndWrite();

raw.readAndWrite(stnum);

System.out.println("删除成功");

 Menu menu = new Menu();

       menu.teacherGetIn();

}

 

public void changeStuInformation(){

System.out.println("请输入需要修改的学生学号"); 

String stnum = input.next();

ReadAndWrite raw = new ReadAndWrite();

raw.readAndWrite(stnum);

System.out.println("请输入修改后的信息");

System.out.println("姓名:");  

String name = input.next();

   

System.out.println("班级:");  

String stuclass = input.next();  


while(true){

    System.out.println("邮箱:");

    email = input.next();

    String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

             Pattern regex = Pattern.compile(check);

             Matcher matcher = regex.matcher(email);

    if(matcher.matches()==true){

    break;

    }

    else

    System.out.println("输入错误,请重新输入");

}

Student stu = new Student(stnum,name,stuclass,email);

while(true){

    System.out.println("数学:");  

    Math = input.next();

    System.out.println("评价:");

    estimath = input.next();

    try{

    if(Float.parseFloat(Math) >= 0 && Float.parseFloat(Math) <=100){  

    Course course1 = new Course("数学",Math,estimath);  

    stu.getCourse().add(course1);   

      break;

    }

    else

    System.out.println("输入错误,请重新输入");   

    }catch(NumberFormatException e){

    System.out.println("输入错误,请输入数字");

    }

    }

    while(true){

    System.out.println("英语:");  

    English = input.next();

    System.out.println("评价:");

estimath = input.next();

     try{

    if(Float.parseFloat(English) >= 0 && Float.parseFloat(English) <=100){  

    Course course1 = new Course("英语",English,estimath);  

    stu.getCourse().add(course1);

       break;

    }

    else

    System.out.println("输入错误,请重新输入");  

     }catch(NumberFormatException e){

     System.out.println("输入错误,请输入数字"); 

     }

    }

   

    while(true){

    System.out.println("物理");

     Physics = input.next();   

     System.out.println("评价:");

  estimath = input.next();

     try{

    if(Float.parseFloat(Physics) >= 0 && Float.parseFloat(Physics) <=100){

    Course course1 = new Course("物理",Physics,estimath);  

    stu.getCourse().add(course1);

    break;

    }

    else

    System.out.println("输入错误,请重新输入");  

     }catch(NumberFormatException e){

     System.out.println("输入错误,请输入数字");   

     }

    }

   

 ReadAndWrite wri = new ReadAndWrite();

     wri.write(stu);

System.out.println("修改成功");

Menu menu = new Menu();

     menu.teacherGetIn();    

}

}

管理员功能:

package com.xujulong.www.po;


import java.io.BufferedReader;

import java.io.EOFException;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.ObjectInputStream;

import java.util.Iterator;

import java.util.Scanner;

import java.util.regex.Matcher;

import java.util.regex.Pattern;


import com.xujulong.www.view.Menu;

import com.xujulong.www.dao.ReadAndWrite;

import com.xujulong.www.po.Course;

import com.xujulong.www.po.Student;


public class ManagerChangeStudent {

Scanner input;

private String id;

private String email;

private String Math;

private String English;

private String Physics;

//private String subject;

private String estimath;

private File stuInformation;

private BufferedReader br;

public ManagerChangeStudent(){

input = new Scanner(System.in);

stuInformation = new File("stuInformation.txt");

br = new BufferedReader(new InputStreamReader(System.in));    //创建一个输入缓冲区的缓冲字符输入流


}

     

public void addStuInformation() {


Student us = null;

    ObjectInputStream in = null;

   

    System.out.println("请输入要添加学生的个数");

    int m = 0;

    boolean f = false; 

    do{

   try{

   m = Integer.parseInt(br.readLine());       //判断用户输入的是否是数字

        f =true;

   }catch(NumberFormatException e){

   System.out.println("输入错误,请重新输入数字");

   }catch(IOException e){

   e.printStackTrace();

   }

    }while(f == false);

   

    for(int i = 1;i <= m;i++){                     //根据用户输入的个数循环m次

    System.out.println("这是第"+i+"个学生的信息");    

    while(true){  

    int b = 0;  

    System.out.println("学号:");  

    id = input.next();    

    try{    

    in = new ObjectInputStream(new FileInputStream(stuInformation));

    while(true){    

    us = (Student) in.readObject();

    if(id.equals(us.getId())){

    System.out.println("该学号已被占用");      //避免相同学号

    b = 1;

    break;

    }        

    }

    }catch(ClassNotFoundException e){

    e.printStackTrace();

    }catch(EOFException e){  

    System.out.println("该学号能用");  

    }catch(IOException e){

    e.printStackTrace();

    }finally{

    try{

    if(in != null)                //关闭文件

    in.close();

    else

    in = null;

    }catch(IOException e){

    e.printStackTrace();

    }

    }  

   

         if(b == 1)           //当b == 1时证明学号被占用,所以继续输入学号

            continue;

            else

            break;                //当b != 1时跳出循环

    }

   

    System.out.println("姓名:");  

    String name = input.next();

       

    System.out.println("班级:");  

    String stuclass = input.next();  

     

    while(true){

        System.out.println("邮箱:");

        email = input.next();

        String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

                 Pattern regex = Pattern.compile(check);  //指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象     

                 Matcher matcher = regex.matcher(email);        //匹配判断邮箱格式

        if(matcher.matches()==true){

        break;

        }

        else

        System.out.println("输入错误,请重新输入");

    }

   

        Student stu = new Student(id,name,stuclass,email);

        

       System.out.println("科目为数英物还是自定义?");

  System.out.println("1---数英物");        //管理员可以选择增删该学生的科目

  System.out.println("2---自定义");

  int num = 0 ;    

  boolean f1 = false;

  while(true){

  do{

  try{

  num = Integer.parseInt(br.readLine());

      f1 =true;

  }catch(NumberFormatException e){

  System.out.println("输入错误,请重新输入数字");

  }catch(IOException e){

  e.printStackTrace();

  }

  }while(f1 == false);

   

  if(num == 1){

    while(true){

    System.out.println("数学:");  

    Math = input.next();

    System.out.println("评价:");

    estimath = input.next();

    try{

    if(Float.parseFloat(Math) >= 0 && Float.parseFloat(Math) <=100){ //将String的内容转换为float,判断用户输入的是否只有数字

    Course course1 = new Course("数学",Math,estimath);  

    stu.getCourse().add(course1);

      break;

    }

   

    else

    System.out.println("输入有误,请重新输入");   

    }catch(NumberFormatException e){

    System.out.println("输入错误,请输入数字");//捕抓输入的内容不能转换成数字时的异常

    }

    }

   

    while(true){

    System.out.println("英语:");  

    English = input.next();

    System.out.println("评价:");

estimath = input.next();

    try{

    if(Float.parseFloat(English) >= 0 && Float.parseFloat(English) <=100){  

    Course course1 = new Course("英语",English,estimath); 

    stu.getCourse().add(course1);

    break;

    }

    else

    System.out.println("输入有误,请重新输入"); 

    }catch(NumberFormatException e){

    System.out.println("输入错误,请输入数字");//捕抓输入的内容不能转换成数字时的异常

    }

    }

   

    while(true){

    System.out.println("物理:");  

     Physics = input.next(); 

     System.out.println("评价:");

  estimath = input.next();

     try{

    if(Float.parseFloat(Physics) >= 0 && Float.parseFloat(Physics) <=100){

    Course course1 = new Course("物理",Physics,estimath); 

    stu.getCourse().add(course1);

    break;

    }

    else

    System.out.println("输入有误,请重新输入");  

     }catch(NumberFormatException e){

     System.out.println("输入错误,请输入数字");//捕抓输入的内容不能转换成数字时的异常  

     }

    }

    break;

  }

   

  else if(num == 2){

System.out.println("请输入学生科目总数");

int numb = 0;

   boolean f2 = false; 

  do{

  try{

  numb = Integer.parseInt(br.readLine());

         f2 =true;

  }catch(NumberFormatException e){

  System.out.println("输入错误,请重新输入数字");

  }catch(IOException e){

  e.printStackTrace();

  }

  }while(f2 == false);

   

   for(int j = 1;j <= numb;j++){

   while(true){

   System.out.println("这是第"+j+"门学科的信息");

       System.out.println("科目名称");

       String subjectname = input.next();

           System.out.println("科目分数");

           String subjectmark = input.next();

           System.out.println("评价:");

   estimath = input.next();

         try{

       if(Float.parseFloat(subjectmark) >= 0 && Float.parseFloat(subjectmark) <=100){

       Course course = new Course(subjectname,subjectmark,estimath); 

       stu.getCourse().add(course);

       break;

       }

       else

       System.out.println("输入有误,请重新输入");  

         }catch(NumberFormatException e){

         System.out.println("输入错误,请输入数字");//捕抓输入的内容不能转换成数字时的异常  

         }

       }

   }

   break;

   }

else

{

System.out.println("输入错误,请输入正确数字");

continue;

}

}        

  ReadAndWrite wri = new ReadAndWrite();

     wri.write(stu);                

}

    System.out.println("添加成功");

      Menu menu = new Menu();

       menu.managerGetIn();

}

public void selectStuInformation(){

   Student us = null;

   ObjectInputStream in = null;

   try{

   System.out.println("请输入需要查询学生的学号或姓名");

   String snum = input.next();

   in = new ObjectInputStream(new FileInputStream(stuInformation));

   while(true){

   us = (Student) in.readObject();

   if(snum.equals(us.getId()) || snum.equals(us.getName())){

   System.out.println("学号:"+us.getId()+"\n姓名:"+us.getName()+"\n班级:"+us.getStuclass()+"\n邮箱:"+us.getEmail());

   Iterator<Course> ite = us.getCourse().iterator();     

           while(ite.hasNext()){          

           Course cou = ite.next();      

           System.out.print(cou.getSubjectName());    

           System.out.print(":"+cou.getMark());

           System.out.println("  "+cou.getEstimate());

           }

   break;

   }

   }

   }catch(ClassNotFoundException e){     //捕抓 没有找到具有指定名称的类

e.printStackTrace();

}catch(EOFException e){       

   System.out.println("该学生不存在");      //捕抓到达流的末尾来判断没有该学生

   try{

   if(in != null)

   in.close();

   else 

   in = null;

   }catch(IOException e1){            //捕抓其它IO异常

   e1.printStackTrace();

   }

   Menu menu = new Menu();

       menu.managerGetIn();

   }catch(IOException e){

   e.printStackTrace();

   }finally{

   try{

   if(in != null)

   in.close();

   else 

   in = null;

   }catch(IOException e1){

   e1.printStackTrace();

   }

   }

   

  Menu menu = new Menu();

       menu.managerGetIn();

}

public void selectClassInformation(){

Student us = null;

    ObjectInputStream in = null;

    try{

    System.out.println("请输入需要查询学生的班级");

    String stuclass = input.next();

    in = new ObjectInputStream(new FileInputStream(stuInformation));

    while(true){

    us = (Student) in.readObject();

    if(stuclass.equals(us.getStuclass())){

    System.out.println("学号:"+us.getId()+"\n姓名:"+us.getName()+"\n班级:"+us.getStuclass()+"\n邮箱:"+us.getEmail());

    Iterator<Course> ite = us.getCourse().iterator();     

           while(ite.hasNext()){          

           Course cou = ite.next();      

           System.out.print(cou.getSubjectName());    

           System.out.println(":"+cou.getMark());

           System.out.println("  "+cou.getEstimate());

           }

    }

    }

    }catch(ClassNotFoundException e){

e.printStackTrace();

}catch(EOFException e){

    try{

    if(in != null)

    in.close();

    else 

    in = null;

    }catch(IOException e1){

    e1.printStackTrace();

    }

    Menu menu = new Menu();

       menu.teacherGetIn();

    }catch(IOException e){

    e.printStackTrace();

    }finally{

    try{

    if(in != null)

    in.close();

    else 

    in = null;

    }catch(IOException e1){

    e1.printStackTrace();

    }

    }

}

 

public void selectSubjectInformation(){

Student us = null;

    ObjectInputStream in = null;

    try{

    System.out.println("请输入需要查询学生的学号或姓名");

    String snum = input.next();

    System.out.println("请输入查询的科目名称");

    String subject = input.next();

    in = new ObjectInputStream(new FileInputStream(stuInformation));

    while(true){

    us = (Student) in.readObject();

    if(snum.equals(us.getId()) || snum.equals(us.getName())){    

    Iterator<Course> ite = us.getCourse().iterator();     

           while(ite.hasNext()){          

           Course cou = ite.next();      

                      if(subject.equals(cou.getSubjectName()))

                      {

                      System.out.println(cou.getSubjectName()+"成绩");

                      System.out.println(cou.getMark());

                      System.out.println("评价:"+cou.getEstimate());

                      break;

                      }

           }

    break;

    }

    }

    }catch(ClassNotFoundException e){

e.printStackTrace();

    }catch(EOFException e){

    System.out.println("该学生不存在");

    try{

    if(in != null)

    in.close();

    else 

    in = null;

    }catch(IOException e1){

    e1.printStackTrace();

    }

    Menu menu = new Menu();

       menu.teacherGetIn();

    }catch(IOException e){

    e.printStackTrace();

    }finally{

    try{

    if(in != null)

    in.close();

    else 

    in = null;

    }catch(IOException e1){

    e1.printStackTrace();

    }

    }

}

public void deleteStuInformation() {   

System.out.println("请输入需要删除的学生学号"); 

String stnum = input.next();

ReadAndWrite raw = new ReadAndWrite();

raw.readAndWrite(stnum);

System.out.println("删除成功");

 Menu menu = new Menu();

       menu.managerGetIn();

}

 

public void changeStuInformation(){

System.out.println("请输入需要修改的学生学号"); 

String stnum = input.next();

ReadAndWrite raw = new ReadAndWrite();

raw.readAndWrite(stnum);

System.out.println("请输入修改后的信息");

System.out.println("姓名");  

String name = input.next();

   

System.out.println("班级");  

String stuclass = input.next();  


while(true){

    System.out.println("邮箱");

    email = input.next();

    String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

             Pattern regex = Pattern.compile(check);

             Matcher matcher = regex.matcher(email);

    if(matcher.matches()==true){

    break;

    }

    else

    System.out.println("输入错误,请重新输入");

}

Student stu = new Student(stnum,name,stuclass,email);

System.out.println("科目为数英物还是自定义?");

System.out.println("1---数英物");        //管理员可以选择增删该学生的科目

System.out.println("2---自定义");

int num = 0 ;    

boolean f = false;

while(true){

do{

try{

num = Integer.parseInt(br.readLine());

    f =true;

}catch(NumberFormatException e){

System.out.println("输入错误,请重新输入数字");

}catch(IOException e){

e.printStackTrace();

}

}while(f == false);

 

if(num == 1){

while(true){

    System.out.println("数学:");  

    Math = input.next();

    System.out.println("评价:");

    estimath = input.next();

    try{

    if(Float.parseFloat(Math) >= 0 && Float.parseFloat(Math) <=100){  

    Course course1 = new Course("数学",Math,estimath);  

    stu.getCourse().add(course1);   

      break;

    }

    else

    System.out.println("输入错误,请重新输入");   

    }catch(NumberFormatException e){

    System.out.println("输入错误,请输入数字");

    }

    }

    while(true){

    System.out.println("英语:");  

    English = input.next();

    System.out.println("评价:");

estimath = input.next();

     try{

    if(Float.parseFloat(English) >= 0 && Float.parseFloat(English) <=100){  

    Course course1 = new Course("英语",English,estimath);  

    stu.getCourse().add(course1);

       break;

    }

    else

    System.out.println("输入错误,请重新输入");  

     }catch(NumberFormatException e){

     System.out.println("输入错误,请输入数字"); 

     }

    }

   

    while(true){

    System.out.println("物理:");

     Physics = input.next(); 

     System.out.println("评价:");

  estimath = input.next();

     try{

    if(Float.parseFloat(Physics) >= 0 && Float.parseFloat(Physics) <=100){

    Course course1 = new Course("物理",Physics,estimath);  

    stu.getCourse().add(course1);

    break;

    }

    else

    System.out.println("输入错误,请重新输入");  

     }catch(NumberFormatException e){

     System.out.println("输入错误,请输入数字");   

     }

    }

    break;

}

 

else if(num == 2){

System.out.println("请输入学生科目总数");

int m = 0;

   //jt.judgeType(m);

   boolean f1 = false; 

  do{

  try{

  m = Integer.parseInt(br.readLine());

      f1 =true;

  }catch(NumberFormatException e){

  System.out.println("输入错误,请重新输入数字");

  }catch(IOException e){

  e.printStackTrace();

  }

  }while(f1 == false);

   

   for(int i = 1;i <= m;i++){

   while(true){

   System.out.println("这是第"+i+"门学科的信息");

       System.out.println("科目名称");

       String subjectname = input.next();

           System.out.println("科目分数");

           String subjectmark = input.next();

           System.out.println("评价:");

   estimath = input.next();

         try{

       if(Float.parseFloat(subjectmark) >= 0 && Float.parseFloat(subjectmark) <=100){

       Course course = new Course(subjectname,subjectmark,estimath); 

       stu.getCourse().add(course);

       break;

       }

       else

       System.out.println("输入有误,请重新输入");  

         }catch(NumberFormatException e){

         System.out.println("输入错误,请输入数字");//捕抓输入的内容不能转换成数字时的异常  

         }

       }

   }

   break;

   }

else

{

System.out.println("输入错误,请输入正确数字");

continue;

}

}

   

 ReadAndWrite wri = new ReadAndWrite();

     wri.write(stu);

System.out.println("修改成功");

Menu menu = new Menu();

     menu.managerGetIn();    

}

 

}

dao包下的读写文件:

创建文件

package com.xujulong.www.dao;


import java.io.File;

import java.io.IOException;


import com.xujulong.www.po.Course;

import com.xujulong.www.po.Student;


public class CreatFile {

private File stuInformation;

public CreatFile(){ 

stuInformation = new File("stuInformation.txt");

}

/**

* 创建一个文件来储存学生信息

* 先录入了一个学生

* 用户可根据需要添加

*/

public void creatFile()  {

try{

    if(!stuInformation.exists()){

stuInformation.createNewFile();

Student stu1 = new Student("100","小明","网络1班","12345678@qq.com");

Course course1 = new Course("数学","80","优");   

    stu1.getCourse().add(course1);

  Course course2 = new Course("英语","80","优");   

    stu1.getCourse().add(course2);

  Course course3 = new Course("物理","80","优");   

    stu1.getCourse().add(course3);

ReadAndWrite wri = new ReadAndWrite();

wri.write(stu1);

}

}catch(IOException e){

e.printStackTrace();

}

}

}

重写ObjectOutputStream:

package com.xujulong.www.dao;


import java.io.IOException;

import java.io.ObjectOutputStream;

import java.io.OutputStream;


/**

 * 该类用于解决ObjectOutputStream追加对象时,读取错误的问题

 * 因为ObjectOutputStream建立后第一次写入一个对象时, 会在对象数据前写入一些标志的数据

 *因此写多一个方法判断是不是第一次写入一个文件,如果是向一个文件大小不为零的文件追加的话,就不需要在对象前写标志的数据

 */

public class MyObjectOutputStream extends ObjectOutputStream {


protected MyObjectOutputStream() throws IOException{   //第一次写文件时保留标志

super();

}

public MyObjectOutputStream(OutputStream out) throws IOException {  //追加时不需要标志

        super(out);  

    }          

     //      

    @Override  

    protected void writeStreamHeader()  {  


        return ;  

    }  


}

读和写:

package com.xujulong.www.dao;


import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.EOFException;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

import java.util.Iterator;


import com.xujulong.www.po.Course;

import com.xujulong.www.po.Student;

import com.xujulong.www.dao.MyObjectOutputStream;



public class ReadAndWrite {

private File stuInformation;

private File stuInformation1;

private OutputStream out1;

 

public ReadAndWrite(){

stuInformation = new File("stuInformation.txt");     

stuInformation1 = new File("stuInformation1.txt");   

try {

out1 = new FileOutputStream(stuInformation, true);

} catch (FileNotFoundException e) {

e.printStackTrace();

   }

public void write(Student stu) {

    ObjectOutputStream out = null;    

    try{  

if(stuInformation.length()<1)

out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(stuInformation)));  

else

   out = new MyObjectOutputStream(out1);

out.writeObject(stu); 

}catch(FileNotFoundException e){

e.printStackTrace();

}catch(IOException e){

e.printStackTrace();

}finally{           //关闭文件

try{

if(out != null)

   out.close();

else 

out = null;

out1.close();

}catch(IOException e){

e.printStackTrace();

}

    }

}

/**

* 把除了要删除或修改的学生之外的所有学生复制到另一个文件

* 再把原文件删除

* 把复制文件更名为原文件

* @param num

*/

public void readAndWrite(String num)  {

Student stu = null;

ObjectInputStream in = null;

ObjectOutputStream out = null;

try{

in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(stuInformation)));

if(stuInformation1.length()<1)

    out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(stuInformation1)));  

    else

       out = new MyObjectOutputStream(out1);

while(true)

   {

   stu = (Student) in.readObject();  

   if(stu.getId().equals(num)){

  System.out.println("该学生信息为");

System.out.println("学号:"+stu.getId()+"\n姓名:"+stu.getName()+"\n班级:"+stu.getStuclass()+"\n邮箱:"+stu.getEmail());

Iterator<Course> ite = stu.getCourse().iterator();     

       while(ite.hasNext()){          

       Course cou = ite.next();      

       System.out.print(cou.getSubjectName());    

       System.out.println(":"+cou.getMark());

       System.out.println("评价:"+cou.getEstimate());

       }

   continue;

   }

   out.writeObject(stu);

   }

  } catch (FileNotFoundException e) {

   e.printStackTrace();

  } catch(ClassNotFoundException e){

  e.printStackTrace();  

}catch(EOFException e){


  }catch (IOException e) 

  {

   e.printStackTrace();

  }

  finally{            //把输入流文件和输出流文件关闭

  try{

  if(in != null)

   in.close();

  else

   in = null;

  if(out != null)

   out.close();

  else

  out = null;

   out1.close();

  }catch(IOException e){

  e.printStackTrace();

  }

  }

this.stuInformation.delete();

this.stuInformation1.renameTo(new File("stuinformation.txt"));

}

}


service包下:

功能选择:

package com.xujulong.www.service;


import com.xujulong.www.po.TeacherChangeStudent;

import com.xujulong.www.po.ManagerChangeStudent;

import com.xujulong.www.view.Menu;


public class ChooseFunction {

/**

* 不同用户有不同权限,所以要分开两个方法

* 判断用户要进行的功能

*/

   

   public void teacherchoose(int number){

  Menu menu = new Menu();

  TeacherChangeStudent change = new TeacherChangeStudent();

  

  if(number == 1 ){

change.addStuInformation();

}

else if(number == 2){

change.changeStuInformation();    

}

else if(number == 3){

change.deleteStuInformation();    

}

else if(number == 4){    

change.selectStuInformation();

}

else if (number == 5){

  change.selectClassInformation();  

}

else if(number == 6){

change.selectSubjectInformation();

}

else if(number == 7){

menu.show(); 

}

   }

   

   public void managerchoose(int number){

  Menu menu = new Menu();

  ManagerChangeStudent managerchange = new ManagerChangeStudent();

  

  if(number == 1 ){

managerchange.addStuInformation();

}

else if(number == 2){

managerchange.changeStuInformation();    

}

else if(number == 3){

managerchange.deleteStuInformation();    

}

if(number == 4){    

managerchange.selectStuInformation();

}

else if(number == 5){

managerchange.selectClassInformation();

}

else if(number == 6){

managerchange.selectSubjectInformation();

}

else if (number == 7){

    menu.show();    

}

   }

   

}


主函数(main函数):

package com.xujulong.www.service;


import com.xujulong.www.dao.CreatFile;

import com.xujulong.www.view.Menu;


public class Test {


public static void main(String[] args) {

   CreatFile creat = new CreatFile();

   creat.creatFile();     

    Menu menu = new Menu();  

    menu.show();   

}

   

}


本文出自 “11828641” 博客,请务必保留此出处http://11838641.blog.51cto.com/11828641/1813922

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该学生成绩信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级。一个年级有多门课程(语文、数学、外语等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;老师选择自己这门课程为该课程的学生登记成绩。老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;学生可以查看班级其他同学的信息(可以看成是班级的同学录)。 考试分为两种,一种是年级统考,一种是平时考试。年级统考需要管理员事先添加一次年级统考,考试成绩出来后,老师进入系统选择该次考试为学生登记成绩。平时考试则是班级平时的考试,老师添加考试信息,登记成绩。成绩统计分析则是针对年级统考进行分析,主要涉及各学科分数名次,总分名次。 技术实现 系统环境:Windows开发工具:IDEAJava版本:JDK 1.8服务器:Tomcat 1.8数据库:MySQL 5.X系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Html+Css+Ajax 系统功能系统主要分为三种用户角色,分别是管理员、老师以及学生,其具体功能如下: - 管理员   学生信息管理、教师信息管理、年级信息管理、班级信息管理、课程信息管理、考试信息管理,系统参数设置 - 老师   教学管理、教师个人信息维护、教师通讯录管理 - 学生考试成绩查询、学生通讯录、学生个人信息维护 运行截图 登录界面: 管理员界面: 考试列表:  成绩统计: 学生信息管理: 教师信息管理: 年级、班级信息管理:  系统设置: 教师界面:  成绩登记:  教师通讯录: 个人信息:  学生界面: 学生成绩查询: 班级通讯录: 学生个人信息:              

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值