java学生选课系统方案.docx

上传人:b****6 文档编号:13363220 上传时间:2023-06-13 格式:DOCX 页数:20 大小:18.86KB
下载 相关 举报
java学生选课系统方案.docx_第1页
第1页 / 共20页
java学生选课系统方案.docx_第2页
第2页 / 共20页
java学生选课系统方案.docx_第3页
第3页 / 共20页
java学生选课系统方案.docx_第4页
第4页 / 共20页
java学生选课系统方案.docx_第5页
第5页 / 共20页
java学生选课系统方案.docx_第6页
第6页 / 共20页
java学生选课系统方案.docx_第7页
第7页 / 共20页
java学生选课系统方案.docx_第8页
第8页 / 共20页
java学生选课系统方案.docx_第9页
第9页 / 共20页
java学生选课系统方案.docx_第10页
第10页 / 共20页
java学生选课系统方案.docx_第11页
第11页 / 共20页
java学生选课系统方案.docx_第12页
第12页 / 共20页
java学生选课系统方案.docx_第13页
第13页 / 共20页
java学生选课系统方案.docx_第14页
第14页 / 共20页
java学生选课系统方案.docx_第15页
第15页 / 共20页
java学生选课系统方案.docx_第16页
第16页 / 共20页
java学生选课系统方案.docx_第17页
第17页 / 共20页
java学生选课系统方案.docx_第18页
第18页 / 共20页
java学生选课系统方案.docx_第19页
第19页 / 共20页
java学生选课系统方案.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

java学生选课系统方案.docx

《java学生选课系统方案.docx》由会员分享,可在线阅读,更多相关《java学生选课系统方案.docx(20页珍藏版)》请在冰点文库上搜索。

java学生选课系统方案.docx

java学生选课系统方案

需求分析:

写一个较为严谨的学生选课系统,实现学生可以选择多门选课课程,并将有效选课结果保存到数据库。

学生需要登录后,才能选课。

让学生可以在选课系统通过多种方式查询到要选的课程信息。

//选课规则:

1、每个学生可以选多门课程,多次选课的总学分不能超过6学分;2、不能重复选择一门课程;3、每一门课程的选课人数都有数量限制,当某门课程的选课名额满时,则应另选课程。

4、凭用户名和密码登录,通过提交某一课程号来选课

//总体设计方案:

建立三个类:

登录类register,选课类studentChooseCourse,数据库工具类JDBCUtil;一个SQL脚本文件用于生成数据库表结构和初始记录,以搭建数据库环境。

登录类register类,负责对用户的身份进行验证;工具类JDBCUtil用于实现连接,你可调用JDBCUtil的getConnection()方法等到链接。

选课类studentChooseCourse用于,实现选课功能。

其中包括几个主要方法:

1、actionPerformed(ActionEvent)用于监听用户“查询”和“提交”操作,并负责调用各种方法对其进行处理

2、createSearchCourse()用于产生图形用户界面

3、processBeforeCommit()用于对用户的“提交”查找进行验证,剔除无效的用户操作

4、tryCommit()负责对有效的“提交”操作,进一步处理,并将有效的操作结果时时保存到数据库,并更新数据库原有信息

//本程序用到的知识点:

数据库连接JDBC;SQL建表、插入输入、动态查询;图形用户界面的产生以及处理查询结果集并较好显示;程序设计基础知识。

//代码如下:

importjava.awt.GridLayout;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.sql.*;

importjavax.swing.*;

importjavax.swing.table.DefaultTableModel;

importschool.schoolPicture.JdbcUtil;

publicclassStudentChooseCourseextendsJFrameimplementsActionListener{

JTextFieldjtfSearch=newJTextField(11);

String[]columnNames=newString[]{"课程ID","课程名","学时","学分","学期","性质"};

DefaultTableModeldtmSearch=newDefaultTableModel(columnNames,27);

JTablejtSearch=newJTable(dtmSearch);

JScrollPanejspSearch=newJScrollPane(jtSearch);

JComboBoxjcbSearch=newJComboBox();

JTextFieldjtfSelectedCourse=newJTextField(10);

Connectioncon=null;

PreparedStatementps=null;

ResultSetrs=null;

privatestaticStringusrName;

privatestaticStringpasswrd;

publicStudentChooseCourse(StringusrName,Stringpasswrd){

createSearchCourse();

this.usrName=usrName;

this.passwrd=passwrd;

}

publicStringgetUsrName(){

returnusrName;

}

publicvoidsetUsrName(StringusrName){

this.usrName=usrName;

}

publicStringgetPasswrd(){

returnpasswrd;

}

publicvoidsetPasswrd(Stringpasswrd){

this.passwrd=passwrd;

}

publicvoidactionPerformed(ActionEvente){

Stringstr=e.getActionCommand();

if("查询".trim().equals(str)){

intk=1;

while(k<10){

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

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

}

k++;

}

searchAvailableCourse();

}elseif("提交".equals(str)){

booleaneffect=processBeforeCommit();

if(effect==true){tryCommit();}

}

}

