Java程序设计课程设计报告之学生信息管理系统附全部源码.docx
《Java程序设计课程设计报告之学生信息管理系统附全部源码.docx》由会员分享,可在线阅读,更多相关《Java程序设计课程设计报告之学生信息管理系统附全部源码.docx(52页珍藏版)》请在冰豆网上搜索。
![Java程序设计课程设计报告之学生信息管理系统附全部源码.docx](https://file1.bdocx.com/fileroot1/2023-2/4/2eb3e68c-553e-4796-9037-6684a828b96a/2eb3e68c-553e-4796-9037-6684a828b96a1.gif)
Java程序设计课程设计报告之学生信息管理系统附全部源码
计算机学院课程设计
专业:
计算机科学与技术
课程名称:
JAVA程序设计
课题名称:
学生信息管理系统
教师:
学号:
姓名:
20010年6月25日
第一章总体设计
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需要调用该文件。
4scmanage、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)方法见表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
sqlstrurl
(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
sqlsNumsNamesSexsMajorsGradesBirth
创建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
addStuqueryStu
文本域
JTextField
SnumSnameSgradeSbirth
组合框
JComboBox
Smajor
单选框
ButtonGroup
boy,girl
按钮多斥作用域
ButtonGroup
group
按钮
JButton
Entryreset
(2)方法见表2-4
表2-4主要方法
方法名称
返回类型
功能
备注
InputStudent
无类型
创建录入学生信息界面
构造方法
actionPerformed
无类型
处理响应事件
继承自父类抽象方法
clearMess
无类型
清除文本框内容
无
(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)方法见表2-4
表2-4主要方法
方法名称
返回类型
功能
备注
ModifyStudent
无类型
创建修改学生信息界面
构造方法
actionPerformed
无类型
处理响应事件
继承自父类抽象方法
clearMess
无类型
清除文本框内容
无
(3)源代码见文件Modify、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)方法见表2-4
表2-4主要方法
方法名称
返回类型
功能
备注
QueryStudent
无类型
创建录入学生信息界面
构造方法
actionPerformed
无类型
处理响应事件
继承自父类抽象方法
clearMess
无类型
清除文本框内容
无
(3)源代码见文件QueryStudent、java
2、7类DeleteStudent
(1)成员变量见表2-5
表2-5主要成员变量
成员变量描述
变量类型
名称
StuBean对象类型
StuBean
delStuqueryStu
文本域
JTextField
SnumSnameSgradeSbirthSmajor
单选框
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开发应用程序的基本方法,学习了对数据库的基本操作,能够对MicrosoftAcess的表做基本处理,提高了自己综合运用所学知识的能力。
深刻认识到了基本知识的重要性。
现在我知道了,不知道函数怎么来的,根本什么也做不了。
除非照抄别人的代码,那样也根本不可能知道功能就是如何实现的。
现在很有必要加强基本语法知识的学习了。
JAVA应用性很强,只有老师的讲解不行,只瞧也不中,只有自己动手去做才会发现自己确实有太多的不足,许多程序瞧似简单,真正去做才知道知识并没有自己想象的那样扎实。
从而懂得了理论与实际相结合就是很重要的,只有理论知识就是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力与独立思考的能力。
其中对JAVA图像用户界面、JAVA数据库JDBC的运用、内部匿名类等JAVA知识有了更深的理解与应用。
树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。
而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难与成功时的喜悦。
提高了学习计算机的兴趣,增强了信心。
在本次课程设计中,我遇到了很多的困难,这些困难搞得我焦头烂额,几度试图放弃,但最终坚持着一一把困难克服掉了。
每当克服一个困难,都非常的兴奋,这些都就是自己努力的结果。
现在,我有信心面对接下来的挑战,在不断的实践中锻炼自己,提高自己!
经过几个星期的设计与开发,系统基本开发完毕。
在本次课程设计中困难遇到不少,比如数据库的连接,SQL语言的书写格式,全局参数的传递等。
由于设计时间较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,功能不够完善等多方面问题。
在这次系统开发的过程中,我深深体会到了做一个系统,首先进行需求分析的重要性,了解了一个系统的制作,从功能分析到功能模块分析、与其她系统的关系,再到数据库设计、数据库结构实现及各功能模块的创建都需要从整体上考虑设计。
这些都有待以后进一步改进。
回顾起此次JAVA课程设计,我仍感慨颇多,学到了很多的东西。
同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。
在实际设计中才发现,书本上理论性的东西与在实际运用中的还就是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。
一切问题必须要靠自己一点一滴的解决,而在解决的过程当中您会发现自己在飞速的提升。
参考文献
[1]耿祥义,张跃平、Java2实用教程(第三版)[M]、北京:
清华大学出版社,2006
[2](美)霍斯特曼(Horstmann C、S、)&nbs、Java2核心技术(卷Ⅱ高级特性原书第7版)/Sun公司核心技术丛书[M]、机械工业出版社,2006
全部源码(此源码不在报告中,为了瞧着方便,附在了后面)。
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);
conn、commit();
}
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(SQLExceptionex){
System、err、println("aq、closeConn:
"+ex、getMessage());
}
}
/*
*转换编码
*/
publicstaticStringtoGBK(Stringstr){
try{
if(str==null)
str="";
else
str=newString(str、getBytes("ISO-8859-1"),"GBK");
}
catch(Exceptione){System、out、println(e);}
returnstr;
}
}
DeleteStudent、java
packageStu;
importjava、awt、*;
importjava、awt、event、*;
importjavax、swing、*;
publicclassDeleteStudentextendsJPanelimplementsActionListener{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
/**
*删除界面
*/
StuBeanqueryStu=newStuBean();
StuBeandelStu=newStuBean();
JTextFieldSnum,Sname,Smajor,Sgrade,Sbirth;
JRadioButtonboy,girl;
JButtondel;
ButtonGroupgroup=null;
publicDeleteStudent(){
Snum=newJTextField(20);
del=newJButton("删除");
Snum、addActionListener(this);
del、addActionListener(this);
Sname=newJTextField(20);
Sname、setEditable(false);
Smajor=newJTextField(20);
Smajor、setEditable(false);
Sgrade=newJTextField(20);
Sgrade、setEditable(false);
Sbirth=newJTextField(20);
Sbirth、setEditable(false);
group=newButtonGroup();
boy=newJRadioButton("男",false);
girl=newJRadioButton("女",false);
group、add(boy);
group、add(girl);
Boxbox0=Box、createHorizontalBox();
JLabellabel=newJLabel("学生信息删除",JLabel、CENTER);
label、setFont(newFont("黑体",Font、BOLD,25));
box0、add(label);
Boxbox1=Box、createHorizontalBox();
box1、add(newJLabel("学号:
",JLabel、CENTER));
box1、add(Snum);
box1、add(del);
Boxbox2=Box、createHorizontalBox();
box2、add(newJLabel("姓名:
",JLabel、CENTER));
box2、add(Sname);
Boxbox3=Box、createHorizontalBox();
box3、add(newJLabel("性别:
",JLabel、CENTER));
box3、add(boy);
box3、add(girl);
Boxbox4=Box、createHorizontalBox();
box4、add(newJLabel("专业:
",JLabel、CENTER));
box4、add(Smajor);
Boxbox5=Box、createHorizontalBox();
box5、add(newJLabel("年级:
",JLabel、CENTER));
box5、add(Sgrade);
Boxbox6=Box、createHorizontalBox();
box6、add(newJLabel("出生:
",JLabel、CENTER));
box6、add(Sbirth);
BoxboxH=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());
JPanelmessPanel=newJPanel();
messPanel、add(boxH);
messPanel、setBackground(Color、YELLOW);
setLayout(newBorderLayout());
add(messPanel,BorderLayout、CENTER);
validate();
setVisible(true);
}
//处理事件
publicvoidactionPerformed(ActionEvente){
if(e、getSource()==del||e、getSource()==Snum){
Stringnumber="";
number=Snum、getText();
Stringrs[]=newString[4];
rs=queryStu、stuSearch(number);
if(rs!
=null){
Stringq="该生信息已存在,您想删除该生的基本信息不?
";
intyes=JOptionPane、showConfirmDialog(this,q,"确认",JOptionPane、YES_NO_OPTION,JOptionPane、QUESTION_MESSAGE);
if(yes==JOptionPane、YES_OPTION){
S