数据库课程设计说明书_第1页
数据库课程设计说明书_第2页
数据库课程设计说明书_第3页
数据库课程设计说明书_第4页
数据库课程设计说明书_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华南理工大学广州学院2015-2016学年度第一学期   课程名称: 数据库课程设计 项目题目:基于 Java EE的宿舍信息系统管理子模块专业班级: 软件工程4班 年级: 2013级 姓名: 学号: 201330098 13目录一、 概述1. 开发环境及安装配置 32. 项目需求分析 4二、 程序概要设计1. 程序功能模块 42. 程序流程 53. 程序文件结构分析 64. 数据库设计 7三、 程序详细设计1. 关键代码分析 72. 设计疑难问题解析 9四、 程序发布和测试 10五、 程序优点和不足 12六、 参考目录 13一、 概述1、开发环境 开发环境:wi

2、ndows 8.1作为开发平台,用Struts2和Hibernate结构整合开发硬件配置:操作系统 Microsoft Windows 8.1 (64位/Service Pack 1)CPU (英特尔)Intel(R) Core(TM) i5-4278U CPU 2.60GHz(2601 MHz)主板 苹果 Mac-189A3D4F975D5FFC内存 8.00 GB ( 1600 MHz)主硬盘 250 GB ( S1K4NYBF784144 已使用时间: 431小时)显卡 Intel(R) Iris(TM) Graphics 5100 (2112 MB)显示器 苹果 Color LCD 3

3、2位真彩色 60Hz声卡 Cirrus Logic CS4208 (AB 93)网卡 Broadcom 802.11ac Network Adapter开发服务器:Tomcat开发工具:MyEclipse数据库管理系统:Microsoft SQL Server 2008 安装配置、安装JDK,配置系统变量path和classpath,用于Java标准编程。、安装tomcat,Web服务器用于调试运行web项目。、安装MyEclipse,集成开发环境,用于编码和调试项目。、在MyEclipse中进行JDK和tomcat的配置。Hibernate和Struts2的整合流程1) 建立数据库和数据表2

4、) 在Myeclipse的database explorer中创建SQL Server数据库连接3) 创建Java web项目4) 右击项目文件夹,在Myeclipse右键菜单中选择“添加Hibernate开发能力”,先选择所需要的类库,然后单击next,创建Hibernate配置文件Hibernate.cfg.xml放在src文件夹下,接着选择数据库连接,接着创建SessionFactory类,放在一个用户自定义的包中。此步骤添加了Hibernate类库,创建了一个配置文件和一个java类。5) 打开步骤2)中配置好的数据库连接,找到要操作的数据表,右键选择“Hibernate Revers

5、e Engineering”(Hibernate逆向工程),按照向导生成和数据表对应的Java类POJO以及对应的映射文件,Java类默认放在model包中,映射文件和Java类在同一个包中,映射文件的路径信息被加入到Hibernate.cfg.xml配置文件。6) 创建Dao类,使用Hibernate功能去访问数据库。7) 为项目导入struts2的核心类库8) 在web.xml文件中配置过滤器FilterDispatcher9) 编写JSP页面10) 编写Action类,重载类中的excute方法,在Action的方法中调用Dao类的方法访问数据库。11) 新建struts.xml文件,配

6、置action及其result信息。12) 把项目发布到服务器,启动tomcat,运行调试2、项目的需求分析学生住在宿舍楼中,每栋宿舍楼都会有若干名宿舍管理员负责本宿舍楼的日常管理。在管理宿舍时都会遇到以下需求:一、学生的基本信息:入校时,每位同学都有唯一的学号,并被分配到指定的宿舍楼和指定的宿舍,也会有一个宿舍号,其入校时间就是他的入住时间。另外,为了管理上的方便,同一院系的学生的宿舍一般在一起,相应地会有其所在的院系名称。二、宿舍的基本信息:学校宿舍楼众多,每栋宿舍楼的每间宿舍都有唯一的宿舍号。三、宿舍信息管理:除了每栋宿舍的宿舍管理员外学校生活注意负责部门则要对宿舍楼和宿舍号进行分配管理

