一.功能简介1.实现一个图书管理系统。
图书信息存放到一个数据库中。
图书包含信息:图书号、图书名、作者、价格、备注字段。
2.系统实现如下的基本管理功能:(1)用户分为两类:系统管理员,一般用户。
(2)提供用户注册和用户登录验证功能;
其中登录用户的信息有:登录用户名,登录密码等。
(3)管理员可以实现对注册用户的管理(删除),并实现对图书的创建、查询、修改和删除等有关的操作。
(4)一般用户,只能查询图书,并进行借书、还书操作,每个用户最多借阅8本,即当目前借书已经是8本,则不能再借书了,只有还书后,才可以再借阅。
二.涉及技术Struts2框架、MySQL数据库、C3P0数据池、Jsp、HTML、CSS、JavaScript等技术。
三.设计思路1.基于Struts2框架进行编程设计,连接MySQL数据库实现数据的增删查改,应用Jsp、HTML、CSS、JavaScript对访问页面进行编写和美化。
2.分别创建book表和user表,用以存放图书信息和用户数据。
其中user表中,设有flag以区分管理员和普通用户。
3.分别创建Book类和User类,与数据表相对应。
每本书和每个用户都有唯一的id与之对应。
4.创建C3P0属性文件和数据库连接工具类。
5.设计数据库操作类:UserDao类和BookDao类。
UserDao用于实现所有对user表的操作,BookDao用于实现所有对book表的操作。
6.创建分别对应UserDao类和BookDao类的Action:UserAction和BookAction。
采用基于注解的方式进行Action配置。
7.用户账号分为管理员账号和普通用户账号,注册时加以区分,登录时即可自动判断进入对应的操作主页面。
8.管理员可实现对用户的查询显示,模糊查询,删除,批量删除,全选和取消全选等功能;
可实现对图书的查询显示,模糊查询,添加,删除,批量删除,全选和取消全选等功能。
9.普通用户可实现借书和还书功能,借书功能通过对book表的查询,将未借出的图书按照id顺序排列显示,点击表格后方的“借阅”按钮,进行确认借阅,将book表中本书的borrowperson列的值改为本用户账号。
对于借阅成功的图书可以在“当前借阅”中进行查看。
还书功能通过在“当前借阅”中点击“还书”按钮,进行确认还书,将book表中本书的borrowperson列的值改为“空”,本书信息将可以在“借书”界面查看。
四.存在的问题1.原本希望能为每一个用户创建一个对应的以其账号命名的数据表,用以存放用户所借图书信息,但创建表的SQL语句无法在java代码中执行,所以只好在book表中添加一列borrowperson,用来存放借阅本书的用户账号,这样查询用户当前借阅记录时,以“whereborrowperson=‘account’”为条件对book表进行查询即可。
但是每个用户要当前查询借阅记录时都需要对整个book表进行遍历,效率太低。
2.模糊查询时,因同时需要进行where筛选,SQL语句无法执行,只好分开查询,先进行模糊查询,查询结果存放到list表中,再通过遍历list表进行判断是否符合where的条件,若符合,则存入另一个list表中。
这种方法虽然实现了查询,但效率太低,代码过于繁重。
五.改进预想这些本不应该是预想,原本希望在本次作业中实现的,但时间不够充分,只能作为下一步的改建预想。
1.希望实现登录时验证码验证登录;
2.希望实现查询时,查询结果分页浏览;
3.进一步优化Action之间的传值方法;
4.页面进一步优化、美化;
5.实现用户借书还书时间记录,和借阅时长限制。
2025/7/20 9:38:38 13.98MB Struts2
1
用VC++6.0实现的扫描线填充,裁剪算法及画线方法 CPenpen(PS_SOLID,1,fillcolor);//设置扫描线所用笔的属性 CPen*old=pDC->SelectObject(&pen); intj,k,s=0; intp[9];//每根扫描线交点 intpmin=1000; intpmax=0; for(inti=0;i<inLength;i++)//建立边表 { edge[i].dx=(float)(inVertexArray[i+1].x-inVertexArray[i].x)/(inVertexArray[i+1].y-inVertexArray[i].y); edge[i].num=i; if(inVertexArray[i].y<=inVertexArray[i+1].y) { edge[i].ymin=inVertexArray[i].y; edge[i].ymax=inVertexArray[i+1].y; edge[i].xmin=(float)inVertexArray[i].x; edge[i].xmax=(float)inVertexArray[i+1].x; } else{ edge[i].ymin=inVertexArray[i+1].y; edge[i].ymax=inVertexArray[i].y; edge[i].xmax=(float)inVertexArray[i].x; edge[i].xmin=(float)inVertexArray[i+1].x; } } //求多边形的最大最小值 for(intm=1;m<inLength;m++) { for(intn=0;n<inLength-m;n++) { if(pmaxinVertexArray[n].y) pmin=inVertexArray[n].y; } } for(intr=1;r<inLength;r++) //边表edge排序 { for(intq=0;q<inLength-r;q++) { if(edge[q].yminpmin;scan--)//扫描线遵守'“上开下闭”的原则 { intb=0; k=s; for(j=k;j=edge[j].ymin)&&(scan<=edge[j].ymax))//判断扫描线与线段是否相交于顶点 { intpreNum=edge[j].num; intnextNum=edge[j].num+1; if(preNum==0) preNum=inLength-1; else preNum=preNum-1; if(nextNum==inLength) nextNum=0; if(scan==edge[j].ymax)//位于下顶点时,根据相临点的位置决定取几个点 { if(inVertexArray[nextNum].y<edge[j].ymax) { b++; p[b]=(int)edge[j].xmax; } if(inVertexArray[preNum].yedge[j].ymin)&&(scan<edge[j].
2025/7/20 4:20:18 83KB 图形学 扫描线 裁剪 DDALine
1
这是一个ssm和bootstrap相结合的java练手项目非常值得一看
2025/7/18 5:39:15 34.88MB javaweb
1
内容简介······《字体设计的规则与艺术》分为衬线大写字母、衬线小写字母、无衬线大写字母、无衬线小写字母、数字、标点符号、变音符号和间距几个部分,介绍了字体设计的规则与方法。
《字体设计的规则与艺》呈现了大量字体样本和图解,对字体创作的流程进行了深度解析,生动诠释了字体设计的视觉要领,探讨了字体的结构、视觉补偿及可辨认性,阐述了一种字体中字母与负形的系统关联。
《字体设计的规则与艺》分析了大量历史上的经典字体及现代字体,并展示了很多学生作品的典型案例,将理论与实际操作相结合,不但能使读者掌握字体设计的规律,还能为他们打开创作思路。
  《字体设计的规则与艺》适用于设计专业的老师和学生阅读,同时也供从业的设计师参考。
