代码写的都队——Alpha冲刺Day1
| 这个作业属于哪个课程 | 2301-计算机学院-软件工程 |
|---|---|
| 这个作业要求在哪里 | 团队作业——站立式会议+alpha冲刺 |
| 这个作业的目标 | Alpha冲刺Day1随笔 |
| 团队名称 | 代码写的都队 |
| 团队项目 | 闲置宝 |
| 团队随笔置顶集合 | 代码写的都队——Alpha 冲刺随笔置顶 |
目录
- 会议照片
- 成员每日工作总结
- 102101526易华章
- 102101505宋玲钰
- 102101508林嘉欣
- 102101520陈一城
- 052101432蔡鹏宇
- 052101402王昊阳
- 102101534 翁锐晨
- 102101519何万钦
- 102101502龙安媛
- 102101609王小亮
- 项目燃尽图
会议照片

成员每日工作总结
102101526易华章
昨天站立式会议到现在的进展
完成项目仓库、框架的搭建,安排项目进度和分配任务
存在的问题/遇到的困难
暂无
今天到明天会议的安排
Push组员完成工作任务
心得体会
第一次带团队编程,感觉还是有很多东西要学的,希望之后能带大家又快又好地做完这个项目。
102101505宋玲钰
昨天站立式会议到现在的进展(附代码图/页面图):
完成搜索页:

- 存在的问题/遇到的困难
首次使用uni-app有些许不熟练,花了较长时间熟悉使用组件,历史记录的布局也较难调整。
- 今天到明天会议的安排
完善搜索页,开始做商品分布页面。
- 心得体会
体验使用了uni-app里的搜索栏组件和ui组件,参考了uni-app模板,使用起来较便捷。
102101508林嘉欣
- 昨天站立式会议到现在的进展
完成了注册界面的设计

