




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中北大学 数据库原理 课 程 设 计 说 明 书学生姓名: 武大为学 号: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.01.1创建表:ClassInfo图1.11.2创建表:DepartmentInfo图1.21.3创建表:StudentInfo图1.3二创建“数据源(ODBC)”具体步骤:“开始”-“控制面板”-“管理工具”-“数据源(ODBC)-在用户DNS里,点“添加”-在数据源驱动列表最下方选择“SQLServer”-点“完成”-出现了一个创建到SQL Server的新数据源-在数据源“名称”右侧,填写数据库的名称;在“服务器”右侧,写(local) -点“下一步”-继续点“下一步”-在更改默认的数据库为“StudentManager”,这里的数据库为我刚刚新建的数据库。-点“下一步”-点“完成”-出现一个“ODBC Microsoft SQL Server 安装”对话框-点击下面的“测试数据源”-出现图2.1就好了。图2.1-下面依次点击“确定”就完成了。-完成了以后,你会在数据源里看到自己刚刚新建的数据源,名为:“StudentManager”图2.23.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);/以系统默认用户身份,连接数据库StudentManagerreturn 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,64,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(宋体,Font.BOLD,14);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(宋体,Font.BOLD,14);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(宋体,Font.BOLD,16);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里使用了whileif(rs.next()jTextArea1.setText(rs.getString(学号)+ +rs.getString(姓名)+ +rs.getString(性别)+ +rs.getDate(出生日期)+ +rs.getString(籍贯)+n);elseJOptionPane.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(宋体,Font.BOLD,20);jLabel1.setBounds(new Rectangle(65,70,275,55);jLabel2.setFont(new java.awt.Font(宋体,Font.BOLD,16);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);/点击“学生管
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆市西南师大附中09-10学年高一下学期期中考试(化学)
- 幼儿园食堂餐饮从业人员食品安全知识培训考核试题(附答案)
- 2025年事业单位工勤技能-湖南-湖南客房服务员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北园林绿化工四级(中级工)历年参考题库典型考点含答案解析
- 2025年互联网广告精准投放算法在智能零售行业的应用效果评估报告
- 2025年事业单位工勤技能-海南-海南工程测量员四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-海南-海南医技工二级(技师)历年参考题库含答案解析
- 2024版年会场地出租合同
- 2024版房产抵押的借款合同
- 2025年事业单位工勤技能-河北-河北放射技术员一级(高级技师)历年参考题库含答案解析
- 2024年湖北邮政集团招聘笔试参考题库附带答案详解
- 今天怎样做教科研写给中小学教师
- 社区护理学课程说课
- 搅拌类设备单机试车原始记录
- 甘肃省公务员录用审批表
- 成都市第三十八中学校初一新生分班(摸底)语文考试模拟试卷(10套试卷带答案解析)
- 护理品管圈QCC成果汇报之降低中心静脉导管堵管率
- 目标计划行动-PPT
- 信息系统运维方案
- 2023年杭州市中小学教师教学能力水平考核
- 劳动关系协调员真题模拟汇编(共1142题)
评论
0/150
提交评论