当前位置:文档之家› 广东海洋大学数据库原理及应用课程设计——学生信息管理系统(Java+SQL)

广东海洋大学数据库原理及应用课程设计——学生信息管理系统(Java+SQL)

本科生课程设计课程名称数据库原理及应用课程设计课程编号J1670101学号学生姓名所在专业所在班级指导教师成绩教师签字年月日课程设计时间:年月日至年月日目录目录设计总说明 (I)1、需求分析 (3)2、概念结构设计 (3)3、逻辑结构设计 (4)4、物理结构设计 (4)5、系统实现 ....................................................................................... 错误!未定义书签。

5.1前台界面 .................................................................................. 错误!未定义书签。

5.2 后台实现 .................................................................................. 错误!未定义书签。

6、优缺点及自我评价....................................................................... 错误!未定义书签。

7、参考文献 (7)设计总说明(1)系统开发目的学生信息管理系统是学校管理的重要工具,是学校不可或缺的部分。

随着在校大学生人数的不断增加,教务系统的数量也不断的上涨。

学校工作繁杂、资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。

并且这种传统的方式存在着很多的弊端,如:保密性差、查询不便、效率低,很难维护和更新等。

然而,本系统针对以上缺点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件。

所以如何自动高效地管理信息是这些年来许多人所研究的。

(2)开发内容用数据库和Java相关技术开发一个学生信息管理系统(3)开发要求能够对学生信息进行简单的添加,删除和查询(4)开发环境及工具1、操作系统:Windows 72、数据库软件:SQL Server 20083、Java开发工具:Eclipse(5)系统功能简介一、学生管理1、添加学生信息。

可以按照图形的界面的显示依次输入新学生的“学号”,“姓名”,“性别”,“班级”,“学院”,“籍贯”。

完成新纪录的添加。

2、删除学生记录。

可以根据输入的“学号”或者”姓名”进行删除的操作。

二、学生查询3、查询学生信息。

用户可以选择通过“按姓名查询”,也可以选择“按学号查询”查询学生信息,查询到的信息会在窗口中显示出来。

三、文件退出(6)开发分工情况本系统由本人独立完成数据库原理及应用课程设计报告1、需求分析在一些学校等机构,随着学生数量的不断增加,学生的信息不断增多,人工管理信息的难度也越来越大。

而且效率也是很低的。

所以如何自动高效地管理信息是这些年来许多人所研究的。

随着这些年电脑计算机的速度质的提高,成本的下降,IT 互联网大众趋势的发展。

我们使用电脑高效率处理数据信息成为可能。

学生信息管理系统的出现,正是管理人员与信息数据,计算机进入互动时代的体现。

友好的人机交互模式,清晰简明的图形界面,高效安全的操作使得我们对成千上万的信息的管理得心应手。

学生信息管理系统,以SQL 数据库作为后台信息存储,Java 作为前台系统的语言。

提供了对学生信息添加,查询,删除等功能。

实现了最基本的信息管理。

2、概念结构设计教师教师ID教师姓名登录密码 课程课程号教师ID课程名称成绩学号课程号3、逻辑结构设计StudentInfo 表:字段名 类型 空值 约束条件 学号 Char(10)not null 主键 姓名 varchar(10) 出生日期 datetime籍贯 varchar(50) 系号 char(2) not null外键班级号 char(6)not null 外键4、物理结构设计create table StudentInfo(学号 char(10) primary key , 姓名 varchar(10) , 性别 char(2) ,出生日期 datetime , 籍贯 varchar(50) ,成绩学生性别姓名学号籍贯班级号总人数登录密码籍贯 班级名称班级号班级管理员登录密码管理员ID系号char(2),班级号char(6) ,)5、系统实现5.1前台界面:5.2后台代码实现:见附录6、优缺点及自我评价由于时间仓促,本系统还有许多功能没有实现,也有一些漏洞。

同时,也因为自己掌握的知识不够扎实,不够全面,所以,这个学生信息管理系统只实现了一些简单的基本功能,其他功能还有待完善。

本次课程设计自我感觉很辛苦,但是受益匪浅。

因为数据库,Java这两门课的知识学的不够扎实,在设计过程中碰到了很多问题,刚开始要设计的时候,还真不知道从哪里下手,通过在百度、书本、同学的帮助下有些得到了解决,让我学会了好多书本上没有的东西,通过本次课程设计,逐渐能将课本上的知识应用到实际操作中,但是我发现我现在学到的知识还远远不够,要想做出一个功能比较全面,界面比较漂亮的系统还需要更多相关的知识。

