基于jsp的家政服务管理系统课程设计报告(16页).doc
-基于jsp的家政服务管理系统课程设计报告-第 12 页课程设计报告学年学期 题 目 专业、学号 授课班号 学生姓名 指导教师 目录一、课题背景及意义1二、需求分析11. 业务需求12. 功能需求13. 数据需求2三、概要设计21. 系统组成22. 系统结构设计33. 数据库设计4(一)概念结构设计4(二)逻辑结构设计4(三)关联图4四、详细设计与实现9五、结束语15六、参考文献15一、 课题背景及意义二十一世纪是一个集数字化,网络化,信息化的,以网络为核心的社会。中国的网民充分领略到“畅游天地间,网络无极限” 所带来的畅快。随着Internet的飞速发展,使得网络的应用日益的广泛。如电子商务,电子政务,网上医疗,网上娱乐,网络游戏,网络教学等。本次毕业设计的题目就是在线家政服务管理系统。本论文就毕业设计的内容,系统地阐述了整个在线家政服务信息管理系统的功能及实现。实现了从用户登录,个人信息修改,家政信息分类、修改以及添加,信息审核以及用户添加修改等功能。本系统界面简单直观,易于操作和使用,交互性强,完全基于Internet网络。本系统开发工具是MyEclipse和SqlServer数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。这学期学习了java高级语言课程,系统的了解了JSP开发技术的知识,文章管理系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。本学期也开设了软件工程,数据库系统概念等课程,具备了一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性。二、 需求分析1. 业务需求在项目的开始是需求调研,经过一系列的调查,我了解了家政服务信息共享管理的流程。根据实际情况及调查结果,发现实现家政服务信息管理的网络化、信息化是十分有必要的,因此设计了家政服务信息管理系统。2. 功能需求本系统最大的特点是使用操作简单、友好的提示信息。本系统将实现以下基本功能:(1)系统具有简洁大方的页面,使用简便,友好的错误操作提示(2)管理员用户具有部门信息管理、用户信息管理、家政信息分类管理、家政信息审核等功能(3)普通用户具有家政信息管理及已删除家政信息恢复功能(4)具有较强的安全性,避免用户的恶意操作管理员功能模块图说明:(1) 部门信息管理模块:在该模块中定义了部门信息的管理,其功能包括部门信息的录入、查询、修改、删除等操作。(2) 用户信息管理模块:在该模块中定义了用户信息的管理,其功能包括用户信息的录入、查询、修改、删除等操作。(3) 家政服务分类信息管理模块:在该模块中定义了家政服务分类信息的管理,其功能包括分类信息的录入、查询、修改、删除等操作。(4) 家政信息审核模块:在该模块中定义了家政信息审核的管理,其功能包括家政服务信息的浏览、审核等操作。管理员用户功能模块图员工功能模块图说明:(1)个人资料查看模块:用户通过该模块查看个人资料。(2)家政服务信息管理模块:在该模块中定义了对服务信息的管理,其功能包括家政信息录入、查询、修改、删除等操作。(3)回收箱管理模块:在该模块中定义了对已删除服务信息的管理,其功能包括已删除服务信息的浏览、恢复。员工用户功能模块图三、 概要设计1. 系统组成设计思想遵循以下几点:1. 采用B/S模式进行开发,其优点是后台与前台处理层次分明,而且符合众多已经习惯网页方式的用户。2. 采用面向对象的开发与设计理念。运用面向对象技术的前提是对整体系统的高度和准确抽象,通过它可以保证系统良好的框架,进而带来产品较强的稳定性和运行效率。3. 采用模块化设计。模块化设计要求将整个系统划分成基于小的模块,有利于代码的重载,简化设计和实现过程。4. 简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。5速度优先原则。由于此工具最重要的评测标准就是速度,因此在设计过程中,具体过程尽量做到资源占用少,速度快。6设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。硬件环境:普通客户机CPU:p4 1.8GHz以上 内存:256MB以上能够运行IE5.0以上或者Netspace 4.0 版本的机器分辨率:推荐使用1024 x 768像素Web服务器CPU:P4 2.0GHz内存:1GB以上硬盘:80GB以上网卡:KMb/s速度数据库服务器CPU:P4 2.0GHz内存:1GB以上硬盘:80GB以上软件环境:本系统的软件环境如下:操作系统:UNIX/Linux/Windows 2000或以上版本数据库:SQL Server 2000浏览器:IE6.0以上2系统架构设计2.1安全性设计家政服务信息管理系统在管理权限上要严格进行控制,具体要求如下:想登录家政服务管理系统进行操作,必须有操作权限,没有权限的用户不能通过任何方式登录系统查看系统的任何信息和数据,以确保系统的严密性和安全性。2.2数据完整性设计 1.各种记录信息的完整性,信息记录内容不能为空2.各种数据间相互联系的正确性3.相同数据在不同记录中的一致性2.3输出设计输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。3. 数据库设计3.1数据库的概念结构设计概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。数据库的概念结构设计采用实体联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的,根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。实体间关系属性实体(1)部门信息实体E-R图如图3.1.1所示:图3.1.1 部门信息实体E-R图(2)员工信息实体E-R图如图3.1.2所示:图3.1.2 员工信息实体E-R图(3)分类信息实体E-R图如图3.1.3所示图3.1.3 分类信息实体E-R图 (4)家政服务信息E-R图如图3.1.4所示图3.1.4 家政服务信息实体E-R图 (5)管理员信息E-R图如图3.1.5所示图3.1.5 管理员信息实体E-R图 (6)管理员信息E-R图如图3.1.6所示图3.1.6 管理员信息实体E-R图(7)管理员信息E-R图如图3.1.7所示图3.1.7 客户信息实体E-R图3.2数据库逻辑结构设计数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:*每一个实体要转换成一个关系*所有的主键必须定义非空(NOT NULL)*对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。根据E-R模型,家政服务信息管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。(1)部门信息表主要是记录了部门的基本信息,表结构如图3.2.1所示。表3.2.1部门表(t_organization)列名数据类型长度允许空是否主键说明idint4否是 部门IDnamevarchar50否否部门名称descriptionvarchar50否否部门描述p_idInt5否否 父部门ID (2)员工信息表主要是记录了员工基本信息。表结构如表3.2.2所示。表3.2.2员工信息表(t_user)列名数据类型长度允许空是否主键说明idint4否是 编号org_idint4否是 所属部门namevarchar50否否 姓名loginnamevarchar50否否 登录名loginpwvarchar50否否 登录密码(3)分类信息表主要是记录了家政服务信息分类的基本信息,表结构如图3.3所示。表3.2.3分类信息表(t_fenlei)列名数据类型长度允许空是否主键说明idint4否是 编号mingchengvarchar50否否 分类名称(4)文章信息表主要是记录了家政服务的基本信息,表结构如图3.4所示。表3.2.4家政服务信息表(t_wenzhang)列名数据类型长度允许空是否主键说明idint4否是编号user_idint4否否 所属用户fenlei_idint4否否 所属分类biaotivarchar50否否标题neirongvarchar50否否内容guanjianzivarchar50否否关键字yijianvarchar50否否审核意见ztint4否否 当前状态 (5)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表3.5所示。表3.2.5管理员信息表(t_admin)列名数据类型长度允许空是否主键说明userIdint4否是编号userNamevarchar50否否用户名userPwvarchar50否否密码四、 详细设计与实现4.1登陆及注册界面4.2主界面4.2 CRUD界面修改密码界面家政服务信息添加界面家政服务信息编辑添加界面家政服务信息回收界面4.3 Servelet的运用 Servlet是在服务器上运行的小程序。这个词是在Java applet的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。其工作模式是:客户端发送请求至服务器服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器,然后服务器将响应返回客户端。该程序分别针对部门,用户,文章以及分类建了四个Sevelet类以动态的响应用户的需求。4.4数据库的连接采用JDBC连接数据库的方式,只需在工程中导入对应数据库的jar包,就可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,DAO(Data Access Object,数据访问对象),是Java编程中的一种经典模式,已被广泛应用,也是J2EE架构中持久层框架的基础知识,基于分层次式的软件架构来实现对数据库的访问操作。DAO模式的主要思想就是从抽象数据源获取与操纵数据的方法。抽象数据的含义就是编写应用程序的程序员不必关心数据库的物理位置,已经是何种数据库,只需使用封装数据库中表示记录的数据对象即可。关键代码如下public DB()trygetDbConnProp(); catch (Exception e)System.out.println("加载数据库驱动失败!");e.printStackTrace();private void getDbConnProp()tryInputStream in = getClass().getClassLoader().getResourceAsStream("dbInfo.properties"); Properties proHelper = new Properties();proHelper.load(in); in.close(); ip=proHelper.getProperty("dburl"); port=proHelper.getProperty("dbport"); user=proHelper.getProperty("dbuser"); password=proHelper.getProperty("dbpass"); dbName=proHelper.getProperty("dbName"); url = "jdbc:sqlserver:/"+ip+":"+port+"DatabaseName="+dbName; catch(Exception e)e.printStackTrace(); /* 创建数据库连接 */public Connection getCon()try tryClass.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); catch (ClassNotFoundException e)e.printStackTrace();con = DriverManager.getConnection(url, user, password); catch (SQLException e)System.out.println("创建数据库连接失败!");con = null;e.printStackTrace();return con;4.5关键页面设计4.5.1部门信息修改1.描述:先是点击部门管理,页面跳转到部门管理界面,浏览所有的部门信息,点击要修改的部门,弹出的部门修改对话框,修改部门信息。2.程序效果图如下图所示部门信息删除4.5.2部门信息删除1.描述:先是点击部门管理,页面跳转到部门管理界面,浏览所有的部门信息,点击要删除的部门,弹出的确定对话框,即可删除该部门信息。2.程序效果图如下图所示部门信息删除4.6用户信息管理4.6.1用户信息录入1.描述:管理员输入用户相关正确信息后点击录入按钮,如果是没有输入完整的用户信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。2.程序效果图如下图所示:用户信息录入4.6.2用户信息管理1.描述:管理员点击左侧的菜单“用户信息管理”,页面跳转到学生信息管理界面,调用后台的action类查询出所有的用户信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出用户信息。2.程序效果图如下图所示用户信息管理页面用户信息管理关键代码:public void userAdd(HttpServletRequest req,HttpServletResponse res)int org_id=Integer.parseInt(req.getParameter("org_id");String name=req.getParameter("name");String loginname=req.getParameter("loginname");String loginpw=req.getParameter("loginpw");String del="no"String sql="insert into t_user values(?,?,?,?,?)"Object params=org_id,name,loginname,loginpw,del;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "user?type=userMana"); String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);public void userDel(HttpServletRequest req,HttpServletResponse res)int id=Integer.parseInt(req.getParameter("id");String del = "yes"String sql="update t_user set del=? where id=?"Object params=del,id;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "user?type=userMana"); String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);public void userMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOExceptionList userList=new ArrayList();String sql="select * from t_user where del='no' order by org_id desc"Object params=;DB mydb=new DB();trymydb.doPstm(sql, params);ResultSet rs=mydb.getRs();while(rs.next()TUser user=new TUser();user.setId(rs.getInt("id");user.setName(rs.getString("name");user.setLoginname(rs.getString("loginname");user.setLoginpw(rs.getString("loginpw");user.setOrg_id(rs.getInt("org_id");user.setOrganization(liuService.getOrg(rs.getInt("org_id");userList.add(user);rs.close();catch(Exception e)e.printStackTrace();mydb.closed();req.setAttribute("userList", userList);req.getRequestDispatcher("admin/user/userMana.jsp").forward(req, res);public void userEdit(HttpServletRequest req,HttpServletResponse res)int id=Integer.parseInt(req.getParameter("id");int org_id=Integer.parseInt(req.getParameter("org_id");String name=req.getParameter("name");String loginname=req.getParameter("loginname");String loginpw=req.getParameter("loginpw");String sql="update t_user set org_id = ?,name=?,loginname=?,loginpw=? where id = ?"Object params=org_id,name,loginname,loginpw,id;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "user?type=userMana"); String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);4.6.3用户信息修改1.描述:先是点击用户信息管理,页面跳转到用户信息管理界面,浏览所有的用户信息,点击要修改的用户信息,弹出修改界面,即可修改该用户信息。2.程序效果图如下图所示用户信息修改页面4.6.4用户信息删除1.描述:先是点击用户信息管理,页面跳转到用户信息管理界面,浏览所有的用户信息,点击要删除的用户信息,点击弹出的确定对话框,即可删除该用户信息。2.程序效果图如下图所示用户信息删除页面4.7分类信息管理4.7.1分类信息录入1.描述:管理员输入分类相关正确信息后点击录入按钮,如果是没有输入完整的分类信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。2.程序效果图如下图所示:分类信息录入4.7.2分类信息管理1.描述:管理员点击左侧的菜单“分类信息管理”,页面跳转到分类信息管理界面,调用后台的action类查询出所有的分类信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出分类信息。2.程序效果图如下图所示分类信息管理页面分类信息管理关键代码:public void fenleiMana(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOExceptionList fenleiList = new ArrayList();String sql = "select id,mingcheng from t_fenlei where del='no'"Object params=;DB mydb=new DB();trymydb.doPstm(sql, params);ResultSet rs=mydb.getRs();while(rs.next()TFenlei fenlei = new TFenlei();fenlei.setId(rs.getInt("id");fenlei.setMingcheng(rs.getString("mingcheng");fenleiList.add(fenlei);rs.close();catch(Exception e)e.printStackTrace();mydb.closed();req.setAttribute("fenleiList", fenleiList);req.getRequestDispatcher("/admin/fenlei/fenleiMana.jsp").forward(req, res);public void fenleiAdd(HttpServletRequest req,HttpServletResponse res)String mingcheng = req.getParameter("mingcheng");String del = "no"String sql = "insert into t_fenlei values (?,?,?)"Object params=mingcheng,0,del;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "fenlei?type=fenleiMana");String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);public void fenleiEdit(HttpServletRequest req,HttpServletResponse res)int id = Integer.parseInt(req.getParameter("id");String mingcheng = req.getParameter("mingcheng");String sql = "update t_fenlei set mingcheng = ? where id = ?"Object params=mingcheng,id;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "fenlei?type=fenleiMana");String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);public void fenleiDel(HttpServletRequest req,HttpServletResponse res)int id = Integer.parseInt(req.getParameter("id");String sql = "update t_fenlei set del = 'yes' where id = ?"Object params=id;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "fenlei?type=fenleiMana");String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);4.7.3分类信息修改1.描述:先是点击分类信息管理,页面跳转到分类信息管理界面,浏览所有的分类信息,点击要修改的分类信息,点击弹出修改界面,即可修改该分类信息。2.程序效果图如下图所示分类信息修改页面4.7.4分类信息删除1.描述:先是点击分类信息管理,页面跳转到分类信息管理界面,浏览所有的分类信息,点击要删除的分类信息,点击弹出的确定对话框,即可删除该分类信息。2.程序效果图如下图所示分类信息删除页面4.8家政服务信息审核管理1.描述:管理员点击左侧的菜单“文章审核管理”,页面跳转到文章审核管理界面,调用后台的action类查询出所有的待审核的文章信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示待审核的文章信息。点击要审核的文章信息,点击弹出审核界面,填写审核意见,完成文章审核操作。2.程序效果图如下图2.5.1,2.5.2所示图2.5.1待审核文章浏览页面2.5.2家政服务信息审核页面家政服务信息审核管理关键代码:public void shenheList(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOExceptionList wenzhangList = new ArrayList();String sql = "select ta.*,tb.mingcheng,tc.name from t_wenzhang ta,t_fenlei tb,t_user tc " + "where ta.fenlei_id = tb.id and ta.user_id=tc.id and ta.del='no' and ta.zt=0"Object params=;DB mydb=new DB();trymydb.doPstm(sql, params);ResultSet rs=mydb.getRs();while(rs.next()TWenzhang wenzhang=new TWenzhang();wenzhang.setId(rs.getInt("id");wenzhang.setFenlei_id(rs.getInt("fenlei_id");wenzhang.setBiaoti(rs.getString("biaoti");wenzhang.setGuanjianzi(rs.getString("guanjianzi");wenzhang.setNeirong(rs.getString("neirong");wenzhang.setFlmc(rs.getString("mingcheng");wenzhang.setYhxm(rs.getString("name");wenzhangList.add(wenzhang);rs.close();catch(Exception e)e.printStackTrace();mydb.closed();req.setAttribute("wenzhangList", wenzhangList);req.getRequestDispatcher("admin/wenzhang/shenheMana.jsp").forward(req, res);public void shenheUpd(HttpServletRequest req,HttpServletResponse res)int id = Integer.parseInt(req.getParameter("id");int zt = Integer.parseInt(req.getParameter("zt");String yijian = req.getParameter("yijian");String sql = "update t_wenzhang set zt = ?,yijian=? where id = ?"Object params=zt,yijian,id;DB mydb=new DB();mydb.doPstm(sql, params);mydb.closed();req.setAttribute("message", "操作成功");req.setAttribute("path", "wenzhang?type=shenheList");String targetURL = "/common/success.jsp"dispatch(targetURL, req, res);4.9修改密码1.描述:输入用户名和用户的原有密码,输入新密码以后点击修改按钮即可修改密码成功。2.程序效果图如图所示:修改密码4.10退出系统1.描述:点此按钮回到系统的主页面。2.关键代码:主要是通过javascript语句来实现, item_word84="退出系统"item_link84="javascript:window.open('./index.jsp','_self')"