线性代数的学习网站

线性代数的学习网站

数据库的设计

在完成基本功能在去看了阿里巴巴 Java 开发手册,发现我创建的表一塌糊涂,如果按照规范去修改的话,我项目得重写,实在惭愧。(用户的邮箱是他在这个网站的唯一的标识)

库名studyweb

五张表(分别是user,question,answer,math,log)

user表

CREATE TABLE `user`  (
  `u_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `u_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `u_password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `u_role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT 'user',
  `u_registertime` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `u_money` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0',
  PRIMARY KEY (`u_email`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

question表

CREATE TABLE `question`  (
  `u_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `q_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `q_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci,
  `q_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `q_money` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `u_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `q_state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '待审核',
  `a_number` int(11) DEFAULT 0,
  PRIMARY KEY (`q_title`, `u_email`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

answer表

CREATE TABLE `answer`  (
  `u_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `u_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `a_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci,
  `a_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `q_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`u_email`, `a_time`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

math表

CREATE TABLE `math`  (
  `u_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `m_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `m_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `u_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `m_money` int(11) DEFAULT 0,
  `m_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`m_location`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

log表

CREATE TABLE `log`  (
  `l_modular` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `u_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `u_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `l_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `l_behavior` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`l_time`, `u_email`, `l_behavior`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

用户登录、注册(邮件发送)

邮件发送总是出了一点问题,直到我发现了下面的博客
邮件发送主要参考

本来想做一个过滤器,如果用户没有进行登录注册就不得访问往后页面,可时间有限,就没有实现(2月18号)

普通用户

问答功能

问答我是模仿csdn的问答,在实现基本问答的情况下,增加了金币功能

问答的业务逻辑

/*问答模块用户的操作
	 * 思路:
	 * 我把用户问答功能分为
	 *    一:我与所有用户的问答
	 *    				 1查看所有的问答
	 *    					 仅展示问题题目和少量内容,以及用户名,提问时间,回答的个数,以及问题状态,奖赏金币
	 *    				 2查看问题详情(通过点击标题查看问题详情)
	 *    					问题详情:展示问题题目和全部内容,以及用户名,提问时间,以及问题状态,奖赏金币
	 *    					回答详情:还展示所有回答的个数,回答者的姓名,回答时间,回答内容
	 *    				 3我回答问题
	 * 
	 *  二:我自己的问答  
	 * 					1.我要提问
	 * 						填入问题标题
	 * 						填入问题内容
	 * 						填入奖赏金币
	 * 					2.我的问答
	 *   					 我提出的   
	 *   						通过用户的u_email查出所以我提出的问题,并返回一个list集合
	 *   						通过list.size()计算出我提出问题的总数
	 *   						通过点击标题查看问题详情
	 *   						通过点击采纳来说明我已经找到答案
	 *   					我回答的
	 *   						通过用户的u_email查出所以我回答的问题,并返回一个list集合
	 *   						通过list.size()计算出我回答问题的总数
	 *   						通过点击标题查看问题详情
	 *   		  
	 *    
	 *    
	 *注意:因为很多功能都用到了问题标题,故一个问题的标题不能为空且不能重复
	 *    
	 *问答模块与日志管理(问答模块仅仅记录用户的操作)
	 *不管在问答管理的那个操作都属于问答模块
	 *不同的操作有不同的定义
	 *		用户浏览
	 *		查看详情
	 *		回答问题
	 *		用户提问
	 *		
	 *		查看自己提出的所有问题
	 *		查看自己回答所有的问题
	 *		采纳问题
	 *		
	 *
	 *    
	 * */

上传算法、下载算法

这里还是模仿了csdn的上传下载
上传我因为文件名踩过无数的坑,最后通过字符串的截取解决了,不得不感叹java基础真的好重要呀

上传下载的业务逻辑

/*
	 * 用户上传下载算法操作 
	 * 思路:
	 *     上传:上传到服务器后,把文件路径,文件名,上传时间,上传者的基本信息写入数据库
	 *     下载:从数据库读出所有文件的基本信息,然后根据文件名从服务器下载文件
	 *  
	 *   
	 *   1:因为并不会用类加载器,所有把用户上传下载算法仅仅做成 用户上传下载文件 
	 *   2:增加功能 
	 *       上传用户设置金币
	 *       下载需要金币,一方面下载者的金币数减少,另一方面上传者增加金币,( 前提:下载者金币数量充足)
	 */

在线实现线性代数的运算

1:算法专门放在工具包中进行调用
2:数据传递是用ajax,前端传字符串,java把字符串转化成对应的一维二维数组,后台响应后再把数据转成字符串
3:由于前端没有做任何的限制,所以我们servlet层要对是否传来数据,数据的格式等等进行判断
4:逻辑关系一定要理清,要知道哪个具体的操作,限制等等在前,哪个在后,不然容易出异常·
5:算法的实现太多用for以及嵌套的for循环了,好实现也好理解,但太暴力,也没考虑效率问题
6:部分运算我实现不了,借鉴修改了别人的算法

查看个人信息(新增)

由于设置了金币功能,用户肯定得知道自己的金币数,故实现用户可查看自己的ID号,昵称,金币数,注册时间

管理员

问答的管理

功能:
1审核提问,决定用户的提问是否能发表
2对问题和回答中不合规的进行删除

问答的管理业务逻辑

/*管理员问答模块
 * 思路
 *   1审核提问,决定## 标题用户的提问是否能发表
 *                    遍历出待审核的提问
 *                           确认通过审核
 *                           对不合格的进行删除
 *   2对问题和回答中不合规的进行删除
 *                      遍历出所有问题
 *        	查看问题详情
 *                                       对不合规的提问以及这个提问下的所有回答进行删除
 *                                       对某个不合规的回答进行删除
 *    
 *         
 * 
 * 
 * */

人员的管理

功能:
1 管理员查出所有用户的基本信息
2管理员删除学生(删除非法用户.比如名字涉及黄暴,非法积累金币)

算法的管理

功能:
1:对用户上传的算法,对算法的增删查改

对在服务器中的算法文件进行查和删操作用到了文件流

日志管理

功能:
1:用户所有行为都存入日志
2:根据用户模块的不同功能进行分类查看
3:可以清空日志

页面

由于页面太多,没有能力美化所有页面,但保证了页面总体的形象,页面没有用模板,直接改用了好工具网,csdn等等的源码

结语

第一次一个人写javaweb项目,感觉挺难的。最难的不是不知道怎么写,而是是之前好好的,后来突然出问题,真的需要耐心呀。问答模块是我花时间最多的地方,真的要理清里面的逻辑,在项目里不断的用io流,数组,集合,等等,明白了java基础的重要性,不说了,补基础去了!!!

项目github地址

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值