目录
1 效果演示
2 开发环境
开发工具idea或eclipse
数据库MySQL或SQL server
开发框架:SSM Spring+SpringMVC+MyBatis
HTML CSS JavaScript Bootstrap
开发环境:jdk tomcat
3 功能说明
本系统是一个需求平台,需求双方可以在平台上找到自己所需要的东西,也可以将自己的信息进行信息发布。
平台的产生既可以让需求双方方便沟通,又能催进节约,符合节约社会的需要。
采用选用SSM技术为基础,MYSQL作为数据库平台,基于B/S模型的校园互助悬赏跑腿中介平台平台。
系统包含七个功能模块:管理员管理、信息管理、用户信息管理、公告管理、搜索信息、用户信誉度管理、留言信息。
4 数据结构
4.1管理员表
字段名 | 字段说明 | 数据类型 | 字段长度 | 是否为空 | 约束类型 |
ID | 管理员编号 | Int(4) | 4 | Not Null | 主键 |
manager | 管理员用户名 | Varchar(30) | 30 | Not Null | |
PWD | 管理员密码 | Varchar(30) | 30 | Not Null |
4.2用户表
字段名 | 字段说明 | 数据类型 | 字段长度 | 是否为空 | 约束类型 |
ID | 用户编号 | int(4) | 4 | Not Null | 主键 |
userName | 用户名 | Varchar(20) | 20 | Not Null | |
trueName | 真实名 | Varchar(20) | 20 | Not Null | |
passWord | 密码 | Varchar(20) | 20 | Not Null | |
city | 学校 | Varchar(20) | 20 | ||
address | 地址 | Varchar(100) | 100 | Not Null | |
postcode | 邮编 | Varchar(6) | 6 | Not Null | |
cardNO | 证件号码 | Varchar(24) | 24 | Not Null | |
cardType | 证件类型 | Varchar(20) | 20 | Not Null | |
tel | 电话 | Varchar(20) | 20 | Not Null | |
| 邮箱 | Varchar(100) | 100 | Not Null | |
score | 信誉值 | Int(4) | 4 |
4.3信息交换表
字段名 | 字段说明 | 数据类型 | 字段长度 | 是否为空 | 约束类型 |
pmgoodsid | 信息交换编号 | Int(4) | 4 | Not Null | 主键 |
goodsname | 信息名称 | Varchar(200) | 200 | Not Null | |
bz | 备注 | Varchar(200) | 200 | Not Null | |
price | 价格 | Int(4) | 4 | Not Null | |
mid | 用户编号 | Int(4) | 4 | Not Null | |
picture | 图片 | Varchar(50) | 50 | Not Null | |
bdj | 成交价格 | Int(4) | 4 | Not Null | |
jssj | 参与时间 | Varchar(50) | 50 | Not Null | |
zt | 状态 | Int(4) | 50 | Not Null | |
typeID | 子类编号 | Int(4) | 4 | Not Null | |
superTypeID | 父类编号 | Int(4) | 4 | Not Null |
5 关键代码
5.1数据库连接配置和连接代码
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/db_product?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
jdbc.maxWait=1000
jdbc.initialSize=20
jdbc.maxActive=1000
jdbc.maxIdle=10
jdbc.minIdle=5
spring-mybatis.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 开启注解 扫描com.superCode下的所有的对象 -->
<context:component-scan base-package="com.superCode">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- 引入jdbc配置文件 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!--创建jdbc数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${jdbc.initialSize}" />
<!-- 连接池最大数量 -->
<property name="maxActive" value="${jdbc.maxActive}" />
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${jdbc.maxIdle}" />
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${jdbc.minIdle}" />
</bean>
<!-- 创建SqlSessionFactory,同时指定数据源 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybaits-config.xml"></property>
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:mappers/*.xml" />
<property name="typeAliasesPackage" value="com.superCode.domain" />
</bean>
<!-- 配置SqlSessionTemplate -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<!-- 配置mybatis mapper接口 -->
<!-- 可以给你的mapper接口生成 代理对象 并且把该代理对象放到IOC容器中 -->
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.superCode.mapper" />
<property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate" />
</bean>
<!-- 事务配置 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 使用annotation注解方式配置事务 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
</beans>
5.2用户相关代码
package com.superCode.controller;
import com.superCode.domain.Member;
import com.superCode.domain.Pager;
import com.superCode.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;
@Controller
public class MemberController {
@Autowired
private MemberService memberService;
@Autowired
Pager<Member> pager;
// 后台添加用户
@GetMapping("/addMember.do")
@ResponseBody
public void addMember(Member member) {
//memberService.addMember(member);
}
// 显示前台登录页面
@GetMapping("/login.do")
public String login() {
return "login";
}
@PostMapping("/login.do")
public String login1() {
return "login";
}
// 后台管理所有用户
@GetMapping("/memberManager.do")
public String memberManager(@RequestParam(defaultValue = "1") String pageNumber, HttpServletRequest request) {
int pn = Integer.parseInt(pageNumber);
int ps = 10;// 分页大小
List<Member> members = memberService.memberList((pn - 1) * ps, ps);
int count = memberService.getCoun();
pager.setRows(members);// 实体列表
pager.setTotal(count);// 总数
pager.setPage(pn);// 当前页
int pagecount = 1;// 总页数
// 计算总页数
if (count % ps == 0) {
pagecount = count / ps;
} else {
pagecount = count / ps + 1;
}
pager.setPagecount(pagecount);//
request.setAttribute("memberList", pager);
return "admin/MemberManager";
}
// 删除用户
@GetMapping("/deleteMember.do")
public String deleteMember(@RequestParam String id, HttpServletRequest request, HttpServletResponse response) {
memberService.deleteMember(id);
request.setAttribute("path", "memberManager.do");
return "common/success";
}
// 显示个人信息
@GetMapping("/personal2.do")
public String personal2(@RequestParam String id, HttpServletRequest request, HttpServletResponse response) {
Member member = memberService.getMember(id);
request.setAttribute("cmember", member);
return "/qiantai/personal";
}
@GetMapping("/updatePass.do")
public String updatePass(@RequestParam String password, HttpServletRequest request) {
Member cmember = (Member) request.getSession().getAttribute("cmember");
String id = cmember.getId();
memberService.updatePass(id, password);
cmember = memberService.getMember(id);
request.setAttribute("cmember", cmember);
return "qiantai/personal";
}
//前台修改用户信息
@PostMapping("/update_member")
public String updateMember(@RequestParam String id, @RequestParam String truename,@RequestParam String pwd, @RequestParam String city, @RequestParam String address, @RequestParam String weixinhao, @RequestParam String cardNo, @RequestParam String cardtype, @RequestParam String tel, @RequestParam String email, HttpServletRequest request) {
Member cmember = (Member) request.getSession().getAttribute("cmember");
String result = "";
if (StringUtils.isEmpty(truename)) {
result = "真实姓名为空,不能注册";
request.setAttribute("errors", result);
} else if (StringUtils.isEmpty(pwd)) {
result = "密码为空,不能注册";
request.setAttribute("errors", result);
} else if (StringUtils.isEmpty(city)) {
result = "city为空,不能注册";
request.setAttribute("errors", result);
} else if (StringUtils.isEmpty(address)) {
result = "address为空,不能注册";
request.setAttribute("errors", result);
} else if (StringUtils.isEmpty(weixinhao)) {
result = "weixinhao为空,不能注册";
request.setAttribute("errors", result);
} else if (StringUtils.isEmpty(cardNo)) {
result = "cardNo为空,不能注册";
request.setAttribute("errors", result);
} else if (StringUtils.isEmpty(cardtype)) {
result = "cardtype为空,不能注册";
request.setAttribute("errors", result);
} else if (StringUtils.isEmpty(tel)) {
result = "tel为空,不能注册";
request.setAttribute("errors", result);
} else if (StringUtils.isEmpty(email)) {
result = "email为空,不能注册";
request.setAttribute("errors", result);
}else{
request.setAttribute("success", "修改用户信息成功");
}
Member member = new Member();
member.setId(id);
member.setTruename(truename);
member.setCity(city);
member.setAddress(address);
member.setWeixinhao(weixinhao);
member.setCardNO(cardNo);
member.setCardtype(cardtype);
member.setTel(tel);
member.setEmail(email);
member.setPassword(pwd);
member.setScore(cmember.getScore());
memberService.updateMemberSave(member);
member = memberService.getMember(id);
HttpSession session = request.getSession();
session.setAttribute("cmember", member);
session.setAttribute("member", member);
return "qiantai/member_update";
}
//前台注册保存用户信息
@PostMapping("/save_member")
public String saveMember(@RequestParam String username, @RequestParam String truename, @RequestParam String pwd, @RequestParam String city, @RequestParam String address, @RequestParam String weixinhao, @RequestParam String cardNo, @RequestParam String cardtype, @RequestParam String tel, @RequestParam String email, HttpServletRequest request) {
String result = "";
if (StringUtils.isEmpty(username)) {
result = "用户名为空,不能注册";
request.setAttribute("errors", result);
return "qiantai/register";
} else if (StringUtils.isEmpty(truename)) {
result = "真实姓名为空,不能注册";
request.setAttribute("errors", result);
return "qiantai/register";
} else if (StringUtils.isEmpty(pwd)) {
result = "密码为空,不能注册";
request.setAttribute("errors", result);
return "qiantai/register";
} else if (StringUtils.isEmpty(city)) {
result = "city为空,不能注册";
return "qiantai/register";
} else if (StringUtils.isEmpty(address)) {
result = "address为空,不能注册";
request.setAttribute("errors", result);
return "qiantai/register";
} else if (StringUtils.isEmpty(weixinhao)) {
result = "weixinhao为空,不能注册";
request.setAttribute("errors", result);
return "qiantai/register";
} else if (StringUtils.isEmpty(cardNo)) {
result = "cardNo为空,不能注册";
request.setAttribute("errors", result);
return "qiantai/register";
} else if (StringUtils.isEmpty(cardtype)) {
result = "cardtype为空,不能注册";
request.setAttribute("errors", result);
return "qiantai/register";
} else if (StringUtils.isEmpty(tel)) {
result = "tel为空,不能注册";
request.setAttribute("errors", result);
return "qiantai/register";
} else if (StringUtils.isEmpty(email)) {
result = "email为空,不能注册";
request.setAttribute("errors", result);
return "qiantai/register";
}
int count = memberService.selectMemByCardNo(cardNo);
if (count > 0) {
request.setAttribute("errors", "cardNO:" + cardNo + "已经注册");
return "qiantai/register";
} else {
Member member = new Member();
member.setTruename(truename);
member.setCity(city);
member.setAddress(address);
member.setWeixinhao(weixinhao);
member.setCardNO(cardNo);
member.setCardtype(cardtype);
member.setTel(tel);
member.setEmail(email);
member.setUsername(username);
member.setPassword(pwd);
member.setFreeze("0");
member.setScore(500);
memberService.insertMemer(member);
return "qiantai/index";
}
}
}