Java实现学生选课管理系统

本文实例为大家分享了Java实现学生选课管理系统的具体代码,供大家参考,具体内容如下

需求分析

本数据库的用户主要是学生,通过对用户需求的收集和分析,获得用户对数据库的如下要求。

1.信息需求

1.学生信息:学号,姓名,性别,专业
2.登陆信息:账号,密码
3.课程信息:课程号,课程名,选课人数,选课容量,任课老师
4.选课信息:课程号,学生学号
5.登录信息:账号、密码

2.功能需求

1.系统为学生建立登陆信息,学生进入系统前需要身份验证,用户名、密码输入正确后方可进入系统。
2.在系统中,用户可以在界面中看到本人的基本信息,也可以对课程信息表和个人选课信息表进行查看、以及选课。
3.使用数据库存储读取数据内容

3.系统需求

学生信息管理系统采用的编译环境是IntelliJ IDEA,编程语言是Java,使用用MySQL数据库

定义数据库 CREATE DATABASE Couse ON PRIMARY(NAME = Couse, FILENAME = 'D:\JAVA\courseDesign_2020JAVA' , SIZE = 2MB, FILEGROWTH = 10%,FILERROWHT=4MB)  CREATE TABLE user (     id char(25) IDENTITY  NOT NULL PRIMARY KEY,     name char(25)  NOT NULL ,     sex char(2) CHECK (性别 IN('男','女')) , profess char(30)  NULL , ) CREATE TABLE subject (     subjectId varchar(20)  NOT NULL PRIMARY KEY ,     name varchar(25)  NOT NULL ,     Noss int  NOT NULL , capacity int   NULL , teacher varchar(25)   NULL , ) CREATE TABLE PickCouse (     stuId char(25),     couseId char(25)  NOT NULL , )  CREATE TABLE login (     Id char(25)  NOT NULL PRIMARY KEY,     pwd char(25)  NOT NULL , )  设计项目结构

1.项目包结构

2.项目UML类图

运行效果展示

1.登录

2.查看全部课程信息

3.查看个人选课信息

4.学生选课

开放源代码

1、学生用户信息类:

