精华内容
下载资源
问答
  • Java+MySQL实现评论功能设计开发

    万次阅读 多人点赞 2018-08-13 09:39:52
    Java+MySQL实现评论功能设计开发 一、背景 项目初始版本上线,有时间写点东西记录一下项目中的心得体会,通过这个项目学习了很多,要写下来的有很多,先从评论功能开始吧。由于项目需要增加评论功能,之前并无此...

                                                    Java+MySQL实现评论功能设计开发

    一、背景

          项目初始版本上线,有时间写点东西记录一下项目中的心得体会,通过这个项目学习了很多,要写下来的有很多,先从评论功能开始吧。由于项目需要增加评论功能,之前并无此方面的经验,因此项目开始的一段时间都在寻思着如何进行评论功能的设计。上网搜索一波发现有很多优秀的第三方评论插件可以使用,本来准备直接采用的,但是心里始终有点疙瘩,可能是评论数据放在别人那里不放心的原因,或可能是想一探这些评论系统的究竟,因此最终决定自行设计开发这么一套评论功能。效果截图如下所示,采用的是MySQL数据库,编程语言用的Java。(更好的阅读体验,请移步我的个人博客)

    二、评论系统的概述:

           评论功能是用户表达对某一主题的想法的很好的一种方式,优秀的评论系统能很好地提高社区的活跃度。各大主流网站也都提供了相应的评论支持。比如:贴吧,新闻类门户网站(APP),UC浏览器等等。

          各大网站侧重点不同,对评论功能的要求就不一样,设计出来的评论系统自然就不一样。可能会有:①只可以进行评论,不可以回复,②既可以进行评论,也可以进行回复,然后在这个基础上可能会增加一些额外的功能,比如评论的折叠,审核,优选等。另外,一个良好的UI显示也是非常重要的,能给用户一个直观的视觉上的体验也是评论功能不可或缺的一个要素,毕竟用户都是具有很强的审美能力的,用户的使用体验决定了项目的需求。

          对于本项目,设计的是,既可以评论,也可以进行回复,评论和回复分开存储。在显示上,评论和回复显示的位置不同,回复相较于评论向右靠一些,这样,看起来比较舒适,当然也可以设置成其他的样式。评论会显示评论者头像,回复不会。

          评论的管理:后台系统应该具备基本的评论管理功能,比如:删除,折叠,优选,排序。这些功能的实现依赖于数据库表的设计,所以,在开始设计的时候,要想清楚自己的项目需要哪些功能。

    三、数据库表的设计:

         本评论功能采用评论和回复分离的方式进行存储,一共设计了两张表,一张用户评论表(comment),一张针对评论的回复表(comment_reply)。评论表主要保存对文章或者回答的评论,回复表保存对每一条评论的回复。

          评论表(comment)如下图:主要包括了:评论ID(作为回复表的主键),回答(文章)ID,评论者ID,评论内容,点赞数,评论时间,审核状态

         评论回复表(comment_reply)如下图:主要包括了:评论ID,用户ID,被回复人ID,回复内容,点赞数,回复时间。

          两张表通过comment_id联系起来(并没有设置主外键,主要是不想维护起来太麻烦),获取某一答案的评论及回复步骤:根据answer_id找到所有的评论,然后,遍历所有的评论,根据comment_id查询到所有的回复(评论者的基本信息,例如头像,名称等需要额外查询)。需要注意的是,在评论和回复数据较多的情况下做好分页处理。

    四、程序的实现: 

          采用Java语言进行编程的实现,使用的SSM框架。主要的功能代码如下所示(因为项目有通知功能,看的时候可以略过这部分,跟单纯的评论功能没有太大关系,但是一般要有通知,后面有时间会写站内通知的设计与开发博客):

       4.1 添加评论代码如下:(获取到评论相关的参数,然后进行向数据库表插入)

    public int addComment(Comment comment) {
    	try {
    		Answer commentAnswer = answerMapper.selectByPrimaryKey(comment.getAnswerId());
    		Long commentId = IDUtils.genItemId();//评论ID
    		Date createtime = new Date();
    		//1,填补comment对象的其他参数,进行插入
    		comment.setCommentId(commentId);
    		comment.setState(1);//状态: 0 待审核,1通过,2不通过
    		comment.setPraseCount(0);//一开始插入的点赞数设置为0
    		comment.setCreatetime(createtime);
    		comment.setUpdatetime(createtime);
    		commentMapper.insert(comment);//插入comment记录
    		//2,跟新Answer的相关一条数据,提示评论数+1
    		commentAnswer.setCommentNum((commentAnswer.getCommentNum()==null?0:commentAnswer.getCommentNum()) + 1);
    		answerMapper.updateByPrimaryKeySelective(commentAnswer);
    		//3,向提醒表插一条数据。这条评论是发给谁的,通知表里面的userId就是谁
    		if (comment.getUserId() != commentAnswer.getUserId()) { //自己评论自己不会有通知
    			Remind remind = new Remind();
    			remind.setRemindId(commentId);
    			remind.setUserId(commentAnswer.getUserId());
    			remind.setFromUserId(comment.getUserId());
    			//commentType:1评论回答,2评论别人的评论,3关注,4支持,5反对,6添加回答
    			remind.setRemindType(1);
    			//已读:0否,1是
    			remind.setReadStatus(0);//否
    			remind.setCreatetime(createtime);
    			//插入通知内容,以json的形式存储
    			RemindContent remindComment = new RemindContent();
    			remindComment.setContentId(commentAnswer.getAnswerId());
    			remind.setContent(JsonUtils.objectToJson(remindComment));//通知内容。回答问题的Id
    			remindMapper.insert(remind);
    		}
    		//返回1代表成功
    		return 1;
    	} catch (Exception e) {
    		e.printStackTrace();
    		return 2;
    	}
    }

     4.2 添加回复代码:(前台会传来评论的ID,然后,封装成回复对象进行插入,一个评论ID会对应很多回复)

    public int addCommentReply(CommentReply commentReply) {
        Long commentId = IDUtils.genItemId();//评论ID
        Date createtime = new Date();
    	commentReply.setPraseCount(0);
    	commentReply.setCreatetime(createtime);
    	int retVal = commentReplyMapper.insert(commentReply);
    	  
        //3,向提醒表插一条数据。这条评论是发给谁的,通知表里面的userId就是谁
    	if (commentReply.getReplyuserId() != commentReply.getUserId()) {
    	    Remind remind = new Remind();
    		remind.setRemindId(commentId);
    	    remind.setUserId(commentReply.getReplyuserId());
    		remind.setFromUserId(commentReply.getUserId());
    		//commentType:1评论回答,2评论别人的评论,3关注,4支持,5反对,6添加回答
    		remind.setRemindType(2);
    		//已读:0是,1否
    		remind.setReadStatus(1);
    		remind.setCreatetime(createtime);
    		remind.setContent(commentReply.getCommentId()+"");
    		remindMapper.insert(remind);
    	}
    	return retVal;
    }

     4.3获取某一回答的评论和回复(评论分页返回,但是回复没有分页,后面会优化,使用的是pagehelper插件):

    public PageBean<CommentStatus> listAnswerComments(Long answerId,Integer pageNum,Integer pageSize) {
    try {
    	CommentExample commentExample = new CommentExample();
    	commentExample.setOrderByClause("createtime DESC");
    	Criteria commentCriteria = commentExample.createCriteria();
    	commentCriteria.andAnswerIdEqualTo(answerId);
    	PageHelper.startPage(pageNum, pageSize);
    	List<Comment> commentList = commentMapper.selectByExampleWithBLOBs(commentExample);//获取具有分页结果的评论数据
    	List<CommentStatus> commentStatusList = new ArrayList<>();
    	for (Comment comment : commentList) {
    		CommentStatus commentStatus = new CommentStatus(); //评论返回的具体对象
    			
    		CommentReplyExample example = new CommentReplyExample();
    		com.pn.mini.model.CommentReplyExample.Criteria criteria = example.createCriteria();
    		criteria.andCommentIdEqualTo(comment.getCommentId());
    		List<CommentReply> commentReplyList = commentReplyMapper.selectByExample(example);
    		List<CommentReplyStatus> commentReplyStatusList = new ArrayList<>();
    		for (CommentReply commentReply2 : commentReplyList) {
    			UserBaseInfo commentUser = userBaseInfoMapper.selectByPrimaryKey(commentReply2.getUserId());
    			UserBaseInfo commentReplyUser = userBaseInfoMapper.selectByPrimaryKey(commentReply2.getReplyuserId());
    			CommentReplyStatus commentReplyStatus = new CommentReplyStatus();
    			commentReplyStatus.setCommentId(commentReply2.getCommentId());
    			commentReplyStatus.setContent(commentReply2.getContent());
    			commentReplyStatus.setCreatetime(commentReply2.getCreatetime());
    			commentReplyStatus.setPraseCount(commentReply2.getPraseCount());
    			commentReplyStatus.setReplyuserId(commentReply2.getReplyuserId());
    			commentReplyStatus.setReplyuserName(commentReplyUser.getUserName());
    			commentReplyStatus.setUserId(commentUser.getUserId());
    			commentReplyStatus.setUserName(commentUser.getUserName());
    			commentReplyStatusList.add(commentReplyStatus);
    		}
    		UserBaseInfo commentUserBaseInfo = userBaseInfoMapper.selectByPrimaryKey(comment.getUserId());
    		CommentIntegrate commentIntegrate = new CommentIntegrate();
    		commentIntegrate.setAnswerId(comment.getAnswerId());
    		commentIntegrate.setAvatar(commentUserBaseInfo.getAvatar());
    		commentIntegrate.setCommentId(comment.getCommentId());
    		commentIntegrate.setContent(comment.getContent());
    		commentIntegrate.setCreatetime(comment.getCreatetime());
    		commentIntegrate.setPraseCount(comment.getPraseCount());
    		commentIntegrate.setState(comment.getState());
    		commentIntegrate.setUpdatetime(comment.getUpdatetime());
    		commentIntegrate.setUserId(comment.getUserId());
    		commentIntegrate.setUserName(commentUserBaseInfo.getUserName());
    		//拼接一条评论的返回对象
    		commentStatus.setCommentIntegrate(commentIntegrate);
    		commentStatus.setCommentReplyStatusList(commentReplyStatusList);
    		commentStatusList.add(commentStatus);
    	}
    	PageBean<CommentStatus> recCommentItemBean = null;//接口返回的对象
    	PageInfo<Comment> pageInfo = new PageInfo<>(commentList);
    	recCommentItemBean = new PageBean<>(commentStatusList);
    	recCommentItemBean.setDataList(commentStatusList);
    	recCommentItemBean.setPageNum(pageInfo.getPageNum());
    	recCommentItemBean.setPages(pageInfo.getPages());
    	recCommentItemBean.setPageSize(pageInfo.getPageSize());
    	recCommentItemBean.setSize(pageInfo.getSize());		 
        recCommentItemBean.setTotal(pageInfo.getTotal());
    	return recCommentItemBean;
    			
    	} catch (Exception e) {
    		e.printStackTrace(); //出现异常返回null,controller根据此判断此处调用是否成功
    		return null;
    	}	
    }

     4.4  优化思考:

       ① 回复没有分页返回,回复数据量大的时候需要分页,在在获取回复的时候分页一下即可。

       ② 获取一条信息,需要再去查询用户表,获取用户的信息,这样就会导致获取一条回答的评论和回复需要查询N次数据表,思考的是增加冗余字段(用户名,用户头像),然后减少这方面的查询开销,当用户头像和名称更改的时候,同步更改这里面的数据,但是一般用户的这方面信息更改较少,总的来说,增加这个冗余字段还是能很大程度提高效率的。

      ③优化后的数据库表如下(忽略hot_value这样的字段,不同项目有不同需求):

     

    五:总结与反思(后续优化的方向):

           虽然评论功能开发完毕,在目前也可以正常的使用,待使用程序的用户的增加,流量的扩大后仍需要继续优化,不然在用户的使用体验上可能会很糟糕,尤其是当数据量大的时候,用户访问可能会感觉到有些慢。不足之处其一:在于获取评论的回复,每次读取数据的时候,需要遍历每一条评论,然后去查找这个评论下的所有回复,之后返回这些数据,这样就会造成获取一片文章的评论需要多次查找数据库,效率就会很低,下一步准备从数据库设计和程序实现两个方面去思考如何优化;其二在于:所有文章的评论都在一张表里面,评论的回复也都在一张表里面,这样就会导致表的条目很多,下一步优化的思路集中于分表操作,具体的实现还在思考中。。。。

         评论功能的设计还有很多需要优化的地方,欢迎对这方面有了解的小伙伴一起交流。

    展开全文
  • 软件功能设计

    千次阅读 2017-10-31 21:19:13
    软件功能设计:  针对软件中某一具体的功能,所进行的设计。包括:这个功能的实现方式,实现的基本结构,类的组成,职责划分等,是软件设计中最最重要的基本功。  功能设计在整个软件设计中的层次:  软件设计的...

             软件功能设计:

             针对软件中某一具体的功能,所进行的设计。包括:这个功能的实现方式,实现的基本结构,类的组成,职责划分等,是软件设计中最最重要的基本功。

             功能设计在整个软件设计中的层次:

             软件设计的层次很多,不同的软件设计过程有不同的划分层次,大致可分为:架构设计,api/spi设计,数据库设计,功能设计,类设计,方法设计。

             从难度上说:公共类库》公共框架》基础平台/框架》应用(产品》项目)

            功能设计在整个软件设计中的地位:

            功能设计从属于详细设计,是整个系统功能实现的基石。

            功能设计与设计模式的关系:

            功能设计通常会综合应用多种设计模式,是各种设计思想的具体体现的载体。由于功能千变万化,因而要有较高的设计技巧和功力,才能设计出正确的,易用的,灵活的,         扩 展性高的,高性能实现。

            设计模式是业界公认的,优秀的设计经验和设计理念,理解、掌握、融会贯通、并能熟练变形应用设计模式,对于功能设计是由极大的帮助的。

            功能设计与详细设计的关系:

            功能设计只是详细设计中的一部分,详细设计还包括很多其他的设计,比如:流程设计、对api/spi的完善和细化,对数据库设计的完善和细化,对多个功能交互的控制,事         务 的规划,权限/安全的规划,例外的控制。。。很多很多

             功能设计要考虑的东西/评价标准:

            这个业界没有统一的标准,而且不同类型、不同业务的系统考虑的东西并不完全一样,但还是有一些通常要考虑的东西:

            “正确性”,易用性,可扩展性,复杂性(易理解,开发难度等),易维护,安全,性能,可重用,可测试。。。

             软件设计的实战方法---经验总结

             1,基本的功能实现方式,并进行细化;

             2,分析每个步骤,每个细节中,哪些是可变的,哪些是不可变得。通常分析3个部分:数据的输入,具体实现,数据产出;

             3,分析这个细节功能和其他步骤的关系,比如:顺序,平行,依赖等,已确定这些职责的粒度和分离方式,从而考虑他们之间的组合方式,也需要分离这些组合方式的变           与不变

              4,根据前面分析的结果,进行相应的类,方法的设计、进行职责的划分,并通过合适的方式把他们组织起来。

                      通常这个时候,就会融合进一个或多个设计模式的应用。当然也可能是没有现成的设计模式,需要自己来灵动的组织和实现。

              5,按照前面讲述的评价标准,进行系统的思考和调整,以形成最终的设计方案。


           关于软件设计的一些思考:


           设计的基本技巧:发现和封装变化,进行抽象和封装,实现高内聚和低耦合。

           设计是危险的平衡艺术,尽可能的找到最佳平衡点。

           没有完美的设计,设计总是在不断的演变中

          设计是没有标准答案的,只要能更好的实现功能,更好的满足那些评价标准,就是好东西。

         不要过度设计不等于不设计,而是更要精巧设计。

         关于重构的思考:在设计角度讲,重构是打补丁的思想。

         关于敏捷的思考:

         设计是否增加了复杂度:

         设计是否增加了软件成本:好的设计是会降低软件成本的。

        

       

            




            

           

            

             


    展开全文
  • WiFi物联网智能插座电源功能设计包括三部分: 具体功能说明如下所示: AC 220V转DC 5V,将交流电变为直流电; DC 5V转DC 3.3V,实现MCU供电和WiFi模块供电; DC 5V转DC 5V,隔离作用,实现电耗检测模块和继电器模块...

    目录

    1、AC 220V转DC 5V电源设计

    2、DC 5V转DC 3.3V电源设计

    3、DC 5V转DC 5V电源设计


    WiFi物联网智能插座电源功能设计包括三部分:

    具体功能说明如下所示:

    • AC 220V转DC 5V,将交流电变为直流电;
    • DC 5V转DC 3.3V,实现MCU供电和WiFi模块供电;
    • DC 5V转DC 5V,隔离作用,实现电耗检测模块和继电器模块的供电。

    明确电源功能后,需要对电源模块选型,我的选型总体标准是:质量高、价格低、体积小,要具备电压隔离且EMC过关,功耗不用要求严格。

    1、AC 220V转DC 5V电源设计

    AC 220V转DC 5V电源选用金升阳的LD03-23B05R2模块,该电源模块可输出电压/电流:5V/600mA(驱动MCU、继电器以及其他外设最大消耗电流200mA,驱动WiFi芯片最大消耗电流350mA)具有低功耗、高效率、高可靠性、安全隔离等优点。产品安全可靠,EMC 性能好。

    产品特点如下所示:

    • 超宽输入电压范围:85 - 305VAC/100 - 430VDC;
    • 工作温度范围:-40to +85℃;
    • 效率高达 79%;
    • 空载功耗 0.1W;
    • 5000m 海拔应用;
    • EMI 性能满足 CISPR32/EN55032 CLASS B、EN55014;
    • 通过 IEC/EN/UL62368/EN60335/EN61558 认证。 

    AC 220V转DC 5V电源电路设计如下所示:

    2、DC 5V转DC 3.3V电源设计

    DC 5V转DC 3.3V电源选用UTC(友顺)的LR1107G-33-AE3-3-R模块,该电源模块可输出电压/电流:3.3V/600mA,其中WiFi最大消耗350mA,驱动MCU和两个LED最多100mA左右。

    产品特点如下所示:

    DC 5V转DC 3.3V电源电路设计如下所示:

    3、DC 5V转DC 5V电源设计

    DC 5V转DC 5V电源主要是为了将交流地和直流地隔离,减少电源干扰,保护系统的安全。该部分电源选用金升阳的F0505XT-1WR3模块,可保持5V/200mA电源稳定转换,驱动的电耗采集模块最大消耗电流不超过100mA,可满足使用。

    产品特点如下所示:

    •  可持续短路保护;
    • 空载输入电流低至 5mA;
    • 工作温度范围: -40to +105℃;
    • 效率高达 85%;
    • 隔离电压 3000VDC;
    • 通过 IEC62368, UL62368, EN62368 认证。 

    DC 5V转DC 5V电源电路设计如下所示:

    展开全文
  • 购物车模块的功能设计

    千次阅读 2017-05-16 09:23:41
    购物车模块的功能设计  (按点击按钮来写)  1.添加到购物车(点击添加到购物车,将商品添加到购物车表):  当用户点击添加到购物车,触发一个点击事件,比如这个添加购物车的点击事件是addShopcar(productID...

                                              购物车模块的功能设计

                                                                                   (按点击按钮来写)

       1.添加到购物车(点击添加到购物车,将商品添加到购物车表):

          当用户点击添加到购物车,触发一个点击事件,比如这个添加购物车的点击事件是addShopcar(productID),在这个点击事件里一定要把商品的id带上,然后在JS中给这个点击事件写一个ajax,代码如下:

    <script type="text/javascript">
      function addShopcar(productID){
          $.ajax({
             type: "POST",
             url: "addShopcar.do",(后台添加产品到购物车的方法
             data: {"productID":productID},(传到后台的参数
             dataType: "text",
             success:function(data){
                if(data=="1"){
                   alert("添加到购物车成功!!!");
                }else{
                   alert("添加到购物车失败!!!");
                }
             }
          })   
      }
    </script>


        2.我的购物车(点击我的购物车,查询出该用户的所有购物车商品信息)

          用户点击我的购物车,访问相应方法(findShopcarByUserID),先获取该用户的用户id,然后通过userID在Shopcar表中查询出该用户的所有购物车信息,得到一个list集合,通过for循环,获取该用户购物车中的所有商品id,然后通过商品id查询该商品,在将所有的商品放到一个list集合中,将这个list集合return到我的购物车页面循环展示出来!(同时在这个for循环中,单独将商品的价格训循环出来并累加起来,将总价return到我的购物车页面显示出来!)


        3.编辑我的购物车(点击编辑我的购物车,可以删除购物车中的具体商品)

          编辑我的购物车,点击删除,访问后台的删除方法,然后return“findShopcarByUserID.do”方法!!!


    OK!!!这样我的购物车功能基本全部实现,小菜鸟一枚,如有错误,欢迎纠正指点,谢谢!!!

    展开全文
  • 点赞功能设计

    千次阅读 2016-02-23 08:51:12
    点赞功能设计 每一次点赞,需要记录: (1)谁点的赞; (2)为那篇文章点的赞; (3)点赞时间 (4)是否已经取消点赞   数据表设计 点赞记录表 列名 数据类型 说明 id N ...
  • 大多数开发人员随着经验的增长,会进入一个管理层的岗位(开发小组的组长,当然啦博主才毕业大半年,还不是开发组长,只是提前了解了一下分享给大家),需要负责软件系统的设计(系统功能设计和数据库设计)。...
  • 图书管理系统功能设计

    千次阅读 2014-08-14 15:58:43
    1.系统功能设计 (1)信息录入功能 1)添加新图书信息。当图书馆收藏新图书时,系统向用户提供新图书信息录入功能,由于同一种书可能会有多本,因此,新图书的信息有两类:某一个ISBN类别的图书信息,包括:ISBN...
  • 第四章 数据库应用系统功能设计与实施 软件体系结构 构件:组成系统的具有一定独立功能的不同粒度的程序模块、独立程序或软件子系统。 连接件:表示构件间的相互作用。 约束:对象连接时的规则。 软件设计过程 ...
  • 完成下面任意一个可视化功能模块的详细设计,包括数据模型的选择、功能设计、算法描述、实现过程 1、 三维地质体建模功能(可基于钻孔数据、剖面数据或者混合数据展开设计) 2、 三维地形多层次细节(LOD)显示功能...
  • 功能设计:计算每天签到得1分,显示得到的签到积分,连续签到3天[周一二三]即得+多3分,连续签到7天[周一二三四五六日]+多7分,没有连续即不显示多余的3分或7分的提示… wxml结构: <!--pages/signIn2/signIn2....
  • “科师有约” 校园APP 的定位是 “校园信息聚合平台” ,那就要最大程度上利用学校现有的线上资源,比如学校官网、线上图书馆、微信公众号、微博等信息,并且聚合到我们的APP中...本文主要讲解APP的功能设计部分的内容
  • WiFi物联网智能插座的电耗采集依托于合力为... 官方测试,使用采样电阻或者互感器的理论数据误差如下所示: 在使用之前先简单设计一块Demo板进行调测,实物模块如下所示: 原理图、PCB如下所示: 效果还是比较理想。 
  • 找回密码功能设计

    万次阅读 2018-09-01 15:13:26
    一个大型网站平台,用户自主注册难免会有用户忘记密码,因此需要提供找回密码功能。 本方案是通过邮箱找回密码。  需要的表结构 找回密码表(FindPwdRecord): 字段名 类型 描述 ...
  • 也谈面向对象的系统功能设计

    千次阅读 多人点赞 2011-07-05 13:27:02
    整理自己在应用程序开发中使用的系统功能设计模式。
  • Android日志收集上报功能设计与实现
  • 后台 配置页面功能设计

    万次阅读 2017-05-19 12:18:22
    每个网站开发中,多多少少会需要一些默认的配置项,相对而言一条条的手动添加是极为繁琐的,要分类各种图片、文字、文件、单选、多选按钮等,在此提供一种设计思路,记不清从哪里参考而来的,个人认为比较方便,也有...
  • 用户登录功能设计思路

    万次阅读 2017-10-15 19:40:20
    实现安全用户登录功能浅析 1、用户登录注册 登录注册页面前端部分内容,关注的重点还是用户账号和密码在js代码里要做对应正则的匹配,这是验证的第一步,保证用户输入格式的正确性同时也从一方面减少用户向后台...
  • 本项目涉及到用户的钱包功能,需要实现以下基本功能:  1.用户之间发生金额转移,... 资金流转需要在后台实现,且每次资金流转都会触发用户的账户余额变化,参考了网上多篇文章,按照如下思路设计数据库表  ...
  • 商品收藏模块的功能设计实现

    万次阅读 热门讨论 2017-05-25 13:46:59
    电商网站的商品收藏功能实现  商品收藏的功能描述:用户对一件商品重复的进行收藏与取消收藏操作。...已收藏;... 下面是我设计功能的步骤以及关键代码:  1.首先创建一张收藏表:我的收藏表只有三
  • 第一篇,包括:缘起、技术需求、功能规划、功能设计
  • 一、系统功能设计

    千次阅读 2018-05-10 18:50:15
    仿QQ系统功能结构共分为5个部分,分别市软件登陆、Q友主界面、聊天窗口、个人信息设置、添加好友
  • 基于redis的点赞功能设计

    千次阅读 2018-06-22 20:40:24
    前言点赞其实是一个很有意思的功能。基本的设计思路有大致两种, 一种自然是用mysql等数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysql等。直接写入Mysql直接...
  • 数据库应用系统功能设计与实施

    千次阅读 2019-08-15 15:58:46
    详细知识: 第4章软件体系结构与设计过程 4.1 软件体系结构与设计过程 4.1.1 软件体系结构 软件体系结构:又称软件架构,...1)构件是组成系统的具有一定独立功能的不同粒度的程序模块、独立程序或 2)连接件:将不...
  • 设计: 在用户表中新增字段 “status“ 和 “last_time“。“status “用来标注 用户当前的状态: “last_time“ 用来记录用户最后操作的时间。 ALTER TABLE user ADD COLUMN `last_time` ...
  • Qt 登陆(界面)功能设计

    千次阅读 2017-02-08 10:48:18
    设计思路  一个主窗口(Main_w) 一个登陆窗口(login_w) 继承与QDialog login_w 中响应按钮点击 如果条件符合 则调用 accept(); 关闭窗口  主函数  int main(argc, argv) { QApplication
  • 连续签到7天的功能设计

    万次阅读 2018-01-25 17:46:13
    感觉一张表就够了,最后签到日期,连续签到总数。 签到,先判断最后签到日期是不是昨天?是昨天,连续签到总数加+1;不是昨天,连续签到总数变成1。 至于奖励问题,很好算,比如说周日这天,最后签到日期是昨天,...
  • 功能描述 营销活动平台模块划分 通过上图,我们可以了解各个产品模块在营销平台中的定位,一个规范的完整的营销体系架构 营销业务规划重要性 一个完整的营销体系规划对于后续营销活动的策划,设计,管理,开发提供...
  • 数字图像处理的大作业, 通过GUI界面对图像进行一些简单的处理,有图像增强、滤波、裁剪、亮度调节、添加滤镜等功能 下面附上截图 需要的可以下载https://download.csdn.net/download/yaohuisong/11245485 开始...
  • 个人博客系统中的评论功能设计

    千次阅读 2017-03-19 17:09:51
    1、效果如下,盖楼形式,第一条是评论,下面是对评论的回复 2、数据库设计 remark表存储对博客的评论 外键:blog_id reply表存储对remark的回复 外键:remark_id3、remark和reply连接查询
  • @Entity public class SecKillOrder implements Serializable { @Id @GenericGenerator(name = "PKUUID", strategy = "uuid2") @GeneratedValue(generator = "PKUUID") @Column(length = 36) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,675,232
精华内容 1,070,092
关键字:

功能设计