所以,在接下来的日子里,我还有待加强学习。

在设计的过程中发现了自己的很多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,导致设计系统的时候频频出现错误。

通过这次课程设计使我懂得了理论与实际相结合很重要,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正达到学以致用的目的,从而提高自己的实际动手能力和独立思考的能力。

7、参考文献(1)王珊,萨师煊.《数据库系统概论》[M],高等教育出版社,2014. (2)耿祥义,张跃平.《Java2实用教程》[M],清华大学出版社,2013.附录附录1、添加学生面板类的代码package jieweixiao;//导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;//创建“添加学生面板”类public class AddStudentPanel extends JPanel implements ActionListener{//声明连接数据库对象Connection con;//声明SQL语句对象PreparedStatement 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=new Connection();//创建一个statement对象来将SQL语句发送到数据库String url="jdbc:sqlserver://localhost:1433; DatabaseName=StudentManager";String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";Class.forName(driver);//加载驱动!con=DriverManager.getConnection(url,"sa","xjw1123");//连接数据库!String sql="insert into StudentInfo"+" values(?,?,?,?,?,?,?)";st=con.prepareStatement(sql);//框架的布局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.setString(1,xuehao);st.setString(2,xingming);st.setString(3,xingbie);st.setString(4,dateString);st.setString(5,jiguan);st.setString(6,"");st.setString(7,"");st.executeUpdate();//清空文本行的内容jTextField1.setText("");jTextField2.setText("");jTextField3.setText("");jTextField4.setText("");//利用消息对话框提示删除操作成功JOptionPane.showMessageDialog(this,"插入成功!");}catch(Exception ex){//利用消息对话框提示不能插入,并显示异常的信息JOptionPane.showMessageDialog(this,ex);//ex.printStackTrace();}}}2、删除学生面板类的代码package jieweixiao;//导入系统的类包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();String url="jdbc:sqlserver://localhost:1433; DatabaseName=StudentManager";String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";Class.forName(driver);//加载驱动!con=DriverManager.getConnection(url,"sa","xjw1123");//连接数据库!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、按姓名查询学生面板类的代码package jieweixiao;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();String url="jdbc:sqlserver://localhost:1433; DatabaseName=StudentManager";String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";Class.forName(driver);//加载驱动!con=DriverManager.getConnection(url,"sa","xjw1123");//连接数据库!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("");}}4、按学号查询学生面板类的代码package jieweixiao;//导入系统的类包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 ex){JOptionPane.showMessageDialog(this,ex+"00");}}//面板初始化方法private void jbInit() throws Exception{//连接数据库//con=DBConnect.getConn();String url="jdbc:sqlserver://localhost:1433; DatabaseName=StudentManager";String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";Class.forName(driver);//加载驱动!con=DriverManager.getConnection(url,"sa","xjw1123");//连接数据库!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.append(rs.getString("学号")+" "+rs.getString("姓名")+""+rs.getString("性别")+" "+rs.getDate("出生日期")+" "+rs.getString("籍贯")+"\n");}else{JOptionPane.showMessageDialog(this,"没有这个学号!");}}catch(Exception ex){//利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,"查询失败!+00");}//清空文本行的内容jTextField1.setText("");}}5、系统主界面类的代码package jieweixiao;//导入系统的包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("删除学生");JMenuItem jMenu3=new JMenuItem("学生信息修改");JMenu jMenu2=new JMenu("学生查询");JMenuItem jMenuItem3=new JMenuItem("按姓名查询");JMenuItem jMenuItem4=new JMenuItem("按学号查询");//创建标签,用于显示信息JLabel jLabel1=new JLabel("欢迎使用学生信息管理系统");JLabel jLabel2=new JLabel("2015-数据库课程设计");//构造方法,创建对象时自动调用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);jMenu3.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);jMenu1.add(jMenu3);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);}//点击“学生管理”菜单下的“删除学生”菜单项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);}if(actionEvent.getSource()==jMenu3){update xiugai=new update();//移除主界面上原有的内容this.remove(this.getContentPane());this.setContentPane(xiugai);//令界面可见this.setVisible(true);}}}6、系统主函数类的代码package jieweixiao;//导入系统的包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.he ight)/2);//令主界面显示frame.setVisible(true);}}。

相关主题