软工课设-第11-12周工作内容总结

用阿里开源的MemoryScope和硅基流动免费API,给你的AI聊天机器人装上‘记忆’(保姆级避坑指南) 本文详细介绍了如何利用阿里开源的MemoryScope框架和硅基流动免费API,为零成本构建具备长期记忆功能的AI聊天机器人。通过实战指南和避坑技巧,开发者可以轻松实现AI Agent的记忆存储与检索,提升用户体验和对话连贯性。 阅读详情

一、开发工具及实现方法

选择Myeclipse2019进行开发,配置:jdk1.8、tomcat8.5
实现方法:html+css+js

二、项目进展及描述

1、前几周的开发使用python完成了ui界面
2、应课设要求拓展该项目(使用Java开发):
(1)编写一个页面实现黄金点游戏
(2)利用Echarts对G值进行可视化
(3)改变游戏规则
(4)建立一个响应式登录界面
(5)如果可以,在登录上再加入微信扫码功能或者开发微信平台进行开发
PS:因为游戏本身没有太大的可变性和延展性,所以我们决定把登录界面做的高大上一点。

三、前端游戏页面的简单实现

下面展示 界面(html+css)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- 引入 echarts.js -->
    <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
<title>黄金点游戏</title>
</head>
<body background="1.jpg">

<div>
<font color="black" size="+2">
黄金点游戏规则:N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分
</font>
<font color="red" size="+2">(刷新以重新开始游戏)</font>
<br/>
<br/>
<table width="500" border="0" align="center">
  <tr>
    <td>
<font color="black" size="+2">
输入人数:<input type="text" id="mans" value=" " /><br/>
输入轮数:<input type="text" id="times" value=" " />
<button onclick="numClick()">开始游戏</button>
<button onclick="getHis()">历史输入</button>
<button onclick="getChart()">柱状图</button>
<button onclick="getChart1()">折线图</button>
</font>
 <br/><br/>
 <font color="black" size="+1.8">
<div id="Champion"></div>
 <br/>
<div id="box1"></div>
<br/>
<div id="long"></div>
<br/>
<div id="close"></div>
<br/>
<div id="final"></div>
<br/>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>
</font>
</td>
  </tr>
</table>
</div>
</body>
</html>

界面

下面展示 游戏功能(js)

var his=[];//历史输入
var gb= new Array();//存放G值

