java课程设计学生信息管理系统.docx

上传人:b****6 文档编号:15355487 上传时间:2023-07-03 格式:DOCX 页数:62 大小:158.70KB
下载 相关 举报
java课程设计学生信息管理系统.docx_第1页
第1页 / 共62页
java课程设计学生信息管理系统.docx_第2页
第2页 / 共62页
java课程设计学生信息管理系统.docx_第3页
第3页 / 共62页
java课程设计学生信息管理系统.docx_第4页
第4页 / 共62页
java课程设计学生信息管理系统.docx_第5页
第5页 / 共62页
java课程设计学生信息管理系统.docx_第6页
第6页 / 共62页
java课程设计学生信息管理系统.docx_第7页
第7页 / 共62页
java课程设计学生信息管理系统.docx_第8页
第8页 / 共62页
java课程设计学生信息管理系统.docx_第9页
第9页 / 共62页
java课程设计学生信息管理系统.docx_第10页
第10页 / 共62页
java课程设计学生信息管理系统.docx_第11页
第11页 / 共62页
java课程设计学生信息管理系统.docx_第12页
第12页 / 共62页
java课程设计学生信息管理系统.docx_第13页
第13页 / 共62页
java课程设计学生信息管理系统.docx_第14页
第14页 / 共62页
java课程设计学生信息管理系统.docx_第15页
第15页 / 共62页
java课程设计学生信息管理系统.docx_第16页
第16页 / 共62页
java课程设计学生信息管理系统.docx_第17页
第17页 / 共62页
java课程设计学生信息管理系统.docx_第18页
第18页 / 共62页
java课程设计学生信息管理系统.docx_第19页
第19页 / 共62页
java课程设计学生信息管理系统.docx_第20页
第20页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java课程设计学生信息管理系统.docx

《java课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《java课程设计学生信息管理系统.docx(62页珍藏版)》请在冰点文库上搜索。

java课程设计学生信息管理系统.docx

java课程设计学生信息管理系统

 

1需求分析

利用计算机进行学生信息管理,不仅能够保证准确、无误、快速输出,而且还可以利用计算机对有关信息进行查询,检索迅速、查找方便、可靠性高、存储量大、保密性好。

要科学地实现信息化管理,开发一个适合学校的,能够进行信息存储、查询、修改等功能的信息管理系统是十分重要的。

我这次的课题就是设计与实现一个学生信息管理系统。

1.1设计任务要求

该学生信息管理系统的设计要求主要有以下几点:

(1)使用图形用户界面;

(2)用数据库建立1或2个学生信息表;(不限使用哪种数据库)

(3)能连接数据库并实现对学生信息查询、增、删、改等功能。

1.2系统功能需求分析

系统主要包括以下几项功能:

(1)添加学生信息;

(2)查询学生信息;

(3)删除学生信息;

(4)修改学生信息。

2概要设计

2.1图形用户界面的设计

图形用户界面中,设置窗口大小、显示位置和窗口标题,设置窗口关闭之后其后台程序同时关闭,设置窗口可拉伸且为可见的。

同时设置了用户输入文本框,文本框的窗口大小等属性也进行设置,文本框中可输入用户需要输入的学生信息。

2.2用数据库建立学生信息表

在这里我用的是数据库mysql,建立的数据库名字为student,而且程序使用的是单表形式,表名为st,st表的字段,各个字段分别对应学生的学号,名字,性别,年龄,籍贯,系别。

2.3数据库的连接

数据库的连接只需通过jdbc驱动,即可实现用户操作与数据资源的连接,并可对相关的数据库信息进行操作。

2.4模块功能的实现

以下是学生信息管理系统功能模块关系图,主要包含查询、添加、修改、删除学生信息等功能。

 

图2.1系统功能模块关系图

根据功能的需要,我设想了主窗口界面的大体布置图,并在设计与实现的过程中尽量去按照设想图的图样去实现。