publicbooleanprocessBeforeCommit(){

intk=1;

while(k<10){

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

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

}

k++;

}

StringuserInput=jtfSelectedCourse.getText().toString().trim()

.toLowerCase();

Stringsql="selectcnofromcoursexxwherecno=?

";

booleanflagCourseExist=false;

try{

ps=con.prepareStatement(sql);

ps.setString(1,userInput);

rs=ps.executeQuery();

flagCourseExist=rs.next();

}catch(ExceptioneC){

eC.printStackTrace();

}

if(!

flagCourseExist){

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

returnfalse;

}

PreparedStatementps=null;

sql="selectsum(grade)"

+"from(selectx.sname,o,k.gradegrade"

+"fromcoursexxkjoinchoicesxxx"

+"ono=oandx.sname=?

)result";

Stringgrade=null;

try{

ps=con.prepareStatement(sql);

ps.setString(1,usrName);

rs=ps.executeQuery();

while(rs.next()){

grade=rs.getString

(1);

if(grade==null){grade="0";}

}

}catch(Exceptionrrr){

rrr.printStackTrace();

}

System.out.println("总学分:

"+grade);

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

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

this.setVisible(false);

returnfalse;

}

sql="select*fromchoicesxxwheresname=?

andcno=?

";

booleanflag=false;

try{

ps=con.prepareStatement(sql);

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

ps.setString(2,userInput);

rs=ps.executeQuery();

flag=rs.next();

}catch(Exceptioneaa){

eaa.printStackTrace();

}

if(flag){

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

请另选课程");

returnfalse;}

returntrue;

}

publicvoidtryCommit(){

StringuserInput=jtfSelectedCourse.getText().toString().trim()

.toLowerCase();

PreparedStatementps;

Stringsql="select(Max-selectedCount)asRemainedCount"

+"fromCoursexxwherecno=?

";

try{

ps=con.prepareStatement(sql);

ps.setString(1,userInput);

rs=ps.executeQuery();

ResultSetMetaDatameta=rs.getMetaData();

intcols=meta.getColumnCount();

intRemainedCount=-1;

while(rs.next()){

RemainedCount=rs.getInt

(1);

System.out.println("RemainedCount:

"+RemainedCount);

}

if(RemainedCount>0){

sql="insertintochoicesxxvalues(?

?

)";

ps=con.prepareStatement(sql);

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

ps.setString(2,userInput);

ps.executeUpdate();

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

"+this.getUsrName()

+"选了"+userInput+"."+""+"还有"+RemainedCount

+"人可以选该课程。

");

sql="updateCourseXXsetselectedCount=selectedCount+1wherecno=?

";

ps=con.prepareStatement(sql);

ps.setString(1,userInput);

ps.executeUpdate();

mit();

}

}catch(Exceptiones){

es.printStackTrace();

try{

con.rollback();

}catch(Exceptioney){

ey.printStackTrace();

}

}

}

