Struts综合应用课程设计指导书.doc
Struts综合应用课程设计指导书Struts综合应用课程设计一、课程设计目的 Struts综合应用课程设计是信息管理专业集中实践性环节之一,是学习完Struts课程后进行的一次全面的综合练习。其目的在于加深对Struts知识的理解,掌握使用Struts的开发系统全过过程,提高解决编程实际问题的能力。二、课程设计内容及要求要求具体如下:1、程序采用Struts技术实现;2、同学们在课程设计并写出详细的课程设计报告(课程设计题目、课程设计目的、课程设计要求、系统设计书、课程设计心得、系统效果图),具体格式见附录。课程设计报告文字不得少于3000字。三、课程设计时间第1718周,2学分。四、课程设计提交内容1、在设计结束时要提交系统源程序以及课程设计报告;2、课程设计报告内容包括:课程设计题目、课程设计目的、课程设计要求、系统设计书、课程设计心得;3、课程设计报告除了包括以上内容之外,还要附带系统的效果图;五、课程设计的考查由指导教师根据学生完成任务的情况、课程设计报告的质量和课程设计过程中的学习态度等综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。六、选题1、题目选择:每位同学从所给题目中,任选一个。2、要求每位同学都要有个性化的设计,不准雷同。七、注意事项。 在做课程设计时主要参照功能模块图,而建立数据库时,文中所给为样例表,如果有逻辑上的问题可以自行改动,功能过于复杂的可以只完成部分功能,以表为单位计算工作量。目录实训题目一 旅店管理信息系统的设计与规划5一、需求分析5二、数据库分析6三、总体设计9四、编码阶段10五、功能完善设计与系统测试11实训题目二 高校教务管理信息系统的设计与规划12一、需求分析12二、数据库分析13三、总体设计16四、编码设计17五、功能完善设计与系统测试18实训题目三 小型BBS系统的设计与规划20一、需求分析20二、数据库分析20三、总体设计与详细设计21四、编码阶段22五、功能完善设计与系统测试37实训题目四 图书馆管理信息系统的设计与规划47一、需求分析47二、数据库分析47三、总体设计与详细设计51四、功能完善设计与系统测试52实训题目五 考勤管理信息系统的设计与规划53一、需求分析53二、数据库分析54三、总体设计与详细设计57四、功能完善设计与系统测试62实训题目六 小区物业管理信息系统的设计与规划63一、需求分析63二、数据库分析63三、总体设计与详细设计67四、功能完善设计与系统测试69实训题目七 人力资源管理信息系统的设计与规划74一、需求分析74二、数据库分析74三、总体设计与详细设计78四、功能完善设计与系统测试80实训题目八 设备综合档案管理信息系统的设计与规划81一、需求分析81二、数据库分析82三、总体设计与详细设计85四、功能完善设计与系统测试87实训题目九 家庭理财系统的设计与规划88一、需求分析88二、数据库分析88三、总体设计与详细设计95四、功能完善设计与系统测试97实训题目十试卷生成系统的设计与规划98一、需求分析98二、数据库分析98三、总体设计与详细设计101四、功能完善设计与系统测试103实训题目十一 酒店管理系统的设计与规划105一、需求分析105二、数据库分析108三、总体设计与详细设计110四、功能完善设计与系统测试111实训题目一 旅店管理信息系统的设计与规划一、需求分析1、理解需求只有通过对旅店的终端用户和客户进行大量的调研,才能开发出合理的、实用的管理信息系统。下面是一份典型的文本需求说明,是通过对该系统的终端用户进行调研后编写的。因为篇幅有限,这里只列出比较关键的部分。1)作为一个旅店,首先应该具有一定的客房以提供给客户,所以旅店的客房信息应该是及时、准确、全面的。一个客房记录应该包括客房编号、客房级别、客房状态、单价、是否预订等信息,并且客房信息应该根据旅店的情况及得到维护。2)系统应该可以对基础数据进行维护以保证系统的正常运行。3)只有旅店的管理员才有权利对数据进行维护,所以在系统登录时应该有关于密码的选择,同时对系统管理员的信息要进行维护管理。4)系统还应该提供强大的数据查询等功能。5)系统客户端运行在Windows平台下,服务器端可以运行在Windows平台或者Unix平台下。系统还应该有一个较好的图形操作界面。6)系统应该有很好的可扩展性。为了便于读者掌握,本例主要针对旅店的客房信息、入住信息、预订信息等管理维护的功能。其他通用功能,这里不再详细讲解,有兴趣的读者可自己添加这些功能。2、分析需求分析需求就是描述系统的需求,通过定义系统中的关键域类来建立模型。分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通的机制,因此,旅店管理系统的分析需求也应该是开发人员和用户一起完成的。分析需求的第一步是描述旅店管理信息系统的功能,即定义用例,以此确定系统的功能需求。旅店的主要角色是管理员或者说是系统的用户。他们可以对数据库进行维护,进行客房管理等。旅店管理信息系统的用例包括以下内容:¨ 新增客房信息¨ 查询/修改客房信息¨ 入住信息的增加和删除¨ 客户信息的管理¨ 客房预订¨ 客户入住¨ 退房3、下面给出上述用例的描述:1)新增客房信息增加客房记录标记客房编号确定客房级别确定客房状态确定单价确定是否预订2)查询/修改客房信息查询客房信息修改客房信息3)客房预订增加订单编号确定预订客户姓名、性别、预订天数、预订期限等信息确定所订客房编号、级别修改客房信息4)客户入住增加客户记录确定客户姓名、性别、联系电话、身份证号码等信息确定入住客房确定是否预订修改客房信息/预订信息5)退房查询入住客房记录确定所退客房确定收款金额修改入住信息、客户信息、客房信息等二、数据库分析 1、实体属性图及实体关系图预订客房信息入住入住预订信息入住信息客户信息登记登记图2-1旅店管理信息系统实体关系图客户姓名性别联系电话身份证号码客户信息图2-2客户信息实体属性图入住编号客房编号客房级别单价入住时间性别身份证号码客户姓名客房电话入住信息图2-3入住信息实体属性图预订期限预订客户姓名性别单价是否预订客房电话客房信息图2-4客房信息实体属性图订单编号客房编号客房级别预订天数客房状态预订信息图2-5预订信息实体属性图用户编号用户名密码用户信息图2-6用户信息实体属性图2、数据表设计表2-1客房信息表字段名称数据类型长度入住编号char10客房编号char10客房级别char20客房电话char10单价integer入住时间char15客户姓名char10身份证号码char25性别char10表2-2预订信息表字段名称数据类型长度订单编号char10客房编号char10客房级别char10预订天数integer预订期限char25预订客户姓名char10性别char10表2-3客户信息表字段名称数据类型长度客户姓名char10性别char10联系电话char15身份证号码char25表2-4用户信息表字段名称数据类型长度用户编号char10用户名char10密码char10三、总体设计熟悉开发环境与界面设计:1、登录界面:2、系统主界面:根据第一周与第二周的需求,创建一个符合要求的主界面,要求主界面用菜单实现与各界面之间的连接与访问。3、要有查找界面的设计,例如:4、根据需求划分每个模块5、根据每个模块制作出静态的界面四、编码阶段根据以上的设计(数据库与界面),实现对数据信息的增加、删除、修改与查询。五、功能完善设计与系统测试1、实现对数据信息的统计、报表、打印功能的设计以及数据的备份与恢复功能。2、实现对系统的测试。实训题目二 高校教务管理信息系统的设计与规划一、需求分析教务处是高校教学业务工作及教学行政管理工作的主管机构,其主要的工作职责范围即高校教务管理的内容包括以下几个方面:1、教学研究和教学改革l 负责制订高校专业建设、课程建设和教研教改规划。l 组织专业的设置、调整的论证和申报工作。l 负责组织制订人才培养计划、教学大纲,开展人才培养模式和教学内容方法的改革研究。l 负责教改、专业建设和课程建设立项、检查、鉴定验收等管理工作。l 组织教学成果奖的申报和评选。l 协助院工会组织教师教学竞赛。l 指导和协助教材中心作好教材建设规划、教材(讲义)评奖、教材出版审查与推荐。2、招生工作l 负责人才需求预测工作,制定学院招生计划。l 负责招生网页的制作,组织招生宣传咨询和对外联系工作。l 组织招生录取工作,负责招生管理信息系统和网上录取系统的管理。l 负责保送生的选拔和录取工作。3、教务和学籍管理工作l 负责制定教学日历、排课、调课、教室调度等。l 负责选修、辅修、重修的组织工作。l 负责检查教学计划执行情况、稳定教学秩序工作。l 协助人事处作好普教教师教学计划内外理论教学工作量的审核。l 负责本、专科生的学籍管理,审查学生毕业资格,办理毕业证与学位证。l 负责新生入学准备工作和电子注册工作。l 管理校外人员旁听、进修,办理出国留学成绩审核等工作。l 负责全校有关教学物品的计划、采购、发放和管理。4、考试管理工作l 负责所有考试(考查)组织和管理,负责考试违纪的处理。l 负责做好试卷的印刷、保密工作。l 组织成绩登录,负责成绩管理及大面积统考情况的总结和成绩分析,开展考试研究改革。l 负责成绩查询和出具成绩证明。5、实现教学管理工作l 负责指定实习、课程设计、毕业论文设计等实践教学工作计划经费预算计划。l 负责实习,课程设计、毕业设计论文、社会调查与实践等事件教学活动的全程管理和研究。l 制定实践教学基地的建设规划。6、教学质量管理工作l 负责教学质量检测:教学检查、教学督导、教学质量信息收集、分析、处理、发布与反馈。l 组织教育质量评价和教学奖的评审以及系教学工作评估。l 组织课堂教学中教师到课、学生到课情况等教学常规检查和有关教学状态数据统计。l 组织有关部门认定教学事故,应提出处理建议,及时报送人事部门处理。7、综合工作l 根据上级有关部门的指示、规定、结合我院实际情况,建立健全教学管理制度,规范教学管理。l 负责学院有关教学经费的预算,计划安排和管理。二、数据库分析1、相关数据表表1:管理(系统用户)员数据表编号字段名类型宽度字段含义1name_userCHAR10用户名2passwordCHAR10密码3no_type_adminCHAR2用户权限用户名 为主键表2:学生基本信息数据表编号字段名类型宽度字段含义1NumberCHAR8学生编号2NameCHAR20学生姓名3SexCHAR2性别4data_birthDATE出生日期5TelCHAR20联系方式6political_statusCHAR20政治面貌7original_provinceCHAR20籍贯8AddressCHAR100家庭住址9NationCHAR10民族学号 为主键表3:学生学籍变动数据表编号字段名类型宽度字段含义1numberCHAR8学生编号2changeCHAR10学籍变动3new_numberCHAR8新学生编号4date_happendDATE变动日期5go_fromCHAR100转出专业6go_toCHAR100转入专业7specific_inforCHAR200备注信息学号 时间 结合 为主键表4:班级信息数据表编号字段名类型宽度字段含义1no_classCHAR6班级代码2name_classCHAR10班级名称班级代码 为主键表5:课程信息数据表编号字段名类型宽度字段含义1no_courseCHAR5课程编号2brief_name_courseCHAR10课程名概要3name_courseCHAR20课程名4CreditCHAR1学分5no_semestersCHAR1学期编号6no_type_courseCHAR1课程类型编号课程代码 为主键表6:学院信息数据表编号字段名类型宽度字段含义1no_instiCHAR2学院代码2brief_name_instiCHAR10学院简介3name_instiCHAR20学院名学院代码 为主键表7:系(专业)信息数据表编号字段名类型宽度字段含义1no_departCHAR3专业代码2brief_name_departCHAR10专业简介3Name_departCHAR20专业名系(专业)代码 为主键表8:学生基本成绩信息数据表编号字段名类型宽度字段含义1NumberCHAR8学生编号2no_courseCHAR5课程编号3ScoreCHAR6成绩4FlagCHAR1状态学号 课程号 为主键表9:重修成绩信息数据表编号字段名类型宽度字段含义1NumberCHAR8学号2no_courseCHAR5课程号3TimesCHAR2次数4ScoreCHAR6成绩学号 课程号 次数 为主键三、总体设计1、系统功能模块图教务管理信息系统成绩管理模块生成成绩单模块修改模块增删改查询打印报表增删改查询打印报表档案管理模块学生基本档案学生变动档案特殊群体用户管理模块新生管理模块增加模块删除模块班级分配模块学号分配模块二次录入模块增删改查询打印报表增删改查询打印报表增删改查询打印报表增删改查询打印报表2、系统界面设计1)管理员登录界面2)普通用户登录3)教务管理系统主界面主要要实现上述功能模块的界面设计。四、编码设计主要完成数据信息的增加、删除、修改、查询的设计。例如:¨ 单条件查询¨ 符合条件查询 如图所示:五、功能完善设计与系统测试主要实现该信息系统模块下列功能:统计、报表、打印、备份、恢复等。如图所示:实训题目三 小型BBS系统的设计与规划一、需求分析1、 基本功能,在本BBS系统中包括两类用户:普通用户、管理员。1) 普通用户具有的功能为:¨ 用户注册。¨ 分页查看所有文章及回复文章列表。¨ 查看文章及回复文章的详细内容。¨ 发表文章和回复文章。¨ 对自己发表或回复的文章可以进行修改和删除。2) 管理员具有的功能为:¨ 普通用户的所有功能。¨ 可以随意删除任意人发表的文章。¨ 用户管理功能,包括删除、修改用户权限、封人。二、数据库分析1、系统相关数据表表1:用户信息表编号字段名类型宽度字段含义1ID自动编号用户ID2NameCHAR20姓名3PasswordCHAR20密码4EmailCHAR20邮箱地址5IsAdminBOOLEAN是否管理员6DisableBOOLEAN是否会员用户ID是主键表2:文章信息表编号字段名类型宽度字段含义1ID自动编号文章编号2AuthorID数字3作者编号3PostDateDATE提交日期4TitleCHAR20文章标题5ContentCHAR100文章内容文章编号是主键表3:回复文章信息表编号字段名类型宽度字段含义1ID自动编号回复文章编号2ArticleID数字3文章编号3AuthorID数字3作者编号4PostDateDATE提交日期5TitleCHAR20文章标题6ContentCHAR100文章内容2、实体关系图(ER图)用户文章回复文章发表发表回复三、总体设计与详细设计1、系统功能模块划分: ¨ 数据库模块¨ 用户注册模块¨ 用户登录模块¨ 信息显示模块¨ 信息修改编辑模块¨ 用户管理模块2、如图所示,系统流程图:用户注册模块用户登录模块用户管理模块信息显示模块信息修改编辑数据库连接模块四、编码阶段1、数据库连接池的实现DBConnPool.javapackage testdb;import java.sql.*;import java.util.*;/*连接池类 能够根据要求创建新连接,直到最大连接数*/public class DBConnPoolprivate int inUse=0;/空连接private Vector connections = new Vector();private String poolname; /连接池名称private String dbid; /数据库标识private String drivername; /驱动程序名private String username; /数据库帐号private String passwd; /数据库密码private int maxconn; /最大连接数/*构造函数*public DBConnPool(String poolname,String drivername,String dbid,String username,String passwd,int maxconn)this.poolname=poolname;this.dbid=dbid;this.drivername=drivername;this.username=username;this.passwd=passwd;this.maxconn=maxconn;/*释放连接*/将连接返回给连接池public synchronized void releaseConnection(Connection con)/将指定连接加入到向量末尾connections.addElement(con);/连接数减一inUse-;/*创建新的连接*/创建新的连接private Connection newConnection()Connection con = null;try/加载驱动程序Class.forName(drivername);/建立连接con = DriverManager.getConnection(dbid,username,passwd);catch(Exception e)e.printStackTrace();return null;/返回该连接return con;/*关闭连接*/关闭该连接public synchronized void closeConn()Enumeration allConnections = connections.elements();while(allConnections.hasMoreElements()Connection con = (Connection)allConnections.nextElement();trycon.close();catch(SQLException e)e.printStackTrace();connections.removeAllElements();/*从连接池取连接*/从连接池中得到一个连接public synchronized Connection getConnection()Connection con = null;if(connections.size()>0)/获取连接列表中获取第一个连接如果此时有空闲连接/那么就连接向量的第一个连接对象返回/并将这个对象从队列中删除con = (Connection)connections.elementAt(0);connections.removeElementAt(0);/如果此连接已关闭,则继续获取/if(con.isClosed()/con = getConnection();/如果实际使用的连接小于最大连接数,就新创建一个连接else if(maxconn = 0|inUse<maxconn)con = newConnection();if(con !=null)/连接数+inUse+;/返回一个连接return con;/*/一个数据库连接池应该具备以下功能:/1 连接池能够存储N个有效连接/2 能够取回使用过的连接/3 如果链接池中没有可用连接,而此时使用中的连接数小于最大连接数/ 那么就创建新的连接提供给应用程序/这个连接池类的构造函数的参数由六个变量组成,分别为连接池名、数据库标识/驱动程序名、数据库用户名、数据库密码以及最大连接数。这些参数将被保存起来/以供创建新连接的时候使用。类中有一个向量CONNECTIOINS用于存储连接对象,他所/存储的只是空闲的连接。/外部程序通过GETCONNECTION()方法得到连接,如果此时有空闲的连接/那么就将连接向量的第一个连接对象返回,并将这个对象从队列/中删除。如果此时没有空闲连接但是连接数又没有达到连接数上限/那么就使用NEWCONNECTION()创建一个新的连接返回给外部程序。/如果连接数已达上限,那么就返回空指针,要求外部程序等待。/在将连接对象交给外部程序之前,连接池还要通过ISCLOSE()方法判断/该连接是否已经中断,如果是的话,还应继续调用GETCONNECTION()方法/得到一个可用的连接。在将一个可用连接提供给外部程序后,要将使用/中的连接数INUSE加1。/外部程序使用连接后,一定要注意及时调用RELEASECONNECTION()方法将/连接返回给连接池,连接池类将这个连接对象加入到连接向量末尾,并/将使用的连接数减1。这样一来,每次得到的连接对象都是在连接向量中闲置/时间最长的连接,从而减小了因为闲置时间过长导致连接被中断的可能。DBConnManager.javapackage testdb;import testdb.*;import java.sql.*;import java.util.*;/连接池管理类,可以管理多个数据库连接池public class DBConnManager/连接池名列表private Vector poolnames = new Vector();/驱动程序名列表private Vector drivernames = new Vector();/数据库标识表private Vector dbids = new Vector();/用户名列表private Vector usernames = new Vector();/密码列表private Vector passwds = new Vector();/最大连接数列表private Vector maxconns = new Vector();/连接池队列private Hashtable connPools = new Hashtable();/*构造函数*public DBConnManager()/添加mysql数据库的连接信息poolnames.addElement("mysql");drivernames.addElement("org.gjt.mm.mysql.Driver");dbids.addElement("jdbc:mysql:/localhost/testmysql");usernames.addElement("admin");passwds.addElement("");maxconns.addElement("10");/添加access数据库的连接信息poolnames.addElement("access");drivernames.addElement("sun.jdbc.odbc.JdbcOdbcDriver");dbids.addElement("jdbc:odbc:bbs");usernames.addElement("");passwds.addElement("");maxconns.addElement("5");/创建连接池createPools();/将连接返回给由指定的连接池/*public void releaseConnection(String name,Connection con)DBConnPool pool = (DBConnPool)connPools.get(name);if(pool!=null)pool.releaseConnection(con);/*/得到一个指定连接池中的连接public Connection getConnection(String name)DBConnPool pool = (DBConnPool)connPools.get(name);if(pool!=null)return pool.getConnection();return null;/*/关闭所有连接public synchronized void closeConns()Enumeration allPools = connPools.elements();while(allPools.hasMoreElements()DBConnPool pool = (DBConnPool)allPools.nextElement();pool.closeConn();/*/创建连接池private void createPools()for(int i=0;i<poolnames.size();i+)String poolname = poolnames.elementAt(i).toString();String drivername = drivernames.elementAt(i).toString();String dbid = dbids.elementAt(i).toString();String username = usernames.elementAt(i).toString();String passwd = passwds.elementAt(i).toString();int maxconn=0;trymaxconn = Integer.parseInt(maxconns.elementAt(i).toString();catch(NumberFormatException e)e.printStackTrace();DBConnPool pool = new DBConnPool(poolname,drivername,dbid,username,passwd,maxconn);connPools.put(poolname,pool);/在此程序中,连接池管理类中的CONNPOOLS变量保存了所有的连接池,这些连接池可以连接着/不同的数据库,也可以使用不同的配置信息连接相同的数据库。testpool.jsp<% page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Transitional/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http:/www.w3.org/1999/xhtml"><head><jsp:useBean id="connManager" scope="application" class="testdb.DBConnManager" /><% Connection con1=connManager.getConnection("access");if(con1=null) %>对不起,现在数据库忙,请稍候再试 <% Statement stmt1 = con1.createStatement(); %><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>Untitled Document</title></head><body><table><% ResultSet rs =stmt1.executeQuery("sel