- 存在的问题/遇到的困难
第一次使用uni-app还不是很熟练,配置各种组件花了一定时间,样式调整了比较久。
- 今天到明天会议的安排
完善注册界面,把Element UI组件换成Uni UI组件,开始做商品详情界面,进一步学习相关知识。
- 心得体会
使用Element UI组件很便利,效率提高很多。
102101520陈一城
- 昨天站立式会议到现在的进展(附代码图/页面图)
完成了7张基本表(用户表Users、商品信息表Goods、交易表Trades、评价记录表Evaluations、消息表Messages、收藏Favorites、搜索历史Historys)的建立和插入新元组时的对数据合法性的检查
CREATE TABLE Users (
User_ID INT NOT NULL AUTO_INCREMENT,
User_Name VARCHAR(10) NOT NULL UNIQUE,
User_Key VARCHAR(18) NOT NULL,
FZU_Key CHAR(9) DEFAULT NULL UNIQUE,
Head_Portrait VARCHAR(255),
Delivery_Address VARCHAR(255),
PRIMARY KEY (User_ID)
);
-- 创建BEFORE INSERT触发器
DELIMITER //
CREATE TRIGGER Users_insert_trigger
BEFORE INSERT ON Users
FOR EACH ROW
BEGIN
DECLARE Users_In_Table INT;
-- 检查表中是否已有元组
SELECT COUNT(*) INTO Users_In_Table FROM Users;
-- 如果表为空,将User_ID设为100000001
IF Users_In_Table = 0 THEN
SET NEW.User_ID = 100000001;
END IF;
-- 检查User_Name长度是否符合要求
IF LENGTH(NEW.User_Name) < 2 OR LENGTH(NEW.User_Name) > 10 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'User_Name长度不符合要求';
END IF;
-- 检查User_Name是否已存在
IF EXISTS (SELECT 1 FROM Users WHERE User_Name = NEW.User_Name) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'User_Name已存在';
END IF;
-- 检查User_Key长度是否符合要求
IF LENGTH(NEW.User_Key) < 6 OR LENGTH(NEW.User_Key) > 18 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'User_Key长度不符合要求';
END IF;
-- 检查FZU_Key是否为9个数字字符
IF LENGTH(NEW.FZU_Key) <> 9 OR NEW.FZU_Key REGEXP '[^0-9]' THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'FZU_Key格式不正确';
END IF;
-- 检查FZU_Key是否已存在
IF EXISTS (SELECT 1 FROM Users WHERE FZU_Key = NEW.FZU_Key) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'FZU_Key已存在';
END IF;
END//
DELIMITER ;
CREATE TABLE Goods (
Goods_ID INT NOT NULL AUTO_INCREMENT,
Goods_Name VARCHAR(20) NOT NULL,
Seller_ID INT NOT NULL,
Goods_Price DECIMAL(10, 2) NOT NULL,
Goods_Description VARCHAR(100) NOT NULL,
Classification ENUM('文娱用品', '学习用品', '生活用品', '交通工具', '奇奇怪怪') NOT NULL,
Release_Time DATETIME,
Goods_Pictures VARCHAR(255),
PRIMARY KEY (Goods_ID),
FOREIGN KEY (Seller_ID) REFERENCES Users(User_ID)
);
-- 创建BEFORE INSERT触发器
DELIMITER //
CREATE TRIGGER Goods_insert_trigger
BEFORE INSERT ON Goods
FOR EACH ROW
BEGIN
DECLARE Goods_In_Table INT;
-- 检查表中是否已有商品
SELECT COUNT(*) INTO Goods_In_Table FROM Goods;
-- 如果表为空,将Goods_ID设为1000000001
IF Goods_In_Table = 0 THEN
SET NEW.Goods_ID = 1000000001;
END IF;
-- 检查Goods_Name长度是否符合要求
IF LENGTH(NEW.Goods_Name) < 2 OR LENGTH(NEW.Goods_Name) > 20 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Goods_Name长度不符合要求';
END IF;
-- 检查Seller_ID是否在Users中存在
IF NOT EXISTS (SELECT 1 FROM Users WHERE User_ID = NEW.Seller_ID) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Seller_ID在Users中不存在';
END IF;
-- 检查Goods_Price是否为数字且非负数
IF NEW.Goods_Price < 0 OR NEW.Goods_Price IS NULL THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Goods_Price必须为非负数';
END IF;
-- 检查Goods_Description长度是否符合要求
IF LENGTH(NEW.Goods_Description) < 2 OR LENGTH(NEW.Goods_Description) > 100 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Goods_Description长度不符合要求';
END IF;
-- 检查Classification是否符合要求
IF NEW.Classification NOT IN ('文娱用品', '学习用品', '生活用品', '交通工具', '奇奇怪怪') THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Classification不符合要求';
END IF;
-- 设置Release_Time为当前时间
SET NEW.Release_Time = NOW();
END//
DELIMITER ;
-- 创建交易记录表
CREATE TABLE Trades (
Trade_ID INT NOT NULL AUTO_INCREMENT,
Buyer_ID INT NOT NULL,
Seller_ID INT NOT NULL,
Trade_Time DATETIME NOT NULL,
Paid_Amount DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (Trade_ID),
FOREIGN KEY (Buyer_ID) REFERENCES Users (User_ID),
FOREIGN KEY (Seller_ID) REFERENCES Users (User_ID)
);
-- 创建BEFORE INSERT触发器
DELIMITER //
CREATE TRIGGER Trades_insert_trigger
BEFORE INSERT ON Trades
FOR EACH ROW
BEGIN
DECLARE 交易数 INT;
-- 检查表中是否已有交易记录
SELECT COUNT(*) INTO 交易数 FROM Trades;
-- 如果表为空,将Trade_ID设为1000000001
IF 交易数 = 0 THEN
SET NEW.Trade_ID = 1000000001;
END IF;
-- 检查买家ID和卖家ID是否存在以及是否相同
IF NOT EXISTS (SELECT 1 FROM Users WHERE User_ID = NEW.Buyer_ID) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '买家ID在Users中不存在';
END IF;
IF NOT EXISTS (SELECT 1 FROM Users WHERE User_ID = NEW.Seller_ID) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '卖家ID在Users中不存在';
END IF;
IF NEW.Buyer_ID = NEW.Seller_ID THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '买家ID和卖家ID不能相同';
END IF;
-- 检查Paid_Amount是否为数字且非负数
IF NEW.Paid_Amount < 0 OR NEW.Paid_Amount IS NULL THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Paid_Amount必须为非负数';
END IF;
-- 设置交易时间为当前时间
SET NEW.Trade_Time = NOW();
END//
DELIMITER ;
-- 创建评价记录表
CREATE TABLE Evaluations (
Trade_ID INT NOT NULL,
Buyer_Evaluation VARCHAR(200),
Seller_Evaluation VARCHAR(200),
PRIMARY KEY (Trade_ID),
FOREIGN KEY (Trade_ID) REFERENCES Trades (Trade_ID)
);
-- 创建消息记录表
CREATE TABLE Messages (
Message_ID INT NOT NULL AUTO_INCREMENT,
Sender_ID INT NOT NULL,
Receiver_ID INT NOT NULL,
Message_Content VARCHAR(200) NOT NULL,
Time DATETIME NOT NULL,
Read BOOLEAN DEFAULT FALSE,
PRIMARY KEY (Message_ID),
FOREIGN KEY (Sender_ID) REFERENCES Users (User_ID),
FOREIGN KEY (Receiver_ID) REFERENCES Users (User_ID)
);
-- 创建BEFORE INSERT触发器
DELIMITER //
CREATE TRIGGER Messages_insert_trigger
BEFORE INSERT ON Messages
FOR EACH ROW
BEGIN
DECLARE 消息数 INT;
-- 检查表中是否已有消息记录
SELECT COUNT(*) INTO 消息数 FROM Messages;
-- 如果表为空,将Message_ID设为1000000001
IF 消息数 = 0 THEN
SET NEW.Message_ID = 1000000001;
END IF;
-- 检查Sender_ID是否存在于Users中
IF NOT EXISTS (SELECT 1 FROM Users WHERE User_ID = NEW.Sender_ID) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Sender_ID在Users中不存在';
END IF;
-- 检查Receiver_ID是否存在于Users中
IF NOT EXISTS (SELECT 1 FROM Users WHERE User_ID = NEW.Receiver_ID) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Receiver_ID在Users中不存在';
END IF;
-- 检查Message_Content是否超过200个字符
IF LENGTH(NEW.Message_Content) > 200 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Message_Content超过200个字符';
END IF;
-- 设置发送时间为当前时间
SET NEW.Time = NOW();
END//
DELIMITER ;
-- 创建收藏信息表
CREATE TABLE Favorites (
Favorite_ID INT NOT NULL AUTO_INCREMENT,
User_ID INT NOT NULL,
Good_ID INT NOT NULL,
Insert_Time DATETIME NOT NULL,
PRIMARY KEY (Favorite_ID),
FOREIGN KEY (User_ID) REFERENCES Users (User_ID),
FOREIGN KEY (Good_ID) REFERENCES Goods (Goods_ID)
);
-- 创建BEFORE INSERT触发器
DELIMITER //
CREATE TRIGGER Favorites_insert_trigger
BEFORE INSERT ON Favorites
FOR EACH ROW
BEGIN
DECLARE Favorite_Amount INT;
-- 检查表中是否已有收藏记录
SELECT COUNT(*) INTO Favorite_Amount FROM Favorites;
-- 如果表为空,将Favorite_ID设为1000000001
IF Favorite_Amount = 0 THEN
SET NEW.Favorite_ID = 1000000001;
END IF;
-- 检查User_ID是否存在于Users中
IF NOT EXISTS (SELECT 1 FROM Users WHERE User_ID = NEW.User_ID) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'User_ID在Users中不存在';
END IF;
-- 检查Good_ID是否存在于Goods中
IF NOT EXISTS (SELECT 1 FROM Goods WHERE Goods_ID = NEW.Good_ID) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Good_ID在Goods中不存在';
END IF;
-- 设置插入时间为当前时间
SET NEW.Insert_Time = NOW();
END//
DELIMITER ;
-- 创建搜索记录表
CREATE TABLE Historys (
Search_ID INT NOT NULL AUTO_INCREMENT,
User_ID INT NOT NULL,
Keyword VARCHAR(10) NOT NULL,
PRIMARY KEY (Search_ID),
FOREIGN KEY (User_ID) REFERENCES Users (User_ID)
);
-- 创建BEFORE INSERT触发器
DELIMITER //
CREATE TRIGGER Historys_insert_trigger
BEFORE INSERT ON Historys
FOR EACH ROW
BEGIN
DECLARE Favorite_Amount INT;
DECLARE User_Search_History INT;
-- 检查表中是否已有收藏记录
SELECT COUNT(*) INTO Favorite_Amount FROM Historys;
-- 如果表为空,将Search_ID设为1000000001
IF Favorite_Amount = 0 THEN
SET NEW.Search_ID = 1000000001;
END IF;
-- 检查相同User_ID的记录数量
SELECT COUNT(*) INTO User_Search_History FROM Historys WHERE User_ID = NEW.User_ID;
-- 如果数量等于十条,删除Search_ID最小的一条记录
IF User_Search_History = 10 THEN
DELETE FROM Historys WHERE Search_ID = (SELECT MIN(Search_ID) FROM Historys WHERE User_ID = NEW.User_ID);
END IF;
END//
DELIMITER ;
- 存在的问题/遇到的困难
对接口不是很熟悉,对表的具体结构设计不是很清晰(比如:用户表的头像属性需要可以索引到图片,商品信息表的商品图片也需要索引到图片,目前没有图片表来规范的存储图片,而是在各个需要索引图片的属性中保存路径)
- 今天到明天会议的安排
实现常见需求的查询、实现向表中插入数据的接口。
- 心得体会
运用了学到的数据库知识,现在对数据库理解更加深刻。
052101432蔡鹏宇
- 昨天站立式会议到现在的进展(附代码图/页面图)
初步完成对用户的登录注册请求的参数校验和返回处理