package StuPickCouse_Dos.PickCouse; public class User {     String id;     String pwd;     String name;     String sex;     String pross;//专业     public User(String id,String pwd){         this.id=id;         this.pwd=pwd;     }     public User(String id, String name, String sex, String pross) {         this.id = id;         this.name = name;         this.sex = sex;         this.pross = pross;     }     public String getPwd() {         return pwd;     }     public void setPwd(String pwd) {         this.pwd = pwd;     }     public User(){}     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 getSex() {         return sex;     }     public void setSex(String sex) {         this.sex = sex;     }     public String getPross() {         return pross;     }     public void setPross(String pross) {         this.pross = pross;     }     @Override     public String toString() {         return "User{" +                 "id='" + id + '\'' +                 ", name='" + name + '\'' +                 ", sex='" + sex + '\'' +                 ", pross='" + pross + '\'' +                 '}';     } }

2、课程信息类:

package StuPickCouse_Dos.PickCouse; public class Couse {     String id;     String name;     String num;//选课人数     String capacity;//容量     String teacher;    public String getTeacher() {         return teacher;     }     public void setTeacher(String teacher) {         this.teacher = teacher;     }     public Couse(String id, String name, String num, String capacity, String teacher) {         this.id = id;         this.name = name;         this.num = num;         this.capacity = capacity;         this.teacher = teacher;     }     public Couse(String id){this.id=id;}     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 getNum() {         return num;     }     public void setNum(String num) {         this.num = num;     }     public String getCapacity() {         return capacity;     }     public void setCapacity(String capacity) {         this.capacity = capacity;     }     @Override     public String toString() {             return id +"    "+ name +"    "+ num+ "/" + capacity+"    " +teacher;     } }

3、学生数据库操作类

package StuPickCouse_Dos.PickMysql; import StuPickCouse_Dos.PickCouse.User; import javax.swing.*; import java.sql.*; public class UserSql {     Connection con=null;     Statement sql;     ResultSet rs;     public UserSql(){}     void star(){         String url="jdbc:mysql://localhost:3306/couse?user=root&password=&useSSL=true&useUnicode=true&characterEncoding=utf-8";         String user="root";         String passKey="";         try {             Class.forName("com.mysql.jdbc.Driver");             con= DriverManager.getConnection(url,user,passKey);         }         catch(SQLException e){             System.out.println(e);         }catch (ClassNotFoundException e) {             e.printStackTrace();         }     }     public User getUser(String id){         User user=new User();         star();         try {             sql=con.createStatement();         } catch (SQLException throwables) {             throwables.printStackTrace();         }         try {             rs=sql.executeQuery("select * from User where id="+id);             while(rs.next()){                 user.setId(id);                 user.setName(rs.getString(2));                 user.setSex(rs.getString(3));                 user.setPross(rs.getString(4));             }             rs.close();         } catch (SQLException throwables) {             throwables.printStackTrace();         }         return user;     }     public String findUser(String id){         String user="";         star();         try {             sql=con.createStatement();         } catch (SQLException throwables) { //            throwables.printStackTrace();             JOptionPane.showMessageDialog(null,                     "数据库无法连接!",                     "登录失败",                     JOptionPane.ERROR_MESSAGE);         }         try {             rs=sql.executeQuery("select pwd from Login where id="+id);             while(rs.next()){                 user=rs.getString(1);             }             rs.close();         } catch (SQLException throwables) {             throwables.printStackTrace();         }         return user.equals("")?null:user;     } }

4、课程数据库信息操作类:

package StuPickCouse_Dos.PickMysql; import StuPickCouse_Dos.PickCouse.Couse; import StuPickCouse_Dos.PickCouse.User; import java.sql.*; import java.util.ArrayList; public class CouseSql {     User user;     public CouseSql(User user){         this.user=user;     }     Connection con=null;     Statement sql;     ResultSet rs;     void star(){         String url="jdbc:mysql://localhost:3306/couse?user=root&password=&useSSL=true&useUnicode=true&characterEncoding=utf-8";         String user="root";         String passKey="";         try {             Class.forName("com.mysql.jdbc.Driver");             con= DriverManager.getConnection(url,user,passKey);         }         catch(SQLException e){             System.out.println(e);         }catch (ClassNotFoundException e) {             e.printStackTrace();         }     }     public ArrayList<Couse> findCouse(String sqlLine){         ArrayList<Couse> couses=new ArrayList<>();         star();         try {             sql=con.createStatement();//         } catch (SQLException throwables) {             throwables.printStackTrace();         }         try {             rs = sql.executeQuery(sqlLine);             while (rs.next()) {                 couses.add(new Couse(rs.getString(1),                         rs.getString(2),                         rs.getString(3),                         rs.getString(4),                         rs.getString(5)                 ));             }             con.close();         } catch (SQLException throwables) {             throwables.printStackTrace();         }         return couses;     }     public boolean isMyCouse(String sqlLine){         boolean couses=false;         star();         try {             sql=con.createStatement();//         } catch (SQLException throwables) {             throwables.printStackTrace();         }         try {             rs = sql.executeQuery(sqlLine);             while (rs.next()) {                 couses=true;             }             con.close();         } catch (SQLException throwables) {             throwables.printStackTrace();         }         return couses;     }     public void chioseCouse(Couse couse) {         star();         try {             sql=con.createStatement();//         } catch (SQLException throwables) {             throwables.printStackTrace();         }         try {             sql.executeUpdate("update Subject set Noss=Noss+1 where subjectId="+couse.getId());             sql.executeUpdate("INSERT INTO PickCouse VALUES ('"+this.user.getId()+"','"+couse.getId()+"')");             con.close();         } catch (SQLException throwables) {             throwables.printStackTrace();         }         System.out.println("====>添加成功!");     }     public void addCouse(String id,String name,int x1,int x2,String tec) throws Exception{         star();         sql=con.createStatement();         sql.executeUpdate("INSERT INTO Subject VALUES (\""+id+"\",\""+name+"\","+x1+","+x2+",\""+tec+"\")");         con.close();     } }

5、功能实现类:

package StuPickCouse_Dos; import StuPickCouse_Dos.PickCouse.Couse; import StuPickCouse_Dos.PickCouse.User; import StuPickCouse_Dos.PickMysql.CouseSql; import StuPickCouse_Dos.PickMysql.UserSql; import java.util.ArrayList; import java.util.Scanner; public class Operator {     User user;     CouseSql couseSql;     UserSql userSql;     ArrayList<Couse> couses = new ArrayList<>();     public void setUser(User user) {         this.user = user;     }     public Operator(){}     public Operator(User user) {         this.user = user;         couseSql=new CouseSql(user);         userSql=new UserSql();     }     public void findAllCouse(){         couses = couseSql.findCouse("select * from Subject");         for (int i = 0; i < couses.size(); i++)             System.out.println((i + 1) + "  " + couses.get(i).toString());     }     public void selectCouse(){         System.out.println("所有课程如下:");         ArrayList<Couse> couseICanChose=new ArrayList<>();         ArrayList<String> couseICanChoseId=new ArrayList<>();         for (int i = 0; i < couses.size(); i++){             System.out.print((i + 1) + "  " + couses.get(i).toString());             boolean tag=false,flage=false;             System.out.println( ( tag= ( ( !(flage=couseSql.isMyCouse("select * from PickCouse where stuId="+user.getId()+" and couseId="+couses.get(i).getId() )             )&& Integer.parseInt( couses.get(i).getCapacity() )                     >= Integer.parseInt( couses.get(i).getNum() ) ) ) )? "  可选": flage?"    已选":"   人员已满");             if(tag) {                 couseICanChose.add(couses.get(i));                 couseICanChoseId.add(couses.get(i).getId());             }         }         if(couseICanChose.size() < 1)             System.out.print("暂时没有可选的课程!");         else {             System.out.println("====》可选课程有:");             for (int i = 0; i < couseICanChose.size(); i++)                 System.out.println((i + 1) + "  " + couseICanChose.get(i).toString());             System.out.print("====>请输入选择的课程编号:");             String couse = "";             while(!couseICanChoseId.contains( couse = (new Scanner(System.in)).nextLine()))                 System.out.print("输入不在选择范围,请重新输入:");             couseSql.chioseCouse(new Couse(couse));         }     }     public void findMyCouse(){         shoeArrayList(couseSql.findCouse("select * from Subject where subjectId in (select couseId from PickCouse where stuId="+user.getId()+")"));     }     public static void shoeArrayList(ArrayList<Couse> item){         for (int i = 0; i < item.size(); i++)             System.out.println((i + 1) + "  " + item.get(i).toString());         System.out.print("Tip: 按任意键继续:");         (new Scanner(System.in)).next();     }     public boolean intoPwd(String pwd,String id){         int inputTimes=2;         while( !( userSql.findUser(id).equals((new Scanner(System.in)).nextLine()) )&&inputTimes>0)             System.out.print("![第"+(3-inputTimes)+"次输入]-密码输入错误:剩余输入机会"+(inputTimes--)+"\n请重新输入:");         return inputTimes>=0;     }     public int show(){         System.out.println("*****************************************");         System.out.println("*****************************************");         System.out.println("********   1)查看课程信息   **************");         System.out.println("********   2)选课           *************");         System.out.println("********   3)查看个人选课    *************");         System.out.println("*****************************************");         System.out.print("请输入选择:");         return (new Scanner(System.in)).nextInt();     } }

6、程序入口:

package StuPickCouse_Dos; import StuPickCouse_Dos.PickCouse.User; import StuPickCouse_Dos.PickMysql.UserSql; import java.util.Scanner; public class Demo_1 {     public static void main(String[] args) throws Exception {         System.out.println("*****************************************");         System.out.println("********   学生选课管理-登录   ***********");         System.out.println("*****************************************");         User user= new User();         System.out.print("===》请输入账号:");         String id="";         int inputTimes=1;         while(!(id=(new Scanner(System.in)).nextLine()).matches("[0-9]{9}"))             System.out.print("![第"+(inputTimes++)+"次输入]输入错误:用户账号为你的学号\n请重新输入:");         System.out.print("====>请输入密码:");         if((new Operator()).intoPwd("",(user=(new UserSql()).getUser(id)).getId())){             System.out.println("用户:"+user.getName()+",欢迎登录!");             while((inputTimes=(new Operator()).show())> 0 ) {                 switch (inputTimes) {                     case 1:(new Operator(user)).findAllCouse();break;                     case 2:(new Operator(user)).selectCouse();break;                     case 3:(new Operator(user)).findMyCouse();break; //                    case 99:addCouse(new CouseSql(user));break;                     default:return;                 }                 System.out.print("按任意键返回主菜单:");                 (new Scanner(System.in)).next();             }         }         else{             System.out.println("登录失败!请重新登录!");             main(args);         }     } //    public static void addCouse(CouseSql sql) throws Exception{ //        System.out.print("1)请输入课程编号:"); //        String id=(new Scanner(System.in)).nextLine(); //        System.out.print("2)请输入课程名称:"); //        String name=(new Scanner(System.in)).nextLine(); //        System.out.print("3)请输入已选课人数:"); //        int noss=(new Scanner(System.in)).nextInt(); //        System.out.print("4)请输入课程选课容量:"); //        int cap=(new Scanner(System.in)).nextInt(); //        System.out.print("5)请输入课程教师姓名:"); //        String tec=(new Scanner(System.in)).nextLine(); //        sql.addCouse(id,name,noss,cap,tec); //        System.out.println("======》添加成功!"); //        System.out.print("继续输入请按1,退出按其他键:"); //        if((new Scanner(System.in)).nextLine()=="1"){ //            addCouse(sql); //        } //    } }

推荐阅读