1、计算机学院课程设计专 业: 计算机科学和技术 课程名称: JAVA程序设计 课题名称: 学生信息管理系统 教 师: 学 号: 姓 名: 0年 6 月 25 日目 录 第一章 总体设计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 录入学生
2、信息界面113.3 查询学生信息界面113.4 修改学生信息界面123.5 修改学生信息界面12工作总结13参考文件14 第一章 总体设计1.1本系统关键功效 本系统是基于数据库学生信息管理系统,实现了连接数据库,录入、修改、查询、删除学生信息功效。1.2系统包含类及类之间关系本系统共包含7个Java源文件和3个辅助文件。类之间关系图1-1所表示MainWindowInputStudentModifyStudenDeleteStudentQueryStudentDatabaseImageIconStuBeanFileStuBeanDatabaseFileStuBeanDatabaseStuBe
3、anDatabase图 1-1 类之间关系图1.3 Java源文件及其功效1.MainWindow.java该类负责创建学生信息管理系统主窗口,该类还有main方法,程序从该类开始实施。 2.InputStudent.java该类创建对象是MainWindow类关键组员之一,负责提供录入学生基础信息界面。 3.ModifyStudent.java该类创建对象是MainWindow类关键组员之一,负责提供修改学生基础信息界面。4.DeleteStudent.java该类创建对象是MainWindow类关键组员之一,负责提供删除学生基础信息界面。5.QueryStudent.java该类创建对象是
4、MainWindow类关键组员之一,负责提供查询学生基础信息和打印基础信息界面。6.Database.java该类负责提供打开和关闭数据库连接功效。7.StuBean.java该类负责数据库操作,包含对学生信息数据库添加、查询、修改、删除。1.4相关文件及其功效1.welcome.jpg为主窗口背景图片,MainWidow需要调用该文件。 2.icon.jpg该文件是窗口最小化时窗口图标,MainWidow需要调用该文件。 3.专业.txt该文件为专业组合组合键提供下拉菜单内容,InputStudent和ModifyStudent需要调用该文件。4 scmanage.mdb该文件为本程序数据源
5、,负责保留学生基础信息,Database连接到该数据库 第二章 具体设计2.1主类MainWindow(1)组员变量见表2-1表2-1 关键组员变量(属性)组员变量描述变量类型名称面板InputStudentins面板ModifyStudentmos面板DeleteStudentdes面板QueryStudentqus菜单栏JButtonBarbar菜单组JMenumenuSystem menuStu菜单项JMenuItemitemWel itemExit itemSearch itemAdd itemEdit itemDelete布局管理器CardLayoutcard(2)方法见表2-2表2
6、-2 关键方法方法名称返回类型功效备注MainWindow无类型创建窗口结构方法actionPerformed无类型处理响应事件继承自父类抽象方法main无类型实施程序程序主函数(3)源代码见文件MainWindow.java2.2类Database(1)组员变量见表2-3表2-3 关键组员变量组员变量描述变量类型名称实施SQL语句接口Statementstmt返回结果接口ResultSetrs数据库连接接口Connectionconn字符串(SQL语句、驱动)Stringsql strurl(2)方法见表2-4表2-4 关键方法方法名称返回类型功效备注Database无类型创建Databas
7、e对象结构方法OpenConn无类型打开数据库连接无executeQueryResultSet实施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 sBirt
8、h创建Database对象DatabaseDB(2)方法见表2-4表2-4 关键方法方法名称返回类型功效备注stuAdd添加学生信息无stuModify修改学生信息无stuDel删除学生信息无stuSearchString依据学号查询学生信息返回ResultSet类型结果集(3)源代码见文件StuBean.java2.4类InputStudent(1)组员变量见表2-5表2-5 关键组员变量组员变量描述变量类型名称StuBean对象类型StuBeanaddStu queryStu文本域JTextFieldSnum Sname Sgrade Sbirth组合框JComboBoxSmajor单选框
9、ButtonGroupboy,girl按钮多斥作用域ButtonGroupgroup按钮JButtonEntry reset(2)方法见表2-4表2-4 关键方法方法名称返回类型功效备注InputStudent无类型创建录入学生信息界面结构方法actionPerformed无类型处理响应事件继承自父类抽象方法clearMess无类型清除文本框内容无(3)源代码见文件InputStudent.java2.5类ModifyStudent(1)组员变量见表2-5表2-5 关键组员变量组员变量描述变量类型名称StuBean对象类型StuBeanmodifyStu queryStu文本域JTextFie
10、ldSnum Sname Sgrade Sbirth组合框JComboBoxSmajor单选框ButtonGroupboy,girl按钮多斥作用域ButtonGroupgroup按钮JButtonentry reset start(2)方法见表2-4表2-4 关键方法方法名称返回类型功效备注ModifyStudent无类型创建修改学生信息界面结构方法actionPerformed无类型处理响应事件继承自父类抽象方法clearMess无类型清除文本框内容无(3)源代码见文件Modify.java2.6类QueryStudent(1)组员变量见表2-5表2-5 关键组员变量组员变量描述变量类型名称
11、StuBean对象类型StuBean queryStu文本域JTextFieldSnum Sname Sgrade Sbirth Smajor开启并实施打印作业PrintJobpri单选框ButtonGroupboy,girl按钮多斥作用域ButtonGroupgroup按钮JButtonquert print面板(查询结果以后)JPanelmessPanel(2)方法见表2-4表2-4 关键方法方法名称返回类型功效备注QueryStudent无类型创建录入学生信息界面结构方法actionPerformed无类型处理响应事件继承自父类抽象方法clearMess无类型清除文本框内容无(3)源代码
12、见文件QueryStudent.java2.7类DeleteStudent(1)组员变量见表2-5表2-5 关键组员变量组员变量描述变量类型名称StuBean对象类型StuBeandelStu queryStu文本域JTextFieldSnum Sname Sgrade Sbirth Smajor单选框ButtonGroupboy,girl按钮多斥作用域ButtonGroupgroup按钮JButtondel(2)方法见表2-4表2-4 关键方法方法名称返回类型功效备注InputStudent无类型创建录入学生信息界面结构方法actionPerformed无类型处理响应事件继承自父类抽象方法c
13、learMess无类型清除文本框内容无(3)源代码见文件DeleteStudent.java第三章 功效测试及运行效果3.1 系统主界面图3-1 系统主窗口3.2 录入学生信息界面图3-2 学生信息录入界面3.3 查询学生信息界面图3-3学生信息查询界面3.4 修改学生信息界面 图3-4学生信息修改界面3.5 修改学生信息界面 3-5学生信息删除界面工作总结经过这次课程设计,我锻炼了自己动手能力,巩固了对面向对象程序设计概念了解和JAVA利用,初步掌握JAVA开发应用程序基础方法,学习了对数据库基础操作,能够对Microsoft Acess表做基础处理,提升了自己综合利用所学知识能力。深刻认识
14、到了基础知识关键性。现在我知道了,不知道函数怎么来,根本什么也做不了。除非照抄她人代码,那样也根本不可能知道功效是怎样实现。现在很有必需加强基础语法知识学习了。JAVA应用性很强,只有老师讲解不行,只看也不中,只有自己动手去做才会发觉自己确实有太多不足,很多程序看似简单,真正去做才知道知识并没有自己想象那样扎实。从而知道了理论和实际相结合是很关键,只有理论知识是远远不够,只有把所学理论知识和实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己实际动手能力和独立思索能力。其中对JAVA图像用户界面、JAVA数据库JDBC利用、内部匿名类等JAVA知识有了更深了解和应用。树立了对自己
15、工作能力信心,相信会对以后学习工作生活有很关键影响。而且大大提升了动手能力,使我充足体会到了在发明过程中探索艰苦和成功时喜悦。提升了学习计算机爱好,增强了信心。在此次课程设计中,我碰到了很多困难,这些困难搞得我焦头烂额,几度试图放弃,但最终坚持着一一把困难克服掉了。每当克服一个困难,全部很兴奋,这些全部是自己努力结果。现在,我有信心面对接下来挑战,在不停实践中锻炼自己,提升自己!经过多个星期设计和开发,系统基础开发完成。在此次课程设计中困难碰到不少,比如数据库连接,SQL语言书写格式,全局参数传输等。因为设计时间较短,所以该系统还有很多不尽如人意地方,比如用户界面不够美观,功效不够完善等多方面
16、问题。在这次系统开发过程中,我深深体会到了做一个系统,首优异行需求分析关键性,了解了一个系统制作,从功效分析到功效模块分析、和其它系统关系,再到数据库设计、数据库结构实现及各功效模块创建全部需要从整体上考虑设计。这些全部有待以后深入改善。回顾起此次JAVA课程设计,我仍感慨颇多,学到了很多东西。同时不仅巩固了以前所学过知识,而且还学到了很多在书本上所没有学到过知识。在实际设计中才发觉,书本上理论性东西和在实际利用中还是有一定出入,所以有些问题不仅要深入地了解,而且要不停地更正以前错误思维。一切问题必需要靠自己一点一滴处理,而在处理过程当中你会发觉自己在飞速提升。参考文件1 耿祥义,张跃平.Ja
17、va 2实用教程(第三版)M.北京:清华大学出版社,2 (美)霍斯特曼(HorstmannC.S.)&nbs. Java2关键技术(卷高级特征原书第7版)/Sun企业关键技术丛书 M.机械工业出版社, 全部源码(此源码不在汇报中,为了看着方便,附在了后面)。Database.javapackage Stu;import java.sql.*;/* * 连接数据库类 */public class Database private Statement stmt=null;ResultSet rs=null;private Connection conn=null;String sql;String
18、 strurl=jdbc:odbc:scmanage;public Database()/* * 打开数据库连接 */public void OpenConn()throws ExceptiontryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver); conn=DriverManager.getConnection(strurl);catch(Exception e) System.err.println(OpenConn:+e.getMessage();/* * 实施SQL查询语句,返回结果集RS */public ResultSet executeQu
19、ery(String sql)stmt = null;rs=null;trystmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=stmt.executeQuery(sql);catch(SQLException e)System.err.println(executeQuery:+e.getMessage();return rs;/* * 实施SQL更新语句 */public void executeUpdate(String sql)stmt=null;rs=nu
20、ll;trystmt=conn.createStatement(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();
21、/* * 关闭数据库连接 */public void 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
22、;DeleteStudent.javapackage Stu;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DeleteStudent extends JPanel implements ActionListener/* * */private static final long serialVersionUID = 1L;/* * 删除界面 */StuBean queryStu = new StuBean();StuBean delStu = new StuBean();JTextFie
23、ld Snum,Sname,Smajor,Sgrade,Sbirth;JRadioButton boy,girl;JButton del;ButtonGroup group = null;public DeleteStudent()Snum = new JTextField(20);del = new JButton(删除);Snum.addActionListener(this);del.addActionListener(this);Sname = new JTextField(20);Sname.setEditable(false);Smajor = new JTextField(20)
24、;Smajor.setEditable(false);Sgrade = new JTextField(20);Sgrade.setEditable(false);Sbirth = new JTextField(20);Sbirth.setEditable(false);group = new ButtonGroup();boy = new JRadioButton(男,false);girl = new JRadioButton(女,false);group.add(boy);group.add(girl);Box box0 = Box.createHorizontalBox();JLabel
25、 label = new JLabel(学生信息删除,JLabel.CENTER);label.setFont(new Font(黑体, Font.BOLD, 25);box0.add(label);Box box1 = Box.createHorizontalBox();box1.add(new JLabel(学号:,JLabel.CENTER);box1.add(Snum);box1.add(del);Box box2 = Box.createHorizontalBox();box2.add(new JLabel(姓名:,JLabel.CENTER);box2.add(Sname);Box
26、 box3 = Box.createHorizontalBox();box3.add(new JLabel(性别:,JLabel.CENTER);box3.add(boy);box3.add(girl);Box box4 = Box.createHorizontalBox();box4.add(new JLabel(专业:,JLabel.CENTER);box4.add(Smajor);Box box5 = Box.createHorizontalBox();box5.add(new JLabel(年级:,JLabel.CENTER);box5.add(Sgrade);Box box6 = B
27、ox.createHorizontalBox();box6.add(new JLabel(出生:,JLabel.CENTER);box6.add(Sbirth);Box boxH = Box.createVerticalBox();boxH.add(box0);boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(box5);boxH.add(box6);boxH.add(Box.createVerticalGlue();JPanel messPanel = new JPanel();messPanel.add
28、(boxH);messPanel.setBackground(Color.YELLOW);setLayout(new BorderLayout();add(messPanel,BorderLayout.CENTER);validate();setVisible(true);/处理事件public void actionPerformed(ActionEvent e) if(e.getSource() = del|e.getSource() = Snum)String number = ;number = Snum.getText();String rs = new String4;rs = q
29、ueryStu.stuSearch(number);if(rs != null)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.
30、equals(男) boy.setSelected(true); else girl.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
31、);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.setText(null);Sbirth.setText(null); elseJOptionPane.showMessageDialog(this,该学号不存在!,警告, JOptionPane.WARNING_MESSA
32、GE);InputStudent.javapackage Stu;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;public class InputStudent extends JPanel implements ActionListener/* * */private static final long serialVersionUID = 1L;/* * 录入界面 */StuBean addStu = new StuBean();StuBean queryStu = new
33、StuBean();/设置“录入界面”窗口JTextField Snum,Sname,Sgrade,Sbirth;JComboBox Smajor;JRadioButton boy,girl;ButtonGroup group = null;JButton entry,reset;public InputStudent()Snum = new JTextField(20);Sname = new JTextField(20);Smajor = new JComboBox();tryFile f = new File(专业.txt);FileReader fr = new FileReader(
34、f.getPath();BufferedReader br = new BufferedReader(fr);String s = null;while(s= br.readLine()!=null)Smajor.addItem(s);fr.close();br.close();catch(IOException exp)Sgrade = new JTextField(20);Sbirth = new JTextField(20);group = new ButtonGroup();boy = new JRadioButton(男,true);girl = new JRadioButton(女
35、,false);group.add(boy);group.add(girl);entry = new JButton(录入);reset = new JButton(重置);entry.addActionListener(this);reset.addActionListener(this);Box box0 = Box.createHorizontalBox();JLabel label = new JLabel(学生信息录入,JLabel.CENTER);label.setFont(new Font(黑体, Font.BOLD, 25);box0.add(label);Box box1 =
36、 Box.createHorizontalBox();box1.add(new JLabel(学号:,JLabel.CENTER);box1.add(Snum);Box box2 = Box.createHorizontalBox();box2.add(new JLabel(姓名:,JLabel.CENTER);box2.add(Sname);Box box3 = Box.createHorizontalBox();box3.add(new JLabel(性别:,JLabel.CENTER);box3.add(boy);box3.add(girl);Box box4 = Box.createH
37、orizontalBox();box4.add(new JLabel(专业:,JLabel.CENTER);box4.add(Smajor);Box box5 = Box.createHorizontalBox();box5.add(new JLabel(年级:,JLabel.CENTER);box5.add(Sgrade);Box box6 = Box.createHorizontalBox();box6.add(new JLabel(出生:,JLabel.CENTER);box6.add(Sbirth);Box boxH = Box.createVerticalBox();boxH.add
38、(box0);boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(box5);boxH.add(box6);boxH.add(Box.createVerticalGlue();JPanel putButton = new JPanel();putButton.add(entry);putButton.add(reset);JPanel messPanel = new JPanel();messPanel.add(boxH);messPanel.setBackground(Color.red);putButto
39、n.setBackground(Color.cyan);setLayout(new BorderLayout();add(messPanel,BorderLayout.CENTER);add(putButton,BorderLayout.SOUTH);validate();setVisible(true);/事件处理public void actionPerformed(ActionEvent e) if(e.getSource() = entry)String number = ;number = Snum.getText();String rs = new String4;rs = que
40、ryStu.stuSearch(number);if(rs != null)String w = 该生基础信息已存在,请到修改页面修改!;JOptionPane.showMessageDialog(this, w, 警告, JOptionPane.WARNING_MESSAGE);elseString name = Sname.getText();String major = (String)Smajor.getSelectedItem();String grade = Sgrade.getText();String birth = Sbirth.getText();String sex = null;if(boy.isSelected()sex = boy.getText();if(girl.isSelected()