《JAVA数据库课程设计--学生选课管理系统的.docx》由会员分享,可在线阅读,更多相关《JAVA数据库课程设计--学生选课管理系统的.docx(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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.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