function numClick()
{
    myVal=parseInt(document.getElementById("times").value);
    name=parseInt(document.getElementById("mans").value);
    var save=[];
    var sum=0;
    var num=0;
    var reg = new RegExp("^[0-9]*$");//验证数字的正则表达
    if(myVal==''||!reg.test(myVal)||name==''||!reg.test(name)){
    	document.getElementById('Champion').innerHTML="输入错误,请检查输入是否为正整数!";
    }
    else{
    	document.getElementById('Champion').innerHTML="";
    	for(var i=1;i<=name;i++)
        {
            save[i]=new Array();
            save[i][1]=0;
        }
    	//var his=[];
    	his[0]="";
    	for(var s=1;s<=myVal;s++)
        {
            alert("第"+s+"轮开始,玩家准备输入数")
            document.getElementById('long').innerHTML +="第"+s+"轮最远玩家:";
            document.getElementById('close').innerHTML +="第"+s+"轮最近玩家:";
            document.getElementById('final').innerHTML="";
            document.getElementById('Champion').innerHTML="";
            his[0]+="第"+s+"轮:<br/>"
            var sum=0;
            var num=0;
            for(var i=1;i<=name;i++)
            {
            	num=parseFloat(prompt("输入第"+i+"个数","0"));
            	while(num==''||!isNumber(num))
            	{
            		num=parseFloat(prompt("输入错误!请重新输入第"+i+"个数","0"));
            	}
  				his[0]=his[0]+"玩家"+i+"输入:"+num+"<br/>";
            	sum+=num;
            	save[i][0]=num;
            		
            	
            }
            sum=sum/name;
            sum=sum*0.618;
            his[0]=his[0]+"G值为:"+sum+"<br/><br/>";
            var k=0;
            k=save[1][0]-sum;
            save[1][0]=Math.abs(k);
            var max=Math.abs(k);
            var min=Math.abs(k);
            for(var j=2;j<=name;j++)
            {
                k=save[j][0]-sum;
                save[j][0]=Math.abs(k);
                if(save[j][0]>max)
                {
                    max=save[j][0];

                }
                if(save[j][0]<min)
                {
                    min=save[j][0];
                }
            }
            for(var i=1;i<=name;i++)
            {
                if(save[i][0]===max)
                {
                    save[i][1]+=-2;
                    document.getElementById('long').innerHTML +="玩家"+i+"   .";
                    
                }
                if(save[i][0]===min)
                {
                    save[i][1]+=parseInt(name);
                    document.getElementById('close').innerHTML +="玩家"+i+"   .";
                    
                }
            }
            document.getElementById('box1').innerHTML +="第"+s+"轮G值:"+sum+"<br/>";
            gb[s-1]=sum;
            if(s!=myVal)
            {
            	alert("第"+s+"轮结束,玩家准备下轮输入数");
            }
            else{
                    alert("本局已结束!!");
                }
            document.getElementById('long').innerHTML +="<br/>";
            document.getElementById('close').innerHTML +="<br/>";

        }
    	var ma=save[1][1];
    	var count=1;
     	for(var i=1;i<=name;i++)
        {
         	document.getElementById('final').innerHTML +="玩家"+i+"总得分为:"+save[i][1]+"     ."+"<br/>";
         	if(save[i][1]>ma)
         	{
             	ma=save[i][1];
             	count=i;
         	}
        }
     	for(var i=1;i<=name;i++)
    	{
        	if(save[i][1]===ma)
        	{
            	document.getElementById('Champion').innerHTML+="玩家"+i+"获胜!   .";
        	}
    	}
    }
}
function getHis()
{
	if(his[0]!=[])
	{
		document.getElementById('Champion').innerHTML="";
		document.getElementById('box1').innerHTML="";
		document.getElementById('long').innerHTML="";
		document.getElementById('close').innerHTML="";
		document.getElementById('final').innerHTML="";
		document.getElementById('Champion').innerHTML=his[0];
	}
	else
	{
		document.getElementById('Champion').innerHTML="无历史输入记录";
	}
	
}
function isNumber(val){//判断是否为非负浮点数

    var regPos = /^\d+(\.\d+)?$/; //非负浮点数
    //var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
    if(regPos.test(val)){
        return true;
    }else{
        return false;
    }

}

开始游戏

历史输入

下面展示 柱状图和折线图(Echarts)

function getChart()
{
	var myChart = echarts.init(document.getElementById('main'));
 
        // 指定图表的配置项和数据
        var option = {
            title: {
                text: '柱状图'
            },
            tooltip: {},
            legend: {
                data:['G值']
            },
            xAxis: {
                data: ["第1轮","第2轮","第3轮","第4轮","第5轮","第6轮","第7轮","第8轮","第9轮","第10轮"]
            },
            yAxis: {},
            series: [{
                name: 'G值',
                type: 'bar',
                data: [gb[0], gb[1], gb[2], gb[3], gb[4], gb[5], gb[6], gb[7], gb[8], gb[9]]
            }]
        };
 
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
}
function getChart1()
{
	 var option = {
        title:{
            text:'折线图'
        },
        tooltip:{},
        legend:{
            data:['G值']
        },
        xAxis:{
            data:["第1轮","第2轮","第3轮","第4轮","第5轮","第6轮","第7轮","第8轮","第9轮","第10轮"]
        },
        yAxis:{
        },
        series:[{
            name:'G值',
            type:'line',
            areaStyle: {
                normal: {}
            },
            data:[gb[0], gb[1], gb[2], gb[3], gb[4], gb[5], gb[6], gb[7], gb[8], gb[9]]
        }]
    };
    //初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));

    //使用制定的配置项和数据显示图表
    myChart.setOption(option);
}

柱状图
折线图

第十四周软工课设(补写) 工作总述: 我们为自己的前端代码加入一个相对而言更为美观的前端界面 新增加数据分析模块 新增加了语音模块 重构了数据导出模块 调整控制GUI界面 我们还有很多事要做 未来一周工作预期: 将 jsp文件重新部署为servlet 游戏逻辑的再次梳理 Tk应用界面的再次优化 新的数据表: 游戏回合统计 玩家记录(存疑)我们是否需要玩家登录 前端界面展示 数据分析: 我们分析了一些常见的统计数据 语音播报 语音播报能够播放当前回合winner import sound import pymysq 阅读详情

