1 概述
该系统首先对系统进行分析设计,然后完成制作。
网站主要实现了前台注册、登录、网站公告、饮食信息、留言板、会员中心(修改个人资料、发布数据、我的数据、修改密码;
管理员登录系统后实现的功能有系统账户管理(管理员管理、操作日志)、留言信息管理(留言管理、信息管理、添加信息)、数据库管理(饮食信息管理、添加饮食信息、会员管理、健康档案管理、添加健康档案)。
根据前几个阶段的分析和设计,最终决定数据库选用现在比较流行的MYSQL作为本设计的后台存储数据,整个设计的结构模式采用B/S模式,另外前台编程语言采用JSP来设计与实现设计功能。
本系统的设计实施为饮食健康信息网站的运行做基础,为饮食健康信息网站提供良好的条件。
2 数据表
表 饮食数据
字段名称 | 自动增长 | 字段类型 | 说明 |
|
id | - | int | - |
|
xb | - | varchar | 标题 |
|
xqah | - | varchar | 描述 |
|
url | - | varchar | 附件 | 上传近期照片 |
member | - | varchar | 会员名 |
|
sj | - | varchar | 日期 |
|
field_1 |
|
| 姓名 | 文本内容 |
field_2 |
|
| 性别 | 文本内容 |
field_3 |
|
| 年龄 | 文本内容 |
field_200 | - | int | 最近一日三餐是否搭配合理 | 是否选项 |
field_201 | - | int | 最近是否常吃油腻食物 | 是否选项 |
field_202 | - | int | 最近是否常吃咸的食物 | 是否选项 |
field_203 | - | int | 最近是否常吃甜的食物 | 是否选项 |
field_204 | - | int | 最近血糖高吗 | 是否选项 |
field_205 | - | int | 有高血压、血脂稠的症状吗 | 是否选项 |
field_206 | - | int | 最近常吃杂粮吗 | 是否选项 |
field_207 | - | int | 最近是否肉多菜少 | 是否选项 |
表 会员表
字段名称 | 自动增长 | 字段大小 | 字段类型 | 允许空 | 说明 |
id | - | 4 | int | √ | - |
username | - | 150 | varchar | √ | 用户名 |
password | - | 150 | varchar | √ | 密码 |
type | - | 150 | varchar | √ | 类型 |
regtime | - | 150 | varchar | √ | 日期 |
ifuse | - | 4 | int | √ | 是否使用 |
logintimes | - | 4 | int | √ | 日期 |
表 食物表
字段名称 | 自动增长 | 字段类型 | 说明 |
id |
| int | 编号 |
xb |
| varchar | 标题 |
xqah |
| varchar | 描述 |
url |
| varchar | 附件 |
member |
| varchar | 会员ID |
sj |
| varchar | 时间 |
field_1 |
| varchar | 食物 |
field_2 |
| varchar | 领用时间 |
field_3 |
| varchar | 热量 |
3 关键代码
数据库连接代码
package com.util;
import java.sql.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.activation.DataSource;
import java.sql.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
public class DBO {
private Connection conn;
private Statement stmt;
private DataSource ds;
public DBO() {
}
/**
* 打开数据库
*/
public void open() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/db_website?characterEncoding=utf8",
"root", "root");
stmt = conn.createStatement();
System.out.println("打开数据库连接");
} catch (Exception ex) {
System.err.println("打开数据库时出错: " + ex.getMessage());
}
}
/**
* 关闭数据库,将连接返还给连接池
*/
public void close() {
try {
// connMgr.freeConnection("java", conn);
conn.close();
System.out.println("释放连接");
} catch (SQLException ex) {
System.err.println("返还连接池出错: " + ex.getMessage());
}
}
/**
* 执行查询
*/
public ResultSet executeQuery(String sql) throws SQLException {
ResultSet rs = null;
rs = stmt.executeQuery(sql);
System.out.println("执行查询");
return rs;
}
/**
* 执行增删改
*/
public int executeUpdate(String sql) throws SQLException {
int ret = 0;
ret = stmt.executeUpdate(sql);
System.out.println("执行增删改");
return ret;
}
/**
* 将SQL语句加入到批处理
*/
public void addBatch(String sql) throws SQLException {
stmt.addBatch(sql);
}
/**
* 执行批处理
*/
public int[] executeBatch() throws SQLException {
boolean isAuto = conn.getAutoCommit();
conn.setAutoCommit(false);
int[] updateCounts = stmt.executeBatch();
// conn.commit();
// conn.setAutoCommit(isAuto);
// conn.setAutoCommit(true);
return updateCounts;
}
public boolean getAutoCommit() throws SQLException {
return conn.getAutoCommit();
}
public void setAutoCommit(boolean auto) throws SQLException {
conn.setAutoCommit(auto);
}
public void commit() throws SQLException {
conn.commit();
// this.close();
}
public void rollBack() throws SQLException {
conn.rollback();
// this.close();
}
}
数据分析代码
package com.bean;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import com.util.Constant;
import com.util.DBO;
public class ComBean {
private List list;
private ResultSet rs;
private String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(Calendar.getInstance().getTime());
private int EVERYPAGENUM = 2;
private int count = -1;
private int qq = 0;
//获取最大值的下标
public int getMaxIndex(int[] arr){
int maxIndex = 0; //获取到的最大值的角标
for(int i=0; i<arr.length; i++){
if(arr[i] > arr[maxIndex]){
maxIndex = i;
}
}
return maxIndex;
}
//获取最大值
public int getMaxNum(int[] arr){
int maxNum = arr[0];
for(int i=0; i<arr.length; i++){
if(arr[i] > maxNum){
maxNum = arr[i];
}
}
return maxNum;
}
//获取最大值的下标
public int getMinIndex(int[] arr){
int minIndex = 0;
for(int i=0; i<arr.length; i++){
if(arr[i] < arr[minIndex]){
minIndex = i;
}
}
return minIndex;
}
//获取最小值
public int getMinNum(int[] arr){
int minNum = arr[0];
for(int i=0; i<arr.length; i++){
if(arr[i] < minNum){
minNum = arr[i];
}
}
return minNum;
}
public void setEVERYPAGENUM(int EVERYPAGENUM) {
this.EVERYPAGENUM = EVERYPAGENUM;
}
public int getMessageCount(String sql) { // 得到信息总数
DBO dbo = new DBO();
dbo.open();
try {
rs = dbo.executeQuery(sql);
rs.next();
count = rs.getInt(1);
return count;
} catch (SQLException ex) {
ex.printStackTrace();
return -1;
} finally {
dbo.close();
}
}
public int getPageCount() { // 得到共多少页(根据每页要显示几条信息)
if (count % EVERYPAGENUM == 0) {
return count / EVERYPAGENUM;
} else {
return count / EVERYPAGENUM + 1;
}
}
public List getMessage(int page, String sql2, int row) { // 得到每页要显示的信息
DBO dbo = new DBO();
dbo.open();
List list = new ArrayList();
try {
rs = dbo.executeQuery(sql2);
for (int i = 0; i < (page - 1) * EVERYPAGENUM; i++) {
rs.next();
}
for (int t = 0; t < EVERYPAGENUM; t++) {
if (rs.next()) {
qq++;
List list2 = new ArrayList();
for (int jj = 1; jj <= row; jj++) {
list2.add(rs.getString(jj));
}
list.add(list2);
} else {
break; // 减少空循环的时间
}
}
return list;
} catch (SQLException ex) {
ex.printStackTrace();
return list;
} finally {
dbo.close();
}
}
public int comUp(String sql) {
DBO dbo = new DBO();
dbo.open();
try {
int i = dbo.executeUpdate(sql);
if (i == 1) {
return Constant.SUCCESS;
} else {
return Constant.SYSTEM_ERROR;
}
} catch (Exception e) {
e.printStackTrace();
return Constant.SYSTEM_ERROR;
} finally {
dbo.close();
}
}
public List getCom(String sql, int row) {
// String sql1 ="select * from jy where xb='女' order by visit desc";
DBO dbo = new DBO();
list = new ArrayList();
dbo.open();
try {
rs = dbo.executeQuery(sql);
while (rs.next()) {
List list2 = new ArrayList();
for (int i = 1; i <= row; i++) {
list2.add(rs.getString(i));
}
list.add(list2);
}
return list;
} catch (Exception e) {
e.printStackTrace();
return list;
} finally {
dbo.close();
}
}
public List get1Com(String sql, int row) {
// String sql =
// "select * from bank where uid='"+uid+"' order by id desc ";
DBO dbo = new DBO();
list = new ArrayList();
dbo.open();
try {
rs = dbo.executeQuery(sql);
rs.next();
for (int i = 1; i <= row; i++) {
list.add(rs.getString(i));
}
return list;
} catch (Exception e) {
e.printStackTrace();
return list;
} finally {
dbo.close();
}
}
public String getString(String sql) {
// String sql =
// "select * from bank where uid='"+uid+"' order by id desc ";
DBO dbo = new DBO();
dbo.open();
try {
rs = dbo.executeQuery(sql);
rs.next();
return rs.getString(1);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
dbo.close();
}
}
public String getString2(String sql) {
// String sql =
// "select * from bank where uid='"+uid+"' order by id desc ";
DBO dbo = new DBO();
dbo.open();
try {
rs = dbo.executeQuery(sql);
rs.next();
String str = rs.getString(1);
if (str == null)
return "0";
else
return str;
} catch (Exception e) {
e.printStackTrace();
return "0";
} finally {
dbo.close();
}
}
}
4 效果演示