java选课系统

来源:互联网 编辑: 张倩 手机版

Java上机报告

姓名:曾伦 学号:0811620126

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.*;

import javax.swing.*;

import javax.swing.table.DefaultTableModel;

import school.schoolPicture.JdbcUtil;

public class StudentChooseCourse extends JFrame implements ActionListener {

JTextField jtfSearch = new JTextField(11);

String[] columnNames = new String[] { \课程ID\课程名\学时\学分\学期\性质\

DefaultTableModel dtmSearch = new DefaultTableModel(columnNames, 27);

JTable jtSearch = new JTable(dtmSearch);

JScrollPane jspSearch = new JScrollPane(jtSearch);

JComboBox jcbSearch = new JComboBox();

JTextField jtfSelectedCourse = new JTextField(10);

Connection con = null;

PreparedStatement ps = null;

ResultSet rs = null;

private static String usrName;

private static String passwrd;

//在构造方法中添加两个参数。以便在\提交\时,将学生的身份连同所选的课程,一同记录在学生选课表中。

public StudentChooseCourse(String usrName, String passwrd) {

createSearchCourse();

this.usrName = usrName;

this.passwrd = passwrd;

}

public String getUsrName() {

return usrName;

}

public void setUsrName(String usrName) {

this.usrName = usrName;

}

public String getPasswrd() {

return passwrd;

}

public void setPasswrd(String passwrd) {

this.passwrd = passwrd;

}

//根据用户的时间,做出相应的反映

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();

//清空结果显示区中的内容,如果有的话。

if (\查询\

int k = 1;

while (k < 10) {

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

jtSearch.setValueAt(null, k - 1, i - 1);

}

k++;

}

//调用下面的这个方法,在数据库中进行查找,并将结果显示在表格中。

searchAvailableCourse();

} else if (\提交\

//processBeforeCommit()对用户选课操作进行有效性检验;

//剔除无效操作:如输入无效的课程号,或已经选择了某一课程,已经选满的6学分等各种情况

boolean effect=processBeforeCommit();

//如果课程存在,且该学生具有选择该课程的资格,即effect为true,进入正式提交程序(tryCommit())

if(effect==true)

{tryCommit();}

}

}

//对用户选课操作进行有效性检验;

public boolean processBeforeCommit(){

//清空原结果显示区中的内容,如果有的话。

int k = 1;

while (k < 10) {

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

jtSearch.setValueAt(null, k - 1, i - 1);

}

k++;

}

//取得用户输入的课程号

String userInput = jtfSelectedCourse.getText().toString().trim()

.toLowerCase();

//无效操作1:在数据库中的coursexx表中查询该课程号。如果不存在该课程,给出提示。

String sql = \

boolean flagCourseExist = false;

try {

ps = con.prepareStatement(sql);

ps.setString(1, userInput);

rs = ps.executeQuery();

flagCourseExist = rs.next();

} catch (Exception eC) {

eC.printStackTrace();

}