相关推荐

软件工程课设记录

放假的前十天,三门考试,一门课设。这十天需要很紧。之前做的数据结构课设、数据库课设、uml大作业、.net大作业的时候,都没有很好的做一下记录,结束之后只有“大 仇得报”的快感而没有仔细分析和总结。趁着这次软工课设的进度也只是刚刚开题,态度认真的按照软件工程的要求,做完这个课设。顺便开贴做个记录。结束后附上相关的文档代码。 2014年12月30日 上午给辛老师上交的是’软件工程课程设计任务书

mmrx的博客 2279

软工课设心得体会

设计 预先的设计可避免很多开发返工 在良好的设计思路指导下,开发工作会简化许多。 良好的设计需要团队成员不断地交流沟通,每个人的想法通过用例图、类图或者数据流图来精炼提纯,需求可愈发明确。设计多了,开发就简单一些 良好的名词定义可避免概念混乱 书同文,车同轨。同上一条。团队在相同的规范性工作。避免大家说了半天,发现不是一个东西。 团队交流 完全的线上交流还是有些问题,效率不如线下 在文档协同开发中,不能仅依赖于微信群,用git+typora是一个轻量级的方案(记得改图片地址路径),更大规模的协作或许需

wangbyby 967

数字生存指南:30个真实场景下的免费效率工具实战方案

在信息过载时代,‘数字工具’的本质不是功能堆砌,而是对具体工作流的精准响应。理解AI工具的底层逻辑,需从‘任务触发—智能响应—结果交付’这一闭环出发,而非孤立比较参数或界面。真正高效的工具必须满足三重标准:真免费(无数据训练、无导出水印、无功能阉割)、真可用(网页即开、配置≤3分钟)、真省心(无需提示词工程或API知识)。尤其在PPT生成、视频拆解、文档批量处理等高频场景中,工具的价值体现在能否解决‘逻辑瘫痪’‘内容搬运耗时’‘照片路径错位’等细节卡点。本文聚焦豆包、笔格PPT、DocuGen、Notese

weixin_30129025的博客 335

《软件工程》课程设计总结

   经过三个sprint流程,加深了对软件开发过程的认识,同时也熟悉了对GitHub工具的使用方法,上一次上传代码使用敲代码的形式上传,这次改变了方式,使用了电脑的桌面版本,很方便,也很快捷,建议对github上传代码命令不熟悉的同学也可以尝试使用。此外,通过我们团队每个成员合理分配工作任务,点餐APP基本实现了其应该具备的功能,我们先是实现了前台,然后实现后台,任务分配比较好。在做项目的每...

weixin_30512089的博客 2807

小企业生成式AI落地实战指南:零代码、中文友好、当天见效

生成式AI并非大厂专属技术,而是小企业降本增效的实用工具。其核心原理在于将重复性人力任务转化为可预测的时间节省,而非追求模型参数或算力指标。技术价值体现在单次操作缩短分钟级耗时、员工15分钟内上手、工具年费快速回本等可量化收益。典型应用场景覆盖内容生产、客户沟通、流程文档、视觉设计与数据整理五大高频痛点,尤其适配微信生态、小红书、企业微信等本土平台。本文聚焦‘零代码+中文原生+即插即用’路径,结合秘塔写作猫、腾讯文档AI、飞书多维表格等真实工具链,提供小企业主下午三点动手、四点十五分见效的落地切口。

weixin_30470643的博客 413

软件工程课程设计心得总结

软件工程课程设计心得体会个人总结,关于web BBS论坛开发,数据库网络应用程序

软工最后一次作业:结课总结—苏若

【姗姗来迟】   光阴荏苒,不知不觉大三上学期已悄然离去。蜷于列车,坐在窗前,回想这学期的得与失,不禁黯然。经历了一学期《软件工程基础》课的学习,多多少少还是有些收获的。成功也罢,失败也好,一条路走过来,最重要的大概莫过于总结反思并改进。   开学伊始,“软件工程”这个概念对我来说是模糊而又陌生的。   先修课程在知识和动手能力方面的引导不甚惶恐。两年走来,回头看看却突然觉得自己貌...

weixin_30687051的博客 166

软件工程课程设计总结

软件工程课程设计总结,文档是我自己写的~~ 讲了很多关羽软件工程这门课的观点和重要性。

