1、 Java程序设计结课报告课程名称 JAVA程序设计 设计题目 学生选课管理系统 专业班级 学 号 学生姓名 教 师 信息工程系目 录目 录III第1章 系统简介41.1 系统功能4第2章 表的设计52.1 系统数据库表结构:5第3章 连接数据库的实现6第4章 系统详细设计74.1系统登录模块设计74.2系统主界面详细设计114.3学生管理模块设计164.4课程管理模块设计204.5选课管理模块设计23答辩记录27成绩考核表27学生选课管理系统第1章 系统简介1.1 系统功能本系统主要功能:1)管理学生信息,其中包括添加,删除,修改等操作。2)管理课程信息,其中包括添加,删除,修改等操作。3)
2、管理选课信息,其中包括添加,删除,修改等操作。4)查询信息,其中包括查询学生信息,查询课程信息,查询选课信息.。5 )维护系统,备份所有表格为Excel格式。1.2 系统引用例子课本P237页 13.10课本P364页 20.5课本P389页 20.10课本P387页 21.6第2章 表的设计2.1 系统数据库表结构:在此小节将系统数据库表结构用表的形式画出,如:字段名字段类型长度主/外键字段值约束对应中文名Snonvarchar50PNot null学号Snamenvarchar50Not null学生名字表2.1 学生信息表(S)Sxnvarchar50Not null学生系别字段名字段类
3、型长度主/外键字段值约束对应中文名Cnonvarchar50PNot null课程号Cnamenvarchar50Not null课程名字表2.2 课程信息表(C)字段名字段类型长度主/外键字段值约束对应中文名Snonvarchar50PNot null学号Cnonvarchar50PNot null课程号表2.3 选课信息表(SC)Cnvarchar50Not null分数第3章 连接数据库的实现此节可简写,可适当贴一些SQL Server数据库连接的关键代码,如:Connection dbConn=null;try Class.forName(net.sourceforge.jtds.jd
4、bc.Driver); dbConn = DriverManager.getConnection( jdbc:jtds:sqlserver:/localhost:1433/ + student, sa, 123); catch (Exception e) e.printStackTrace(); return dbConn; / 返回Connection对象第4章 系统详细设计4.1系统登录模块设计1、 运行效果图 图4.1.1 登陆界面图4.1.2 登陆成功 图4.1.2 登陆失败 2、 主要代码import java.awt.*;import java.awt.event.*;import
5、 javax.swing.*;import java.sql.*;public class User extends JFrameprivate 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();use=new JLabel(username:);us
6、e.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(退出);/设置登录方法BHandler b=new BHandler();EXIT d=new EXIT();b1.addActionListener(b);b2.addActionListener(
7、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 static void main(String args) User f1=new User(new JFrame();/登录按钮方法private class BHandler implements Ac
8、tionListenerpublic void actionPerformed(ActionEvent event)if(k1.getText().equals()|k2.getText().equals()JOptionPane.showMessageDialog(User.this,用户名密码不能为空! );elseStatement stmt=null;ResultSet rs=null;String sql; sql=select * from admin where username=+k1.getText()+; try Connection dbConn1=Conn.CONN()
9、;stmt=(Statement)dbConn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=stmt.executeQuery(sql);if(rs.next()String xm=rs.getString(password);if(k2.getText().equals(xm.trim()JOptionPane.showMessageDialog(User.this,登录成功);dispose();new Menu();/管理窗口 elseJOptionPane.showM
10、essageDialog(User.this,密码错误); elseJOptionPane.showMessageDialog(User.this,用户名错误);rs.close();stmt.close();catch(SQLException e)JOptionPane.showMessageDialog(User.this,SQL错误信息:+e.getMessage(); /退出方法结束private class EXIT implements ActionListenerpublic void actionPerformed(ActionEvent even)System.exit(0
11、);/父类结束4.2系统主界面详细设计1、 运行效果图 图4.2.1 登陆成功后界面图4.2.2 学生管理菜单图4.2.2 课程管理菜单图4.2.2 选课管理菜单图4.2.2 查询管理菜单2、实现代码:添加数据时,若遇到必须信息未填写、不能重复的信息在数据库中已存在,都会提示无法添加及其错误原因。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Menu extends JFrame implements ActionListenerAddstu 增加学生界面;Updatastu 修改学生界面
12、;Delstu 删除学生界面;AddC 增加课程界面;DelC 删除课程界面;UpdateC 修改课程界面;AddSC 增加选课界面;DelSC 删除选课界面;UpdateSC 修改选课界面;Selstu 学生查询界面;Backup 备份界面;JPanel pCenter;CardLayout card=null;JLabel label=null;JMenuBar mb=new JMenuBar();/菜单栏JMenu m1=new JMenu(学生管理);JMenuItem add1=new JMenuItem(添加学生学籍 );JMenuItem updata1=new JMenuIte
13、m(更新学生学籍 );JMenuItem delete1=new JMenuItem(删除学生学籍 );JMenu m2=new JMenu(课程管理);JMenuItem add2=new JMenuItem(增加课程 );JMenuItem updata2=new JMenuItem(更新课程 );JMenuItem delete2=new JMenuItem(删除课程 );JMenu m3=new JMenu(选课管理);JMenuItem add3=new JMenuItem(成绩录入 );JMenuItem updata3=new JMenuItem(成绩修改 );JMenuItem
14、 delete3=new JMenuItem(成绩删除 );JMenu m4=new JMenu(查询管理);JMenuItem 学生查询=new JMenuItem(查询信息 );JMenuItem backup=new JMenuItem(备份信息 );JMenuItem m5=new JMenuItem(系统退出);Font t=new Font (sanerif,Font.PLAIN,12);public Menu ()this.setTitle(学生选课管理系统);try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelC
15、lassName();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,25);label.setHorizontalTextPosition(SwingConstants.CENTER);label.setForeg
16、round(Color.red);/点击事件add1.addActionListener(this);updata1.addActionListener(this);delete1.addActionListener(this);m5.addActionListener(this);add2.addActionListener(this);delete2.addActionListener(this);updata2.addActionListener(this);add3.addActionListener(this);delete3.addActionListener(this);upda
17、ta3.addActionListener(this);学生查询.addActionListener(this);backup.addActionListener(this);card=new CardLayout();pCenter=new JPanel();pCenter.setLayout(card);增加学生界面=new Addstu();修改学生界面=new Updatastu(); 删除学生界面=new Delstu();增加课程界面=new AddC();删除课程界面=new DelC();修改课程界面=new UpdateC();增加选课界面=new AddSC();删除选课界
18、面=new DelSC();修改选课界面=new UpdateSC();学生查询界面=new Selstu();备份界面=new Backup(); pCenter.add(欢迎界面,label);pCenter.add(增加学生界面,增加学生界面);pCenter.add(修改学生界面,修改学生界面);pCenter.add(删除学生界面,删除学生界面);pCenter.add(增加课程界面,增加课程界面);pCenter.add(删除课程界面,删除课程界面);pCenter.add(修改课程界面,修改课程界面);pCenter.add(增加选课界面,增加选课界面);pCenter.add(
19、删除选课界面,删除选课界面);pCenter.add(修改选课界面,修改选课界面);pCenter.add(学生查询界面, 学生查询界面);pCenter.add(备份界面, 备份界面);add(pCenter,BorderLayout.CENTER);validate();setVisible(true);setBounds(400,150,600,380);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); addWindowListener(new WindowAdapter()/关闭程序时的操作public void windowClosin
20、g(WindowEvent 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.add(backup); m4.setFont(t);private void addMenu3() m3.add(add3);m3.add(updata3);m3.add(delete3);m3.setFont(t);private void addMenu2()
21、/将菜单加入到菜单栏中m2.add(add2);m2.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
22、=updata1)card.show(pCenter,修改学生界面);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, 删除选
23、课界面);elseif(obj=updata3)card.show(pCenter, 修改选课界面);elseif(obj=学生查询)card.show(pCenter, 学生查询界面);elseif(obj=backup)card.show(pCenter, 备份界面);public static void main(String args) new Menu();4.3学生管理模块设计1、 运行效果图图4.3.1 添加学生学籍图4.3.1 修改学生学籍图4.3.1 删除学生学籍2、 实现代码:Addstu.java/Updatastu.java/Delstu.javaimport java
24、.awt.*;import javax.swing.*;import java.sql.*;import java.awt.event.*;public class Addstu extends JPanel implements ActionListenerJTextField 学号,姓名,系别;JButton 录入;public Addstu()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception e)System.err.println(不能设置外观: +e);学号=n
25、ew 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(学号:/*,JLabel.CENTER*/);box
26、1.add(学号);box2.add(new JLabel(姓名:/*,JLabel.CENTER*/);box2.add(姓名);box3.add(new JLabel(系别:/*,JLabel.CENTER*/);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();me
27、ssPanel.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()|系别.getText().equals()JOptionPane.showMessageDialog(this,学生信息请填满再录入! );Statement stm
28、t=null;ResultSet rs1=null;String sql,sql1; sql1=select * from S where Sno=+学号.getText()+; sql=insert into S values(+学号.getText()+,+姓名.getText()+,+系别.getText()+); try Connection dbConn1=Conn.CONN();stmt=(Statement)dbConn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);r
29、s1=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(); 4.4课程管理模块设计1、 运行效果图图4.4.1 课程录入
30、界面图4.4.2 课程修改界面图4.4.3 课程删除界面2、 运行代码:AddC.java/UpdataC.java/DelC.javaimport 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.getSystemLook
31、AndFeelClassName();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();Box box3=Box.createHorizontalBox();Box box4=Box.createHorizontalBo
32、x();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 BorderLayo
33、ut();add(messPanel,BorderLayout.CENTER);validate();public void actionPerformed(ActionEvent c)Object obj=c.getSource();if(obj=录入)if(课号.getText().equals()|课名.getText().equals()JOptionPane.showMessageDialog(this,学生信息请填满再录入! );Statement stmt=null;ResultSet rs=null,rs1=null;/结果集String sql,sql1; sql1=sele
34、ct * from C where Cno=+课号.getText()+; sql=insert into C values(+课号.getText()+,+课名.getText()+); try Connection dbConn1=Conn.CONN();stmt=(Statement)dbConn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs1=stmt.executeQuery(sql1);if(rs1.next()JOptionPane.showMessageDial
35、og(this,该课号以存在,无法添加);elsestmt.executeUpdate(sql);JOptionPane.showMessageDialog(this,添加成功);rs1.close();stmt.close(); catch(SQLException e) System.out.print(SQL 错误信息:+e.getMessage(); 4.5选课管理模块设计1、运行效果图图4.5.1 成绩录入界面图4.5.2 成绩修改界面图4.5.3 成绩删除界面2、运行代码:AddSC.java/UpdataSC.java/DelSC.javaimport java.awt.*;im
36、port javax.swing.*;import java.sql.*;import java.util.*;import javax.swing.filechooser.*;import java.io.*;import java.awt.event.*;public class AddSC extends JPanel implements ActionListenerJTextField 课号,学号,成绩;JButton 录入;public AddSC()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassNa
37、me();catch(Exception e)System.err.println(不能设置外观: +e);课号=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 b