您好,欢迎来到微智科技网。
搜索
您的当前位置:首页用Java与SQL-Server做的学生管理系统

用Java与SQL-Server做的学生管理系统

来源:微智科技网


中北大学 数据库原理 课 程 设 计 说 明 书

学生姓名: 学生姓名: 学生姓名: 学生姓名: 武大为 学 号: 学 号: 学 号: 学 号: 11060342X37 11060342X28 11060342X20 11060342X44 李力钊 周荣祥 南子锐

学 院: 专 业: 题 目: 指导教师 信息商务学院 计算机科学与技术 学生学籍管理系统 武瑞娟 2013年 6月27日

1设计目的:

按照关系型数据库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型的学生学籍管理系统。通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容。 2设计内容:

设计内容:设计如下主要功能模块

1) 实现学生基本情况的录入、修改、删除等基本操作。 2) 对学生基本信息提供灵活的查询方式。 3) 完成一个班级的学期选课功能。

4) 实现学生成绩的录入、修改、删除等基本操作。 5) 能方便的对学生的一个学期成绩进行查询。 6) 具有成绩统计、排名等功能。

7) 具有留级、休学等特殊情况的处理功能。 8) 能输出常用的各种报表。

9) 具有数据备份和数据恢复功能。 设计要求:

学生成绩表的设计,要考虑到不同年级的教学计划的变化情况。

对于新生班级,应该首先进行基本情况录入、选课、然后才能进行成绩录入。 3.功能模块详细设计

3.1 详细设计思想

这个学生管理系统,我们组用Java的JDK1.6开发工具和微软的Microsoft SQL Server数据库两者相结合做出来的。

一数据库的设计:

1创建数据库StudentManager

图1.0

1.1创建表:ClassInfo

图1.1

1.2创建表:DepartmentInfo

图1.2

1.3创建表:StudentInfo

图1.3

二创建“数据源(ODBC)”

具体步骤:

“开始”-“控制面板”-“管理工具”-“数据源(ODBC)

-在用户DNS里,点“添加”--在数据源驱动列表最下方选择“SQLServer” -点“完成”--出现了一个创建到SQL Server的新数据源

-在数据源“名称”右侧,填写数据库的名称;在“服务器”右侧,写(local) -点“下一步”--继续点“下一步”

-在更改默认的数据库为“StudentManager”,这里的数据库为我刚刚新建的数据库。 -点“下一步” -点“完成”

-出现一个“ODBC Microsoft SQL Server 安装”对话框 -点击下面的“测试数据源”

-出现图2.1就好了。

图2.1

-下面依次点击“确定”就完成了。

-完成了以后,你会在数据源里看到自己刚刚新建的数据源,名为:“StudentManager”

图2.2

3.2 核心代码: 三代码的编写:

3.1数据库连接类的代码(文件名:DBConnect.java)注意,这个文件最先编译,因为后面的几个文件的编译会用到该文件编译完产生的DBConnect.class文件 //导入sql数据库包 import java.sql.*; //创建数据库连接类 public class DBConnect { //静态方法提高数据库的连接效率 public static Connection getConn() throws Exception { //加载JDBC驱动 Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\"); //以系统默认用户身份,连接数据库StudentManager