undefined-冲刺总结

作业所属课程 构建之法-2021秋-福州大学软件工程 作业要求 2021秋软工实践 alpha冲刺 团队名称 UNDEFINED 这个作业的目标 alpha冲刺总结 冲刺计划的链接 冲刺日志集合 分工 前端组长 彭诗洋 前端工作 彭诗洋、陈宗航、李文定、黄义结、艾...

m0_52687866的博客 592

现场总线课程设计-基于modbus协议使用QT实现主从站控制通信

【平台:QT】 【协议:modbus(注:由于要求,需要自己来实现modbus库,而非直接调用已有的库)】 【由于复制粘贴,时间原因可能格式有误,如需要具体工程文件以及报告文件请私信博主】 1、 大作业任务: (1)使用附件中工具软件体验MODBUS主从站数据传输过程(可在主从站模拟工具里面观察各功能码对应数据帧内容并对其进行分析) (2)使用串口调试助手,手工发出MODBUS主、从站该发出的数据,并观察对方发出的数据 (3)实现MODBUS主、从站功能,描述实现过程(语言不限于使用VC

weixin_44469597的博客 4066

帕德伯恩大学轴承数据集(PU)介绍

PU数据集介绍一、帕德伯恩大学轴承数据集故障类别说明二、关于损伤描述2.1 损伤组合:2.2 重复和多重损伤的安排:2.3 几何尺寸2.4 损伤程度2.5损伤特征数据集损伤类别三、人为损坏轴承3.1 最常用的人为损伤制造方法是:3.2 本数据集使用的人工损坏是由三种不同方法引起的四、通过加速寿命试验产生真正的轴承损坏样本 一、帕德伯恩大学轴承数据集 数据集下载地址 从帕德伯恩大学获得的PU数据集是一个6203轴承数据集,包括人为诱发的和真实的损害。采用压电加速度计采集轴承座的振动信号,采样频率为64 kHz

m0_47180208的博客 3万+

Z-XML团队年终博客整理

一个优秀的团队一定有逻辑清晰,风格优雅,严格规范的博客.                         ------图灵 大三上转眼间已经到了收官阶段,我们的软工课也逐渐接近尾声.在二轮迭代即将结束的时候,当我们梳理一路走来的软工课,我们发现自己收获了好多好多.除了我们那一款改变世界+1的团队游戏,一个学期下来整个团队积累下来的博客同样令人心潮澎湃.本篇文章,作为一篇目录帖,将带您走进一个创...

weixin_33737774的博客 115

新手工程师必看:搞定EMI传导干扰,从理解差模和共模开始(附实战案例)

本文深入解析EMI传导干扰中的差模与共模问题,为新手工程师提供从诊断到治理的完整方法论。通过实战案例展示如何通过频谱分析、近场探头扫描等技术精准定位干扰源,并分享PCB布局、滤波器设计等系统级解决方案,帮助工程师高效解决传导干扰问题,提升EMC设计能力。

weixin_26757925的博客 472

家长必备AI工具:Qwen儿童萌宠生成器部署教程分享

本文介绍了如何在星图GPU平台上自动化部署Cute_Animal_For_Kids_Qwen_Image镜像,快速搭建儿童友好型AI萌宠图片生成环境。用户仅需简单输入自然语言描述(如‘戴草帽的橘猫在花园追蝴蝶’),即可本地生成安全、可爱、风格统一的绘本级插画,适用于亲子早教、手工模板与儿童故事配图等场景。

weixin_42612804的博客 296

MemSeg:一种差异和共性来检测图像表面缺陷的半监督方法

本文认为人为创建类内差异和保持类内共性可以帮助模型实现更好的缺陷检测能力,从而更好地区分非正常图像。如图一所示。差异(differences):MemSeg引入人工模拟的异常图像在训练阶段使模型能够区分正常和异常的图像,减轻了半监督学习只能用正常样本进行训练的不足,然后在推理阶段可以直接输入图像无需做任何后处理。共性(commonalities):MemSeg引入了一个记忆池来记录正常样本的通用模式,在训练和推理阶段,比较输入图像和记忆池中的样本之间的差异,为异常区域的定位提供有用的信息。

斯人若彩虹,遇上方知有! 4841

Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略

本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。

moon9的博客 945

现代程序设计 (课程设计中, 征求意见稿)

背景: 目前中国大陆大学里学的编程主要有两种: 1) 学编程为了应付考试,偏重于静态的知识点, 语言细节。以闭卷考试为主。有些学校的数据结构和算法课有许多实际的练习,也有的课程练习很少。 2) 学编程为了ACM 算法比赛,偏重于算法, 解决抽象的问题。主要是由兴趣小组/面向比赛方式。 大部分同学到了工作中都用不着上面两种能力 (忘了语言细节可以查;

SoftwareTeacher的专栏 2361

数据分析——员工离职预测

员工离职预测一. 题目描述二. 数据说明三. 步骤实现1.导入并查看2.数据探索性分析3.数据处理4.模型分析5.结果分析(1) 可视化的结果分析(2)特征选择结果分析(3)多模型交叉验证结果分析 一. 题目描述 员工是否准备离职是困扰用人单位的问题,其关系到单位业务的开展及新人员的招聘,及时的分析出有离职倾向的员工成为关键的因素。数据主要包括影响员工离职的各种因素(工资、出差、工作环境满意度、工作投入度、是否加班、是否升职、工资提升比例等)以及员工是否已经离职的对应记录。 二. 数据说明 数据分为训练数据

weixin_43925467的博客 1万+

node.js儿童手工创意店管理系统的设计与实现程序+论文 可用于毕业设计

在国内外,大多数店铺管理系统侧重于通用功能的实现,如销售、库存管理等基本模块,而对于儿童手工创意店这种特殊业态下,针对顾客特殊需求(如儿童手工课程预订、作品展示等)、店员特殊职能(如手工指导安排)以及商品独特分类(如手工材料、工具、成品分类)等方面的研究存在不足。同时,该系统能够提升顾客的体验,如方便顾客预订手工课程、查询商品信息等。针对特殊功能的实现困难,通过深入儿童手工创意店进行实地调研,与店主、店员、顾客进行充分沟通,详细了解实际需求,同时参考类似特殊业态管理系统的部分功能,准确确定系统的功能需求。

zhiwen206的博客 942

使用IGV软件可视化染色质可及性

染色质可及性(chromatin accessibility)是指DNA序列在植物细胞核中的可访问程度。染色质是由DNA和蛋白质组成的复杂结构,它紧密地包裹在细胞核中,并影响基因的表达和功能。染色质可及性研究着重于理解染色质是否容易被转录因子和其他调控蛋白访问,从而影响基因的表达。文献中,常常会有下面这种图片来表示基因组上的一些区域或基因的染色质开放性强弱。一般情况下,我们可以使用IGV软件或GSA-man软件进行可视化,两者的操作相似。这里,以IGV软件为例,演示如何对染色质可及性进行可视化。

沉香best的博客 3724

道路缺陷检测实战指南:基于YOLOv11的深度学习系统从搭建到落地

道路缺陷检测项目的每一步,都是“理论→实践→反思→优化”的成长循环。当你看到自己开发的系统能精准识别出道路上的每一处裂缝、每一个坑洼时,那种“技术解决真实问题”的成就感,会让你明白深度学习不止是论文里的公式,更是改变行业的工具。如果过程中遇到模型不收敛、界面功能异常等问题,不妨把问题拆解成“数据是否标注准确?”“模型参数是否合理?”“界面逻辑是否有漏洞?”等小问题逐一排查。记住,每解决一个问题,你就离“能独立落地AI项目的工程师”更近一步。

LXY_LOVE36的博客 172

采访传统软件工程课程学生总结(二)

本文传统软件工程课程学生总结(一)的补充,采用相同的调查问卷,并同时对部分问题另作探讨。 通过作为本次采访对象为计算机学院2010届学生吕舜、陶正、王睿俊、魏嘉亮、赵继伟、邹鸿渐团队,他们这学期在软工课上开发的项目是2D弹幕射击游戏:《东方梦世界》 项目简介: 《东方梦世界》为基于“东方Project”同人系列作品世界观的,利用国外开源图形引擎Allegro的,一款独立制作的S...

281

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SpringBoot社区老人颐养关爱平台05161

SpringBoot社区老人颐养关爱平台05161本系统(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容。

2401_86540270的博客 838

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 软工课设-第9-10周工作内容总结
下一篇: 软工课设-第13-14周工作内容总结
BlueIsWarmest
博客等级 码龄8年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值