7、,方便信息的查询。四、宿舍财产的基本信息:每个宿舍的财产属于学校,比如电灯,床铺,柜子,桌椅等,为了对不同的财产进行区分,可以为每种财产分配不同的财产号。这样有利于财产的报修和管理。五、违纪的基本信息:宿舍楼在指定的时间关门,若有同学晚于关门时间会宿舍,需通知宿舍楼管理员,同时应登记晚归学生姓名,宿舍号和晚归原因,以利于学校的管理。在这个需求下我设计了基于 Java EE的宿舍信息系统管理子模块,用于记录学生信息,宿舍楼信息以及备注信息,方便学校的宿舍管理。二、 程序概要设计1.程序功能模块1)超级管理员模块:主要实现系统中宿舍楼号的添加和查询,每栋宿舍楼中宿舍号的添加、修改、查询和删除,并且

8、拥有普通管理员的所有功能,可以对学生的宿舍信息进行添加、修改、查询和删除,包括学号、姓名、楼号、宿舍号、专业以及备注信息,备注信息用于登记学生宿舍的财物情况以及违规情况。超级管理员需要账号登陆,已设定账号为:superuser 密码为:superuser,不能另外进行超级管理员账号的注册。2)普通管理员模块:可以对学生的宿舍信息进行添加、修改、查询和删除,包括学号、姓名、楼号、宿舍号、专业以及备注信息,备注信息用于登记学生宿舍的财物情况以及违规情况。超级管理员需要账号登陆,已设定账号为: user 密码为: user,普通管理员的账号可以进行注册登记。3)普通用户模块:普通用户(游客)无需进行

9、登陆既可以进入系统,但只能进行学生宿舍信息的查询2.程序流程宿舍管理系统直接进入登陆登陆,注册学号姓名楼号宿舍号专业备注学号姓名楼号宿舍号专业备注学号姓名楼号宿舍号专业备注添加,删除,修改,查询添加,修改,查询添加,查询楼号楼号宿舍号添加,删除,修改,查询查询学生信息学生信息学生信息宿舍信息宿舍楼信息普通管理员普通用户(游客)超级管理员3.程序文件结构分析Org.action包里包含了Struts2框架的Action类,用于处理事务。还包含了Login(登陆)和Register(注册)两个Action类的数据验证校验器(最后两个)。Org.dao包里面包含了数据库的Dao类,用于处理数据库的增

10、删改查事务。Org.model包用来存放与数据库表对应的Java类,即POJO类。还有数据库表的映射文件。org.til包用于存放HibernateSessionFactory工厂类。hibernate和struts2框架的配置文件WebRoot文件夹中存放了所有的jsp页面文件,其中的image文件夹用于存放图片文件。4.数据库设计数据库中一共有五个表,Lh表用于存放宿舍楼号Normaluser表用于存放普通管理员的账号密码信息SSh表用于存放宿舍号信息Student表用于存放学生信息Superuser表用于存放超级管理员的账号密码信息Lh表LhNormaluser表UidUsernameP

11、asswordSSh表IdLhSShStudent表IdXhXmLhSshZyBZSuperuser表UidUsernamePasswordLh表:lh(楼号)(主键)Normaluser表:uid(自增主键),username(账号),password(密码)Ssh表:id(自增主键),Lh(楼号),Ssh(宿舍号)Student表:id(自增主键),Xh(学号),Xm(姓名),Lh(楼号),SSh(宿舍号),Zy(专业),Bz(备注)。Superuser表:uid(自增主键),username(账号),password(密码)三、程序详细设计1.关键代码分析(1)登陆方法:LoginAct

