资源描述
Java Web课程综合训练
小小农场
2012/4/24
姓名:肖宁宁 班级:软件01 学号:2010161004
姓名:王梦雅 班级:软件04 学号:2010161049
姓名:段露 班级:软件04 学号:2010161047
姓名:姚伟 班级:软件04 学号:2010038046
联系电话:18783839450
小小农场信息管理系统
(一) 正文内容
(1) 页面布局解释
系统功能结构图如下:
小小农场信息 管 理 系 统
政府工作报告
农民意见管理
通知管理
药店信息管理
商店信息管理
户主信息管理
用户信息管理
数据库表设计如下:
表3-1 政府工作报告government
中文名称
字段名称
数据类型
主键
非空
编号
number
自动编号
Yes
No
标题
title
文本
No
Yes
报告内容
content
文本
No
Yes
发布时间
time
文本
No
No
发布者
writer
文本
No
No
表3-2 农民意见通知ideaOfFarmer
名称
字段名称
数据类型
主键
非空
编号
number
自动编号
Yes
No
信息内容
content
文本
No
Yes
发布时间
time
文本
No
Yes
表3-3 通知管理notice
名称
字段名称
数据类型
主键
非空
编号
number
自动编号
Yes
No
主题
title
文本
No
Yes
具体内容
content
文本
No
Yes
通知日期
time
文本
No
Yes
作者
writer
文本
No
Yes
表3-4 药店信息管理dragstore
名称
字段名称
数据类型
主键
非空
编号
number
自动编号
Yes
No
药品名
nameDrag
文本
No
Yes
药品价格
priceDrag
数字
No
Yes
剩余药品数
amountDrag
数字
No
Yes
状态
state
是/否
No
Yes
保质期
timeValue
数字
No
Yes
说明
explanation
文本
No
Yes
表3-5 商店信息管理grocer
名称
字段名称
数据类型
主键
非空
编号
number
自动编号
Yes
No
商品名
nameGroce
文本
No
Yes
商品价格
priceGroce
数字
No
Yes
剩余商品数
amountGroce
数字
No
Yes
状态
state
是/否
No
Yes
保质期
timeValue
数字
No
Yes
表3-6 户主信息family
名称
字段名称
数据类型
主键
非空
户名
famiyName
文本
Yes
No
总工资
total
数字
No
Yes
表3-7 农民信息farmer
名称
字段名称
数据类型
主键
非空
身份证号码
memberID
文本
Yes
No
姓名
username
数字
No
Yes
密码
password
文本
No
Yes
家庭成员名
memberName
文本
No
Yes
性别
gender
是/否
No
Yes
年龄
memberAge
数字
No
Yes
职业
memberWork
文本
No
Yes
户名
famiyName
文本
No
Yes
(2) 页面之间关系图
C
IsLoginServlet.java
LoginServlet.java PageServlet.java
RegisterServlet.java
GetDragstore.java
GetGrocer.java
GeFarmer.java
GetGovernment.java
GetIdeaOfFarmer.java
GetNotice.java
GovernmentServlet.java
IdeaServlet.java
NoteSelectServlet.java
实例化
M
DBHelper.java
dragstore.java
grocer.java
family.java
farmer.java
government.java
ideaOfFarmer.java
notice.java
test.java
V
entry.jsp
regester.jsp
index.jsp
dragstore.jsp
grocery.jsp
family.jsp
government.jsp
government.jsp
ideaOfFarmer.jsp
notice.jsp
商店
药店
户主信息
通知
农民意见
政府工作汇报
登陆失败
首页欢迎界面
登陆
注册
用户
(3)控制层程序和模型层程序代码的解释
控制层主要采用Servlet来实现,分别用来控制实现登陆,注册,信息筛选,通知,户主信息,政府工作报告,农民意见,药店,商店,页面跳转等功能,模型层则主要采用javaBean来实现通知,户主信息,政府工作报告,农民意见,药店,商店,以及数据库与测试的功能。
(1)登陆界面:
控制层主要代码及其解释为
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ArrayList<farmer> listFarmer=GetFarmer.getFarmer();//建立一个用来储存farmer对象动态数组
ListIterator<farmer> iterator=listFarmer.listIterator();//创建一个迭代器来访问容器
HttpSession session=request.getSession();
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String userName=new String(request.getParameter("userName").getBytes("iso-8859-1"),"utf-8");
String password=new String(request.getParameter("passWord").getBytes("iso-8859-1"),"utf-8");
if(isLogin.isLogin(userName, password)){//判断登陆的用户名及密码是否正确
farmer farmer1=new farmer();
farmer1.setUserName(userName);
farmer1.setPassword(password);
session.setAttribute("userName", userName);
session.setAttribute("password", password);
response.sendRedirect("http://localhost:8080/VilllageWebSite/index.jsp");//将页面重定位到首页上
}
else
response.sendRedirect("http://localhost:8080/VilllageWebSite/entry.jsp");//在登陆失败的情况下返回登陆页面重新登陆
}
isLoginServlet代码如下,它主要用于判断用户登陆时是否正确。
public class isLogin {
public static boolean isLogin(String userName,String password){
ArrayList<farmer> listFarmer=GetFarmer.getFarmer();
ListIterator<farmer> iterator=listFarmer.listIterator();
while(iterator.hasNext()){
farmer farmer1=iterator.next();
if(userName.equals(farmer1.getUserName())&&password.equals(farmer1.getPassword())){
return true;
}
}
return false;
}
}
(2)用户注册:RegisterServlet.java主要代码如下
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
farmer farmer1=new farmer();//创建一个farmer对象
String userName=new String(request.getParameter("userName").getBytes("iso-8859-1"),"utf-8");
//获取用户名
farmer1.setUserName(userName);//设置用户名
String memberName=new String(request.getParameter("memberName").getBytes("iso-8859-1"),"utf-8");
获取家庭成员名
farmer1.setMemberName(memberName);// 设置家庭成员名
String memberID=new String(request.getParameter("memberID").getBytes("iso-8859-1"),"utf-8");
// 获取身份证号码
farmer1.setMemberID(memberID);// 设置身份证号码
String password=new String(request.getParameter("password").getBytes("iso-8859-1"),"utf-8");
//获取密码
farmer1.setPassword(password);//设置密码
long memberAge=Long.valueOf(new String(request.getParameter("memberAge").getBytes("iso-8859-1"),"utf-8"));
//获取年龄
farmer1.setMemberAge(memberAge);//设置年龄
boolean gender=Boolean.valueOf(new String(request.getParameter("gender").getBytes("iso-8859-1"),"utf-8"));//获取性别
farmer1.setGender(gender);//设置性别
String memberWork=new String(request.getParameter("memberWork").getBytes("iso-8859-1"),"utf-8");
//获取farmer的职业
farmer1.setMemberWork(memberWork);//设置farmer的职业
String familyName=new String(request.getParameter("familyName").getBytes("iso-8859-1"),"utf-8");
//获取farmer的户名
farmer1.setFamilyName(familyName);//设置farmer的户名
DBHelper db=new DBHelper("C:\\Users\\xiao\\Documents\\Village.mdb");创建数据库对象
db.getCon();
db.insert("farmer", farmer1);//插入farmer1
db.colseCon();
response.sendRedirect("http://localhost:8080/VilllageWebSite/index.jsp");//重定向到首页
}
(3)通知(在通知中添加了信息选择功能主要用NoteSelectServlet实现):
Notice.java主要代码如下
public class notice {
private int number;
private String title;
private String content;
private String time;
private String writer;
public notice(){
number=0;
title=null;
content=null;
time=null;
writer=null;
}
public String toString() {
return "notice [number=" + number + ", title=" + title + ", content="
+ content + ", time=" + time + ", writer=" + writer + "]";
}
}
notice.java中有4个基本成员,分别用来表示通知中的编码,标题,内容以及作者而相应的控制代码为
public class GetNotice {
public static ArrayList<notice> getNotice(){
ArrayList<notice> noticelist=new ArrayList<notice>();//创建一个动态数组来储存通知列表信息
DBHelper db=new DBHelper("D:\\Village.mdb");
db.getCon();
noticelist=db.getNotice();
db.colseCon();
return noticelist;
}}
信息筛选NoteSelectServlet主要代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String str=new String(request.getParameter("notice").getBytes("iso-8859-1"),"utf-8");//获取notice对象的信息
HttpSession session=request.getSession();//创建一个session对象
session.setAttribute("noticeSelect", str);//设置信息筛选的内容
System.out.println(str);//输出相应的通知信息
response.sendRedirect("http://localhost:8080/VilllageWebSite/index.jsp");//重定向到首页}
(4)户主信息:
family.java
public class family {
private String familyName;
private long totleWage;
public family(){
familyName=null;
totleWage=0;}}
farmer.java
public class farmer {
private String memberID;
private String userName;
private String password;
private String memberName;
private boolean gender;
private long memberAge;
private String memberWork;
private String familyName;
}
family.java 和farmer.java都分别有2个和8个基本数据成员,分别用来表示户主及其家庭成员的基本信息
控制部分GetFarmer.java的主要代码如下
public class GetFarmer {
public static ArrayList<farmer> getFarmer(){
ArrayList<farmer> listFarmer=new ArrayList<farmer>();
DBHelper db=new DBHelper("D:\\Village.mdb");//创建一个数据库对象
db.getCon();
listFarmer=db.getFarmer();
db.colseCon();
return listFarmer;
}
}
主要用来从数据库中获得相应得户主信息
(5)政府工作报告:模型层代码government.java的主要代码如下
public class government {
private int number;
private String title;
private String content;
private Date time;
private String writer;
public government(){
number=0;
title=null;
content=null;
time=null;
writer=null;}
}
government.java中主要设置了五个基本数据成员number,title,content,time,writer,分别用来表示政府工作报告中编号,报告标题,报告内容,发布时间以及发布者
控制层主要用GovernmentServlet.java 来实现,其主要代码如下
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");//设置编码格式
response.setCharacterEncoding("utf-8");
String str=new String(request.getParameter("government").getBytes("iso-8859-1"),"utf-8");//获得政府工作报告的内容
HttpSession session=request.getSession();
session.setAttribute("governmentSelect", str);//设置政府工作报告的内容
System.out.println(str);
response.sendRedirect("http://localhost:8080/VilllageWebSite/index.jsp");//重定向到首页
}
(6)农民意见:模型层代码主要用ideaOfFarmer.java来实现,其主要代码如下:
public class ideaOfFarmer {
private int number;
private String content;
private Date time;
public ideaOfFarmer(){
number=0;
content=null;
time=null;
}}
其中ideaOfFarmer.java中主要有三个数据成员,number表示编号,time表示意见提出日期,content表示意见的主要内容
控制层主要用ideaServlet.java和GetIdeaOfFarme.java实现,其中GetIdeaOfFarme.java主要代码如下:
public class GetIdeaOfFarmer {
public static ArrayList<ideaOfFarmer> getIdeaOfFarmer(){
ArrayList<ideaOfFarmer> idealist=new ArrayList<ideaOfFarmer>();
DBHelper db=new DBHelper("D:\\Village.mdb");//创建一个DBHelper对象 db.getCon();
idealist=db.getIdeaOfFarmer();//从数据库中获取农民意见信息
db.colseCon();
return idealist;
}
}
(7)商店:
模型层的主要代码为grocer.java:public class grocer {
private int number;//商品编号
private String nameGrocery;//商品名称
private float priceGrocery;//商品价格
private long amountGrocery;//剩余商品数量
private boolean state;//是否有货
private Date timeValue;//商品的保质期
控制层主要用GetGrocer.java实现。其主要代码如下:
public class GetGrocer {
public static ArrayList<grocer> getGrocer(){
ArrayList<grocer> list=new ArrayList<grocer>();
DBHelper db=new DBHelper("D:\\Village.mdb");
db.getCon();
list=db.getGrocer();//从数据库中获取商店里的商品信息
db.colseCon();
return list;
}
}
(8)药店:
药店的模型层代码主要由dragstore.java实现,其代码及解释如下:
public class dragstore {
private int number;//药品编号
private String nameDrags;//药品名
private float priceDrags;//药品价格
private long amountDrags;//剩余药品数量
private boolean state;//药品状态
private Date timeValue;//保质期
private String explanation;//药品说明书
public dragstore(){
number=0;
nameDrags=null;
priceDrags=0.0f;
amountDrags=0;
state=false;
timeValue=null;
explanation=null;
}}
其控制层代码用GetDragStore.java来实现
public class GetDragstore {
public static ArrayList<dragstore> getDragstore(){
ArrayList<dragstore> listFarmer=new ArrayList<dragstore>();
DBHelper db=new DBHelper("D:\\Village.mdb");
db.getCon();
listFarmer=db.getDragstore();//通过数据库获取药品的信息
db.colseCon();
return listFarmer;
}
}
(9)数据库相关模型层代码,主要用DBHelper.java来实现,其主要代码如下:
public class DBHelper {
private static String strDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
private String strDBUrl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=";
private Connection conn=null;
public DBHelper(String url){
strDBUrl+=url;
}
public void getCon()//打开数据库
{
try
{
Class.forName(strDBDriver);
System.out.println(strDBUrl);
conn = DriverManager.getConnection(strDBUrl);
}catch (Exception e) //抛出异常
{
e.printStackTrace();
}
}
public void colseCon(){//关闭数据库
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList<notice> getNotice(){//获取通知信息
ArrayList<notice> list=new ArrayList<notice>();
Statement stmt;
try {
stmt = conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from notice");
while(rs.next()){
notice note=new notice();
note.setNumber(rs.getInt("number"));//设置通知的编号
note.setTitle(rs.getString("title"));//设置通知的标题
note.setWriter(rs.getString("writer"));//设置通知的作者
note.setContent(rs.getString("content"));//设置通知的内容
note.setTime(rs.getString("time"));//设置通知的发布日期
list.add(note);//将通知添加到list中
}
} catch (SQLException e)
e.printStackTrace();
}
return list;
}
public ArrayList<dragstore> getDragstore(){//获取药店的信息
ArrayList<dragstore> list=new ArrayList<dragstore>();
Statement stmt;
try {
stmt = conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from dragstore"); while(rs.next()){
dragstore dragstore1=new dragstore();
dragstore1.setNumber(rs.getInt("number"));//设置药品的标号
dragstore1.setNameDrags(rs.getString("nameDrags"));//设置药品的名字
dragstore1.setAmountDrags(rs.getLong("amountDrags"));//设置剩余药品数
dragstore1.setPriceDrags(rs.getFloat("priceDrags"));//设置药品的价格
dragstore1.setState(rs.getBoolean("state"));//设置药品的状态
dragstore1.setTimeValue(rs.getDate("timeValue"));//设置药品的保质期
dragstore1.setExplanation(rs.getString("explanation"));//设置药品的使用说明
list.add(dragstore1);}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public ArrayList<ideaOfFarmer> getIdeaOfFarmer(){//获取农民意见
ArrayList<ideaOfFarmer> list=new ArrayList<ideaOfFarmer>();
Statement stmt;
try {
stmt = conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from ideaOfFarmer"); while(rs.next()){
ideaOfFarmer idea=new ideaOfFarmer();
idea.setNumber(rs.getInt("number"));
idea.setContent(rs.getString("content"));//设置农民意见的的主题内容
idea.setTime(rs.getDate("time"));//设置农民意见的发布日期
list.add(idea);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public ArrayList<grocer> getGrocer(){//获取商店的基本信息
ArrayList<grocer> list=new ArrayList<grocer>();
Statement stmt;
try {
stmt = conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from grocer");
while(rs.next()){
grocer grocer1=new grocer();
grocer1.setNumber(rs.getInt("number"));
grocer1.setNameGrocery(rs.getString("nameGrocery"));
grocer1.setPriceGrocery(rs.getFloat("priceGrocery"));
grocer1.setAmountGrocery(rs.getLong("amountGrocery"));
grocer1.setState(rs.getBoolean("state"));
grocer1.setTimeValue(rs.getDate("timeValue"));
list.add(grocer1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;}
public ArrayList<government> getGovernment(){//获取政府工作报告基本信息
ArrayList<government> list=new ArrayList<government>();
Statement stmt;
try {
stmt = conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from government"); while(rs.next()){
government government1=new government();
government1.setNumber(rs.getInt("number"));
governm
展开阅读全文