大学JAVA课程设计学生信息管理系统.doc
(JAVA程序设计) 学生信息管理系统起止日期: 2013 年 06 月 10日 至 2013 年 06 月 14 日学生姓名 贾光明班级网络102班学号10408400229成绩指导教师(签字)计算机与通信学院2013年 06 月摘要本系统主要完成对学生信息的管理,包括录入、添加、修改、删除、查询、打印信息等方面。系统可以完成对各类系统浏览、查询、添加、删除、修改等功能 。系统的核心是添加、修改和删除三者之间的联系,每一个表的修改都将联动的修改其他的表,当完成添加删除操作时系统会自动地完成学生信息的修改。 设计一个简单学生个人信息管理系统,该系统具有录入,查询,修改三项基本功能。要求如下:(1) 具有简单的录入,查询和修改功能。(2) 修改学生信息必须输入学号,然后对姓名、性别等修改;(3) 使用文件存储数据。(也可用数据库) 目 录一、课程设计的目的与意义31.目的32.意义3二、需求分析31. 学生学籍管理系统主界面模块32. 录入学生基本信息模块33. 修改学生基本信息模板33. 查询学生基本信息模板34. 删除学生基本信息模板3三、分案设计31. 定义四个Panel面板 4 四、方案的实施5五、心得体会16六、参考文献18一、课程设计的目的与意义 目的:深入理解java语言的语法规则及其优势,掌握类与方法的构造方法,掌 握基于java的各种操作的实现方法,训练对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力。在实践中培养独立分析问题和解决问题的作风和能力。 意义:熟练运用java语言、基本构造方法和算法的基础知识,独立编制一个具有中等难度的、解决实际应用问题的应用程序。通过题意分析、选择类结构、算法设计、编制程序、调试程序、软件测试、结果分析、撰写课程设计报告等环节完成软件设计的全过程,不断地完善程序以提高程序的性能。二、 需求分析该学生学籍管理系统的所有功能均在一个Frame窗体中实现。学生学籍管理系统主界面模块: 采用Frame窗体来设置欢迎界面包括背景图片及字幕(可以设计成滚动字幕效果),左上方的菜单条设计成下拉式。包括“录入学生基本信息”、“修改学生基本信息”、“删除学生基本信息”、“查询学生基本信息”和“退出系统”五项菜单项。录入学生基本信息模块: 采用Panel面板来设置该部分内容信息并采用方位布局(边缘布局)和Box轻量级组件来设置“学号”、“姓名”、“性别”、“专业”、“年级”、“出生”,并在该面板中添加了“录入”和“重置”两个按钮进行监听,最后将该面板加入到Frame窗体中去。修改学生基本信息模板: 采用Panel面板来设置该部分内容信息,同样是采用方位布局及Box组件来设置相关信息,并在学号旁设置了“开始修改”按钮。在面板南部方位添加了“确定修改”和“重置”两按钮进行监听。查询学生基本信息模板: 采用Panel面板来设置该部分内容信息,并将该面板加入到主窗体中去,采用边缘布局进行方位设置,在上方加入“查询”按钮进行监听。删除学生基本信息模板: 也是采用Panel面板进行设置相关内容,并用边缘布局进行布局,并在上方添加“确定”按钮,在下方添加“确定删除”按钮实现监听。三、分案设计 定义四个Panel面板 1.定义Reg(录入学生基本信息)面板采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“录入学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。然后在面板的South方位设置“录入”与“重置”两按钮。最后实现与数据库的桥接,能够将从文本框获得的信息存储到数据库中去。 2.定义Search(查询学生基本信息)面板该部分同样采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“查询学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,在学号这一文本框后再添加一个“查询”按钮。并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去。3.定义Modify(修改学生基本信息)面板该部分同样也是采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“修改学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,并将其加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。并在 “学号”该文本框后添加一个“开始修改”按钮用来监听。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去,并将修改后的信息存储到数据库中去。4.定义Delete(删除学生基本信息)面板该部分还是采用BorderLayout(构造一个组件之间没有间距的新边界布)和Box轻量级组件进行布局,在面板的Nother方位添加一个“修改学生基本信息”的标签,并更改字体,颜色等。接着用JTextField轻量级组件来设置单行文本编辑,在学号这一文本框后再添加一“确定”按钮实现监听。并将其所有文本框和标签加入到用createHorizontalBox()方法创建具有一个从左到右显示其组件的Box和用createHorizontalStrut()创建一个不可见的、固定宽度的组件,使其在一个横向 box 中,通常使用此方法强行使两个组件之间具有某一空间量。并在 “学号”该文本框后添加一个“开始修改”按钮用来监听。然后Box与Box之间用createVerticalBox()创建一个从上到下显示其组件的 Box,并用createVerticalStrut()方法创建一个不可见的、固定高度的组件,使其在一个纵向 box 中,通常使用此方法强行使两个组件之间具有某一空间量,还在本面板的South方位添加“确定删除”按钮。最后实现与数据库的桥接,能够将从数据库中获取信息并显示到文本框中去,删除后同时在数据库中也删除该信息并保存该操作。四、方案的实施1、学生信息管理系统的登录学生信息管理系统可由管理员和学生两种身份的人使用。管理员和学生身份登录所能操作的功能有很大的区别。系统初始化一个系统管理员,登录名:admin 密码:admin 学生登录系统的登录名为学号,密码也为学号(如:10001),登录后可以修改密码。登录界面登录系统后的界面注册学生信息界面修改学生信息界面查询学生信息界面删除学生信息界面1 程序类的设计DeleteListener.java:删除监听JTMouseListener.java:树状视图LoginListener.java:登陆监听ResetListener.java:重置监听SaveListener.java:保存监听SearchAllListener.java:搜索所有学生信息SearchDListener.java:搜索一个学生信息SearchListener.java:搜索一个学生信息SearchRListener.java:搜索一个学生信息SubmitListener.java:提交信息监听2 系统的使用说明及环境配置学生信息管理系统提供了管理员和学生这两个角色登录系统,管理员通过用户名:admin 密码:admin 登录系统后可以进行相应的操作。学生通过以自己的学号(如10001)作为用户名和密码登录系统后进行相应的学生权限范围内的操作。数据库:Mysql连接数据库的登录名:root 密码:zfz代码: DeleteListener.java:删除监听package manager.ui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JOptionPane;import manager.dao.JdbcIcpCURD;import manager.ui.conponent.DeletePanel;public class DeleteListener implements ActionListener public void actionPerformed(ActionEvent e) JButton jb=(JButton) e.getSource();DeletePanel dp=(DeletePanel) jb.getParent();String xuehao=dp.xuehaoFd.getText();String msg= "你确定要删除学号为"+xuehao+"的学生信息么?"int i=JOptionPane.showConfirmDialog(dp,msg,"提示信息",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE);if(i=0)JdbcIcpCURD curd=new JdbcIcpCURD();boolean b=curd.deleteByXuehao(Integer.parseInt(xuehao);if(b)dp.errorLb.setText("删除成功");elsedp.errorLb.setText("删除失败");return; JTMouseListener.java:树状视图package manager.ui.listener;import java.awt.CardLayout;import java.awt.Component;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JTree;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.TreeNode;import javax.swing.tree.TreePath;import manager.ui.conponent.MainFrame;import manager.ui.conponent.PLeft;public class JTMouseListener implements MouseListener Overridepublic void mouseClicked(MouseEvent e) / TODO Auto-generated method stub JTree jt=(JTree) e.getSource(); PLeft p=(PLeft) jt.getParent(); MainFrame f=(MainFrame) p.getParent().getParent().getParent().getParent(); TreePath path = jt.getPathForLocation(e.getX(), e.getY(); if(path=null) return; DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); String s=node.toString(); CardLayout cl=f.getPright().getLayout(); if(s.equals("注册学生") cl.show(f.getPright(), "register"); if(s.equals("修改学生信息") cl.show(f.getPright(), "modify"); if(s.equals("查询学生信息") cl.show(f.getPright(), "search"); if(s.equals("删除学生信息") cl.show(f.getPright(), "delete"); if(s.equals("学生信息管理") cl.show(f.getPright(), "welcom");Overridepublic void mouseEntered(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseExited(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mousePressed(MouseEvent e) / TODO Auto-generated method stubOverridepublic void mouseReleased(MouseEvent e) / TODO Auto-generated method stub LoginListener.java:登陆监听package manager.ui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JOptionPane;import manager.ui.conponent.Login;import manager.ui.conponent.MainFrame;public class LoginListener implements ActionListener Overridepublic void actionPerformed(ActionEvent e) JButton bt=(JButton) e.getSource();Login frame=(Login) bt.getParent().getParent().getParent().getParent();String username=frame.usernameTa.getText().trim();String password=frame.passwordTa.getText().trim();if(username!=null|password!=null)if("admin".equals(username)&&"123".equals(password)new MainFrame().setVisible(true);frame.dispose();elseframe.messageLb.setText("用户名或密码错误");elseframe.messageLb.setText("用户名或密码错误"); ResetListener.java:重置监听package manager.ui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import manager.ui.conponent.RegPanel;public class ResetListener implements ActionListener Overridepublic void actionPerformed(ActionEvent e) JButton jb=(JButton) e.getSource(); RegPanel jp=(RegPanel) jb.getParent(); jp.xuehaoFd.setText(""); jp.nameFd.setText(""); jp.addressFd.setText(""); SaveListener.java:保存监听package manager.ui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.ModifyPanel;public class SaveListener implements ActionListener Overridepublic void actionPerformed(ActionEvent e) JButton jb=(JButton) e.getSource();ModifyPanel mp=(ModifyPanel) jb.getParent();String xuehao=mp.xuehaoTf.getText().trim();String name=mp.nameTf.getText().trim();String gender=mp.genderTf.getText().trim();String address=mp.addressTf.getText().trim();String oldXuehao=mp.xuehaoFd.getText().trim();if(oldXuehao=null|xuehao.equals("")oldXuehao=xuehao;if(xuehao=null|xuehao.equals("")mp.errorLb.setText("请输入修改后的学号.");return;if(name=null|name.equals("")mp.errorLb.setText("请输入修改后的姓名.");return;if(gender=null|gender.equals("")mp.errorLb.setText("请输入修改后的性别.");return;if(address=null|address.equals("")mp.errorLb.setText("请输入修改后的地址.");return;Student stu=new Student();stu.setXuehao(Integer.parseInt(xuehao);stu.setName(name);stu.setGender(gender);stu.setAddress(address);int old=Integer.parseInt(oldXuehao);JdbcIcpCURD curd=new JdbcIcpCURD();if(curd.modify(stu, old)mp.errorLb.setText("修改成功."); SearchAllListener.java:搜索所有学生信息 package manager.ui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Vector;import javax.swing.JButton;import javax.swing.JTextArea;import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.SearchPanel;public class SearchAllListener implements ActionListener Overridepublic void actionPerformed(ActionEvent e) JButton jb=(JButton) e.getSource();SearchPanel sp=(SearchPanel) jb.getParent();JTextArea jt=sp.resultTa;JdbcIcpCURD curd=new JdbcIcpCURD();Vector<Student> students=curd.getAllStudent();StringBuilder sb=new StringBuilder();for(Student s:students)sb.append(" ");sb.append(s.getXuehao();sb.append("t");sb.append(s.getName();sb.append("t");sb.append(s.getGender();sb.append("t");sb.append(s.getAddress();sb.append("t");sb.append(s.getRegTime().toString();sb.append("n");jt.setText(sb.toString(); SearchDListener.java:搜索一个学生信息package manager.ui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.DeletePanel;import manager.ui.conponent.ModifyPanel;import manager.ui.conponent.SearchPanel;public class SearchDListener implements ActionListener Overridepublic void actionPerformed(ActionEvent e) JButton jb=(JButton) e.getSource();DeletePanel dp=(DeletePanel) jb.getParent();JdbcIcpCURD curd=new JdbcIcpCURD();String s=dp.xuehaoFd.getText().trim();Student stu=curd.searchByXuehao(Integer.parseInt(s);if(stu=null)dp.errorLb.setText("没有查询到此学生");return;dp.xuehaoTf.setText(new Integer(stu.getXuehao().toString();dp.nameTf.setText(stu.getName();dp.genderTf.setText(stu.getGender();dp.addressTf.setText(stu.getAddress(); SearchListener.java:搜索一个学生信息package manager.ui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.ModifyPanel;public class SearchListener implements ActionListener Overridepublic void actionPerformed(ActionEvent e) JButton jb=(JButton) e.getSource();ModifyPanel mp=(ModifyPanel) jb.getParent();String s=mp.xuehaoFd.getText().trim();if(s=null|s.equals("")mp.errorLb.setText("请输入学号.");return;JdbcIcpCURD curd=new JdbcIcpCURD();Student stu=curd.searchByXuehao(Integer.parseInt(s);mp.xuehaoTf.setText(new Integer(stu.getXuehao().toString();mp.nameTf.setText(stu.getName();mp.genderTf.setText(stu.getGender();mp.addressTf.setText(stu.getAddress(); SearchRListener.java:搜索一个学生信息package manager.ui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.ModifyPanel;import manager.ui.conponent.SearchPanel;public class SearchRListener implements ActionListener Overridepublic void actionPerformed(ActionEvent e) JButton jb=(JButton) e.getSource();SearchPanel sp=(SearchPanel) jb.getParent();JdbcIcpCURD curd=new JdbcIcpCURD();String s=sp.xuehaoTf.getText().trim();Student stu=curd.searchByXuehao(Integer.parseInt(s);if(stu=null)return;StringBuilder sb=new StringBuilder();sb.append(" ");sb.append(stu.getXuehao();sb.append("t");sb.append(stu.getName();sb.append("t");sb.append(stu.getGender();sb.append("t");sb.append(stu.getAddress();sb.append("t");sb.append(stu.getRegTime().toString();sb.append("n");sp.resultTa.setText(sb.toString(); SubmitListener.java:提交信息监听package manager.ui.listener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Date;import javax.swing.JButton;import javax.swing.JLabel;import manager.dao.JdbcIcpCURD;import manager.domain.Student;import manager.ui.conponent.RegPanel;public class SubmitListener implements ActionListener Overridepublic void actionPerformed(ActionEvent e) JButton jb=(JButton) e.getSource(); RegPanel jp=(RegPanel) jb.getParent(); String xuehao=jp.xuehaoFd.getText(); String name=jp.nameFd.getText(); String address=jp.addressFd.getText(); String gender="" boolean b1=jp.maleRB.isSelected(); boolean b2=jp.femaleRB.isSelected(); if(b1) JLabel errorLabel=jp.errorLabel; if(xuehao=null|xuehao.trim().equals("") errorLabel.setText("没有填写学号."); return; if(name=null|name.trim().equals("") errorLabel.setText("没有填写姓名."); return; if(address=null|address.trim().equals("") errorLabel.setText("没有填写地址."); return;