作者简介······凯伦程是美国西雅图市华盛顿大学视觉交流设计项目的副教授,主要教授该大学的字体设计和字体排印学课程。
她是一名积极的字体设计实践者,其设计作品早已获得了美国平面设计师协会(AIGA)、ID杂志和美国设计中心的认可。
她在ID杂志上出版了《交流艺术》一书。
目录······引言设计流程字体设计中的变量字母的“部位”字体分类========================================================衬线大写字母(SerifCapitals)衬线大写字母O衬线大写字母E衬线大写字母C衬线大写字母G衬线大写字母D衬线大写字母B衬线大写字母P和R衬线大写字母J衬线大写字母Q衬线大写字母S衬线大写字母I、H、T、F和L衬线大写字母V和A衬线大写字母U衬线大写字母X衬线大写字母W衬线大写字母Y衬线大写字母M衬线大写字母N衬线大写字母K衬线大写字母Z========================================================衬线小写字母(SerifLowerCase)衬线小写字母o和l衬线小写字母d、q、b和p衬线小写字母e和c衬线小写字母n、h、m和u衬线小写字母r衬线小写字母a衬线小写字母s衬线小写字母g衬线小写字母i和j衬线小写字母f和t衬线小写字母v、w和y衬线小写字母k衬线小写字母x和z无衬线大写字母(SansSerifCapitals)无衬线大写字母O和E无衬线大写字母I、H、T、L和F无衬线大写字母S、C和G无衬线大写字母U和J无衬线大写字母D、B、R和P无衬线大写字母Q无衬线大写字母V、A和W无衬线大写字母K、X和Y无衬线大写字母M,N和Z========================================================无衬线小写字母(SansSerifLowerCase)无衬线小写字母o和l无衬线小写字母d、b、p和q无衬线小写字母s、c和e无衬线小写字母a和g无衬线小写字母n、m、h、u和r无衬线小写字母i、j、f和t无衬线小写字母v、w和y无衬线小写字母k、x和z数字(Numbers)数字0和1数字2数字4数字7数字3和5数字6和9数字8标点符号(Punctuation)句号、逗号、冒号和分号引号问号和感叹号========================================================变音符号(DiacriticalMarks)尖音符和钝音符长音符号元音变音符和分音符波浪符号软音符合字========================================================间距(Spacing)字母的安全空间测试间距单词间距、数字间距和标点符号间距========================================================字距调整(Kerning)参考书目(References)索引(Index)
2025/7/17 15:31:52 37.19MB 字体设计 规则 艺术
1
一款基于matlab的全数字锁相环仿真程序并且附带详细注释,有需要的可以下载一下
2025/7/15 5:19:41 10KB pll matlab
1
一本目前为止最好的fluent学习书本第一章流体力学基础与FLUENT简介第一节概论一、流体的密度、重度和比重二、流体的黏性——牛顿流体与非牛顿流体三、流体的压缩性——可压缩与不可压缩流体四、液体的表面张力第二节流体力学中的力与压强一、质量力与表面力二、绝对压强、相对压强与真空度三、液体的汽化压强四、静压、动压和总压第三节能量损失与总流的能量方程一、沿程损失与局部损失二、总流的伯努里方程三、人口段与充分发展段第四节流体运动的描述一、定常流动与非定常流动二、流线与迹线三、流量与净通量四、有旋流动与有势流动五、层流与湍流第五节亚音速与超音速流动一、音速与流速二、马赫数与马赫锥三、速度系数与临界参数四、可压缩流动的伯努里方程五、等熵滞止关系式第六节正激波与斜激波一、正激波二、斜激波第七节流体多维流动基本控制方程一、物质导数二、连续性方程三、N—S方程第八节边界层与物体阻力一、边界层及基本特征二、层流边界层微分方程三、边界层动量积分关系式四、物体阻力第九节湍流模型第十节FLUENT简介一、程序的结构二、FLUENT程序可以求解的问题三、用FLUENT程序求解问题的步骤四、关于FLUENT求解器的说明五、FLUENT求解方法的选择六、边界条件的确定第二章二维流动与传热的数值计算第一节冷、热水混合器内部二维流动一、前处理——利用GAMBIT建立计算模型第1步确定求解器第2步创建坐标网格图第3步由节点创建直线第4步创建圆弧边第5步创建小管嘴第6步由线组成面第7步确定边界线的内部节点分布并创建结构化网格第8步设置边界类型第9步输出网格并保存会话二、利用FLUENT进行混合器内流动与热交换的仿真计算第1步与网格相关的操作第2步建立求解模型第3步设置流体的物理属性第4步设置边界条件第5步求解第6步显示计算结果第7步使用二阶离散化方法重新计算第8步自适应性网格修改功能小结课后练习第二节喷管内二维非定常流动一、利用GAMBIT建立计算模型第1步确定求解器第2步创建坐标网格图和边界线的节点第3步由节点创建直线第4步利用圆角功能对I点处的角倒成圆弧第5步由边线创建面第6步定义边线上的节点分布第7步创建结构化网格第8步设置边界类型第9步输出网格并保存会话二、利用FLUENT进行喷管内流动的仿真计算第1步与网格相关的操作第2步确定长度单位第3步建立求解模型第4步设置流体属性第5步设置工作压强为0atm第6步设置边界条件第7步求解定常流动第8步非定常边界条件设置以及非定常流动的计算第9步求解非定常流第10步对非定常流动计算数据的保存与后处理小结课后练习第三节三角翼的可压缩外部绕流一、利用GAMBIT建立计算模型第1步启动Gambit,并选择求解器为FLUENT5/6第2步创建节点第3步由节点连成线第4步由边线创建面第5步创建网格第6步设置边界类型第7步输出网格文件二、利用FLUENT进行仿真计算第1步启动FLUENT2D求解器并读入网格文件第2步网格检查与确定长度单位第3步建立计算模型第4步设置流体材料属性第5步设置工作压强第6步设置边界条件第7步利用求解器进行求解第8步计算结果的后处理小结课后练习第四节三角翼不可压缩的外部绕流(空化模型应用)第1步启动FLUENT2D求解器并读入网格文件第2步网格检查与确定长度单位第3步设置求解器第4步设置流体材料及其物理性质第5步设置流体的流相第6步设置边界条件第7步求解第8步对计算结果的后处理小结课后练习第五节VOF模型的应用一、利用GAMBIT建立计算模型第1步启动GAMBIT并选择FLUENT5/6求解器第2步建立坐标网格并创建节点第3步由节点连成直线段第4步创建圆弧第5步创建线段的交点G第6步将两条线在G点处分别断开第7步删除DG直线和FG弧线第8步由边创建面第9步定义边线上的节点分布第10步在面上创建结构化网格第11步设置边界类型第12步输出网格文件并保存会话二、利用FLUENT2D求解器进行求解第1步读入、显示网格并设置长度单位第2步设置求解器第3步设置流体材料及属
2025/7/10 13:07:48 4.29MB 计算流体
1
提高锁相环(phase—lockedloop,PLL)的动态性能和锁相精确度,提出一种基于dq变换的改进锁相环,其通过平均值环节而不是延时信号消除(delayedsignalcancellation,DSC)或低通滤波器(10wpassfilter,LPF)预先将负序与谐波分离出去,大幅缩短了暂态响应时间,同时亦消除了系统电压不平衡或畸变对锁相精确度的影响。
详述了该PLL的工作原理;
给出了关于负序与谐波分离方法的讨论;
推导了控制环的线性化模型及其PI参数的整定方法。
仿真与实验结果表明,由于采用平均值环节和不存在传统软件锁相环(softwarephase—lockedloop,SPLL)具有的耦合关系,该PLL可快速而准确地锁定系统电压中正序基波分量的相位,具有高动态性能和锁相精确度,适用于动态电压恢复器(dynamicvoltagerestorer,DVR)或统一电能质量控制器(unifiedpowerqualitycontroller,UPQC)等对电压变化敏感的柔性交流输电系统(f
2025/7/8 3:36:18 2.38MB pll 高精度
1
关于稀疏分解的盲源分离程序,有相应的文章可相对照
2025/7/7 7:53:03 4KB 稀疏 盲源分离
1
黄小平编著的《粒子滤波原理及应用》——Matlab仿真书中代码。
本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握本书主要介绍粒子滤波的基原理及其在非线性系统中应用。
为方便读者快速掌握子滤波的精髓,本书采用原理介绍书采用原理介绍+实例应用+MATLAB+MATLAB+MATLAB程序仿真+中文注释相结合的方式,中文注释相结合的方式,向读者介绍滤波的原理和实现过程。
向读者介绍滤波的原理和实现过程。
向读者介绍滤波的原理和实现过程。
向读者介绍滤波的原理和实现过程。
向读者介绍滤波的原理和实现过程。
向读者介绍滤波的原理和实现过程。
向读者介绍滤波的原理和实现过程。
本书共本书共9章,第章,第1章绪论,介绍粒子滤波的发章绪论,介绍粒子滤波的发章绪论,介绍粒子滤波的发章绪论,介绍粒子滤波的发章绪论,介绍粒子滤波的发章绪论,介绍粒子滤波的发展状况;
展状况;
第2章简略地介绍章简略地介绍章简略地介绍MATLABMATLAB算法仿真编程基础,便于零算法仿真编程基础,便于零算法仿真编程基础,便于零算法仿真编程基础,便于零算法仿真编程基础,便于零算法仿真编程基础,便于零基础的读者学习后续章节介绍原理;
基础的读者学习后续章节介绍原理;
基础的读者学习后续章节介绍原理;
基础的读者学习后续章节介绍原理;
基础的读者学习后续章节介绍原理;
基础的读者学习后续章节介绍原理;
基础的读者学习后续章节介绍原理;
基础的读者学习后续章节介绍原理;
第3章介绍与粒子滤波相关的概率论基础;
第章介绍与粒子滤波相关的概率论基础;
第章介绍与粒子滤波相关的概率论基础;
第章介绍与粒子滤波相关的概率论基础;
第章介绍与粒子滤波相关的概率论基础;
第章介绍与粒子滤波相关的概率论基础;
第章介绍与粒子滤波相关的概率论基础;
第章介绍与粒子滤波相关的概率论基础;
第章介绍与粒子滤波相关的概率论基础;
第章介绍与粒子滤波相关的概率论基础;
第4章介绍蒙特卡洛的基本原章介绍蒙特卡洛的基本原章介绍蒙特卡洛的基本原章介绍蒙特卡洛的基本原章介绍蒙特卡洛的基本原章介绍蒙特卡洛的基本原理;
第理;
第理;
第5章介绍粒章介绍粒子滤波的基本原理;
第子滤波的基本原理;
第子滤波的基本原理;
第子滤波的基本原理;
第子滤波的基本原理;
第6章介绍粒子滤波的改进算法,主要是章介绍粒子滤波的改进算法,主要是章介绍粒子滤波的改进算法,主要是章介绍粒子滤波的改进算法,主要是章介绍粒子滤波的改进算法,主要是章介绍粒子滤波的改进算法,主要是章介绍粒子滤波的改进算法,主要是章介绍粒子滤波的改进算法,主要是EPFEPF算法和UPF算法。
第算法。
第7章和第8章为粒子滤波在目标跟踪、电池参数估计中的应用;
第章为粒子滤波在目标跟踪、电池参数估计中的应用;
第章为粒子滤波在目标跟踪、电池参数估计中的应用;
第章为粒子滤波在目标跟踪、电池参数估计中的应用;
第章为粒子滤波在目标跟踪、电池参数估计中的应用;
第章为粒子滤波在目标跟踪、电池参数估计中的应用;
第章为粒子滤波在目标跟踪、电池参数估计中的应用;
第章为粒子滤波在目标跟踪、电池参数估计中的应用;
第章为粒子滤波在目标跟踪、电池参数估计中的应用;
第章为粒子滤波在目标跟踪、电池参数估计中的应
2025/7/6 2:36:57 966KB 粒子滤波 Matlab程序
1
《DZ论坛所有商业与普通插件打包下载详解》DZ论坛,全称为Discuz!论坛,是一款广泛应用于国内网站社区建设的开源软件。
它以其强大的功能、易用性和灵活性,深受广大站长的喜爱。
本文将详细介绍DZ论坛中的商业与普通插件,并解析打包下载的内容。
一、DZ论坛插件概述DZ论坛插件是增强论坛功能的重要工具,分为商业插件和普通插件两种类型。
商业插件通常由官方或第三方开发者开发,具备更专业、更全面的功能,如会员付费服务、广告管理、积分交易等,但需要购买授权才能使用。
普通插件则多为免费,由用户或社区共享,满足特定需求,如SEO优化、社交网络集成等。
二、商业插件的价值1.定制化服务:商业插件可根据用户需求进行定制,提供个性化服务,提升用户体验。
2.技术支持:购买商业插件通常附带技术支持,确保插件在运行中遇到问题能得到及时解决。
3.功能完善:商业插件在功能上往往更为强大和完善,能更好地满足论坛运营的各种需求。
三、普通插件的魅力1.免费使用:普通插件无需额外费用,对预算有限的站长来说是很好的选择。
2.社区共享:许多普通插件源于社区用户共享,体现了开源精神,可以互相学习和交流。
3.方便快捷:安装普通插件简单快捷,可快速实现论坛功能的扩展。
四、打包下载的内容分析"dz插件2222"和"dz插件11111"是这次打包下载的两个文件,可能包含了多个商业和普通插件。
这些插件可能涵盖以下几个方面:1.用户互动:如增加投票、签到、勋章系统等功能,增强用户参与度。
2.管理工具:如用户管理、版块管理、数据统计等,方便管理员高效运作论坛。
3.社区美化:如模板修改、主题皮肤、自定义广告等,提升论坛美观度和品牌感。
4.优化功能:如SEO优化、缓存加速、反垃圾邮件等,提高论坛的搜索引擎排名和运行效率。
五、使用注意事项1.插件兼容性:确保下载的插件与你的DZ论坛版本相匹配,否则可能导致论坛运行异常。
2.安全性:确保插件来源可靠,避免下载携带病毒或恶意代码的插件,对论坛安全构成威胁。
3.更新维护:关注插件的更新,及时修复可能出现的问题,保持论坛的稳定运行。
DZ论坛的商业与普通插件是丰富论坛功能、提升用户体验的重要途径。
通过打包下载,站长们可以一次性获取多种插件,大大提高了工作效率。
然而,使用过程中需要注意插件的兼容性、安全性和维护,以确保论坛的正常运行和健康发展。
2025/7/5 11:07:02 29.74MB dz论坛插件 打包下载
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