项目描述:

随着家长对孩子教育的日渐重视,社区幼儿学校在国内逐渐兴起,对社区幼儿学校的信息化管理成为迫切需求。社区幼儿学校管理系统需要实现以下功能:

1)  教师管理:实现对教师信息的查询、删除、增加(姓名、所教课程)

2)  家长管理:实现对家长信息的查询、删除、增加(姓名、电话、地址)

3)  幼儿管理:实现对幼儿信息的查询、删除、增加(姓名、生日、照片)

4)  上课管理:实现对上课信息的查询、增加(上课时间、内容、效果)

请根据上述项目背景描述进行上机操作,完成Web应用系统的开发任务。

任务一                         

    在数据库管理系统MySql中创建社区幼儿学校管理系统的数据库db_ks,并按照以下数据库设计创建出所有的数据库表。

社区幼儿医院管理系统的数据库设计如表1-1至1-6所示:

 

表1-1 用户表t_user

列名

类型

是否主键

允许

为空

是否

自增长

描述

id

int

用户id

role

varchar(45)

角色(admin系统管理员、parents家长)

name

varchar(45)

用户名

pwd

varchar(45)

密码

tel

varchar(45)

电话

address

varchar(256)

地址

 

表1-2 教师表t_teacher

列名

类型

是否主键

 

允许

为空

是否

自增长

描述

id

int

 

教师id

name

varchar(45)

 

教师名

 

表1-3 课程表t_course

列名

类型

是否主键

允许

为空

是否

自增长

描述

id

int

课程id

name

varchar(45)

课程名

desc

varchar(256)

课程描述

 

表1-4 教师课程关系表t_teacher_course

列名

类型

是否主键

允许

为空

是否

自增长

描述

teacherId

int

教师id

courseId

int

课程id

 

表1-5 幼儿表t_kid

列名

类型

是否主键

允许

为空

是否

自增长

描述

id

int

幼儿id

name

varchar(45)

幼儿名

birthdate

varchar(45)

生日

photo

varchar(128)

照片

parentsId

int

家长id(t_user表主键)

 

表1-6 上课表t_teaching

列名

类型

是否主键

允许

为空

是否

自增长

描述

id

int

用户id

kidId

int

幼儿Id

teacherId

int

教师Id

teachDate

varchar(45)

上课时间

content

text

上课内容

effect

text

上课效果

        任务一的功能是建立数据库表,只要按照表中的信息来建立就可以了。

任务二

项目结构


实现用户登录功能的开发任务,在页面输入用户名、密码、验证码后,点击【登录】按钮,能自动提交用户登录验证请求,验证成功后自动跳转到教师管理页面

1 使用Eclipse新建一个Dynamic Web Project 项目,项目命名为KidSchool

操作说明:

2在项目源码web目录下的用户登录页面index.jsp,实现用户登录页面的jsp代码在项目源码web目录下添加样式表文件styles.css,web目录下新建一个inc目录,并在inc目录下添加页头文件header.inc和页脚文件footer.inc

操作说明:

1)在右侧项目资源视图中,选择web目录的默认登录页面index.jsp,编写实现该页面的JSP代码

2)在右侧项目资源视图中,选择web目录,选择右键菜单New,选择StyleSheet创建样式表文件styles.css,再选择File创建普通文件header.inc和footer.inc,编写以上新创建文件的代码

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>登录页面</title>
  <link href="styles.css" rel="stylesheet"/>
</head>
<body>
<div>
  <div id="header">
    <h1>社区幼稚园管理系统</h1>
  </div>
  <div id="main">
    <form action="LoginServlet" method="post">
      <table>
        <tr>
          <td>姓名</td>
          <td><input name="username" /></td>
        </tr>
        <tr>
          <td>密码</td>
          <td><input  type="password" name="pwd"/></td>
        </tr>
        <tr>
          <td>验证码</td>
          <td><input name="usercode" /></td>
        </tr>
        <tr>
          <td>点击刷新</td>
          <!-- 为了避免IE的缓存bug  需要每次请求带上不一样的参数 这个参数可以没有任何意义  关键是要不一样 -->
          <td><img src="CheckCode"   onclick="this.src='CheckCode?rand='+Math.random()"/></td><!-- /在html和转发Dispatcher里面的含义不同  前者表示服务器根目录  8080:/   后者表示当前应用根目录 8080/ph/ -->
        </tr>
        <tr>
          <td></td>
          <td><input  type="submit" value="登录" /> <input type="reset" value="重置"/></td>
        </tr>
      </table>

    </form>
    <h4 align="center" style="color:red"><%=request.getAttribute("msg")==null?"":request.getAttribute("msg") %>
      <%=request.getParameter("para")==null?"":request.getParameter("para") %></h4>
  </div>
  <div id="footer">
    <%@ include  file="inc/footer.inc"%>
  </div>
