JAVA數據庫課程設計--學生選課管理系統的_第1頁
JAVA數據庫課程設計--學生選課管理系統的_第2頁
JAVA數據庫課程設計--學生選課管理系統的_第3頁
JAVA數據庫課程設計--學生選課管理系統的_第4頁
JAVA數據庫課程設計--學生選課管理系統的_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 一、課程設計目的通過這次的設計,主要是做出一個小型的管理系統,來加強對JAVA所學知識的鞏固和融會貫通,可以說是對一個學期所學知識的一個小結,加深對JAVA數據庫的理解。二、需求分析功能需求分析: 該系統具備管理學生信息、課程信息、選課信息的功能:用戶通過輸入賬號和密碼進下該系統后,可以進行一些基礎維護(學生信息維護、課程信息維護、選課信息維護)。全部都可以進行增加、修改、刪除、模糊查詢。三、數據項:1表admin(用戶表)FieldTypeNullKeyComment Usernamechar(10)PRI用戶名passwordchar(10)密碼NameChar(10)用戶昵稱2表S(學

2、生信息表)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學號Cnvarchar(50)成績四、系統功能描述該小型系統主要是用于管理學生及課程的基本信息,主要功能包括四方面的:1.管理學生信息,其中

3、包括添加,刪除,修改等操作。2.管理課程信息,其中包括添加,刪除,修改等操作。3.管理選課信息,其中包括添加,刪除,修改等操作。4.查詢信息,其中包括查詢學生信息,查詢課程信息,查詢選課信息等操作。選課信息課程信息學生信息刪除信息修改信息添加信息刪除信息修改信息添加信息刪除信息修改信息添加信息查詢管理選課管理課程管理學生管理學生信息管理系統 五、代碼分析連接數據庫方法:這是java連接數據庫的驅動,有關數據庫的操作都要用到他。public static Connection CONN() String driverName = com.microsoft.sqlserver.jdbc.SQLS

4、erverDriver; /加載JDBC驅動String dbURL = jdbc:sqlserver:/localhost:1433; DatabaseName=student; /連接服務器和數據庫test,此處student是數據庫名 String userName = sa; /默認用戶名 String userPwd = mima; /密碼 Connection dbConn=null; try Class.forName(driverName); dbConn = DriverManager.getConnection(dbURL, userName, userPwd); Syst

5、em.out.println(Connection Successful!); /如果連接成功 控制臺輸出Connection Successful! catch (Exception e) e.printStackTrace(); return dbConn;用戶登錄界面user.java:登錄時,凡是賬號密碼未填寫、輸入錯誤賬號密碼都會提出錯誤提示框。在填寫好賬號密碼后,會讀取數據庫里admin表,并查詢其輸入是否存在,若無誤,則登錄到用戶界面。public class User extends JFrame private JLabel use,password; private JTe

