java学生选课系统.pdf

上传人:赵** 文档编号:50073657 上传时间:2022-10-12 格式:PDF 页数:14 大小:313.25KB
返回 下载 相关 举报
java学生选课系统.pdf_第1页
第1页 / 共14页
java学生选课系统.pdf_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《java学生选课系统.pdf》由会员分享,可在线阅读,更多相关《java学生选课系统.pdf(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、需求分析:写一个较为严谨的学生选课系统,实现学生可以选择多门选课课程,并将有效选课结果保存到数据库。学生需要登录后,才能选课。让学生可以在选课系统通过多种方式查询到要选的课程信息。/选课规则:1、每个学生可以选多门课程,多次选课的总学分不能超过6学分;2、不能重复选择一门课程;3、每一门课程的选课人数都有数量限制,当某门课程的选课名额满时,则应另选课程。4、凭用户名和密码登录,通过提交某一课程号来选课/总体设计方案:建立三个类:登录类 register,选课类 studentChooseCourse,数据库工具类 JDBCUtil;一个 SQL 脚本文件用于生成数据库表结构和初始记录,以搭建数

2、据库环境。登录类 register 类,负责对用户的身份进行验证;工具类 JDBCUtil 用于实现连接,你可调用 JDBCUtil 的 getConnection()方法等到链接。选课类 studentChooseCourse 用于,实现选课功能。其中包括几个主要方法:1、actionPerformed(ActionEvent)用于监听用户“查询”和“提交”操作,并负责调用各种方法对其进行处理2、createSearchCourse()用于产生图形用户界面3、processBeforeCommit()用于对用户的“提交”查找进行验证,剔除无效的用户操作4、tryCommit()负责对有效的“

3、提交”操作,进一步处理,并将有效的操作结果时时保存到数据库,并更新数据库原有信息/本程序用到的知识点:数据库连接 JDBC;SQL 建表、插入输入、动态查询;图形用户界面的产生以及处理查询结果集并较好显示;程序设计基础知识。/代码如下: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;im

4、port 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(dtmSea

5、rch);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 usrNa

6、me,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;publicvoidactionPer

7、formed(ActionEvente)Stringstr=e.getActionCommand();if(查询.trim().equals(str)intk=1;while(k10)for(inti=1;i7;i+)jtSearch.setValueAt(null,k-1,i-1);k+;searchAvailableCourse();elseif(提交.equals(str)booleaneffect=processBeforeCommit();if(effect=true)tryCommit();public boolean processBeforeCommit()int k=1;wh

8、ile(k 10)for(int i=1;i 6)JOptionPane.showMessageDialog(null,你已经选满6学分,系统将退出);this.setVisible(false);return false;sql=select*from choicesxx where sname=?and cno=?;boolean flag=false;try ps=con.prepareStatement(sql);ps.setString(1,this.getUsrName();ps.setString(2,userInput);rs=ps.executeQuery();flag=rs

9、.next();catch(Exception eaa)eaa.printStackTrace();if(flag)JOptionPane.showMessageDialog(null,你已经选择了该课程。请另选课程);return false;return true;public void tryCommit()String userInput=jtfSelectedCourse.getText().toString().trim().toLowerCase();PreparedStatement ps;String sql=select(Max-selectedCount)as Remai

10、nedCount+from Coursexx where cno=?;try ps=con.prepareStatement(sql);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(RemainedCount:+RemainedCount);if

11、(RemainedCount 0)sql=insert into choicesxx values(?,?);ps=con.prepareStatement(sql);ps.setString(1,this.getUsrName();ps.setString(2,userInput);ps.executeUpdate();JOptionPane.showMessageDialog(null,选课成功:+this.getUsrName()+选了+userInput+.+还有 +RemainedCount+人可以选该课程。);sql=update CourseXX set selectedCoun

12、t=selectedCount+1 where cno=?;ps=con.prepareStatement(sql);ps.setString(1,userInput);ps.executeUpdate();mit();catch(Exception es)es.printStackTrace();try con.rollback();catch(Exception ey)ey.printStackTrace();publicvoidsearchAvailableCourse()if(JDBCUtil.getConnection()!=null)System.out.println(JDBCU

13、til.getConnection();con=JDBCUtil.getConnection();elsecon=JdbcUtil.getConnection();StringuserInput=jtfSearch.getText().toString().trim().toLowerCase();StringselectedItem=jcbSearch.getSelectedItem().toString().trim();System.out.println(Usersearch:+userInput);System.out.println(selectedItem:+selectedIt

14、em);Stringsql=null;tryif(课程名.equals(selectedItem)sql=select cno,cname,hour,grade,term,isNeed from CourseXX wherecname=?;ps=con.prepareStatement(sql);ps.setString(1,userInput);elseif(课程 ID.equals(selectedItem)sql=select cno,cname,hour,grade,term,isNeed from CourseXX wherecno=?;ps=con.prepareStatement

15、(sql);ps.setString(1,userInput);elseif(学时.equals(selectedItem)sql=select cno,cname,hour,grade,term,isNeed from CourseXX wherehour=?;ps=con.prepareStatement(sql);ps.setInt(1,Integer.parseInt(userInput);elseif(学分.equals(selectedItem)sql=select cno,cname,hour,grade,term,isNeed from CourseXX wheregrade=

16、?;ps=con.prepareStatement(sql);ps.setInt(1,Integer.parseInt(userInput);elseif(学期.equals(selectedItem)sql=select cno,cname,hour,grade,term,isNeed from CourseXX whereterm=?;ps=con.prepareStatement(sql);ps.setString(1,userInput);System.out.println(sql);rs=ps.executeQuery();mit();ResultSetMetaDatameta=r

17、s.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(

18、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 jp

19、11=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.a

20、dd(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(提交);jbSelectedC

21、ourse.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=xuliang;/String passwrd=123;new StudentChooseCourse(u

22、srName,passwrd);drop table registerXu;createtableregisterXu(idvarchar(20),userNamevarchar(20),passWordvarchar(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

23、 registerXu values(001,user,user,学生);insert into registerXu values(z001,zlm,corejava,老师);String sql=select*from registerXu+where userName=?and passWord=?and identify=?;/table 2:Coursexx 课程表drop table Coursexx;create table Coursexx(cno varchar(20)primary key,cname varchar(20),hour Int,grade Int,term

24、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(c0

25、04,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,1sql=select cno,cname,hour,grade,term,isNeed from CourseXX where c

26、name=?;/table 3:学生表-drop table studentxx;createtablestudentxx(sidvarchar(20),snamevarchar(20)primarykey,sexvarchar(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,198

27、51124,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);drop tabl

28、e choicesxx;create table choicesxx(snamevarchar(20)referencesstudentxx(sname),cnovarchar(20)referencescoursexx(cno);package school;import javax.swing.*;import school.schoolPicture.JdbcUtil;import java.sql.*;import java.awt.*;import java.awt.event.*;public class Register implements ActionListener JFr

29、ame jf=new JFrame(学生成绩管理与选课系统);JTextField jtfUserName=new JTextField(10);JPasswordField jpfPassWord=new JPasswordField(10);JComboBox identify=new JComboBox();public Register()CreateRegisterGUI();public void actionPerformed(ActionEvent e)String str=e.getActionCommand();if(str.equalsIgnoreCase(登录)proc

30、essLogin();else if(str.equalsIgnoreCase(取消)jtfUserName.setText();jpfPassWord.setText();else if(str.equalsIgnoreCase(注册)new CreateLogin();publicvoidprocessLogin()Connectioncon=null;if(JdbcUtil.class=null)con=JdbcUtil.getConnection();elsecon=JDBCUtil.getConnection();StringusrName=jtfUserName.getText()

31、.trim();Stringpasswrd=newString(jpfPassWord.getPassword().trim();Stringident=identify.getSelectedItem().toString().trim();Stringsql=select*fromregisterXu+whereuserName=?andpassWord=?andidentify=?;System.out.println(usrName+:+passwrd+:+ident);tryPreparedStatementps=con.prepareStatement(sql);ps.setStr

32、ing(1,usrName);ps.setString(2,passwrd);ps.setString(3,ident);ResultSetrs=ps.executeQuery();StringBuffersb=newStringBuffer();ResultSetMetaDatameta=rs.getMetaData();intcols=meta.getColumnCount();recordsindatabase:while(rs.next()for(inti=1;icols;i+)sb.append(meta.getColumnName(i);sb.append(rs.getString

33、(i);if(sb.length()=1)if(ident.equals(student)new StudentChooseCourse(usrName,passwrd);jf.setVisible(false);else if(ident.equals(teacher)new TeacherEntered();jf.setVisible(false);else if(ident.equals(admin)catch(Exception er)er.printStackTrace();publicvoidCreateRegisterGUI()jf.setLayout(new GridLayou

34、t(5,1);JPanel jp1=new JPanel();JLabel jl1=new JLabel(学生成绩管理系统);jp1.add(jl1);jf.add(jp1);JPanel jp2=new JPanel();JLabel jl2=new JLabel(用户名:);jp2.add(jl2);jp2.add(jtfUserName);jf.add(jp2);JPanel jp3=new JPanel();JLabel passWord=new JLabel(密 码:);jp3.add(passWord);jp3.add(jpfPassWord);jf.add(jp3);JPanel

35、 jp4=new JPanel();JLabel jl4=new JLabel(身 份:);/identify.addItem(new String(学生);identify.addItem(new String(student);/identify.addItem(new String(老师);identify.addItem(new String(teacher);/identify.addItem(new String(管理员);identify.addItem(new String(admin);identify.addActionListener(this);jp4.add(jl4)

36、;jp4.add(identify);jf.add(jp4);JPanel jp5=new JPanel();JButton enter=new JButton(登录);enter.addActionListener(this);JButton cancel=new JButton(取消);cancel.addActionListener(this);JButton regist=new JButton(注册);regist.addActionListener(this);jp5.add(enter);jp5.add(cancel);jp5.add(regist);jf.add(jp5);jf

37、.setSize(400,250);jf.setVisible(true);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args)new Register();import java.sql.*;public class JDBCUtil public JDBCUtil()PreparedStatement ps=null;ResultSet rs=null;static String driverName=com.microsoft.sqlserver.jdbc.SQLSer

38、verDriver;try Class.forName(driverName);catch(ClassNotFoundException e)e.printStackTrace();public static Connection getConnection()Connection connection=null;String url=jdbc:sqlserver:/localhost:1433;DatabaseName=master;String user=sa;String password=sd100301;/String password=Foolish004;try connection=DriverManager.getConnection(url,user,password);connection.setAutoCommit(false);System.out.println(connection);catch(SQLException e)e.printStackTrace();return connection;public static void main(String args)new JDBCUtil().getConnection();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com