资源描述
课程设计报告
课程题目: 教室统一管理子系统
2012年 7月 3日
目 录
摘要…………………………………………………………...............(2)
一问题描述..............................................................................................1
二、分析设计..........................................................................................1
1、功能描述..........................................................................................1
2、程序流程设计图..............................................................................3
3、数据库结构......................................................................................5
4、 测试数据及期望结果.....................................................................6
5、模块结果以及模块实现方法的描述..............................................9
三、代码摘取.........................................................................................10
四、总结.................................................................................................14
五、主要参考文献.................................................................................15
摘要
教室统一管理软件,其功能主要是实现学校教室的统一管理,包括教室信息管理,教室查询与申请及各种基本信息管理。利用myeclipse进行开发,使用MySQL进行数据的存取。
在全部教室表单中可以添加新教室,可以修改已经录入的教室信息,包括教室的故障情况、教室是否空闲和录入的时间。其中在系统中可以查看所有的教室信息、修改教室信息、申请教室以及查看申请结果。在用户的登录界面,可以注册新的用户;登录用户的信息如若和数据中存储的信息不对应,则会显示登录不成功。
在教室统一管理子系统中可以实现了教室的有效管理和对申请教室请求的合理处理,完成了高效率的使用教室的目的。
关键词:管理 教室 信息 查询 申请 修改
II
一、 问题描述
通过教室统一管理子系统可以对教室进行有效的使用和管理,避免了教室资源的浪费、实现高效率的教室使用。
更为快速的管理分配和安排教室,避免了不必要的人力浪费和时间消耗。
二、 分析与设计
2.1 功能描述
2.1.1 系统的参与者
在系统中,有用户信息,其中包含用户的ID、用户的密码以及用户类型。 用户类型有学生和老师。
教室信息,包括教室ID、教室地点、故障情况、是否空闲和录入时间。
申请教室信息,包括教室地点、申请人、申请理由、使用时间。
2.1.2 功能要求
本系统的用户面向在校的老师和同学,从学校获取教室的使用情况以及使用教室存在的问题分析之后,系统实现的功能有:
(1)用户登录
在登录界面输入以存在的用户名和正确的用户密码后进入教室统一管理子系统。
(2)新用户注册
如若没有账号,可以在登录界面的“注册”按钮跳转到注册页面,注册时填入用户名、用户密码和用户类型
(3)通过教室故障情况查询教室
进入系统后,可以通过选择教室的故障情况分类查询教室信息,其中故障情况有:门坏、完好、灯坏、电脑坏等不同的故障类型。
(4)通过教室ID列举出全部教室
如若要列举出所有的教室信息,可以通过“查看所有教室”实现查看功能,结果会将所有已经录入的教室按ID排序列出来。
(2)通过添加按钮添加新教室
如果要添加新的教室,可以选择添加新教室,在教室信息框中填入教室地点、故障情况、是否空闲、录入时间。点击确认添加之后即可将新教室添加到教室列表中。
(6)申请教室
点击“申请教室”,跳转到全部教室列举页面,通过点击“申请”其中某一间教室,实现对该教室的申请。跳转到确认申请页面,在页面上输入申请的教室地点、申请人、申请理由、教室使用时间。确认申请后间录入的申请信息提交到申请教室表单和数据库中。
(7)列举出所有申请教室信息。
通过ID查看已经申请成功了的教室,在页面上显示所有申请的教室,有申请教室地点、申请人、申请理由、申请使用时间。
2.1.3 系统用例图
图2.1 系统用例图
系统用例图分析:
用户在登录系统页面可以注册账号,注册用户是可以选择用户的类型,其中包括学生和老师两中类型用户。进入系统后,可以选择进人教室申请页面,其中可以申请教室(只能申请已经录入的教室),也可以查看申请调的教室列表。
在教室查询子系统中,可以通过教室故障情况进行教室的分类查询,也可以查询所有教室信息(通过教室ID),从而显示所有的录入教室;通过添加新的教室可以实现对教室的添加,也可以更改教室的信息。
2.2 程序流程图设计
图2.2.1 程序总体流程图
图2.2.2 用户注册流程图
图2.2.3 教室申请流程图
图2.2.4 教室查看流程图
2.3 数据库结构描述
图-2.3.1 故障类型数据结构图
图-2.3.2 教室数据结构图
图-2.3.3 教室申请数据结构图
图-2.3.4 用户数据结构图
2.4 测试数据及期望结果
用户登录:
图-2.4.1 登录界面
图-2.4.2 功能选择页面
图-2.4.3 分类查询教室
图-2.4.4 查询结果
图-2.4.5 申请教室
图-2.4.6 申请成功
图-2.4.7查看申请结果
图-2.4.8 添加新教室
图-2.4.9 添加成功
图-2.4.10 修改教室信息
期望结果:
这个教室统一管理子系统的功能基本实现,在教室查询完毕之后可以通过ID查询所有的教室,通过点击“申请”可以实现对录入教室的申请;在申请教室页面,可以对申请教室添加相应的说明(申请人、申请使用时间和申请理由)。
在用户登录界面,如若没有账号,可以通过“注册”按钮实现新用户的注册,在注册过程中可以选择注册的类型(学生或老师)。
如若要修改已经录入的教室信息,可以通过“修改教室信息”实现对选定教室的修改,基本实现了对教室统一管理的功能。
2.5 模块结果以及模块实现方法的描述
2.5.1 用户模块
用户在输入登录信息之后,系统将输入的信息获取并和数据库用户信息对比,检测是否相同,如果相同则登录成功;否则返回登录失败信息并重新登录!
2.5.2教室查看模块
开始通过故障类型分类查看教室信息,也可以通过ID查看所有的录入教室信息。在教室表单上可以通过申请教室跳转到教室申请模块;修改教室信息和添加新教室都在教室查看模块里,这样可以更加方便的将获取到的教室更改信息同步到教室表单中,也可以实现对全部教室的显示。
2.5.3教室申请模块
将在教室表单中获取的将要申请的教室打印在页面,然后输入要申请的信息,完善申请教室的信息,添加了3个属性:申请人、申请理由和使用时间。通过点击“查看申请表”实现将已经申请成功的教室列举出来。
三、 源代码摘取
public class RoomsqDAOImpl implements RoomsqDAO {
//实现添加教室的方法
public void addRoomsq(Roomsq roomsq) {
Connection conn = DBConnection.getConnection(); //获得连接对象
String addSQL = "insert into roomsq(roomsqID,roomsqName,roomsqWho,roomsqR,roomsqTime) values(?,?,?,?,?)";
String sql="select max(DISTINCT roomsqID) as mroomsqID from roomsq";
PreparedStatement pstmt = null; //声明预处理对象
PreparedStatement pstmt1 = null;
try {
pstmt = conn.prepareStatement(addSQL); //获得预处理对象并赋值
pstmt1 = conn.prepareStatement(sql);
ResultSet num = pstmt1.executeQuery();
String s = "";
if(num.next()) {
s = num.getString("mRoomsqID");
}
if(s==null){
s="0";
}
int i = Integer.parseInt(s);
i=i+1;
roomsq.setRoomsqID(i);
pstmt.setInt(1, roomsq.getRoomsqID());
pstmt.setString(2, roomsq.getRoomsqName());//设置第一个参数
pstmt.setString(3, roomsq.getRoomsqWho());//设置第二个参数
pstmt.setString(4, roomsq.getRoomsqR());//设置第三个参数
pstmt.setString(2, roomsq.getRoomsqTime());
pstmt.executeUpdate(); //执行更新
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBConnection.close(pstmt);//关闭预处理对象
DBConnection.close(conn);//关闭连接对象
}
}
//实现删除教室的方法
public void deleteRoomsq(int roomsqID) {
Connection conn = DBConnection.getConnection();//获得连接对象
String updateSQL = "delete from roomsq where roomsqID=?";
PreparedStatement pstmt = null; //声明预处理对象
try {
pstmt = conn.prepareStatement(updateSQL); //获得预处理对象并赋值
pstmt.setInt(1, roomsqID); //设置第一个个参数
pstmt.executeUpdate(); //执行更新
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBConnection.close(pstmt); //关闭预处理对象
DBConnection.close(conn); //关闭连接对象
}
}
//实现查询教室的方法
public List<Roomsq> findAllRoomsq() {
Connection conn = DBConnection.getConnection();//获得连接对象
String updateSQL = "select * from roomsq";
PreparedStatement pstmt = null; //声明预处理对象
List<Roomsq> roomsqList = new ArrayList<Roomsq>();
try {
pstmt = conn.prepareStatement(updateSQL); //获得预处理对象并赋值
ResultSet rs = pstmt.executeQuery(); //执行查询
while(rs.next()) {
Roomsq roomsq = new Roomsq(); //实例化
roomsq.setRoomsqID(rs.getInt(1)); //获得申请教室ID
roomsq.setRoomsqName(rs.getString(2)); //获得申请教室地点
roomsq.setRoomsqWho(rs.getString(3)); //获得申请人
roomsq.setRoomsqR(rs.getString(4)); //获得当前利益
roomsq.setRoomsqTime(rs.getString(2)); //获得申请使用时间
roomsqList.add(roomsq);
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBConnection.close(pstmt); //关闭预处理对象
DBConnection.close(conn); //关闭连接对象
}
return roomsqList; //返回查询到的所有商品
}
//实现更新商品的方法
public void updateRoomsq(Roomsq roomsq) {
Connection conn = DBConnection.getConnection(); //获得连接对象
String updateSQL = "update roomsq set roomsqName=?," +
"roomsqWho=?,roomsqR=?,roomsqTime where roomsqId=?";
PreparedStatement pstmt = null; //声明预处理对象
try {
pstmt = conn.prepareStatement(updateSQL); //获得预处理对象并赋值
pstmt.setInt(1, roomsq.getRoomsqID());
pstmt.setString(2, roomsq.getRoomsqName());//设置第一个参数
pstmt.setString(3, roomsq.getRoomsqWho());//设置第二个参数
pstmt.setString(4, roomsq.getRoomsqR()); //设置第三个参数
pstmt.setString(2, roomsq.getRoomsqTime());
pstmt.executeUpdate(); //执行更新
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBConnection.close(pstmt); //关闭预处理对象
DBConnection.close(conn); //关闭连接对象
}
}
///////////通过id查询申请教室
public Roomsq findRoomsqById(int roomsqId) {
Connection conn = DBConnection.getConnection();//获得连接对象
String updateSQL = "select * from roomsq where roomsqID = ?";
PreparedStatement pstmt = null; //声明预处理对象
Roomsq roomsq = new Roomsq();
try {
pstmt = conn.prepareStatement(updateSQL); //获得预处理对象并赋值
pstmt.setInt(1, roomsqId); //设置参数
ResultSet rs = pstmt.executeQuery(); //执行查询
if(rs.next()) {
roomsq.setRoomsqID(rs.getInt(1)); //获得申请教室ID
roomsq.setRoomsqName(rs.getString(2));//获得申请教室地点
roomsq.setRoomsqWho(rs.getString(3)); //获得申请人
roomsq.setRoomsqR(rs.getString(4)); //获得申请理由
roomsq.setRoomsqTime(rs.getString(2)); //获得申请使用时间
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBConnection.close(pstmt); //关闭预处理对象
DBConnection.close(conn); //关闭连接对象
}
return roomsq;
}
}
四、 总结
在本次课程设计过程中,通过使用Javaweb项目开发实现了对教室统一管理子系统。在开始接到课程设计题目是,并没有太多的思路,之后再看了课程任务书之后,整体的软件系统和系统结构才慢慢的成型。
在设计开始,将系统分成了3个模块来设计,这样有利于将教室管理系统的功能分清,结构更加的明了,而且这样有利于在后面的设计和编码过程中添加新的功能进去,不会对原有的结构进行干扰甚至是破坏;在系统的代码实现过程中由于在功能页面之间的跳转次数过于频繁,导致了有一部分时间出现了 很严重的“返功”现象。加大了在编码阶段的困难。
在系统功能的实现上,基本已经实现对教室的有效管理和对申请教室的分配,不过其中还是有一些不足,具体表现在:在系统中没有使用过滤器对登录之后的页面进行处理,这样就导致了在没有成功登录的情况下可以直接通过运行其他页面进入系统之中;在申请教室模块中,教室的ID并没有和教室表单中的ID保存一致,而是按照由小到大的排序顺序进行排序;在新教室的添加页面,会重复的输入添加教室故障情况信息。
在申请教室显示模块中,开始若没有申请教室(表单为空时),就无法将页面正常的运行,而是会在系统中报错,后来在RoomsqDAOImpl中修改了Addroomsq函数之后,将其中的S在没有获取的的情况下(S==NULL)时,将其赋值为:S=0。这样才能将申请表单中的第一条信息(之前为空)显示出来。
在经过这次的课程设计,让我了解到了Javaweb开发的一些小技巧:错误的查找、编码流程等,益匪浅。而且在课程设计的故过程总,通过对课本、课外书和资料的查询,在一定程度上丰富了我的知识面。特别是在遇到了编码和页面格式设计的问题时,通过不断的查找资料和询问同学,慢慢的将整个系统完成,虽然在过程中也有点累,但是在实现了系统功能之后,整个下来还是很值得的!
五、 参考文献
[1]、 Java语言程序设计 基础篇(原书第六版)/(美)梁(Liang,Y.D.)〔M〕.北京:机械工业出版社,2008.6
[2]、Java web 程序设计与项目实践/古乐声,卜炟主编.—北京:电子工业出版社,2011.6
[3]、数据库系统概论/王删,萨师煊.—4版.—北京:高等教育出版社,2006.2(2007重印)
[4]、软件工程导论/张海潘编著.—2版.—北京:清华大学出版社,2008.2
[2]、JavaScript高级程序设计 :第3版/(美)泽卡斯(Zakas,N.C.)著;李松峰,曹力译.—北京:人民邮电出版社,2012.3(2014.9重印)
[6]、项目实践精解:Java核心技术应用开发/梁立新,郭锐编著.—2版.—北京:电子工业出版社,2010.8(项目实践精解丛书)
15
展开阅读全文