1、目录1 设计时间22 设计目的23设计任务24 设计内容24.1需求分析24.1.1总体目标24.1.2具体目标34.1.3系统数据建模44.1.4系统功能建模64.1.5数据字典74.2总体设计114.3详细设计114.4运行与测试135 总结与展望20附:系统程序主要代码20参考文献24成绩评定241 设计时间2013年1月21日-2013年1月25日2 设计目的JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。要求同学们对课程中所学习到的知识综合运用,开发有一定规模的Java Web程序。3设计任务本次课程设计课
2、题为实验室设备管理系统,目的在于设计一款系统帮助实验室管理员管理实验室设备。只要求实现的功能有以下几条:(1)用户以合法身份登录系统后才能进行所有操作。且用户有两种权限:管理员权限和普通用户权限。管理员用户可以添加、查看、修改和删除设备信息,普通用户只能添加、查看和修改设备信息;(2)合法用户可以添加设备信息(包括设备编号、名称、类别、领用人、实验室、是否在使用等等);其中类别分路由器、计算机、交换机等;(3)合法用户可以查看、修改设备信息;(4)合法用户(管理员级别)可以删除设备信息,但是必须记录删除操作。(5)对设备使用设备使用情况进行统计分析。4 设计内容4.1需求分析4.1.1总体目标
3、因不同学生实验的不同需求,实验室中的设备种类繁杂、数量较多,如果采用人工管理,则任务量大、信息容易出错,显得很不方便。所以,需要开发实验室管理系统来协助管理人员管理实验室中的设备,不但可以减轻管理人员的负担、提高管理效率,而且还可以有效减少日常工作中的出错率。具体来说,实验管理系统应该能够避免和克服人工管理的信息滞后,计算量大和出错以及统计不准确不及时等缺陷以及弊端,使得管理更加规范化、自动化。管理人员通过系统可以记录设备的使用情况,以及对设备的操作记录,以便有错或设备损坏时可查。也能够为学院管理层提供必要的信息。4.1.2具体目标(1)实现用户权限控制实验室管理人员分为两个级别:管理员以及普
4、通用户。其中,管理员可以查看、更新、添加、删除设备,而普通用户只能查看、更新、添加,不能删除。(2)实现设备添加实验室中的设备会有损坏、报废等情况,所以需要购进新的设备添加。系统中需要能够为用户提供添加设备的功能,具体信息包括设备编号、所属实验室、使用人、名称、类别、当前使用情况等。其中设备种类包括交换机、计算机、路由器等。(3)实现设备更新设备信息会经常变更,如被领用、更换实验室等,这些信息都需要及时更新到数据库中,以便后来用户查询。(4)实现设备删除当设备损坏、报废无法使用后,需要将系统中该设备的信息删除。(5)实现设备信息查看用户在申请使用设备之前需要查询当前所有设备的使用情况,以便决定
5、申请哪些设备使用。(6)记录设备操作信息系统中记录下用户每一次对设备的操作,以便处理突发情况。4.1.3系统数据建模(1)系统ER图系统ER如下所示:用户设备实验室管理mnp图1 实验室设备管理系统总ER图用户实验室用户名密码级别编号编号实验室名图2 实体用户的属性 图3 实体实验室的属性设备编号领用人设备名称实验室种类使用情况图4 实体设备的属性(2)数据表的设计数据库表格设计如下:表1 实验室属性表列名数据类型长度允许空文字描述lidInt4N实验室编号locationvachar50实验室具体位置表2 用户属性表列名数据类型长度允许空文字描述uidint4N用户编号usernamevar
6、char50N用户名passwordvachar50N用户密码gradeint4N用户等级标志表3 设备属性表列名数据类型长度允许空文字描述fidint4N设备编号lidint4N所属实验室编号uidint4N领用用户编号fnamevarchar50N设备名称sortvarchar50N设备种类appliedint4N使用标志表4 操作属性表列名数据类型长度允许空文字描述idint4N操作记录编号fidint4N操作的设备编号uidint4N操作的用户编号operatevarchar50N操作名4.1.4系统功能建模实验室设备管理系统顶层数据流程图如图5所示,一层数据流程图如图6所示:用户实验
7、室设备管理系统设备信息设备使用情况操作记录图5 实验室设备管理系统顶层数据流程图查看设备添加设备更新设备删除设备查看操作设备信息表设备操作记录表用户用户用户F1F2F3F4图6 实验室设备管理系统一层数据流程图F1:设备详细信息 F2:更新后的设备信息F3:添加的设备信息 F4:设备操作记录信息4.1.5数据字典(1)数据元素用户级别名字:用户级别标志描述:用于标志用户的级别(区分管理员和普通用户)数据类型:字符长度:50实验室地点名字:实验室地点描述:用于描述实验室的具体地点数据类型:字符长度:50设备种类名字:设备种类描述:用于描述设备的种类数据类型:字符长度:50设备使用情况名字:设备是
8、否使用描述:用于标识设备当前是否被使用数据类型:数值长度:4操作项名字:操作描述:用于记录设备的操作记录数据类型:字符长度:50(2)数据存储设备信息名字:设备信息描述:每一个设备的详细信息编号:D1组成:设备编号、所属实验室、使用人、名称、类别、当前使用情况用户信息名字:用户信息描述:每一个用户的详细信息编号:D2组成:用户编号、用户名、用户密码、用户级别操作记录名字:操作记录描述:用户对设备的操作记录编号:D3组成:设备编号、用户编号、操作项(3)数据流设备详细信息名字:设备详细信息描述:数据库中存储的设备详细信息编号:F1组成:设备编号、所属实验室、使用人、名称、类别、当前使用情况更新后
9、的设备信息名字:更新后的设备信息描述:用户对某一设备更新后的详细信息编号:F2组成:所属实验室、使用人、名称、类别、当前使用情况添加的设备信息名字:添加的设备信息描述:用户新添加的设备信息编号:F3组成:所属实验室、使用人、名称、类别、当前使用情况设备操作记录信息名字:设备操作记录描述:用户操作过程被记录下来的信息编号:F4组成:设备编号、用户编号、操作项(4)数据处理查看设备名字:查看设备描述:用户申请查询设备信息编号:P1输入/输出数据流:设备详细信息、操作记录添加设备名字:添加设备描述:管理员添加新增的设备信息编号:P2输入/输出数据流:添加的设备信息、操作记录更新设备名字:更新设备描述
10、:管理员对某一变更了的设备信息进行更新编号:P3输入/输出数据流:更新后的设备信息、操作记录删除设备名字:删除设备描述:管理员删除某一设备的信息编号:P4输入/输出数据流:操作记录查看操作名字:查看操作描述:用户申请查看设备的操作记录编号:P5输入/输出数据流:设备操作记录信息4.2总体设计根据对系统需求分析中的总体目标和具体目标的分析,可以得到系统的功能图如图7所示:实验室设备管理系统设备信息维护操作记录维护查看设备信息添加设备信息更新设备信息删除设备信息查看操作记录用户信息维护实验室信息维护信息维护数据处理系统维护图7 实验室设备管理系统功能树4.3详细设计总体来看,系统的功能比较简单,可
11、以看作是一个模块来设计。(1)模块定义模块名称:实验室设备管理系统模块功能:合法用户登录系统后,可以实现查看设备信息、添加设备、更新设备以及删除设备(仅管理员级别用户)。每一次操作都要被记录下来,方便管理过程中使用。(2)输入项目用户注册时的用户信息;合法用户添加设备时的设备信息;用户更新设备信息时输入的设备信息;用户每一次操作时记录下来的操作记录信息。(3)输出项目用户查看设备信息时输出的设备详细信息;用户查看操作记录时输出的操作记录信息。(4)程序逻辑类的设计表5 系统类的设计结构表包名类名类的描述包的描述com.actionFCLCrudAction控制设备信息系统中action类的集合
12、,是系统的核心类LoginAction控制用户登录OPRCrudAction控制操作记录RegisteAction控制用户注册com.beanUser读取页面上的用户信息获取页面上的信息com.daoFacilityDAOI系统连接数据库所用的所有接口OperateDAOIUserDAOIcom.dao.implFacilityDAOImpl系统连接数据库所用的类,实现com.dao包中的接口OperateDAOImplUserDAOImplcom.mapFacility表facility映射的类Hibernate从数据库中映射过来的类Lab表lab映射的类Users表users映射的类Ope
13、rates表operates映射的类JSP页面设计表6 系统的JSP页面设计结构表jsp文件名页面描述login用户登录页面registe用户注册页面success登录提示以及主菜单页面flist设备信息展示页面update用于更新选中的设备信息add用于添加设备信息mlist用于展示操作记录信息的页面(5)测试要点测试用户登录、注册以及用户的分级是否成功;测试用户对设备的查看、更新、添加、删除是否成功;测试能否记录下用户的所有操作记录并供用户查看4.4运行与测试针对4.3中的测试要点,依次对系统进行测试。(1)测试用户登录、注册以及用户的分级是否成功用户登录图8 用户表初始数据图9 用户登录
14、界面登录用户名为admin的账号,测试登录功能。若登录成功,进入success.jsp页面,若不成功,进入错误提示页面。图10 登录成功后的页面用户注册图11 用户注册界面注册用户名为“wjj”、用户密码为“123456”的账号,若注册成功,则数据库表users中会多出一条记录。图12 注册成功后的users表数据比较图12与图8,可见用户表中多出一个用户名为“wjj”、用户密码为“123456”的账号,即注册成功。用户分级先使用管理员级别账号“admin”登录,在使用刚刚注册的普通账号“wjj”,查看区别。观察是否拥有删除功能,若“admin”用户拥有,而“wjj”用户不拥有,则分级成功。图
15、13 “admin”用户注册后进入的信息展示页面图14 “wjj”用户注册后进入的信息展示页面比较图13和图14,可见不同级别用户登录成功后,得到的展示页面时不同的。管理员用户可以对设备进行删除操作,而普通用户不可以。即,用户分级成功。(2)测试用户对设备的查看、更新、添加、删除是否成功查看设备信息在(1)中,对用户分级进行测试的过程中,已经对此功能进行了变相测试,参见其结果(图13、图14),可发现此功能已经实现。添加设备信息图15 设备表初始数据进入设备添加界面,添加一设备,详细信息为(耘慧414,3号用户领用,设备名为计算机101,设备种类为计算机,未被使用)。图16 设备添加界面图17
16、 设备添加成功后的facility表数据比较图15与图17,可见设备添加成功。即,此功能已经实现。设备更新图18 设备信息更新页面更新编号为1的设备,搬到实验室2(耘慧414),并且已使用。图19 更新后的设备表数据比较图17与图19,可见编号为1的设备信息已被改变。即,设备信息更新功能已经实现。删除设备登录“admin”用户,进入查看页面删除刚添加的设备信息。图20 删除后的设备表信息比较图19与图20,可见删除功能已经实现。(3)测试能否记录下用户的所有操作记录并供用户查看图21 设备操作记录表初始数据图22 测试后操作记录表数据经过之前的测试过程,已经记录下来的操作记录信息如图22所示,
17、与图21进行比较,可见均已经成功记录下来。图23 操作记录信息展示页面如图23,在操作记录信息展示页面成功展示了数据库中(如图22)的所有操作记录。即,操作记录信息供用户查看的功能已经实现。5 总结与展望在经过一周时间的努力后,终于完成了“实验室设备管理系统”的实现。习惯了平日里跟随老师学习的模式,在自己动手实现一个实际应用的过程中,遇到了很多困难、许多次失败,不过学习到的更多。首先是数据库的设计方面,一开始只是按照自己的臆想简单地设计了数据库的结构以及表,在实现系统功能时发现很难进行下去,所以不得不重新认真地根据需求分析来设计更完善的数据库结构以及表。其次是对JavaEE课程的学习了,自己动
18、手来做的确得到了很好地学习效果。经过了一周的课程设计后,对于struts2、hibernate的了解更加深刻、使用更加熟练。当然,我更加清楚这还仅仅只是一个开始,后续的学习还有很多,更加值得我去努力。附:系统程序主要代码1.用户登录代码/LoginAction.javaUserDAOImpl userdao = new UserDAOImpl();HttpServletRequest request = ServletActionContext.getRequest();HttpSession session = request.getSession();boolean b = userdao
19、.search(user.getUsername(), user.getPassword();if (b) List list = userdao.find(user.getUsername(), user.getPassword();Users u = (Users)list.get(0);session.setAttribute(login, user);session.setAttribute(u, u);return success; else return error;2.用户注册代码/UserDAOImpl.javaSession session = HibernateSessio
20、nFactory.getSession();Transaction tc = session.beginTransaction();try session.save(user);mit(); catch (Exception e) tc.rollback();e.printStackTrace();session.close();/RegisteAction.javauserdao.save(user);return success;3.设备信息的操作/FacilityDAOImpl.java/查找public List find() Session session = HibernateSe
21、ssionFactory.getSession();Query query = session.createQuery(from Facility);List list = query.list();return list;/添加public void save(Facility facility) Session session = HibernateSessionFactory.getSession();Transaction tc = session.beginTransaction();try session.save(facility);mit(); catch (Exception
22、 e) tc.rollback();e.printStackTrace();session.close();/更新public boolean update(Facility facility) Session session = HibernateSessionFactory.getSession();Transaction tc = session.beginTransaction();try session.update(facility);mit(); catch (Exception e) tc.rollback();e.printStackTrace();return false;
23、return true;/删除public boolean delete(int fid) Session session = HibernateSessionFactory.getSession();Facility temp = (Facility) session.load(Facility.class, fid);Transaction tc = session.beginTransaction();try session.delete(temp);mit(); catch (Exception e) tc.rollback();e.printStackTrace();return f
24、alse;return true;public boolean delete(Facility facility) / TODO Auto-generated method stubSession session = HibernateSessionFactory.getSession();session.delete(facility);return true;4操作记录/查询public List search()Session session = HibernateSessionFactory.getSession();Query query = session.createQuery(
25、from Operates);List list = query.list();return list;/存储public void save(Operates operate) Session session = HibernateSessionFactory.getSession();Transaction tc = session.beginTransaction();try session.save(operate);mit(); catch (Exception e) tc.rollback();e.printStackTrace();session.close();5配置文件/struts.xml/success.jsp/error.jsp/login.jsp/flist.jsp/update.jsp/updates.jsp/save.jsp/delete.jsp/mlist.jsp参考文献1 郑人杰,马素霞,麻志毅.软件工程,北京:人民邮电出版社,20092 王珊,萨师煊.数据库系统概论.第4版,北京:高等教育出版社,20063 骆斌,丁二玉.需求工程软件建模与分析.北京:高等教育出版社,2009 4 王永贵,郭伟,冯永安,焦学理.Java高级框架应用开发案例教程,北京:清华大学出版社,2012成绩评定成绩 教师签字24