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)-PR
3、I学号Cnvarchar(50)-成绩四、系统功能描述该小型系统主要是用于管理学生及课程的基本信息,主要功能包括四方面的:1.管理学生信息,其中包括添加,删除,修改等操作。2。管理课程信息,其中包括添加,删除,修改等操作。3.管理选课信息,其中包括添加,删除,修改等操作。4。查询信息,其中包括查询学生信息,查询课程信息,查询选课信息等操作。选课信息课程信息学生信息删除信息修改信息添加信息删除信息修改信息添加信息删除信息修改信息添加信息查询管理选课管理课程管理学生管理学生信息管理系统 五、代码分析连接数据库方法:这是java连接数据库的驱动,有关数据库的操作都要用到他。public static
4、 Connection 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 dbConn=null; try Class.forName(driv
5、erName); dbConn = DriverManager。getConnection(dbURL, userName, userPwd); System.out。println(”Connection Successful!”); /如果连接成功 控制台输出Connection Successful! catch (Exception e) e。printStackTrace(); return dbConn;用户登录界面user。java:登录时,凡是账号密码未填写、输入错误账号密码都会提出错误提示框。在填写好账号密码后,会读取数据库里admin表,并查询其输入是否存在,若无误,则登录
6、到用户界面.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());use=new JLabel(username:);use.setFont(new Font(Ser
7、if”,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(d);/添加控件c.add(
8、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();效果图:用户界面:Menu。java用户界面能菜单栏有4个一级菜单,学生管理、课程管理、选课管理都能添加、修改、删
9、除数据,分别操作数据库里的S表(学生),C表(课程),SC表(选课)。查询管理则可进行三个表的查询。import java.awt。;import java。awt。event。;import javax。swing。;public class Menu extends JFrame implements ActionListenerAddstu 增加学生界面;Updatastu 修改学生界面;Delstu 删除学生界面;AddC 增加课程界面;DelC 删除课程界面;UpdateC 修改课程界面;AddSC 增加选课界面;DelSC 删除选课界面;UpdateSC 修改选课界面;Selstu
10、 学生查询界面;JPanel pCenter;CardLayout card=null;JLabel label=null;JMenuBar mb=new JMenuBar();/菜单栏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(
11、add2 );JMenuItem updata2=new JMenuItem(”updata2 );JMenuItem delete2=new JMenuItem(”delete2 ”);JMenu 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(查询
12、信息 ”);JMenuItem m5=new JMenuItem(系统退出);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();addMenu4();addJMenuBar
13、();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。addActionListener(this);m5.addActionLis
14、tener(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 JPanel();pCenter。setLayout(card);增加学生界面
15、=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(增加学生界面,增加学生界面);pCenter.add(修改学生界面,修改学生界面);pCenter.add(删除学生界面,删除学生界面);
16、pCenter。add(”增加课程界面,增加课程界面);pCenter.add(”删除课程界面,删除课程界面);pCenter.add(修改课程界面”,修改课程界面);pCenter.add(增加选课界面,增加选课界面);pCenter。add(”删除选课界面,删除选课界面);pCenter.add(修改选课界面”,修改选课界面);pCenter。add(”学生查询界面, 学生查询界面);add(pCenter,BorderLayout。CENTER);validate();setVisible(true);setBounds(400,150,400,280);setDefaultCloseO
17、peration(JFrame.EXIT_ON_CLOSE); addWindowListener(new WindowAdapter()/关闭程序时的操作public void windowClosing(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.setFont(t);private void addMenu
18、3() m3.add(add3);m3。add(updata3);m3.add(delete3);m3。setFont(t);private void addMenu2() /将菜单加入到菜单栏中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。get
19、Source();if(obj=m5)System.exit(0);elseif(obj=add1)card.show(pCenter,增加学生界面”);elseif(obj=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(pCe
20、nter, 修改课程界面);elseif(obj=add3) card.show(pCenter, 增加选课界面”);elseif(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添加数据时,若遇到
21、必须信息未填写、不能重复的信息在数据库中已存在,都会提示无法添加及其错误原因。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(Exce
22、ption 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。createHorizontalBox();box1。add(new JLabel(”课号:
23、));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,Borde
24、rLayout.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 extends JPanel i
25、mplements 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 JTextField(12);修改=new JButton(”修改”
26、);查找=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);box1。add(课号);box2.add(new JLabel(课名:”,JLabel.CENTER);box2
27、.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(box3);boxH。add(box4);boxH。add(Box.createVerticalGlue());JPanel picPanel=new JP
28、anel();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);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