设想图如下图所示,图中也大概地标明了部分标语与说明。

 

图2.2设想的主界面

图2.2中组件功能的实现:

(1)当用户点击查询按钮时,系统创建一个数据库连接,从数据库调出用户所输入要查询学生的信息,并显示到jscrollPane中,即主模块的中部;

(2)当用户点击添加按钮时,系统创建一个数据连接,弹出一个添加学生的信息的文本框,文本框可输入要添加的学生信息,并可存入数据库。

(3)当用户点击修改按钮时,系统创建一个数据连接,从数据库中调出你所选行的学生信息,并弹出修改该学生的信息文本框,文本框可进行学生信息修改,修改完确认后,该学生的信息会重新存入数据库。

(4)当用户点击删除按钮时,系统创建一个数据连接,根据你所选行的学生学号,在数据库中找到该学生信息,并删除。

3详细设计

3.1图形用户界面的设计

(1)主界面窗口设计函数代码程序如下:

//定义用户界面用到的组件

JLabeluserName=null;//要查询的学生的名字

JTextFieldtextField=null;//用户输入的文本框

JButtonselect=null;//查询按钮

JButtoninsert=null;//添加按钮

JButtonupdate=null;//修改按钮

JButtondelete=null;//删除按钮

JTabletable=null;//用于显示数据库调出的数据的表

Panelpanel1=null;

Panelpanel2=null;

Panelpanel3=null;

JScrollPanejscrollPane=null;

StModelstModel=null;//st表的模型

privateObjectPreparedStatement;

publicStuMange()