- 存在的问题/遇到的困难
对于spring框架以及java servelet框架的httpsession使用不熟练,需要在后面冲刺环节继续学习。
- 今天到明天的安排
完善用户登录以及注册接口的实现
- 心得体会
对后端接口开发的总体过程有了很大的了解,学习使用springboot的过程中发现了其的自动配置功能,可以根据项目中的依赖自动配置相应的组件,大大减少了手动配置的工作量。
052101402王昊阳
- 昨天站立式会议到现在的进展(附代码图/页面图)
实现ueser类(完成登录和注册逻辑)

两个逻辑函数分别如下


- 存在的问题/遇到的困难
对于某些逻辑的设想思考不全面,很多情况无法全部包含。
- 今天到明天的安排
完善逻辑,减少使用bug
心得体会
对于逻辑的设计学习到了很多,将dao层的指令封装后可以供contorller层使用。
102101534 翁锐晨
- 昨天站立式会议到现在的进展
今天学习了postman执行接口测试的基本页面,了解了请求页面中params,authorization,body等所显示的意思,也了解了一些post,raw等请求传参的形式,以及相应界面body接口传回来的数据信息,以及了解了post请求创建标签接口和get请求获取接口统一鉴权码和token接口。与此同时也了解了post传参和get传参的本质区别:Get请求是在地址后面以?的形式传参,多个参数之间用&分开;Post请求是在body以表单的方式传参。在这之后,还学习了一些用Json提取器以及正则表达式提取器实现手动关联的接口连接。
存在的问题/遇到的困难:可能对真正实现接口的时候可能实现有些困难,不容易进行接口的连接。
今天到明天的安排
明天继续学习有关知识
心得体会:对postman一些接口的测试有了更加深刻的理解与认识,以前完全不知道所谓的接口测试应当如何去实现,现在应该能够处理一下简单的接口测试,同时借此机会也对接口的概念有了进一步的认识与理解。
102101519何万钦
昨天站立式会议到现在的进展
在查看文档时,没有发现什么需要进行测试的接口,于是在网上寻找了资料进行学习。大概了解了一下ssm和mvc等知识,大概了解一下接口方面的有关信息,方便以后测试接口。在接口测试方面,学习了postman的测试方法,例如post、get等测试方法。
存在的问题/遇到的困难
目前感觉学到的东西都比较浅薄,也没有进行上手实践,不太确定后续真正进行测试操作时能否正常地、成功地进行操作。
今天到明天的安排
在今天到明天的这段时间里,我打算继续更加深入地学习一下postman等测试工具和测试方法,同时查看其他成员的接口,在更新出有关内容时,需要进行测试时,及时尝试使用学习的方法进行测试,确保功能能够正常运行。
心得体会
个人感觉测试也不是非常简单的工作,需要大概读懂有关接口的内容,并且设计测试用例,考虑边界问题等等,并且熟练运用测试工具进行测试分析,对于不正确的地方要能够分析问题出现在什么地方。目前个人也没有对测试工具和方法非常熟悉,希望在后续的操作中能更加熟悉、掌握测试工具,不出现比较严重的失误,成功完成测试的任务。
102101502龙安媛
在B站学习了vue2.0的课程,了解了在uniapp上如何利用组件进行开发的过程
基础不太行,边学还得边复习前端的内容,效率不太行
今天到明天会议的安排是尽快把vue部分知识过一遍,然后着手负责的开发内容
用vue比原生HTML+CSS+java写前端更方便快捷
102101609王小亮
- 学习Vue.js基础知识,将HTML文件转换为Vue.js
并开始着手项目首页的制作