publicvoidsearchAvailableCourse(){

if(JDBCUtil.getConnection()!

=null){

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

con=JDBCUtil.getConnection();

}else{

con=JdbcUtil.getConnection();

}

StringuserInput=jtfSearch.getText().toString().trim().toLowerCase();

StringselectedItem=jcbSearch.getSelectedItem().toString().trim();

System.out.println("Usersearch:

"+userInput);

System.out.println("selectedItem:

"+selectedItem);

Stringsql=null;

try{

if("课程名".equals(selectedItem)){

sql="selectcno,cname,hour,grade,term,isNeedfromCourseXXwherecname=?

";

ps=con.prepareStatement(sql);

ps.setString(1,userInput);

}elseif("课程ID".equals(selectedItem)){

sql="selectcno,cname,hour,grade,term,isNeedfromCourseXXwherecno=?

";

ps=con.prepareStatement(sql);

ps.setString(1,userInput);

}elseif("学时".equals(selectedItem)){

sql="selectcno,cname,hour,grade,term,isNeedfromCourseXXwherehour=?

";

ps=con.prepareStatement(sql);

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

}elseif("学分".equals(selectedItem)){

sql="selectcno,cname,hour,grade,term,isNeedfromCourseXXwheregrade=?

";

ps=con.prepareStatement(sql);

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

}elseif("学期".equals(selectedItem)){

sql="selectcno,cname,hour,grade,term,isNeedfromCourseXXwhereterm=?

";

ps=con.prepareStatement(sql);

ps.setString(1,userInput);

}

System.out.println(sql);

rs=ps.executeQuery();

mit();

ResultSetMetaDatameta=rs.getMetaData();

intcols=meta.getColumnCount();

Stringresult=null;

intk=1;

booleanflag=false;

while(rs.next()){

for(inti=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(Exceptionex){

ex.printStackTrace();

try{

con.rollback();

}catch(Exceptioner){

er.printStackTrace();

}

}

publicvoidcreateSearchCourse(){

this.setLayout(newGridLayout(3,1));

JPaneljp1=newJPanel();

jp1.setLayout(newGridLayout(4,1));

JPaneljp2=newJPanel();

JPaneljp3=newJPanel();

JPaneljp10=newJPanel();

JPaneljp11=newJPanel();

JPaneljp12=newJPanel();

JPaneljp13=newJPanel();

JLabeljlSearch=newJLabel("学生选课系统");

jp11.add(jlSearch);

jcbSearch.addItem(newString("课程名"));

jcbSearch.addItem(newString("课程ID"));

jcbSearch.addItem(newString("学时"));

jcbSearch.addItem(newString("学分"));

jcbSearch.addItem(newString("学期"));

jp12.add(jtfSearch);

jp12.add(jcbSearch);

JButtonjbOK=newJButton("查询");

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

JLabeljlSelectedCourse=newJLabel("请输入课程ID:

");

JButtonjbSelectedCourse=newJButton("提交");

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

}

publicstaticvoidmain(String[]args){

//StringusrName="xuliang";

//Stringpasswrd="123";

newStudentChooseCourse(usrName,passwrd);

}

}

droptableregisterXu;

createtableregisterXu(idvarchar(20),userNamevarchar(20),passWordvarchar(20),identifyvarchar(20));

insertintoregisterXuvalues('s001','xuliang','123','学生');

insertintoregisterXuvalues('s002','xuliang2','1234','学生');

insertintoregisterXuvalues('j001','jack','12345','学生');

insertintoregisterXuvalues('001','user','user','学生');

insertintoregisterXuvalues('z001','zlm','corejava','老师');

Stringsql="select*fromregisterXu"

+"whereuserName=?

andpassWord=?

andidentify=?

";

//table2:

Coursexx课程表

droptableCoursexx;

createtableCoursexx(cnovarchar(20)primarykey,cnamevarchar(20),hourInt,

gradeInt,termvarchar(20),isNeedvarchar(20),selectedCountInt,MaxInt);

insertintoCoursexxvalues('c001','CoreJava',50,5,'201007','NoNecessary',0,50);

insertintoCoursexxvalues('c002','XML',20,2,'201008','NoNecessary',0,40);

insertintoCoursexxvalues('c003','HIBERNATE',20,4,'201008','NoNecessary',0,30);

insertintoCoursexxvalues('c004','SQL',20,4,'201006','NoNecessary',0,5);

insertintoCoursexxvalues('c005','JDBC',20,2,'201008','NoNecessary',0,3);

insertintoCoursexxvalues('c006','AJAX',20,2,'201010','NoNecessary',0,1);

insertintoCoursexxvalues('c007','JSP',100,8,'201009','NoNecessary',0,1

sql="selectcno,cname,hour,grade,term,isNeedfromCourseXXwherecname=?

";

//table3:

学生表--

droptablestudentxx;

createtablestudentxx(sidvarchar(20),snamevarchar(20)primarykey,sexvarchar(20),birthdayvarchar(20),

classNamevarchar(20),imagevarchar(20));

insertintostudentxxvalues('s001','xuliang','male','199011

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2