{

//窗口显示的上部的组件

userName=newJLabel("学生名:

");

textField=newJTextField(10);//用户输入文本框限定为最多输入10个字符

select=newJButton("查询");//查询按钮

//添加到第一个面板中

panel1=newPanel();

panel1.add(userName);

panel1.add(textField);

panel1.add(select);

//窗口下部的组件

insert=newJButton("添加");

delete=newJButton("删除");

update=newJButton("修改");

//添加到第三个个面板中

panel3=newPanel();

panel3.add(insert);

panel3.add(delete);

panel3.add(update);

//窗口中部的组件

stModel=newStModel();

stModel.insertDatabase("select*fromst");

table=newJTable(stModel);

jscrollPane=newJScrollPane(table);

//注册事件监听

select.addActionListener(this);

insert.addActionListener(this);

update.addActionListener(this);

delete.addActionListener(this);

//将各个组件添加到窗体中

this.add(panel1,BorderLayout.NORTH);

this.add(jscrollPane,BorderLayout.CENTER);

this.add(panel3,BorderLayout.SOUTH);

//设置窗体属性

this.setSize(400,300);//设置窗口大小

this.setLocation(200,200);//设置窗口显示的位置

this.setTitle("学生信息管理系统");//设置窗口标题

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭之后其后台程序同时关闭

//设置窗口为可见

this.setVisible(true);

}

(2)添加学生的界面文本框设计函数程序代码如下所示:

privateJLabelid,name,sex,age,address,dep;//分别代表学生的学号,名字,性别,年龄,籍贯,系别

privateJTextFieldjtf1,jtf2,jtf3,jtf4,jtf5,jtf6;//用户输入的文本框,分别为学生的学号,名字,性别,年龄,籍贯,系别

privateJButtonadd,canel;//分别为添加按钮和取消按钮

privatePanelpanel1,panel2,panel3;

publicInsertStudent(Frameowner,Stringtitle,booleanmodel)

{

super(owner,title,model);//实现与父类窗口对话

System.out.println("我执行了");

//窗体的西部的组件

id=newJLabel("学号:

");

name=newJLabel("姓名:

");

sex=newJLabel("性别");

age=newJLabel("年龄");

address=newJLabel("籍贯");

dep=newJLabel("系别:

");

//添加到panel1面板中

panel1=newPanel(newGridLayout(6,1));

panel1.add(id);

panel1.add(name);

panel1.add(sex);

panel1.add(age);

panel1.add(address);

panel1.add(dep);

//窗体的东部组件

jtf1=newJTextField(10);

jtf2=newJTextField(10);

jtf3=newJTextField(10);

jtf4=newJTextField(10);

jtf5=newJTextField(10);

jtf6=newJTextField(10);

//添加到第二个面板中

panel2=newPanel(newGridLayout(6,1));

panel2.add(jtf1);

panel2.add(jtf2);

panel2.add(jtf3);

panel2.add(jtf4);

panel2.add(jtf5);

panel2.add(jtf6);

//窗体北部的控件

add=newJButton("添加");

canel=newJButton("取消");

//注册事件监听

add.addActionListener(this);

canel.addActionListener(this);

//添加到panel3面板中

panel3=newPanel();

panel3.add(add);

panel3.add(canel);

//将各个组件添加到窗体中

this.add(panel1,BorderLayout.WEST);

this.add(panel2,BorderLayout.CENTER);

this.add(panel3,BorderLayout.SOUTH);

//设置对话框属性

this.setSize(300,200);

//设置对话框为可见

this.setVisible(true);

}

(3)修改学生的界面文本框的设计

JLabelid,name,sex,age,address,dep;//分别为学生的学号,学生的姓名,学生的性别,学生的年龄,学生的籍贯,学生的系别的标签

JTextFieldjtf1,jtf2,jtf3,jtf4,jtf5,jtf6;//分别为学生的学号,姓名,性别,年龄,籍贯,系列的输入文本框

JButtonupdate,canel;//分别为修改和取消按钮

Panelpanel1,panel2,panel3;

publicUpdateDatabase(Frameown,Stringtitle,booleanmodel,StModelstModel,introw)

{

super(own,title,model);//实现与父类窗口对话

//窗体西部的组件

id=newJLabel("学号");

name=newJLabel("名字");

sex=newJLabel("性别");

age=newJLabel("年龄");

address=newJLabel("地址");

dep=newJLabel("系别");

//添加到panel1中

panel1=newPanel(newGridLayout(6,1));

panel1.add(id);

panel1.add(name);

panel1.add(sex);

panel1.add(age);

panel1.add(address);

panel1.add(dep);

//添加到窗体的东部的组件

jtf1=newJTextField(10);

jtf1.setText((String)(stModel.getValueAt(row,0)));

jtf1.setEditable(false);//设置学号不可修改

jtf2=newJTextField(10);

jtf2.setText((String)(stModel.getValueAt(row,1)));

jtf3=newJTextField(10);

jtf3.setText((String)(stModel.getValueAt(row,2)));

jtf4=newJTextField(10);

jtf4.setText((String)(stModel.getValueAt(row,3)));

jtf5=newJTextField(10);

jtf5.setText((String)(stModel.getValueAt(row,4)));

jtf6=newJTextField(10);

jtf6.setText((String)(stModel.getValueAt(row,5)));

//添加到第二个面板中

panel2=newPanel(newGridLayout(6,1));

panel2.add(jtf1);

panel2.add(jtf2);

panel2.add(jtf3);

panel2.add(jtf4);

panel2.add(jtf5);

panel2.add(jtf6);

//窗体南部的组件

update=newJButton("确认");

canel=newJButton("取消");

panel3=newPanel();

panel3.add(update);

panel3.add(canel);

//注册事件监听

update.addActionListener(this);

canel.addActionListener(this);

//添加组件到窗体中

this.add(panel1,BorderLayout.WEST);

this.add(panel2,BorderLayout.CENTER);

this.add(panel3,BorderLayout.SOUTH);

//设置窗体属性

this.setSize(300,200);

//设置窗体为可见

this.setVisible(true);

}

3.2用数据库建立学生信息表

(1)数据库建立学生表的函数程序代码如下所示:

createtablest

stIdvarchar(30)primarykey,

stNnamevarchar(50)notnull,

stSexvarchar

(2)default'男',

stAgeint,

stBornvarchar(30),

stDeptvarchar(30),

constraintstScheck(stSexin('男','女'))

);

(2)st表的模型实现的函数程序代码如下所示:

publicclassStModelextendsAbstractTableModel{

VectorcolumNames=null;//表的字段名称

VectorrowDate=null;//表的数据

//数据库

privateConnectioncon=null;

privatePreparedStatementps=null;

privateResultSetrs=null;

privatefinalstaticStringdriver="com.mysql.jdbc.Driver";//加载的jdbc驱动

privatefinalstaticStringurl="jdbc:

mysql:

//localhost:

3306/student";//数据源

privatefinalstaticStringuser="root";//数据库的用户名

privatefinalstaticStringpassWord="root";//数据库的用户名的密码

//对数据库进行查找

publicvoidinsertDatabase(Stringsql)

{

columNames=newVector();//表的字段名称

rowDate=newVector();//表的数据

columNames.add("学号");

columNames.add("名字");

columNames.add("性别");

columNames.add("年龄");

columNames.add("籍贯");

columNames.add("系别");

try

{

//加载jdbc驱动

Class.forName(driver);

//连接数据源

con=DriverManager.getConnection(url,user,passWord);

//执行sql

ps=con.prepareStatement(sql);

rs=ps.executeQuery();

while(rs.next())

{

Vectorrow=newVector();

row.add(rs.getString

(1));

row.add(rs.getString

(2));

row.add(rs.getString(3));

row.add(rs.getString(4));

row.add(rs.getString(5));

row.add(rs.getString(6));

rowDate.add(row);//将学生的一条记录(row)添加到rowDate中

}

}

catch(ClassNotFoundExceptione)

{

e.printStackTrace();

}

catch(SQLExceptione)

{

e.printStackTrace();

}

finally

{

//关闭数据库资源

try

{

if(null!

=rs)

{

rs.close();

}

if(null!

=ps)

{

ps.close();

}

if(null!

=con)

{

con.close();

}

}

catch(SQLExceptione)

{

e.printStackTrace();

}

}

}

//返回列数

publicintgetColumnCount(){

returnthis.columNames.size();

}

//返回表的行数

publicintgetRowCount(){

returnthis.rowDate.size();

}

//得到某行某列的数据

publicObjectgetValueAt(introwIndex,intcolumnIndex){

return((Vector)this.rowDate.get(rowIndex)).get(columnIndex);

}

//设置表的字段名

publicStringgetColumnName(intcolumn)

{

return(String)this.columNames.get(column);

}

}

3.3数据库的连接

privatefinalstaticStringdriver="com.mysql.jdbc.Driver";//加载的jdbc驱动

privatefinalstaticStringurl="jdbc:

mysql:

//localhost:

3306/student";//数据源

3.4模块功能的实现

主模块功能的实现函数程序代码如下所示:

publicvoidactionPerformed(ActionEvente)

{

//用户点击了查找按钮

if(e.getSource()==select)

{

Stringparas=textField.getText().trim();

stModel=newStModel();

stModel.insertDatabase("select*fromstwherestNname='"+paras+"'");

table.setModel(stModel);

}

//用户点击了添加按钮

elseif(e.getSource()==insert)

{

InsertStudentinsertStudent=newInsertStudent(this,"添加学生",true);

//刷新窗口表的数据

stModel=newStModel();

stModel.insertDatabase("select*fromst");

table.setModel(stModel);

}

//用户点击了修改按钮

elseif(e.getSource()==update)

{

introw=this.table.getSelectedRow();//用户选择的行数

if(-1==row)//如果用户没有选中行

{

JOptionPane.showMessageDialog(this,"请选择一行");

}

else

{

UpdateDatabaseupdateDatabase=newUpdateDatabase(this,"修改学生",true,stModel,row);

//刷新窗口表的数据

stModel=newStModel();

stModel.insertDatabase("select*fromst");

table

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2