主要编写语言: JavaScript 或者 JQuery
项目介绍:玩家可以通过wasd 键来控制角色移动,角色拥有10点生命.每隔一段时间会在角色身边生成环绕的飞行物,可以用来阻挡弹幕,或者用来发射.点击鼠标左键对指定方向进行攻击.
项目链接:https://gitee.com/Keith404/More-and-more
demo:https://keith404.gitee.io/more-and-more/
页内展示:
主要编写语言: JavaScript 或者 JQuery
项目介绍:玩家可以通过wasd 键来控制角色移动,角色拥有10点生命.每隔一段时间会在角色身边生成环绕的飞行物,可以用来阻挡弹幕,或者用来发射.点击鼠标左键对指定方向进行攻击.
项目链接:https://gitee.com/Keith404/More-and-more
demo:https://keith404.gitee.io/more-and-more/
页内展示:
实验代码集合大礼包(如果你不想看下面这段废话,请直接下载):
https://javaeefile-1257541903.cos.ap-guangzhou.myqcloud.com/%E5%AE%9E%E9%AA%8C%E9%A1%B9%E7%9B%AE%E5%85%A8%E9%9B%86%E5%90%88.zip
实验5和作业5是只要完成其中一个就可以了,这里是完成的是作业5,为什么不选择实验5的原因呢,是因为glassfish3.0只支持早期的JavaEE 5以前的版本,而我这里用的是JavaEE7,此外还有很多原因,因为我根本就不想装glassfish3.0版本,无论是修改用户口令,或者是注册表配置项等,除此之外还要涉及到修改jre或者是jdk的版本(rua总之一大堆问题,有人问,那你下一个glassfish3.0的开源无需安装版不就好了吗,我试过,运行不出来,可能是配置服务器口令的时候有问题,会加载一年都无法加载出来)
下面是NetBeans IDE 做的syC_IDE能正常操作运行的配置
使用NetBeans完成的项目包括实验1,2,3,6,8,作业1,2,3
1. 首次运行该项目,让其自动生成所需要的表
2. 生成的表分别为PRODUCT0412、GOODSTABLE、USERDATA
3. 每个表都至少添加1条数据(否则会导致无法运行)
4. PRODUCT0412表的PRICE列必须填写数值,填写字符串将会出错
5. PRODUCT0412表要实现上一页下一页操作,加入至少20条以上的记录,最好填写30条以上
6. 实验8需要先运行webserviceISP,在运行syFeiniu_IDE 里的index.jsp里的加权平均按键
注意:模糊搜索算法并不完善,目前已知bug,无法匹配多次重复出现的字符,因为这里是将数据库里的每个表(这里总共3个表)的每行整理成一串字符串(老师自己写的时候就是这样,不要问我为什么)然后存进navicontrols.searchcontrol(JavaBean).(List)seachlib,再将其遍历与searchstr进行匹配,然后通过package algorithm; 里的FuzzyMatching类(封装好的模糊算法,但是我还没写好这个算法,有能力你们可以完善一下: 里面有演示实例链接)的public Boolean getEffectiveness()来进行判断匹配结果
如何演示实验
index.jsp 包含了绝大部分的实验演示,在网页最底部
此外需要单独运行manageProduct.jsp 该演示包括增删查改,分页查询(上一页下一页,PRODUCT0412表要至少20条以上数据才不会出错)
至于详细的实验说明,可以通过老师发放的文件查看
实验以及作业内容:https://javaeefile-1257541903.cos.ap-guangzhou.myqcloud.com/JavaEE%E5%AE%9E%E9%AA%8C%E5%8F%8A%E4%BD%9C%E4%B8%9A.rar
访问即可下载
下面是MyEclipse的配置
1. 在本地添加一个新的数据库,名字为javawebtestbase
2. 添加1张表cartshi,并插入一条数据
下面为创建表的指令:
DROP TABLE IF EXISTS `cartshi`;
CREATE TABLE `cartshi` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`cartsitem` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
插入一条数据:
INSERT INTO `cartshi` VALUES (‘1’, ‘asdsad’);
3. 配置hibernate (如果不知道怎么配置请观看https://www.bilibili.com/video/av34779256/?p=2)
Driver name : mysql
Connection URL :jdbc:mysql://localhost:3306/javawebtestbase
如何演示:
(你可以自己去设计杂志页面,具体怎么回事看作业5)
实验4是运行index.jsp
作业5是
运行indextest.jsp 演示图片移动,选项卡,图片放大 ,jq修改网页文本 ,通过hibernate更新数据
链接集合:
上课操作的全部实验操作网页:https://space.bilibili.com/4922622/#/channel/detail?cid=54329
老师上课讲解的PPT:
https://javaeefile-1257541903.cos.ap-guangzhou.myqcloud.com/JEE%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91PPT.rar
项目实例下载:https://gitee.com/Keith404/fuzzy_algorithm/tree/master/
2018/11/7 16:55 修改
import java.util.ArrayList;
import java.util.List;
public class FuzzyMatching {
//参数
private int substrCrossDomain = 2; //子串允许的跨界下标值
private int substrElimination = 2; //子串允许的消除个数值
private int mainstrCrossDomain = 100; //主串允许的跨界下标值
private boolean reportOpen = true; //是否显示汇报结果
//变量
private String mainString = ""; //主串字符串
private String subString = ""; //子串字符串
private int substrSubscript = 0; //子串下标
private int subscriptMovementCount = 0; //子串移动下标次数
private int currentEliminationNumber = 0; //存储消除子串字符的数值
private int mainstrPreviousSubscript = 0; //主串的前一次下标值
private boolean effectiveness; //返回值
private List matchingItem; //符合条件的子串字符集
private List report; //汇报内容
private List result; //主串出现位置结果集
//首字符出现的位置
private int fistCharShow = -1;
//是否执行过getResult
private boolean readGetResult = false;
//构造方法
public FuzzyMatching() {
report = new ArrayList();
matchingItem = new ArrayList();
result = new ArrayList();
}
public FuzzyMatching(String mainString, String subString) {
report = new ArrayList();
matchingItem = new ArrayList();
result = new ArrayList();
this.mainString = mainString;
this.subString = subString;
}
//
//设置主串和子串方法
public void setMainString(String mainString) {
this.mainString = mainString;
}
public void setSubString(String subString) {
this.subString = subString;
}
//获取主串和子串
public String getMainString() {
return this.mainString;
}
public String getSubString() {
return this.subString;
}
//设置参数值
public void setSubstrCrossDomain(int value) {
this.substrCrossDomain = value;
}
public void setSubstrElimination(int value) {
this.substrElimination = value;
}
public void setMainstrCrossDomain(int value) {
this.mainstrCrossDomain = value;
}
public void setReportOpen(boolean value) {
this.reportOpen = value;
}
//返回主串分别出现的数据结果
public List getResult() {
if (readGetResult) {
return this.result;
} else {
System.out.println("还没执行getEffectiveness方法");
return this.result; //有待完善
}
}
//返回匹配到的子串字符
public List getMatchingItem() {
if (readGetResult) {
return this.matchingItem;
} else {
System.out.println("还没执行getEffectiveness方法");
return this.matchingItem; //有待完善
}
}
public Boolean getEffectiveness() {
for (int i = 0; i < mainString.length(); i++) { if (mainString.charAt(i) == subString.charAt(0)) { if ((mainString.length()-i) > substrElimination){
fistCharShow = i;
break;
}
}
}
if (fistCharShow != -1){
}else {
substrSubscript++;
fistCharShow = 0;
}
int mainStringSubscript = 0;
mainStringSubscript = fistCharShow;
while(mainStringSubscript<mainString.length()){
subscriptMovementCount = 0;
for (int j = substrSubscript; j < subString.length(); j++) {
if (subscriptMovementCount < substrCrossDomain) {
if (mainString.charAt(mainStringSubscript) == subString.charAt(j)) {
if (mainStringSubscript - mainstrPreviousSubscript < mainstrCrossDomain) { //判断主串下标移动的范围值,如果是第一次匹配,则无穷
substrSubscript = j + 1;//将子串下标设置为当前匹配到的下标,并将子串下标移一位
matchingItem.add(subString.charAt(j));
result.add(mainStringSubscript);
} else {
report.add("超出主串允许的跨界幅度:" + mainString.charAt(mainStringSubscript));
}
mainstrPreviousSubscript = mainStringSubscript;
break;
}
} else {
break;
}
subscriptMovementCount++;
if (j==subString.length()){
mainStringSubscript = fistCharShow;
}
}
mainStringSubscript ++;
}
for (int i = fistCharShow; i < mainString.length(); i++) { } currentEliminationNumber = subString.length() - matchingItem.size(); //汇报信息处理 String strs = "子串符合主串匹配的字符集为:"; if (currentEliminationNumber > substrElimination) {
report.add("消除的子串个数超过预设值,所以结果无效");
effectiveness = false;
} else {
report.add("消除的子串个数在预设值内,所以结果有效");
effectiveness = true;
}
for (int i = 0; i < matchingItem.size(); i++) {
strs += matchingItem.get(i).toString();
}
report.add(strs);
strs = "在主串分别出现的位置为(以0作为起始值):";
for (int i = 0; i < result.size(); i++) {
strs += result.get(i).toString() + ",";
}
report.add(strs);
//汇报
if (reportOpen) {
for (int i = 0; i < report.size(); i++) {
System.out.println(report.get(i));
}
}
this.readGetResult = true;
return effectiveness;
}
}