收藏 分销(赏)

Java程序设计课程设计报告之学生信息管理系统附全部源码.doc

上传人:丰**** 文档编号:11184203 上传时间:2025-07-04 格式:DOC 页数:67 大小:518KB 下载积分:16 金币
下载 相关 举报
Java程序设计课程设计报告之学生信息管理系统附全部源码.doc_第1页
第1页 / 共67页
Java程序设计课程设计报告之学生信息管理系统附全部源码.doc_第2页
第2页 / 共67页


点击查看更多>>
资源描述
Java程序设计课程设计报告之学生信息管理系统附全部源码 63 2020年4月19日 文档仅供参考 计算机学院课程设计 专 业: 计算机科学与技术 课程名称: JAVA程序设计 课题名称: 学生信息管理系统 教 师: 学 号: 姓 名: 0年 6 月 25 日 目 录 第一章 总体设计 1 1.1本系统的主要功能 1 1.2系统包含的类及类之间的关系 1 1.3 Java源文件及其功能 1 1.4相关文件及其功能 2 第二章 详细设计 3 2.1主类MainWindow 3 2.2类Database 4 2.3类StuBean 5 2.4类InputStudent 6 2.5类ModifyStudent 7 2.6类QueryStudent 8 2.7类DeleteStudent 9 第三章 功能测试及运行效果 10 3.1 系统主界面 10 3.2 录入学生信息界面 11 3.3 查询学生信息界面 11 3.4 修改学生信息界面 12 3.5 修改学生信息界面 12 工作总结 13 参考文献 14 第一章 总体设计 1.1本系统的主要功能 本系统是基于数据库的学生信息管理系统,实现了连接数据库,录入、修改、查询、删除学生信息的功能。 1.2系统包含的类及类之间的关系 本系统共包括7个Java源文件和3个辅助文件。类之间的关系如图1-1所示 Main Window Input Student Modify Studen Delete Student Query Student Database Image Icon StuBean File StuBean Database File StuBean Database StuBean Database 图 1-1 类之间的关系图 1.3 Java源文件及其功能 1.MainWindow.java 该类负责创立学生信息管理系统的主窗口,该类还有main方法,程序从该类开始执行。 2.InputStudent.java 该类创立的对象是MainWindow类的重要成员之一,负责提供录入学生基本信息的界面。 3.ModifyStudent.java 该类创立的对象是MainWindow类的重要成员之一,负责提供修改学生基本信息的界面。 4.DeleteStudent.java 该类创立的对象是MainWindow类的重要成员之一,负责提供删除学生基本信息的界面。 5.QueryStudent.java 该类创立的对象是MainWindow类的重要成员之一,负责提供查询学生基本信息以及打印基本信息的界面。 6.Database.java 该类负责提供打开与关闭数据库连接的功能。 7.StuBean.java 该类负责数据库操作,包括对学生信息数据库的添加、查询、修改、删除。 1.4相关文件及其功能 1.welcome.jpg 为主窗口的背景图片,MainWidow需要调用该文件。 2.icon.jpg 该文件是窗口最小化时的窗口图标,MainWidow需要调用该文件。 3.专业.txt 该文件为专业组合的组合键提供下拉菜单的内容,InputStudent与ModifyStudent需要调用该文件。 4 scmanage.mdb 该文件为本程序数据源,负责保存学生基本信息,Database连接到该数据库 第二章 详细设计 2.1主类MainWindow (1)成员变量见表2-1 表2-1 主要成员变量(属性) 成员变量描述 变量类型 名称 面板 InputStudent ins 面板 ModifyStudent mos 面板 DeleteStudent des 面板 QueryStudent qus 菜单栏 JButtonBar bar 菜单组 JMenu menuSystem menuStu 菜单项 JMenuItem itemWel itemExit itemSearch itemAdd itemEdit itemDelete 布局管理器 CardLayout card (2)方法见表2-2 表2-2 主要方法 方法名称 返回类型 功能 备注 MainWindow 无类型 创立窗口 构造方法 actionPerformed 无类型 处理响应事件 继承自父类抽象方法 main 无类型 执行程序 程序的主函数 (3)源代码见文件MainWindow.java 2.2类Database (1)成员变量见表2-3 表2-3 主要成员变量 成员变量描述 变量类型 名称 执行SQL语句的接口 Statement stmt 返回结果的接口 ResultSet rs 数据库连接接口 Connection conn 字符串(SQL语句、驱动) String sql strurl (2)方法见表2-4 表2-4 主要方法 方法名称 返回类型 功能 备注 Database 无类型 创立Database对象 构造方法 OpenConn 无类型 打开数据库连接 无 executeQuery ResultSet 执行SQL查询语句,返回结果集RS 返回ResultSet类型结果集 executeUpdate 无类型 执行SQL更新语句 无 closeStmt 无类型 关闭当前的Statement对象 无 closeConn 无类型 关闭数据库连接 无 (3)源代码见文件Database.java 2.3类StuBean (1)成员变量见表2-5 表2-5 主要成员变量 成员变量描述 变量类型 名称 返回结果的接口 ResultSet rs 字符串(SQL语句 数据库属性) String sql sNum sName sSex sMajor sGrade sBirth 创立Database对象 Database DB (2)方法见表2-4 表2-4 主要方法 方法名称 返回类型 功能 备注 stuAdd 添加学生信息 无 stuModify 修改学生信息 无 stuDel 删除学生信息 无 stuSearch String[] 根据学号查询学生信息 返回ResultSet类型结果集 (3)源代码见文件StuBean.java 2.4类InputStudent (1)成员变量见表2-5 表2-5 主要成员变量 成员变量描述 变量类型 名称 StuBean对象类型 StuBean addStu queryStu 文本域 JTextField Snum Sname Sgrade Sbirth 组合框 JComboBox Smajor 单选框 ButtonGroup boy,girl 按钮多斥作用域 ButtonGroup group 按钮 JButton Entry reset (2)方法见表2-4 表2-4 主要方法 方法名称 返回类型 功能 备注 InputStudent 无类型 创立录入学生信息界面 构造方法 actionPerformed 无类型 处理响应事件 继承自父类抽象方法 clearMess 无类型 清除文本框内容 无 (3)源代码见文件InputStudent.java 2.5类ModifyStudent (1)成员变量见表2-5 表2-5 主要成员变量 成员变量描述 变量类型 名称 StuBean对象类型 StuBean modifyStu queryStu 文本域 JTextField Snum Sname Sgrade Sbirth 组合框 JComboBox Smajor 单选框 ButtonGroup boy,girl 按钮多斥作用域 ButtonGroup group 按钮 JButton entry reset start (2)方法见表2-4 表2-4 主要方法 方法名称 返回类型 功能 备注 ModifyStudent 无类型 创立修改学生信息界面 构造方法 actionPerformed 无类型 处理响应事件 继承自父类抽象方法 clearMess 无类型 清除文本框内容 无 (3)源代码见文件Modify.java 2.6类QueryStudent (1)成员变量见表2-5 表2-5 主要成员变量 成员变量描述 变量类型 名称 StuBean对象类型 StuBean queryStu 文本域 JTextField Snum Sname Sgrade Sbirth Smajor 启动并执行打印作业 PrintJob pri 单选框 ButtonGroup boy,girl 按钮多斥作用域 ButtonGroup group 按钮 JButton quert print 面板(查询结果之后) JPanel messPanel (2)方法见表2-4 表2-4 主要方法 方法名称 返回类型 功能 备注 QueryStudent 无类型 创立录入学生信息界面 构造方法 actionPerformed 无类型 处理响应事件 继承自父类抽象方法 clearMess 无类型 清除文本框内容 无 (3)源代码见文件QueryStudent.java 2.7类DeleteStudent (1)成员变量见表2-5 表2-5 主要成员变量 成员变量描述 变量类型 名称 StuBean对象类型 StuBean delStu queryStu 文本域 JTextField Snum Sname Sgrade Sbirth Smajor 单选框 ButtonGroup boy,girl 按钮多斥作用域 ButtonGroup group 按钮 JButton del (2)方法见表2-4 表2-4 主要方法 方法名称 返回类型 功能 备注 InputStudent 无类型 创立录入学生信息界面 构造方法 actionPerformed 无类型 处理响应事件 继承自父类抽象方法 clearMess 无类型 清除文本框内容 无 (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的表做基本处理,提高了自己综合运用所学知识的能力。 深刻认识到了基本知识的重要性。现在我知道了,不知道函数怎么来的,根本什么也做不了。除非照抄别人的代码,那样也根本不可能知道功能是如何实现的。现在很有必要加强基本语法知识的学习了。JAVA应用性很强,只有老师的讲解不行,只看也不中,只有自己动手去做才会发现自己确实有太多的不足,许多程序看似简单,真正去做才知道知识并没有自己想象的那样扎实。从而懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。其中对JAVA图像用户界面、JAVA数据库JDBC的运用、内部匿名类等JAVA知识有了更深的理解与应用。树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。 提高了学习计算机的兴趣,增强了信心。在本次课程设计中,我遇到了很多的困难,这些困难搞得我焦头烂额,几度试图放弃,但最终坚持着一一把困难克服掉了。每当克服一个困难,都非常的兴奋,这些都是自己努力的结果。现在,我有信心面对接下来的挑战,在不断的实践中锻炼自己,提高自己! 经过几个星期的设计和开发,系统基本开发完毕。在本次课程设计中困难遇到不少,比如数据库的连接,SQL语言的书写格式,全局参数的传递等。由于设计时间较短,因此该系统还有许多不尽如人意的地方,比如用户界面不够美观,功能不够完善等多方面问题。在这次系统开发的过程中,我深深体会到了做一个系统,首先进行需求分析的重要性,了解了一个系统的制作,从功能分析到功能模块分析、与其它系统的关系,再到数据库设计、数据库结构实现及各功能模块的创立都需要从整体上考虑设计。这些都有待以后进一步改进。 回顾起此次JAVA课程设计,我仍感慨颇多,学到了很多的东西。同时不但巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,因此有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。 参考文献 [1] 耿祥义,张跃平.Java 2实用教程(第三版)[M].北京:清华大学出版社, [2] (美)霍斯特曼(Horstmann C.S.)&nbs. Java2核心技术(卷Ⅱ高级特性原书第7版)/Sun公司核心技术丛书 [M].机械工业出版社, 全部源码(此源码不在报告中,为了看着方便,附在了后面)。 Database.java package Stu; import 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 Exception{ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn=DriverManager.getConnection(strurl); } catch(Exception e){ System.err.println("OpenConn:"+e.getMessage()); } } /** * 执行SQL查询语句,返回结果集RS */ public ResultSet executeQuery(String sql){ stmt = null; rs=null; try{ stmt=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=null; try{ stmt=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(){ try{ stmt.close(); } catch(SQLException e){ System.err.println("closeStmt:"+e.getMessage()); } } /** * 关闭数据库连接 */ public void closeConn(){ try{ conn.close(); } catch(SQLException ex){ System.err.println("aq.closeConn:"+ex.getMessage()); } } /* *转换编码 */ public static String toGBK(String str){ try { if(str==null) str = ""; else str=new String(str.getBytes("ISO-8859-1"),"GBK"); } catch (Exception e) {System.out.println(e);} return str; } } DeleteStudent.java package 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(); JTextField 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); 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 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 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 = Box.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(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 String[4]; rs = queryStu.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(rs[0]); Smajor.setText(rs[2]); Sgrade.setText(rs[3]); Sbirth.setText(rs[4]); if(rs[1].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); 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); } } else{ JOptionPane.showMessageDialog(this,"该学号不存在!","警告", JOptionPane.WARNING_MESSAGE); } } } } InputStudent.java package 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 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(); try{ File f = new File("专业.txt"); FileReader fr = new FileReader(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("女",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 = 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.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 = Box.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 putButton = new JPanel(); putButton.add(entry); putButton.add(reset); JPanel messPanel = new JPanel(); messPanel.add(boxH); messPanel.setBackground(Color.red); putButton.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 String[4]; rs = queryStu.stuSearch(number); if(rs != null){ String w = "该生基本信息已存在,请到修改页面修改!"; JOptionPane.showMessageDialog(this, w, "警告", JOptionPane.WARNING_MESSAGE); } else{ String name = Sname.getText(); String major = (String)Smajor.getSelectedItem(); Stri
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服