java學生選課系統完整源代碼sql2005_第1頁
java學生選課系統完整源代碼sql2005_第2頁
java學生選課系統完整源代碼sql2005_第3頁
java學生選課系統完整源代碼sql2005_第4頁
java學生選課系統完整源代碼sql2005_第5頁
已閱讀5頁,還剩55頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計說明文檔學生選課管理系統的設計與實現學校:華南理工大學廣州汽車學院系別:計算機工程系專業班級:信息與計算科學姓名: 學號:一、課程設計目的通過這次的設計,主要是做出一個小型的管理系統,來加強對JAVA所學知識的鞏固和融會貫通,可以說是對一個學期所學知識的一個小結,加深對JAVA數據庫的理解。二、需求分析功能需求分析: 該系統具備管理學生信息、課程信息、選課信息的功能:用戶通過輸入賬號和密碼進下該系統后,可以進行一些基礎維護(學生信息維護、課程信息維護、選課信息維護)。全部都可以進行增加、修改、刪除、模糊查詢。三、數據項:1表admin(用戶表)FieldTypeNullKeyComme

2、nt Usernamechar(10)PRI用戶名passwordchar(10)密碼NameChar(10)用戶昵稱2表S(學生信息表)FieldTypeNullKeyComment Snonvarchar(50)PRI學號Snamenvarchar(50)姓名Sxnvarchar(50)系別3表C(課程信息表)FieldTypeNullKeyComment Cnonvarchar(50)PRI課號Cnamenvarchar(50)課名4表SC(學生信息表)FieldTypeNullKeyComment Cnonvarchar(50)PRI課號Snonvarchar(50)PRI學號Cnva

3、rchar(50)成績四、系統功能描述該小型系統主要是用于管理學生及課程的基本信息,主要功能包括四方面的:1.管理學生信息,其中包括添加,刪除,修改等操作。2.管理課程信息,其中包括添加,刪除,修改等操作。3.管理選課信息,其中包括添加,刪除,修改等操作。4.查詢信息,其中包括查詢學生信息,查詢課程信息,查詢選課信息等操作。選課信息課程信息學生信息刪除信息修改信息添加信息刪除信息修改信息添加信息刪除信息修改信息添加信息查詢管理選課管理課程管理學生管理學生信息管理系統 五、代碼分析連接數據庫方法:這是java連接數據庫的驅動,有關數據庫的操作都要用到他。public static Connect

4、ion CONN() String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver" /加載JDBC驅動String dbURL = "jdbc:sqlserver:/localhost:1433; DatabaseName=student" /連接服務器和數據庫test,此處student是數據庫名 String userName = "sa" /默認用戶名 String userPwd = "mima" /密碼 Connection dbCo

5、nn=null; try Class.forName(driverName); dbConn = DriverManager.getConnection(dbURL, userName, userPwd); System.out.println("Connection Successful!"); /如果連接成功 控制臺輸出Connection Successful! catch (Exception e) e.printStackTrace(); return dbConn;用戶登錄界面user.java:登錄時,凡是賬號密碼未填寫、輸入錯誤賬號密碼都會提出錯誤提示框。在

