基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
………………………目 录
1 实训目的 ......................................................................................... 1 2 宿舍管理查询软件系统的分析与数据库设计 ............................... 1 ……装………… …………………………订………………………………3 …线…4 ………5 ………
………
…
2.1 系统功能描述 ...................................................................... 1
2.1.1 数据库模块…………………………………………1 2.1.2java
与数据库的链接模块…………………………1
2.1.3java程序执行模块……………………………………1
2.2 系统模块分析 ...................................................................... 1 2.3 数据库结构设计................................................................... 2
2.3.1 概念结构设计………………………………………2
2.3.2 数据字典……………………………………………2
2.3.3 实体关系表示设计…………………………………2 主要代码清单................................................................................ 3 程序运行与测试 .......................................................................... 17 实训总结 ..................................................................................... 17
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
宿舍管理查询软件系统的设计与实现
1 实训目的
此次实训的主要目的在于将理论与实际应用相结合,巩固软件开发技术
与数据库的基本知识,使用程序设计语言java和数据库技术,以及相关软件设计开发知识完成软件的设计开发任务。此次实训课程将为整个专业的学习以及软件设计水平的提高打下良好的基础,提高我们项目分析、设计、编写、调试和测试的能力,并培养基本的、良好的团队合作能力。
2 宿舍管理查询软件系统的分析与数据库设计
2.1 系统功能描述
通过将java和数据库链接,完成宿舍管理查询软件的编程及测试。系统功能为:能够按照姓名、学号、班级、房号查询学生住宿的基本信息,并可以查询有空床位宿舍的基本信息;能够查询宿舍每周的卫生情况;能够根据实际情况更新学生住宿的基本情况,向有空床位的宿舍插入学生。 2.2 系统模块分析 (1)数据库模块
数据库中包括两个表格hostel、sanitary,分别表示学生住宿的基本信息、各个宿舍每周的卫生情况。 (2)java与数据库的链接模块
通过JDBC API接口链接关系数据库SuSheGuanLiXiTong,使java能够访问数据库,执行SQL语句并显示数据库中的相关信息。 (3)java程序执行模块
数据项索引=0,选中组合框中的"查询宿舍住宿情况",当选择第二行组合框中的"按姓名查询宿舍信息"、"按学号查询宿舍信息"、"按班级查询宿舍信息"、"按房号查询宿舍信息"时,分别按要求输入学生的姓名、学号、班级名称、房号,单击"执行"按钮,在左边文本区显示所查学生住宿的基本信息;选择"有空床位的宿舍信息"时,单击"执行",在文本区中显示有空床位宿舍的基本情况;数据项索引=1,选中组合框中的"查询宿舍卫生信息",当选择"第一周"、"第二周"、"第三周"时,单击"执行",在左边文本区显示对应该周的各个宿舍
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
的卫生成绩;数据项索引=2,选中组合框中的"添加宿舍成员",在组合框中选择要添加新成员的宿舍号,在面板文本行中输入学生的姓名以及学号,若输入不正确,在文本区中显示"请正确输入!",如果人员未满,将显示添加成功,否则显示"人数已满,禁止添加!"。 2.3 数据库结构设计
(本部分中要包含E-R图,数据字典,表结构等内容);
1.概念结构设计
系统E-R图为: 学生—宿舍
图1 学生——宿舍局部E-R图
E-R图反映的是学生实体原宿舍实体之间的关系模式,两实体之间的关系
是 "住宿"。学生实体的属性有:班级、姓名、学号、所属宿舍、床号,宿舍实体的属性有:宿舍号、卫生成绩、宿舍人数、空床数。
2 .数据字典
3 .实体关系表示设计
SQL Server 数据库库名SuSheGuanLiXiTong
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
表结构
Hostel(学生住宿信息)
Sanitary(宿舍卫生情况)
3 主要代码清单
1. 通过JDBC API接口链接关系数据库SuSheGuanLiXiTong
代码如下:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); String url="jdbc:sqlserver://localhost:1433; DatabaseName=SuSheGuanLiXiTong"; String user="sa";
String passward="sa";
Connection conn= DriverManager.getConnection(url,user,passward); Statement Stmt=conn.createStatement
(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String sql="select * from hostel where姓
名='"+text_input_1.getText()+"'";///////////注意!!!!!! ResultSet rs=Stmt.executeQuery(sql); 2.代码执行后的主窗口如下:
框架窗口采用三层网格布局,首先将jframe分成左右两个网格,左边放置文本区,右边放置面板;再将面板分成4行1列的网格,一次在面板中添加两个组合框、一个文本行、一个按钮等组件。单击"执行"按钮,将上述各组件表示的学生信息在左边的文本区显示。
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
public class UserJFrame extends JFrame implements ActionListener, ItemListener
{ //private int number=1;//编号
private JTextField text_input_1; //编号、姓名文本行 private JTextField text_input_2;
private JComboBox combobox_chance1, combobox_chance2; //组合框
private JButton button_run; //添加按钮 private JTextArea text_user; //文本区 //private int mark=1;
public UserJFrame() {
super("宿舍管理查询软系统");
this.setSize(700,300); this.setLocation(300,240);
this.setDefaultCloseOperation(EXIT_ON_CLOSE); //单击窗口关闭
按钮时,结束程序运行
this.setLayout(new GridLayout(1,2)); //网格布局,1行2
列,左右分隔窗口
text_user = new JTextArea(); //创建文本区 text_user.setEditable(false);
this.add(text_user); //占据窗口左半部分
JScrollPane scroll=new JScrollPane(text_user); //添加滚动条 this.add(scroll);
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
JPanel panel = new JPanel(new GridLayout(4,1)); //面板网格布局,4行
1列
this.add(panel); //占据窗口右半部分
Object province[]={"查询宿舍住宿信息","查询宿舍卫生信息", "添加宿
舍成员"};
combobox_chance1 = new JComboBox(province); //组合框
combobox_chance1.addItemListener(this); //注册组合框的选
择事件监听器
panel.add(combobox_chance1);
Object city[]={"按姓名查询宿舍信息","按学号查询宿舍信息","按班级
查询宿舍信息","按房号查询宿舍信息","有空床位的宿舍信息"};
combobox_chance2 = new JComboBox(city); //组合框 panel.add(combobox_chance2);
JPanel pane2 = new JPanel(new GridLayout(1,2));
text_input_1 = new JTextField("");//请输入姓名 班级 学号 宿舍号
text_input_2 = new JTextField("←请在此输入查询内容");//请输入姓名
班级 学号 宿舍号
text_input_2.setEditable(false);
pane2.add(text_input_1); pane2.add(text_input_2); panel.add(pane2);
button_run = new JButton("执行"); //("添加"); button_run.addActionListener(this); panel.add(button_run);
this.setVisible(true);
3.选择组合框中的"查询宿舍住宿情况"
(1)选择"按姓名查询宿舍信息",在文本行输入所查学生的姓名,单击"
执 行",则显示如下:
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
if (combobox_chance1.getSelectedIndex()==0) {
if(combobox_chance2.getSelectedItem()=="按姓名查询宿舍信息") {
text_user.setText(combobox_chance2.getSelectedItem()+"\n"); text_user.setText(text_user.getText()+" 班
级
学号 姓名 宿舍号 床号
"+"\n");
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); String url="jdbc:sqlserver://localhost:1433; DatabaseName=SuSheGuanLiXiTong"; String user="sa";
String passward="sa";
Connection conn= DriverManager.getConnection(url,user,passward);
Statement Stmt=conn.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from hostel where 姓名='"+text_input_1.getText()+"'";///////////
注意!!!!!!
ResultSet rs=Stmt.executeQuery(sql);
while(rs.next())
{
try {
text_user.setText(text_user.getText()+" "+rs.getString("班级
").trim()+" "+rs.getString("学号").trim()+" "+rs.getString("姓名").trim()+" "+rs.getString("宿舍号
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
").trim()+" "+rs.getString("床号").trim()+"\n");
}
catch(Exception ex){ex.printStackTrace();} }
rs.close(); Stmt.close(); conn.close();
}
catch(Exception ex){ex.printStackTrace();}
(2)选择"按学号查询宿舍信息",在文本行输入所查学生的学号,单击"执行",显示如下:
if(combobox_chance2.getSelectedItem()=="按学号查询宿舍信息")
{
text_user.setText(combobox_chance2.getSelectedItem()+"\n");
text_user.setText(text_user.getText()+" 班级 学号
姓名 宿舍号 床号"+"\n"); try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance()
;
String url2="jdbc:sqlserver://localhost:1433; DatabaseName=SuSheGuanLiXiTong"; String user2="sa";
String passward2="sa";
Connection conn2= DriverManager.getConnection(url2,user2,passward2); Statement
Stmt2=conn2.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultS
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
et.CONCUR_UPDATABLE);
String sql2="select * from hostel
='"+text_input_1.getText()+"'";///////////注意!!!!!! ResultSet rs2=Stmt2.executeQuery(sql2);
while(rs2.next()) {
where 学号
try {
text_user.setText(text_user.getText()+" "+rs2.getString("班
级").trim()+" "+rs2.getString("学号").trim()+" "+rs2.getString("姓名").trim()+" "+rs2.getString("宿舍号").trim()+" "+rs2.getString("床号").trim()+"\n");
}
catch(Exception ex){ex.printStackTrace();} }
rs2.close(); Stmt2.close(); conn2.close();
}
catch(Exception ex){ex.printStackTrace();} }
(3)选择"按班级查询宿舍信息",在文本行输入所查班级名称,单击"执行",显示如下:
if(combobox_chance2.getSelectedItem()=="按班级查询宿舍信息") {
text_user.setText(combobox_chance2.getSelectedItem()+"\n");
text_user.setText(text_user.getText()+" 班级 学号
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
姓名 宿舍号 床号"+"\n");
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String
DatabaseName=SuSheGuanLiXiTong"; String user3="sa"; String passward3="sa";
Connection conn3= DriverManager.getConnection(url3,user3,passward3); Statement
Stmt3=conn3.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql3="select * from hostel where 班级
='"+text_input_1.getText()+"'";///////////注意!!!!!! ResultSet rs3=Stmt3.executeQuery(sql3);
while(rs3.next()) {
try
{
text_user.setText(text_user.getText()+" "+rs3.getString("班
级").trim()+" "+rs3.getString("学号").trim()+" "+rs3.getString("姓名").trim()+" "+rs3.getString("宿
舍号").trim()+" "+rs3.getString("床号").trim()+"\n");
}
catch(Exception ex){ex.printStackTrace();} }
rs3.close(); Stmt3.close(); conn3.close();
}
catch(Exception ex){ex.printStackTrace();}
url3="jdbc:sqlserver://localhost:1433;
(4)选择"按房号查询宿舍信息",在文本行输入所查宿舍号,单击"执行",显示如下:
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
if(combobox_chance2.getSelectedItem()=="按房号查询宿舍信息") {
text_user.setText(combobox_chance2.getSelectedItem()+"\n");
text_user.setText(text_user.getText()+" 班级 学号
姓名 宿舍号 床号"+"\n"); try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String url6="jdbc:sqlserver://localhost:1433; DatabaseName=SuSheGuanLiXiTong"; String user6="sa"; String passward6="sa";
Connection conn6= DriverManager.getConnection(url6,user6,passward6); Statement
Stmt6=conn6.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql6="select
*
from
hostel
where
宿
舍
号
='"+text_input_1.getText()+"'";///////////注意!!!!!!
ResultSet rs6=Stmt6.executeQuery(sql6);
while(rs6.next()) {
try {
text_user.setText(text_user.getText()+" "+rs6.getString("班
级").trim()+" "+rs6.getString("学号").trim()+" "+rs6.getString("姓名").trim()+" "+rs6.getString("宿舍号").trim()+" "+rs6.getString("床号").trim()+"\n");
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
}
catch(Exception ex){ex.printStackTrace();} }
rs6.close(); Stmt6.close(); conn6.close();
}
catch(Exception ex){ex.printStackTrace();}
(5)选择"有空床位的宿舍信息",单击"执行",将显示出有空床位宿舍的基本信息,显示如下:
if(combobox_chance2.getSelectedItem()=="有空床位的宿舍信息")
{
text_user.setText(combobox_chance2.getSelectedItem()+"\n");
text_user.setText(text_user.getText()+" 班级 学号
姓名 宿舍号 床号"+"\n");
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String url3="jdbc:sqlserver://localhost:1433; DatabaseName=SuSheGuanLiXiTong"; String user3="sa";
String passward3="sa";
Connection conn3= DriverManager.getConnection(url3,user3,passward3); Statement
Stmt3=conn3.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql3="select hostel.* from hostel inner join sanitary on hostel.宿舍号=
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
sanitary.宿舍号 and sanitary.空床数>0 ";///////////注意!!!!!!
ResultSet rs3=Stmt3.executeQuery(sql3);
while(rs3.next()) {
try
{
text_user.setText(text_user.getText()+" "+rs3.getString("班
级").trim()+" "+rs3.getString("学号").trim()+" "+rs3.getString("姓名").trim()+" "+rs3.getString("宿舍号").trim()+" "+rs3.getString("床号").trim()+"\n");
}
catch(Exception ex){ex.printStackTrace();} }
rs3.close(); Stmt3.close();
conn3.close(); }
catch(Exception ex){ex.printStackTrace();} //
} }
4.在组合框中选择"查询宿舍卫生信息",选择第几周,单击"执行",显示如下:
if (combobox_chance1.getSelectedIndex()==1) //查询卫生情况 { if(combobox_chance2.getSelectedItem()=="第一周")
{
text_user.setText(combobox_chance2.getSelectedItem()+"\n");
text_user.setText(text_user.getText()+" 宿舍号 卫生成绩
"+"\n");
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
String url="jdbc:sqlserver://localhost:1433; DatabaseName=SuSheGuanLiXiTong"; String user="sa";
String passward="sa";
Connection conn= DriverManager.getConnection(url,user,passward); Statement
Stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.C
ONCUR_UPDATABLE);
String sql="select 宿舍号,第一周 from sanitary";///////////注意!!!!!! ResultSet rs=Stmt.executeQuery(sql);
while(rs.next())
{
try {
text_user.setText(text_user.getText()+" "+rs.getString("宿
舍号")+" "+rs.getString("第一周").trim()+"\n");
}
catch(Exception ex){ex.printStackTrace();} }
rs.close(); Stmt.close(); conn.close();
}
catch(Exception ex){ex.printStackTrace();} }
if(combobox_chance2.getSelectedItem()=="第二周") {
text_user.setText(combobox_chance2.getSelectedItem()+"\n");
text_user.setText(text_user.getText()+" 宿舍号 卫生成绩
"+"\n");
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); String url="jdbc:sqlserver://localhost:1433; DatabaseName=SuSheGuanLiXiTong"; String user="sa";
String passward="sa";
Connection conn= DriverManager.getConnection(url,user,passward); Statement
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
Stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.C
ONCUR_UPDATABLE);
String sql="select 宿舍号,第二周 from sanitary";///////////注意!!!!!! ResultSet rs=Stmt.executeQuery(sql);
while(rs.next()) {
try {
text_user.setText(text_user.getText()+" "+rs.getString("宿
舍号").trim()+" "+rs.getString("第二周").trim()+"\n");
}
catch(Exception ex){ex.printStackTrace();} }
rs.close(); Stmt.close(); conn.close(); }
catch(Exception ex){ex.printStackTrace();} }
if(combobox_chance2.getSelectedItem()=="第三周") { "+"\n");
text_user.setText(combobox_chance2.getSelectedItem()+"\n");
text_user.setText(text_user.getText()+" 宿舍号 卫生成绩
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); String
DatabaseName=SuSheGuanLiXiTong"; String user="sa";
String passward="sa";
Connection conn= DriverManager.getConnection(url,user,passward); Statement
Stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.C
ONCUR_UPDATABLE);
String sql="select 宿舍号,第三周 from sanitary";///////////注意!!!!!! ResultSet rs=Stmt.executeQuery(sql);
while(rs.next()) {
try
url="jdbc:sqlserver://localhost:1433;
基于Java和数据库相结合的宿舍管理查询软件。。。内含代码以及对于每段代码的分析。。。
{
text_user.setText(text_user.getText()+" "+rs.getString("宿
舍号").trim()+" "+rs.getString("第三周
").trim()+"\n");
}
catch(Exception ex){ex.printStackTrace();} }
rs.close(); Stmt.close(); conn.close(); }
catch(Exception ex){ex.printStackTrace();} } }
5.在组合框中选择"添加宿舍成员",选择要添加新成员的宿舍号,按要求输入新成员的姓名、学号,若输入不正确,在文本区中显示"请正确输入!",如果人员未满,将显示添加成功,否则显示"人数已满,禁止添加!",显示如下:
if (combobox_chance1.getSelectedIndex()==2) //添加宿舍成员 {
int sum=0; try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); String url3="jdbc:sqlserver://localhost:1433; DatabaseName=SuSheGuanLiXiTong";
String user3="sa";
String passward3="sa";