12、ion的execute自动执行方法public String execute() throws Exception if(power.equals("1")Map session = (Map)ActionContext.getContext().getSession();Normaluser shi = NormaluserDao.checkDlb(username,password);if(shi=null)return "error"elsesession.put("user", shi);return "user&q

13、uot;Power是从登陆界面的单选按钮获得的数据变量,当值为1时,即是普通管理员按钮被选中,利用if语句判定后调用NormaluserDao类中的checkDlb方法,把获得的账号密码传过去进行判定,遍历普通用户Normaluser表后如果返回值不为空即登陆验证通过返回“user”,由Sturts.xml跳转到普通管理员界面,超级管理员的power值为2,执行方法相同,普通用户直接点击我是游客按钮即可直接登陆到游客界面。(2)添加信息方法:以AddAction类为例public String execute() throws Exception trySession session=org.

14、util.HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();session.save(xs);mit();HibernateSessionFactory.closeSession();return "success"catch(Exception e)e.printStackTrace();return "error"创建Student类的xs对象,利用get、set方法从添加学生信息界面获取xs对象的值,利用hibernate自动处理添加事务,调

15、用session.save方法存储。(3)删除信息方法:try Session session=org.util.HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();Query query=session.createQuery("from Student where xh=?");query.setParameter(0,xh);List list=query.list();if(list!=null&&list.size()!=0)Student x

16、s1=(Student)list.get(0);session.delete(xs1);mit();return true;HibernateSessionFactory.closeSession();Xh为该方法的形参,调用hql语句利用学号查找学生信息表中的相关信息,遍历后判定时候查找到,利用hibernate自动处理删除事务,调用session.delete方法删除。(4)修改信息方法:NormaluserDao xsb=new NormaluserDao();Student stu=new Student();Map session=(Map)ActionContext.getCont

17、ext().getSession();Student a=(Student)session.get("xgxs");a.setXh(xsxh);a.setXm(xsxm);a.setLh(xslh);a.setSsh(xsssh);a.setZy(xszy);a.setBz(xsbz);trySession session1=org.util.HibernateSessionFactory.getSession();Transaction ts=session1.beginTransaction();session1.update(a);mit();HibernateSes

18、sionFactory.closeSession();return "success"利用get、set方法取得页面的修改后的学生信息然后利用Student 对象a的set方法重写信息,a对象是由点击修改页面时已经存储到session中的Student类xgxs对象赋值,即是先从点击修改的页面获得该项信息的对象,然后放到session中,再到这里调用出存储到a对象中,然后利用hibernate自动处理更改事务,调用session.update方法修改。(5)查询信息方法:public static Student getOneXs(String xh) trySession

19、 session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction();Query query=session.createQuery("from Student where xh=?");query.setParameter(0, xh);query.setMaxResults(1);Student xs=(Student) query.uniqueResult();mit();session.clear();return xs;利用xh对Student进行hql语句查

20、询,遍历后把得到的对象存放到Student对象xs中,返回xs参数,在jsp页面显示出xs参数的信息。2.设计疑难问题解析(1)设计到修改信息部分时,程序经常出错,hibernate返回错误信息没有获得主键的修改值,我的数据库主键是设置了主键自增的,就很奇怪为什么还要修改主键,后来经过上网研究,发现是自己在设置主键生成策略时忘记把映射文件设置为identity类型,这样程序会让数据库进行主键自增,之前一直是默认的设置了assigned类型由用户自己设置。(2)还是设计修改信息部分时,经过前一步修改后数据库已经没有出错,但是我在调用update方法自动处理修改事务时还是出错,原因是因为我一直把接

21、收到的信息存到一个新的对象中,然后进行update操作,数据库里面没有这个记录所以一直报错,后来经过重复查看代码发现我应该先把要修改的那一项存储起来,再经过赋值然后再放进update方法中进行修改。(3)登录界面的设计,在判定单选按钮信息中思考了一段时间,后来经过考虑决定把不同的登录用户权限登录到不同的界面。原本的设计是打算在同一个界面完成。(4)在添加宿舍号信息时要使用struts2的下拉列表来显示数据库中已经存在的楼号,这一部分花了很多时间,因为一开始不知道怎样把动态的数据库数据存放到struts2下拉列表中,后来经过上网进行查询,利用HashMap map 对象在jsp页面上存放查找到的

22、楼号信息,然后动态遍历到下拉标签中,虽然已经实现,但是还是不是很了解。四、 程序发布和测试登陆界面:注册界面:注册成功会弹框显示校验器:分别判定用户和密码是否为空,否则不能登陆普通管理员界面:分为三个部分左下边控制调用那个功能右下边负责显示界面查看所有学生信息界面:可以直接点击修改或者删除连接对指定的信息行进行相关操作添加学生信息界面添加成功会有弹框提示查询学生信息界面可分别对学号和姓名进行查询查询成功界面查询成功后可以直接对该信息行做修改或者删除比较方便超级管理员界面添加宿舍楼号信息界面添加对应楼号的宿舍号信息界面上面提到的动态分配下拉列表显示宿舍信息界面修改或者删除都有弹框提示而且普通用户(游客)的登录界面可以进行查询操作,相对的修改删除连接已经删除五、程序优点和不足优点:(1)整个系统做相关操作或者改动都会有弹框提示或者校验器提示,例如登录失败时会提示你这样的提示比较人性化,对于不了解系统的用户会有比较强的适应性。(2)系统特意把各个登录界面都放在同一个界面显示,而不是每次都跳转页面,减少了等待时间和使用户不会感到经常跳转而厌烦。(3)系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论