《Java课程设计报告学生信息管理系统 .doc》由会员分享,可在线阅读,更多相关《Java课程设计报告学生信息管理系统 .doc(16页珍藏版)》请在三一办公上搜索。
1、目 录 第一章 总体设计11.1本系统的主要功能11.2系统包含的类及类之间的关系11.3 Java源文件及其功能11.4相关文件及其功能2第二章 详细设计32.1主类MainWindow32.2类Database42.3类StuBean52.4类InputStudent62.5类ModifyStudent72.6类QueryStudent82.7类DeleteStudent9第三章 功能测试及运行效果103.1 系统主界面103.2 录入学生信息界面113.3 查询学生信息界面113.4 修改学生信息界面123.5 修改学生信息界面12工作总结13参考文献14 第一章 总体设计1.1本系统的
2、主要功能 本系统是基于数据库的学生信息管理系统,实现了连接数据库,录入、修改、查询、删除学生信息的功能。1.2系统包含的类及类之间的关系本系统共包括7个Java源文件和3个辅助文件。类之间的关系如图1-1所示MainWindowInputStudentModifyStudenDeleteStudentQueryStudentDatabaseImageIconStuBeanFileStuBeanDatabaseFileStuBeanDatabaseStuBeanDatabase图 1-1 类之间的关系图1.3 Java源文件及其功能1.MainWindow.java该类负责创建学生信息管理系统的
3、主窗口,该类还有main方法,程序从该类开始执行。 2.InputStudent.java该类创建的对象是MainWindow类的重要成员之一,负责提供录入学生基本信息的界面。 3.ModifyStudent.java该类创建的对象是MainWindow类的重要成员之一,负责提供修改学生基本信息的界面。4.DeleteStudent.java该类创建的对象是MainWindow类的重要成员之一,负责提供删除学生基本信息的界面。5.QueryStudent.java该类创建的对象是MainWindow类的重要成员之一,负责提供查询学生基本信息以及打印基本信息的界面。6.Database.java
4、该类负责提供打开与关闭数据库连接的功能。7.StuBean.java该类负责数据库操作,包括对学生信息数据库的添加、查询、修改、删除。1.4相关文件及其功能1.welcome.jpg为主窗口的背景图片,MainWidow需要调用该文件。 2.icon.jpg该文件是窗口最小化时的窗口图标,MainWidow需要调用该文件。 3.专业.txt该文件为专业组合的组合键提供下拉菜单的内容,InputStudent与ModifyStudent需要调用该文件。4 scmanage.mdb该文件为本程序数据源,负责保存学生基本信息,Database连接到该数据库第二章 详细设计2.1主类MainWindo
5、w(1)成员变量见表2-1表2-1 主要成员变量(属性)成员变量描述变量类型名称面板InputStudentins面板ModifyStudentmos面板DeleteStudentdes面板QueryStudentqus菜单栏JButtonBarbar菜单组JMenumenuSystem menuStu菜单项JMenuItemitemWel itemExit itemSearch itemAdd itemEdit itemDelete布局管理器CardLayoutcard(2)方法见表2-2表2-2 主要方法方法名称返回类型功能备注MainWindow无类型创建窗口构造方法actionPerf
6、ormed无类型处理响应事件继承自父类抽象方法main无类型执行程序程序的主函数(3)源代码见文件MainWindow.java2.2类Database(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称执行SQL语句的接口Statementstmt返回结果的接口ResultSetrs数据库连接接口Connectionconn字符串(SQL语句、驱动)Stringsql strurl(2)方法见表2-4表2-4 主要方法方法名称返回类型功能备注Database无类型创建Database对象构造方法OpenConn无类型打开数据库连接无executeQueryResultSet
7、执行SQL查询语句,返回结果集RS返回ResultSet类型结果集executeUpdate无类型执行SQL更新语句无closeStmt无类型关闭当前的Statement对象无closeConn无类型关闭数据库连接无(3)源代码见文件Database.java2.3类StuBean(1)成员变量见表2-5表2-5 主要成员变量成员变量描述变量类型名称返回结果的接口ResultSetrs字符串(SQL语句 数据库属性)Stringsql sNum sName sSex sMajor sGrade sBirth创建Database对象DatabaseDB(2)方法见表2-4表2-4 主要方法方法名
8、称返回类型功能备注stuAdd添加学生信息无stuModify修改学生信息无stuDel删除学生信息无stuSearchString根据学号查询学生信息返回ResultSet类型结果集(3)源代码见文件StuBean.java2.4类InputStudent(1)成员变量见表2-5表2-5 主要成员变量成员变量描述变量类型名称StuBean对象类型StuBeanaddStu queryStu文本域JTextFieldSnum Sname Sgrade Sbirth组合框JComboBoxSmajor单选框ButtonGroupboy,girl按钮多斥作用域ButtonGroupgroup按钮J
9、ButtonEntry reset(2)方法见表2-4表2-4 主要方法方法名称返回类型功能备注InputStudent无类型创建录入学生信息界面构造方法actionPerformed无类型处理响应事件继承自父类抽象方法clearMess无类型清除文本框内容无(3)源代码见文件InputStudent.java2.5类ModifyStudent(1)成员变量见表2-5表2-5 主要成员变量成员变量描述变量类型名称StuBean对象类型StuBeanmodifyStu queryStu文本域JTextFieldSnum Sname Sgrade Sbirth组合框JComboBoxSmajor单
10、选框ButtonGroupboy,girl按钮多斥作用域ButtonGroupgroup按钮JButtonentry reset start(2)方法见表2-4表2-4 主要方法方法名称返回类型功能备注ModifyStudent无类型创建修改学生信息界面构造方法actionPerformed无类型处理响应事件继承自父类抽象方法clearMess无类型清除文本框内容无(3)源代码见文件Modify.java2.6类QueryStudent(1)成员变量见表2-5表2-5 主要成员变量成员变量描述变量类型名称StuBean对象类型StuBean queryStu文本域JTextFieldSnum
11、Sname Sgrade Sbirth Smajor启动并执行打印作业PrintJobpri单选框ButtonGroupboy,girl按钮多斥作用域ButtonGroupgroup按钮JButtonquert print面板(查询结果之后)JPanelmessPanel(2)方法见表2-4表2-4 主要方法方法名称返回类型功能备注QueryStudent无类型创建录入学生信息界面构造方法actionPerformed无类型处理响应事件继承自父类抽象方法clearMess无类型清除文本框内容无(3)源代码见文件QueryStudent.java2.7类DeleteStudent(1)成员变量见
12、表2-5表2-5 主要成员变量成员变量描述变量类型名称StuBean对象类型StuBeandelStu queryStu文本域JTextFieldSnum Sname Sgrade Sbirth Smajor单选框ButtonGroupboy,girl按钮多斥作用域ButtonGroupgroup按钮JButtondel(2)方法见表2-4表2-4 主要方法方法名称返回类型功能备注InputStudent无类型创建录入学生信息界面构造方法actionPerformed无类型处理响应事件继承自父类抽象方法clearMess无类型清除文本框内容无(3)源代码见文件DeleteStudent.jav
13、a工作总结通过这次课程设计,我锻炼了自己的动手能力,巩固了对面向对象程序设计概念的理解和JAVA的运用,初步掌握JAVA开发应用程序的基本方法,学习了对数据库的基本操作,能够对Microsoft Acess的表做基本处理,提高了自己综合运用所学知识的能力。深刻认识到了基本知识的重要性。现在我知道了,不知道函数怎么来的,根本什么也做不了。除非照抄别人的代码,那样也根本不可能知道功能是如何实现的。现在很有必要加强基本语法知识的学习了。JAVA应用性很强,只有老师的讲解不行,只看也不中,只有自己动手去做才会发现自己确实有太多的不足,许多程序看似简单,真正去做才知道知识并没有自己想象的那样扎实。从而懂
14、得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。其中对JAVA图像用户界面、JAVA数据库JDBC的运用、内部匿名类等JAVA知识有了更深的理解与应用。树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。提高了学习计算机的兴趣,增强了信心。在本次课程设计中,我遇到了很多的困难,这些困难搞得我焦头烂额,几度试图放弃,但最终坚持着一一把困难克服掉了。每当克服一个困难,都非
15、常的兴奋,这些都是自己努力的结果。现在,我有信心面对接下来的挑战,在不断的实践中锻炼自己,提高自己!经过几个星期的设计和开发,系统基本开发完毕。在本次课程设计中困难遇到不少,比如数据库的连接,SQL语言的书写格式,全局参数的传递等。由于设计时间较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,功能不够完善等多方面问题。在这次系统开发的过程中,我深深体会到了做一个系统,首先进行需求分析的重要性,了解了一个系统的制作,从功能分析到功能模块分析、与其他系统的关系,再到数据库设计、数据库结构实现及各功能模块的创建都需要从整体上考虑设计。这些都有待以后进一步改进。回顾起此次JAVA课程设计
16、,我仍感慨颇多,学到了很多的东西。同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。参考文献1 耿祥义,张跃平.Java 2实用教程(第三版)M.北京:清华大学出版社,20062 (美)霍斯特曼(HorstmannC.S.)&nbs. Java2核心技术(卷高级特性原书第7版)/Sun公司核心技术丛书 M.机械工业出版社, 20064. 系统的主要源代码M
17、ainWindow.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;public class MainWindow extends JFrame implements ActionListener InputStudent ins;ModifyStudent mos;QueryStudent qus;DeleteStudent des;/ 建立菜单栏JMenuBar bar;/ 建立“系统管理”菜单组JMenu menuSystem;JMenuItem itemExit;JM
18、enuItem itemWel;/ 建立“学生管理”菜单组JMenu menuStu;JMenuItem itemSearch;JMenuItem itemAdd;JMenuItem itemEdit;JMenuItem itemDelete;File file = null;CardLayout card;JLabel label = null;JPanel pCenter;public MainWindow() / 事件处理public void actionPerformed(ActionEvent e) /返回欢迎界面if(e.getSource() = itemWel)int ok
19、= JOptionPane.showConfirmDialog(this, 确认返回吗?, 确认对话框,JOptionPane.YES_NO_OPTION);if (ok = JOptionPane.YES_OPTION)card.show(pCenter,欢迎界面);/退出else if (e.getSource() = itemExit) int n = JOptionPane.showConfirmDialog(this, 确认退出吗?, 确认对话框,JOptionPane.YES_NO_OPTION);if (n = JOptionPane.YES_OPTION)System.exit
20、(0); /录入else if (e.getSource() = itemAdd) ins.clearMess();card.show(pCenter, 录入界面); /修改else if (e.getSource() = itemEdit) mos.clearMess();card.show(pCenter, 修改界面);/查询else if (e.getSource() = itemSearch) qus.clearMess();card.show(pCenter,查询界面); /删除else if (e.getSource() = itemDelete) card.show(pCente
21、r, 删除界面);public static void main(String args) new MainWindow(); Database.javaimport java.sql.*;/连接数据库的类public class Database private Statement stmt=null;ResultSet rs=null;private Connection conn=null;String sql;String strurl=jdbc:odbc:scmanage;public Database() /打开数据库连接public void OpenConn()throws E
22、xceptiontryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver); conn=DriverManager.getConnection(strurl);catch(Exception e) System.err.println(OpenConn:+e.getMessage();/执行SQL查询语句,返回结果集RSpublic ResultSet executeQuery(String sql)/执行SQL更新语句 public void executeUpdate(String sql)stmt=null;rs=null;trystmt=conn.cr
23、eateStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);stmt.executeQuery(sql);mit();catch(SQLException e)System.err.println(executeUpdate:+e.getMessage(); public void closeStmt()trystmt.close();catch(SQLException e)System.err.println(closeStmt:+e.getMessage(); /关闭数据库连接public voi
24、d closeConn()tryconn.close();catch(SQLException ex)System.err.println(aq.closeConn:+ex.getMessage();/转换编码public static String toGBK(String str)try if(str=null)str = ;elsestr=new String(str.getBytes(ISO-8859-1),GBK); catch (Exception e) System.out.println(e);return str;StuBean.javaimport java.sql.*;
25、import javax.swing.*; /有关学生信息数据库操作的类public class StuBean String sql;ResultSet rs = null;String sNum;String sName;String sSex;String sMajor;String sGrade;String sBirth;/添加学生信息 public void stuAdd(String num, String name, String sex,String major, String grade, String birth)/ 修改学生信息 public void stuModif
26、y(String num, String name, String sex,String major, String grade, String birth)/删除学生信息 public void stuDel(String num)/ 根据学号查询学生信息 public String stuSearch(String num)QueryStudent.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class QueryStudent extends JP
27、anel implements ActionListenerprivate static final long serialVersionUID = 1L;/ 查询界面PrintJob pri;Graphics g = null;StuBean queryStu = new StuBean();JTextField Snum,Sname,Smajor,Sgrade,Sbirth;JRadioButton boy,girl;JButton query,print;ButtonGroup group = null;JPanel messPanel;public QueryStudent()/事件处
28、理public void actionPerformed(ActionEvent e) public void clearMess()Snum.setText(null);Sname.setText(null);Smajor.setText(null);Sgrade.setText(null);Sbirth.setText(null);ModifyStudent.javaimport java.awt.*;import java.io.*;import javax.swing.*;public class ModifyStudent extends JPanel implements Acti
29、onListenerprivate static final long serialVersionUID = 1L;/修改界面StuBean modStu = new StuBean();StuBean queryStu = new StuBean();JTextField Snum,Sname,Sgrade,Sbirth;JComboBox Smajor;JRadioButton boy,girl;ButtonGroup group = null;JButton start,entry,reset;JComboBox oldMess;public ModifyStudent()public
30、void actionPerformed(ActionEvent e) String number = Snum.getText();String rs = new String4;rs = queryStu.stuSearch(number);if(e.getSource() = start|e.getSource() = Snum)oldMess.removeAllItems();if(rs != null)String q = 该生信息已存在,您想修改他(她)的基本信息吗?JOptionPane.showMessageDialog(this,q,警告 ,JOptionPane.QUEST
31、ION_MESSAGE);entry.setEnabled(true);oldMess.addItem(姓名:+rs0);oldMess.addItem(专业:+rs2);oldMess.addItem(年级:+rs3);oldMess.addItem(生日:+rs4); if(rs1.equals(男) boy.setSelected(true); else girl.setSelected(true);elseentry.setEnabled(false);JOptionPane.showMessageDialog(this,该学号不存在无法修改!,警告, JOptionPane.WARN
32、ING_MESSAGE);clearMess();else if(e.getSource() = entry)if(rs != null)String m = 基本信息将被修改!;int ok = JOptionPane.showConfirmDialog(this,m,确认,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok = JOptionPane.YES_OPTION)String name = Sname.getText();String major = (String)Smajor.getSelectedIte
33、m();String grade = Sgrade.getText();String birth = Sbirth.getText();String sex = null;if(boy.isSelected()sex = boy.getText();if(girl.isSelected()sex = girl.getText();modStu.stuModify(number, name, sex, major, grade, birth);else if(ok = JOptionPane.NO_OPTION)entry.setEnabled(true);elseString w = 该学号没
34、有基本信息,不能修改!;JOptionPane.showMessageDialog(this, w, 警告,JOptionPane.WARNING_MESSAGE);entry.setEnabled(false);clearMess();else if(e.getSource() = reset)clearMess();entry.setEnabled(false);public void clearMess()Snum.setText(null);Sname.setText(null);Sgrade.setText(null);Sbirth.setText(null);oldMess.rem
35、oveAllItems();InputStudent.javaimport java.awt.*; import java.awt.event.*;import javax.swing.*; import java.io.*;public class InputStudent extends JPanel implements ActionListenerprivate static final long serialVersionUID = 1L; /录入界面StuBean addStu = new StuBean();StuBean queryStu = new StuBean();/设置
36、“录入界面”窗口JTextField Snum,Sname,Sgrade,Sbirth;JComboBox Smajor;JRadioButton boy,girl;ButtonGroup group = null;JButton entry,reset;public InputStudent()/事件处理public void actionPerformed(ActionEvent e) public void clearMess()Snum.setText(null);Sname.setText(null);Sgrade.setText(null);Sbirth.setText(null)
37、; (#)QueryStudent.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*; import java.util.*;public class QueryStudent extends JPanel implements ActionListenerprivate static final long serialVersionUID = 1L;/ 查询界面PrintJob pri; Graphics g = null;StuBean queryStu = new StuBean();JTextField
38、 Snum,Sname,Smajor,Sgrade,Sbirth;JRadioButton boy,girl;JButton query,print;ButtonGroup group = null;JPanel messPanel;public QueryStudent()/事件处理public void actionPerformed(ActionEvent e) public void clearMess()Snum.setText(null);Sname.setText(null);Smajor.setText(null);Sgrade.setText(null);Sbirth.set
39、Text(null);DeleteStudent.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class DeleteStudent extends JPanel implements ActionListenerprivate static final long serialVersionUID = 1L;/删除界面StuBean queryStu = new StuBean();StuBean delStu = new StuBean();JTextField Snum,Sname,Sm
40、ajor,Sgrade,Sbirth;JRadioButton boy,girl;JButton del;ButtonGroup group = null;public DeleteStudent()/处理事件public void actionPerformed(ActionEvent e) if(e.getSource() = del|e.getSource() = Snum)String number = ;number = Snum.getText();String rs = new String4;rs = queryStu.stuSearch(number);if(rs != nu
41、ll)String q = 该生信息已存在,您想删除该生的基本信息吗?;int yes = JOptionPane.showConfirmDialog(this,q,确认,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(yes = JOptionPane.YES_OPTION)Sname.setText(rs0); Smajor.setText(rs2);Sgrade.setText(rs3); Sbirth.setText(rs4);if(rs1.equals(男)boy.setSelected(true);else gi
42、rl.setSelected(true);String m = 确定要删除该学号及全部信息吗?;int ok = JOptionPane.showConfirmDialog(this,m, 确认,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok = JOptionPane.YES_OPTION)delStu.stuDel(number);else if(ok = JOptionPane.NO_OPTION)Snum.setText(null);Sname.setText(null);Smajor.setText(null);Sgrade.setText(null);Sbirth.setText(null);else if(yes = JOptionPane.NO_OPTION)Snum.setText(null); Sname.setText(null);Smajor.setText(null);Sgrade.setTex