项目燃尽图

相关推荐
弱电网下光伏并网逆变器序阻抗建模仿真复现扫频法【序阻抗判断稳定性】
内容概要:本文聚焦于弱电网条件下光伏并网逆变器的序阻抗建模与稳定性分析,系统阐述了基于扫频法的阻抗特性仿真与复现方法。通过构建正负序阻抗模型,深入剖析逆变器在弱电网环境中的动态响应特性,结合锁相环、电流环等关键控制环节对系统阻抗的影响机制,采用序阻抗稳定性判据评估多机并网或复杂电网条件下的系统稳定裕度。研究在Simulink平台中实现激励信号注入、频率响应采集与阻抗曲线绘制,为高比例新能源接入背景下并网系统的稳定性分析提供了可靠的仿真手段与理论支撑,尤其适用于SCI级别论文成果的复现与拓展验证。; 适合人群:电力电子、新能源并网技术及相关领域的硕士/博士研究生、科研人员,以及从事光伏逆变器、微电网稳定控制开发的工程技术人员。; 使用场景及目标:①掌握扫频法在电力电子装置阻抗建模中的具体实施流程;②理解并应用基于序阻抗的稳定性判据进行系统稳定边界分析;③用于高水平学术论文(如SCI期刊)中阻抗建模与稳定性分析部分的仿真复现与方法验证; 阅读建议:建议读者结合文中所述方法与提供的参考文献,自主搭建Simulink仿真模型,逐步完成扰动信号设计、数据采集、傅里叶分析及阻抗拟合全过程,深入探究控制参数变化对系统阻抗特性和稳定性的具体影响,强化理论与实践的融合能力。
三相并网逆变器虚拟阻抗+统一有源阻尼策略SVPWM+SPWM调制仿真
内容概要:本文档系统性地介绍了三相并网逆变器的核心控制技术及其在复杂电网环境下的仿真应用,重点涵盖虚拟阻抗与统一有源阻尼策略在SVPWM和SPWM调制方式下的实现方法,旨在提升逆变器的稳定性与电能质量。内容包括无功功率扰动孤岛检测、中点电位平衡控制、低电压穿越(LVRT)、模型预测控制(MPC)、正负序分离、电网前馈控制等关键技术,并扩展至风储联合调频、微电网下垂控制、虚拟同步发电机(VSG)、构网型逆变器等多种典型电力系统应用场景。所有技术均配有基于Simulink/Matlab平台的完整仿真模型、参考文献及说明文档,强调理论分析与仿真实践的深度融合,突出科研中“借力”与创新思维的重要性。; 适合人群:电气工程、自动化、新能源等相关专业的研究生、科研人员及从事电力电子与可再生能源系统开发的工程师;具备MATLAB/Simulink仿真基础和电力系统专业知识的技术人员。; 使用场景及目标:①开展三相并网逆变器控制策略的研究与优化设计;②复现高水平学术论文中的控制算法;③完成毕业课题、科研项目或工程仿真验证;④掌握虚拟阻抗、有源阻尼、SVPWM/SPWM调制、MPC、VSG等核心技术的建模与实现方法;⑤支撑微电网、构网型变流器等前沿方向的科研攻关。; 阅读建议:建议按照资源目录结构化学习,优先选择与自身研究方向契合的内容模块,结合提供的仿真模型、参考文献和说明材料进行实操演练,注重从理论推导到仿真实现的全过程理解,充分利用共享网盘资源深化技术掌握,提升科研效率与创新能力。
chromedriver-win32-159.0.8133.0(Canary).zip
chromedriver-win32-159.0.8133.0(Canary).zip
计算机“101计划”《人工智能引论》教学大纲+课件+实训案例
计算机“101计划”《人工智能引论》教学大纲+课件+实训案例
语音输入法离线语音输入转文字工具2.0支持双档本地识别模型,中英混说精准转写,纯离线运行保护隐私,让打字更高效.zip
大家好,我是大飞哥。日常打字时,频繁切换输入法、断网无法语音转写、或担心语音数据被传至云端,是许多办公族和内容创作者的共同痛点。这款离线语音输入工具 ,正是为此量身打造的 Windows 桌面语音辅助利器。它的核心使命就是按住快捷键说话,松开文字自动上屏,全程本地离线识别,让您在任何可输入文字的窗口内都能实现高效、私密的语音输入,彻底告别网络依赖与隐私焦虑。 在核心功能上,软件内置了两档本地语音识别模型,通过主界面下拉框即可随时切换。默认的“离线·标准”模式响应极快,支持中英混说且自带标点,非常适合日常聊天与文档撰写;而“离线·精准”模式则对纯中文、方言口音及长段落口述的识别准确度更高。更贴心的是,它具备实时预览与一键取消机制,说话过程中若发现说错,按下 Esc 即可取消,一个字都不会误输入;若目标窗口不支持直接写入,文字会自动存入剪贴板,方便您按 Ctrl+V 粘贴,确保每次发声都不白费。 这款工具在具体场景中的表现十分亮眼。对于办公白领,在填写表格、撰写邮件或使用微信、QQ 沟通时,无需频繁切换窗口,按住右键说话即可快速完成信息录入;对于程序员与文字工作者,在代码编辑器或文档中口述注释与段落,能显著提升创作效率;对于经常出差的商务人士,在飞机、高铁等断网环境下,它依然能稳定工作,不经过任何服务器,真正做到了“说了什么只有自己知道”,私密性极佳。 使用体验方面,软件将极简操作贯彻到底。解压后双击 大飞哥语音输入,右下角托盘出现蓝色话筒图标即代表准备就绪。用户只需将光标点进目标输入框,按住右 Alt说话,说完松开,文字便会自动写入。主界面提供了设置快捷键与开机自动启动选项,方便用户按习惯自定义组合键;关闭主窗口并不会退出程序,而是缩至托盘持续待命,彻底退出只需右键托盘或点击主界面按钮,逻辑清晰,零门槛上手。


