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.SQLServerDri
4、ver; /加载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); System.out.p
5、rintln(Connection Successful!); /假如连接成功 控制台输出Connection Successful! catch (Exception e) e.printStackTrace(); return dbConn;用户登录界面user.java:登录时,通常账号密码未填写、输入错误账号密码全部会提犯错误提醒框。在填写好账号密码后,会读取数据库里admin表,并查询其输入是否存在,若无误,则登录到用户界面。public class User extends JFrame private JLabel use,password; private JTextField
6、 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,Font.P
7、LAIN,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);setVisi
8、ble(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.event.*;impo
9、rt 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 JMenuBar();/菜单栏
10、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 );JMenu m3=n
11、ew 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.setTitle(学生选
12、课管理系统);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.setHorizo
13、ntalTextPosition(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);add3.addAct
14、ionListener(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 UpdateC();增
15、加选课界面=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(增加选课界面,增加选课界面);pCenter.
16、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(WindowEvent e)Syste
17、m.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.add(updat
18、a2);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,修改学生界面);e
19、lseif(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=updata3) card.
20、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 class Add
21、C 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);Box box
22、1=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(box2);box
23、H.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(UIManager.getSystemLoo
25、kAndFeelClassName();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();Box box4=Box.cr
26、eateHorizontalBox();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(this);Box box
27、H=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(JSplitPane.VER
28、TICAL_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 implements ActionListene
29、rString 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 JButton(查找);Box box1=
30、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.add(删除);box5.add(ne
31、w 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 messPanel=new JPanel(
32、);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 javax.s
33、wing.*;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=new JTex
34、tField(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=Box.createHorizont
35、alBox();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 JLabel(课名:,JLabel.CENTE
36、R);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.add(Box.createVerti
37、calGlue();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);查找2.addActionListen
38、er(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(splitV,BorderLayout.CE
39、NTER);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,Updatastu.java,Upd
40、ateC.java,UpdateSC.java,User.java。因为本人太懒,所以部分类名错误没有修改,也没有优化系统,总而言之还算是能运行,数据库用是sql,假如用别数据库就要改驱动,具体自己上网baidu吧。假如自己有空,优化一下还是很好滴AddC.jaba:import java.awt.*;import javax.swing.*;import java.sql.*;import java.awt.event.*;public class AddC extends JPanel implements ActionListenerJTextField 课号,课名;JButton 录入
41、;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.createHorizontalBox();
42、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(课号.getText().equals(