6、填寫好賬號密碼后,會讀取數據庫里admin表,并查詢其輸入是否存在,若無誤,則登錄到用戶界面。public class User extends JFrame private JLabel use,password; private JTextField k1;/用戶名輸入框 private JPasswordField k2;/密碼輸入框 private JButton b1,b2;/登錄窗口public User(JFrame f)super("系統登錄");Container c=getContentPane();c.setLayout(new FlowLayout(

7、);use=new JLabel("username:");use.setFont(new Font("Serif",Font.PLAIN,20);password=new JLabel("password:");password.setFont(new Font("Serif",Font.PLAIN,20);k1=new JTextField(12);k2=new JPasswordField(12);b1=new JButton("登錄");b2=new JButton("退出&q

8、uot;);/設置登錄方法BHandler b=new BHandler();EXIT d=new EXIT();b1.addActionListener(b);b2.addActionListener(d);/添加控件c.add(use);c.add(k1);c.add(password);c.add(k2);c.add(b1);c.add(b2);setBounds(600,300,250,150);setVisible(true);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/主函數public s

9、tatic void main(String args) User f1=new User(new JFrame();效果圖:用戶界面:Menu.java用戶界面能菜單欄有4個一級菜單,學生管理、課程管理、選課管理都能添加、修改、刪除數據,分別操作數據庫里的S表(學生),C表(課程),SC表(選課)。查詢管理則可進行三個表的查詢。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Menu extends JFrame implements ActionListenerAddstu 增加學生界面

10、;Updatastu 修改學生界面;Delstu 刪除學生界面;AddC 增加課程界面;DelC 刪除課程界面;UpdateC 修改課程界面;AddSC 增加選課界面;DelSC 刪除選課界面;UpdateSC 修改選課界面;Selstu 學生查詢界面;JPanel pCenter;CardLayout card=null;JLabel label=null;JMenuBar mb=new JMenuBar();/菜單欄JMenu m1=new JMenu("學生管理");JMenuItem add1=new JMenuItem("add1 ");JMe

11、nuItem updata1=new JMenuItem("updata1 ");JMenuItem delete1=new JMenuItem("delete1 ");JMenu m2=new JMenu("課程管理");JMenuItem add2=new JMenuItem("add2 ");JMenuItem updata2=new JMenuItem("updata2 ");JMenuItem delete2=new JMenuItem("delete2 ");JM

12、enu m3=new JMenu("選課管理");JMenuItem add3=new JMenuItem("add3 ");JMenuItem updata3=new JMenuItem("updata3 ");JMenuItem delete3=new JMenuItem("delete3 ");JMenu m4=new JMenu("查詢管理");JMenuItem 學生查詢=new JMenuItem("查詢信息 ");JMenuItem m5=new JMenuIt

13、em("系統退出");Font t=new Font ("sanerif",Font.PLAIN,12);public Menu ()this.setTitle("學生選課管理系統");try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println("不能設置外觀: "+e);/組合菜單addMenu1();addMenu2();addMenu3();addMenu

14、4();addJMenuBar();setJMenuBar(mb);label=new JLabel("選課管理系統",JLabel.CENTER);label.setFont(new Font("宋體",Font.BOLD,36);label.setHorizontalTextPosition(SwingConstants.CENTER);label.setForeground(Color.red);/點擊事件add1.addActionListener(this);updata1.addActionListener(this);delete1.add

15、ActionListener(this);m5.addActionListener(this);add2.addActionListener(this);delete2.addActionListener(this);updata2.addActionListener(this);add3.addActionListener(this);delete3.addActionListener(this);updata3.addActionListener(this);學生查詢.addActionListener(this);card=new CardLayout();pCenter=new JPa

16、nel();pCenter.setLayout(card);增加學生界面=new Addstu();修改學生界面=new Updatastu(); 刪除學生界面=new Delstu();增加課程界面=new AddC();刪除課程界面=new DelC();修改課程界面=new UpdateC();增加選課界面=new AddSC();刪除選課界面=new DelSC();修改選課界面=new UpdateSC();學生查詢界面=new Selstu();pCenter.add("歡迎界面",label);pCenter.add("增加學生界面",增加

17、學生界面);pCenter.add("修改學生界面",修改學生界面);pCenter.add("刪除學生界面",刪除學生界面);pCenter.add("增加課程界面",增加課程界面);pCenter.add("刪除課程界面",刪除課程界面);pCenter.add("修改課程界面",修改課程界面);pCenter.add("增加選課界面",增加選課界面);pCenter.add("刪除選課界面",刪除選課界面);pCenter.add("修改選

18、課界面",修改選課界面);pCenter.add("學生查詢界面", 學生查詢界面);add(pCenter,BorderLayout.CENTER);validate();setVisible(true);setBounds(400,150,400,280);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); addWindowListener(new WindowAdapter()/關閉程序時的操作public void windowClosing(WindowEvent e)System.exit(0); );va

19、lidate();private void addJMenuBar() mb.add(m1);mb.add(m2);mb.add(m3);mb.add(m4);mb.add(m5);private void addMenu4() m4.add(學生查詢);m4.setFont(t);private void addMenu3() m3.add(add3);m3.add(updata3);m3.add(delete3);m3.setFont(t);private void addMenu2() /將菜單加入到菜單欄中m2.add(add2);m2.add(updata2);m2.add(dele

20、te2);m2.setFont(t); private void addMenu1() m1.add(add1);m1.add(updata1);m1.add(delete1);m1.setFont(t); public void actionPerformed(ActionEvent e)Object obj=e.getSource();if(obj=m5)System.exit(0);elseif(obj=add1)card.show(pCenter,"增加學生界面");elseif(obj=updata1) card.show(pCenter,"修改學生界面

21、");elseif(obj=delete1) card.show(pCenter, "刪除學生界面");elseif(obj=add2) card.show(pCenter, "增加課程界面");elseif(obj=delete2) card.show(pCenter, "刪除課程界面");elseif(obj=updata2) card.show(pCenter, "修改課程界面");elseif(obj=add3) card.show(pCenter, "增加選課界面");els

22、eif(obj=delete3) card.show(pCenter, "刪除選課界面");elseif(obj=updata3) card.show(pCenter, "修改選課界面");elseif(obj=學生查詢) card.show(pCenter, "學生查詢界面");public static void main(String args) new Menu();效果圖:添加界面:AddC.java/AddSC.java/Addstu.java添加數據時,若遇到必須信息未填寫、不能重復的信息在數據庫中已存在,都會提示無法添

23、加及其錯誤原因。import java.awt.*;import javax.swing.*;import java.sql.*;import java.awt.event.*;public class AddC extends JPanel implements ActionListenerJTextField 課號,課名;JButton 錄入;public AddC()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println(&quo

24、t;不能設置外觀: "+e);課號=new JTextField(12);課名=new JTextField(12);錄入=new JButton("錄入");錄入.addActionListener(this);Box box1=Box.createHorizontalBox();/橫放boxBox box2=Box.createHorizontalBox();Box box3=Box.createHorizontalBox();Box box4=Box.createHorizontalBox();box1.add(new JLabel("課號:&qu

25、ot;);box1.add(課號);box2.add(new JLabel("課名:");box2.add(課名);box4.add(錄入);Box boxH=Box.createVerticalBox();/豎放boxboxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(Box.createVerticalGlue();JPanel messPanel=new JPanel();messPanel.add(boxH);setLayout(new BorderLayout();add(mes

26、sPanel,BorderLayout.CENTER);validate();效果圖:添加界面:UpdateC.java/UpdateSC.java /Updatestu.java先查找你想要修改的項目,若修改的信息包括號碼(學號、課號),則會進行查詢,如果修改后的號碼已存在,以及修改后必須的信息變成空都會提示無法修改和其錯誤原因。此外,若修改C表或則S表,會連同SC表中對應的信息一起修改。import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;public class UpdateC e

27、xtends JPanel implements ActionListenerString save=null;JTextField 課號1,課號,課名;JButton 修改,查找;public UpdateC()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println("不能設置外觀: "+e);課號1=new JTextField(12);課號=new JTextField(12);課名=new JTextFiel

28、d(12);修改=new JButton("修改");查找=new JButton("查找");Box box1=Box.createHorizontalBox();/橫放boxBox box2=Box.createHorizontalBox();Box box3=Box.createHorizontalBox();Box box4=Box.createHorizontalBox();Box box5=Box.createHorizontalBox();box1.add(new JLabel("課號:",JLabel.CENTER);

29、box1.add(課號);box2.add(new JLabel("課名:",JLabel.CENTER);box2.add(課名);box3.add(修改);box5.add(new JLabel("課號:",JLabel.CENTER);box5.add(課號1);box5.add(查找);修改.addActionListener(this); 查找.addActionListener(this);Box boxH=Box.createVerticalBox();/豎放boxboxH.add(box1);boxH.add(box2);boxH.add

30、(box3);boxH.add(box4);boxH.add(Box.createVerticalGlue();JPanel picPanel=new JPanel();JPanel messPanel=new JPanel();messPanel.add(box5);picPanel.add(boxH);setLayout(new BorderLayout();JSplitPane splitV=new JSplitPane(JSplitPane.VERTICAL_SPLIT,messPanel,picPanel);/分割add(splitV,BorderLayout.CENTER);val

31、idate();刪除界面:DelC.java/DelSC.java /Deltu.java先查找你想要刪除的項目,然后刪除,此外,若刪除C表或則S表的內容,會連同SC表中對應的信息一起修改。import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;public class DelC extends JPanel implements ActionListenerString save=null;JTextField 課號1,課號,課名;JButton 刪除,查找;public DelC()t

32、ry UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println("不能設置外觀: "+e);課號1=new JTextField(12);課號=new JTextField(12);課名=new JTextField(12);刪除=new JButton("刪除");查找=new JButton("查找");Box box1=Box.createHorizontalBox();/橫放bo

33、xBox box2=Box.createHorizontalBox();Box box3=Box.createHorizontalBox();Box box4=Box.createHorizontalBox();Box box5=Box.createHorizontalBox();box1.add(new JLabel("課號:",JLabel.CENTER);box1.add(課號);box2.add(new JLabel("課名:",JLabel.CENTER);box2.add(課名);box4.add(刪除);box5.add(new JLabe

34、l("課號:",JLabel.CENTER);box5.add(課號1);box5.add(查找);Box boxH=Box.createVerticalBox();/豎放boxboxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(Box.createVerticalGlue();刪除.addActionListener(this); 查找.addActionListener(this);JPanel picPanel=new JPanel();JPanel messPanel=new JP

35、anel();messPanel.add(box5);picPanel.add(boxH);setLayout(new BorderLayout();JSplitPane splitV=new JSplitPane(JSplitPane.VERTICAL_SPLIT,messPanel,picPanel);/分割add(splitV,BorderLayout.CENTER);validate();查詢界面:Selsto.java可以以任意條件模糊查找相關的表。import java.awt.*;import java.awt.event.*;import java.sql.*;import j

36、avax.swing.*;public class Selstu extends JPanel implements ActionListenerJTextField 學號,姓名,系別;JButton 查找;JTextField 課號,課名;JButton 查找1;JTextField 課號1,學號1,成績;JButton 查找2; public Selstu ()學號=new JTextField(12);姓名=new JTextField(12);系別=new JTextField(12);課號=new JTextField(12);課名=new JTextField(12);課號1=ne

37、w JTextField(12);學號1=new JTextField(12);成績=new JTextField(12);查找=new JButton("查找學生信息");查找1=new JButton("查找課程信息");查找2=new JButton("查找選課信息");Box box1=Box.createHorizontalBox();/橫放boxBox box2=Box.createHorizontalBox();Box box4=Box.createHorizontalBox();Box box5=Box.createH

38、orizontalBox();Box box6=Box.createHorizontalBox();Box box7=Box.createHorizontalBox();box1.add(new JLabel("學號:",JLabel.CENTER);box1.add(學號);box1.add(new JLabel("姓名:",JLabel.CENTER);box1.add(姓名);box1.add(new JLabel("系別:",JLabel.CENTER);box1.add(系別);box2.add(查找);box4.add(n

39、ew JLabel("課號:",JLabel.CENTER);box4.add(課號);box4.add(new JLabel("課名:",JLabel.CENTER);box4.add(課名);box6.add(查找1);box5.add(new JLabel("課號:",JLabel.CENTER);box5.add(課號1);box5.add(new JLabel("學號:",JLabel.CENTER);box5.add(學號1);box5.add(new JLabel("成績:",JL

40、abel.CENTER);box5.add(成績);box7.add(查找2); Box boxH1=Box.createVerticalBox();/豎放boxboxH1.add(box1);boxH1.add(box2);boxH1.add(Box.createVerticalGlue();Box boxH2=Box.createVerticalBox();/豎放boxboxH2.add(box4);boxH2.add(box6);boxH2.add(Box.createVerticalGlue(); Box boxH3=Box.createVerticalBox();/豎放boxboxH

41、3.add(box5);boxH3.add(box7);boxH3.add(Box.createVerticalGlue(); 查找.addActionListener(this);查找1.addActionListener(this);查找2.addActionListener(this); JPanel messPanel=new JPanel();JPanel picPanel=new JPanel();JPanel threePanel=new JPanel();messPanel.add(boxH1);picPanel.add(boxH2);threePanel.add(boxH3)

42、;setLayout(new BorderLayout();JSplitPane splitV=new JSplitPane(JSplitPane.VERTICAL_SPLIT,messPanel,picPanel);/分割add(splitV,BorderLayout.CENTER);JSplitPane splitV1=new JSplitPane(JSplitPane.VERTICAL_SPLIT,splitV,threePanel);/分割add(splitV1,BorderLayout.CENTER);validate();效果圖:五、課程設計學習心得通過本次課程設計,成功的完成了這

43、個小型簡單的系統的設計,在整個設計過程中我對JAVA使用和它強大的作用有了一個更深刻的認識,盡管這個系統很簡單,但是它讓我綜合運用了這個學期所學的JAVA的很多內容,在此基礎上,對JAVA的基礎知識得到了更好的鞏固。其實,在制作的過程中我也學到很多思想:首先,要學會統籌全局,合理規劃,例如在制作整個框架的時候提前就要做全面考慮,要把整個結構圖畫出來,并且要對數據庫表里的東西做全面規劃。同時在編寫程序的時候也要想好先實現什么功能,再實現什么功能,這樣做出來的東西才有條理性,更容易實現和理解。其次,要細心仔細。Java程序雖然容易理解,但在寫的過程中一不留心就會出現錯誤。當然出錯是在所難免的,與性

44、質有關的錯誤可以經過思考討論后進行改正,但如果粗心大意,出現輸入上的錯誤就很難發現和修改,會耽誤很多時間。我認為最大的收獲是提高了自己的動手能力。在平時的上機中大多數是根據書上的思想和布局來寫程序的。這次的課程設計要自己思考自己寫,考慮的東西比平時上機考慮的要多的多。在整個設計過程中寫代碼不是最難的,最難的是構思和布局。這次課程設計也是一次很好的實踐活動,讓我們體會到了java的神奇作用。下面是java的源代碼,總共有15個類。分別是AddC.java,AddSC.java,Addstu.java, Delstu.java,DelC.java, DelSC.java,Menu.java,Sel

45、C.java,SelSC.java,Selstu.java,Student.java,Updatastu.java,UpdateC.java,UpdateSC.java,User.java。因為本人太懶,所以一些類名的錯誤沒有修改,也沒有優化系統,總之還算是能運行的,數據庫用的是sql2005,如果用別的數據庫就要改驅動,具體自己上網百度吧。如果自己有空,優化一下還是很好滴AddC.java:import java.awt.*;import javax.swing.*;import java.sql.*;import java.awt.event.*;public class AddC ext

46、ends JPanel implements ActionListenerJTextField 課號,課名;JButton 錄入;public AddC()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println("不能設置外觀: "+e);課號=new JTextField(12);課名=new JTextField(12);錄入=new JButton("錄入");錄入.addActionLis

47、tener(this);Box box1=Box.createHorizontalBox();/橫放boxBox box2=Box.createHorizontalBox();Box box3=Box.createHorizontalBox();Box box4=Box.createHorizontalBox();box1.add(new JLabel("課號:");box1.add(課號);box2.add(new JLabel("課名:");box2.add(課名);box4.add(錄入);Box boxH=Box.createVerticalBo

48、x();/豎放boxboxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(Box.createVerticalGlue();JPanel messPanel=new JPanel();messPanel.add(boxH);setLayout(new BorderLayout();add(messPanel,BorderLayout.CENTER);validate();public void actionPerformed(ActionEvent c)Object obj=c.getSource();if(o

49、bj=錄入)if(課號.getText().equals("")|課名.getText().equals("")JOptionPane.showMessageDialog(this,"學生信息請填滿再錄入!" );Statement stmt=null;ResultSet rs=null,rs1=null;String sql,sql1; sql1="select * from C where Cno='"+課號.getText()+"'" sql="insert in

50、to C values('"+課號.getText()+"','"+課名.getText()+"')" try Connection dbConn1=CONN();stmt=(Statement)dbConn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs1=stmt.executeQuery(sql1);if(rs1.next()JOptionPane.showMessageDialog(this

51、,"該課號以存在,無法添加");elsestmt.executeUpdate(sql);JOptionPane.showMessageDialog(this,"添加成功");rs1.close();stmt.close(); catch(SQLException e) System.out.print("SQL Exception occur.Message is:"+e.getMessage(); /連接數據庫方法public static Connection CONN() String driverName = "co

52、m.microsoft.sqlserver.jdbc.SQLServerDriver" /加載JDBC驅動 String dbURL = "jdbc:sqlserver:/localhost:1433; DatabaseName=student" /連接服務器和數據庫test String userName = "sa" /默認用戶名 String userPwd = "huangjiwei" /密碼 Connection dbConn=null; try Class.forName(driverName); dbConn

53、= DriverManager.getConnection(dbURL, userName, userPwd); System.out.println("Connection Successful!"); /如果連接成功 控制臺輸出Connection Successful! catch (Exception e) e.printStackTrace(); return dbConn;AddSC.java:import java.awt.*;import javax.swing.*;import java.sql.*;import java.util.*;import ja

54、vax.swing.filechooser.*;import java.io.*;import java.awt.event.*;public class AddSC extends JPanel implements ActionListenerJTextField 課號,學號,成績;JButton 錄入;public AddSC()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println("不能設置外觀: "+e)

55、;課號=new JTextField(12);學號=new JTextField(12);成績=new JTextField(12);錄入=new JButton("錄入");錄入.addActionListener(this);Box box1=Box.createHorizontalBox();/橫放boxBox box2=Box.createHorizontalBox();Box box3=Box.createHorizontalBox();Box box4=Box.createHorizontalBox();box1.add(new JLabel("課號:");box1.add(課號);box2.add(new JLabel("學號:");box2.add(學號);box3.add(new JLabel("成績:");box3.add(成績);box4.add(錄入);Box boxH=Box.createVerticalBox();/豎放boxboxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(

溫馨提示

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

評論

0/150

提交評論