</div>
</body>
</html>

style.css

/* CSS Document */
/*
	对于CSS来说  每一个元素默认的margin和padding就是0px。但是不同的浏览器会有一个默认的浏览器样式修改默认的margin padding。所以在使用自定义样式编程前加上  *{ }重新设置margin和padding为0px,覆盖浏览器样式使得各个浏览器下统一。
*/
*{
    margin:0px;
    padding:0px;
    font-weight: bold;
}
/*a {*/
/*color:black;*/
/*text-decoration: none;*/
/*}*/

a:link,
a:visited     {
    color:#FF0000;
    text-decoration:underline;
}
a:hover,
a:active    {
    color: #5cffeb;
    text-decoration:none;
}
/*
	ID选择器   以#开始  用来匹配元素的id值
*/
#header{
    height:160px;
    background-color:#0033FF;
    position:relative;
}

/*后代选择器  在多个选择器之间加入空格表示后代选择器 用来匹配元素的包含关系
	标签选择器  直接使用标签本身来匹配元素
*/

#header h1{
    color:#FFFF00;
    font-size:48px;
    padding-top:40px;
    width:300px;/*  通过设置margin的左右为auto可以实现居中,前提是被居中元素指定宽度*/
    margin:0px auto;
}

/*   #header  a:first-child   #header 里面所有是一个子元素的链接
	#header > a:first-child  #header的直接子元素中的第一个a
*/

#header > a:first-child{
    /*float:right;*/

    position:absolute;
    right:15px;
    top:10px;
}
/*
	所有元素默认的postion是static,其特点按照在文档中的先后顺序进行排列
	position:absolute  绝对布局,其特点相对于最近一个已定位(absolute/relative )父元素进行定位,如果没有这样的父元素就相对于body。通过top bottom left right控制
	position:relative  相对布局  其特点是相对于元素本来的位置进行位移  。通过top bottom left right控制,如果吗,没有位移量,其显示还是在原来的位置,但是性质已经变成定位元素。
*/



#header .menu{
    position:absolute;
    bottom:5px;
}

#header .menu li{
    float: left;
    margin-left:15px;
    list-style-type:none
}
#main{
    min-height:500px;
    background-color:pink;
}



#main table ,#main h4{
    width:360px;
    margin:0px auto;
}

.minWidth{
    min-width:240px;
}

#main table{
    padding-top:60px;
}
#main table .result{
    background-color: white;
    text-align: center;
}
#main input,#main img[src='CheckCode']{
    width:150px;
    height:24px;
}

#main textarea{
    width: 150px;
    height: 96px;
}
/*
	每个id选择器算100 类 伪类算10  标签选择器算1  将所有的值相加就是优先级
*/
#main tr:last-child input{
    width:auto;
    padding:0 10px;
}


#footer{
    background-color:#0033FF;
    height:80px;
}


#footer p{
    color:red;
    font-size:20px;
    padding-top:40px;
    width:800px;/*  通过设置margin的左右为auto可以实现居中,前提是被居中元素指定宽度*/
    margin:0px auto;
}

inc目录下的header.inc和footer.inc

  header.inc

<%@ page pageEncoding="UTF-8"%>
    <a href="QuitServlet">退出</a>
    <a href="">修改密码</a>
    <h1>社区幼稚园</h1>
    <ul class="menu">
    <li><a href="teacherSearch.jsp">教师管理</a></li>
    <li><a href="">家长管理</a></li>
    <li><a href="">幼儿管理</a></li>
    <li><a href="courseAdd">课程管理</a></li>
</ul>

footer.inc

<%@ page pageEncoding="UTF-8"%>
<p>作者:Black_YeJing 单位:XXXXXXX 邮箱:2147807609@qq.com</p>

 .......

