目录
1 效果演示
2 开发环境
3 功能说明
4 数据结构
4.1管理员表
4.2用户表
4.3信息交换表
5 关键代码
5.1数据库连接配置和连接代码
5.2用户相关代码
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=rootjdbc.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/contexthttp://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 {@Autowiredprivate MemberService memberService;@AutowiredPager<Member> pager;// 后台添加用户@GetMapping("/addMember.do")@ResponseBodypublic 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";}}}