Java学生信息管理系统.docx
《Java学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《Java学生信息管理系统.docx(52页珍藏版)》请在冰点文库上搜索。
Java学生信息管理系统
JAVA程序设计课程设计报告
课题:
学生信息管理系统的开发
评阅意见:
评定成绩:
指导老师签名:
年月日
目录
第一章总体设计1
1.1本系统的主要功能1
1.2系统包含的类及类之间的关系1
1.3Java源文件及其功能2
1.4相关文件及其功能3
第二章详细设计4
2.1主类MainWindow4
2.2类Database5
2.3类StuBean5
2.4类InputStudent6
2.5类ModifyStudent7
2.6类QueryStudent8
2.7类DeleteStudent9
第三章功能测试及运行效果10
3.1系统主界面10
3.2录入学生信息界面10
3.3查询学生信息界面11
3.4修改学生信息界面12
3.5修改学生信息界面12
第四章源代码13
第五章小结36
第六章参考文献36
第一章总体设计
1.1本系统的主要功能
本系统是基于数据库的学生信息管理系统,实现了连接数据库,录入、修改、查询、删除学生信息的功能。
1.2系统包含的类及类之间的关系
本系统共包括7个Java源文件和3个辅助文件。
类之间的关系如图1-1所示:
图1-1类之间的关系图
1.3Java源文件及其功能
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
menuSystemmenuStu
菜单项
JMenuItem
itemWelitemExititemSearchitemAdditemEdititemDelete
布局管理器
CardLayout
card
图2-1主要成员变量
(2)方法见表2-2
表2-2主要方法
方法名称
返回类型
功能
备注
MainWindow
无类型
创建窗口
构造方法
actionPerformed
无类型
处理响应事件
继承自父类抽象方法
main
无类型
执行程序
程序的主函数
图2-1主要成员变量
(3)源代码见附录MainWindow.java
2.2类Database
(1)成员变量见表2-3
表2-3主要成员变量
成员变量描述
变量类型
名称
执行SQL语句的接口
Statement
stmt
返回结果的接口
ResultSet
rs
数据库连接接口
Connection
conn
字符串(SQL语句、驱动)
String
sqlstrurl
图2-3主要成员变量
(2)方法见表2-4
表2-4主要方法
方法名称
返回类型
功能
备注
Database
无类型
创建Database对象
构造方法
OpenConn
无类型
打开数据库连接
无
executeQuery
ResultSet
执行SQL查询语句,返回结果集RS
返回ResultSet类型结果集
executeUpdate
无类型
执行SQL更新语句
无
closeStmt
无类型
关闭当前的Statement对象
无
closeConn
无类型
关闭数据库连接
无
图2-4主要方法
(3)源代码见附录Database.java
2.3类StuBean
(1)成员变量见表2-5
表2-5主要成员变量
成员变量描述
变量类型
名称
返回结果的接口
ResultSet
rs
字符串(SQL语句数据库属性)
String
sqlsNumsNamesSexsMajorsGradesBirth
创建Database对象
Database
DB
图2-5主要成员变量
(2)方法见表2-4
表2-4主要方法
方法名称
返回类型
功能
备注
stuAdd
添加学生信息
无
stuModify
修改学生信息
无
stuDel
删除学生信息
无
stuSearch
String[]
根据学号查询学生信息
返回ResultSet类型结果集
图2-4主要方法
(3)源代码见附录StuBean.java
2.4类InputStudent
(1)成员变量见表2-5
表2-5主要成员变量
成员变量描述
变量类型
名称
StuBean对象类型
StuBean
addStuqueryStu
文本域
JTextField
SnumSnameSgradeSbirth
组合框
JComboBox
Smajor
单选框
ButtonGroup
boy,girl
按钮多斥作用域
ButtonGroup
group
按钮
JButton
Entryreset
图2-5主要成员变量
(2)方法见表2-4
表2-4主要方法
方法名称
返回类型
功能
备注
InputStudent
无类型
创建录入学生信息界面
构造方法
actionPerformed
无类型
处理响应事件
继承自父类抽象方法
clearMess
无类型
清除文本框内容
无
图2-4主要方法
(3)源代码见附录InputStudent.java
2.5类ModifyStudent
(1)成员变量见表2-5
表2-5主要成员变量
成员变量描述
变量类型
名称
StuBean对象类型
StuBean
modifyStuqueryStu
文本域
JTextField
SnumSnameSgradeSbirth
组合框
JComboBox
Smajor
单选框
ButtonGroup
boy,girl
按钮多斥作用域
ButtonGroup
group
按钮
JButton
entryresetstart
图2-5主要成员变量
(2)方法见表2-4
表2-4主要方法
方法名称
返回类型
功能
备注
ModifyStudent
无类型
创建修改学生信息界面
构造方法
actionPerformed
无类型
处理响应事件
继承自父类抽象方法
clearMess
无类型
清除文本框内容
无
图2-4主要方法
(3)源代码见附录ModifyStudent.java
2.6类QueryStudent
(1)成员变量见表2-5
表2-5主要成员变量
成员变量描述
变量类型
名称
StuBean对象类型
StuBean
queryStu
文本域
JTextField
SnumSnameSgradeSbirthSmajor
启动并执行打印作业
PrintJob
pri
单选框
ButtonGroup
boy,girl
按钮多斥作用域
ButtonGroup
group
按钮
JButton
quertprint
面板(查询结果之后)
JPanel
messPanel
图2-5主要成员变量
(2)方法见表2-4
表2-4主要方法
方法名称
返回类型
功能
备注
QueryStudent
无类型
创建录入学生信息界面
构造方法
actionPerformed
无类型
处理响应事件
继承自父类抽象方法
clearMess
无类型
清除文本框内容
无
图2-4主要方法
(3)源代码见附录QueryStudent.java
2.7类DeleteStudent
(1)成员变量见表2-5
表2-5主要成员变量
成员变量描述
变量类型
名称
StuBean对象类型
StuBean
delStuqueryStu
文本域
JTextField
SnumSnameSgradeSbirthSmajor
单选框
ButtonGroup
boy,girl
按钮多斥作用域
ButtonGroup
group
按钮
JButton
del
图2-5主要成员变量
(2)方法见表2-4
表2-4主要方法
方法名称
返回类型
功能
备注
InputStudent
无类型
创建录入学生信息界面
构造方法
actionPerformed
无类型
处理响应事件
继承自父类抽象方法
clearMess
无类型
清除文本框内容
无
图2-4主要成员变量
(3)源代码见附录DeleteStudent.java
第三章功能测试及运行效果
3.1系统主界面
图3-1系统主窗口
3.2录入学生信息界面
图3-2学生信息录入界面
3.3查询学生信息界面
图3-3学生信息查询界面
3.4修改学生信息界面
图3-4学生信息修改界面
3.5修改学生信息界面
第四章源代码
1.MainWindow.java源代码:
packageStu;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
publicclassMainWindowextendsJFrameimplementsActionListener{
InputStudentins;
ModifyStudentmos;
QueryStudentqus;
DeleteStudentdes;//建立菜单栏
JMenuBarbar;//建立“系统管理”菜单组
JMenumenuSystem;
JMenuItemitemExit;
JMenuItemitemWel;//建立“学生管理”菜单组
JMenumenuStu;
JMenuItemitemSearch;
JMenuItemitemAdd;
JMenuItemitemEdit;
JMenuItemitemDelete;
Filefile=null;
CardLayoutcard;
JLabellabel=null;
JPanelpCenter;
publicMainWindow(){//生成“系统管理”组
menuSystem=newJMenu("系统管理");
itemWel=newJMenuItem("欢迎界面");
itemExit=newJMenuItem("退出");//生成“学生管理”组
menuStu=newJMenu("学生管理");
itemAdd=newJMenuItem("录入学生信息");
itemSearch=newJMenuItem("查询学生信息");
itemEdit=newJMenuItem("修改学生信息");
itemDelete=newJMenuItem("删除学生记录");
//添加所有菜单组
bar=newJMenuBar();
bar.add(menuSystem);
bar.add(menuStu);//添加“系统管理”菜单项
menuSystem.add(itemWel);
menuSystem.add(itemExit);//添加“学生管理”菜单项
menuStu.add(itemAdd);
menuStu.add(itemSearch);
menuStu.add(itemEdit);
menuStu.add(itemDelete);
setJMenuBar(bar);//设置主窗口
label=newJLabel("学生信息管理系统",JLabel.CENTER);
label.setIcon(new
ImageIcon(getClass().getResource("welcome.jpg")));
label.setFont(newFont("黑体",Font.BOLD,40));
label.setHorizontalTextPosition(SwingConstants.CENTER);
label.setForeground(Color.RED);//添加事件监听
itemExit.addActionListener(this);
itemWel.addActionListener(this);
itemAdd.addActionListener(this);
itemSearch.addActionListener(this);
itemEdit.addActionListener(this);
itemDelete.addActionListener(this);//卡片布局管理器设置
card=newCardLayout();
pCenter=newJPanel();
pCenter.setLayout(card);
ins=newInputStudent();
mos=newModifyStudent();
qus=newQueryStudent();
des=newDeleteStudent();
pCenter.add("欢迎界面",label);
pCenter.add("录入界面",ins);
pCenter.add("查询界面",qus);
pCenter.add("修改界面",mos);
pCenter.add("删除界面",des);
add(pCenter,BorderLayout.CENTER);
setTitle("学生信息管理系统");//设置窗口名
ImageIconicon=new
ImageIcon(getClass().getResource("icon.jpg"));//设置最小化图标
setIconImage(icon.getImage());
validate();
setVisible(true);
//setExtendedState(JFrame.MAXIMIZED_BOTH);
setBounds(250,200,440,390);//关闭窗口
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
intn=JOptionPane.showConfirmDialog(null,"确认退出吗?
","确认对话框",JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION)
System.exit(0);
}
});
}
//事件处理
publicvoidactionPerformed(ActionEvente){
//返回欢迎界面
if(e.getSource()==itemWel){
intok=JOptionPane.showConfirmDialog(this,"确认返回吗?
","确认对话框",JOptionPane.YES_NO_OPTION);
if(ok==JOptionPane.YES_OPTION)
card.show(pCenter,"欢迎界面");
}//退出
elseif(e.getSource()==itemExit){
intn=JOptionPane.showConfirmDialog(this,"确认退出吗?
",
"确认对话框",JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION)
System.exit(0);
}//录入
elseif(e.getSource()==itemAdd){
ins.clearMess();
card.show(pCenter,"录入界面");
}
//修改
elseif(e.getSource()==itemEdit){
mos.clearMess();
card.show(pCenter,"修改界面");
}
//查询
elseif(e.getSource()==itemSearch){
qus.clearMess();
card.show(pCenter,"查询界面");
}
//删除
elseif(e.getSource()==itemDelete){
card.show(pCenter,"删除界面");
}
}
publicstaticvoidmain(Stringargs[]){
newMainWindow();
}
}
2.Database.java源代码:
packageStu;
importjava.sql.*;
publicclassDatabase{
privateStatementstmt=null;
ResultSetrs=null;
privateConnectionconn=null;
Stringsql;
Stringstrurl="jdbc:
odbc:
scmanage";
publicDatabase(){
}
/**
*打开数据库连接
*/
publicvoidOpenConn()throwsException{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection(strurl);
}
catch(Exceptione){
System.err.println("OpenConn:
"+e.getMessage());
}
}
/**
*执行SQL查询语句,返回结果集RS
*/
publicResultSetexecuteQuery(Stringsql){
stmt=null;
rs=null;
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(SQLExceptione){
System.err.println("executeQuery:
"+e.getMessage());
}
returnrs;
}
/**
*执行SQL更新语句
*/
publicvoidexecuteUpdate(Stringsql){
stmt=null;
rs=null;
try{
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
stmt.executeQuery(sql);
mit();
}
catch(SQLExceptione){
System.err.println("executeUpdate:
"+e.getMessage());
}
}
publicvoidcloseStmt(){
try{
stmt.close();
}
catch(SQLExceptione){
System.err.println("closeStmt:
"+e.getMessage());
}
}
/**
*关闭数据库连接
*/
publicvoidcloseConn(){
try{
conn.close();
}
catch(SQLExcep