项目描述:

随着家长对孩子教育的日渐重视,社区幼儿学校在国内逐渐兴起,对社区幼儿学校的信息化管理成为迫切需求。社区幼儿学校管理系统需要实现以下功能:

1)  教师管理:实现对教师信息的查询、删除、增加(姓名、所教课程)

2)  家长管理:实现对家长信息的查询、删除、增加(姓名、电话、地址)

3)  幼儿管理:实现对幼儿信息的查询、删除、增加(姓名、生日、照片)

4)  上课管理:实现对上课信息的查询、增加(上课时间、内容、效果)

请根据上述项目背景描述进行上机操作,完成Web应用系统的开发任务。

任务一                         

    在数据库管理系统MySql中创建社区幼儿学校管理系统的数据库db_ks,并按照以下数据库设计创建出所有的数据库表。

社区幼儿医院管理系统的数据库设计如表1-1至1-6所示:

 

表1-1 用户表t_user

列名

类型

是否主键

允许

为空

是否

自增长

描述

id

int

用户id

role

varchar(45)

角色(admin系统管理员、parents家长)

name

varchar(45)

用户名

pwd

varchar(45)

密码

tel

varchar(45)

电话

address

varchar(256)

地址

 

表1-2 教师表t_teacher

列名

类型

是否主键

 

允许

为空

是否

自增长

描述

id

int

 

教师id

name

varchar(45)

 

教师名

 

表1-3 课程表t_course

列名

类型

是否主键

允许

为空

是否

自增长

描述

id

int

课程id

name

varchar(45)

课程名

desc

varchar(256)

课程描述

 

表1-4 教师课程关系表t_teacher_course

列名

类型

是否主键

允许

为空

是否

自增长

描述

teacherId

int

教师id

courseId

int

课程id

 

表1-5 幼儿表t_kid

列名

类型

是否主键

允许

为空

是否

自增长

描述

id

int

幼儿id

name

varchar(45)

幼儿名

birthdate

varchar(45)

生日

photo

varchar(128)

照片

parentsId

int

家长id(t_user表主键)

 

表1-6 上课表t_teaching

列名

类型

是否主键

允许

为空

是否

自增长

描述

id

int

用户id

kidId

int

幼儿Id

teacherId

int

教师Id

teachDate

varchar(45)

上课时间

content

text

上课内容

effect

text

上课效果

        任务一的功能是建立数据库表,只要按照表中的信息来建立就可以了。

任务二

项目结构


实现用户登录功能的开发任务,在页面输入用户名、密码、验证码后,点击【登录】按钮,能自动提交用户登录验证请求,验证成功后自动跳转到教师管理页面

1 使用Eclipse新建一个Dynamic Web Project 项目,项目命名为KidSchool

操作说明:

2在项目源码web目录下的用户登录页面index.jsp,实现用户登录页面的jsp代码在项目源码web目录下添加样式表文件styles.css,web目录下新建一个inc目录,并在inc目录下添加页头文件header.inc和页脚文件footer.inc

操作说明:

1)在右侧项目资源视图中,选择web目录的默认登录页面index.jsp,编写实现该页面的JSP代码

2)在右侧项目资源视图中,选择web目录,选择右键菜单New,选择StyleSheet创建样式表文件styles.css,再选择File创建普通文件header.inc和footer.inc,编写以上新创建文件的代码

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>登录页面</title>
  <link href="styles.css" rel="stylesheet"/>
</head>
<body>
<div>
  <div id="header">
    <h1>社区幼稚园管理系统</h1>
  </div>
  <div id="main">
    <form action="LoginServlet" method="post">
      <table>
        <tr>
          <td>姓名</td>
          <td><input name="username" /></td>
        </tr>
        <tr>
          <td>密码</td>
          <td><input  type="password" name="pwd"/></td>
        </tr>
        <tr>
          <td>验证码</td>
          <td><input name="usercode" /></td>
        </tr>
        <tr>
          <td>点击刷新</td>
          <!-- 为了避免IE的缓存bug  需要每次请求带上不一样的参数 这个参数可以没有任何意义  关键是要不一样 -->
          <td><img src="CheckCode"   onclick="this.src='CheckCode?rand='+Math.random()"/></td><!-- /在html和转发Dispatcher里面的含义不同  前者表示服务器根目录  8080:/   后者表示当前应用根目录 8080/ph/ -->
        </tr>
        <tr>
          <td></td>
          <td><input  type="submit" value="登录" /> <input type="reset" value="重置"/></td>
        </tr>
      </table>

    </form>
    <h4 align="center" style="color:red"><%=request.getAttribute("msg")==null?"":request.getAttribute("msg") %>
      <%=request.getParameter("para")==null?"":request.getParameter("para") %></h4>
  </div>
  <div id="footer">
    <%@ include  file="inc/footer.inc"%>
  </div>