if (!flagCourseExist) {

JOptionPane.showMessageDialog(null, \该课程不存在,请重新输入\

return false;

}

//判断该学生选修课已选课程的总学分是否小于6;

//无效操作2:如果已有选课记录,并且总学分大于6学分,该学生不能在选了。

PreparedStatement ps = null;

sql = \

+ \

+ \

+ \

String grade =null;

try {

ps = con.prepareStatement(sql);

ps.setString(1, usrName);

rs = ps.executeQuery();

while (rs.next()) {

grade = rs.getString(1);

if(grade==null){grade=\

}

} catch (Exception rrr) {

rrr.printStackTrace();

}

System.out.println(\总学分:\

if (Integer.parseInt(grade) > 6) {

JOptionPane.showMessageDialog(null, \你已经选满6学分,系统将退出\

this.setVisible(false);

return false;

}

//无效操作3:课程该学生已经选择了某课程,则不能再选该课程了。

sql = \

boolean flag = false;

try {

ps = con.prepareStatement(sql);

ps.setString(1, this.getUsrName());

ps.setString(2, userInput);

rs = ps.executeQuery();

flag = rs.next();

} catch (Exception eaa) {

eaa.printStackTrace();

}

if (flag) {

JOptionPane.showMessageDialog(null, \你已经选择了该课程。请另选课程\

return false;}

//如果以上无效操作都不存在,则返回true,意为这是一个准有效操作

return true;

}//对有效的提交操作的进行处理

public void tryCommit() {

// userInput为用户输入的课程ID.

String userInput = jtfSelectedCourse.getText().toString().trim()

.toLowerCase();

// if course still available(count// else if course not available,show Message to student.

PreparedStatement ps;

String sql = \

+ \

try {

ps = con.prepareStatement(sql);

// 取得学生ID或名字,将课程ID存入学生选课表choicesxx

ps.setString(1, userInput);

rs = ps.executeQuery();

ResultSetMetaData meta = rs.getMetaData();

int cols = meta.getColumnCount();

int RemainedCount = -1;

while (rs.next()) {

RemainedCount = rs.getInt(1);

System.out.println(\

}

//如果该课程还有选择的名额,提示单项选课操作成功。

if (RemainedCount > 0) {

// save studentId and courseId to student-course table.

// this.getUsrName();userInput

sql = \

ps = con.prepareStatement(sql);

ps.setString(1, this.getUsrName());

ps.setString(2, userInput);

ps.executeUpdate();

JOptionPane.showMessageDialog(null, \选课成功: \

+ \选了\还有 \

+ \人可以选该课程。\

// 更新课程中已选该课程的人数:即将可选该课程的人数减去1个人。

sql = \

ps = con.prepareStatement(sql);

ps.setString(1, userInput);

ps.executeUpdate();

con.commit();

//如果该课程已经没有选择名额,提示重新选课

}

} catch (Exception es) {

es.printStackTrace();

try {

con.rollback();

} catch (Exception ey) {

ey.printStackTrace();

}

}

}

//对用户查询课程信息,进行处理,并显示查询结果

public void searchAvailableCourse() {

// 让程序自动选择连接的是Oracle或SqlServer.

if (JDBCUtil.getConnection() != null) {

System.out.println(JDBCUtil.getConnection());

con = JDBCUtil.getConnection();

} else {

con = JdbcUtil.getConnection();

}

//userInput取得用户输入的信息,selectedItem取得用户选择的查询方式

String userInput = jtfSearch.getText().toString().trim().toLowerCase();

String selectedItem = jcbSearch.getSelectedItem().toString().trim();

System.out.println(\

System.out.println(\

String sql = null;

//按用户查询方式,如按课程名,课程ID或学时的查询进行处理;并在表格中实现结果

try {

if (\课程名\

sql = \

ps = con.prepareStatement(sql);

ps.setString(1, userInput);

} else if (\课程ID\

sql = \

ps = con.prepareStatement(sql);

ps.setString(1, userInput);

} else if (\学时\

sql = \

ps = con.prepareStatement(sql);

ps.setInt(1, Integer.parseInt(userInput));

} else if (\学分\

sql = \

ps = con.prepareStatement(sql);

ps.setInt(1, Integer.parseInt(userInput));

} else if (\学期\

sql = \

ps = con.prepareStatement(sql);

ps.setString(1, userInput);

}

System.out.println(sql);

rs = ps.executeQuery();

con.commit();

ResultSetMetaData meta = rs.getMetaData();

int cols = meta.getColumnCount();

String result = null;

int k = 1;

boolean flag = false;

//将查询结果以表格的形式显示出来

while (rs.next()) {

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

result = rs.getString(i);

System.out.println(result);

jtSearch.setValueAt(result, k - 1, i - 1);

}

k++;

flag = true;

}

//如果查询结果集为空,提示用户没有该课程

if (flag == false) {

JOptionPane.showMessageDialog(null, \该课程不存在,请重新输入\

return;

}

}

catch (Exception ex) {

ex.printStackTrace();

try {

con.rollback();

} catch (Exception er) {

er.printStackTrace();

}

}

//产生图形用户界面,以便用户操作

public void createSearchCourse() {

this.setLayout(new GridLayout(3, 1));

JPanel jp1 = new JPanel();

jp1.setLayout(new GridLayout(4, 1));

JPanel jp2 = new JPanel();

JPanel jp3 = new JPanel();

JPanel jp10 = new JPanel();

JPanel jp11 = new JPanel();

JPanel jp12 = new JPanel();

JPanel jp13 = new JPanel();

JLabel jlSearch = new JLabel(\学 生 选 课 系 统 \

jp11.add(jlSearch);

jcbSearch.addItem(new String(\课程名\

jcbSearch.addItem(new String(\课程ID\

jcbSearch.addItem(new String(\学时\

jcbSearch.addItem(new String(\学分\

jcbSearch.addItem(new String(\学期\

jp12.add(jtfSearch);

jp12.add(jcbSearch);

JButton jbOK = new JButton(\查询\

jbOK.addActionListener(this);

jbOK.setSize(90, 20);

jp13.add(jbOK);

jp1.add(jp10);

jp1.add(jp11);

jp1.add(jp12);

jp1.add(jp13);

jp2.add(jspSearch);

JLabel jlSelectedCourse = new JLabel(\请输入课程ID:\

JButton jbSelectedCourse = new JButton(\提交\

jbSelectedCourse.addActionListener(this);

jp3.add(jlSelectedCourse);

jp3.add(jtfSelectedCourse);

jp3.add(jbSelectedCourse);

this.add(jp1);

this.add(jp2);

this.add(jp3);

this.setVisible(true);

this.setSize(485, 600);

}

//当某学生有效登录后,启动程序(将学生的登录信息也传过来,以便保存选课操作时使用)

public static void main(String[] args) {

//String usrName = \

//String passwrd = \

new StudentChooseCourse(usrName, passwrd);

}

}//---以下为搭建学生选课系统的SQL脚本文件。只需运行一次,就可有完整的数据库表构和初始记录。

drop table registerXu;

create table registerXu (id varchar(20),userName varchar(20),passWord varchar(20),identify varchar(20));

insert into registerXu values('s001','xuliang','123','学生');

insert into registerXu values('s002','xuliang2','1234','学生');

insert into registerXu values('j001','jack','12345','学生');

insert into registerXu values('001','user','user','学生');

insert into registerXu values('z001','zlm','corejava','老师');

--String sql = \

--+ \

--table 2:Coursexx课程表

drop table Coursexx;

create table Coursexx(cno varchar(20) primary key,cname varchar(20),hour Int,

grade Int,term varchar(20),isNeed varchar(20), selectedCount Int ,Max Int);

insert into Coursexx values('c001','CoreJava',50,5,'201007','NoNecessary',0,50);

insert into Coursexx values('c002','XML',20,2,'201008','NoNecessary',0,40);

insert into Coursexx values('c003','HIBERNATE',20,4,'201008','NoNecessary',0,30);

insert into Coursexx values('c004','SQL',20,4,'201006','NoNecessary',0,5);

insert into Coursexx values('c005','JDBC',20,2,'201008','NoNecessary',0,3);

insert into Coursexx values('c006','AJAX',20,2,'201010','NoNecessary',0,1);

insert into Coursexx values('c007','JSP',100,8,'201009','NoNecessary',0,1

--sql = \

--table 3:学生表--

drop table studentxx;

create table studentxx(sid varchar(20),sname varchar(20) primary key,sex varchar(20),birthday varchar(20),

className varchar(20), image varchar(20));

insert into studentxx values('s001','xuliang','male','19901124','sd1003','good');

insert into studentxx values('s002','xuliang2','male','19851124','sd0910','good');

insert into studentxx values('j001','jack','male','19881124','sd1003','good');

insert into studentxx values('001','user','male','19901124','sd1005','good');

insert into studentxx values('s003','sisi','female','19880124','sd1007','good');

insert into studentxx values('as003','crystal','female','19880124','asd1007','good');

--table 4:choices学生选课表

drop table choicesxx;

create table choicesxx(

sname varchar(20) references studentxx(sname),cno varchar(20) references coursexx(cno));

//--判断某一个学生已经选的课程的总学分是否小于6分

//----------用户登录类 ---------------------------------------

//用途:验证用户是否具有登录系统的资格------------------------

package school;

import javax.swing.*;

import school.schoolPicture.JdbcUtil;

import java.sql.*;

import java.awt.*;

import java.awt.event.*;

public class Register implements ActionListener {

JFrame jf = new JFrame(\学生成绩管理与选课系统\

JTextField jtfUserName = new JTextField(10);

JPasswordField jpfPassWord = new JPasswordField(10);

JComboBox identify = new JComboBox();

//constructor

public Register() {

CreateRegisterGUI();

}

// deal with user action, when user check:\登录\取消\注册\

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();

if (str.equalsIgnoreCase(\登录\

//当用户点击登录时,调用以下方法去数据库做匹配

processLogin();

} else if (str.equalsIgnoreCase(\取消\

jtfUserName.setText(\

jpfPassWord.setText(\

} else if (str.equalsIgnoreCase(\注册\

new CreateLogin();

}

}

//当用户点击登录时,调用以下方法去数据库做匹配

public void processLogin() {

// create connection to the database.

Connection con = null;

// Connection con = JDBCUtil.getConnection();

//让程序自动连接相应的数据库,以避免连接数据库时频繁改动连接程序

if (JdbcUtil.class == null) {

//连接达内Oracle数据库

con = JdbcUtil.getConnection();

} else {

//连接本地SQLSERVER数据库

con = JDBCUtil.getConnection();

}

// write sql sentence

String usrName = jtfUserName.getText().trim();

String passwrd = new String(jpfPassWord.getPassword()).trim();

String ident = identify.getSelectedItem().toString().trim();

String sql = \

+ \

System.out.println(usrName + \

// create object of PreparedStatement

try {

PreparedStatement ps = con.prepareStatement(sql);

// Prepare parameter for the sql

ps.setString(1, usrName);

ps.setString(2, passwrd);

ps.setString(3, ident);

// send parameter to compiler to compile.

ResultSet rs = ps.executeQuery();

StringBuffer sb = new StringBuffer(\

ResultSetMetaData meta = rs.getMetaData();

int cols = meta.getColumnCount();

//you can use another simple way to check whether the people has records in database:

//define a boolean flag=false, if has record change it

/o true;otherwise, if flag=flase,showMessage(\

while (rs.next()) {

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

sb.append(meta.getColumnName(i));

sb.append(rs.getString(i));

}

}

if (sb.length() < 1) {

JOptionPane.showMessageDialog(null, \用户名或密码错误\

} else if (sb.length() >= 1) {

if (ident.equals(\

//if he or she is a student, and usrName-passwrd alright, then go to 学生选课系统

new StudentChooseCourse(usrName, passwrd);

jf.setVisible(false);

java学生选课系统.doc

java学生选课系统 - 需求分析:写一个较为严谨的学生选课系统,实现学生可以选...[本文更多相关]

基于Java的学生选课系统.doc

基于Java的学生选课系统 - 课程设计 (Java 程序设计) 题目 基于 Java 的学生选课系统 基于 Java 的学生选课系统 摘要:课程管理系统是一个学校中不可缺少的部分。......[本文更多相关]

Java完整的学生选课系统源码.doc

Java完整的学生选课系统源码 - //需求分析: 写一个较为严谨的学生选课系统, 实现学生可以选择多门选课课程, 并将有效选课结果保存到数据库。学生需要登录后,才能......[本文更多相关]

Java学生选课系统.doc

Java学生选课系统 - 成绩: 课程设计 (Java 程序设计) 题学专 目院业 基于 Java 的学生选课系统 计算机与软件学院 计算机科学与技术 学号、姓名 指导教 ......[本文更多相关]

java学生选课系统(完整源代码_sql2005).doc

java学生选课系统(完整源代码_sql2005)_计算机软件及应用_IT/计算...[本文更多相关]

java程序设计之学生选课管理系统.doc

java程序设计之学生选课管理系统 - 《Java 程序设计》 结课报告 课程名称 设计题目 专业班级 学号 JAVA 程序设计 学生选课管理系统 学生姓名 教师 信息工程系 《.......[本文更多相关]

基于JAVA的学生选课系统设计与实现毕业设计.doc

基于JAVA的学生选课系统设计与实现毕业设计 - (课程)毕业设计 设计题目: 基于 JAVA 的课程管理系统的设计与实现 设计时间: 学生姓名 专业 网络工程 学班 号级 ......[本文更多相关]

毕业设计-基于JAVA的学生选课系统设计.doc

毕业设计-基于JAVA的学生选课系统设计 - 学生选课系统论文 基于 JAVA 的学生选课系统 I 学生选课系统论文 摘 要 课程管理系统是一个学校中不可缺少的部分。课程......[本文更多相关]

java学生选课系统(完整源代码,sql2005).doc

java学生选课系统(完整源代码,sql2005)_IT/计算机_专业资料。用JAVA编写的简单的学生选课系统 课程设计说明文档学生选课管理系统的设计与实现 学校: 系别: 专业班级......[本文更多相关]

基于jsp(java)学生选课系统的设计和开发_图文.doc

基于jsp(java)学生选课系统的设计和开发 - 一些基于Jsp简单的系统的实...[本文更多相关]

Java学生选课系统实验报告.doc

Java学生选课系统实验报告 - 课程设计论文 组员姓名: 组员学号:专业: 指...[本文更多相关]

java课程设计-学生选课管理系统的设计与实现(完整源代码).doc

java课程设计-学生选课管理系统的设计与实现(完整源代码) - 课程设计说明文档 学生选课管理系统的设计与实现 学校: 系别: 专业班级: 姓名: 学号: word 文档 可......[本文更多相关]

基于java web 技术的高校教务系统的设计与实现——选课....doc

天津商务职业学院 毕业设计(论文) 题目:基于 Java Web 技术的高校教务系统的设计与实现 ——选课系统子模块 专业班级 学姓号名 软件 1001 班 0108100119 王悦 ......[本文更多相关]

数据库课设java学生选课管理系统_图文.doc

28 摘要本系统是为了完成本学期的数据库课程设计而开发的基于 MYSQL 和 JDBC 的学生选课管理系统,数据库用 MySQL 建立,界面用 Java 语言开发,本系统基于 C/S(......[本文更多相关]

推荐Java语言程序设计课程设计-学生选课系统 精品.doc

推荐Java语言程序设计课程设计-学生选课系统 精品 - 学生信息管理系统 1、...[本文更多相关]

JSB选课系统JAVA课程设计系统.doc

JSB选课系统JAVA课程设计系统 - 华东交通大学理工学院 Institute of Technology. East China Jiaotong University Java 课设 J......[本文更多相关]

JSB选课系统JAVA课程设计_系统.doc

JSB选课系统JAVA课程设计_系统 - 华东交通大学理工学院 Institute of Technology. East China Jiaotong University Java 课设 ......[本文更多相关]

学生选课系统代码加文档.doc

这次我 们的课题是用 java 编写学生选课系统,通过这三个周我们两个人的努力,...[本文更多相关]

JavaEE学生选课系统实验报告.doc

JavaEE学生选课系统实验报告 - 实验报告 一、 二、 实验目的: 实验目的:使用 JavaEE 语言,由 Struts2、Hibernate、Spring 这三个 功能描述: 功能描述:该......[本文更多相关]

网上选课系统设计与实现_图文.doc

网上选课系统设计与实现 - 重庆工业职业技术学院 毕业设计(论文) 课题名称专业班级: 学生姓名: 指导教师: 网上选课系统设计与实现 10 计应 303 张刘......[本文更多相关]

Java Swing开发,将程序最小化至系统托盘_☆时光☆.txt

Java Swing开发,将程序最小化至系统托盘_☆时光☆_百度空间_计算机软件及应用_IT/计算机_专业资料。Java Swing开发,将程序最小化至系统托盘下面的函数是最小化至......[本文更多相关]

java编程 商品录入系统.txt

java编程 商品录入系统 - import java.io.*; import java.awt.*; import java.awt.event.*; import java......[本文更多相关]

linux部署java程序及linux实用命令教程 - 百度文库.txt

linux部署java程序及linux实用命令教程 ps -ef|grep java,简单、实用和务实。专业...JAVA程序设计 java环境变量 java入门教程 华为内部培训资料 Linux系统命令使... ......[本文更多相关]

如何迅速成为Java高手 - 百度文库.txt

J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子......[本文更多相关]

网上购书 - 百度文库.txt

网上购书系统类图 网上购书需求说明书 网上购书系统 网上购书系统需求 网上购书系统uml 京东商城网上购书 网上购书管理系统 实习网上购书系统 3.2 分59人阅读 ......[本文更多相关]

[java选课系统]相关文章:

  • Java_选课管理系统
  • Java_选课管理系统
  • java学生选课系统
  • java学生选课系统
  • Java学生选课系统实验报告
  • Java学生选课系统实验报告
  • 基于Java的学生选课系统
  • 基于Java的学生选课系统
  • 教务选课系统的JAVA代码
  • 教务选课系统的JAVA代码
  • 基于Java编程的学生选课系统
  • 基于Java编程的学生选课系统
  • 高校学生选课系统需求分析Java
  • 高校学生选课系统需求分析Java
  • Java完整的学生选课系统源码
  • Java完整的学生选课系统源码
  • 网上选课系统设计(JAVA)
  • 网上选课系统设计(JAVA)
  • java学生选课系统(完整源代码,sql2005)
  • java学生选课系统(完整源代码,sql2005)
  • java选课系统相关搜索
    最新推荐
    热门推荐