java學(xué)生選課系統(tǒng)_第1頁
java學(xué)生選課系統(tǒng)_第2頁
java學(xué)生選課系統(tǒng)_第3頁
java學(xué)生選課系統(tǒng)_第4頁
java學(xué)生選課系統(tǒng)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、需求分析:寫一個(gè)較為嚴(yán)謹(jǐn)?shù)膶W(xué)生選課系統(tǒng),實(shí)現(xiàn)學(xué)生可以選擇多門選課課程,并將有效選課結(jié)果保存到數(shù)據(jù)庫。學(xué)生需要登錄后,才能選課。讓學(xué)生可以在選課系統(tǒng)通過多種方式查詢到要選的課程信息。/選課規(guī)則:1、每個(gè)學(xué)生可以選多門課程,多次選課的總學(xué)分不能超過6學(xué)分;2、不能重復(fù)選擇一門課程;3、每一門課程的選課人數(shù)都有數(shù)量限制,當(dāng)某門課程的選課名額滿時(shí),則應(yīng)另選課程。4、憑用戶名和密碼登錄,通過提交某一課程號來選課/總體設(shè)計(jì)方案:建立三個(gè)類:登錄類register,選課類studentChooseCourse,數(shù)據(jù)庫工具類JDBCUtil;一個(gè)SQL腳本文件用于生成數(shù)據(jù)庫表結(jié)構(gòu)和初始記錄,以搭建數(shù)據(jù)庫環(huán)境。

2、登錄類register類,負(fù)責(zé)對用戶的身份進(jìn)行驗(yàn)證;工具類JDBCUtil用于實(shí)現(xiàn)連接,你可調(diào)用JDBCUtil的getConnection()方法等到鏈接。選課類studentChooseCourse用于,實(shí)現(xiàn)選課功能。其中包括幾個(gè)主要方法:1、actionPerformed(ActionEvent) 用于監(jiān)聽用戶“查詢”和“提交”操作,并負(fù)責(zé)調(diào)用各種方法對其進(jìn)行處理2、createSearchCourse()用于產(chǎn)生圖形用戶界面3、processBeforeCommit()用于對用戶的“提交”查找進(jìn)行驗(yàn)證,剔除無效的用戶操作4、tryCommit()負(fù)責(zé)對有效的“提交”操作,進(jìn)一步處理,并

3、將有效的操作結(jié)果時(shí)時(shí)保存到數(shù)據(jù)庫,并更新數(shù)據(jù)庫原有信息/本程序用到的知識點(diǎn):數(shù)據(jù)庫連接JDBC;SQL建表、插入輸入、動(dòng)態(tài)查詢;圖形用戶界面的產(chǎn)生以及處理查詢結(jié)果集并較好顯示;程序設(shè)計(jì)基礎(chǔ)知識。 /代碼如下: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.sc

4、hoolPicture.JdbcUtil;public class StudentChooseCourse extends JFrame implements ActionListener JTextField jtfSearch = new JTextField(11);String columnNames = new String "課程ID", "課程名", "學(xué)時(shí)", "學(xué)分", "學(xué)期", "性質(zhì)" ;DefaultTableModel dtmSearch = ne

5、w 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