6、xtField k1;/用戶名輸入框 private JPasswordField k2;/密碼輸入框 private JButton b1,b2;/登錄窗口public User(JFrame f)super(系統登錄);Container c=getContentPane();c.setLayout(new FlowLayout();use=new JLabel(username:);use.setFont(new Font(Serif,Font.PLAIN,20);password=new JLabel(password:);password.setFont(new Font(Serif

7、,Font.PLAIN,20);k1=new JTextField(12);k2=new JPasswordField(12);b1=new JButton(登錄);b2=new JButton(退出);/設置登錄方法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);

8、setVisible(true);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/主函數public static void main(String args) User f1=new User(new JFrame();效果圖:用戶界面:Menu.java用戶界面能菜單欄有4個一級菜單,學生管理、課程管理、選課管理都能添加、修改、刪除數據,分別操作數據庫里的S表(學生),C表(課程),SC表(選課)。查詢管理則可進行三個表的查詢。import java.awt.*;import java.awt.even

9、t.*;import javax.swing.*;public class Menu extends JFrame implements ActionListenerAddstu 增加學生界面;Updatastu 修改學生界面;Delstu 刪除學生界面;AddC 增加課程界面;DelC 刪除課程界面;UpdateC 修改課程界面;AddSC 增加選課界面;DelSC 刪除選課界面;UpdateSC 修改選課界面;Selstu 學生查詢界面;JPanel pCenter;CardLayout card=null;JLabel label=null;JMenuBar mb=new JMenuBa

10、r();/菜單欄JMenu m1=new JMenu(學生管理);JMenuItem add1=new JMenuItem(add1 );JMenuItem 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

11、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 JMenuItem(系統退出);Font t=new Font (sanerif,Font.PLAIN,12);public Menu ()this.setT

12、itle(學生選課管理系統);try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println(不能設置外觀: +e);/組合菜單addMenu1();addMenu2();addMenu3();addMenu4();addJMenuBar();setJMenuBar(mb);label=new JLabel(選課管理系統,JLabel.CENTER);label.setFont(new Font(宋體,Font.BOLD,36);label.s

13、etHorizontalTextPosition(SwingConstants.CENTER);label.setForeground(Color.red);/點擊事件add1.addActionListener(this);updata1.addActionListener(this);delete1.addActionListener(this);m5.addActionListener(this);add2.addActionListener(this);delete2.addActionListener(this);updata2.addActionListener(this);add

14、3.addActionListener(this);delete3.addActionListener(this);updata3.addActionListener(this);學生查詢.addActionListener(this);card=new CardLayout();pCenter=new JPanel();pCenter.setLayout(card);增加學生界面=new Addstu();修改學生界面=new Updatastu(); 刪除學生界面=new Delstu();增加課程界面=new AddC();刪除課程界面=new DelC();修改課程界面=new Upd

15、ateC();增加選課界面=new AddSC();刪除選課界面=new DelSC();修改選課界面=new UpdateSC();學生查詢界面=new Selstu();pCenter.add(歡迎界面,label);pCenter.add(增加學生界面,增加學生界面);pCenter.add(修改學生界面,修改學生界面);pCenter.add(刪除學生界面,刪除學生界面);pCenter.add(增加課程界面,增加課程界面);pCenter.add(刪除課程界面,刪除課程界面);pCenter.add(修改課程界面,修改課程界面);pCenter.add(增加選課界面,增加選課界面);

16、pCenter.add(刪除選課界面,刪除選課界面);pCenter.add(修改選課界面,修改選課界面);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(WindowEven

17、t e)System.exit(0); );validate();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.

18、add(updata2);m2.add(delete2);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,

19、修改學生界面);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, 增加選課界面);elseif(obj=delete3) card.show(pCenter, 刪除選課界面);elseif(obj=updat

20、a3) card.show(pCenter, 修改選課界面);elseif(obj=學生查詢) card.show(pCenter, 學生查詢界面);public static void main(String args) new Menu();效果圖:添加界面:AddC.java/AddSC.java/Addstu.java添加數據時,若遇到必須信息未填寫、不能重復的信息在數據庫中已存在,都會提示無法添加及其錯誤原因。import java.awt.*;import javax.swing.*;import java.sql.*;import java.awt.event.*;public

21、class AddC extends 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(錄入);錄入.addActionListener(this

22、);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.createVerticalBox();/豎放boxboxH.add(box1);boxH.add(

23、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();效果圖:添加界面:UpdateC.java/UpdateSC.java /Updatestu.java先查找你想要修改的項目,若修改的信息包括號碼(學號、課號),則會進行查詢,如果修改后的號碼已存在,以及修改后

24、必須的信息變成空都會提示無法修改和其錯誤原因。此外,若修改C表或則S表,會連同SC表中對應的信息一起修改。import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;public class UpdateC extends JPanel implements ActionListenerString save=null;JTextField 課號1,課號,課名;JButton 修改,查找;public UpdateC()try UIManager.setLookAndFeel(UIManage

25、r.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();/橫放boxBox box2=Box.createHorizontalBox();Box box3=Box.createHorizontalBox();B

26、ox box4=Box.createHorizontalBox();Box box5=Box.createHorizontalBox();box1.add(new JLabel(課號:,JLabel.CENTER);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

27、(this);Box boxH=Box.createVerticalBox();/豎放boxboxH.add(box1);boxH.add(box2);boxH.add(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(

28、JSplitPane.VERTICAL_SPLIT,messPanel,picPanel);/分割add(splitV,BorderLayout.CENTER);validate();刪除界面: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 impleme

29、nts ActionListenerString save=null;JTextField 課號1,課號,課名;JButton 刪除,查找;public DelC()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println(不能設置外觀: +e);課號1=new JTextField(12);課號=new JTextField(12);課名=new JTextField(12);刪除=new JButton(刪除);查找=new JBut

30、ton(查找);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);box1.add(課號);box2.add(new JLabel(課名:,JLabel.CENTER);box2.add(課名);box4.ad

31、d(刪除);box5.add(new JLabel(課號:,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 mess

32、Panel=new JPanel();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.sq

33、l.*;import javax.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 JTextFiel

34、d(12);課號1=new 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.createHorizontalBox();Box box6=

35、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(new JLabel(課號:,JLabel.CENTER);box4.add(課號);box4.add(new JLabe

36、l(課名:,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(成績:,JLabel.CENTER);box5.add(成績);box7.add(查找2); Box boxH1=Box.createVerticalBox();/豎放boxboxH1.add(box1);boxH1.add(box2);boxH1.a

37、dd(Box.createVerticalGlue();Box boxH2=Box.createVerticalBox();/豎放boxboxH2.add(box4);boxH2.add(box6);boxH2.add(Box.createVerticalGlue(); Box boxH3=Box.createVerticalBox();/豎放boxboxH3.add(box5);boxH3.add(box7);boxH3.add(Box.createVerticalGlue(); 查找.addActionListener(this);查找1.addActionListener(this);查

38、找2.addActionListener(this); JPanel messPanel=new JPanel();JPanel picPanel=new JPanel();JPanel threePanel=new JPanel();messPanel.add(boxH1);picPanel.add(boxH2);threePanel.add(boxH3);setLayout(new BorderLayout();JSplitPane splitV=new JSplitPane(JSplitPane.VERTICAL_SPLIT,messPanel,picPanel);/分割add(spli

39、tV,BorderLayout.CENTER);JSplitPane splitV1=new JSplitPane(JSplitPane.VERTICAL_SPLIT,splitV,threePanel);/分割add(splitV1,BorderLayout.CENTER);validate();效果圖:下面是java的源代碼,總共有15個類。分別是AddC.java,AddSC.java,Addstu.java, Delstu.java,DelC.java, DelSC.java,Menu.java,SelC.java,SelSC.java,Selstu.java,Student.java

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

41、Field 課號,課名;JButton 錄入;public AddC()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println(不能設置外觀: +e);課號=new JTextField(12);課名=new JTextField(12);錄入=new JButton(錄入);錄入.addActionListener(this);Box box1=Box.createHorizontalBox();/橫放boxBox box2=Box.

42、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.createVerticalBox();/豎放boxboxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(Box.createV

43、erticalGlue();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(obj=錄入)if(課號.getText().equals()|課名.getText().equals()JOptionPane.showMessageDialog(this,學生信

44、息請填滿再錄入! );Statement stmt=null;ResultSet rs=null,rs1=null;String sql,sql1; sql1=select * from C where Cno=+課號.getText()+; sql=insert into C values(+課號.getText()+,+課名.getText()+); try Connection dbConn1=CONN();stmt=(Statement)dbConn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_

45、READ_ONLY);rs1=stmt.executeQuery(sql1);if(rs1.next()JOptionPane.showMessageDialog(this,該課號以存在,無法添加);elsestmt.executeUpdate(sql);JOptionPane.showMessageDialog(this,添加成功);rs1.close();stmt.close(); catch(SQLException e) System.out.print(SQL Exception occur.Message is:+e.getMessage(); /連接數據庫方法public sta

46、tic Connection CONN() String driverName = com.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); d

47、bConn = 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 javax.sw

48、ing.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);課號=new JTextField

49、(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(學

50、號:);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(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(obj=錄入)if(課號.getText().equals()|學號.getText().equals()JOptionPane.showMessageDialog(this,填寫課號與學號才能錄入! );elseStatement

溫馨提示

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

評論

0/150

提交評論