Java实现学生选课管理系统
作者:四原色 时间:2023-04-12 20:00:16
本文实例为大家分享了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);
// }
// }
}
来源:https://blog.csdn.net/qq_44140450/article/details/111396678
标签:Java,选课,管理系统
0
投稿
猜你喜欢
android判断手机是否安装地图应用实现跳转到该地图应用
2022-11-30 11:01:45
SpringCloud Alibaba 基本开发框架搭建过程
2023-04-21 03:23:43
Spring Cloud Ribbon的踩坑记录与原理详析
2023-02-06 04:06:55
Android提醒微技巧你真的了解Dialog、Toast和Snackbar吗
2023-03-08 14:15:44
Java毕业设计实战之药店信息管理系统的实现
2022-03-07 11:55:37
C#实现快递api接口调用方法
2022-06-15 01:31:58
Java如何把int类型转换成byte
2023-03-13 11:12:39
eclipse+maven+spring mvc项目基本搭建过程
2022-12-18 03:50:52
详解JDK中ExecutorService与Callable和Future对线程的支持
2023-11-25 07:39:07
es(elasticsearch)整合SpringCloud(SpringBoot)搭建教程详解
2023-12-06 07:34:14
Java的MyBatis框架中实现多表连接查询和查询结果分页
2022-10-29 08:49:21
Mybatis SQL运行流程源码详解
2023-04-27 12:46:27
windows下C#定时管理器框架Task.MainForm详解
2021-06-06 13:59:06
android自定义view制作圆形进度条效果
2021-09-14 08:05:54
java实现邮件发送
2022-06-03 02:48:20
Java中的异常处理用法及其架构和使用建议
2023-02-05 21:27:16
Java中websocket消息推送的实现代码
2023-06-02 09:26:56
C#使用NPOI设置Excel下拉选项
2022-11-28 07:05:39
自定义spring mvc的json视图实现思路解析
2023-03-12 12:04:44
C#线程倒计时器源码分享
2023-08-16 07:23:36