项目描述:

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

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>

.......

JavaWeb应用系统开发实训任务(一)的更多相关文章

  1. Android系统开发实务实训

    实训项目 :               Android系统开发实务实训                           项目成品名称:         绝地坦克                 ...

  2. 最老程序猿创业开发实训1---Android应用架构之MVC

    我们都知道Android中基本组件是Activity,每一个界面都是一个Activity,自从2.3版本号開始.又添加了Fragment组件,提供了适应于各种屏幕方法.可是因为Android系统仅仅是 ...

  3. 网络project1101班2014-2015学年《网络软件开发实训》期末考试

    注意事项: *考试时间:2014年11月20日 第5.6节. *在计算机D盘,新建目录.并命名"学号+姓名".如:(称为考生目录.下同).考试中全部文件必须保存在此目录下. *启动 ...

  4. 小型APP系统开发与应用项目实训

    实训项目 :             小型APP系统开发与应用项目实训                           项目成品名称:          果乐多商城               项 ...

  5. 软件工程实训项目案例--Android移动应用开发

    实训过程 角色分工 1.项目经理:负责项目的组织实施,制定项目计划,并进行跟踪管理 2.开发人员:对项目经理及项目负责 3.需求分析员:负责系统的需求获取和分析,并协助设计人员进行系统设计 4.系统设 ...

  6. c++课程实训 银行储蓄系统

    基本要求:定义了用户类(User)和银行类(Bank),用成员函数实现各种功能,多文件组织程序.能用文本文件存取数据(如演示样例中给出的技术): 拓展方向: 序号 加分项目 细       则 1 改 ...

  7. Android实训案例(九)——答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程

    Android实训案例(九)--答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程 项目也是偷师的,决心研究一下数据库.所以写的还是很详细的,各位看官,耐着性子看完,实现结果不重要 ...

  8. jeecms系统使用介绍——通过二次开发实现对word、pdf、txt等上传附件的全文检索

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76912307 本文出自[我是干勾鱼的博客] 之前在文章<基于Java的门户 ...

  9. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

随机推荐

  1. C#操作 Access 2013(.accdb)的方法

    使用的Microsoft.Jet.OLEDB.4.0,的方法并不能连接最新的Access 存储文件,而且Microsoft.Jet.OLEDB.4.0不能使用x64的方式生成,而且使用这个数据库引擎效 ...

  2. LeetCode 215. 数组中的第K个最大元素(Kth Largest Element in an Array)

    题目描述 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 ...

  3. LeetCode 160. 相交链表(Intersection of Two Linked Lists)

    题目描述 编写一个程序,找到两个单链表相交的起始节点. 例如,下面的两个链表: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3 在节点 c1 开始相交. 注意: ...

  4. 之前有面试到两个日期的大小比较方式,现在整理一下几种方法。   例子:   String beginTime=new String("2017-06-09 10:22:22");     String endTime=new String("2017-05-08 11:22:22");  1  直接用Date自带方法before()和after()比较 SimpleDateFormat d

    各种数据类型(日期/时间.integer.floating point和numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成指定的数据类型.下面列出了这些函数,它们都遵循一个公共的调用 ...

  5. Qt DLL总结【一】-链接库预备知识

    1.链接库概念 静态链接库和动态链接库介绍 我们可以创建一种文件里面包含了很多函数和变量的目标代码,链接的时候只要把这个文件指示给链接程序就自动地从文件中查找符合要求的函数和变量进行链接,整个查找过程 ...

  6. LC 583. Delete Operation for Two Strings

    Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 t ...

  7. Sqlite轻量级数据库

     SQLite,是一款轻量型的数据库,是遵守ACID(原子性.一致性.隔离性.持久性)的关联式数据库管理系统,多用于嵌入式开发中. SQLite的数据类型:Typelessness(无类型), 可以保 ...

  8. HTTP 与 HTTPS协议

    HTTP 协议 通讯协议:服务器和客户端进行数据交互的形式 HTTP 工作原理:HTTP 协议工作于客户端-服务端架构为上.浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 Web 服 ...

  9. Myeclipse 启动tomcat项目报Out of memory: java heap space

    问题: 在Myeclipse中启动tomcat,程序启动过程中报内存不足,java.lang.OutOfMemoryError: Java heap space 从错误可以看出是堆内存太小,需要配置j ...

  10. Vim的强大配置文件

    我的vim配置主要有以下优点: 1.按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按“F8”可进行C.C++代码的调试 2.自动插入文件头 ,新建C.C++源文件时自动插入表 ...