return DriverManager.getConnection(\"jdbc:odbc:StudentManager\ } }

3.2添加学生面板类的代码(文件名:AddStudentPanel.java) //导入系统的类包 import java.awt.*; import java.sql.*; import javax.swing.*; import java.awt.event.*; //创建“添加学生面板”类

public class AddStudentPanel extends JPanel implements ActionListener { //声明连接数据库对象 Connection con; //声明SQL语句对象 Statement st; //创建组件对象:标签、文本行、单选 JLabel jLabel1=new JLabel(\"学号\"); JLabel jLabel2=new JLabel(\"姓名\"); JLabel jLabel3=new JLabel(\"性别\"); JLabel jLabel4=new JLabel(\"出生日期\"); JLabel jLabel5=new JLabel(\"籍贯\"); JLabel jLabel6=new JLabel(\"注意:出生日期格式为YYYY-MM-DD\"); JTextField jTextField1=new JTextField(); JTextField jTextField2=new JTextField(); JTextField jTextField3=new JTextField(); JTextField jTextField4=new JTextField(); JRadioButton jRadioButton1=new JRadioButton(\"男\"); JRadioButton jRadioButton2=new JRadioButton(\"女\"); ButtonGroup buttonGroup1=new ButtonGroup(); JButton jButton1=new JButton(\"存入数据库\"); //构造方法 public AddStudentPanel() { try{ //调用初始化方法 jbInit(); } catch(Exception exception){ exception.printStackTrace(); } }

//界面初始化方法 private void jbInit() throws Exception { //连接数据库 con=DBConnect.getConn();

//创建一个statement对象来将SQL语句发送到数据库 st=con.createStatement(); //框架的布局 this.setLayout(null); //设置各组件的大小 jLabel1.setBounds(new Rectangle(21,17,,24)); jLabel2.setBounds(new Rectangle(21,51,53,22)); jLabel3.setBounds(new Rectangle(21,86,61,27)); jLabel4.setBounds(new Rectangle(21,122,59,25)); jLabel5.setBounds(new Rectangle(21,188,54,24)); jLabel6.setBounds(new Rectangle(102,153,219,27)); jTextField1.setBounds(new Rectangle(102,10,200,30)); jTextField2.setBounds(new Rectangle(102,49,200,30)); jTextField3.setBounds(new Rectangle(102,117,200,33)); jTextField4.setBounds(new Rectangle(102,183,200,29)); jRadioButton1.setBounds(new Rectangle(102,83,65,30)); jRadioButton2.setBounds(new Rectangle(190,85,85,30)); jButton1.setBounds(new Rectangle(103,217,180,30)); //设置单选按钮被选中 jRadioButton1.setSelected(true); //添加按钮动作事件 jButton1.addActionListener(this); //添加组件到面板 this.add(jTextField1); this.add(jLabel1); this.add(jLabel2); this.add(jTextField2); this.add(jRadioButton1); this.add(jRadioButton2); this.add(jLabel3); this.add(jLabel4); this.add(jTextField3); this.add(jLabel6); this.add(jTextField4); this.add(jLabel5); this.add(jButton1); buttonGroup1.add(jRadioButton1); buttonGroup1.add(jRadioButton2); }

//点击按钮事件

//事件相应器 当你定义的事件捕捉以后就会执行这个里面的代码

public void actionPerformed(ActionEvent e) { //获取用户输入的信息 String xuehao=jTextField1.getText(); String xingming=jTextField2.getText(); String xingbie=\"\"; if(jRadioButton1.isSelected()) xingbie+=\"男\"; if(jRadioButton2.isSelected()) xingbie+=\"女\"; String dateString=jTextField3.getText(); String jiguan=jTextField4.getText(); try{ //设置日期格式 st.execute(\"set dateformat ymd\"); //利用st对象执行SQL语句,进行插入操作 st.executeUpdate(\"insert into StudentInfo values('\"+xuehao+\"','\"+xingming+\"','\"+xingbie+\"','\"+dateString+\"','\"+jiguan+\"','\"+xuehao.substring(4,6)+\"','\"+xuehao.substring(0,6)+\"')\"); //清空文本行的内容 jTextField1.setText(\"\"); jTextField2.setText(\"\"); jTextField3.setText(\"\"); jTextField4.setText(\"\"); //利用消息对话框提示删除操作成功 JOptionPane.showMessageDialog(this,\"插入成功!\"); } catch(Exception ex){ //利用消息对话框提示不能插入,并显示异常的信息 JOptionPane.showMessageDialog(this,\"输入数据错误或者数据库不允许插入!\"); ex.printStackTrace(); } } }

3.3删除学生面板类的代码(文件名:DeleteStudentPanel.java) //导入系统的类包 import java.awt.*; import java.sql.*;

import javax.swing.*; import java.awt.event.*; //创建“删除学生面板”类

public class DeleteStudentPanel extends JPanel implements ActionListener { //声明连接数据库对象 Connection con; //声明SQL语句对象 Statement st; //创建组件对象 JLabel jLabel1=new JLabel(\"请输入待删除的学生的学号:\"); JTextField jTextField1=new JTextField(); JButton jButton1=new JButton(\"删除\"); //构造方法 public DeleteStudentPanel() { try{ //调用初始化方法 jbInit(); } catch(Exception exception){ exception.printStackTrace(); } } //界面初始化方法 private void jbInit() throws Exception { //连接数据库 con=DBConnect.getConn(); st=con.createStatement(); //框架的布局 this.setLayout(null); //设置各组件的大小 jLabel1.setFont(new java.awt.Font(\"宋体\ jLabel1.setBounds(new Rectangle(70,20,200,30)); jTextField1.setBounds(new Rectangle(70,80,207,41)); jButton1.setBounds(new Rectangle(70,175,205,36)); //添加按钮动作事件 jButton1.addActionListener(this); //添加组件到面板 this.add(jLabel1); this.add(jTextField1); this.add(jButton1); }

//点击按钮事件 public void actionPerformed(ActionEvent e) { //获取用户输入的学号 String xuehao=jTextField1.getText(); //要求用户确认删除 if(JOptionPane.showConfirmDialog(this,\"确认要删除吗\")==JOptionPane.YES_OPTION) { try{ //利用st对象执行SQL删除操作 st.executeUpdate(\"delete from StudentInfo where 学号='\"+xuehao+\"'\"); //利用消息对话框提示删除操作成功 JOptionPane.showMessageDialog(this,\"删除操作成功!\"); //清空输入学号的文本行 jTextField1.setText(\"\"); } catch(Exception ex){ //利用消息对话框提示不能删除 JOptionPane.showMessageDialog(this,\"删除操作执行失败!\"); } } } }

3.4按姓名查询学生面板类的代码(文件名:InquireOnNamePanel.java) //导入系统的类包 import java.awt.*; import java.sql.*; import javax.swing.*; import java.awt.event.*; //创建“添加学生面板”类

public class InquireOnNamePanel extends JPanel implements ActionListener { //声明连接数据库对象 Connection con; //声明SQL语句对象 Statement st; //创建组件对象:标签、文本行、单选 JLabel jLabel1=new JLabel(\"请输入待查询的学生的姓名:\"); JTextField jTextField1=new JTextField(); JButton jButton1=new JButton(\"按姓名查询\"); JScrollPane jScrollPane1=new JScrollPane(); JTextArea jTextArea1=new JTextArea();

//构造方法

public InquireOnNamePanel() { try{ //调用初始化方法 jbInit(); } catch(Exception exception){ exception.printStackTrace(); } }

//面板初始化方法

private void jbInit() throws Exception { //连接数据库 con=DBConnect.getConn(); st=con.createStatement(); //框架的布局 this.setLayout(null); //设置各组件的大小 jLabel1.setFont(new java.awt.Font(\"宋体\ jLabel1.setBounds(new Rectangle(80,10,200,34)); jTextField1.setBounds(new Rectangle(80,50,200,30)); jButton1.setBounds(new Rectangle(100,90,160,30)); jScrollPane1.setBounds(new Rectangle(29,125,308,130)); //添加按钮动作事件 jButton1.addActionListener(this); //添加组件到面板 this.add(jScrollPane1); jScrollPane1.getViewport().add(jTextArea1); this.add(jLabel1); this.add(jTextField1); this.add(jButton1); }

//点击按钮事件

public void actionPerformed(ActionEvent e) { //获取用户输入的姓名 String xingming=jTextField1.getText(); //清空文本区原有的内容 jTextArea1.setText(\"\"); //要求用户确认删除 try{ //利用st对象执行SQL语句,返回结果集对象

ResultSet rs=st.executeQuery(\"select * from StudentInfo where 姓名='\"+xingming+\"'\"); //处理结果集:逐条显示结果集中的记录 while(rs.next()) { jTextArea1.append(rs.getString(\"学号\")+\" \"+rs.getString(\"姓名\")+\" \"+rs.getString(\"性别\")+\" \"+rs.getDate(\"出生日期\")+\" \"+rs.getString(\"籍贯\")+\"\\n\"); } } catch(Exception ex) { //利用消息对话框提示查询失败 JOptionPane.showMessageDialog(this,\"查询失败!\"); } //清空文本行的内容 jTextField1.setText(\"\"); } }

3.5按学号查询学生面板类的代码(文件名:InquireOnXHPanel.java) //导入系统的类包 import java.awt.*; import java.sql.*; import javax.swing.*; import java.awt.event.*; //创建“添加学生面板”类

public class InquireOnXHPanel extends JPanel implements ActionListener { //声明连接数据库对象 Connection con; //声明SQL语句对象 Statement st; //创建组件对象:标签、文本行、单选 JLabel jLabel1=new JLabel(\"请输入待查询的学生的学号:\"); JTextField jTextField1=new JTextField(); JButton jButton1=new JButton(\"按学号查询\"); JTextArea jTextArea1=new JTextArea(); //构造方法 public InquireOnXHPanel() { try{

//调用初始化方法 jbInit(); } catch(Exception exception){ exception.printStackTrace(); } } //面板初始化方法 private void jbInit() throws Exception { //连接数据库 con=DBConnect.getConn(); st=con.createStatement(); //框架的布局 this.setLayout(null); //设置各组件的大小 jLabel1.setFont(new java.awt.Font(\"宋体\ jLabel1.setBounds(new Rectangle(46,4,222,32)); jTextField1.setBounds(new Rectangle(47,37,247,31)); jButton1.setBounds(new Rectangle(47,86,247,30)); jTextArea1.setBounds(new Rectangle(24,130,305,109)); //添加按钮动作事件 jButton1.addActionListener(this); //添加组件到面板 this.add(jLabel1); this.add(jTextField1); this.add(jTextArea1); this.add(jButton1); } //点击按钮事件 public void actionPerformed(ActionEvent e) { //获取用户输入的学号 String xuehao=jTextField1.getText(); //清空文本区原有的内容 jTextArea1.setText(\"\"); try{ //利用st对象执行SQL语句,返回结果集对象 ResultSet rs=st.executeQuery(\"select * from StudentInfo where 学号='\"+xuehao+\"'\"); //处理结果集:逐条显示结果集中的记录 //此处没有使用while,因为学号是唯一的,而姓名不是,所以在InquireOnNamePanel.java里使用了while if(rs.next())

{ jTextArea1.setText(rs.getString(\"学号\")+\" \"+rs.getString(\"姓名\")+\" \"+rs.getString(\"性别\")+\" \"+rs.getDate(\"出生日期\")+\" \"+rs.getString(\"籍贯\")+\"\\n\"); } else { JOptionPane.showMessageDialog(this,\"没有这个学号!\"); } } catch(Exception ex){ //利用消息对话框提示查询失败 JOptionPane.showMessageDialog(this,\"查询失败!\"); } //清空文本行的内容 jTextField1.setText(\"\"); } }

3.6系统主界面类的代码(文件名:MainFrame.java) //导入系统的包 import java.awt.*;

import java.awt.event.*; import javax.swing.*; //创建主界面类

public class MainFrame extends JFrame implements ActionListener { //创建内容面板 JPanel contentPane; //创建菜单栏(见267页的图12.1里的菜单栏) JMenuBar jMenuBar1=new JMenuBar(); JMenu jMenuFile=new JMenu(\"文件\"); JMenuItem jMenuFileExit=new JMenuItem(\"退出\"); JMenu jMenu1=new JMenu(\"学生管理\"); JMenuItem jMenuItem1=new JMenuItem(\"添加学生\"); JMenuItem jMenuItem2=new JMenuItem(\"删除学生\"); JMenu jMenu2=new JMenu(\"学生查询\"); JMenuItem jMenuItem3=new JMenuItem(\"按姓名查询\"); JMenuItem jMenuItem4=new JMenuItem(\"按学号查询\"); //创建标签,用于显示信息 JLabel jLabel1=new JLabel(\"欢迎使用学生信息管理系统\"); JLabel jLabel2=new JLabel(\"2013年6月24日计2第七组\"); //构造方法,创建对象时自动调用

public MainFrame() { try{ //关闭框架窗口时的默认事件方法 setDefaultCloseOperation(EXIT_ON_CLOSE); //调用初始化方法 jbInit(); } catch(Exception exception){ exception.printStackTrace(); } }

//界面初始化方法

private void jbInit() throws Exception { //创建内容面板和其布局 contentPane =(JPanel) getContentPane(); contentPane.setLayout(null); //框架的大小和其标题 setSize(new Dimension(400,320)); setTitle(\"学生信息管理系统\"); //添加事件 jMenuFileExit.addActionListener(this); jMenuItem1.addActionListener(this); jMenuItem2.addActionListener(this); jMenuItem3.addActionListener(this); jMenuItem4.addActionListener(this); //添加菜单条 setJMenuBar(jMenuBar1); //添加菜单组件到菜单条 jMenuBar1.add(jMenuFile); jMenuBar1.add(jMenu1); jMenuBar1.add(jMenu2); jMenuBar1.add(jMenuFileExit); //添加菜单项组件到菜单组件 jMenuFile.add(jMenuFileExit); jMenu1.add(jMenuItem1); jMenu1.add(jMenuItem2); jMenu2.add(jMenuItem3); jMenu2.add(jMenuItem4); //添加标签到内容面板 contentPane.add(jLabel1);

contentPane.add(jLabel2); //设置标签组件的大小和字体 jLabel1.setFont(new java.awt.Font(\"宋体\ jLabel1.setBounds(new Rectangle(65,70,275,55)); jLabel2.setFont(new java.awt.Font(\"宋体\ jLabel2.setBounds(new Rectangle(90,150,200,35)); }

//菜单事件的处理方法

public void actionPerformed(ActionEvent actionEvent) { //点击“文件”菜单下的“退出”菜单项 if(actionEvent.getSource()==jMenuFileExit) { System.exit(0); } //点击“学生管理”菜单下的“添加学生”菜单项 if(actionEvent.getSource()==jMenuItem1) { //创建添加学生面板对象 AddStudentPanel add=new AddStudentPanel(); //移除主界面上原有的内容 this.remove(this.getContentPane()); this.setContentPane(add); //令界面可见 this.setVisible(true); } //点击“学生管理”菜单下的“删除学生”菜单项 if(actionEvent.getSource()==jMenuItem2) { //创建删除学生面板对象 DeleteStudentPanel delete=new DeleteStudentPanel(); //移除主界面上原有的内容 this.remove(this.getContentPane()); this.setContentPane(delete); //令界面可见 this.setVisible(true); } //点击“学生查询”菜单下的“按姓名查询”菜单项 if(actionEvent.getSource()==jMenuItem3) { //创建“按姓名查询”面板对象 InquireOnNamePanel onName=new InquireOnNamePanel(); //移除主界面上原有的内容 this.remove(this.getContentPane());

this.setContentPane(onName); //令界面可见 this.setVisible(true); } //点击“学生查询”菜单下的“按学号查询”菜单项 if(actionEvent.getSource()==jMenuItem4) { //创建“按学号查询”面板对象 InquireOnXHPanel onXH=new InquireOnXHPanel(); //移除主界面上原有的内容 this.remove(this.getContentPane()); this.setContentPane(onXH); //令界面可见 this.setVisible(true); } } }

3.7系统的主程序类的代码(文件名:Main.java) //导入包

import java.awt.*; import javax.swing.*; //创建主系统类 class Main { public static void main (String[] args) { //创建主界面 MainFrame frame=new MainFrame(); //获取屏幕尺寸 Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); //获取主界面的窗体尺寸 Dimension frameSize =frame.getSize(); //令主界面窗体居中 if(frameSize.height>screenSize.height) frameSize.height=screenSize.height; if(frameSize.width>screenSize.width) frameSize.width=screenSize.width; frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2); //令主界面显示 frame.setVisible(true);

}

}

图3.1

图3.2

图3.3

图3.4

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务