6、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(

7、) return passwrd;public void setPasswrd(String passwrd) this.passwrd = passwrd; public void actionPerformed(ActionEvent e) String str = e.getActionCommand();if ("查詢".trim().equals(str) int k = 1;while (k < 10) for (int i = 1; i < 7; i+) jtSearch.setValueAt(null, k - 1, i - 1);k+;sear

8、chAvailableCourse(); else if ("提交".equals(str) boolean effect=processBeforeCommit(); 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.getT

9、ext().toString().trim().toLowerCase();String sql = "select cno from coursexx where cno=? "boolean flagCourseExist = false;try ps = con.prepareStatement(sql);ps.setString(1, userInput);rs = ps.executeQuery();flagCourseExist = rs.next(); catch (Exception eC) eC.printStackTrace();if (!flagCou

10、rseExist) JOptionPane.showMessageDialog(null, "該課程不存在,請重新輸入");return false;PreparedStatement ps = null;sql = "select sum(grade) "+ "from (select x.sname , o,k.grade grade "+ "from coursexx k join choicesxx x "+ "on o=o and x.sname=?) result"String gr

11、ade =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 (Exception rrr) rrr.printStackTrace();System.out.println("總學(xué)分:" + grade);if (Integer.parseInt(grade) > 6) JOption

12、Pane.showMessageDialog(null, "你已經(jīng)選滿6學(xué)分,系統(tǒng)將退出");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();fl

13、ag = rs.next(); catch (Exception eaa) eaa.printStackTrace();if (flag) JOptionPane.showMessageDialog(null, "你已經(jīng)選擇了該課程。請另選課程");return false;return true;public void tryCommit() String userInput = jtfSelectedCourse.getText().toString().trim().toLowerCase();PreparedStatement ps;String sql = &qu

14、ot;select (Max-selectedCount) as RemainedCount "+ "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() Remained

15、Count = rs.getInt(1);System.out.println("RemainedCount:" + RemainedCount);if (RemainedCount > 0) sql = "insert into choicesxx values(?,?)"ps = con.prepareStatement(sql);ps.setString(1, this.getUsrName();ps.setString(2, userInput);ps.executeUpdate();JOptionPane.showMessageDialo

16、g(null, "選課成功: " + this.getUsrName()+ " 選了" + userInput + "." + "" + " 還有 " + RemainedCount+ " 人可以選該課程。");sql = "update CourseXX set selectedCount=selectedCount+1 where cno=?"ps = con.prepareStatement(sql);ps.setString(1, userInpu

17、t);ps.executeUpdate();mit(); catch (Exception es) es.printStackTrace();try con.rollback(); catch (Exception ey) ey.printStackTrace();public void searchAvailableCourse() if (JDBCUtil.getConnection() != null) System.out.println(JDBCUtil.getConnection();con = JDBCUtil.getConnection(); else con = JdbcUt

18、il.getConnection();String userInput = jtfSearch.getText().toString().trim().toLowerCase();String selectedItem = jcbSearch.getSelectedItem().toString().trim();System.out.println("User search:" + userInput);System.out.println("selectedItem:" + selectedItem);String sql = null;try if

19、 ("課程名".equals(selectedItem) sql = "select cno,cname,hour,grade,term,isNeed from CourseXX where cname = ?"ps = con.prepareStatement(sql);ps.setString(1, userInput); else if ("課程ID".equals(selectedItem) sql = "select cno,cname,hour,grade,term,isNeed from CourseXX wh

20、ere cno = ?"ps = con.prepareStatement(sql);ps.setString(1, userInput); else if ("學(xué)時(shí)".equals(selectedItem) sql = "select cno,cname,hour,grade,term,isNeed from CourseXX where hour = ?"ps = con.prepareStatement(sql);ps.setInt(1, Integer.parseInt(userInput); else if ("學(xué)分&qu

21、ot;.equals(selectedItem) sql = "select cno,cname,hour,grade,term,isNeed from CourseXX where grade = ?"ps = con.prepareStatement(sql);ps.setInt(1, Integer.parseInt(userInput); else if ("學(xué)期".equals(selectedItem) sql = "select cno,cname,hour,grade,term,isNeed from CourseXX wher

22、e term = ?"ps = con.prepareStatement(sql);ps.setString(1, userInput);System.out.println(sql);rs = ps.executeQuery();mit();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;

23、 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.printStackTr

24、ace();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();JLab

25、el jlSearch = new JLabel(" 學(xué) 生 選 課 系 統(tǒng) ");jp11.add(jlSearch);jcbSearch.addItem(new String("課程名");jcbSearch.addItem(new String("課程ID");jcbSearch.addItem(new String("學(xué)時(shí)");jcbSearch.addItem(new String("學(xué)分");jcbSearch.addItem(new String("學(xué)期");j

26、p12.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 jbSelectedC

27、ourse = 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 = &q

28、uot;xuliang"/String passwrd = "123"new StudentChooseCourse(usrName, passwrd);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','學(xué)

29、生');insert into registerXu values('s002','xuliang2','1234','學(xué)生');insert into registerXu values('j001','jack','12345','學(xué)生');insert into registerXu values('001','user','user','學(xué)生');insert into registerX

30、u 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,gr

31、ade 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 i

32、nto 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','NoNe

33、cessary',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 wher

34、e cname = ?" /table 3:學(xué)生表-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','

35、sd1003','good');insert into studentxx values('s002','xuliang2','male','19851124','sd0910','good');insert into studentxx values('j001','jack','male','19881124','sd1003','good');insert into stud

36、entxx values('001','user','male','19901124','sd1005','good');insert into studentxx values('s003','sisi','female','19880124','sd1007','good');insert into studentxx values('as003','crystal',

37、'female','19880124','asd1007','good');drop table choicesxx;create table choicesxx(sname varchar(20) references studentxx(sname),cno varchar(20) references coursexx(cno);package school;import javax.swing.*;import school.schoolPicture.JdbcUtil;import java.sql.*;import j

38、ava.awt.*;import java.awt.event.*;public class Register implements ActionListener JFrame jf = new JFrame("學(xué)生成績管理與選課系統(tǒng)");JTextField jtfUserName = new JTextField(10);JPasswordField jpfPassWord = new JPasswordField(10);JComboBox identify = new JComboBox();public Register() CreateRegisterGUI()

39、;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

40、CreateLogin();public void processLogin() Connection con = null;if (JdbcUtil.class = null) con = JdbcUtil.getConnection(); else con = JDBCUtil.getConnection();String usrName = jtfUserName.getText().trim();String passwrd = new String(jpfPassWord.getPassword().trim();String ident = identify.getSelected

41、Item().toString().trim();String sql = "select * from registerXu "+ "where userName=? and passWord=? and identify=?"System.out.println(usrName + ":" + passwrd + ":" + ident);try PreparedStatement ps = con.prepareStatement(sql);ps.setString(1, usrName);ps.setStr

42、ing(2, passwrd);ps.setString(3, ident);ResultSet rs = ps.executeQuery();StringBuffer sb = new StringBuffer("");ResultSetMetaData meta = rs.getMetaData();int cols = meta.getColumnCount();records in database:while (rs.next() for (int i = 1; i < cols; i+) sb.append(meta.getColumnName(i);sb

43、.append(rs.getString(i);if (sb.length() < 1) JOptionPane.showMessageDialog(null, "用戶名或密碼錯(cuò)誤"); else if (sb.length() >= 1) if (ident.equals("student") new StudentChooseCourse(usrName, passwrd);jf.setVisible(false); else if (ident.equals("teacher") new TeacherEntered

44、();jf.setVisible(false); else if (ident.equals("admin") catch (Exception er) er.printStackTrace();public void CreateRegisterGUI() jf.setLayout(new GridLayout(5, 1);JPanel jp1 = new JPanel();JLabel jl1 = new JLabel("學(xué)生成績管理系統(tǒng)");jp1.add(jl1);jf.add(jp1);JPanel jp2 = new JPanel();JLa

45、bel 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 jp4 = new JPanel();JLabel jl4 = new JLabel("身 份:");/ identify.addItem(new String("學(xué)生 ");identify.addItem(new String("student ")

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論