基于java的选课系统课程设计_java学生管理系统界面设计

基于java的选课系统课程设计_java学生管理系统界面设计Java课程设计_学生选课管理系统需求分析本数据库的用户主要是学生,通过对用户需求的收集和分析,获得用户对数据库的如下要求。1.信息需求学生信息:学号,姓名,性别,专业登陆信息:账号,密码课程信息:课程号,课程名,选课人数,选课容量,任课老师选课信息:课程号,学生学号登录信息:账号、密码2.功能需求系统为学生建立登陆信息,学生进入系统前需要身份验证,用户名、密码输入正确后方可进入系统。在系统中,用户可以在界面中看到本人的基本信息,也可以对课程信息表和个人选课信息表进行查看、以及

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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. 登录

在这里插入图片描述

  1. 查看全部课程信息

在这里插入图片描述

  1. 查看个人选课信息

在这里插入图片描述

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

点赞加关注获取跟多

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183787.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • pycharm实现基于mysql关键词检索问题

    pycharm实现基于mysql关键词检索问题       后端是使用pycharm写的       单个关键词的检索实现如下:defadProQuery(): content=request.form.get(‘ad_proSearch’)#需要查询的内容ifcontentisNone:content=””pros=Cy_regist.query.f

  • 关于安装QCAT/QXDM异常的问题

    关于安装QCAT/QXDM异常的问题第一种情况安装之后报licenseerror原因:可能安装时出错;解决:卸载QXDM和QCAT之后,删除注册表的信息,删除C盘文件夹内容:注册表位置:HKEY_LOCAL_MACHINE\SOFTWARE\Qualcomm\QIKC盘内容位置:C:\ProgramData\Qualcomm\QIKC:\ProgramFiles(x86)\Qualcomm\QIKTool…

  • HashMap的数据结构

    前提:主要数据结构:数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么我…

  • Spring的contextConfigLocation

    Spring的contextConfigLocationspring如何使用多个xml配置文件1,在web.xml中定义contextConfigLocation参数.spring会使用这个参数加载.所有逗号分割的xml.如果没有这个参数,spring默认加载web-inf/applicationContext.xml文件.例如:<context-param><param-name>conte…

  • shell:修改变更值[通俗易懂]

    shell:修改变更值[通俗易懂]#catconfd-general-config.confETCD_SERVER_HOSTIP=192.168.3.103ETCD_SERVER_PORT=2379innernetworksegement=192.168.3pgconn=10.47.245.110:13306,10.47.245.110:23306kafkaconn=10.47.223.223:9090,10…

  • Ubuntu 16.04 下安装VMware Tools(三行命令搞定,亲测好使)

    Ubuntu 16.04 下安装VMware Tools(三行命令搞定,亲测好使)Ubuntu16.04下安装VMwareTools(三行命令搞定,亲测好使):第一行命令:sudoapt-getupgrate第二行命令:sudoapt-getinstallopen-vm-tools-desktop-y第三行命令:sudoreboot如果觉得好使,请点赞;…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号