</div>
</body>
</html>

style.css

/* CSS Document */
/*
	对于CSS来说  每一个元素默认的margin和padding就是0px。但是不同的浏览器会有一个默认的浏览器样式修改默认的margin padding。所以在使用自定义样式编程前加上  *{ }重新设置margin和padding为0px,覆盖浏览器样式使得各个浏览器下统一。
*/
*{
    margin:0px;
    padding:0px;
    font-weight: bold;
}
/*a {*/
/*color:black;*/
/*text-decoration: none;*/
/*}*/

a:link,
a:visited     {
    color:#FF0000;
    text-decoration:underline;
}
a:hover,
a:active    {
    color: #5cffeb;
    text-decoration:none;
}
/*
	ID选择器   以#开始  用来匹配元素的id值
*/
#header{
    height:160px;
    background-color:#0033FF;
    position:relative;
}

/*后代选择器  在多个选择器之间加入空格表示后代选择器 用来匹配元素的包含关系
	标签选择器  直接使用标签本身来匹配元素
*/

#header h1{
    color:#FFFF00;
    font-size:48px;
    padding-top:40px;
    width:300px;/*  通过设置margin的左右为auto可以实现居中,前提是被居中元素指定宽度*/
    margin:0px auto;
}

/*   #header  a:first-child   #header 里面所有是一个子元素的链接
	#header > a:first-child  #header的直接子元素中的第一个a
*/

#header > a:first-child{
    /*float:right;*/

    position:absolute;
    right:15px;
    top:10px;
}
/*
	所有元素默认的postion是static,其特点按照在文档中的先后顺序进行排列
	position:absolute  绝对布局,其特点相对于最近一个已定位(absolute/relative )父元素进行定位,如果没有这样的父元素就相对于body。通过top bottom left right控制
	position:relative  相对布局  其特点是相对于元素本来的位置进行位移  。通过top bottom left right控制,如果吗,没有位移量,其显示还是在原来的位置,但是性质已经变成定位元素。
*/



#header .menu{
    position:absolute;
    bottom:5px;
}

#header .menu li{
    float: left;
    margin-left:15px;
    list-style-type:none
}
#main{
    min-height:500px;
    background-color:pink;
}



#main table ,#main h4{
    width:360px;
    margin:0px auto;
}

.minWidth{
    min-width:240px;
}

#main table{
    padding-top:60px;
}
#main table .result{
    background-color: white;
    text-align: center;
}
#main input,#main img[src='CheckCode']{
    width:150px;
    height:24px;
}

#main textarea{
    width: 150px;
    height: 96px;
}
/*
	每个id选择器算100 类 伪类算10  标签选择器算1  将所有的值相加就是优先级
*/
#main tr:last-child input{
    width:auto;
    padding:0 10px;
}


#footer{
    background-color:#0033FF;
    height:80px;
}


#footer p{
    color:red;
    font-size:20px;
    padding-top:40px;
    width:800px;/*  通过设置margin的左右为auto可以实现居中,前提是被居中元素指定宽度*/
    margin:0px auto;
}

inc目录下的header.inc和footer.inc

  header.inc

<%@ page pageEncoding="UTF-8"%>
    <a href="QuitServlet">退出</a>
    <a href="">修改密码</a>
    <h1>社区幼稚园</h1>
    <ul class="menu">
    <li><a href="teacherSearch.jsp">教师管理</a></li>
    <li><a href="">家长管理</a></li>
    <li><a href="">幼儿管理</a></li>
    <li><a href="courseAdd">课程管理</a></li>
</ul>

footer.inc

<%@ page pageEncoding="UTF-8"%>
<p>作者:Black_YeJing 单位:XXXXXXX 邮箱:2147807609@qq.com</p>

 .......